tx · 3Qf8kFNFnohXWtmcJFWoEHdasqhW69wZhbPNjSrL7qtX

3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm:  -0.09600000 Waves

2023.08.27 20:03 [2729348] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves

{ "type": 13, "id": "3Qf8kFNFnohXWtmcJFWoEHdasqhW69wZhbPNjSrL7qtX", "fee": 9600000, "feeAssetId": null, "timestamp": 1693155774397, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "2iZUfRgimSxEXD7AchG9AuKpEB2wEfF9QqCiuDMC5Y3bss4fadb95qSa1FRYciSsJu1hvN2PSsVivbVJtFbohhmP" ], "script": "base64:BgLHAQgCEgMKAQgSAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASABIECgICAhIDCgEIEgQKAggIEgMKARgSBAoCCAgSBAoCCAgSAwoBCBIDCgEYEgMKAQgSBQoDCAgIEgQKAggIEgcKBQEBAQEBEgMKAQESBQoDAQEIEgMKAQgSAwoBCBIAEgQKAggBEgQKAggBEgMKAQgSBAoCCAgSAwoBCBIAEgMKAQgSBAoCAgKFAgEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBGFkZHIJAKwCAgIQbGFzdEFyYlRpbWVVc2VyXwUEYWRkcgAGU0NBTEU4AIDC1y8ADHhwTGV2ZWxTY2FsZQCAGQAPeHBMZXZlbFJlY2lwUG93AKAfABJudW1Qb2ludHNPbkxldmVsVXAAAwAOcm9iYmVyeUNvc3RNaW4AgMLXLwAUcm9iYmVyeUNvb2xkb3duQ29lZmYAkAMADHJlcXVpcmVtZW50cwkAzAgCAghTdHJlbmd0aAkAzAgCAghBY2N1cmFjeQkAzAgCAglJbnRlbGxlY3QJAMwIAgIJRW5kdXJhbmNlCQDMCAICCURleHRlcml0eQkAzAgCAgVMZXZlbAkAzAgCAgZIZWFsdGgFA25pbAAMY2hhclN0cmVuZ3RoAAAADGNoYXJBY2N1cmFjeQABAA1jaGFySW50ZWxsZWN0AAIADWNoYXJFbmR1cmFuY2UAAwANY2hhckRleHRlcml0eQAEAAtzZWdCYWNrcGFjawAAAAtOVU1TRUdNRU5UUwAGAApOVU1NQUlOQVVYAAIACE1BWFNMT1RTAAIADU1BWFBST0RJTlNMT1QAHgAQbGFuZFJvYkNvb2xkb3ducwkAzAgCAAAJAMwIAgDAzyQJAMwIAgCg9zYJAMwIAgCA3MwUCQDMCAIAgK6mCgUDbmlsAA5NSU5fUkVTX1RPX1JPQgCA2sQJAAxyb2JJZHhMb2NrZWQAAQALZHVja0lkeEZyZWUAAAAQZHVja0lkeFByZXBhcmluZwABAQ1rZXlEdWNrSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgtkdWNrSGVhbHRoXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tDaGFycwELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0NoYXJzXwULZHVja0Fzc2V0SWQBCWtleUR1Y2tYUAELZHVja0Fzc2V0SWQJAKwCAgIHZHVja1hQXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tMZXZlbAELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0xldmVsXwULZHVja0Fzc2V0SWQBEWtleUR1Y2tGcmVlUG9pbnRzAQtkdWNrQXNzZXRJZAkArAICAg9kdWNrRnJlZVBvaW50c18FC2R1Y2tBc3NldElkARBrZXlEdWNrRXF1aXBtZW50AQtkdWNrQXNzZXRJZAkArAICAg5kdWNrRXF1aXBtZW50XwULZHVja0Fzc2V0SWQBCWtleVVzZXJYUAEEYWRkcgkArAICAgd1c2VyWFBfBQRhZGRyAQxrZXlVc2VyTGV2ZWwBBGFkZHIJAKwCAgIKdXNlckxldmVsXwUEYWRkcgERa2V5VXNlckZyZWVQb2ludHMBBGFkZHIJAKwCAgIPdXNlckZyZWVQb2ludHNfBQRhZGRyAQ5rZXlTYXZlZEhlYWx0aAELZHVja0Fzc2V0SWQJAKwCAgIMc2F2ZWRIZWFsdGhfBQtkdWNrQXNzZXRJZAEQa2V5U2F2ZWRMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgIOc2F2ZWRMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQxrZXlEdWNrQnVmZnMBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tCdWZmc18FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5VGltZV8FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeUNvc3RCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5Q29zdF8FC2R1Y2tBc3NldElkARNrZXlMYW5kUm9iYmVyeVN0YXRlAQtsYW5kQXNzZXRJZAkArAICAhFsYW5kUm9iYmVyeVN0YXRlXwULbGFuZEFzc2V0SWQBEmtleUxhbmRDb29sZG93bkVUQQELbGFuZEFzc2V0SWQJAKwCAgIQbGFuZENvb2xkb3duRVRBXwULbGFuZEFzc2V0SWQBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBC2R1Y2tBc3NldElkCQCsAgICEWR1Y2tSb2JiZXJ5U3RhdGVfBQtkdWNrQXNzZXRJZAETa2V5TG9ja2VkTGFuZEJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIRbG9ja2VkTGFuZEJ5RHVja18FC2R1Y2tBc3NldElkAAd4cENsYWltAJBOAA94cFN1Y2Nlc3NGbGlnaHQAkE4ADHhwRmFpbEZsaWdodADQDwAIeHBDYWxsRVMAoI0GAAx4cEN1c3RvbU5hbWUAwIQ9AAp4cE5ld1NMYW5kAMCWsQIADnhwVXBncmFkZUluZnJhAJBOAAd4cE1lcmdlAMCEPQAJeHBPbmJvYXJkAMCEPQAGeHBIZWFsAJBOAQlsZXZlbEJ5WFABAnhwCQBrAwUMeHBMZXZlbFNjYWxlCQBsBgUCeHAABAUPeHBMZXZlbFJlY2lwUG93AAQABAUERE9XTgUGU0NBTEU4AQltYXhIZWFsdGgBBWxldmVsCQBkAgBkBQVsZXZlbAEHbGV2ZWxVcAIJY3VyckxldmVsBW5ld1hQBAhuZXdMZXZlbAkBCWxldmVsQnlYUAEFBW5ld1hQCQDMCAIFCG5ld0xldmVsCQDMCAIJAGgCBRJudW1Qb2ludHNPbkxldmVsVXAJAGUCBQhuZXdMZXZlbAUJY3VyckxldmVsBQNuaWwBDGdldER1Y2tTdGF0cwQPc3Rha2luZ0NvbnRyYWN0C2R1Y2tBc3NldElkCmJ1ZmZFZmZlY3QKZm9yY2VCdWZmcwQFY2hhcnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrQ2hhcnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wAgFfBANsdmwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQGaGVhbHRoCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAkBCW1heEhlYWx0aAEFA2x2bAQKc3RhdGVCdWZmcwkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzACAV8JAM4IAgkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJTdHJlbmd0aAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJBY2N1cmFjeQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJJbnRlbGxlY3QJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRW5kdXJhbmNlCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckRleHRlcml0eQkAzAgCBQNsdmwJAMwIAgUGaGVhbHRoBQNuaWwDBQpmb3JjZUJ1ZmZzCQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAUDbmlsCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQxjaGFyU3RyZW5ndGgJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDGNoYXJBY2N1cmFjeQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUNY2hhckludGVsbGVjdAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUNY2hhckVuZHVyYW5jZQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUNY2hhckRleHRlcml0eQUDbmlsAQ5nZXRSb2JiZXJ5RGF0YQIPc3Rha2luZ0NvbnRyYWN0C2R1Y2tBc3NldElkBAtsYXN0Um9iQ29zdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARhrZXlMYXN0Um9iYmVyeUNvc3RCeUR1Y2sBBQtkdWNrQXNzZXRJZAAABAtsYXN0Um9iVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBBQtkdWNrQXNzZXRJZAAABANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAdyb2JDb3N0CQCWAwEJAMwIAgUOcm9iYmVyeUNvc3RNaW4JAMwIAgkAZQIFC2xhc3RSb2JDb3N0CQBoAgUUcm9iYmVyeUNvb2xkb3duQ29lZmYJAGUCBQNub3cFC2xhc3RSb2JUaW1lBQNuaWwECWR1Y2tTdGF0ZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARNrZXlEdWNrUm9iYmVyeVN0YXRlAQULZHVja0Fzc2V0SWQAAAQKbG9ja2VkTGFuZAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARNrZXlMb2NrZWRMYW5kQnlEdWNrAQULZHVja0Fzc2V0SWQCAAQHbGFuZEVUQQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARJrZXlMYW5kQ29vbGRvd25FVEEBBQpsb2NrZWRMYW5kAAAJAJcKBQUHcm9iQ29zdAULbGFzdFJvYlRpbWUFCWR1Y2tTdGF0ZQUKbG9ja2VkTGFuZAUHbGFuZEVUQQAKTEFORFBSRUZJWAIETEFORAAKRFVDS1BSRUZJWAIERFVDSwAKQVJUUFJFU0FMRQIHUFJFU0FMRQAGTlVNUkVTAAYAGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgAZAA9EQUlMWVJFU0JZUElFQ0UAgPjSAQAJREFZTUlMTElTAIC4mSkADFdITVVMVElQTElFUgCAyK+gJQAPREVGQVVMVExPQ0FUSU9OAg9BZnJpY2FfRl9BZnJpY2EAEFJFU09VUkNFUFJJQ0VNSU4A1bUCAApFU1NFTExDT0VGAAoACXByb2RUeXBlcwkAzAgCAhBGaXJzdCBBaWQgS2l0IEwxCQDMCAICEEZpcnN0IEFpZCBLaXQgTDIJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMwkAzAgCAgtCYWNrcGFjayBMMQkAzAgCAgtCYWNrcGFjayBMMgkAzAgCAgtCYWNrcGFjayBMMwkAzAgCAg5Gb29kIFJhdGlvbiBMMQkAzAgCAg5Gb29kIFJhdGlvbiBMMgkAzAgCAg5Gb29kIFJhdGlvbiBMMwkAzAgCAgtKZXQgUGFjayBMMQkAzAgCAgtKZXQgUGFjayBMMgkAzAgCAgtKZXQgUGFjayBMMwkAzAgCAglTaGllbGQgTDEJAMwIAgIJU2hpZWxkIEwyCQDMCAICCVNoaWVsZCBMMwkAzAgCAgdNaW5lIEwxCQDMCAICB01pbmUgTDIJAMwIAgIHTWluZSBMMwkAzAgCAgdUcmFwIEwxCQDMCAICB1RyYXAgTDIJAMwIAgIHVHJhcCBMMwUDbmlsAApjb250aW5lbnRzCQDMCAICCEFtZXJpY2FzCQDMCAICBkV1cm9wZQkAzAgCAgRBc2lhCQDMCAICBkFmcmljYQkAzAgCAgdPY2VhbmlhBQNuaWwACUNPRUZGMk1BVACAreIEABBmb3J0QWxsb3dlZFByb2RzCQDMCAIADwkAzAgCABAJAMwIAgARCQDMCAIAEgkAzAgCABMJAMwIAgAUBQNuaWwAEHByb2R1Y3Rpb25NYXRyaXgJAMwIAgIlOF84XzhfMTdfMTdfNDJfMTJfMF8zMF8wLDAsMCwwLDAsMCwwXwkAzAgCAiU4XzhfOF8xN18xN180Ml8yNF8wXzYwXzAsMCw1LDIsMCwwLDBfCQDMCAICJzhfOF84XzE3XzE3XzQyXzM2XzBfMTIwXzAsMCwxMCw0LDAsMCwwXwkAzAgCAik4XzE5XzE5XzhfMjdfMTlfMjZfMV8yMF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNTJfMV80MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNzhfMV84MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAiU4XzhfOF84XzhfNjBfMTNfMl8yXzAsMCwwLDAsMCwwLDBfMDExCQDMCAICJThfOF84XzhfOF82MF8yNl8yXzRfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzM5XzJfOF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfMzBfM18zMF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfNjBfM181MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfOTBfM183MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8xMV80XzMwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzIyXzRfNTBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMzNfNF83MF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAio0XzEzXzIyXzRfMzVfMjJfMjNfMF81MCwxLDBfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNF8xM18yMl80XzM1XzIyXzQ2XzBfNTAsMSwxXzAsMiw1LDAsMCwwLDBfCQDMCAICKzRfMTNfMjJfNF8zNV8yMl82OV8wXzUwLDIsMV8wLDUsMTAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzIwXzFfMzAsMSwxXzAsMCwwLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV80MF8xXzMwLDEsMl8yLDEsMywwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfNjBfMV8zMCwxLDNfNSwyLDgsMCwwLDAsMF8FA25pbAAJcklkeENvZWZmAAYACnJJZHhFZmZlY3QACAAQcklkeFJlcXVpcmVtZW50cwAJAAlySWR4U2xvdHMACgAOUFJPRFVDVFBLR1NJWkUACgALd2hJZHhMZXZlbHMAAAAId2hJZHhSZXMAAQAId2hJZHhNYXQAAgAJd2hJZHhQcm9kAAMACXdoSWR4TE9GVAAEAAl2b2xMb2NrZWQAAAALdm9sT2NjdXBpZWQAAQAHdm9sRnJlZQACAAh2b2xUb3RhbAADAApicElkeExldmVsAAAACGJwSWR4UmVzAAEACGJwSWR4TWF0AAIACWJwSWR4UHJvZAADARFrZXlMYXN0VHhJZEJ5VXNlcgEEYWRkcgkArAICAg9sYXN0VHhJZEJ5VXNlcl8FBGFkZHIBFWtleUxhbmRBc3NldElkVG9Pd25lcgEHYXNzZXRJZAkArAICAgluZnRPd25lcl8FB2Fzc2V0SWQBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQdhc3NldElkCQCsAgICGGxhbmRDdXN0b21OYW1lQnlBc3NldElkXwUHYXNzZXRJZAEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgtzdGFrZWRUaW1lXwUHYXNzZXRJZAEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBHR5cGUHYXNzZXRJZAkAuQkCCQDMCAICDWxhbmRBcnRTdGF0dXMJAMwIAgUEdHlwZQkAzAgCBQdhc3NldElkBQNuaWwCAV8BImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDB25mdFR5cGUHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiBzdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyXwUHbmZ0VHlwZQIBXwUHYXNzZXRJZAIBXwUJb3duZXJBZGRyARJrZXlXYXJlaG91c2VCeUxhbmQBC2xhbmRBc3NldElkCQCsAgICCndhcmVIb3VzZV8FC2xhbmRBc3NldElkARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQdhc3NldElkCQCsAgICC2luZnJhTGV2ZWxfBQdhc3NldElkARdrZXlGb3J0aWZpY2F0aW9uc0J5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIPZm9ydGlmaWNhdGlvbnNfBQtsYW5kQXNzZXRJZAEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIYZHVja0N1c3RvbU5hbWVCeUFzc2V0SWRfBQdhc3NldElkARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQRhZGRyCQCsAgICGGFjY291bnRDdXN0b21OYW1lQnlBZGRyXwUEYWRkcgEPa2V5QWRkcmVzc1JlZkJ5AQRhZGRyCQCsAgICCWFjY1JlZkJ5XwUEYWRkcgEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawELZHVja0Fzc2V0SWQJAKwCAgIab25ib2FyZEFydEFjdGl2YXRlZE9uRHVja18FC2R1Y2tBc3NldElkARxrZXlPbmJvYXJkQXJ0RHVja0FjdGl2YXRlZEJ5AQRhZGRyCQCsAgICGm9uYm9hcmRBcnRBY3RpdmF0ZWREdWNrQnlfBQRhZGRyARNrZXlBZGRyZXNzUmVmZXJyYWxzAQRhZGRyCQCsAgICDWFjY1JlZmVycmFsc18FBGFkZHIBEGtleUR1Y2tJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIKZHVja093bmVyXwUHYXNzZXRJZAEUa2V5U3Rha2VkRHVja0J5T3duZXIBCW93bmVyQWRkcgkArAICAhJzdGFrZWREdWNrQnlPd25lcl8FCW93bmVyQWRkcgERa2V5QmFja3BhY2tCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICCWJhY2tQYWNrXwULZHVja0Fzc2V0SWQBD2tleUR1Y2tMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgINZHVja0xvY2F0aW9uXwULZHVja0Fzc2V0SWQBCmtleUJsb2NrZWQAAhBjb250cmFjdHNCbG9ja2VkARVrZXlVc2VyR3dsUmVsZWFzZVRpbWUBCHVzZXJBZGRyCQCsAgICGiVzJXNfX3VzZXJHd2xSZWxlYXNlVGltZV9fBQh1c2VyQWRkcgEOa2V5RXNXYXJlaG91c2UAAhplbWVyZ2VuY3lXYXJlaG91c2VQcm9kdWN0cwANbGFzdFRvdXJJZEtleQIOJXNfX2xhc3RUb3VySWQBFWtleVRvdXJTdGF0aWNEYXRhQnlJZAEDdElkCQCsAgICFiVzJWRfX3RvdXJTdGF0aWNEYXRhX18JAKQDAQUDdElkARZrZXlUb3VyRHluYW1pY0RhdGFCeUlkAQN0SWQJAKwCAgIXJXMlZF9fdG91ckR5bmFtaWNEYXRhX18JAKQDAQUDdElkAAlpZHhTdGF0aWMAAAAKaWR4RHluYW1pYwABAQtnZXRUb3VyRGF0YQIMdG91ckNvbnRyYWN0A3RJZAQGc3RhdGljCQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQx0b3VyQ29udHJhY3QJARVrZXlUb3VyU3RhdGljRGF0YUJ5SWQBBQN0SWQJAKwCAgkArAICAhlFcnJvciByZWFkaW5nIHRvdXJuYW1lbnQgCQCkAwEFA3RJZAIFIGRhdGECAl9fBAdkeW5hbWljCQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQx0b3VyQ29udHJhY3QJARZrZXlUb3VyRHluYW1pY0RhdGFCeUlkAQUDdElkCQCsAgIJAKwCAgIZRXJyb3IgcmVhZGluZyB0b3VybmFtZW50IAkApAMBBQN0SWQCBSBkYXRhAgJfXwkAzAgCBQZzdGF0aWMJAMwIAgUHZHluYW1pYwUDbmlsAAp0U3RhdGljRW5kAAYADnREeW5hbWljU3RhdHVzAAEAEXREeW5hbWljV2luUmVzdWx0AAMAD2xvY0lkeENvbnRpbmVudAAAAApsb2NJZHhUeXBlAAEACGxvY0lkeElkAAIBEmdldFJlY2lwZU1hdGVyaWFscwEGcmVjaXBlCQBoAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnJlY2lwZQUJcklkeENvZWZmBQlDT0VGRjJNQVQAFktTX1NFUEFSQVRFX1BVQkxJQ19LRVkHABhLU19BTExPV19CSUdfSU5GUkFfTUVSR0UHAAVjaGFpbgkAyQECCQDKAQIIBQR0aGlzBWJ5dGVzAAEAAQALdXNkdEFzc2V0SWQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDABIITaerIIAz9O0bvKju6Lk7zJgt0LXfoHlqjUI/moD/+5AwkAAAIBAVQFByRtYXRjaDABIFWx2J9yh4Lv5eNbjawFq2XemkOhLxa7BfMat4el8cUYCQACAQINVW5rbm93biBjaGFpbgAVZGVmYXVsdFJlc3RBZGRyZXNzU3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUFFDdXZGYnZoNExrUFVucm5VMXozam5iQTFwOW0zV05odgMJAAACAQFUBQckbWF0Y2gwAiMzTXVta0dHenRDS0FYcFdEcXhrZGRvZnFYU1VicVFrdlNKeQkAAgECDVVua25vd24gY2hhaW4AEUluZnJhVXBncmFkZUNvc3RTBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAIDIr6AlAwkAAAIBAVQFByRtYXRjaDAAgMLXLwkAAgECDVVua25vd24gY2hhaW4ADmFyYml0cmFnZURlbGF5BAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAIC4mSkDCQAAAgEBVAUHJG1hdGNoMADg1AMJAAIBAg1Vbmtub3duIGNoYWluAANTRVACAl9fAAVNVUxUNgDAhD0ABU1VTFQ4AIDC1y8ABVNTSVpFABkABU1TSVpFAGQABUxTSVpFAOEBAAZYTFNJWkUAkAMAB1hYTFNJWkUA8QQABUlURVI2CQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFBQNuaWwBD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAABFJZHhDZmdTdGFraW5nRGFwcAABABFJZHhDZmdFY29ub215RGFwcAACABRJZHhDZmdHb3Zlcm5hbmNlRGFwcAADAA1JZHhDZmdXbGdEYXBwAAQAFElkeENmZ1RvdXJuYW1lbnREYXBwAAcBCmtleVJlc3RDZmcAAg4lc19fcmVzdENvbmZpZwEOa2V5UmVzdEFkZHJlc3MAAgwlc19fcmVzdEFkZHIBEXJlYWRSZXN0Q2ZnT3JGYWlsAQRyZXN0CQC8CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQRyZXN0CQEKa2V5UmVzdENmZwAFA1NFUAEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgdyZXN0Q2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHcmVzdENmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgADHJlc3RDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5UmVzdEFkZHJlc3MABRVkZWZhdWx0UmVzdEFkZHJlc3NTdHIAB3Jlc3RDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDHJlc3RDb250cmFjdAAPc3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnU3Rha2luZ0RhcHAAD2Vjb25vbXlDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ0Vjb25vbXlEYXBwAAtnb3ZDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ0dvdmVybmFuY2VEYXBwAAt3bGdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFDUlkeENmZ1dsZ0RhcHAAEnRvdXJuYW1lbnRDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ1RvdXJuYW1lbnREYXBwAApyZWNMYW5kTnVtAAAAC3JlY0xhbmRTaXplAAEAC3JlY1RlcnJhaW5zAAIADHJlY0NvbnRpbmVudAADAA13bGdBc3NldElkS2V5Agt3bGdfYXNzZXRJZAAKd2xnQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFC3dsZ0NvbnRyYWN0BQ13bGdBc3NldElkS2V5AhNOb3QgaW5pdGlhbGl6ZWQgeWV0AAtyYW5kb21EZWxheQACAQlrZXlDb21taXQBB2FkZHJlc3MJAKwCAgITZmluaXNoQmxvY2tGb3JBZGRyXwUHYWRkcmVzcwERa2V5UmVzUHJvcG9ydGlvbnMAAhNyZXNUeXBlc1Byb3BvcnRpb25zARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQljb250aW5lbnQJAKwCAgIUcmVzVHlwZXNCeUNvbnRpbmVudF8FCWNvbnRpbmVudAEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQlvd25lckFkZHIJAKwCAgITc3Rha2VkTGFuZHNCeU93bmVyXwUJb3duZXJBZGRyARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQlvd25lckFkZHIJAKwCAgIUc3Rha2VkUGllY2VzQnlPd25lcl8FCW93bmVyQWRkcgEIYXNTdHJpbmcBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIYZmFpbCB0byBjYXN0IGludG8gU3RyaW5nAQVhc0ludAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgNJbnQEAW4FByRtYXRjaDAFAW4JAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBD251bVBpZWNlc0J5U2l6ZQEIbGFuZFNpemUEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAFBVNTSVpFAwkAAAICAU0FByRtYXRjaDAFBU1TSVpFAwkAAAICAUwFByRtYXRjaDAFBUxTSVpFAwkAAAICAlhMBQckbWF0Y2gwBQZYTFNJWkUDCQAAAgIDWFhMBQckbWF0Y2gwBQdYWExTSVpFCQACAQIRVW5rbm93biBsYW5kIHNpemUBB2lzRGlnaXQBAXMJAQlpc0RlZmluZWQBCQC2CQEFAXMBD2dldFJhbmRvbU51bWJlcgMIbWF4VmFsdWUMZmluaXNoSGVpZ2h0CmF1eEVudHJvcHkED3JhbmRvbVNlZWRCbG9jawkBBXZhbHVlAQkA7QcBBQxmaW5pc2hIZWlnaHQECnJhbmRvbUhhc2gJAPcDAQkAywECCQEFdmFsdWUBCAUPcmFuZG9tU2VlZEJsb2NrA3ZyZgUKYXV4RW50cm9weQkAagIJALEJAQUKcmFuZG9tSGFzaAUIbWF4VmFsdWUADWluY3ViYXRvckFkZHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQRWt0VnV4MlJoY2hTTjYzRHNEbzRiNG16NFFxektTZUR2AwkAAAIBAVQFByRtYXRjaDAFBHRoaXMJAAIBAg1Vbmtub3duIGNoYWluAAticmVlZGVyQWRkcgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BEVnVVNDVIN0VoNWRtdE5iblJOUlN0R3dVTEE3Tlk2SGIDCQAAAgEBVAUHJG1hdGNoMAUEdGhpcwkAAgECDVVua25vd24gY2hhaW4AA3B1YgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAMFFktTX1NFUEFSQVRFX1BVQkxJQ19LRVkBIKsXV48VZ+NZVEGw1nLrZpvEo9NmXtWZhlDfmDcfsgkIASBPU+IaP1So1p1SThMdRidVvbNT8yx7yVRUsP9DwbQUKAMJAAACAQFUBQckbWF0Y2gwASBPU+IaP1So1p1SThMdRidVvbNT8yx7yVRUsP9DwbQUKAkAAgECDVVua25vd24gY2hhaW4ADEVNUFRZX1BST0Q1MAGQAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEUZJVkVNSU5VVEVTTUlMTElTAOCnEgAMUkVOQU1JTkdDT1NUAMCWsQIACk1BWE5BTUVMRU4AMgAVSW5mcmFVcGdyYWRlQ29zdFNVc2R0AICt4gQADEVYUE1BVEVSSUFMUwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACm3YLtqwcDCQAAAgEBVAUHJG1hdGNoMACqp4GzCQkAAgECDVVua25vd24gY2hhaW4AB0VYUFVTRFQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAgOWadwMJAAACAQFUBQckbWF0Y2gwAIDlmncJAAIBAg1Vbmtub3duIGNoYWluAAVGSVZFWAkAtgIBAAUAB1RXRU5UWVgJALYCAQAUAAhUV0VOVFkyWAkAtgIBCQBoAgAUABQACFRXRU5UWTNYCQC2AgEJAGgCCQBoAgAUABQAFAAIVFdFTlRZNFgJALYCAQkAaAIJAGgCCQBoAgAUABQAFAAUAAhUV0VOVFk1WAkAtgIBCQBoAgkAaAIJAGgCCQBoAgAUABQAFAAUABQAD1BSRVNBTEVOVU1MQU5EUwD0AwESa2V5TmV4dEZyZWVMYW5kTnVtAAILbmV4dExhbmROdW0BGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQRuYW1lCQCsAgICEWxhbmRCeUN1c3RvbU5hbWVfBQRuYW1lARBrZXlMYW5kVG9Bc3NldElkAQdsYW5kTnVtCQCsAgICDGxhbmRUb0Fzc2V0XwUHbGFuZE51bQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgdhc3NldElkCW93bmVyQWRkcgkArAICCQCsAgIJAKwCAgIcaW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyXwUHYXNzZXRJZAIBXwUJb3duZXJBZGRyARFrZXlMYW5kTnVtVG9Pd25lcgEHbGFuZE51bQkArAICAgpsYW5kT3duZXJfBQdsYW5kTnVtARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEEbmFtZQkArAICAhFkdWNrQnlDdXN0b21OYW1lXwUEbmFtZQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEEbmFtZQkArAICAhRhY2NvdW50QnlDdXN0b21OYW1lXwUEbmFtZQEJa2V5T2xkaWVzAAIKb2xkaWVzTGlzdAALY2xhaW1Nb2RlV2gAAAANY2xhaW1Nb2RlRHVjawABABNjbGFpbU1vZGVXaFRoZW5EdWNrAAIACGZsSGVhbHRoAAAAC2ZsVGltZXN0YW1wAAUAB2ZsQm9udXMABgALZmxQcm9kc1VzZWQABwEHbmZ0TmFtZQIHbGFuZE51bQhsYW5kU2l6ZQkArAICCQCsAgIFCkxBTkRQUkVGSVgFB2xhbmROdW0FCGxhbmRTaXplAQh0b1ZvbHVtZQIGYW1vdW50B3BrZ1NpemUEBHBrZ3MDCQBnAgUGYW1vdW50AAAJAGkCCQBlAgkAZAIFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQEBLQEJAGkCCQBlAgkAZAIJAQEtAQUGYW1vdW50BQdwa2dTaXplAAEFB3BrZ1NpemUJAGgCBQRwa2dzBQVNVUxUOAETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFdG90YWwHd2VpZ2h0cwQDc3VtCQBkAgkAZAIJAGQCCQBkAgkAZAIJAJEDAgUHd2VpZ2h0cwAACQCRAwIFB3dlaWdodHMAAQkAkQMCBQd3ZWlnaHRzAAIJAJEDAgUHd2VpZ2h0cwADCQCRAwIFB3dlaWdodHMABAkAkQMCBQd3ZWlnaHRzAAUDCQBnAgAABQNzdW0JAAIBAhBaZXJvIHdlaWdodHMgc3VtBAVub3JtNgkAawMFBXRvdGFsBQVNVUxUNgUDc3VtCgEKbm9ybWFsaXplcgIDYWNjBGVsZW0JAM0IAgUDYWNjCQBrAwUEZWxlbQUFbm9ybTYFBU1VTFQ2CgACJGwFB3dlaWdodHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCm5vcm1hbGl6ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEmdldE5lZWRlZE1hdGVyaWFscwEFdG90YWwEBXByb3BzCQC1CQIJAQV2YWx1ZQEJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAIBXwMJAQIhPQIJAJADAQUFcHJvcHMFBk5VTVJFUwkAAgECFldyb25nIHByb3BvcnRpb25zIGRhdGEEAXIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAAJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAEJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAMJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAQJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAUFA25pbAkBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBQV0b3RhbAUBcgERc3VidHJhY3RNYXRlcmlhbHMDDHNob3VsZFVzZU1hdANoYXMJdG90YWxOZWVkBARuZWVkCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUJdG90YWxOZWVkCgEKc3VidHJhY3RvcgIDYWNjA2lkeAQGcmVzdWx0CQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2hhcwUDaWR4CQCRAwIFBG5lZWQFA2lkeAMJAGYCAAAFBnJlc3VsdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhhOb3QgZW5vdWdoIG1hdGVyaWFsIGlkeD0JAKQDAQUDaWR4AgssIHlvdSBoYXZlIAkAkQMCBQNoYXMFA2lkeAILLCBidXQgbmVlZCAJAKQDAQkAkQMCBQRuZWVkBQNpZHgJAM0IAgUDYWNjCQCkAwEFBnJlc3VsdAMFDHNob3VsZFVzZU1hdAoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKc3VidHJhY3RvcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgUDaGFzARFzdWJ0cmFjdEVxdWlwbWVudAIFb2xkRXEFcFVzZWQDCQAAAgUFcFVzZWQCAAkAlAoCBQVvbGRFcQcKAQdzdWJVc2VkAgNhY2MGaWR4QW10BAVwYXJ0cwkAtQkCBQZpZHhBbXQCASwDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAihJbmNvcnJlY3QgZm9ybWF0LCBzaG91bGQgYmUgaW5kZXgsYW1vdW50BANpZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAAAwMJAGYCAAAFA2lkeAYJAGcCBQNpZHgJAJADAQUQcHJvZHVjdGlvbk1hdHJpeAkAAgECE1Vua25vd24gcHJvZHVjdCBpZHgEA2FtdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEEB2VxUGFydHMJALUJAggFA2FjYwJfMQkArAICCQCRAwIFBXBhcnRzAAACAToDCQECIT0CCQCQAwEFB2VxUGFydHMAAgkAAgEJAKwCAgkArAICAg9Zb3UgZG9uJ3QgaGF2ZSAJAJEDAgUJcHJvZFR5cGVzBQNpZHgCCSBlcXVpcHBlZAQDdG1wCQCRAwIFB2VxUGFydHMAAQQGbnVtTGVuAwkBB2lzRGlnaXQBCQCvAgIJALACAgUDdG1wAAEAAQACAAEEBGN1cnIJAQ1wYXJzZUludFZhbHVlAQkArwICBQN0bXAFBm51bUxlbgQEdGFpbAkAsAICBQN0bXAFBm51bUxlbgQGbmV3QW10AwkAZwIFBGN1cnIFA2FtdAkAZQIFBGN1cnIFA2FtdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg1Zb3UgZXF1aXBwZWQgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQNpZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUDYW10CQCUCgIJAKwCAgkArAICCQCsAgIJAKwCAgkAkQMCBQdlcVBhcnRzAAAJAJEDAgUFcGFydHMAAAIBOgkApAMBBQZuZXdBbXQFBHRhaWwDCAUDYWNjAl8yBgMDCQBnAgUDaWR4AAYJAGcCAAgFA2lkeAcJAAACBQZuZXdBbXQAAAcKAAIkbAkAtQkCBQVwVXNlZAIBXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUFb2xkRXEHCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzdWJVc2VkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAQ5wcm9kU3RyVG9CeXRlcwEHcHJvZFN0cgQFcExpc3QDCQAAAgUHcHJvZFN0cgIABQNuaWwJALwJAgUHcHJvZFN0cgIBXwoBBHRvQlYCA2FjYwZyZWNpcGUEAWoJAGkCCQDIAQEFA2FjYwAIBARjdXJyAwkAZgIJAJADAQUFcExpc3QFAWoJAQ1wYXJzZUludFZhbHVlAQkAkQMC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AgkArAICAhRDYW4ndCBwdXQgbW9yZSB0aGFuIAkApAMBBQ1NQVhQUk9ESU5TTE9UAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAMJAAACBQVjb3VudAAACQCVCgMFBXBMaXN0BQhvY2N1cGllZAUEZnJlZQQEaGVhZAkAyQECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAQEY3VycgkAsQkBCQDJAQIJAMoBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgACAQEdGFpbAkAygECBQVwTGlzdAkAaAIACAkAZAIFCnByb2R1Y3RJZHgAAQQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAUKcHJvZHVjdElkeAIBXwMDCQEBIQEFCmlzUG9zaXRpdmUJAGYCBQVjb3VudAUEY3VycgcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJWW91IGhhdmUgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AhMsIGJ1dCB0cmllZCB0byB1c2UgCQCkAwEFBWNvdW50BAZuZXdBbXQDAwkBASEBBQppc1Bvc2l0aXZlCQEVY2hlY2tTdGF0UmVxdWlyZW1lbnRzAgUJZHVja1N0YXRzCQC1CQIJAJEDAgUGcmVjaXBlBRBySWR4UmVxdWlyZW1lbnRzAgEsBwkAZQIFBGN1cnIFBWNvdW50CQBkAgUEY3VycgUFY291bnQECGRlbHRhVm9sCQBlAgkBCHRvVm9sdW1lAgUGbmV3QW10BQ5QUk9EVUNUUEtHU0laRQkBCHRvVm9sdW1lAgUEY3VycgUOUFJPRFVDVFBLR1NJWkUJAJUKAwkAywECCQDLAQIFBGhlYWQJAJoDAQUGbmV3QW10BQR0YWlsCQBkAgUIb2NjdXBpZWQFCGRlbHRhVm9sCQBlAgUEZnJlZQUIZGVsdGFWb2wBCGFkZFByb2RCBwZpZHhDbnQFcExpc3QKaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgEc2xvdAlkdWNrU3RhdHMEBXBhcnRzCQC1CQIFBmlkeENudAIBOgMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleDphbW91bnQDAwkBASEBBQppc1Bvc2l0aXZlCQECIT0CCQCxAgEJAJEDAgUFcGFydHMAAAACBwkAAgECK1Byb2R1Y3QgaWR4IHNob3VsZCBiZSAyIGRpZ2l0cywgemVybyBwYWRkZWQECnByb2R1Y3RJZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAABAVjb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEDAwkAZgIAAAUKcHJvZHVjdElkeAYJAGcCBQpwcm9kdWN0SWR4CQCQAwEFEHByb2R1Y3Rpb25NYXRyaXgJAAIBAhNVbmtub3duIHByb2R1Y3QgaWR4AwkAZgIAAAUFY291bnQJAAIBAhdDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZQMJAGYCBQVjb3VudAUNTUFYUFJPRElOU0xPVAkAAgEJAKwCAgkArAICCQCsAgICFENhbid0IHB1dCBtb3JlIHRoYW4gCQCkAwEFDU1BWFBST0RJTlNMT1QCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AwkAAAIFBWNvdW50AAAJAJQKAgUFcExpc3QHBARoZWFkCQDJAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4BARjdXJyCQCxCQEJAMkBAgkAygECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAAIBAR0YWlsCQDKAQIFBXBMaXN0CQBoAgAICQBkAgUKcHJvZHVjdElkeAABBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQpwcm9kdWN0SWR4AgFfAwMJAQEhAQUKaXNQb3NpdGl2ZQkAZgIFBWNvdW50BQRjdXJyBwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglZb3UgaGF2ZSAJAKQDAQUEY3VycgIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUFY291bnQECWlzQmlnSXRlbQMDCQEBIQEFCmlzUG9zaXRpdmUJARVjaGVja1N0YXRSZXF1aXJlbWVudHMCBQlkdWNrU3RhdHMJALUJAgkAkQMCBQZyZWNpcGUFEHJJZHhSZXF1aXJlbWVudHMCASwHBAZjb21wYXQJAJEDAgUGcmVjaXBlBQlySWR4U2xvdHMDCQAAAgUGY29tcGF0AgAJAAIBAhdJdGVtIGNhbm5vdCBiZSBlcXVpcHBlZAQBYwkBDXBhcnNlSW50VmFsdWUBBQZjb21wYXQEBGNTZWcJAGkCBQFjAGQDCQECIT0CBQdzZWdtZW50BQRjU2VnCQACAQIUU2VnbWVudCBpbmNvbXBhdGlibGUECGNNYWluQXV4CQBpAgkAagIFAWMAZAAKAwkBAiE9AgUHbWFpbkF1eAUIY01haW5BdXgJAAIBAhFTbG90IGluY29tcGF0aWJsZQQJY051bVNsb3RzCQBqAgUBYwAKAwMJAQIhPQIFBHNsb3QAAAkAZgIFCWNOdW1TbG90cwABBwkAAgECHkJpZyBpdGVtcyBzaG91bGQgb2NjdXB5IHNsb3QgMAkAZgIFCWNOdW1TbG90cwABBwkAlAoCCQDLAQIJAMsBAgUEaGVhZAkAmgMBCQBkAgUEY3VycgMFCmlzUG9zaXRpdmUFBWNvdW50CQEBLQEFBWNvdW50BQR0YWlsBQlpc0JpZ0l0ZW0BC3Nsb3RzR3JvdXBCBgFnBGJwSW4KaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgFc3RhdHMDCQECIT0CBQFnAgAEBXNsb3RzCQC1CQIFAWcCASwDCQBmAgkAkAMBBQVzbG90cwUITUFYU0xPVFMJAAIBAhJXcm9uZyBzbG90cyBmb3JtYXQEAnMwCQCRAwIFBXNsb3RzAAAEAnMxAwkAZgIJAJADAQUFc2xvdHMAAQkAkQMCBQVzbG90cwABAgADAwkAAAIFAnMwAgAJAAACBQJzMQIABwUEYnBJbgQFdG1wUzADCQECIT0CBQJzMAIACQEIYWRkUHJvZEIHBQJzMAUEYnBJbgUKaXNQb3NpdGl2ZQUHc2VnbWVudAUHbWFpbkF1eAAABQVzdGF0cwkAlAoCBQRicEluBwMJAQIhPQIFAnMxAgADCAUFdG1wUzACXzIJAAIBAh5CaWcgaXRlbSBhbHJlYWR5IG9jY3VwaWVzIHNsb3QICQEIYWRkUHJvZEIHBQJzMQgFBXRtcFMwAl8xBQppc1Bvc2l0aXZlBQdzZWdtZW50BQdtYWluQXV4AAEFBXN0YXRzAl8xCAUFdG1wUzACXzEF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dHJpeAkBDXBhcnNlSW50VmFsdWUBBQNpZHgCAV8FCnJJZHhFZmZlY3QAAAQFc3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAUKYnVmZkVmZmVjdAYECG5ld1Byb2RCCQEGZHJlc3NCBAUGY3VyckVxBQl0ZW1wUHJvZEIHBQVzdGF0cwkAAAIFCG5ld1Byb2RCBQhuZXdQcm9kQgEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIcHJvcExpc3QNdGVycmFpbkNvdW50cw1sYW5kU2l6ZUluZGV4BHNpZ24DCQECIT0CCQCQAwEFCHByb3BMaXN0BQZOVU1SRVMJAAIBAhZXcm9uZyBwcm9wb3J0aW9ucyBkYXRhCgEHdXBkYXRlcgIDYWNjAWkEBnJlc3VsdAkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9wTGlzdAUBaQkAaAIJAGgCBQRzaWduCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkFDWxhbmRTaXplSW5kZXgDCQBmAgAABQZyZXN1bHQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICFlBhbmljISBQaWVjZXMgb2YgdHlwZT0JAKQDAQUBaQIHLCBzaWduPQkApAMBBQRzaWduAhMsIHRlcnJhaW5Db3VudHNbaV09CQCkAwEJAJEDAgUNdGVycmFpbkNvdW50cwUBaQIQLCBsYW5kU2l6ZUluZGV4PQkApAMBBQ1sYW5kU2l6ZUluZGV4CQDNCAIFA2FjYwkApAMBBQZyZXN1bHQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3VwZGF0ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEXVwZGF0ZVByb3BvcnRpb25zAw10ZXJyYWluQ291bnRzDWxhbmRTaXplSW5kZXgEc2lnbgQIcHJvcExpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCHByb3BMaXN0BQ10ZXJyYWluQ291bnRzBQ1sYW5kU2l6ZUluZGV4BQRzaWduAgFfAQ1jb3VudFRlcnJhaW5zAQh0ZXJyYWlucwkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFBAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBQgABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUMAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFEAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBRQABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUYAAQUDbmlsAQZhZGRSZXMFCmN1cnJlbnRSZXMNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUNbGFuZFNpemVJbmRleBdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwoBBWFkZGVyAgNhY2MBaQQJcmVzT2ZUeXBlCQBoAgkAaAIJAGsDBQlkZWx0YVRpbWUFF2RhaWx5QnlQaWVjZVdpdGhCb251c2VzBQlEQVlNSUxMSVMJAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAkAzQgCBQNhY2MJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpjdXJyZW50UmVzBQFpBQlyZXNPZlR5cGUEAXIKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCQC5CQIFAXICAV8BCXZpcnRDbGFpbQQNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUNbGFuZFNpemVJbmRleBdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwoBBWFkZGVyAgNhY2MBaQQJcmVzT2ZUeXBlCQBoAgkAaAIJAGsDBQlkZWx0YVRpbWUFF2RhaWx5QnlQaWVjZVdpdGhCb251c2VzBQlEQVlNSUxMSVMJAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAkAlAoCCQDNCAIIBQNhY2MCXzEFCXJlc09mVHlwZQkAZAIIBQNhY2MCXzIFCXJlc09mVHlwZQoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAQ1kaXN0cmlidXRlUmVzBAxjdXJyZW50V2hSZXMOY3VycmVudFBhY2tSZXMKcmVzVG9DbGFpbQt3aFNwYWNlTGVmdAQOcmVzTGlzdFRvQ2xhaW0IBQpyZXNUb0NsYWltAl8xBAxyZXNBbVRvQ2xhaW0IBQpyZXNUb0NsYWltAl8yAwkAAAIFDHJlc0FtVG9DbGFpbQAACQCUCgIJALkJAgUMY3VycmVudFdoUmVzAgFfCQC5CQIFDmN1cnJlbnRQYWNrUmVzAgFfAwkAZwIFC3doU3BhY2VMZWZ0BQxyZXNBbVRvQ2xhaW0KAQhhZGRMaXN0cwIDYWNjAWkJAM0IAgUDYWNjCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUMY3VycmVudFdoUmVzBQFpCQCRAwIFDnJlc0xpc3RUb0NsYWltBQFpBAFyCgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhhZGRMaXN0cwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAlAoCCQC5CQIFAXICAV8JALkJAgUOY3VycmVudFBhY2tSZXMCAV8KAQxhZGRQYXJ0TGlzdHMCA2FjYwFpBAZ3aFBhcnQJAGsDCQCRAwIFDnJlc0xpc3RUb0NsYWltBQFpBQt3aFNwYWNlTGVmdAUMcmVzQW1Ub0NsYWltCQCUCgIJAM0IAggFA2FjYwJfMQkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGN1cnJlbnRXaFJlcwUBaQUGd2hQYXJ0CQDNCAIIBQNhY2MCXzIJAKQDAQkAZQIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOY3VycmVudFBhY2tSZXMFAWkJAJEDAgUOcmVzTGlzdFRvQ2xhaW0FAWkFBndoUGFydAQBcgoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDGFkZFBhcnRMaXN0cwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAlAoCCQC5CQIIBQFyAl8xAgFfCQC5CQIIBQFyAl8yAgFfAQNhYnMBAXgDCQDAAgIFAXgJALYCAQAABQF4CQC+AgEFAXgABGZyZXEJAMwIAgkAzAgCAAYJAMwIAgAJCQDMCAIADgkAzAgCAA8JAMwIAgAQBQNuaWwJAMwIAgkAzAgCAAUJAMwIAgAICQDMCAIADQkAzAgCAA4JAMwIAgAPBQNuaWwJAMwIAgkAzAgCAAEJAMwIAgAECQDMCAIACQkAzAgCAAoJAMwIAgAPBQNuaWwJAMwIAgkAzAgCAAEJAMwIAgAGCQDMCAIABwkAzAgCAA8JAMwIAgATBQNuaWwJAMwIAgkAzAgCAAQJAMwIAgAHCQDMCAIACAkAzAgCAA0JAMwIAgASBQNuaWwFA25pbAEHZ2VuQ2hhcgIBbgVmcmVxcwQDcmVtCQCgAwEJALsCAgUBbgUHVFdFTlRZWAQGbGV0dGVyAwkAZgIJAJEDAgUFZnJlcXMAAAUDcmVtAgFBAwkAZgIJAJEDAgUFZnJlcXMAAQUDcmVtAgFCAwkAZgIJAJEDAgUFZnJlcXMAAgUDcmVtAgFDAwkAZgIJAJEDAgUFZnJlcXMAAwUDcmVtAgFEAwkAZgIJAJEDAgUFZnJlcXMABAUDcmVtAgFFAgFGBQZsZXR0ZXIBC2dlblRlcnJhaW5zAgRzZWVkDGNvbnRpbmVudElkeAQBZgkAkQMCBQRmcmVxBQxjb250aW5lbnRJZHgKARB0ZXJyYWluR2VuZXJhdG9yAgNhY2MEZWxlbQkAlAoCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAggFA2FjYwJfMQkBB2dlbkNoYXICCAUDYWNjAl8yBQFmCQEHZ2VuQ2hhcgIJALoCAggFA2FjYwJfMgUHVFdFTlRZWAUBZgkBB2dlbkNoYXICCQC6AgIIBQNhY2MCXzIFCFRXRU5UWTJYBQFmCQEHZ2VuQ2hhcgIJALoCAggFA2FjYwJfMgUIVFdFTlRZM1gFAWYJAQdnZW5DaGFyAgkAugICCAUDYWNjAl8yBQhUV0VOVFk0WAUBZgkAugICCAUDYWNjAl8yBQhUV0VOVFk1WAQBdAoAAiRsCQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUFA25pbAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgIACQC6AgIFBHNlZWQFBUZJVkVYCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARB0ZXJyYWluR2VuZXJhdG9yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNM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bmRJbmRleAppbmZyYUxldmVsBAl2b2xQcmVmaXgJAKwCAgkArAICCQCkAwEFCWxhbmRJbmRleAIBXwkApAMBBQppbmZyYUxldmVsBAd3aFRvdGFsCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBBQl2b2xQcmVmaXgEBXdoU3RyCQELdmFsdWVPckVsc2UCCQCiCAEFBXdoS2V5CQCsAgIFCXZvbFByZWZpeAIbOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOjowBAJ3aAkAvAkCBQV3aFN0cgIBOgQKd2hPY2N1cGllZAkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBndoTG9mdAMJAGYCAAUJAJADAQUCd2gJALkJAgkAzAgCAgEwCQDMCAIJAKQDAQUKd2hPY2N1cGllZAkAzAgCCQCkAwEJAGUCBQd3aFRvdGFsBQp3aE9jY3VwaWVkCQDMCAIJAKQDAQUHd2hUb3RhbAUDbmlsAgFfBARsb2Z0CQC1CQIJAJEDAgUCd2gFCXdoSWR4TE9GVAIBXwQId2hMb2NrZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQEA29jYwMJAGYCCQCQAwEFBGxvZnQAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkBQp3aE9jY3VwaWVkCQC5CQIJAMwIAgkApAMBBQh3aExvY2tlZAkAzAgCCQCkAwEFA29jYwkAzAgCCQCkAwEJAGUCCQBlAgUHd2hUb3RhbAUId2hMb2NrZWQFA29jYwkAzAgCCQCkAwEFB3doVG90YWwFA25pbAIBXwkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAndoBQh3aElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAndoBQh3aElkeFJlcwILMF8wXzBfMF8wXzAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCBQZ3aExvZnQFA25pbAEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQljdXJyZW50V2gEC29jY3VwaWVkVm9sCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQljdXJyZW50V2gED2N1cnJXaExvY2tlZFZvbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkCQBlAgkAZQIJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwULb2NjdXBpZWRWb2wFD2N1cnJXaExvY2tlZFZvbAEJbW92ZVN0dWZmAwpjYXJnb1BhcnRzCWN1cnJlbnRXaAtjdXJyZW50UGFjawMJAQIhPQIJAJADAQUKY2FyZ29QYXJ0cwADCQACAQI0Y2FyZ29MaXN0U3RyIHNob3VsZCBjb250YWluIGV4YWN0bHkgMiAnOicgc2VwYXJhdG9ycwQIcmVzUGFydHMJALUJAgkAkQMCBQpjYXJnb1BhcnRzAAACAV8ECG1hdFBhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwABAgFfBAlwcm9kUGFydHMDCQAAAgkAkQMCBQpjYXJnb1BhcnRzAAICAAUDbmlsCQC8CQIJAJEDAgUKY2FyZ29QYXJ0cwACAgFfAwkBAiE9AgkAkAMBBQhyZXNQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgcmVzb3VyY2VzIHNob3VsZCBiZSBwYXNzZWQDCQECIT0CCQCQAwEFCG1hdFBhcnRzBQZOVU1SRVMJAAIBAiBBbGwgNiBtYXRlcmlhbHMgc2hvdWxkIGJlIHBhc3NlZAQLd2hTcGFjZUxlZnQJARVnZXRXYXJlaG91c2VTcGFjZUxlZnQBBQljdXJyZW50V2gECWN1cnJXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8ECWN1cnJXaE1hdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8ECmN1cnJXaFByb2QDCQAAAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIBXwQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDmN1cnJlbnRQYWNrTWF0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBA9jdXJyZW50UGFja1Byb2QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8KAQNtdlICA2FjYwRpdGVtBAFpCAUDYWNjAl8xBAJhbQkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAN3aHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQljdXJyV2hSZXMFAWkEA2JwcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpAwkAAAIFAmFtAAAJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCRAwIFCWN1cnJXaFJlcwUBaQkAzQgCCAUDYWNjAl8zCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpCAUDYWNjAl80AwkAZgIFAmFtAAADCQBmAgUCYW0FA2JwcgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAUEaXRlbQIZIGZyb20gYmFja3BhY2ssIGJ1dCBvbmx5IAkApAMBBQNicHICCiBhdmFpbGFibGUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHIFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcgUCYW0JAGQCCAUDYWNjAl80BQJhbQMJAGYCCQEBLQEFAmFtBQN3aHIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAJAKQDAQkBAS0BBQJhbQIaIGZyb20gd2FyZWhvdXNlLCBidXQgb25seSAJAKQDAQUDd2hyAgogYXZhaWxhYmxlCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hyBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicHIFAmFtCQBkAggFA2FjYwJfNAUCYW0EAXIKAAIkbAUIcmVzUGFydHMKAAIkcwkAkAMBBQIkbAoA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aWQJANgEAQUHYXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQkAzAgCBQVpc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0FAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQJpZAUIdXNlckFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUIdXNlckFkZHIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUCaWQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFAmlkBQh1c2VyQWRkcgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgABBQdhc3NldElkBQNuaWwJAJQKAgUCaWQFCWNvbnRpbmVudAEMZmxpZ2h0Q29tbW9uAwh1c2VyQWRkcgdtZXNzYWdlA3NpZwMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAQFcGFydHMJALUJAgkAsAkBBQdtZXNzYWdlAgE7BAlmbGlnaHRMb2cJALUJAgkAkQMCBQVwYXJ0cwAAAgF8BAJocAkAtQkCCQCRAwIFCWZsaWdodExvZwUIZmxIZWFsdGgCAV8EBWN1ckhQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAAQFbmV3SFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAABBAtuZXdMb2NUeFZlcgkAtQkCCQCRAwIFBXBhcnRzAAECAToEC25ld0xvY2F0aW9uCQCRAwIFC25ld0xvY1R4VmVyAAAEBHRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlmbGlnaHRMb2cFC2ZsVGltZXN0YW1wAwMJAGYCBQR0aW1lCQBkAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBgkAZgIJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMFBHRpbWUJAAIBCQCsAgIJAKwCAgkArAICAhxzaWduYXR1cmUgb3V0ZGF0ZWQ6IGxvZ1RpbWU9CQCkAwEFBHRpbWUCCSwgYmNUaW1lPQkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJdHhGcm9tTXNnCQCRAwIFC25ld0xvY1R4VmVyAAEEBmxhc3RUeAkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5TGFzdFR4SWRCeVVzZXIBBQh1c2VyQWRkcgIAAwkBAiE9AgUGbGFzdFR4BQl0eEZyb21Nc2cJAAIBCQCsAgIJAKwCAgkArAICAh5UeCBpZHMgZG9uJ3QgbWF0Y2ghIEluIHN0YXRlOiAFBmxhc3RUeAIKLCBpbiBtc2c6IAUJdHhGcm9tTXNnBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQMb2xkRnJvbVN0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQECIT0CBQxvbGRGcm9tU3RhdGUFBWN1ckhQCQACAQkArAICCQCsAgIJAKwCAgIKb2xkSGVhbHRoPQkApAMBBQxvbGRGcm9tU3RhdGUCLyBmcm9tIHN0YXRlIGRvZXMgbm90IG1hdGNoIG9uZSBmcm9tIGZsaWdodCBsb2c9CQCkAwEFBWN1ckhQAwkAZwIAAAUFY3VySFAJAAIBAh5Zb3UgY2FuJ3QgZmx5IHdpdGggemVybyBoZWFsdGgDCQEBIQEJARdjYW5XZWFyQ3VycmVudEVxdWlwbWVudAEFC2R1Y2tBc3NldElkCQACAQIWRXF1aXBtZW50IGluY29tcGF0aWJsZQQFYm9udXMDCQBmAgkAkAMBBQlmbGlnaHRMb2cFB2ZsQm9udXMJAJEDAgUJZmxpZ2h0TG9nBQdmbEJvbnVzAgAECHByb2RVc2VkAwkAZgIJAJADAQUJZmxpZ2h0TG9nBQtmbFByb2RzVXNlZAkAkQMCBQlmbGlnaHRMb2cFC2ZsUHJvZHNVc2VkAgAECnNlbnRBbW91bnQDAwkAZgIFBW5ld0hQAAAJAAACBQVib251cwIBJAcJAQVhc0ludAEJAPwHBAUMcmVzdENvbnRyYWN0Ag1zZW5kVXNkdFByaXplCQDMCAIFCHVzZXJBZGRyBQNuaWwFA25pbAAACQCXCgUFBW5ld0hQBQtkdWNrQXNzZXRJZAUKc2VudEFtb3VudAULbmV3TG9jYXRpb24FCHByb2RVc2VkARBleHBlZGl0aW9uQ29tbW9uBAZjYWxsZXIEdHhJZAdtZXNzYWdlA3NpZwQIdXNlckFkZHIJAKUIAQUGY2FsbGVyBAFmCQEMZmxpZ2h0Q29tbW9uAwUIdXNlckFkZHIFB21lc3NhZ2UFA3NpZwQLZHVja0Fzc2V0SWQIBQFmAl8yBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVtTGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMGBQVtTGlzdAUMRVhQTUFURVJJQUxTAgFfBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQJY3VycmVudEVxCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAQNJHQwMzM5MDMzNDAwMAkBEXN1YnRyYWN0RXF1aXBtZW50AgUJY3VycmVudEVxCAUBZgJfNQQFbmV3RXEIBQ0kdDAzMzkwMzM0MDAwAl8xBA9zaG91bGRaZXJvQnVmZnMIBQ0kdDAzMzkwMzM0MDAwAl8yAwkAZwIAAAgFAWYCXzEJAJUKAwkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxBQNuaWwCAAAABAFlCQESZXhwZWRpdGlvbkludGVybmFsAgUGY2FsbGVyBQR0eElkBAJpZAgIBQFlAl8yAl8xCQCVCgMJAM4IAggFAWUCXzEDBQ9zaG91bGRaZXJvQnVmZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzAFA25pbAkAzQgCCQDNCAIJAM0IAgkAzQgCBQNuaWwJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIICAUBZQJfMgJfMgkAzAgCAgFMCQDMCAIFAmlkBQNuaWwCAV8JAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgIBQFmAl8xCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToFAmlkCAUBZgJfMwEMYXBwbHlCb251c2VzAgtsYW5kQXNzZXRJZAZwaWVjZXMECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAlhcnRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQAAAQEYWRkNgkAaQIFCmluZnJhTGV2ZWwABgQEYWRkNwkAaQIFCmluZnJhTGV2ZWwABwkAZAIJAGQCBQ9EQUlMWVJFU0JZUElFQ0UJAGsDBQ9EQUlMWVJFU0JZUElFQ0UJAGQCCQBkAgUKaW5mcmFMZXZlbAUEYWRkNgkAaAIAAgUEYWRkNwAFCQBrAwUPREFJTFlSRVNCWVBJRUNFBQlhcnRQaWVjZXMJAGgCBQZwaWVjZXMABQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBGFkZHIJY2xhaW1Nb2RlDWxhbmRBc3NldElkSW4EDSR0MDM1MjIwMzU3NTkDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAlAoCBQ1sYW5kQXNzZXRJZEluCQELdmFsdWVPckVsc2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMCQCUCgIJAJEDAgUDbG9jBQhsb2NJZHhJZAULZHVja0Fzc2V0SWQEC2xhbmRBc3NldElkCAUNJHQwMzUyMjAzNTc1OQJfMQQGZHVja0lkCAUNJHQwMzUyMjAzNTc1OQJfMgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUHdGltZUtleQkArAICCQCsAgICBUxhbmQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwkAlgoEBQZkdWNrSWQFC2xhbmRBc3NldElkBQFkBQlzYXZlZFRpbWUBEGNsYWltUmVzSW50ZXJuYWwEBGFkZHIGYW1vdW50CWNsYWltTW9kZQ1sYW5kQXNzZXRJZEluAwkAZgIAAAUGYW1vdW50CQACAQIPTmVnYXRpdmUgYW1vdW50BAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQljbGFpbU1vZGUFDWxhbmRBc3NldElkSW4ECGxhbmRTaXplCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIIBQFjAl8zBQtyZWNUZXJyYWlucwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAIBQFjAl80AwkAZgIAAAUJZGVsdGFUaW1lCQACAQkArAICCQCsAgIJAKwCAgImU2F2ZWQgdGltZXN0YW1wIGlzIGluIGZ1dHVyZSwgc2F2ZWQgPSAJAKQDAQgFAWMCXzQCDCwgY3VycmVudCA9IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUEFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQxhcHBseUJvbnVzZXMCCAUBYwJfMgUGcGllY2VzBAhhdmFpbFJlcwkAawMFCWRlbHRhVGltZQkAaAIFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UFBnBpZWNlcwUJREFZTUlMTElTAwkAZgIFBmFtb3VudAUIYXZhaWxSZXMJAAIBCQCsAgIJAKwCAgkArAICAiJOb3QgZW5vdWdoIHJlc291cmNlcywgYXZhaWxhYmxlID0gCQCkAwEFCGF2YWlsUmVzAg4sIHJlcXVlc3RlZCA9IAkApAMBBQZhbW91bnQEDG5ld0RlbHRhVGltZQkAawMJAGUCBQhhdmFpbFJlcwUGYW1vdW50BQlEQVlNSUxMSVMJAGgCBRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBQZwaWVjZXMEDG5ld1RpbWVzdGFtcAkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQxuZXdEZWx0YVRpbWUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUECnJlc1RvQ2xhaW0JAQl2aXJ0Q2xhaW0EBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBCAUBYwJfMgQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEIBQFjAl8yAAAECWN1cnJlbnRXaAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQLd2hTcGFjZUxlZnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlAwMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQBmAgUGYW1vdW50BQt3aFNwYWNlTGVmdAcJAAIBCQCsAgIJAKwCAgIFT25seSAJAKQDAQULd2hTcGFjZUxlZnQCGCBzcGFjZSBsZWZ0IGluIHdhcmVob3VzZQQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFjAl8xBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEDmN1cnJlbnRQYWNrUmVzCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBAxjdXJyZW50V2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBA0kdDAzODEzMzM5MDA0AwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAJYKBAkBBmFkZFJlcwUFDGN1cnJlbnRXaFJlcwUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCAUKcmVzVG9DbGFpbQJfMgkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCAUKcmVzVG9DbGFpbQJfMgMJAAACBQljbGFpbU1vZGUFDWNsYWltTW9kZUR1Y2sJAJYKBAkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzCQEGYWRkUmVzBQUOY3VycmVudFBhY2tSZXMFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBAVkaXN0cgkBDWRpc3RyaWJ1dGVSZXMEBQxjdXJyZW50V2hSZXMFDmN1cnJlbnRQYWNrUmVzBQpyZXNUb0NsYWltBQt3aFNwYWNlTGVmdAQEd2hBbQkAlwMBCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCQDMCAIIBQpyZXNUb0NsYWltAl8yBQNuaWwJAJYKBAgFBWRpc3RyAl8xCAUFZGlzdHICXzIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQFBHdoQW0JAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQUEd2hBbQQFd2hSZXMIBQ0kdDAzODEzMzM5MDA0Al8xBAVicFJlcwgFDSR0MDM4MTMzMzkwMDQCXzIEBWxvZnRPCAUNJHQwMzgxMzMzOTAwNAJfMwQFbG9mdEYIBQ0kdDAzODEzMzM5MDA0Al80CQCXCgUJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQgFAWMCXzIFDG5ld1RpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYCAUBYwJfMgUEYWRkcgUMbmV3VGltZXN0YW1wBQNuaWwFBWJwS2V5CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgUFYnBSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwFBXdoS2V5CQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCBQV3aFJlcwkAzAgCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQJAMwIAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAQhjbGFpbUFsbAQEYWRkcgtsYW5kQXNzZXRJZAZwaWVjZXMJY2xhaW1Nb2RlBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJAQV2YWx1ZQEJAJ8IAQUHdGltZUtleQQIYXZhaWxSZXMJAGgCCQBrAwkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQlzYXZlZFRpbWUJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBQlEQVlNSUxMSVMFBnBpZWNlcwkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQhhdmFpbFJlcwUJY2xhaW1Nb2RlBQtsYW5kQXNzZXRJZAENdXBJbmZyYUNvbW1vbgQMc2hvdWxkVXNlTWF0BmNhbGxlcg1wYXltZW50QW1vdW50C2xhbmRBc3NldElkBARhZGRyCQClCAEFBmNhbGxlcgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUTY2xhaW1Nb2RlV2hUaGVuRHVjawULbGFuZEFzc2V0SWQEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBAhpbmZyYUtleQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBCAUBYwJfMgQIY3VyTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUIaW5mcmFLZXkAAAMDCQEBIQEFGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQkAZwIFCGN1ckxldmVsAAMHCQACAQImQ3VycmVudGx5IG1heCBpbmZyYXN0cnVjdHVyZSBsZXZlbCA9IDMECG1heEluZnJhCQBkAgkAaQIJAQRzcXJ0BAUGcGllY2VzAAAAAAUERE9XTgAFAAIECG5ld0xldmVsCQBkAgUIY3VyTGV2ZWwAAQMDBRhLU19BTExPV19CSUdfSU5GUkFfTUVSR0UJAGYCBQhuZXdMZXZlbAUIbWF4SW5mcmEHCQACAQkArAICAiVDdXJyZW50bHkgbWF4IGluZnJhc3RydWN0dXJlIGxldmVsID0gCQCkAwEFCG1heEluZnJhBARjb3N0CQBrAwUVSW5mcmFVcGdyYWRlQ29zdFNVc2R0CQBoAgUGcGllY2VzBQhuZXdMZXZlbAUFU1NJWkUDAwkBASEBBQxzaG91bGRVc2VNYXQJAQIhPQIFDXBheW1lbnRBbW91bnQFBGNvc3QHCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUEY29zdAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFjAl8xBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW1MaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBAdtYXRVc2VkCQBrAwURSW5mcmFVcGdyYWRlQ29zdFMJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMFDHNob3VsZFVzZU1hdAUFbUxpc3QFB21hdFVzZWQCAV8EC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyCAUBYwJfMgUGcGllY2VzBRNjbGFpbU1vZGVXaFRoZW5EdWNrBAZ3aERhdGEIBQtjbGFpbVJlc3VsdAJfNQQGb2xkVm9sCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFBndoRGF0YQULd2hJZHhMZXZlbHMECm5ld1ZvbERhdGEJALkJAgkAzAgCCQCRAwIJALUJAgkAkQMCBQZ3aERhdGEFC3doSWR4TGV2ZWxzAgFfAAAJAMwIAgkApAMBBQhuZXdMZXZlbAUDbmlsAgFfBAZuZXdWb2wJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEFCm5ld1ZvbERhdGEEBGxvZnQJALUJAgkAkQMCBQZ3aERhdGEFCXdoSWR4TE9GVAIBXwQKbmV3TG9mdFN0cgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQJAMwIAgkApAMBCQBlAgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBQZuZXdWb2wFBm9sZFZvbAkAzAgCCQCkAwEFBm5ld1ZvbAUDbmlsAgFfCQCVCgMJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUIaW5mcmFLZXkFCG5ld0xldmVsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAggFAWMCXzIFBGFkZHIFCG5ld0xldmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIIBQtjbGFpbVJlc3VsdAJfMwUIYnBJZHhSZXMJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfNAkAuQkCCQDMCAIFCm5ld1ZvbERhdGEJAMwIAgkAkQMCBQZ3aERhdGEFCHdoSWR4UmVzCQDMCAIJAJEDAgUGd2hEYXRhBQh3aElkeE1hdAkAzAgCCQCRAwIFBndoRGF0YQUJd2hJZHhQcm9kCQDMCAIFCm5ld0xvZnRTdHIFA25pbAIBOgUDbmlsCAULY2xhaW1SZXN1bHQCXzEFCG5ld0xldmVsBQdtYXRVc2VkARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAILZHVja0Fzc2V0SWQHZGVsdGFYUAQGbHZsS2V5CQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQEBXhwS2V5CQEJa2V5RHVja1hQAQULZHVja0Fzc2V0SWQEAnhwCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAUFeHBLZXkAAAQFbmV3WFAJAGQCBQJ4cAUHZGVsdGFYUAQJbHZsUG9pbnRzCQEHbGV2ZWxVcAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0BQZsdmxLZXkAAAUFbmV3WFAECWtleVBvaW50cwkBEWtleUR1Y2tGcmVlUG9pbnRzAQULZHVja0Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUGbHZsS2V5CQCRAwIFCWx2bFBvaW50cwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQV4cEtleQUFbmV3WFAJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleVBvaW50cwkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5UG9pbnRzAAAJAJEDAgUJbHZsUG9pbnRzAAEFA25pbAUFbmV3WFABFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBGFkZHIHZGVsdGFYUAQGbHZsS2V5CQEMa2V5VXNlckxldmVsAQUEYWRkcgQFeHBLZXkJAQlrZXlVc2VyWFABBQRhZGRyBAJ4cAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QFBXhwS2V5AAAEBW5ld1hQCQBkAgUCeHAFB2RlbHRhWFAECWx2bFBvaW50cwkBB2xldmVsVXACCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAUGbHZsS2V5AAAFBW5ld1hQBAlrZXlQb2ludHMJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUGbHZsS2V5CQCRAwIFCWx2bFBvaW50cwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQV4cEtleQUFbmV3WFAJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleVBvaW50cwkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5UG9pbnRzAAAJAJEDAgUJbHZsUG9pbnRzAAEFA25pbAUFbmV3WFABEmFjdGl2YXRlT25ib2FyZEFydAEEYWRkcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFBGFkZHIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwkBASEBCQEJaXNEZWZpbmVkAQUFcmVmQnkJAAIBAilZb3UgYXJlIG5vdCBlbGlnaWJsZSBmb3IgT05CT0FSRCBhcnRpZmFjdAQGYXJ0S2V5CQEca2V5T25ib2FyZEFydER1Y2tBY3RpdmF0ZWRCeQEFBGFkZHIEB2FydER1Y2sJAKIIAQUGYXJ0S2V5AwkBCWlzRGVmaW5lZAEFB2FydER1Y2sJAAIBCQCsAgICL1lvdSBhbHJlYWR5IHVzZWQgeW91ciBPTkJPQVJEIGFydGlmYWN0IG9uIGR1Y2sgCQEFdmFsdWUBBQdhcnREdWNrBBBkdWNrQWN0aXZhdG9yS2V5CQEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawEFC2R1Y2tBc3NldElkBA1kdWNrQWN0aXZhdG9yCQCiCAEFEGR1Y2tBY3RpdmF0b3JLZXkDCQEJaXNEZWZpbmVkAQUNZHVja0FjdGl2YXRvcgkAAgEJAKwCAgkArAICCQCsAgICCVRoZSBkdWNrIAULZHVja0Fzc2V0SWQCNCBhbHJlYWR5IGdvdCBwb2ludHMgZnJvbSBPTkJPQVJEIGFydGlmYWN0IGZyb20gdXNlciAJAQV2YWx1ZQEFDWR1Y2tBY3RpdmF0b3IJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZhcnRLZXkFC2R1Y2tBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFEGR1Y2tBY3RpdmF0b3JLZXkFBGFkZHIFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQl4cE9uYm9hcmQCXzEBEmFjdGl2YXRlUHJlc2FsZUFydAIEYWRkcg1sYW5kQXNzZXRJZEluBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBRNjbGFpbU1vZGVXaFRoZW5EdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBA1hY3RpdmF0aW9uS2V5CQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAMJAGYCCQELdmFsdWVPckVsc2UCCQCfCAEFDWFjdGl2YXRpb25LZXkAAAAACQACAQIlUHJlc2FsZSBhcnRpZmFjdCBpcyBhbHJlYWR5IGFjdGl2YXRlZAMJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAggFAWMCXzMFCnJlY0xhbmROdW0FD1BSRVNBTEVOVU1MQU5EUwkAAgEJAKwCAgkArAICCQCsAgIFCkxBTkRQUkVGSVgCASAFC2xhbmRBc3NldElkAiUgaXMgbm90IGVsaWdpYmxlIGZvciBwcmVzYWxlIGFydGlmYWN0BAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUTY2xhaW1Nb2RlV2hUaGVuRHVjawkAzQgCCQDNCAIJAM0IAggFC2NsYWltUmVzdWx0Al8xCQEMSW50ZWdlckVudHJ5AgUNYWN0aXZhdGlvbktleQUGcGllY2VzCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzIJALkJAggFC2NsYWltUmVzdWx0Al8zAgE6CQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzQJALkJAggFC2NsYWltUmVzdWx0Al81AgE6AQ9jaGVja1RvdXJuYW1lbnQBC2R1Y2tBc3NldElkBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBXREYXRhCQELZ2V0VG91ckRhdGECBRJ0b3VybmFtZW50Q29udHJhY3QFBmxhc3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMDCQECIT0CCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlAgFUBwQGcmVzdWx0AwMDCQAAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAkAAAIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MHCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbm93BwkAAgECKllvdXIgZHVjayBpcyB0YWtpbmcgcGFydCBpbiB0aGUgdG91cm5hbWVudAkA/AcEBQR0aGlzAhZleGl0VG91cm5hbWVudEludGVybmFsCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAMJAAACBQZyZXN1bHQFBnJlc3VsdAcJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDW1lcmdlSW50ZXJuYWwGC25ld0xhbmRTaXplCG5ld0xldmVsB2Zvcm11bGEEYWRkcgxsYW5kQXNzZXRJZHMHbmVlZE1hdAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIdbWVyZ2VJbnRlcm5hbF9jaGVja1RvdXJuYW1lbnQKAQpjaGVja01lcmdlAgNhY2MLbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFB3RpbWVLZXkJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwQJY29udGluZW50CQCRAwIFAWQFDHJlY0NvbnRpbmVudAMDCQECIT0CCAUDYWNjAl8zAgAJAQIhPQIIBQNhY2MCXzMFCWNvbnRpbmVudAcJAAIBAi5MYW5kcyBzaG91bGQgYmUgb24gdGhlIHNhbWUgY29udGluZW50IHRvIG1lcmdlBAhsYW5kU2l6ZQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQHc2l6ZXNJbggFA2FjYwJfMQQBaQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCzCQIFB3NpemVzSW4FCGxhbmRTaXplAidZb3UgaGF2ZW4ndCBwYXNzZWQgYWxsIHRoZSBsYW5kcyBuZWVkZWQECHNpemVzT3V0CQCsAgIJAK8CAgUHc2l6ZXNJbgUBaQkAsAICBQdzaXplc0luCQBkAgUBaQABBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBBQhsYW5kU2l6ZQQEYXJ0cwkAZAIIBQNhY2MCXzIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQAAAQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECHJlcUxldmVsBAckbWF0Y2gwBQhsYW5kU2l6ZQMJAAACAgFTBQckbWF0Y2gwAAMDCQAAAgIBTQUHJG1hdGNoMAAEAwkAAAICAUwFByRtYXRjaDAABQMJAAACAgJYTAUHJG1hdGNoMAAGCQACAQIaT25seSBTLCBNLCBMLCBYTCBjYW4gbWVyZ2UDCQECIT0CBQppbmZyYUxldmVsBQhyZXFMZXZlbAkAAgECIkFsbCBsYW5kcyBzaG91bGQgYmUgbWF4ZWQgdG8gbWVyZ2UEB2xhbmROdW0JAJEDAgUBZAUKcmVjTGFuZE51bQQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAlkZWx0YVRpbWUJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUJc2F2ZWRUaW1lAwkAZgIAAAUJZGVsdGFUaW1lCQACAQkArAICCQCsAgIJAKwCAgImU2F2ZWQgdGltZXN0YW1wIGlzIGluIGZ1dHVyZSwgc2F2ZWQgPSAJAKQDAQUJc2F2ZWRUaW1lAgwsIGN1cnJlbnQgPSAJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAEFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBAVicFJlcwkBBmFkZFJlcwUJALUJAggFA2FjYwJfNAIBXwUNdGVycmFpbkNvdW50cwUJZGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UEBXByb3BzCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MCXzYFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAZjUHJvcHMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwNfMTAFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAtzdW1UZXJyYWlucwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjAl85BQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQQFbGFuZHMIBQNhY2MCXzcEA2lkeAkAzwgCBQVsYW5kcwULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBBQNpZHgJAAIBCQCsAgICIFlvdXIgc3Rha2VkIGxhbmRzIGRvbid0IGNvbnRhaW4gBQtsYW5kQXNzZXRJZAQJY3VzdG9tS2V5CQEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBBQtsYW5kQXNzZXRJZAQKY3VzdG9tTmFtZQkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXN0b21LZXkCAAkAnAoKBQhzaXplc091dAUEYXJ0cwUJY29udGluZW50BQVicFJlcwkAzggCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAggFA2FjYwJfNQkBC0RlbGV0ZUVudHJ5AQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgkBC0RlbGV0ZUVudHJ5AQkBEGtleUxhbmRUb0Fzc2V0SWQBBQdsYW5kTnVtCQELRGVsZXRlRW50cnkBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQtsYW5kQXNzZXRJZAUEYWRkcgkBC0RlbGV0ZUVudHJ5AQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0JAQtEZWxldGVFbnRyeQEJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQUJY3VzdG9tS2V5CQEEQnVybgIJANkEAQULbGFuZEFzc2V0SWQAAQMJAQIhPQIFCmN1c3RvbU5hbWUCAAkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBQNuaWwFA25pbAUFcHJvcHMJANEIAgUFbGFuZHMJAQV2YWx1ZQEFA2lkeAkAZAIIBQNhY2MCXzgFBnBpZWNlcwULc3VtVGVycmFpbnMFBmNQcm9wcwQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkECHByb3BMaXN0CQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAILMF8wXzBfMF8wXzACAV8ECGxhbmRzS2V5CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUEYWRkcgQIbGFuZHNTdHIJAKIIAQUIbGFuZHNLZXkEB2xhbmRzSW4DCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAQFY29udDAJAJEDAgkAtQkCCAkBBXZhbHVlAQkA7AcBCQDZBAEJAJEDAgUMbGFuZEFzc2V0SWRzAAALZGVzY3JpcHRpb24CAV8FDHJlY0NvbnRpbmVudAQJY29udFByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBBQVjb250MAILMF8wXzBfMF8wXzACAV8EAXIKAAIkbAUMbGFuZEFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAnAoKBQdmb3JtdWxhAAACAAkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMFA25pbAUIcHJvcExpc3QFB2xhbmRzSW4AAAkAtQkCAgswXzBfMF8wXzBfMAIBXwUJY29udFByb3BzCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpjaGVja01lcmdlAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQQJY29udGluZW50CAUBcgJfMwQMY29udGluZW50SWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAM8IAgUKY29udGluZW50cwUJY29udGluZW50CQCsAgICE1Vua25vd24gY29udGluZW50OiAFCWNvbnRpbmVudAQIdGVycmFpbnMJARNnZW5UZXJyYWluc0Zvck1lcmdlAggFAXICXzkJAGkCCQEPbnVtUGllY2VzQnlTaXplAQULbmV3TGFuZFNpemUFBVNTSVpFBAdmcmVlTnVtCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUPUFJFU0FMRU5VTUxBTkRTAAEECm5ld0xhbmROdW0JAKQDAQUHZnJlZU51bQQFaXNzdWUJAMIIBQkBB25mdE5hbWUCBQpuZXdMYW5kTnVtBQtuZXdMYW5kU2l6ZQkAuQkCCQDMCAIFCm5ld0xhbmROdW0JAMwIAgULbmV3TGFuZFNpemUJAMwIAgUIdGVycmFpbnMJAMwIAgUJY29udGluZW50BQNuaWwCAV8AAQAABwQHYXNzZXRJZAkAuAgBBQVpc3N1ZQQObmV3TGFuZEFzc2V0SWQJANgEAQUHYXNzZXRJZAQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMJAGYCBQduZWVkTWF0AAAJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8FB25lZWRNYXQCAV8ECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQRhZGRyBAxzdGFrZWRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAJAJQKAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAggFAXICXzUDCQBmAgkAkAMBCAUBcgJfNwAACQELU3RyaW5nRW50cnkCBQhsYW5kc0tleQkAuwkCCAUBcgJfNwIBXwkBC0RlbGV0ZUVudHJ5AQUIbGFuZHNLZXkJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkDCQBmAggFAXICXzgFDHN0YWtlZFBpZWNlcwAACQBlAgUMc3Rha2VkUGllY2VzCAUBcgJfOAkBDEludGVnZXJFbnRyeQIJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUHZnJlZU51bQABBQVpc3N1ZQkBC1N0cmluZ0VudHJ5AgkBEGtleUxhbmRUb0Fzc2V0SWQBBQpuZXdMYW5kTnVtBQ5uZXdMYW5kQXNzZXRJZAkBC1N0cmluZ0VudHJ5AgkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFDm5ld0xhbmRBc3NldElkBQRhZGRyCQELU3RyaW5nRW50cnkCCQERa2V5TGFuZE51bVRvT3duZXIBBQpuZXdMYW5kTnVtBQRhZGRyCQEMSW50ZWdlckVudHJ5AgkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQUObmV3TGFuZEFzc2V0SWQIBQFyAl8yCQEMSW50ZWdlckVudHJ5AgkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQ5uZXdMYW5kQXNzZXRJZAUIbmV3TGV2ZWwJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgUObmV3TGFuZEFzc2V0SWQFBGFkZHIFCG5ld0xldmVsCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAggFAXICXzQJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6CQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMACQC5CQIIBQFyAl82AgFfCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEFCWNvbnRpbmVudAkAuQkCCAUBcgNfMTACAV8JAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIFCWNvbnRpbmVudAkAzAgCAgFMCQDMCAIFDm5ld0xhbmRBc3NldElkBQNuaWwCAV8JAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBGFkZHIAAQUHYXNzZXRJZAUObmV3TGFuZEFzc2V0SWQBA3MybQIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIBTQADAgRTU1NTBQRhZGRyBQxsYW5kQXNzZXRJZHMAAAEDbTJsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgFMAAQCA1NNTQUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMABAEEbDJ4bAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgICWEwABQIFU1NTTUwFBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTAC8BBnhsMnh4bAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIDWFhMAAYCA0xYTAUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMANgELbWVyZ2VDb21tb24CBGFkZHIMbGFuZEFzc2V0SWRzBAckbWF0Y2gwCQCQAwEFDGxhbmRBc3NldElkcwMJAAACAAQFByRtYXRjaDAJAQNzMm0CBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgADBQckbWF0Y2gwCQEDbTJsAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIABQUHJG1hdGNoMAkBBGwyeGwCBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgACBQckbWF0Y2gwCQEGeGwyeHhsAgUEYWRkcgUMbGFuZEFzc2V0SWRzCQACAQINVW5rbm93biBtZXJnZQEGcHJvbG9nAQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUMcmVzdENvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQkBC1N0cmluZ0VudHJ5AgkBEWtleUxhc3RUeElkQnlVc2VyAQkApQgBCAUBaQxvcmlnaW5DYWxsZXIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZCcBaQENY29uc3RydWN0b3JWMQEIcmVzdEFkZHIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5UmVzdEFkZHJlc3MABQhyZXN0QWRkcgUDbmlsAWkBCnNldEJsb2NrZWQBCWlzQmxvY2tlZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQxCb29sZWFuRW50cnkCCQEKa2V5QmxvY2tlZAAFCWlzQmxvY2tlZAUDbmlsAWkBCXN0YWtlTGFuZAAEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHYXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIIBQNwbXQGYW1vdW50AAEJAAIBCQCsAgIJAKwCAgIETkZUIAUKTEFORFBSRUZJWAIkIHRva2VuIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBwYXltZW50BAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkAwkBAiE9AggFBWFzc2V0Bmlzc3VlcgUEdGhpcwkAAgECF1Vua25vd24gaXNzdWVyIG9mIHRva2VuAwkBASEBCQEIY29udGFpbnMCCAUFYXNzZXQEbmFtZQUKTEFORFBSRUZJWAkAAgEJAKwCAgkArAICAglPbmx5IE5GVCAFCkxBTkRQUkVGSVgCFCB0b2tlbnMgYXJlIGFjY2VwdGVkBAtsYW5kTnVtU2l6ZQkAsAICCAUFYXNzZXQEbmFtZQAEBAdsYW5kTnVtAwkBCGNvbnRhaW5zAgULbGFuZE51bVNpemUCA1hYTAkAswICBQtsYW5kTnVtU2l6ZQADAwkBCGNvbnRhaW5zAgULbGFuZE51bVNpemUCAlhMCQCzAgIFC2xhbmROdW1TaXplAAIJALMCAgULbGFuZE51bVNpemUAAQMJAQEhAQkBCWlzRGVmaW5lZAEJALYJAQUHbGFuZE51bQkAAgEJAKwCAgIeQ2Fubm90IHBhcnNlIGxhbmQgbnVtYmVyIGZyb20gCAUFYXNzZXQEbmFtZQQLbGFuZEFzc2V0SWQJANgEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAMJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCEiBpcyBhbHJlYWR5IHN0YWtlZAQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8EDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFcHJvcHMJARF1cGRhdGVQcm9wb3J0aW9ucwMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABBAxyZXNCeUNvbnRLZXkJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQkAkQMCBQFkBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFDHJlc0J5Q29udEtleQILMF8wXzBfMF8wXzACAV8EEHVwZGF0ZWRDb250UHJvcHMJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABAgFfBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFB2FkZHJlc3MECGxhbmRzU3RyCQCiCAEFCGxhbmRzS2V5BAVsYW5kcwMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFBWxhbmRzBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgIiWW91ciBzdGFrZWQgbGFuZHMgYWxyZWFkeSBjb250YWluIAULbGFuZEFzc2V0SWQDCQBnAgkAkAMBBQVsYW5kcwUYTUFYX0xBTkRTX1NUQUtFRF9CWV9VU0VSCQACAQkArAICCQCsAgICGVlvdXIgYWxyZWFkeSBzdGFrZWQgbWF4ICgJAKQDAQUYTUFYX0xBTkRTX1NUQUtFRF9CWV9VU0VSAgcpIGxhbmRzBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFB2FkZHJlc3MECW9sZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAQJd2xnUmVzdWx0CQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUHYWRkcmVzcwUDbmlsBQNuaWwJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIJAM0IAgUFbGFuZHMFC2xhbmRBc3NldElkAgFfCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkJAGQCBQlvbGRQaWVjZXMFBnBpZWNlcwkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUHYWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFC2xhbmRBc3NldElkBQdhZGRyZXNzBQppbmZyYUxldmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAFBXByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIFDHJlc0J5Q29udEtleQUQdXBkYXRlZENvbnRQcm9wcwkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAUJd2xnUmVzdWx0AWkBC3Vuc3Rha2VMYW5kAQ1sYW5kQXNzZXRJZEluBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQ1jbGFpbU1vZGVEdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEAWQIBQFjAl8zBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFcHJvcHMJARF1cGRhdGVQcm9wb3J0aW9ucwMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAxyZXNCeUNvbnRLZXkJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQkAkQMCBQFkBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFDHJlc0J5Q29udEtleQILMF8wXzBfMF8wXzACAV8EEHVwZGF0ZWRDb250UHJvcHMJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BAgFfBAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUNY2xhaW1Nb2RlRHVjawQFbGFuZHMJAL0JAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQhsYW5kc0tleQIAAgFfBANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEDmdvdlJlbGVhc2VUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFC2dvdkNvbnRyYWN0CQEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQUEYWRkcgAAAwkAZwIFDmdvdlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICOVlvdXIgZ1dMIGFyZSB0YWtpbmcgcGFydCBpbiB2b3RpbmcsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5nb3ZSZWxlYXNlVGltZQQOYXJiUmVsZWFzZVRpbWUJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFC3dsZ0NvbnRyYWN0CQEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBQRhZGRyAAAFDmFyYml0cmFnZURlbGF5AwkAZgIFDmFyYlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICP1lvdXIgc3Rha2VkIGxhbmRzIHRvb2sgcGFydCBpbiBhcmJpdHJhZ2UsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5hcmJSZWxlYXNlVGltZQQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAQJbmV3UGllY2VzAwkAZgIFBnBpZWNlcwUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMFBnBpZWNlcwQJd2xnUmVzdWx0CQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUEYWRkcgUDbmlsBQNuaWwJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQkA2QQBBQtsYW5kQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFBGFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAUFcHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AgUMcmVzQnlDb250S2V5BRB1cGRhdGVkQ29udFByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfMgkAuQkCCAULY2xhaW1SZXN1bHQCXzMCAToJAMwIAgMJAGYCCQCQAwEFBWxhbmRzAAEJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIJANEIAgUFbGFuZHMJAQV2YWx1ZQEFA2lkeAIBXwkBC0RlbGV0ZUVudHJ5AQUIbGFuZHNLZXkJAMwIAgkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQUJbmV3UGllY2VzCQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsBQl3bGdSZXN1bHQBaQEJc3Rha2VEdWNrAAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAdhc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyAwkBAiE9AggFA3BtdAZhbW91bnQAAQkAAgEJAKwCAgkArAICAgRORlQgBQpEVUNLUFJFRklYAiQgdG9rZW4gc2hvdWxkIGJlIGF0dGFjaGVkIGFzIHBheW1lbnQEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQDAwkBAiE9AggFBWFzc2V0Bmlzc3VlcgUNaW5jdWJhdG9yQWRkcgkBAiE9AggFBWFzc2V0Bmlzc3VlcgULYnJlZWRlckFkZHIHCQACAQkArAICCQCsAgICElVua25vd24gaXNzdWVyIG9mIAUKRFVDS1BSRUZJWAIGIHRva2VuAwkBASEBCQEIY29udGFpbnMCCAUFYXNzZXQEbmFtZQUKRFVDS1BSRUZJWAkAAgEJAKwCAgkArAICAglPbmx5IE5GVCAFCkRVQ0tQUkVGSVgCFCB0b2tlbnMgYXJlIGFjY2VwdGVkBAphc3NldElkU3RyCQDYBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUKYXNzZXRJZFN0cgMJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCEiBpcyBhbHJlYWR5IHN0YWtlZAMJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAAIBCQCsAgICHVlvdSBhbHJlYWR5IHN0YWtlZCBvbmUgZHVjazogCAUFYXNzZXQEbmFtZQMJAQ9jaGVja1RvdXJuYW1lbnQBBQphc3NldElkU3RyCQACAQIZc3Rha2VEdWNrX2NoZWNrVG91cm5hbWVudAQGbG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgQIbG9jYXRpb24JAKIIAQUGbG9jS2V5BAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQUKYXNzZXRJZFN0cgQIYmFja3BhY2sJAKIIAQUFYnBLZXkECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQphc3NldElkU3RyBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFCmFzc2V0SWRTdHIAAAQJY3VySGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFAJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKRFVDS1BSRUZJWAkA2AQBBQdhc3NldElkBQdhZGRyZXNzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwUKYXNzZXRJZFN0cgUDbmlsAwkBCWlzRGVmaW5lZAEFCGxvY2F0aW9uBQNuaWwJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZsb2NLZXkFD0RFRkFVTFRMT0NBVElPTgUDbmlsAwkBCWlzRGVmaW5lZAEFCGJhY2twYWNrBQNuaWwJAM0IAgkAzQgCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5AhowOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOgUDbmlsCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQljdXJIZWFsdGgFDHByb2xvZ0FjdGlvbgFpAQt1bnN0YWtlRHVjawEKYXNzZXRJZFN0cgQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAdhc3NldElkCQDZBAEFCmFzc2V0SWRTdHIEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyBAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFCmFzc2V0SWRTdHIDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkAwkBASEBCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzCQACAQkArAICCQCsAgICCVRoZSBkdWNrIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQUKYXNzZXRJZFN0cgkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUHYWRkcmVzcwkAAgECF1N0YWtlZCBORlQgaXMgbm90IHlvdXJzAwkBD2NoZWNrVG91cm5hbWVudAEFCmFzc2V0SWRTdHIJAAIBAht1bnN0YWtlRHVja19jaGVja1RvdXJuYW1lbnQECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQphc3NldElkU3RyBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFCmFzc2V0SWRTdHIAAAQGaGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBmAgUFbWF4SFAFBmhlYWx0aAkAAgEJAKwCAgkArAICAhlQbGVhc2UgaGVhbCB5b3VyIGR1Y2sgdG8gCQCkAwEFBW1heEhQAhNocCBiZWZvcmUgdW5zdGFraW5nCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABBQdhc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEFB3RpbWVLZXkJAMwIAgkBC0RlbGV0ZUVudHJ5AQUJa2V5SGVhbHRoCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ9rZXlEdWNrTG9jYXRpb24BBQphc3NldElkU3RyCQDMCAIJAQtEZWxldGVFbnRyeQEJARBrZXlEdWNrSWRUb093bmVyAQUKYXNzZXRJZFN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkRVQ0tQUkVGSVgFCmFzc2V0SWRTdHIFB2FkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAFpAQhjbGFpbVJlcwIGYW1vdW50DmxhbmRBc3NldElkU3RyBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAZyZXN1bHQJARBjbGFpbVJlc0ludGVybmFsBAUEYWRkcgUGYW1vdW50BQ1jbGFpbU1vZGVEdWNrBQ5sYW5kQXNzZXRJZFN0cgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkCQCUCgIJAM0IAgkAzQgCCQDNCAIJAM4IAggFBnJlc3VsdAJfMQgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkCQBrAwUHeHBDbGFpbQUGYW1vdW50BQVNVUxUOAJfMQkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfMgkAuQkCCAUGcmVzdWx0Al8zAgE6CQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al80CQC5CQIIBQZyZXN1bHQCXzUCAToFDHByb2xvZ0FjdGlvbgkAkQMCCAUGcmVzdWx0Al8zBQhicElkeFJlcwFpAQxjbGFpbVJlc1RvV0gCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAULY2xhaW1Nb2RlV2gFDmxhbmRBc3NldElkU3RyCQCUCgIJAM0IAgkAzQgCCQDNCAIJAM4IAggFBnJlc3VsdAJfMQgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQxwcm9sb2dBY3Rpb24JAJEDAggFBnJlc3VsdAJfNQUId2hJZHhSZXMBaQEGZmxpZ2h0AgdtZXNzYWdlA3NpZwQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAh1c2VyQWRkcgkApQgBCAUBaQZjYWxsZXIEAWYJAQxmbGlnaHRDb21tb24DBQh1c2VyQWRkcgUHbWVzc2FnZQUDc2lnBAtkdWNrQXNzZXRJZAgFAWYCXzIEC25ld0xvY2F0aW9uCAUBZgJfNAQGbmV3TG9jCQC1CQIFC25ld0xvY2F0aW9uAgFfBAZpc1RvdXIJAAACCQCRAwIFBm5ld0xvYwUKbG9jSWR4VHlwZQIBVAMDCQEBIQEFBmlzVG91cgkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkBwkAAgECFmZsaWdodF9jaGVja1RvdXJuYW1lbnQECXRvdXJTdHVmZgMFBmlzVG91cgQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUSdG91cm5hbWVudENvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljAwMDCQECIT0CCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGbmV3TG9jBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAYJAQIhPQIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MGCQBmAgUDbm93CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQR1bml0BAVzY29yZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBm5ld0xvYwUIbG9jSWR4SWQECmdsb2JhbEJlc3QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdkeW5hbWljBRF0RHluYW1pY1dpblJlc3VsdAMJAGcCBQpnbG9iYWxCZXN0BQVzY29yZQUEdW5pdAkA/AcEBRJ0b3VybmFtZW50Q29udHJhY3QCEXVwZGF0ZUR5bmFtaWNEYXRhCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFBXNjb3JlBQNuaWwFA25pbAUEdW5pdAMJAAACBQl0b3VyU3R1ZmYFCXRvdXJTdHVmZgQGbG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFBmxvY0tleQUPREVGQVVMVExPQ0FUSU9OAwkAAAIFC25ld0xvY2F0aW9uBQtjdXJMb2NhdGlvbgkAAgECIllvdSBjYW4ndCBmbHkgdG8gdGhlIHNhbWUgbG9jYXRpb24EBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAljdXJyZW50RXEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssBA0kdDA2ODMwMzY4NDc5CQERc3VidHJhY3RFcXVpcG1lbnQCBQljdXJyZW50RXEIBQFmAl81BAVuZXdFcQgFDSR0MDY4MzAzNjg0NzkCXzEED3Nob3VsZFplcm9CdWZmcwgFDSR0MDY4MzAzNjg0NzkCXzIJAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQMJAGYCCAUBZgJfMQAABQtuZXdMb2NhdGlvbgULY3VyTG9jYXRpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkCAUBZgJfMQkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAMFD3Nob3VsZFplcm9CdWZmcwkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAUDbmlsCQDOCAIFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkAwkAZgIIBQFmAl8xAAAFD3hwU3VjY2Vzc0ZsaWdodAUMeHBGYWlsRmxpZ2h0Al8xCAUBZgJfMwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQRoZWFsAwpxdWFudGl0eUwxCnF1YW50aXR5TDIKcXVhbnRpdHlMMwQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMDAwkAZgIAAAUKcXVhbnRpdHlMMQYJAGYCAAAFCnF1YW50aXR5TDIGCQBmAgAABQpxdWFudGl0eUwzCQACAQIbUXVhbnRpdHkgY2Fubm90IGJlIG5lZ2F0aXZlBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIUaGVhbF9jaGVja1RvdXJuYW1lbnQEA3F0cwkAzAgCBQpxdWFudGl0eUwxCQDMCAIFCnF1YW50aXR5TDIJAMwIAgUKcXVhbnRpdHlMMwUDbmlsBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJb2xkSGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBnAgUJb2xkSGVhbHRoBQVtYXhIUAkAAgEJAKwCAgkArAICAg9IUCBzaG91bGQgYmUgPCAJAKQDAQUFbWF4SFACCCB0byBoZWFsBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8KAQtpdGVyYXRlUHJvZAIDYWNjBnJlY2lwZQQBbggFA2FjYwJfMgQBeAMJAGYCCQCQAwEFCHByb2RMaXN0BQFuCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QFAW4AAAMJAGYCAAMFAW4EAXEJAJEDAgUDcXRzBQFuAwkAZgIFAXEFAXgJAAIBCQCsAgIJAKwCAgkArAICAg5Zb3UgaGF2ZSBvbmx5IAkApAMBBQF4AgQgb2YgCQCRAwIFCXByb2RUeXBlcwUBbgkAlQoDCQDNCAIIBQNhY2MCXzEJAKQDAQkAZQIFAXgFAXEJAGQCBQFuAAEJAGQCCAUDYWNjAl8zCQBoAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgUGcmVjaXBlAgFfBQpySWR4RWZmZWN0BQFxCQCVCgMJAM0IAggFA2FjYwJfMQkApAMBBQF4CQBkAgUBbgABCAUDYWNjAl8zBAZyZXN1bHQKAAIkbAUQcHJvZHVjdGlvbk1hdHJpeAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsAAAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQELaXRlcmF0ZVByb2QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDUwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgQJbmV3SGVhbHRoCQCXAwEJAMwIAgUFbWF4SFAJAMwIAgkAZAIFCW9sZEhlYWx0aAgFBnJlc3VsdAJfMwUDbmlsCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQluZXdIZWFsdGgJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIJALkJAggFBnJlc3VsdAJfMQIBXwUDbmlsAgE6CQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGgCBQZ4cEhlYWwJAGQCCQBkAgUKcXVhbnRpdHlMMQUKcXVhbnRpdHlMMgUKcXVhbnRpdHlMMwJfMQUJbmV3SGVhbHRoAWkBBmhlYWxFUwAEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFmhlYWxFU19jaGVja1RvdXJuYW1lbnQECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAlvbGRIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGYCBQlvbGRIZWFsdGgAAAkAAgECKEhQIHNob3VsZCBiZSAwIHRvIGNhbGwgRW1lcmdlbmN5IFNlcnZpY2UEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwQNbWVkS2l0QW1vdW50MQMJAGYCCQCQAwEFCHByb2RMaXN0AAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAAAAAAEDW1lZEtpdEFtb3VudDIDCQBmAgkAkAMBBQhwcm9kTGlzdAABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAQAABA1tZWRLaXRBbW91bnQzAwkAZgIJAJADAQUIcHJvZExpc3QAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAIAAAMDAwkAZgIFDW1lZEtpdEFtb3VudDEAAAYJAGYCBQ1tZWRLaXRBbW91bnQyAAAGCQBmAgUNbWVkS2l0QW1vdW50MwAACQACAQIfWW91IGhhdmUgdG8gdXNlIG93biBNZWRpY2FsIEtpdAQIZXhpc3RTdHIJAJ0IAgUPZWNvbm9teUNvbnRyYWN0CQEOa2V5RXNXYXJlaG91c2UABAxleGlzdEFtb3VudHMDCQEJaXNEZWZpbmVkAQUIZXhpc3RTdHIJALwJAgkBBXZhbHVlAQUIZXhpc3RTdHICAV8FA25pbAQLZXhpc3RBbW91bnQDCQBmAgkAkAMBBQxleGlzdEFtb3VudHMAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGV4aXN0QW1vdW50cwAAAAADCQBnAgAABQtleGlzdEFtb3VudAkAAgECOVRoZXJlIGFyZSBubyBNZWRpY2FsIEtpdHMgTDEgYXQgRW1lcmdlbmN5IFNlcnZpY2Ugc3RvcmFnZQQJbmV3SGVhbHRoCQBkAgUJb2xkSGVhbHRoCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgAAAIBXwUKcklkeEVmZmVjdAQFbmV3RVMJALkJAgkAzAgCCQCkAwEJAGUCBQtleGlzdEFtb3VudAABCQDRCAIFDGV4aXN0QW1vdW50cwAAAgFfBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4AAACAV8ECHRvdGFsTWF0CQESZ2V0UmVjaXBlTWF0ZXJpYWxzAQUGcmVjaXBlBAlzZWxsUHJpY2UJAGsDCQBoAgUIdG90YWxNYXQFCkVTU0VMTENPRUYFEFJFU09VUkNFUFJJQ0VNSU4JAGgCBQVNVUxUOAUOUFJPRFVDVFBLR1NJWkUDCQECIT0CCAUDcG10BmFtb3VudAUJc2VsbFByaWNlCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUJc2VsbFByaWNlBAZyZXN1bHQJAQhhc1N0cmluZwEJAPwHBAUPZWNvbm9teUNvbnRyYWN0Ag91cGRhdGVFc1N0b3JhZ2UJAMwIAgUFbmV3RVMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgULdXNkdEFzc2V0SWQFCXNlbGxQcmljZQUDbmlsCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQluZXdIZWFsdGgJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUIeHBDYWxsRVMCXzEFBnJlc3VsdAFpAQ51cGRhdGVCYWNrcGFjawILZHVja0Fzc2V0SWQHbmV3UGFjawMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQIRcGVybWlzc2lvbiBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAUHbmV3UGFjawUDbmlsBQduZXdQYWNrAWkBD2NvbW1pdEZvclJhbmRvbQAEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkEC2ZpbmlzaEJsb2NrCQBkAgUGaGVpZ2h0BQtyYW5kb21EZWxheQQEYWRkcgkApQgBCAUBaQZjYWxsZXIJAJQKAgkAzQgCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEJa2V5Q29tbWl0AQUEYWRkcgULZmluaXNoQmxvY2sFA25pbAUMcHJvbG9nQWN0aW9uBQtmaW5pc2hCbG9jawFpAQhidXlTTGFuZAAEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQMJAQIhPQIIBQNwbXQGYW1vdW50BQdFWFBVU0RUCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUHRVhQVVNEVAQGcmVzdWx0CQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkCQCUCgIJAM0IAgkAzggCCQDNCAIIBQZyZXN1bHQCXzEJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCCQClCAEIBQFpBmNhbGxlcgUKeHBOZXdTTGFuZAJfMQUMcHJvbG9nQWN0aW9uCAgFBnJlc3VsdAJfMgJfMQFpAQpleHBlZGl0aW9uAgdtZXNzYWdlA3NpZwQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJARBleHBlZGl0aW9uQ29tbW9uBAgFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBQdtZXNzYWdlBQNzaWcEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhpleHBlZGl0aW9uX2NoZWNrVG91cm5hbWVudAkAlAoCCQDNCAIJAM4IAggFBnJlc3VsdAJfMQgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQp4cE5ld1NMYW5kAl8xBQxwcm9sb2dBY3Rpb24JAJQKAggFBnJlc3VsdAJfMggFBnJlc3VsdAJfMwFpAQx1cGdyYWRlSW5mcmEBC2xhbmRBc3NldElkBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBnJlc3VsdAkBDXVwSW5mcmFDb21tb24EBggFAWkGY2FsbGVyAAAFC2xhbmRBc3NldElkBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkCQCUCgIJAM4IAgkAzQgCCAUGcmVzdWx0Al8xBQxwcm9sb2dBY3Rpb24ICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFDnhwVXBncmFkZUluZnJhCAUGcmVzdWx0Al8zBQVNVUxUOAJfMQgFBnJlc3VsdAJfMgFpARBhY3RpdmF0ZUFydGlmYWN0AgdhcnROYW1lDmxhbmRBc3NldElkT3B0BAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAZyZXN1bHQEByRtYXRjaDAFB2FydE5hbWUDCQAAAgIHUFJFU0FMRQUHJG1hdGNoMAkBEmFjdGl2YXRlUHJlc2FsZUFydAIFBGFkZHIFDmxhbmRBc3NldElkT3B0AwkAAAICB09OQk9BUkQFByRtYXRjaDAJARJhY3RpdmF0ZU9uYm9hcmRBcnQBBQRhZGRyCQACAQIQVW5rbm93biBhcnRpZmFjdAkAzQgCBQZyZXN1bHQFDHByb2xvZ0FjdGlvbgFpAQptZXJnZUxhbmRzAQxsYW5kQXNzZXRJZHMEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQGcmVzdWx0CQELbWVyZ2VDb21tb24CCQClCAEIBQFpBmNhbGxlcgUMbGFuZEFzc2V0SWRzCQCUCgIJAM4IAgkAzQgCCAUGcmVzdWx0Al8xBQxwcm9sb2dBY3Rpb24ICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQd4cE1lcmdlAl8xCAUGcmVzdWx0Al8yAWkBDWNhcmdvRXhjaGFuZ2UCDGNhcmdvTGlzdFN0cgtsYW5kQXNzZXRJZAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBApjYXJnb1BhcnRzCQC8CQIFDGNhcmdvTGlzdFN0cgIBOgQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OBANsb2MJALUJAgkBBXZhbHVlAQULY3VyTG9jYXRpb24CAV8DCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBTAkAAgEJAKwCAgkArAICAhZEdWNrIGxvY2F0aW9uIHR5cGUgaXMgCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIRLCBidXQgc2hvdWxkIGJlIEwDCQECIT0CCQCRAwIFA2xvYwUIbG9jSWR4SWQFC2xhbmRBc3NldElkCQACAQkArAICAhtEdWNrIHNob3VsZCBiZSBvbiB0aGUgbGFuZCAFC2xhbmRBc3NldElkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAljdXJyZW50V2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQGcmVzdWx0CQEJbW92ZVN0dWZmAwUKY2FyZ29QYXJ0cwUJY3VycmVudFdoBQtjdXJyZW50UGFjawQEbG9mdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBAVsb2Z0TwkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAgFBnJlc3VsdAJfNwQFbG9mdEYJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQgFBnJlc3VsdAJfNwkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAggFBnJlc3VsdAJfNAkAzAgCCAUGcmVzdWx0Al81CQDMCAIIBQZyZXN1bHQCXzYFA25pbAIBOgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQkAugkCCQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCCAUGcmVzdWx0Al8xCQDMCAIIBQZyZXN1bHQCXzIJAMwIAggFBnJlc3VsdAJfMwkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAgE6CQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsAWkBDXNhdmVXYXJlaG91c2UCBXdoU3RyC2xhbmRBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAJ3aAkAvAkCBQV3aFN0cgIBOgMJAQIhPQIJAJADAQUCd2gABQkAAgECMHdhcmVob3VzZSBzdHJpbmcgc2hvdWxkIGNvbnRhaW4gNCAnOicgc2VwYXJhdG9ycwQFbG9mdEwJAJEDAgkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8FCXZvbExvY2tlZAQFbG9mdE8JARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEFAndoBAVsb2Z0VAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQJ3aAULd2hJZHhMZXZlbHMEBWxvZnRGCQBlAgkAZQIFBWxvZnRUCQENcGFyc2VJbnRWYWx1ZQEFBWxvZnRMBQVsb2Z0TwQIbmV3V2hTdHIJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIFBWxvZnRMCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCkAwEFBWxvZnRUBQNuaWwCAV8FA25pbAIBOgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5BQhuZXdXaFN0cgUDbmlsBQhuZXdXaFN0cgFpARJmaXhXYXJlaG91c2VGb3JtYXQBC2xhbmRBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQxyZXN0Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQCd2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBAVsb2Z0TAkBBWFzSW50AQkA/AcEBQ9lY29ub215Q29udHJhY3QCGnJlY2FsY0xvY2tlZFZvbHVtZVJFQURPTkxZCQDMCAIFC2xhbmRBc3NldElkCQDMCAIFAndoBQNuaWwFA25pbAQFbG9mdE8JARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEFAndoBAVsb2Z0VAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQJ3aAULd2hJZHhMZXZlbHMEBWxvZnRGCQBlAgkAZQIFBWxvZnRUBQVsb2Z0TAUFbG9mdE8ECG5ld1doU3RyCQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgkAkQMCBQJ3aAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCCQCkAwEFBWxvZnRMCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCkAwEFBWxvZnRUBQNuaWwCAV8FA25pbAIBOgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5BQhuZXdXaFN0cgUDbmlsBQhuZXdXaFN0cgFpARdmaXhDb250aW5lbnRQcm9wb3J0aW9ucwEMbGFuZEFzc2V0SWRzAwkBAiE9AggFAWkGY2FsbGVyBQxyZXN0Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkCgEIZ2V0UHJvcHMCA2FjYwRjb250CQDNCAIFA2FjYwkBC3ZhbHVlT3JFbHNlAgkAoggBCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEFBGNvbnQCCzBfMF8wXzBfMF8wBAFwCgACJGwFCmNvbnRpbmVudHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGdldFByb3BzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQoBCXByb2Nlc3NvcgIDYWNjC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUFBVNTSVpFBARjb250CQCRAwIFAWQFDHJlY0NvbnRpbmVudAQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAxjb250aW5lbnRJZHgJAQV2YWx1ZQEJAM8IAgUKY29udGluZW50cwUEY29udAQJY29udFByb3BzCQC1CQIJAJEDAgUDYWNjBQxjb250aW5lbnRJZHgCAV8EB3VwZGF0ZWQJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABAgFfBAckbWF0Y2gwBQRjb250AwkAAAICCEFtZXJpY2FzBQckbWF0Y2gwCQDMCAIFB3VwZGF0ZWQJAMwIAgkAkQMCBQNhY2MAAQkAzAgCCQCRAwIFA2FjYwACCQDMCAIJAJEDAgUDYWNjAAMJAMwIAgkAkQMCBQNhY2MABAUDbmlsAwkAAAICBkV1cm9wZQUHJG1hdGNoMAkAzAgCCQCRAwIFA2FjYwAACQDMCAIFB3VwZGF0ZWQJAMwIAgkAkQMCBQNhY2MAAgkAzAgCCQCRAwIFA2FjYwADCQDMCAIJAJEDAgUDYWNjAAQFA25pbAMJAAACAgRBc2lhBQckbWF0Y2gwCQDMCAIJAJEDAgUDYWNjAAAJAMwIAgkAkQMCBQNhY2MAAQkAzAgCBQd1cGRhdGVkCQDMCAIJAJEDAgUDYWNjAAMJAMwIAgkAkQMCBQNhY2MABAUDbmlsAwkAAAICBkFmcmljYQUHJG1hdGNoMAkAzAgCCQCRAwIFA2FjYwAACQDMCAIJAJEDAgUDYWNjAAEJAMwIAgkAkQMCBQNhY2MAAgkAzAgCBQd1cGRhdGVkCQDMCAIJAJEDAgUDYWNjAAQFA25pbAMJAAACAgdPY2VhbmlhBQckbWF0Y2gwCQDMCAIJAJEDAgUDYWNjAAAJAMwIAgkAkQMCBQNhY2MAAQkAzAgCCQCRAwIFA2FjYwACCQDMCAIJAJEDAgUDYWNjAAMJAMwIAgUHdXBkYXRlZAUDbmlsCQACAQIPd3JvbmcgY29udGluZW50BAFyCgACJGwFDGxhbmRBc3NldElkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFAXAKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCXByb2Nlc3NvcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIVTGlzdCBzaXplIGV4Y2VlZHMgMTAwCQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEF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aG91bGQgbm90IGNvbnRhaW4gJ19fJzogBQpjdXN0b21OYW1lAwkAZgIJALECAQUKY3VzdG9tTmFtZQUKTUFYTkFNRUxFTgkAAgEJAKwCAgIZTmFtZSB0b28gbG9uZywgbWF4TGVuZ3RoPQkApAMBBQpNQVhOQU1FTEVOBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQHYWN0aW9ucwQHJG1hdGNoMAUEdHlwZQMJAAACAgdBQ0NPVU5UBQckbWF0Y2gwBApyZXZlcnNlS2V5CQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQNYWRkclRvTmFtZUtleQkBFmtleUFkZHJlc3NUb0N1c3RvbU5hbWUBBQRhZGRyBAdvbGROYW1lCQCiCAEFDWFkZHJUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ1hZGRyVG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQRhZGRyCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQx4cEN1c3RvbU5hbWUCXzEDCQAAAgIETEFORAUHJG1hdGNoMAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA5hc3NldFRvTmFtZUtleQkBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAQHb2xkTmFtZQkAoggBBQ5hc3NldFRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ5hc3NldFRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUHYXNzZXRJZAgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgUMeHBDdXN0b21OYW1lAl8xAwkAAAICBERVQ0sFByRtYXRjaDAEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQdhc3NldElkAwMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQYJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKRFVDS1BSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA5hc3NldFRvTmFtZUtleQkBGmtleUR1Y2tBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAQHb2xkTmFtZQkAoggBBQ5hc3NldFRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ5hc3NldFRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUHYXNzZXRJZAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFB2Fzc2V0SWQFDHhwQ3VzdG9tTmFtZQJfMQkAAgECE1Vua25vd24gZW50aXR5IHR5cGUJAJQKAgkAzQgCCQDNCAIFB2FjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkBQxwcm9sb2dBY3Rpb24AAAFpAQxzZXRSZWZlcnJhbHMCCW9sZFBsYXllcgluZXdQbGF5ZXIDCQECIT0CCAUBaQ9jYWxsZXJQdWJsaWNLZXkFA3B1YgkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFCW9sZFBsYXllcgkAAgEJAKwCAgIRSW52YWxpZCBhZGRyZXNzOiAFCW9sZFBsYXllcgMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUJbmV3UGxheWVyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJbmV3UGxheWVyBAdvbGRzS2V5CQEJa2V5T2xkaWVzAAQEb2xkcwkAoggBBQdvbGRzS2V5BAZvbGRpZXMDCQEJaXNEZWZpbmVkAQUEb2xkcwkAvAkCCQEFdmFsdWUBBQRvbGRzAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUGb2xkaWVzBQluZXdQbGF5ZXIJAAIBCQCsAgIFCW5ld1BsYXllcgImIGlzIG5vdCBuZXdiaWUgKGFscmVhZHkgaGFzIHJlZmVycmFscykECHJlZkJ5S2V5CQEPa2V5QWRkcmVzc1JlZkJ5AQUJbmV3UGxheWVyBAVyZWZCeQkAoggBBQhyZWZCeUtleQMDCQEJaXNEZWZpbmVkAQUFcmVmQnkJAQlpc0RlZmluZWQBCQCmCAEJAQV2YWx1ZQEFBXJlZkJ5BwkAAgEJAKwCAgkArAICBQluZXdQbGF5ZXICFCBhbHJlYWR5IGhhcyByZWZCeTogCQEFdmFsdWUBBQVyZWZCeQQHcmVmc0tleQkBE2tleUFkZHJlc3NSZWZlcnJhbHMBBQlvbGRQbGF5ZXIEBHJlZnMJAKIIAQUHcmVmc0tleQQJcmVmc0FycmF5AwkBCWlzRGVmaW5lZAEFBHJlZnMJALwJAgkBBXZhbHVlAQUEcmVmcwIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFCXJlZnNBcnJheQUJbmV3UGxheWVyCQACAQkArAICCQCsAgIJAKwCAgUJb2xkUGxheWVyAhIgYWxyZWFkeSBjb250YWlucyAFCW5ld1BsYXllcgIRIHdpdGhpbiByZWZlcnJhbHMEB25ld1JlZnMJALoJAgkAzQgCBQlyZWZzQXJyYXkFCW5ld1BsYXllcgIBXwQHbmV3T2xkcwMJAQ9jb250YWluc0VsZW1lbnQCBQZvbGRpZXMFCW9sZFBsYXllcgkBBXZhbHVlAQUEb2xkcwkAugkCCQDNCAIFBm9sZGllcwUJb2xkUGxheWVyAgFfCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUIcmVmQnlLZXkFCW9sZFBsYXllcgkAzAgCCQELU3RyaW5nRW50cnkCBQdyZWZzS2V5BQduZXdSZWZzCQDMCAIJAQtTdHJpbmdFbnRyeQIFB29sZHNLZXkFB25ld09sZHMJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwAAAFpARBkaXN0cmlidXRlUG9pbnRzBQhzdHJlbmd0aAhhY2N1cmFjeQlpbnRlbGxlY3QJZW5kdXJhbmNlCWRleHRlcml0eQQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBApmcmVlS2V5QWNjCQERa2V5VXNlckZyZWVQb2ludHMBBQRhZGRyBA1mcmVlUG9pbnRzQWNjCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAUKZnJlZUtleUFjYwAABAtmcmVlS2V5RHVjawkBEWtleUR1Y2tGcmVlUG9pbnRzAQULZHVja0Fzc2V0SWQEDmZyZWVQb2ludHNEdWNrCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAULZnJlZUtleUR1Y2sAAAQHc3VtRnJlZQkAZAIFDWZyZWVQb2ludHNBY2MFDmZyZWVQb2ludHNEdWNrBA9zdW1Ub0Rpc3RyaWJ1dGUJAGQCCQBkAgkAZAIJAGQCBQhzdHJlbmd0aAUIYWNjdXJhY3kFCWludGVsbGVjdAUJZW5kdXJhbmNlBQlkZXh0ZXJpdHkDCQBmAgUPc3VtVG9EaXN0cmlidXRlBQdzdW1GcmVlCQACAQkArAICCQCsAgICD1RoZXJlIGFyZSBvbmx5IAkApAMBBQdzdW1GcmVlAhogZnJlZSBwb2ludHMgdG8gZGlzdHJpYnV0ZQQIY2hhcnNLZXkJAQxrZXlEdWNrQ2hhcnMBBQtkdWNrQXNzZXRJZAQFY2hhcnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QFCGNoYXJzS2V5AgkwXzBfMF8wXzACAV8EBm5ld0FjYwkAZQIFDWZyZWVQb2ludHNBY2MFD3N1bVRvRGlzdHJpYnV0ZQkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQpmcmVlS2V5QWNjAwkAZgIAAAUGbmV3QWNjAAAFBm5ld0FjYwkAzAgCCQEMSW50ZWdlckVudHJ5AgULZnJlZUtleUR1Y2sDCQBmAgAABQZuZXdBY2MJAGQCBQ5mcmVlUG9pbnRzRHVjawUGbmV3QWNjBQ5mcmVlUG9pbnRzRHVjawkAzAgCCQELU3RyaW5nRW50cnkCBQhjaGFyc0tleQkAuQkCCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhclN0cmVuZ3RoBQhzdHJlbmd0aAkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJBY2N1cmFjeQUIYWNjdXJhY3kJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFySW50ZWxsZWN0BQlpbnRlbGxlY3QJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRW5kdXJhbmNlBQllbmR1cmFuY2UJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRGV4dGVyaXR5BQlkZXh0ZXJpdHkFA25pbAIBXwkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAAAAWkBHHNwbGl0QnlHbG9iYWxXZWlnaHRzUkVBRE9OTFkBBmFtb3VudAkAlAoCBQNuaWwJARJnZXROZWVkZWRNYXRlcmlhbHMBBQZhbW91bnQBaQEkc3BsaXRCeUdsb2JhbEFuZExvY2FsV2VpZ2h0c1JFQURPTkxZAwltYXRBbW91bnQJcmVzQW1vdW50CHRlcnJhaW5zBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEFCHRlcnJhaW5zCQCUCgIFA25pbAkAlAoCCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUJbWF0QW1vdW50CQETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFCXJlc0Ftb3VudAUNdGVycmFpbkNvdW50cwFpARNnZXRCYWNrcGFja1JFQURPTkxZAQtkdWNrQXNzZXRJZAkAlAoCBQNuaWwJALkJAgkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQCAToBaQEUZ2V0V2FyZWhvdXNlUkVBRE9OTFkBC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAkAlAoCBQNuaWwJALoJAgkBDGdldFdhcmVob3VzZQMJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAUJbGFuZEluZGV4BQppbmZyYUxldmVsAgE6AWkBCnNhdmVMYXN0VHgABAZjYWxsZXIIBQFpBmNhbGxlcgMDAwkBAiE9AgUGY2FsbGVyBQt3bGdDb250cmFjdAkBAiE9AgUGY2FsbGVyBQ9lY29ub215Q29udHJhY3QHCQECIT0CBQZjYWxsZXIFEnRvdXJuYW1lbnRDb250cmFjdAcJAAIBAg1BY2Nlc3MgZGVuaWVkCQCUCgIJAMwIAgkBBnByb2xvZwEFAWkFA25pbAAqAWkBD3VwZGF0ZUR1Y2tTdGF0cwILZHVja0Fzc2V0SWQHZGVsdGFYUAMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFB2RlbHRhWFABaQEOdXBkYXRlQWNjU3RhdHMCBGFkZHIHZGVsdGFYUAMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQdkZWx0YVhQAWkBCWVxdWlwRHVjawEJZXF1aXBtZW50BAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhllcXVpcER1Y2tfY2hlY2tUb3VybmFtZW50BAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQLY3VycmVudFNlZ3MJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywCAV8EBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVuZXdFcQkAtQkCBQllcXVpcG1lbnQCAV8DCQECIT0CCQCQAwEFBW5ld0VxBQtOVU1TRUdNRU5UUwkAAgECFldyb25nIGVxdWlwbWVudCBzdHJpbmcECXRlbXBQcm9kQgkBBmRyZXNzQgQFC2N1cnJlbnRTZWdzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QGBQNuaWwECHNlZ0JwQXV4CQCRAwIJALUJAgkAkQMCBQVuZXdFcQULc2VnQmFja3BhY2sCATsAAQQKYnVmZkVmZmVjdAMJAAACBQhzZWdCcEF1eAIAAAAEBGF1eDAJAJEDAgkAtQkCBQhzZWdCcEF1eAIBLAAAAwkAAAIFBGF1eDACAAAABAZpZHhDbnQJALUJAgUEYXV4MAIBOgQDaWR4CQCRAwIFBmlkeENudAAABANjbnQJAJEDAgUGaWR4Q250AAEDAwMDAwkAAAIFA2lkeAICMDYGCQAAAgUDaWR4AgIwNwYJAAACBQNpZHgCAjA4CQECIT0CBQNjbnQCAAcJAGYCCQENcGFyc2VJbnRWYWx1ZQEFA2NudAAABwkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4CQENcGFyc2VJbnRWYWx1ZQEFA2lkeAIBXwUKcklkeEVmZmVjdAAABAVzdGF0cwkBDGdldER1Y2tTdGF0cwQFBHRoaXMFC2R1Y2tBc3NldElkBQpidWZmRWZmZWN0BgQIbmV3UHJvZEIJAQZkcmVzc0IEBQVuZXdFcQUJdGVtcFByb2RCBwUFc3RhdHMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFCWVxdWlwbWVudAkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgUKbmV3UHJvZFN0cgUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAHCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAICQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAJCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAKCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwALBQNuaWwCAV8JAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwAAAFpAQ9mb3J0aWZpY2F0ZUxhbmQCC2xhbmRBc3NldElkBHBsYW4EDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC2R1Y2tBc3NldElkCQELdmFsdWVPckVsc2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICAAQJZHVja1N0YXRzCQEMZ2V0RHVja1N0YXRzBAUEdGhpcwULZHVja0Fzc2V0SWQAAAcEB2ZvcnRLZXkJARdrZXlGb3J0aWZpY2F0aW9uc0J5TGFuZAEFC2xhbmRBc3NldElkBAxjdXJyZW50Rm9ydHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQdmb3J0S2V5Agw6MF8xNTowXzE4OjACAV8EBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAJ3aAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEB2N1ckxvZnQJALUJAgkAkQMCBQJ3aAUJd2hJZHhMT0ZUAgFfBARjdXJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHY3VyTG9mdAULdm9sT2NjdXBpZWQEBGN1ckYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdjdXJMb2Z0BQd2b2xGcmVlBAhuZXdGb3J0cwkAtQkCBQRwbGFuAgFfBA0kdDA5NTMyNTk1NDQwCQEFZm9ydEIGBQxjdXJyZW50Rm9ydHMJAQ5wcm9kU3RyVG9CeXRlcwEJAJEDAgUCd2gFCXdoSWR4UHJvZAUEY3VyTwUEY3VyRgYFA25pbAQJdGVtcFByb2RCCAUNJHQwOTUzMjU5NTQ0MAJfMQQFdGVtcE8IBQ0kdDA5NTMyNTk1NDQwAl8yBAV0ZW1wRggFDSR0MDk1MzI1OTU0NDACXzMEDSR0MDk1NDQzOTU1MzkJAQVmb3J0QgYFCG5ld0ZvcnRzBQl0ZW1wUHJvZEIFBXRlbXBPBQV0ZW1wRgcFCWR1Y2tTdGF0cwQIbmV3UHJvZEIIBQ0kdDA5NTQ0Mzk1NTM5Al8xBARuZXdPCAUNJHQwOTU0NDM5NTUzOQJfMgQEbmV3RggFDSR0MDk1NDQzOTU1MzkCXzMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQdjdXJMb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQRuZXdPCQDMCAIJAKQDAQUEbmV3RgkAzAgCCQCRAwIFB2N1ckxvZnQFCHZvbFRvdGFsBQNuaWwCAV8JAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQdmb3J0S2V5BQRwbGFuCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5CQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgUKbmV3UHJvZFN0cgkAzAgCBQpuZXdMb2Z0U3RyBQNuaWwCAToJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwAAAFpARNpbml0RHVja1RvdXJBdHRlbXB0AQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUSdG91cm5hbWVudENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAECWN1ckhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQBAljdXJMb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VyTG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQMdG91ckxvY2F0aW9uCQCsAgIJAKQDAQUGbGFzdElkAgRfVF8wCQCUCgIJAMwIAgUMcHJvbG9nQWN0aW9uCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAUJY3VySGVhbHRoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFBW1heEhQCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFC2N1ckxvY2F0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUMdG91ckxvY2F0aW9uBQNuaWwFDHRvdXJMb2NhdGlvbgFpAQxicmVha0F0dGVtcHQABAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAljdXJMb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VyTG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04DCQECIT0CCQCRAwIJALUJAgULY3VyTG9jYXRpb24CAV8FCmxvY0lkeFR5cGUCAVQJAAIBAiJZb3VyIGR1Y2sgaXMgbm90IGluIHRoZSB0b3VybmFtZW50BAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJQKAgkAzAgCBQxwcm9sb2dBY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFC3NhdmVkSGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUNc2F2ZWRMb2NhdGlvbgUDbmlsBQtjdXJMb2NhdGlvbgFpARZleGl0VG91cm5hbWVudEludGVybmFsAQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEC3NhdmVkSGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAQNc2F2ZWRMb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQtzYXZlZEhlYWx0aAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFDXNhdmVkTG9jYXRpb24FA25pbAAAAWkBDnByZXBhcmVSb2JiZXJ5AgdtZXNzYWdlA3NpZwQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAZ3bGdBbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUKd2xnQXNzZXRJZAkAAgECFVdMR09MRCBwYXltZW50cyBvbmx5IQQFcGFydHMJALUJAgkAsAkBBQdtZXNzYWdlAgF8AwkBAiE9AgkAkAMBBQVwYXJ0cwACCQACAQIUV3JvbmcgbWVzc2FnZSBmb3JtYXQEC2R1Y2tBc3NldElkCQCRAwIFBXBhcnRzAAAEB3JvYkNvc3QICQEOZ2V0Um9iYmVyeURhdGECBQR0aGlzBQtkdWNrQXNzZXRJZAJfMQMJAGYCBQdyb2JDb3N0BQZ3bGdBbXQJAAIBCQCsAgIJAKwCAgkArAICAghQYXltZW50IAkApAMBBQZ3bGdBbXQCDCA8IHJlcXVpcmVkIAkApAMBBQdyb2JDb3N0BApjYW5kaWRhdGVzCQC1CQIJAJEDAgUFcGFydHMAAQIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJZHVja1N0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEJARNrZXlEdWNrUm9iYmVyeVN0YXRlAQULZHVja0Fzc2V0SWQAAAQKbG9ja2VkTGFuZAkBC3ZhbHVlT3JFbHNlAgkAoggBCQETa2V5TG9ja2VkTGFuZEJ5RHVjawEFC2R1Y2tBc3NldElkAgAEB2xhbmRFVEEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleUxhbmRDb29sZG93bkVUQQEFCmxvY2tlZExhbmQAAAMDCQECIT0CBQlkdWNrU3RhdGUFC2R1Y2tJZHhGcmVlCQBmAgUHbGFuZEVUQQUDbm93BwkAAgEJAKwCAgInWW91IGFscmVhZHkgc3RhcnRlZCByb2JiaW5nLCB3YWl0IHRpbGwgCQCkAwEFB2xhbmRFVEEKAQdjaGVja2VyAgNhY2MLbGFuZEFzc2V0SWQEBXN0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEJARNrZXlMYW5kUm9iYmVyeVN0YXRlAQULbGFuZEFzc2V0SWQAAAQLY29vbGRvd25FVEEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleUxhbmRDb29sZG93bkVUQQEFC2xhbmRBc3NldElkAAADCQBmAgUFc3RhdGUJAJADAQUQbGFuZFJvYkNvb2xkb3ducwkAAgECDUludmFsaWQgc3RhdGUDCQBmAgUDbm93BQtjb29sZG93bkVUQQQKc3Rha2VkVGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAADCQBnAgAABQpzdGFrZWRUaW1lBQNhY2MEAWEJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQBZAkAtQkCCAUBYQtkZXNjcmlwdGlvbgIBXwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQMcHJvZHVjdGl2aXR5CQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwQJZGVsdGFUaW1lCQBlAgUDbm93BQpzdGFrZWRUaW1lBAhhdmFpbFJlcwkAawMFCWRlbHRhVGltZQkAaAIFDHByb2R1Y3Rpdml0eQUGcGllY2VzBQlEQVlNSUxMSVMDCQBmAgUOTUlOX1JFU19UT19ST0IFCGF2YWlsUmVzBQNhY2MJAM0IAgUDYWNjBQtsYW5kQXNzZXRJZAUDYWNjBAhmaWx0ZXJlZAoAAiRsBQpjYW5kaWRhdGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdjaGVja2VyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAwkAAAIJAJADAQUIZmlsdGVyZWQAAAkAAgECGU5vIGNhbmRpZGF0ZXMgZm9yIHJvYmJlcnkEBnJuZElkeAkBD2dldFJhbmRvbU51bWJlcgMJAJADAQUIZmlsdGVyZWQFBmhlaWdodAkAywECBQNzaWcIBQFpDXRyYW5zYWN0aW9uSWQEC2xhbmRBc3NldElkCQCRAwIFCGZpbHRlcmVkBQZybmRJZHgJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBE2tleUxhbmRSb2JiZXJ5U3RhdGUBBQtsYW5kQXNzZXRJZAUMcm9iSWR4TG9ja2VkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5TGFuZENvb2xkb3duRVRBAQULbGFuZEFzc2V0SWQJAGQCBQNub3cJAJEDAgUQbGFuZFJvYkNvb2xkb3ducwUMcm9iSWR4TG9ja2VkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQETa2V5RHVja1JvYmJlcnlTdGF0ZQEFC2R1Y2tBc3NldElkBRBkdWNrSWR4UHJlcGFyaW5nCQDMCAIJAQtTdHJpbmdFbnRyeQIJARNrZXlMb2NrZWRMYW5kQnlEdWNrAQULZHVja0Fzc2V0SWQFC2xhbmRBc3NldElkCQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsBQtsYW5kQXNzZXRJZACjpCtu", "height": 2729348, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 75nWtPxRXwVz43cS7bjSoVAMGsVxBY4aiLMRxU297fUF Next: ExHCXk3siyLGC5MAn48MckLCiryUuSVKwCNo8ZhnwVLR Diff:
OldNewDifferences
4444
4545 let v = 1
4646
47-func w (x) = ("duckHealth_" + x)
48-
49-
50-func y (x) = ("duckChars_" + x)
51-
52-
53-func z (x) = ("duckXP_" + x)
54-
55-
56-func A (x) = ("duckLevel_" + x)
57-
58-
59-func B (x) = ("duckFreePoints_" + x)
60-
61-
62-func C (x) = ("duckEquipment_" + x)
63-
64-
65-func D (b) = ("userXP_" + b)
66-
67-
68-func E (b) = ("userLevel_" + b)
69-
70-
71-func F (b) = ("userFreePoints_" + b)
72-
73-
74-func G (x) = ("savedHealth_" + x)
75-
76-
77-func H (x) = ("savedLocation_" + x)
78-
79-
80-func I (x) = ("duckBuffs_" + x)
81-
82-
83-func J (x) = ("lastRobberyTime_" + x)
84-
85-
86-func K (x) = ("lastRobberyCost_" + x)
87-
88-
89-func L (M) = ("landRobberyState_" + M)
90-
91-
92-func N (M) = ("landCooldownETA_" + M)
93-
94-
95-let O = 10000
96-
97-let P = 10000
98-
99-let Q = 2000
100-
101-let R = 100000
102-
103-let S = 1000000
104-
105-let T = 5000000
106-
107-let U = 10000
108-
109-let V = 1000000
47+let w = 0
48+
49+let x = 1
50+
51+func y (z) = ("duckHealth_" + z)
52+
53+
54+func A (z) = ("duckChars_" + z)
55+
56+
57+func B (z) = ("duckXP_" + z)
58+
59+
60+func C (z) = ("duckLevel_" + z)
61+
62+
63+func D (z) = ("duckFreePoints_" + z)
64+
65+
66+func E (z) = ("duckEquipment_" + z)
67+
68+
69+func F (b) = ("userXP_" + b)
70+
71+
72+func G (b) = ("userLevel_" + b)
73+
74+
75+func H (b) = ("userFreePoints_" + b)
76+
77+
78+func I (z) = ("savedHealth_" + z)
79+
80+
81+func J (z) = ("savedLocation_" + z)
82+
83+
84+func K (z) = ("duckBuffs_" + z)
85+
86+
87+func L (z) = ("lastRobberyTime_" + z)
88+
89+
90+func M (z) = ("lastRobberyCost_" + z)
91+
92+
93+func N (O) = ("landRobberyState_" + O)
94+
95+
96+func P (O) = ("landCooldownETA_" + O)
97+
98+
99+func Q (z) = ("duckRobberyState_" + z)
100+
101+
102+func R (z) = ("lockedLandByDuck_" + z)
103+
104+
105+let S = 10000
106+
107+let T = 10000
108+
109+let U = 2000
110+
111+let V = 100000
110112
111113 let W = 1000000
112114
113-let X = 10000
114-
115-func Y (Z) = fraction(d, pow(Z, 4, e, 4, 4, DOWN), c)
116-
117-
118-func aa (ab) = (100 + ab)
119-
120-
121-func ac (ad,ae) = {
122- let af = Y(ae)
123-[af, (f * (af - ad))]
124- }
125-
126-
127-func ag (ah,x,ai,aj) = {
128- let ak = split(valueOrElse(getString(ah, y(x)), "0_0_0_0_0"), "_")
129- let al = valueOrElse(getInteger(ah, A(x)), 0)
130- let am = valueOrElse(getInteger(ah, w(x)), aa(al))
131- let an = split(valueOrElse(getString(ah, I(x)), "0_0_0_0_0"), "_")
132- ([parseIntValue(ak[j]), parseIntValue(ak[k]), parseIntValue(ak[l]), parseIntValue(ak[m]), parseIntValue(ak[n]), al, am] ++ (if (aj)
133- then [ai, ai, ai, ai, ai]
134- else [parseIntValue(an[j]), parseIntValue(an[k]), parseIntValue(an[l]), parseIntValue(an[m]), parseIntValue(an[n])]))
135- }
136-
137-
138-func ao (ah,x) = {
139- let ap = valueOrElse(getInteger(ah, K(x)), 0)
140- let aq = valueOrElse(getInteger(ah, J(x)), 0)
141- let ar = lastBlock.timestamp
142- let as = max([g, (ap - (h * (ar - aq)))])
143- $Tuple2(as, aq)
144- }
145-
146-
147-let at = "LAND"
148-
149-let au = "DUCK"
150-
151-let av = "PRESALE"
152-
153-let aw = 6
154-
155-let ax = 25
156-
157-let ay = 3456000
158-
159-let az = 86400000
160-
161-let aA = 10000000000
162-
163-let aB = "Africa_F_Africa"
164-
165-let aC = 39637
166-
167-let aD = 10
168-
169-let aE = ["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"]
170-
171-let aF = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
172-
173-let aG = 10000000
174-
175-let aH = [15, 16, 17, 18, 19, 20]
176-
177-let aI = ["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_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "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_"]
178-
179-let aJ = 6
180-
181-let aK = 8
182-
183-let aL = 9
184-
185-let aM = 10
186-
187-let aN = 10
188-
189-let aO = 0
190-
191-let aP = 1
192-
193-let aQ = 2
194-
195-let aR = 3
196-
197-let aS = 4
198-
199-let aT = 0
200-
201-let aU = 1
202-
203-let aV = 2
204-
205-let aW = 3
206-
207-let aX = 0
208-
209-let aY = 1
210-
211-let aZ = 2
212-
213-let ba = 3
214-
215-func bb (b) = ("lastTxIdByUser_" + b)
216-
217-
218-func bc (bd) = ("nftOwner_" + bd)
219-
220-
221-func be (bd) = ("landCustomNameByAssetId_" + bd)
222-
223-
224-func bf (bd) = ("stakedTime_" + bd)
225-
226-
227-func bg (bh,bd) = makeString(["landArtStatus", bh, bd], "_")
228-
229-
230-func bi (bj,bd,bk) = ((((("stakedTimeByTypeAssetIdAndOwner_" + bj) + "_") + bd) + "_") + bk)
231-
232-
233-func bl (M) = ("wareHouse_" + M)
234-
235-
236-func bm (bd) = ("infraLevel_" + bd)
237-
238-
239-func bn (M) = ("fortifications_" + M)
240-
241-
242-func bo (bd) = ("duckCustomNameByAssetId_" + bd)
243-
244-
245-func bp (b) = ("accountCustomNameByAddr_" + b)
246-
247-
248-func bq (b) = ("accRefBy_" + b)
249-
250-
251-func br (x) = ("onboardArtActivatedOnDuck_" + x)
252-
253-
254-func bs (b) = ("onboardArtActivatedDuckBy_" + b)
255-
256-
257-func bt (b) = ("accReferrals_" + b)
258-
259-
260-func bu (bd) = ("duckOwner_" + bd)
261-
262-
263-func bv (bk) = ("stakedDuckByOwner_" + bk)
264-
265-
266-func bw (x) = ("backPack_" + x)
267-
268-
269-func bx (x) = ("duckLocation_" + x)
270-
271-
272-func by () = "contractsBlocked"
273-
274-
275-func bz (bA) = ("%s%s__userGwlReleaseTime__" + bA)
276-
277-
278-func bB () = "emergencyWarehouseProducts"
279-
280-
281-let bC = "%s__lastTourId"
282-
283-func bD (bE) = ("%s%d__tourStaticData__" + toString(bE))
284-
285-
286-func bF (bE) = ("%s%d__tourDynamicData__" + toString(bE))
287-
288-
289-let bG = 0
290-
291-let bH = 1
292-
293-func bI (bJ,bE) = {
294- let bK = split(valueOrErrorMessage(getString(bJ, bD(bE)), (("Error reading tournament " + toString(bE)) + " data")), "__")
295- let bL = split(valueOrErrorMessage(getString(bJ, bF(bE)), (("Error reading tournament " + toString(bE)) + " data")), "__")
296-[bK, bL]
297- }
298-
299-
300-let bM = 6
301-
302-let bN = 1
303-
304-let bO = 3
305-
306-let bP = 0
307-
308-let bQ = 1
309-
310-let bR = 2
311-
312-func bS (bT) = (parseIntValue(bT[aJ]) * aG)
313-
314-
315-let bU = false
316-
317-let bV = false
318-
319-let bW = take(drop(this.bytes, 1), 1)
320-
321-let bX = {
322- let bY = bW
323- if ((base58'2W' == bY))
115+let X = 5000000
116+
117+let Y = 10000
118+
119+let Z = 1000000
120+
121+let aa = 1000000
122+
123+let ab = 10000
124+
125+func ac (ad) = fraction(d, pow(ad, 4, e, 4, 4, DOWN), c)
126+
127+
128+func ae (af) = (100 + af)
129+
130+
131+func ag (ah,ai) = {
132+ let aj = ac(ai)
133+[aj, (f * (aj - ah))]
134+ }
135+
136+
137+func ak (al,z,am,an) = {
138+ let ao = split(valueOrElse(getString(al, A(z)), "0_0_0_0_0"), "_")
139+ let ap = valueOrElse(getInteger(al, C(z)), 0)
140+ let aq = valueOrElse(getInteger(al, y(z)), ae(ap))
141+ let ar = split(valueOrElse(getString(al, K(z)), "0_0_0_0_0"), "_")
142+ ([parseIntValue(ao[j]), parseIntValue(ao[k]), parseIntValue(ao[l]), parseIntValue(ao[m]), parseIntValue(ao[n]), ap, aq] ++ (if (an)
143+ then [am, am, am, am, am]
144+ else [parseIntValue(ar[j]), parseIntValue(ar[k]), parseIntValue(ar[l]), parseIntValue(ar[m]), parseIntValue(ar[n])]))
145+ }
146+
147+
148+func as (al,z) = {
149+ let at = valueOrElse(getInteger(al, M(z)), 0)
150+ let au = valueOrElse(getInteger(al, L(z)), 0)
151+ let av = lastBlock.timestamp
152+ let aw = max([g, (at - (h * (av - au)))])
153+ let ax = valueOrElse(getInteger(al, Q(z)), 0)
154+ let ay = valueOrElse(getString(al, R(z)), "")
155+ let az = valueOrElse(getInteger(al, P(ay)), 0)
156+ $Tuple5(aw, au, ax, ay, az)
157+ }
158+
159+
160+let aA = "LAND"
161+
162+let aB = "DUCK"
163+
164+let aC = "PRESALE"
165+
166+let aD = 6
167+
168+let aE = 25
169+
170+let aF = 3456000
171+
172+let aG = 86400000
173+
174+let aH = 10000000000
175+
176+let aI = "Africa_F_Africa"
177+
178+let aJ = 39637
179+
180+let aK = 10
181+
182+let aL = ["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"]
183+
184+let aM = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
185+
186+let aN = 10000000
187+
188+let aO = [15, 16, 17, 18, 19, 20]
189+
190+let aP = ["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_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "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_"]
191+
192+let aQ = 6
193+
194+let aR = 8
195+
196+let aS = 9
197+
198+let aT = 10
199+
200+let aU = 10
201+
202+let aV = 0
203+
204+let aW = 1
205+
206+let aX = 2
207+
208+let aY = 3
209+
210+let aZ = 4
211+
212+let ba = 0
213+
214+let bb = 1
215+
216+let bc = 2
217+
218+let bd = 3
219+
220+let be = 0
221+
222+let bf = 1
223+
224+let bg = 2
225+
226+let bh = 3
227+
228+func bi (b) = ("lastTxIdByUser_" + b)
229+
230+
231+func bj (bk) = ("nftOwner_" + bk)
232+
233+
234+func bl (bk) = ("landCustomNameByAssetId_" + bk)
235+
236+
237+func bm (bk) = ("stakedTime_" + bk)
238+
239+
240+func bn (bo,bk) = makeString(["landArtStatus", bo, bk], "_")
241+
242+
243+func bp (bq,bk,br) = ((((("stakedTimeByTypeAssetIdAndOwner_" + bq) + "_") + bk) + "_") + br)
244+
245+
246+func bs (O) = ("wareHouse_" + O)
247+
248+
249+func bt (bk) = ("infraLevel_" + bk)
250+
251+
252+func bu (O) = ("fortifications_" + O)
253+
254+
255+func bv (bk) = ("duckCustomNameByAssetId_" + bk)
256+
257+
258+func bw (b) = ("accountCustomNameByAddr_" + b)
259+
260+
261+func bx (b) = ("accRefBy_" + b)
262+
263+
264+func by (z) = ("onboardArtActivatedOnDuck_" + z)
265+
266+
267+func bz (b) = ("onboardArtActivatedDuckBy_" + b)
268+
269+
270+func bA (b) = ("accReferrals_" + b)
271+
272+
273+func bB (bk) = ("duckOwner_" + bk)
274+
275+
276+func bC (br) = ("stakedDuckByOwner_" + br)
277+
278+
279+func bD (z) = ("backPack_" + z)
280+
281+
282+func bE (z) = ("duckLocation_" + z)
283+
284+
285+func bF () = "contractsBlocked"
286+
287+
288+func bG (bH) = ("%s%s__userGwlReleaseTime__" + bH)
289+
290+
291+func bI () = "emergencyWarehouseProducts"
292+
293+
294+let bJ = "%s__lastTourId"
295+
296+func bK (bL) = ("%s%d__tourStaticData__" + toString(bL))
297+
298+
299+func bM (bL) = ("%s%d__tourDynamicData__" + toString(bL))
300+
301+
302+let bN = 0
303+
304+let bO = 1
305+
306+func bP (bQ,bL) = {
307+ let bR = split(valueOrErrorMessage(getString(bQ, bK(bL)), (("Error reading tournament " + toString(bL)) + " data")), "__")
308+ let bS = split(valueOrErrorMessage(getString(bQ, bM(bL)), (("Error reading tournament " + toString(bL)) + " data")), "__")
309+[bR, bS]
310+ }
311+
312+
313+let bT = 6
314+
315+let bU = 1
316+
317+let bV = 3
318+
319+let bW = 0
320+
321+let bX = 1
322+
323+let bY = 2
324+
325+func bZ (ca) = (parseIntValue(ca[aQ]) * aN)
326+
327+
328+let cb = false
329+
330+let cc = false
331+
332+let cd = take(drop(this.bytes, 1), 1)
333+
334+let ce = {
335+ let cf = cd
336+ if ((base58'2W' == cf))
324337 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
325- else if ((base58'2T' == bY))
338+ else if ((base58'2T' == cf))
326339 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
327340 else throw("Unknown chain")
328341 }
329342
330-let bZ = {
331- let bY = bW
332- if ((base58'2W' == bY))
343+let cg = {
344+ let cf = cd
345+ if ((base58'2W' == cf))
333346 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
334- else if ((base58'2T' == bY))
347+ else if ((base58'2T' == cf))
335348 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
336349 else throw("Unknown chain")
337350 }
338351
339-let ca = {
340- let bY = bW
341- if ((base58'2W' == bY))
352+let ch = {
353+ let cf = cd
354+ if ((base58'2W' == cf))
342355 then 10000000000
343- else if ((base58'2T' == bY))
356+ else if ((base58'2T' == cf))
344357 then 100000000
345358 else throw("Unknown chain")
346359 }
347360
348-let cb = {
349- let bY = bW
350- if ((base58'2W' == bY))
361+let ci = {
362+ let cf = cd
363+ if ((base58'2W' == cf))
351364 then 86400000
352- else if ((base58'2T' == bY))
365+ else if ((base58'2T' == cf))
353366 then 60000
354367 else throw("Unknown chain")
355368 }
356369
357-let cc = "__"
358-
359-let cd = 1000000
360-
361-let ce = 100000000
362-
363-let cf = 25
364-
365-let cg = 100
366-
367-let ch = 225
368-
369-let ci = 400
370-
371-let cj = 625
372-
373-let ck = [0, 1, 2, 3, 4, 5]
374-
375-func cl (cm,cn) = valueOrErrorMessage(getString(cm, cn), makeString(["mandatory ", toString(cm), ".", cn, " is not defined"], ""))
376-
377-
378-let co = 1
379-
380-let cp = 2
381-
382-let cq = 3
383-
384-let cr = 4
385-
386-let cs = 7
387-
388-func ct () = "%s__restConfig"
389-
390-
391-func cu () = "%s__restAddr"
392-
393-
394-func cv (cw) = split_4C(cl(cw, ct()), cc)
395-
396-
397-func cx (cy,cz) = valueOrErrorMessage(addressFromString(cy[cz]), ("Rest cfg doesn't contain address at index " + toString(cz)))
398-
399-
400-let cA = addressFromStringValue(valueOrElse(getString(this, cu()), bZ))
401-
402-let cy = cv(cA)
403-
404-let ah = cx(cy, co)
405-
406-let cB = cx(cy, cp)
407-
408-let cC = cx(cy, cq)
409-
410-let cD = cx(cy, cr)
411-
412-let cE = cx(cy, cs)
413-
414-let cF = 0
415-
416-let cG = 1
417-
418-let cH = 2
419-
420-let cI = 3
421-
422-let cJ = "wlg_assetId"
423-
424-let cK = valueOrErrorMessage(getBinary(cD, cJ), "Not initialized yet")
425-
426-let cL = 2
427-
428-func cM (cm) = ("finishBlockForAddr_" + cm)
429-
430-
431-func cN () = "resTypesProportions"
432-
433-
434-func cO (cP) = ("resTypesByContinent_" + cP)
435-
436-
437-func cQ (bk) = ("stakedLandsByOwner_" + bk)
438-
439-
440-func cR (bk) = ("stakedPiecesByOwner_" + bk)
441-
442-
443-func cS (cT) = {
444- let bY = cT
445- if ($isInstanceOf(bY, "String"))
370+let cj = "__"
371+
372+let ck = 1000000
373+
374+let cl = 100000000
375+
376+let cm = 25
377+
378+let cn = 100
379+
380+let co = 225
381+
382+let cp = 400
383+
384+let cq = 625
385+
386+let cr = [0, 1, 2, 3, 4, 5]
387+
388+func cs (ct,cu) = valueOrErrorMessage(getString(ct, cu), makeString(["mandatory ", toString(ct), ".", cu, " is not defined"], ""))
389+
390+
391+let cv = 1
392+
393+let cw = 2
394+
395+let cx = 3
396+
397+let cy = 4
398+
399+let cz = 7
400+
401+func cA () = "%s__restConfig"
402+
403+
404+func cB () = "%s__restAddr"
405+
406+
407+func cC (cD) = split_4C(cs(cD, cA()), cj)
408+
409+
410+func cE (cF,cG) = valueOrErrorMessage(addressFromString(cF[cG]), ("Rest cfg doesn't contain address at index " + toString(cG)))
411+
412+
413+let cH = addressFromStringValue(valueOrElse(getString(this, cB()), cg))
414+
415+let cF = cC(cH)
416+
417+let al = cE(cF, cv)
418+
419+let cI = cE(cF, cw)
420+
421+let cJ = cE(cF, cx)
422+
423+let cK = cE(cF, cy)
424+
425+let cL = cE(cF, cz)
426+
427+let cM = 0
428+
429+let cN = 1
430+
431+let cO = 2
432+
433+let cP = 3
434+
435+let cQ = "wlg_assetId"
436+
437+let cR = valueOrErrorMessage(getBinary(cK, cQ), "Not initialized yet")
438+
439+let cS = 2
440+
441+func cT (ct) = ("finishBlockForAddr_" + ct)
442+
443+
444+func cU () = "resTypesProportions"
445+
446+
447+func cV (cW) = ("resTypesByContinent_" + cW)
448+
449+
450+func cX (br) = ("stakedLandsByOwner_" + br)
451+
452+
453+func cY (br) = ("stakedPiecesByOwner_" + br)
454+
455+
456+func cZ (da) = {
457+ let cf = da
458+ if ($isInstanceOf(cf, "String"))
446459 then {
447- let cU = bY
448- cU
460+ let db = cf
461+ db
449462 }
450463 else throw("fail to cast into String")
451464 }
452465
453466
454-func cV (cT) = {
455- let bY = cT
456- if ($isInstanceOf(bY, "Int"))
467+func dc (da) = {
468+ let cf = da
469+ if ($isInstanceOf(cf, "Int"))
457470 then {
458- let cW = bY
459- cW
471+ let dd = cf
472+ dd
460473 }
461474 else throw("fail to cast into Int")
462475 }
463476
464477
465-func cX (cY) = {
466- let bY = cY
467- if (("S" == bY))
468- then cf
469- else if (("M" == bY))
470- then cg
471- else if (("L" == bY))
472- then ch
473- else if (("XL" == bY))
474- then ci
475- else if (("XXL" == bY))
476- then cj
478+func de (df) = {
479+ let cf = df
480+ if (("S" == cf))
481+ then cm
482+ else if (("M" == cf))
483+ then cn
484+ else if (("L" == cf))
485+ then co
486+ else if (("XL" == cf))
487+ then cp
488+ else if (("XXL" == cf))
489+ then cq
477490 else throw("Unknown land size")
478491 }
479492
480493
481-func cZ (cU) = isDefined(parseInt(cU))
482-
483-
484-func da (db,dc,dd) = {
485- let de = value(blockInfoByHeight(dc))
486- let df = sha256((value(de.vrf) + dd))
487- (toInt(df) % db)
488- }
489-
490-
491-let dg = {
492- let bY = bW
493- if ((base58'2W' == bY))
494+func dg (db) = isDefined(parseInt(db))
495+
496+
497+func dh (di,dj,dk) = {
498+ let dl = value(blockInfoByHeight(dj))
499+ let dm = sha256((value(dl.vrf) + dk))
500+ (toInt(dm) % di)
501+ }
502+
503+
504+let dn = {
505+ let cf = cd
506+ if ((base58'2W' == cf))
494507 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
495- else if ((base58'2T' == bY))
508+ else if ((base58'2T' == cf))
496509 then this
497510 else throw("Unknown chain")
498511 }
499512
500-let dh = {
501- let bY = bW
502- if ((base58'2W' == bY))
513+let do = {
514+ let cf = cd
515+ if ((base58'2W' == cf))
503516 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
504- else if ((base58'2T' == bY))
517+ else if ((base58'2T' == cf))
505518 then this
506519 else throw("Unknown chain")
507520 }
508521
509-let di = {
510- let bY = bW
511- if ((base58'2W' == bY))
512- then if (bU)
522+let dp = {
523+ let cf = cd
524+ if ((base58'2W' == cf))
525+ then if (cb)
513526 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
514527 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
515- else if ((base58'2T' == bY))
528+ else if ((base58'2T' == cf))
516529 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
517530 else throw("Unknown chain")
518531 }
519532
520-let dj = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
521-
522-let dk = 300000
523-
524-let dl = 5000000
525-
526-let dm = 50
527-
528-let dn = 10000000
529-
530-let do = {
531- let bY = bW
532- if ((base58'2W' == bY))
533+let dq = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
534+
535+let dr = 300000
536+
537+let ds = 5000000
538+
539+let dt = 50
540+
541+let du = 10000000
542+
543+let dv = {
544+ let cf = cd
545+ if ((base58'2W' == cf))
533546 then 252289527462
534- else if ((base58'2T' == bY))
547+ else if ((base58'2T' == cf))
535548 then 2522895274
536549 else throw("Unknown chain")
537550 }
538551
539-let dp = {
540- let bY = bW
541- if ((base58'2W' == bY))
552+let dw = {
553+ let cf = cd
554+ if ((base58'2W' == cf))
542555 then 250000000
543- else if ((base58'2T' == bY))
556+ else if ((base58'2T' == cf))
544557 then 250000000
545558 else throw("Unknown chain")
546559 }
547560
548-let dq = toBigInt(5)
549-
550-let dr = toBigInt(20)
551-
552-let ds = toBigInt((20 * 20))
553-
554-let dt = toBigInt(((20 * 20) * 20))
555-
556-let du = toBigInt((((20 * 20) * 20) * 20))
557-
558-let dv = toBigInt(((((20 * 20) * 20) * 20) * 20))
559-
560-let dw = 500
561-
562-func dx () = "nextLandNum"
563-
564-
565-func dy (dz) = ("landByCustomName_" + dz)
566-
567-
568-func dA (dB) = ("landToAsset_" + dB)
569-
570-
571-func dC (bd,bk) = ((("infraLevelByAssetIdAndOwner_" + bd) + "_") + bk)
572-
573-
574-func dD (dB) = ("landOwner_" + dB)
575-
576-
577-func dE (dz) = ("duckByCustomName_" + dz)
578-
579-
580-func dF (dz) = ("accountByCustomName_" + dz)
581-
582-
583-func dG () = "oldiesList"
584-
585-
586-let dH = 0
587-
588-let dI = 1
589-
590-let dJ = 2
591-
592-let dK = 0
593-
594-let dL = 5
595-
596-let dM = 6
597-
598-let dN = 7
599-
600-func dO (dB,cY) = ((at + dB) + cY)
601-
602-
603-func dP (dQ,dR) = {
604- let dS = if ((dQ >= 0))
605- then (((dQ + dR) - 1) / dR)
606- else -((((-(dQ) + dR) - 1) / dR))
607- (dS * ce)
608- }
609-
610-
611-func dT (dU,dV) = {
612- let dW = (((((dV[0] + dV[1]) + dV[2]) + dV[3]) + dV[4]) + dV[5])
613- if ((0 >= dW))
561+let dx = toBigInt(5)
562+
563+let dy = toBigInt(20)
564+
565+let dz = toBigInt((20 * 20))
566+
567+let dA = toBigInt(((20 * 20) * 20))
568+
569+let dB = toBigInt((((20 * 20) * 20) * 20))
570+
571+let dC = toBigInt(((((20 * 20) * 20) * 20) * 20))
572+
573+let dD = 500
574+
575+func dE () = "nextLandNum"
576+
577+
578+func dF (dG) = ("landByCustomName_" + dG)
579+
580+
581+func dH (dI) = ("landToAsset_" + dI)
582+
583+
584+func dJ (bk,br) = ((("infraLevelByAssetIdAndOwner_" + bk) + "_") + br)
585+
586+
587+func dK (dI) = ("landOwner_" + dI)
588+
589+
590+func dL (dG) = ("duckByCustomName_" + dG)
591+
592+
593+func dM (dG) = ("accountByCustomName_" + dG)
594+
595+
596+func dN () = "oldiesList"
597+
598+
599+let dO = 0
600+
601+let dP = 1
602+
603+let dQ = 2
604+
605+let dR = 0
606+
607+let dS = 5
608+
609+let dT = 6
610+
611+let dU = 7
612+
613+func dV (dI,df) = ((aA + dI) + df)
614+
615+
616+func dW (dX,dY) = {
617+ let dZ = if ((dX >= 0))
618+ then (((dX + dY) - 1) / dY)
619+ else -((((-(dX) + dY) - 1) / dY))
620+ (dZ * cl)
621+ }
622+
623+
624+func ea (eb,ec) = {
625+ let ed = (((((ec[0] + ec[1]) + ec[2]) + ec[3]) + ec[4]) + ec[5])
626+ if ((0 >= ed))
614627 then throw("Zero weights sum")
615628 else {
616- let dX = fraction(dU, cd, dW)
617- func dY (dZ,ea) = (dZ :+ fraction(ea, dX, cd))
618-
619- let eb = dV
620- let ec = size(eb)
621- let ed = nil
622- func ee (ef,eg) = if ((eg >= ec))
623- then ef
624- else dY(ef, eb[eg])
625-
626- func eh (ef,eg) = if ((eg >= ec))
627- then ef
629+ let ee = fraction(eb, ck, ed)
630+ func ef (eg,eh) = (eg :+ fraction(eh, ee, ck))
631+
632+ let ei = ec
633+ let ej = size(ei)
634+ let ek = nil
635+ func el (em,en) = if ((en >= ej))
636+ then em
637+ else ef(em, ei[en])
638+
639+ func eo (em,en) = if ((en >= ej))
640+ then em
628641 else throw("List size exceeds 6")
629642
630- eh(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6)
631- }
632- }
633-
634-
635-func ei (dU) = {
636- let ej = split(value(getString(cN())), "_")
637- if ((size(ej) != aw))
643+ eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
644+ }
645+ }
646+
647+
648+func ep (eb) = {
649+ let eq = split(value(getString(cU())), "_")
650+ if ((size(eq) != aD))
638651 then throw("Wrong proportions data")
639652 else {
640- let ek = [parseIntValue(ej[0]), parseIntValue(ej[1]), parseIntValue(ej[2]), parseIntValue(ej[3]), parseIntValue(ej[4]), parseIntValue(ej[5])]
641- dT(dU, ek)
642- }
643- }
644-
645-
646-func el (em,en,eo) = {
647- let ep = ei(eo)
648- func eq (dZ,cz) = {
649- let er = (parseIntValue(en[cz]) - ep[cz])
650- if ((0 > er))
651- then throw(((((("Not enough material idx=" + toString(cz)) + ", you have ") + en[cz]) + ", but need ") + toString(ep[cz])))
652- else (dZ :+ toString(er))
653+ let er = [parseIntValue(eq[0]), parseIntValue(eq[1]), parseIntValue(eq[2]), parseIntValue(eq[3]), parseIntValue(eq[4]), parseIntValue(eq[5])]
654+ ea(eb, er)
655+ }
656+ }
657+
658+
659+func es (et,eu,ev) = {
660+ let ew = ep(ev)
661+ func ex (eg,cG) = {
662+ let ey = (parseIntValue(eu[cG]) - ew[cG])
663+ if ((0 > ey))
664+ then throw(((((("Not enough material idx=" + toString(cG)) + ", you have ") + eu[cG]) + ", but need ") + toString(ew[cG])))
665+ else (eg :+ toString(ey))
653666 }
654667
655- if (em)
668+ if (et)
656669 then {
657- let eb = ck
658- let ec = size(eb)
659- let ed = nil
660- func ee (ef,eg) = if ((eg >= ec))
661- then ef
662- else eq(ef, eb[eg])
663-
664- func eh (ef,eg) = if ((eg >= ec))
665- then ef
670+ let ei = cr
671+ let ej = size(ei)
672+ let ek = nil
673+ func el (em,en) = if ((en >= ej))
674+ then em
675+ else ex(em, ei[en])
676+
677+ func eo (em,en) = if ((en >= ej))
678+ then em
666679 else throw("List size exceeds 6")
667680
668- eh(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6)
669- }
670- else en
671- }
672-
673-
674-func es (et,eu) = if ((eu == ""))
675- then $Tuple2(et, false)
681+ eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
682+ }
683+ else eu
684+ }
685+
686+
687+func ez (eA,eB) = if ((eB == ""))
688+ then $Tuple2(eA, false)
676689 else {
677- func ev (dZ,ew) = {
678- let ex = split(ew, ",")
679- if ((size(ex) != 2))
690+ func eC (eg,eD) = {
691+ let eE = split(eD, ",")
692+ if ((size(eE) != 2))
680693 then throw("Incorrect format, should be index,amount")
681694 else {
682- let cz = parseIntValue(ex[0])
683- if (if ((0 > cz))
695+ let cG = parseIntValue(eE[0])
696+ if (if ((0 > cG))
684697 then true
685- else (cz >= size(aI)))
698+ else (cG >= size(aP)))
686699 then throw("Unknown product idx")
687700 else {
688- let ey = parseIntValue(ex[1])
689- let ez = split(dZ._1, (ex[0] + ":"))
690- if ((size(ez) != 2))
691- then throw((("You don't have " + aE[cz]) + " equipped"))
701+ let eF = parseIntValue(eE[1])
702+ let eG = split(eg._1, (eE[0] + ":"))
703+ if ((size(eG) != 2))
704+ then throw((("You don't have " + aL[cG]) + " equipped"))
692705 else {
693- let eA = ez[1]
694- let eB = if (cZ(take(drop(eA, 1), 1)))
706+ let eH = eG[1]
707+ let eI = if (dg(take(drop(eH, 1), 1)))
695708 then 2
696709 else 1
697- let eC = parseIntValue(take(eA, eB))
698- let eD = drop(eA, eB)
699- let eE = if ((eC >= ey))
700- then (eC - ey)
701- else throw(((((("You equipped " + toString(eC)) + " of ") + aE[cz]) + ", but tried to use ") + toString(ey)))
702- $Tuple2(((((ez[0] + ex[0]) + ":") + toString(eE)) + eD), if (dZ._2)
710+ let eJ = parseIntValue(take(eH, eI))
711+ let eK = drop(eH, eI)
712+ let eL = if ((eJ >= eF))
713+ then (eJ - eF)
714+ else throw(((((("You equipped " + toString(eJ)) + " of ") + aL[cG]) + ", but tried to use ") + toString(eF)))
715+ $Tuple2(((((eG[0] + eE[0]) + ":") + toString(eL)) + eK), if (eg._2)
703716 then true
704- else if (if ((cz >= 6))
705- then (8 >= cz)
717+ else if (if ((cG >= 6))
718+ then (8 >= cG)
706719 else false)
707- then (eE == 0)
720+ then (eL == 0)
708721 else false)
709722 }
710723 }
711724 }
712725 }
713726
714- let eb = split(eu, "_")
715- let ec = size(eb)
716- let ed = $Tuple2(et, false)
717- func ee (ef,eg) = if ((eg >= ec))
718- then ef
719- else ev(ef, eb[eg])
720-
721- func eh (ef,eg) = if ((eg >= ec))
722- then ef
727+ let ei = split(eB, "_")
728+ let ej = size(ei)
729+ let ek = $Tuple2(eA, false)
730+ func el (em,en) = if ((en >= ej))
731+ then em
732+ else eC(em, ei[en])
733+
734+ func eo (em,en) = if ((en >= ej))
735+ then em
723736 else throw("List size exceeds 10")
724737
725- eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
738+ eo(el(el(el(el(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
726739 }
727740
728741
729-func eF (eG) = {
730- let eH = if ((eG == ""))
742+func eM (eN) = {
743+ let eO = if ((eN == ""))
731744 then nil
732- else split_4C(eG, "_")
733- func eI (dZ,bT) = {
734- let eJ = (size(dZ) / 8)
735- let eC = if ((size(eH) > eJ))
736- then parseIntValue(eH[eJ])
745+ else split_4C(eN, "_")
746+ func eP (eg,ca) = {
747+ let eQ = (size(eg) / 8)
748+ let eJ = if ((size(eO) > eQ))
749+ then parseIntValue(eO[eQ])
737750 else 0
738- (dZ + toBytes(eC))
751+ (eg + toBytes(eJ))
739752 }
740753
741- let eb = aI
742- let ec = size(eb)
743- let ed = base58''
744- func ee (ef,eg) = if ((eg >= ec))
745- then ef
746- else eI(ef, eb[eg])
747-
748- func eh (ef,eg) = if ((eg >= ec))
749- then ef
754+ let ei = aP
755+ let ej = size(ei)
756+ let ek = base58''
757+ func el (em,en) = if ((en >= ej))
758+ then em
759+ else eP(em, ei[en])
760+
761+ func eo (em,en) = if ((en >= ej))
762+ then em
750763 else throw("List size exceeds 50")
751764
752- eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 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)
753- }
754-
755-
756-func eK (eL) = {
757- func eM (dZ,bT) = {
758- let eJ = size(dZ)
759- let eN = take(drop(eL, (8 * eJ)), 8)
760- (dZ :+ toString(toInt(eN)))
765+ eo(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(ek, 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)
766+ }
767+
768+
769+func eR (eS) = {
770+ func eT (eg,ca) = {
771+ let eQ = size(eg)
772+ let eU = take(drop(eS, (8 * eQ)), 8)
773+ (eg :+ toString(toInt(eU)))
761774 }
762775
763776 makeString_2C({
764- let eb = aI
765- let ec = size(eb)
766- let ed = nil
767- func ee (ef,eg) = if ((eg >= ec))
768- then ef
769- else eM(ef, eb[eg])
770-
771- func eh (ef,eg) = if ((eg >= ec))
772- then ef
777+ let ei = aP
778+ let ej = size(ei)
779+ let ek = nil
780+ func el (em,en) = if ((en >= ej))
781+ then em
782+ else eT(em, ei[en])
783+
784+ func eo (em,en) = if ((en >= ej))
785+ then em
773786 else throw("List size exceeds 50")
774787
775- eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 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)
788+ eo(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(ek, 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)
776789 }, "_")
777790 }
778791
779792
780-func eO (eP,eQ) = {
781- func eR (dZ,eJ) = {
782- let eS = if ((size(eP) > (7 + eJ)))
783- then eP[(7 + eJ)]
793+func eV (eW,eX) = {
794+ func eY (eg,eQ) = {
795+ let eZ = if ((size(eW) > (7 + eQ)))
796+ then eW[(7 + eQ)]
784797 else 0
785- if ((parseIntValue(eQ[eJ]) > (eP[eJ] + eS)))
786- then throw(("Requirement not satisfied: " + i[eJ]))
798+ if ((parseIntValue(eX[eQ]) > (eW[eQ] + eZ)))
799+ then throw(("Requirement not satisfied: " + i[eQ]))
787800 else true
788801 }
789802
790- let eb = [0, 1, 2, 3, 4, 5, 6]
791- let ec = size(eb)
792- let ed = false
793- func ee (ef,eg) = if ((eg >= ec))
794- then ef
795- else eR(ef, eb[eg])
796-
797- func eh (ef,eg) = if ((eg >= ec))
798- then ef
803+ let ei = [0, 1, 2, 3, 4, 5, 6]
804+ let ej = size(ei)
805+ let ek = false
806+ func el (em,en) = if ((en >= ej))
807+ then em
808+ else eY(em, ei[en])
809+
810+ func eo (em,en) = if ((en >= ej))
811+ then em
799812 else throw("List size exceeds 7")
800813
801- eh(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7)
802- }
803-
804-
805-func eT (eU,eH,eV,eP,eW,eX) = {
806- let ex = split(eU, ":")
807- if ((size(ex) != 2))
814+ eo(el(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6), 7)
815+ }
816+
817+
818+func fa (fb,eO,fc,eW,fd,fe) = {
819+ let eE = split(fb, ":")
820+ if ((size(eE) != 2))
808821 then throw("Incorrect format, should be index:amount")
809- else if (if (!(eV))
810- then (size(ex[0]) != 2)
822+ else if (if (!(fc))
823+ then (size(eE[0]) != 2)
811824 else false)
812825 then throw("Product idx should be 2 digits, zero padded")
813826 else {
814- let eY = parseIntValue(ex[0])
815- let eZ = parseIntValue(ex[1])
816- if (!(containsElement(aH, eY)))
817- then throw((("Product '" + aE[eY]) + "' cannot be used for land defense"))
818- else if ((0 > eZ))
827+ let ff = parseIntValue(eE[0])
828+ let fg = parseIntValue(eE[1])
829+ if (!(containsElement(aO, ff)))
830+ then throw((("Product '" + aL[ff]) + "' cannot be used for land defense"))
831+ else if ((0 > fg))
819832 then throw("Count can't be negative")
820- else if ((eZ > s))
821- then throw(((("Can't put more than " + toString(s)) + " of ") + aE[eY]))
822- else if ((eZ == 0))
823- then $Tuple3(eH, eW, eX)
833+ else if ((fg > s))
834+ then throw(((("Can't put more than " + toString(s)) + " of ") + aL[ff]))
835+ else if ((fg == 0))
836+ then $Tuple3(eO, fd, fe)
824837 else {
825- let fa = take(eH, (8 * eY))
826- let eC = toInt(take(drop(eH, (8 * eY)), 8))
827- let eD = drop(eH, (8 * (eY + 1)))
828- let bT = split(aI[eY], "_")
829- if (if (!(eV))
830- then (eZ > eC)
838+ let fh = take(eO, (8 * ff))
839+ let eJ = toInt(take(drop(eO, (8 * ff)), 8))
840+ let eK = drop(eO, (8 * (ff + 1)))
841+ let ca = split(aP[ff], "_")
842+ if (if (!(fc))
843+ then (fg > eJ)
831844 else false)
832- then throw(((((("You have " + toString(eC)) + " of ") + aE[eY]) + ", but tried to use ") + toString(eZ)))
845+ then throw(((((("You have " + toString(eJ)) + " of ") + aL[ff]) + ", but tried to use ") + toString(fg)))
833846 else {
834- let eE = if (if (!(eV))
835- then eO(eP, split(bT[aL], ","))
847+ let eL = if (if (!(fc))
848+ then eV(eW, split(ca[aS], ","))
836849 else false)
837- then (eC - eZ)
838- else (eC + eZ)
839- let fb = (dP(eE, aN) - dP(eC, aN))
840- $Tuple3(((fa + toBytes(eE)) + eD), (eW + fb), (eX - fb))
850+ then (eJ - fg)
851+ else (eJ + fg)
852+ let fi = (dW(eL, aU) - dW(eJ, aU))
853+ $Tuple3(((fh + toBytes(eL)) + eK), (fd + fi), (fe - fi))
841854 }
842855 }
843856 }
844857 }
845858
846859
847-func fc (eU,eH,eV,fd,fe,ff,eP) = {
848- let ex = split(eU, ":")
849- if ((size(ex) != 2))
860+func fj (fb,eO,fc,fk,fl,fm,eW) = {
861+ let eE = split(fb, ":")
862+ if ((size(eE) != 2))
850863 then throw("Incorrect format, should be index:amount")
851- else if (if (!(eV))
852- then (size(ex[0]) != 2)
864+ else if (if (!(fc))
865+ then (size(eE[0]) != 2)
853866 else false)
854867 then throw("Product idx should be 2 digits, zero padded")
855868 else {
856- let eY = parseIntValue(ex[0])
857- let eZ = parseIntValue(ex[1])
858- if (if ((0 > eY))
869+ let ff = parseIntValue(eE[0])
870+ let fg = parseIntValue(eE[1])
871+ if (if ((0 > ff))
859872 then true
860- else (eY >= size(aI)))
873+ else (ff >= size(aP)))
861874 then throw("Unknown product idx")
862- else if ((0 > eZ))
875+ else if ((0 > fg))
863876 then throw("Count can't be negative")
864- else if ((eZ > s))
865- then throw(((("Can't put more than " + toString(s)) + " of ") + aE[eY]))
866- else if ((eZ == 0))
867- then $Tuple2(eH, false)
877+ else if ((fg > s))
878+ then throw(((("Can't put more than " + toString(s)) + " of ") + aL[ff]))
879+ else if ((fg == 0))
880+ then $Tuple2(eO, false)
868881 else {
869- let fa = take(eH, (8 * eY))
870- let eC = toInt(take(drop(eH, (8 * eY)), 8))
871- let eD = drop(eH, (8 * (eY + 1)))
872- let bT = split(aI[eY], "_")
873- if (if (!(eV))
874- then (eZ > eC)
882+ let fh = take(eO, (8 * ff))
883+ let eJ = toInt(take(drop(eO, (8 * ff)), 8))
884+ let eK = drop(eO, (8 * (ff + 1)))
885+ let ca = split(aP[ff], "_")
886+ if (if (!(fc))
887+ then (fg > eJ)
875888 else false)
876- then throw(((((("You have " + toString(eC)) + " of ") + aE[eY]) + ", but tried to use ") + toString(eZ)))
889+ then throw(((((("You have " + toString(eJ)) + " of ") + aL[ff]) + ", but tried to use ") + toString(fg)))
877890 else {
878- let fg = if (if (!(eV))
879- then eO(eP, split(bT[aL], ","))
891+ let fn = if (if (!(fc))
892+ then eV(eW, split(ca[aS], ","))
880893 else false)
881894 then {
882- let fh = bT[aM]
883- if ((fh == ""))
895+ let fo = ca[aT]
896+ if ((fo == ""))
884897 then throw("Item cannot be equipped")
885898 else {
886- let fi = parseIntValue(fh)
887- let fj = (fi / 100)
888- if ((fd != fj))
899+ let fp = parseIntValue(fo)
900+ let fq = (fp / 100)
901+ if ((fk != fq))
889902 then throw("Segment incompatible")
890903 else {
891- let fk = ((fi % 100) / 10)
892- if ((fe != fk))
904+ let fr = ((fp % 100) / 10)
905+ if ((fl != fr))
893906 then throw("Slot incompatible")
894907 else {
895- let fl = (fi % 10)
896- if (if ((ff != 0))
897- then (fl > 1)
908+ let fs = (fp % 10)
909+ if (if ((fm != 0))
910+ then (fs > 1)
898911 else false)
899912 then throw("Big items should occupy slot 0")
900- else (fl > 1)
913+ else (fs > 1)
901914 }
902915 }
903916 }
904917 }
905918 else false
906- $Tuple2(((fa + toBytes((eC + (if (eV)
907- then eZ
908- else -(eZ))))) + eD), fg)
919+ $Tuple2(((fh + toBytes((eJ + (if (fc)
920+ then fg
921+ else -(fg))))) + eK), fn)
909922 }
910923 }
911924 }
912925 }
913926
914927
915-func fm (fn,fo,eV,fd,fe,fp) = if ((fn != ""))
928+func ft (fu,fv,fc,fk,fl,fw) = if ((fu != ""))
916929 then {
917- let fq = split(fn, ",")
918- if ((size(fq) > r))
930+ let fx = split(fu, ",")
931+ if ((size(fx) > r))
919932 then throw("Wrong slots format")
920933 else {
921- let fr = fq[0]
922- let fs = if ((size(fq) > 1))
923- then fq[1]
934+ let fy = fx[0]
935+ let fz = if ((size(fx) > 1))
936+ then fx[1]
924937 else ""
925- if (if ((fr == ""))
926- then (fs == "")
938+ if (if ((fy == ""))
939+ then (fz == "")
927940 else false)
928- then fo
941+ then fv
929942 else {
930- let ft = if ((fr != ""))
931- then fc(fr, fo, eV, fd, fe, 0, fp)
932- else $Tuple2(fo, false)
933- if ((fs != ""))
934- then if (ft._2)
943+ let fA = if ((fy != ""))
944+ then fj(fy, fv, fc, fk, fl, 0, fw)
945+ else $Tuple2(fv, false)
946+ if ((fz != ""))
947+ then if (fA._2)
935948 then throw("Big item already occupies slot")
936- else fc(fs, ft._1, eV, fd, fe, 1, fp)._1
937- else ft._1
949+ else fj(fz, fA._1, fc, fk, fl, 1, fw)._1
950+ else fA._1
938951 }
939952 }
940953 }
941- else fo
942-
943-
944-func fu (fv,fw,eV,fp) = {
945- func fd (dZ,fx) = {
946- let eJ = dZ._1
947- let fe = split(fx, ";")
948- if ((size(fe) != q))
954+ else fv
955+
956+
957+func fB (fC,fD,fc,fw) = {
958+ func fk (eg,fE) = {
959+ let eQ = eg._1
960+ let fl = split(fE, ";")
961+ if ((size(fl) != q))
949962 then throw("Wrong segment format")
950963 else {
951- let fy = fe[0]
952- let fz = fe[1]
953- if (if ((fy == ""))
954- then (fz == "")
964+ let fF = fl[0]
965+ let fG = fl[1]
966+ if (if ((fF == ""))
967+ then (fG == "")
955968 else false)
956- then $Tuple2((eJ + 1), dZ._2)
969+ then $Tuple2((eQ + 1), eg._2)
957970 else {
958- let fA = fm(fy, dZ._2, eV, eJ, 0, fp)
959- $Tuple2((eJ + 1), fm(fz, fA, eV, eJ, 1, fp))
971+ let fH = ft(fF, eg._2, fc, eQ, 0, fw)
972+ $Tuple2((eQ + 1), ft(fG, fH, fc, eQ, 1, fw))
960973 }
961974 }
962975 }
963976
964-( let eb = fv
965- let ec = size(eb)
966- let ed = $Tuple2(0, fw)
967- func ee (ef,eg) = if ((eg >= ec))
968- then ef
969- else fd(ef, eb[eg])
970-
971- func eh (ef,eg) = if ((eg >= ec))
972- then ef
977+( let ei = fC
978+ let ej = size(ei)
979+ let ek = $Tuple2(0, fD)
980+ func el (em,en) = if ((en >= ej))
981+ then em
982+ else fk(em, ei[en])
983+
984+ func eo (em,en) = if ((en >= ej))
985+ then em
973986 else throw("List size exceeds 6")
974987
975- eh(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6))._2
976- }
977-
978-
979-func fB (fv,fw,eW,eX,eV,eP) = if ((3 > size(fv)))
988+ eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6))._2
989+ }
990+
991+
992+func fI (fC,fD,fd,fe,fc,eW) = if ((3 > size(fC)))
980993 then throw("At least duck, mines and traps parts are required")
981994 else {
982- func fd (dZ,fx) = {
983- let eJ = dZ._1
984- if ((eJ == 0))
985- then $Tuple4((eJ + 1), dZ._2, dZ._3, dZ._4)
995+ func fk (eg,fE) = {
996+ let eQ = eg._1
997+ if ((eQ == 0))
998+ then $Tuple4((eQ + 1), eg._2, eg._3, eg._4)
986999 else {
987- let fC = eT(fx, dZ._2, eV, eP, dZ._3, dZ._4)
988- $Tuple4((eJ + 1), fC._1, fC._2, fC._3)
1000+ let fJ = fa(fE, eg._2, fc, eW, eg._3, eg._4)
1001+ $Tuple4((eQ + 1), fJ._1, fJ._2, fJ._3)
9891002 }
9901003 }
9911004
992- let fD = {
993- let eb = fv
994- let ec = size(eb)
995- let ed = $Tuple4(0, fw, eW, eX)
996- func ee (ef,eg) = if ((eg >= ec))
997- then ef
998- else fd(ef, eb[eg])
999-
1000- func eh (ef,eg) = if ((eg >= ec))
1001- then ef
1005+ let fK = {
1006+ let ei = fC
1007+ let ej = size(ei)
1008+ let ek = $Tuple4(0, fD, fd, fe)
1009+ func el (em,en) = if ((en >= ej))
1010+ then em
1011+ else fk(em, ei[en])
1012+
1013+ func eo (em,en) = if ((en >= ej))
1014+ then em
10021015 else throw("List size exceeds 10")
10031016
1004- eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1005- }
1006- $Tuple3(fD._2, fD._3, fD._4)
1017+ eo(el(el(el(el(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1018+ }
1019+ $Tuple3(fK._2, fK._3, fK._4)
10071020 }
10081021
10091022
1010-func fE (x) = {
1011- let fF = C(x)
1012- let fG = split(valueOrElse(getString(fF), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1013- let fH = fu(fG, dj, true, nil)
1014- let fI = split(fG[o], ";")[1]
1015- let ai = if ((fI == ""))
1023+func fL (z) = {
1024+ let fM = E(z)
1025+ let fN = split(valueOrElse(getString(fM), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1026+ let fO = fB(fN, dq, true, nil)
1027+ let fP = split(fN[o], ";")[1]
1028+ let am = if ((fP == ""))
10161029 then 0
10171030 else {
1018- let fJ = split(fI, ",")[0]
1019- if ((fJ == ""))
1031+ let fQ = split(fP, ",")[0]
1032+ if ((fQ == ""))
10201033 then 0
10211034 else {
1022- let eU = split(fJ, ":")
1023- let cz = eU[0]
1024- let fK = eU[1]
1025- if (if (if (if (if ((cz == "06"))
1035+ let fb = split(fQ, ":")
1036+ let cG = fb[0]
1037+ let fR = fb[1]
1038+ if (if (if (if (if ((cG == "06"))
10261039 then true
1027- else (cz == "07"))
1040+ else (cG == "07"))
10281041 then true
1029- else (cz == "08"))
1030- then (fK != "")
1042+ else (cG == "08"))
1043+ then (fR != "")
10311044 else false)
1032- then (parseIntValue(fK) > 0)
1045+ then (parseIntValue(fR) > 0)
10331046 else false)
1034- then parseIntValue(split(aI[parseIntValue(cz)], "_")[aK])
1047+ then parseIntValue(split(aP[parseIntValue(cG)], "_")[aR])
10351048 else 0
10361049 }
10371050 }
1038- let fp = ag(this, x, ai, true)
1039- let fL = fu(fG, fH, false, fp)
1040- (fL == fL)
1041- }
1042-
1043-
1044-func fM (fN,fO,fP,fQ) = if ((size(fN) != aw))
1051+ let fw = ak(this, z, am, true)
1052+ let fS = fB(fN, fO, false, fw)
1053+ (fS == fS)
1054+ }
1055+
1056+
1057+func fT (fU,fV,fW,fX) = if ((size(fU) != aD))
10451058 then throw("Wrong proportions data")
10461059 else {
1047- func fR (dZ,fS) = {
1048- let er = (parseIntValue(fN[fS]) + ((fQ * fO[fS]) * fP))
1049- if ((0 > er))
1050- then throw(((((((("Panic! Pieces of type=" + toString(fS)) + ", sign=") + toString(fQ)) + ", terrainCounts[i]=") + toString(fO[fS])) + ", landSizeIndex=") + toString(fP)))
1051- else (dZ :+ toString(er))
1052- }
1053-
1054- let eb = ck
1055- let ec = size(eb)
1056- let ed = nil
1057- func ee (ef,eg) = if ((eg >= ec))
1058- then ef
1059- else fR(ef, eb[eg])
1060-
1061- func eh (ef,eg) = if ((eg >= ec))
1062- then ef
1060+ func fY (eg,fZ) = {
1061+ let ey = (parseIntValue(fU[fZ]) + ((fX * fV[fZ]) * fW))
1062+ if ((0 > ey))
1063+ then throw(((((((("Panic! Pieces of type=" + toString(fZ)) + ", sign=") + toString(fX)) + ", terrainCounts[i]=") + toString(fV[fZ])) + ", landSizeIndex=") + toString(fW)))
1064+ else (eg :+ toString(ey))
1065+ }
1066+
1067+ let ei = cr
1068+ let ej = size(ei)
1069+ let ek = nil
1070+ func el (em,en) = if ((en >= ej))
1071+ then em
1072+ else fY(em, ei[en])
1073+
1074+ func eo (em,en) = if ((en >= ej))
1075+ then em
10631076 else throw("List size exceeds 6")
10641077
1065- eh(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6)
1078+ eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
10661079 }
10671080
10681081
1069-func fT (fO,fP,fQ) = {
1070- let fN = split(valueOrElse(getString(cN()), "0_0_0_0_0_0"), "_")
1071- makeString(fM(fN, fO, fP, fQ), "_")
1072- }
1073-
1074-
1075-func fU (fV) = [(size(split(fV, "A")) - 1), (size(split(fV, "B")) - 1), (size(split(fV, "C")) - 1), (size(split(fV, "D")) - 1), (size(split(fV, "E")) - 1), (size(split(fV, "F")) - 1)]
1076-
1077-
1078-func fW (fX,fO,fY,fP,fZ) = {
1079- func ga (dZ,fS) = {
1080- let gb = ((fraction(fY, fZ, az) * fO[fS]) * fP)
1081- (dZ :+ toString((parseIntValue(fX[fS]) + gb)))
1082+func ga (fV,fW,fX) = {
1083+ let fU = split(valueOrElse(getString(cU()), "0_0_0_0_0_0"), "_")
1084+ makeString(fT(fU, fV, fW, fX), "_")
1085+ }
1086+
1087+
1088+func gb (gc) = [(size(split(gc, "A")) - 1), (size(split(gc, "B")) - 1), (size(split(gc, "C")) - 1), (size(split(gc, "D")) - 1), (size(split(gc, "E")) - 1), (size(split(gc, "F")) - 1)]
1089+
1090+
1091+func gd (ge,fV,gf,fW,gg) = {
1092+ func gh (eg,fZ) = {
1093+ let gi = ((fraction(gf, gg, aG) * fV[fZ]) * fW)
1094+ (eg :+ toString((parseIntValue(ge[fZ]) + gi)))
10821095 }
10831096
1084- let ek = {
1085- let eb = ck
1086- let ec = size(eb)
1087- let ed = nil
1088- func ee (ef,eg) = if ((eg >= ec))
1089- then ef
1090- else ga(ef, eb[eg])
1091-
1092- func eh (ef,eg) = if ((eg >= ec))
1093- then ef
1097+ let er = {
1098+ let ei = cr
1099+ let ej = size(ei)
1100+ let ek = nil
1101+ func el (em,en) = if ((en >= ej))
1102+ then em
1103+ else gh(em, ei[en])
1104+
1105+ func eo (em,en) = if ((en >= ej))
1106+ then em
10941107 else throw("List size exceeds 6")
10951108
1096- eh(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6)
1109+ eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
10971110 }
1098- makeString(ek, "_")
1099- }
1100-
1101-
1102-func gc (fO,fY,fP,fZ) = {
1103- func ga (dZ,fS) = {
1104- let gb = ((fraction(fY, fZ, az) * fO[fS]) * fP)
1105- $Tuple2((dZ._1 :+ gb), (dZ._2 + gb))
1111+ makeString(er, "_")
1112+ }
1113+
1114+
1115+func gj (fV,gf,fW,gg) = {
1116+ func gh (eg,fZ) = {
1117+ let gi = ((fraction(gf, gg, aG) * fV[fZ]) * fW)
1118+ $Tuple2((eg._1 :+ gi), (eg._2 + gi))
11061119 }
11071120
1108- let eb = ck
1109- let ec = size(eb)
1110- let ed = $Tuple2(nil, 0)
1111- func ee (ef,eg) = if ((eg >= ec))
1112- then ef
1113- else ga(ef, eb[eg])
1114-
1115- func eh (ef,eg) = if ((eg >= ec))
1116- then ef
1121+ let ei = cr
1122+ let ej = size(ei)
1123+ let ek = $Tuple2(nil, 0)
1124+ func el (em,en) = if ((en >= ej))
1125+ then em
1126+ else gh(em, ei[en])
1127+
1128+ func eo (em,en) = if ((en >= ej))
1129+ then em
11171130 else throw("List size exceeds 6")
11181131
1119- eh(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6)
1120- }
1121-
1122-
1123-func gd (ge,gf,gg,gh) = {
1124- let gi = gg._1
1125- let gj = gg._2
1126- if ((gj == 0))
1127- then $Tuple2(makeString(ge, "_"), makeString(gf, "_"))
1128- else if ((gh >= gj))
1132+ eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
1133+ }
1134+
1135+
1136+func gk (gl,gm,gn,go) = {
1137+ let gp = gn._1
1138+ let gq = gn._2
1139+ if ((gq == 0))
1140+ then $Tuple2(makeString(gl, "_"), makeString(gm, "_"))
1141+ else if ((go >= gq))
11291142 then {
1130- func gk (dZ,fS) = (dZ :+ toString((parseIntValue(ge[fS]) + gi[fS])))
1131-
1132- let ek = {
1133- let eb = ck
1134- let ec = size(eb)
1135- let ed = nil
1136- func ee (ef,eg) = if ((eg >= ec))
1137- then ef
1138- else gk(ef, eb[eg])
1139-
1140- func eh (ef,eg) = if ((eg >= ec))
1141- then ef
1143+ func gr (eg,fZ) = (eg :+ toString((parseIntValue(gl[fZ]) + gp[fZ])))
1144+
1145+ let er = {
1146+ let ei = cr
1147+ let ej = size(ei)
1148+ let ek = nil
1149+ func el (em,en) = if ((en >= ej))
1150+ then em
1151+ else gr(em, ei[en])
1152+
1153+ func eo (em,en) = if ((en >= ej))
1154+ then em
11421155 else throw("List size exceeds 6")
11431156
1144- eh(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6)
1157+ eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
11451158 }
1146- $Tuple2(makeString(ek, "_"), makeString(gf, "_"))
1159+ $Tuple2(makeString(er, "_"), makeString(gm, "_"))
11471160 }
11481161 else {
1149- func gl (dZ,fS) = {
1150- let gm = fraction(gi[fS], gh, gj)
1151- $Tuple2((dZ._1 :+ toString((parseIntValue(ge[fS]) + gm))), (dZ._2 :+ toString(((parseIntValue(gf[fS]) + gi[fS]) - gm))))
1162+ func gs (eg,fZ) = {
1163+ let gt = fraction(gp[fZ], go, gq)
1164+ $Tuple2((eg._1 :+ toString((parseIntValue(gl[fZ]) + gt))), (eg._2 :+ toString(((parseIntValue(gm[fZ]) + gp[fZ]) - gt))))
11521165 }
11531166
1154- let ek = {
1155- let eb = ck
1156- let ec = size(eb)
1157- let ed = $Tuple2(nil, nil)
1158- func ee (ef,eg) = if ((eg >= ec))
1159- then ef
1160- else gl(ef, eb[eg])
1161-
1162- func eh (ef,eg) = if ((eg >= ec))
1163- then ef
1167+ let er = {
1168+ let ei = cr
1169+ let ej = size(ei)
1170+ let ek = $Tuple2(nil, nil)
1171+ func el (em,en) = if ((en >= ej))
1172+ then em
1173+ else gs(em, ei[en])
1174+
1175+ func eo (em,en) = if ((en >= ej))
1176+ then em
11641177 else throw("List size exceeds 6")
11651178
1166- eh(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6)
1179+ eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
11671180 }
1168- $Tuple2(makeString(ek._1, "_"), makeString(ek._2, "_"))
1181+ $Tuple2(makeString(er._1, "_"), makeString(er._2, "_"))
11691182 }
11701183 }
11711184
11721185
1173-func gn (go) = if ((go >= toBigInt(0)))
1174- then go
1175- else -(go)
1176-
1177-
1178-let gp = [[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]]
1179-
1180-func gq (cW,gr) = {
1181- let gs = toInt((cW % dr))
1182- let gt = if ((gr[0] > gs))
1186+func gu (gv) = if ((gv >= toBigInt(0)))
1187+ then gv
1188+ else -(gv)
1189+
1190+
1191+let gw = [[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]]
1192+
1193+func gx (dd,gy) = {
1194+ let gz = toInt((dd % dy))
1195+ let gA = if ((gy[0] > gz))
11831196 then "A"
1184- else if ((gr[1] > gs))
1197+ else if ((gy[1] > gz))
11851198 then "B"
1186- else if ((gr[2] > gs))
1199+ else if ((gy[2] > gz))
11871200 then "C"
1188- else if ((gr[3] > gs))
1201+ else if ((gy[3] > gz))
11891202 then "D"
1190- else if ((gr[4] > gs))
1203+ else if ((gy[4] > gz))
11911204 then "E"
11921205 else "F"
1193- gt
1194- }
1195-
1196-
1197-func gu (gv,gw) = {
1198- let gx = gp[gw]
1199- func gy (dZ,ea) = $Tuple2((((((dZ._1 + gq(dZ._2, gx)) + gq((dZ._2 / dr), gx)) + gq((dZ._2 / ds), gx)) + gq((dZ._2 / dt), gx)) + gq((dZ._2 / du), gx)), (dZ._2 / dv))
1200-
1201- let fD = {
1202- let eb = [1, 2, 3, 4, 5]
1203- let ec = size(eb)
1204- let ed = $Tuple2("", (gv / dq))
1205- func ee (ef,eg) = if ((eg >= ec))
1206- then ef
1207- else gy(ef, eb[eg])
1208-
1209- func eh (ef,eg) = if ((eg >= ec))
1210- then ef
1206+ gA
1207+ }
1208+
1209+
1210+func gB (gC,gD) = {
1211+ let gE = gw[gD]
1212+ func gF (eg,eh) = $Tuple2((((((eg._1 + gx(eg._2, gE)) + gx((eg._2 / dy), gE)) + gx((eg._2 / dz), gE)) + gx((eg._2 / dA), gE)) + gx((eg._2 / dB), gE)), (eg._2 / dC))
1213+
1214+ let fK = {
1215+ let ei = [1, 2, 3, 4, 5]
1216+ let ej = size(ei)
1217+ let ek = $Tuple2("", (gC / dx))
1218+ func el (em,en) = if ((en >= ej))
1219+ then em
1220+ else gF(em, ei[en])
1221+
1222+ func eo (em,en) = if ((en >= ej))
1223+ then em
12111224 else throw("List size exceeds 5")
12121225
1213- eh(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5)
1226+ eo(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5)
12141227 }
1215- fD._1
1216- }
1217-
1218-
1219-let gz = [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]
1220-
1221-let gA = ["A", "B", "C", "D", "E", "F"]
1222-
1223-func gB (gC,fP) = {
1224- func gD (dZ,cU) = {
1225- let eJ = dZ._2
1226- let gE = parseIntValue(cU)
1227- let go = if ((gE == 0))
1228+ fK._1
1229+ }
1230+
1231+
1232+let gG = [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]
1233+
1234+let gH = ["A", "B", "C", "D", "E", "F"]
1235+
1236+func gI (gJ,fW) = {
1237+ func gK (eg,db) = {
1238+ let eQ = eg._2
1239+ let gL = parseIntValue(db)
1240+ let gv = if ((gL == 0))
12281241 then 0
1229- else if ((gE >= (4 * fP)))
1230- then (gE / fP)
1231- else if ((gE > (3 * fP)))
1242+ else if ((gL >= (4 * fW)))
1243+ then (gL / fW)
1244+ else if ((gL > (3 * fW)))
12321245 then 3
1233- else (((gE - 1) / fP) + 1)
1234- $Tuple3((dZ._1 :+ go), (dZ._2 + 1), (dZ._3 + go))
1246+ else (((gL - 1) / fW) + 1)
1247+ $Tuple3((eg._1 :+ gv), (eg._2 + 1), (eg._3 + gv))
12351248 }
12361249
1237- let fD = {
1238- let eb = gC
1239- let ec = size(eb)
1240- let ed = $Tuple3(nil, 0, 0)
1241- func ee (ef,eg) = if ((eg >= ec))
1242- then ef
1243- else gD(ef, eb[eg])
1244-
1245- func eh (ef,eg) = if ((eg >= ec))
1246- then ef
1250+ let fK = {
1251+ let ei = gJ
1252+ let ej = size(ei)
1253+ let ek = $Tuple3(nil, 0, 0)
1254+ func el (em,en) = if ((en >= ej))
1255+ then em
1256+ else gK(em, ei[en])
1257+
1258+ func eo (em,en) = if ((en >= ej))
1259+ then em
12471260 else throw("List size exceeds 6")
12481261
1249- eh(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6)
1262+ eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
12501263 }
1251- let gF = fD._1
1252- let gG = value(indexOf(gF, max(gF)))
1253- let gH = (fD._3 - 25)
1254- func gI (dZ,cz) = {
1255- let gJ = if ((cz == gG))
1256- then (gF[cz] - gH)
1257- else gF[cz]
1258- let gK = if ((gJ == 0))
1264+ let gM = fK._1
1265+ let gN = value(indexOf(gM, max(gM)))
1266+ let gO = (fK._3 - 25)
1267+ func gP (eg,cG) = {
1268+ let gQ = if ((cG == gN))
1269+ then (gM[cG] - gO)
1270+ else gM[cG]
1271+ let gR = if ((gQ == 0))
12591272 then nil
1260- else split(drop(toString(pow(10, 0, gJ, 0, 0, DOWN)), 1), "")
1261- let fi = gA[cz]
1262- func gL (gM,gN) = (gM :+ fi)
1263-
1264- let gO = {
1265- let eb = gK
1266- let ec = size(eb)
1267- let ed = nil
1268- func gP (ef,eg) = if ((eg >= ec))
1269- then ef
1270- else gL(ef, eb[eg])
1271-
1272- func gQ (ef,eg) = if ((eg >= ec))
1273- then ef
1273+ else split(drop(toString(pow(10, 0, gQ, 0, 0, DOWN)), 1), "")
1274+ let fp = gH[cG]
1275+ func gS (gT,gU) = (gT :+ fp)
1276+
1277+ let gV = {
1278+ let ei = gR
1279+ let ej = size(ei)
1280+ let ek = nil
1281+ func gW (em,en) = if ((en >= ej))
1282+ then em
1283+ else gS(em, ei[en])
1284+
1285+ func gX (em,en) = if ((en >= ej))
1286+ then em
12741287 else throw("List size exceeds 25")
12751288
1276- gQ(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(ed, 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)
1277- }
1278- (dZ ++ gO)
1289+ gX(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(ek, 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)
1290+ }
1291+ (eg ++ gV)
12791292 }
12801293
1281- let ek = {
1282- let eb = ck
1283- let ec = size(eb)
1284- let ed = nil
1285- func gP (ef,eg) = if ((eg >= ec))
1286- then ef
1287- else gI(ef, eb[eg])
1288-
1289- func gQ (ef,eg) = if ((eg >= ec))
1290- then ef
1294+ let er = {
1295+ let ei = cr
1296+ let ej = size(ei)
1297+ let ek = nil
1298+ func gW (em,en) = if ((en >= ej))
1299+ then em
1300+ else gP(em, ei[en])
1301+
1302+ func gX (em,en) = if ((en >= ej))
1303+ then em
12911304 else throw("List size exceeds 6")
12921305
1293- gQ(gP(gP(gP(gP(gP(gP(ed, 0), 1), 2), 3), 4), 5), 6)
1306+ gX(gW(gW(gW(gW(gW(gW(ek, 0), 1), 2), 3), 4), 5), 6)
12941307 }
1295- func gR (dZ,eJ) = (dZ + ek[eJ])
1296-
1297- let eb = gz
1298- let ec = size(eb)
1299- let ed = ""
1300- func gS (ef,eg) = if ((eg >= ec))
1301- then ef
1302- else gR(ef, eb[eg])
1303-
1304- func gT (ef,eg) = if ((eg >= ec))
1305- then ef
1308+ func gY (eg,eQ) = (eg + er[eQ])
1309+
1310+ let ei = gG
1311+ let ej = size(ei)
1312+ let ek = ""
1313+ func gZ (em,en) = if ((en >= ej))
1314+ then em
1315+ else gY(em, ei[en])
1316+
1317+ func ha (em,en) = if ((en >= ej))
1318+ then em
13061319 else throw("List size exceeds 25")
13071320
1308- gT(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(ed, 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)
1309- }
1310-
1311-
1312-func gU (gV) = {
1313- let fC = split(valueOrElse(getString(gV), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1314-[toString(valueOrElse(parseInt(fC[aX]), 0)), if ((size(split(fC[aY], "_")) == aw))
1315- then fC[aY]
1316- else "0_0_0_0_0_0", if ((size(split(fC[aZ], "_")) == aw))
1317- then fC[aZ]
1318- else "0_0_0_0_0_0", fC[ba]]
1319- }
1320-
1321-
1322-func gW (gX) = {
1323- let ex = split(gX, "_")
1324- ((aA * (parseIntValue(ex[1]) + 1)) * parseIntValue(ex[0]))
1325- }
1326-
1327-
1328-func gY (gZ) = {
1329- let ha = gZ[aR]
1330- func hb (dZ,hc) = (dZ + parseIntValue(hc))
1331-
1332- func hd (dZ,hc) = {
1333- let cz = dZ._1
1334- let dS = (((parseIntValue(hc) + aN) - 1) / aN)
1335- $Tuple2((cz + 1), (dZ._2 + (dS * ce)))
1321+ ha(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(ek, 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)
1322+ }
1323+
1324+
1325+func hb (hc) = {
1326+ let fJ = split(valueOrElse(getString(hc), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1327+[toString(valueOrElse(parseInt(fJ[be]), 0)), if ((size(split(fJ[bf], "_")) == aD))
1328+ then fJ[bf]
1329+ else "0_0_0_0_0_0", if ((size(split(fJ[bg], "_")) == aD))
1330+ then fJ[bg]
1331+ else "0_0_0_0_0_0", fJ[bh]]
1332+ }
1333+
1334+
1335+func hd (he) = {
1336+ let eE = split(he, "_")
1337+ ((aH * (parseIntValue(eE[1]) + 1)) * parseIntValue(eE[0]))
1338+ }
1339+
1340+
1341+func hf (hg) = {
1342+ let hh = hg[aY]
1343+ func hi (eg,hj) = (eg + parseIntValue(hj))
1344+
1345+ func hk (eg,hj) = {
1346+ let cG = eg._1
1347+ let dZ = (((parseIntValue(hj) + aU) - 1) / aU)
1348+ $Tuple2((cG + 1), (eg._2 + (dZ * cl)))
13361349 }
13371350
1338- let he = {
1339- let eb = split(gZ[aP], "_")
1340- let ec = size(eb)
1341- let ed = 0
1342- func ee (ef,eg) = if ((eg >= ec))
1343- then ef
1344- else hb(ef, eb[eg])
1345-
1346- func eh (ef,eg) = if ((eg >= ec))
1347- then ef
1351+ let hl = {
1352+ let ei = split(hg[aW], "_")
1353+ let ej = size(ei)
1354+ let ek = 0
1355+ func el (em,en) = if ((en >= ej))
1356+ then em
1357+ else hi(em, ei[en])
1358+
1359+ func eo (em,en) = if ((en >= ej))
1360+ then em
13481361 else throw("List size exceeds 6")
13491362
1350- eh(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6)
1363+ eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
13511364 }
1352- let hf = {
1353- let eb = split(gZ[aQ], "_")
1354- let ec = size(eb)
1355- let ed = 0
1356- func gP (ef,eg) = if ((eg >= ec))
1357- then ef
1358- else hb(ef, eb[eg])
1359-
1360- func gQ (ef,eg) = if ((eg >= ec))
1361- then ef
1365+ let hm = {
1366+ let ei = split(hg[aX], "_")
1367+ let ej = size(ei)
1368+ let ek = 0
1369+ func gW (em,en) = if ((en >= ej))
1370+ then em
1371+ else hi(em, ei[en])
1372+
1373+ func gX (em,en) = if ((en >= ej))
1374+ then em
13621375 else throw("List size exceeds 6")
13631376
1364- gQ(gP(gP(gP(gP(gP(gP(ed, 0), 1), 2), 3), 4), 5), 6)
1377+ gX(gW(gW(gW(gW(gW(gW(ek, 0), 1), 2), 3), 4), 5), 6)
13651378 }
1366- let hg = if ((ha == ""))
1379+ let hn = if ((hh == ""))
13671380 then 0
1368- else ( let eb = split_4C(ha, "_")
1369- let ec = size(eb)
1370- let ed = $Tuple2(0, 0)
1371- func gS (ef,eg) = if ((eg >= ec))
1372- then ef
1373- else hd(ef, eb[eg])
1374-
1375- func gT (ef,eg) = if ((eg >= ec))
1376- then ef
1381+ else ( let ei = split_4C(hh, "_")
1382+ let ej = size(ei)
1383+ let ek = $Tuple2(0, 0)
1384+ func gZ (em,en) = if ((en >= ej))
1385+ then em
1386+ else hk(em, ei[en])
1387+
1388+ func ha (em,en) = if ((en >= ej))
1389+ then em
13771390 else throw("List size exceeds 50")
13781391
1379- gT(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(ed, 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
1380- ((he + hf) + hg)
1381- }
1382-
1383-
1384-func hh (hi,hj,hk) = {
1385- let gX = ((toString(hj) + "_") + toString(hk))
1386- let hl = gW(gX)
1387- let hm = valueOrElse(getString(hi), (gX + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1388- let hn = split_4C(hm, ":")
1389- let ho = gY(hn)
1390- let hp = if ((5 > size(hn)))
1391- then makeString(["0", toString(ho), toString((hl - ho)), toString(hl)], "_")
1392+ ha(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(ek, 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
1393+ ((hl + hm) + hn)
1394+ }
1395+
1396+
1397+func ho (hp,hq,hr) = {
1398+ let he = ((toString(hq) + "_") + toString(hr))
1399+ let hs = hd(he)
1400+ let ht = valueOrElse(getString(hp), (he + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1401+ let hu = split_4C(ht, ":")
1402+ let hv = hf(hu)
1403+ let hw = if ((5 > size(hu)))
1404+ then makeString(["0", toString(hv), toString((hs - hv)), toString(hs)], "_")
13921405 else {
1393- let hq = split(hn[aS], "_")
1394- let hr = parseIntValue(hq[aT])
1395- let hs = if ((size(hq) > 1))
1396- then parseIntValue(hq[aU])
1397- else ho
1398- makeString([toString(hr), toString(hs), toString(((hl - hr) - hs)), toString(hl)], "_")
1399- }
1400-[hn[aO], if ((size(split(hn[aP], "_")) == aw))
1401- then hn[aP]
1402- else "0_0_0_0_0_0", if ((size(split(hn[aQ], "_")) == aw))
1403- then hn[aQ]
1404- else "0_0_0_0_0_0", hn[aR], hp]
1405- }
1406-
1407-
1408-func ht (gZ) = {
1409- let hu = gY(gZ)
1410- let hv = parseIntValue(split(gZ[aS], "_")[aT])
1411- ((gW(gZ[aO]) - hu) - hv)
1412- }
1413-
1414-
1415-func hw (hx,gZ,hy) = if ((size(hx) != 3))
1406+ let hx = split(hu[aZ], "_")
1407+ let hy = parseIntValue(hx[ba])
1408+ let hz = if ((size(hx) > 1))
1409+ then parseIntValue(hx[bb])
1410+ else hv
1411+ makeString([toString(hy), toString(hz), toString(((hs - hy) - hz)), toString(hs)], "_")
1412+ }
1413+[hu[aV], if ((size(split(hu[aW], "_")) == aD))
1414+ then hu[aW]
1415+ else "0_0_0_0_0_0", if ((size(split(hu[aX], "_")) == aD))
1416+ then hu[aX]
1417+ else "0_0_0_0_0_0", hu[aY], hw]
1418+ }
1419+
1420+
1421+func hA (hg) = {
1422+ let hB = hf(hg)
1423+ let hC = parseIntValue(split(hg[aZ], "_")[ba])
1424+ ((hd(hg[aV]) - hB) - hC)
1425+ }
1426+
1427+
1428+func hD (hE,hg,hF) = if ((size(hE) != 3))
14161429 then throw("cargoListStr should contain exactly 2 ':' separators")
14171430 else {
1418- let hz = split(hx[0], "_")
1419- let hA = split(hx[1], "_")
1420- let hB = if ((hx[2] == ""))
1431+ let hG = split(hE[0], "_")
1432+ let hH = split(hE[1], "_")
1433+ let hI = if ((hE[2] == ""))
14211434 then nil
1422- else split_4C(hx[2], "_")
1423- if ((size(hz) != aw))
1435+ else split_4C(hE[2], "_")
1436+ if ((size(hG) != aD))
14241437 then throw("All 6 resources should be passed")
1425- else if ((size(hA) != aw))
1438+ else if ((size(hH) != aD))
14261439 then throw("All 6 materials should be passed")
14271440 else {
1428- let gh = ht(gZ)
1429- let hC = split(gZ[aP], "_")
1430- let hD = split(gZ[aQ], "_")
1431- let hE = if ((gZ[aR] == ""))
1441+ let go = hA(hg)
1442+ let hJ = split(hg[aW], "_")
1443+ let hK = split(hg[aX], "_")
1444+ let hL = if ((hg[aY] == ""))
14321445 then nil
1433- else split_4C(gZ[aR], "_")
1434- let gf = split(hy[aY], "_")
1435- let hF = split(hy[aZ], "_")
1436- let hG = if ((hy[ba] == ""))
1446+ else split_4C(hg[aY], "_")
1447+ let gm = split(hF[bf], "_")
1448+ let hM = split(hF[bg], "_")
1449+ let hN = if ((hF[bh] == ""))
14371450 then nil
1438- else split_4C(hy[ba], "_")
1439- func hH (dZ,hc) = {
1440- let fS = dZ._1
1441- let hI = parseIntValue(hc)
1442- let hJ = parseIntValue(hC[fS])
1443- let hK = parseIntValue(gf[fS])
1444- if ((hI == 0))
1445- then $Tuple4((fS + 1), (dZ._2 :+ hC[fS]), (dZ._3 :+ gf[fS]), dZ._4)
1446- else if ((hI > 0))
1447- then if ((hI > hK))
1448- then throw((((("Attempt to take " + hc) + " from backpack, but only ") + toString(hK)) + " available"))
1449- else $Tuple4((fS + 1), (dZ._2 :+ toString((hJ + hI))), (dZ._3 :+ toString((hK - hI))), (dZ._4 + hI))
1450- else if ((-(hI) > hJ))
1451- then throw((((("Attempt to take " + toString(-(hI))) + " from warehouse, but only ") + toString(hJ)) + " available"))
1452- else $Tuple4((fS + 1), (dZ._2 :+ toString((hJ + hI))), (dZ._3 :+ toString((hK - hI))), (dZ._4 + hI))
1451+ else split_4C(hF[bh], "_")
1452+ func hO (eg,hj) = {
1453+ let fZ = eg._1
1454+ let hP = parseIntValue(hj)
1455+ let hQ = parseIntValue(hJ[fZ])
1456+ let hR = parseIntValue(gm[fZ])
1457+ if ((hP == 0))
1458+ then $Tuple4((fZ + 1), (eg._2 :+ hJ[fZ]), (eg._3 :+ gm[fZ]), eg._4)
1459+ else if ((hP > 0))
1460+ then if ((hP > hR))
1461+ then throw((((("Attempt to take " + hj) + " from backpack, but only ") + toString(hR)) + " available"))
1462+ else $Tuple4((fZ + 1), (eg._2 :+ toString((hQ + hP))), (eg._3 :+ toString((hR - hP))), (eg._4 + hP))
1463+ else if ((-(hP) > hQ))
1464+ then throw((((("Attempt to take " + toString(-(hP))) + " from warehouse, but only ") + toString(hQ)) + " available"))
1465+ else $Tuple4((fZ + 1), (eg._2 :+ toString((hQ + hP))), (eg._3 :+ toString((hR - hP))), (eg._4 + hP))
14531466 }
14541467
1455- let ek = {
1456- let eb = hz
1457- let ec = size(eb)
1458- let ed = $Tuple4(0, nil, nil, 0)
1459- func ee (ef,eg) = if ((eg >= ec))
1460- then ef
1461- else hH(ef, eb[eg])
1462-
1463- func eh (ef,eg) = if ((eg >= ec))
1464- then ef
1468+ let er = {
1469+ let ei = hG
1470+ let ej = size(ei)
1471+ let ek = $Tuple4(0, nil, nil, 0)
1472+ func el (em,en) = if ((en >= ej))
1473+ then em
1474+ else hO(em, ei[en])
1475+
1476+ func eo (em,en) = if ((en >= ej))
1477+ then em
14651478 else throw("List size exceeds 6")
14661479
1467- eh(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6)
1480+ eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
14681481 }
1469- func hL (dZ,hc) = {
1470- let fS = dZ._1
1471- let hI = parseIntValue(hc)
1472- let hM = parseIntValue(hD[fS])
1473- let hN = parseIntValue(hF[fS])
1474- if ((hI == 0))
1475- then $Tuple4((fS + 1), (dZ._2 :+ hD[fS]), (dZ._3 :+ hF[fS]), dZ._4)
1476- else if ((hI > 0))
1477- then if ((hI > hN))
1478- then throw((((("Attempt to take " + hc) + " from backpack, but only ") + toString(hN)) + " available"))
1479- else $Tuple4((fS + 1), (dZ._2 :+ toString((hM + hI))), (dZ._3 :+ toString((hN - hI))), (dZ._4 + hI))
1480- else if ((-(hI) > hM))
1481- then throw((((("Attempt to take " + toString(-(hI))) + " from warehouse, but only ") + toString(hM)) + " available"))
1482- else $Tuple4((fS + 1), (dZ._2 :+ toString((hM + hI))), (dZ._3 :+ toString((hN - hI))), (dZ._4 + hI))
1482+ func hS (eg,hj) = {
1483+ let fZ = eg._1
1484+ let hP = parseIntValue(hj)
1485+ let hT = parseIntValue(hK[fZ])
1486+ let hU = parseIntValue(hM[fZ])
1487+ if ((hP == 0))
1488+ then $Tuple4((fZ + 1), (eg._2 :+ hK[fZ]), (eg._3 :+ hM[fZ]), eg._4)
1489+ else if ((hP > 0))
1490+ then if ((hP > hU))
1491+ then throw((((("Attempt to take " + hj) + " from backpack, but only ") + toString(hU)) + " available"))
1492+ else $Tuple4((fZ + 1), (eg._2 :+ toString((hT + hP))), (eg._3 :+ toString((hU - hP))), (eg._4 + hP))
1493+ else if ((-(hP) > hT))
1494+ then throw((((("Attempt to take " + toString(-(hP))) + " from warehouse, but only ") + toString(hT)) + " available"))
1495+ else $Tuple4((fZ + 1), (eg._2 :+ toString((hT + hP))), (eg._3 :+ toString((hU - hP))), (eg._4 + hP))
14831496 }
14841497
1485- let fy = {
1486- let eb = hA
1487- let ec = size(eb)
1488- let ed = $Tuple4(0, nil, nil, ek._4)
1489- func gP (ef,eg) = if ((eg >= ec))
1490- then ef
1491- else hL(ef, eb[eg])
1492-
1493- func gQ (ef,eg) = if ((eg >= ec))
1494- then ef
1498+ let fF = {
1499+ let ei = hH
1500+ let ej = size(ei)
1501+ let ek = $Tuple4(0, nil, nil, er._4)
1502+ func gW (em,en) = if ((en >= ej))
1503+ then em
1504+ else hS(em, ei[en])
1505+
1506+ func gX (em,en) = if ((en >= ej))
1507+ then em
14951508 else throw("List size exceeds 6")
14961509
1497- gQ(gP(gP(gP(gP(gP(gP(ed, 0), 1), 2), 3), 4), 5), 6)
1510+ gX(gW(gW(gW(gW(gW(gW(ek, 0), 1), 2), 3), 4), 5), 6)
14981511 }
1499- func hO (dZ,hc) = {
1500- let fS = dZ._1
1501- let hI = parseIntValue(hc)
1502- let hP = if ((size(hE) > fS))
1503- then parseIntValue(hE[fS])
1512+ func hV (eg,hj) = {
1513+ let fZ = eg._1
1514+ let hP = parseIntValue(hj)
1515+ let hW = if ((size(hL) > fZ))
1516+ then parseIntValue(hL[fZ])
15041517 else 0
1505- let hQ = if ((size(hG) > fS))
1506- then parseIntValue(hG[fS])
1518+ let hX = if ((size(hN) > fZ))
1519+ then parseIntValue(hN[fZ])
15071520 else 0
1508- if ((hI == 0))
1509- then $Tuple4((fS + 1), (dZ._2 :+ toString(hP)), (dZ._3 :+ toString(hQ)), dZ._4)
1510- else if ((hI > 0))
1511- then if ((hI > hQ))
1512- then throw((((("Attempt to take " + hc) + " from backpack, but only ") + toString(hQ)) + " available"))
1521+ if ((hP == 0))
1522+ then $Tuple4((fZ + 1), (eg._2 :+ toString(hW)), (eg._3 :+ toString(hX)), eg._4)
1523+ else if ((hP > 0))
1524+ then if ((hP > hX))
1525+ then throw((((("Attempt to take " + hj) + " from backpack, but only ") + toString(hX)) + " available"))
15131526 else {
1514- let fb = (dP((hP + hI), aN) - dP(hP, aN))
1515- $Tuple4((fS + 1), (dZ._2 :+ toString((hP + hI))), (dZ._3 :+ toString((hQ - hI))), (dZ._4 + fb))
1527+ let fi = (dW((hW + hP), aU) - dW(hW, aU))
1528+ $Tuple4((fZ + 1), (eg._2 :+ toString((hW + hP))), (eg._3 :+ toString((hX - hP))), (eg._4 + fi))
15161529 }
1517- else if ((-(hI) > hP))
1518- then throw((((("Attempt to take " + toString(-(hI))) + " from warehouse, but only ") + toString(hP)) + " available"))
1530+ else if ((-(hP) > hW))
1531+ then throw((((("Attempt to take " + toString(-(hP))) + " from warehouse, but only ") + toString(hW)) + " available"))
15191532 else {
1520- let fb = (dP((hP + hI), aN) - dP(hP, aN))
1521- $Tuple4((fS + 1), (dZ._2 :+ toString((hP + hI))), (dZ._3 :+ toString((hQ - hI))), (dZ._4 + fb))
1533+ let fi = (dW((hW + hP), aU) - dW(hW, aU))
1534+ $Tuple4((fZ + 1), (eg._2 :+ toString((hW + hP))), (eg._3 :+ toString((hX - hP))), (eg._4 + fi))
15221535 }
15231536 }
15241537
1525- let fC = if ((size(hB) != 0))
1538+ let fJ = if ((size(hI) != 0))
15261539 then {
1527- let eb = hB
1528- let ec = size(eb)
1529- let ed = $Tuple4(0, nil, nil, fy._4)
1530- func gS (ef,eg) = if ((eg >= ec))
1531- then ef
1532- else hO(ef, eb[eg])
1533-
1534- func gT (ef,eg) = if ((eg >= ec))
1535- then ef
1540+ let ei = hI
1541+ let ej = size(ei)
1542+ let ek = $Tuple4(0, nil, nil, fF._4)
1543+ func gZ (em,en) = if ((en >= ej))
1544+ then em
1545+ else hV(em, ei[en])
1546+
1547+ func ha (em,en) = if ((en >= ej))
1548+ then em
15361549 else throw("List size exceeds 50")
15371550
1538- gT(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(ed, 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)
1551+ ha(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(ek, 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)
15391552 }
1540- else $Tuple4(0, hE, hG, fy._4)
1541- let hR = fC._4
1542- if ((hR > gh))
1543- then throw((((("Attempt to put total " + toString(hR)) + " stuff, but only ") + toString(gh)) + " warehouse space left"))
1544- else $Tuple7(makeString(ek._2, "_"), makeString(fy._2, "_"), makeString_2C(fC._2, "_"), makeString(ek._3, "_"), makeString(fy._3, "_"), makeString_2C(fC._3, "_"), hR)
1553+ else $Tuple4(0, hL, hN, fF._4)
1554+ let hY = fJ._4
1555+ if ((hY > go))
1556+ then throw((((("Attempt to put total " + toString(hY)) + " stuff, but only ") + toString(go)) + " warehouse space left"))
1557+ else $Tuple7(makeString(er._2, "_"), makeString(fF._2, "_"), makeString_2C(fJ._2, "_"), makeString(er._3, "_"), makeString(fF._3, "_"), makeString_2C(fJ._3, "_"), hY)
15451558 }
15461559 }
15471560
15481561
1549-func hS (hT,hU) = {
1550- let bA = toString(hT)
1551- let hV = gn(toBigInt(hU))
1552- let hW = valueOrElse(getInteger(dx()), (dw + 1))
1553- let dB = toString(hW)
1554- let gw = toInt((hV % dq))
1555- let fV = gu(hV, gw)
1556- let cP = aF[gw]
1557- let hX = Issue(dO(dB, "S"), makeString([dB, "S", fV, cP], "_"), 1, 0, false)
1558- let bd = calculateAssetId(hX)
1559- let hY = toBase58String(bd)
1560- $Tuple2([IntegerEntry(dx(), (hW + 1)), hX, StringEntry(dA(dB), hY), StringEntry(bc(hY), bA), StringEntry(dD(dB), bA), IntegerEntry(bm(hY), 0), IntegerEntry(dC(hY, bA), 0), ScriptTransfer(hT, 1, bd)], $Tuple2(hY, cP))
1561- }
1562-
1563-
1564-func hZ (bA,ia,ib) = if (!(sigVerify_8Kb(ia, ib, di)))
1562+func hZ (ia,ib) = {
1563+ let bH = toString(ia)
1564+ let ic = gu(toBigInt(ib))
1565+ let id = valueOrElse(getInteger(dE()), (dD + 1))
1566+ let dI = toString(id)
1567+ let gD = toInt((ic % dx))
1568+ let gc = gB(ic, gD)
1569+ let cW = aM[gD]
1570+ let ie = Issue(dV(dI, "S"), makeString([dI, "S", gc, cW], "_"), 1, 0, false)
1571+ let bk = calculateAssetId(ie)
1572+ let if = toBase58String(bk)
1573+ $Tuple2([IntegerEntry(dE(), (id + 1)), ie, StringEntry(dH(dI), if), StringEntry(bj(if), bH), StringEntry(dK(dI), bH), IntegerEntry(bt(if), 0), IntegerEntry(dJ(if, bH), 0), ScriptTransfer(ia, 1, bk)], $Tuple2(if, cW))
1574+ }
1575+
1576+
1577+func ig (bH,ih,ii) = if (!(sigVerify_8Kb(ih, ii, dp)))
15651578 then throw("signature does not match")
15661579 else {
1567- let ex = split(toUtf8String(ia), ";")
1568- let ic = split(ex[0], "|")
1569- let id = split(ic[dK], "_")
1570- let ie = parseIntValue(id[0])
1571- let if = parseIntValue(id[1])
1572- let ig = split(ex[1], ":")
1573- let ih = ig[0]
1574- let ii = parseIntValue(ic[dL])
1575- if (if ((ii > (lastBlock.timestamp + dk)))
1580+ let eE = split(toUtf8String(ih), ";")
1581+ let ij = split(eE[0], "|")
1582+ let ik = split(ij[dR], "_")
1583+ let il = parseIntValue(ik[0])
1584+ let im = parseIntValue(ik[1])
1585+ let in = split(eE[1], ":")
1586+ let io = in[0]
1587+ let ip = parseIntValue(ij[dS])
1588+ if (if ((ip > (lastBlock.timestamp + dr)))
15761589 then true
1577- else ((lastBlock.timestamp - dk) > ii))
1578- then throw(((("signature outdated: logTime=" + toString(ii)) + ", bcTime=") + toString(lastBlock.timestamp)))
1590+ else ((lastBlock.timestamp - dr) > ip))
1591+ then throw(((("signature outdated: logTime=" + toString(ip)) + ", bcTime=") + toString(lastBlock.timestamp)))
15791592 else {
1580- let ij = ig[1]
1581- let ik = valueOrElse(getString(bb(bA)), "")
1582- if ((ik != ij))
1583- then throw(((("Tx ids don't match! In state: " + ik) + ", in msg: ") + ij))
1593+ let iq = in[1]
1594+ let ir = valueOrElse(getString(bi(bH)), "")
1595+ if ((ir != iq))
1596+ then throw(((("Tx ids don't match! In state: " + ir) + ", in msg: ") + iq))
15841597 else {
1585- let x = valueOrErrorMessage(getString(bv(bA)), "You don't have a duck staked")
1586- let il = w(x)
1587- let im = aa(valueOrElse(getInteger(A(x)), 0))
1588- let in = valueOrElse(getInteger(il), im)
1589- if ((in != ie))
1590- then throw(((("oldHealth=" + toString(in)) + " from state does not match one from flight log=") + toString(ie)))
1591- else if ((0 >= ie))
1598+ let z = valueOrErrorMessage(getString(bC(bH)), "You don't have a duck staked")
1599+ let is = y(z)
1600+ let it = ae(valueOrElse(getInteger(C(z)), 0))
1601+ let iu = valueOrElse(getInteger(is), it)
1602+ if ((iu != il))
1603+ then throw(((("oldHealth=" + toString(iu)) + " from state does not match one from flight log=") + toString(il)))
1604+ else if ((0 >= il))
15921605 then throw("You can't fly with zero health")
1593- else if (!(fE(x)))
1606+ else if (!(fL(z)))
15941607 then throw("Equipment incompatible")
15951608 else {
1596- let io = if ((size(ic) > dM))
1597- then ic[dM]
1609+ let iv = if ((size(ij) > dT))
1610+ then ij[dT]
15981611 else ""
1599- let ip = if ((size(ic) > dN))
1600- then ic[dN]
1612+ let iw = if ((size(ij) > dU))
1613+ then ij[dU]
16011614 else ""
1602- let iq = if (if ((if > 0))
1603- then (io == "$")
1615+ let ix = if (if ((im > 0))
1616+ then (iv == "$")
16041617 else false)
1605- then cV(invoke(cA, "sendUsdtPrize", [bA], nil))
1618+ then dc(invoke(cH, "sendUsdtPrize", [bH], nil))
16061619 else 0
1607- $Tuple5(if, x, iq, ih, ip)
1620+ $Tuple5(im, z, ix, io, iw)
16081621 }
16091622 }
16101623 }
16111624 }
16121625
16131626
1614-func ir (hT,hU,ia,ib) = {
1615- let bA = toString(hT)
1616- let gx = hZ(bA, ia, ib)
1617- let x = gx._2
1618- let il = w(x)
1619- let gV = bw(x)
1620- let hy = gU(gV)
1621- let is = split(hy[aZ], "_")
1622- let it = makeString(el(true, is, do), "_")
1623- let fF = C(x)
1624- let iu = valueOrElse(getString(fF), ",;,_,;,_,;,_,;,_,;,_,;,")
1625- let iv = es(iu, gx._5)
1626- let iw = iv._1
1627- let ix = iv._2
1628- if ((0 >= gx._1))
1629- then $Tuple3([IntegerEntry(il, 0), StringEntry(fF, iw)], "", 0)
1627+func iy (ia,ib,ih,ii) = {
1628+ let bH = toString(ia)
1629+ let gE = ig(bH, ih, ii)
1630+ let z = gE._2
1631+ let is = y(z)
1632+ let hc = bD(z)
1633+ let hF = hb(hc)
1634+ let iz = split(hF[bg], "_")
1635+ let iA = makeString(es(true, iz, dv), "_")
1636+ let fM = E(z)
1637+ let iB = valueOrElse(getString(fM), ",;,_,;,_,;,_,;,_,;,_,;,")
1638+ let iC = ez(iB, gE._5)
1639+ let iD = iC._1
1640+ let iE = iC._2
1641+ if ((0 >= gE._1))
1642+ then $Tuple3([IntegerEntry(is, 0), StringEntry(fM, iD)], "", 0)
16301643 else {
1631- let iy = hS(hT, hU)
1632- let hY = iy._2._1
1633- $Tuple3((iy._1 ++ (if (ix)
1634- then [StringEntry(I(x), "0_0_0_0_0")]
1635- else ((((nil :+ StringEntry(bx(x), makeString([iy._2._2, "L", hY], "_"))) :+ IntegerEntry(il, gx._1)) :+ StringEntry(fF, iw)) :+ StringEntry(gV, makeString([hy[aX], hy[aY], it, hy[ba]], ":"))))), hY, gx._3)
1636- }
1637- }
1638-
1639-
1640-func iz (M,iA) = {
1641- let hk = valueOrElse(getInteger(bm(M)), 0)
1642- let iB = valueOrElse(getInteger(bg(av, M)), 0)
1643- let iC = (hk / 6)
1644- let iD = (hk / 7)
1645- ((ay + fraction(ay, ((hk + iC) + (2 * iD)), 5)) + fraction(ay, iB, (iA * 5)))
1646- }
1647-
1648-
1649-func iE (b,iF,iG) = {
1650- let iH = if ((iF == dH))
1651- then $Tuple2(iG, valueOrElse(getString(bv(b)), ""))
1644+ let iF = hZ(ia, ib)
1645+ let if = iF._2._1
1646+ $Tuple3((iF._1 ++ (if (iE)
1647+ then [StringEntry(K(z), "0_0_0_0_0")]
1648+ else ((((nil :+ StringEntry(bE(z), makeString([iF._2._2, "L", if], "_"))) :+ IntegerEntry(is, gE._1)) :+ StringEntry(fM, iD)) :+ StringEntry(hc, makeString([hF[be], hF[bf], iA, hF[bh]], ":"))))), if, gE._3)
1649+ }
1650+ }
1651+
1652+
1653+func iG (O,iH) = {
1654+ let hr = valueOrElse(getInteger(bt(O)), 0)
1655+ let iI = valueOrElse(getInteger(bn(aC, O)), 0)
1656+ let iJ = (hr / 6)
1657+ let iK = (hr / 7)
1658+ ((aF + fraction(aF, ((hr + iJ) + (2 * iK)), 5)) + fraction(aF, iI, (iH * 5)))
1659+ }
1660+
1661+
1662+func iL (b,iM,iN) = {
1663+ let iO = if ((iM == dO))
1664+ then $Tuple2(iN, valueOrElse(getString(bC(b)), ""))
16521665 else {
1653- let x = valueOrErrorMessage(getString(bv(b)), "You don't have a duck staked")
1654- let iI = valueOrElse(getString(bx(x)), aB)
1655- let iJ = split(value(iI), "_")
1656- if ((iJ[bQ] != "L"))
1657- then throw((("Duck location type is " + iJ[bQ]) + ", but should be L"))
1658- else $Tuple2(iJ[bR], x)
1659- }
1660- let M = iH._1
1661- let iK = iH._2
1662- let iL = value(assetInfo(fromBase58String(M)))
1663- let iM = bf(M)
1664- let iN = valueOrErrorMessage(getInteger(iM), (("Land " + iL.name) + " is not staked"))
1665- let iO = valueOrErrorMessage(getString(bc(M)), (("NFT " + iL.name) + " is orphaned"))
1666- if ((iO != b))
1667- then throw((at + " is not yours"))
1666+ let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
1667+ let iP = valueOrElse(getString(bE(z)), aI)
1668+ let iQ = split(value(iP), "_")
1669+ if ((iQ[bX] != "L"))
1670+ then throw((("Duck location type is " + iQ[bX]) + ", but should be L"))
1671+ else $Tuple2(iQ[bY], z)
1672+ }
1673+ let O = iO._1
1674+ let iR = iO._2
1675+ let iS = value(assetInfo(fromBase58String(O)))
1676+ let iT = bm(O)
1677+ let iU = valueOrErrorMessage(getInteger(iT), (("Land " + iS.name) + " is not staked"))
1678+ let iV = valueOrErrorMessage(getString(bj(O)), (("NFT " + iS.name) + " is orphaned"))
1679+ if ((iV != b))
1680+ then throw((aA + " is not yours"))
16681681 else {
1669- let iP = split(iL.description, "_")
1670- $Tuple4(iK, M, iP, iN)
1671- }
1672- }
1673-
1674-
1675-func iQ (b,dQ,iF,iG) = if ((0 > dQ))
1682+ let iW = split(iS.description, "_")
1683+ $Tuple4(iR, O, iW, iU)
1684+ }
1685+ }
1686+
1687+
1688+func iX (b,dX,iM,iN) = if ((0 > dX))
16761689 then throw("Negative amount")
16771690 else {
1678- let fi = iE(b, iF, iG)
1679- let cY = fi._3[cG]
1680- let fO = fU(fi._3[cH])
1681- let fY = (lastBlock.timestamp - fi._4)
1682- if ((0 > fY))
1683- then throw(((("Saved timestamp is in future, saved = " + toString(fi._4)) + ", current = ") + toString(lastBlock.timestamp)))
1691+ let fp = iL(b, iM, iN)
1692+ let df = fp._3[cN]
1693+ let fV = gb(fp._3[cO])
1694+ let gf = (lastBlock.timestamp - fp._4)
1695+ if ((0 > gf))
1696+ then throw(((("Saved timestamp is in future, saved = " + toString(fp._4)) + ", current = ") + toString(lastBlock.timestamp)))
16841697 else {
1685- let iA = cX(cY)
1686- let iR = iz(fi._2, iA)
1687- let iS = fraction(fY, (iR * iA), az)
1688- if ((dQ > iS))
1689- then throw(((("Not enough resources, available = " + toString(iS)) + ", requested = ") + toString(dQ)))
1698+ let iH = de(df)
1699+ let iY = iG(fp._2, iH)
1700+ let iZ = fraction(gf, (iY * iH), aG)
1701+ if ((dX > iZ))
1702+ then throw(((("Not enough resources, available = " + toString(iZ)) + ", requested = ") + toString(dX)))
16901703 else {
1691- let iT = fraction((iS - dQ), az, (iR * iA))
1692- let iU = (lastBlock.timestamp - iT)
1693- let hj = (iA / cf)
1694- let gg = gc(fO, (fY - iT), hj, iR)
1695- let hi = bl(fi._2)
1696- let hk = valueOrElse(getInteger(bm(fi._2)), 0)
1697- let gZ = hh(hi, hj, hk)
1698- let hq = split(gZ[aS], "_")
1699- let gh = parseIntValue(hq[aV])
1700- if (if ((iF == dH))
1701- then (dQ > gh)
1704+ let ja = fraction((iZ - dX), aG, (iY * iH))
1705+ let jb = (lastBlock.timestamp - ja)
1706+ let hq = (iH / cm)
1707+ let gn = gj(fV, (gf - ja), hq, iY)
1708+ let hp = bs(fp._2)
1709+ let hr = valueOrElse(getInteger(bt(fp._2)), 0)
1710+ let hg = ho(hp, hq, hr)
1711+ let hx = split(hg[aZ], "_")
1712+ let go = parseIntValue(hx[bc])
1713+ if (if ((iM == dO))
1714+ then (dX > go)
17021715 else false)
1703- then throw((("Only " + toString(gh)) + " space left in warehouse"))
1716+ then throw((("Only " + toString(go)) + " space left in warehouse"))
17041717 else {
1705- let gV = bw(fi._1)
1706- let hy = gU(gV)
1707- let gf = split(hy[aY], "_")
1708- let ge = split(gZ[aP], "_")
1709- let iV = if ((iF == dH))
1710- then $Tuple4(fW(ge, fO, (fY - iT), hj, iR), hy[aY], (parseIntValue(hq[aU]) + gg._2), (parseIntValue(hq[aV]) - gg._2))
1711- else if ((iF == dI))
1712- then $Tuple4(gZ[aP], fW(gf, fO, (fY - iT), hj, iR), parseIntValue(hq[aU]), parseIntValue(hq[aV]))
1718+ let hc = bD(fp._1)
1719+ let hF = hb(hc)
1720+ let gm = split(hF[bf], "_")
1721+ let gl = split(hg[aW], "_")
1722+ let jc = if ((iM == dO))
1723+ then $Tuple4(gd(gl, fV, (gf - ja), hq, iY), hF[bf], (parseIntValue(hx[bb]) + gn._2), (parseIntValue(hx[bc]) - gn._2))
1724+ else if ((iM == dP))
1725+ then $Tuple4(hg[aW], gd(gm, fV, (gf - ja), hq, iY), parseIntValue(hx[bb]), parseIntValue(hx[bc]))
17131726 else {
1714- let iW = gd(ge, gf, gg, gh)
1715- let iX = min([parseIntValue(hq[aV]), gg._2])
1716- $Tuple4(iW._1, iW._2, (parseIntValue(hq[aU]) + iX), (parseIntValue(hq[aV]) - iX))
1727+ let jd = gk(gl, gm, gn, go)
1728+ let je = min([parseIntValue(hx[bc]), gn._2])
1729+ $Tuple4(jd._1, jd._2, (parseIntValue(hx[bb]) + je), (parseIntValue(hx[bc]) - je))
17171730 }
1718- let iY = iV._1
1719- let iZ = iV._2
1720- let ja = iV._3
1721- let jb = iV._4
1722- $Tuple5([IntegerEntry(bf(fi._2), iU), IntegerEntry(bi(at, fi._2, b), iU)], gV, [hy[aX], iZ, hy[aZ], hy[ba]], hi, [gZ[aO], iY, gZ[aQ], gZ[aR], makeString([hq[aT], toString(ja), toString(jb), hq[aW]], "_")])
1731+ let jf = jc._1
1732+ let jg = jc._2
1733+ let jh = jc._3
1734+ let ji = jc._4
1735+ $Tuple5([IntegerEntry(bm(fp._2), jb), IntegerEntry(bp(aA, fp._2, b), jb)], hc, [hF[be], jg, hF[bg], hF[bh]], hp, [hg[aV], jf, hg[aX], hg[aY], makeString([hx[ba], toString(jh), toString(ji), hx[bd]], "_")])
17231736 }
17241737 }
17251738 }
17261739 }
17271740
17281741
1729-func jc (b,M,iA,iF) = {
1730- let iM = bf(M)
1731- let iN = value(getInteger(iM))
1732- let iS = (fraction((lastBlock.timestamp - iN), iz(M, iA), az) * iA)
1733- iQ(b, iS, iF, M)
1734- }
1735-
1736-
1737-func jd (em,hT,je,M) = {
1738- let b = toString(hT)
1739- let fi = iE(b, dJ, M)
1740- let iA = cX(fi._3[cG])
1741- let jf = bm(fi._2)
1742- let jg = valueOrElse(getInteger(jf), 0)
1743- if (if (!(bV))
1744- then (jg >= 3)
1742+func jj (b,O,iH,iM) = {
1743+ let iT = bm(O)
1744+ let iU = value(getInteger(iT))
1745+ let iZ = (fraction((lastBlock.timestamp - iU), iG(O, iH), aG) * iH)
1746+ iX(b, iZ, iM, O)
1747+ }
1748+
1749+
1750+func jk (et,ia,jl,O) = {
1751+ let b = toString(ia)
1752+ let fp = iL(b, dQ, O)
1753+ let iH = de(fp._3[cN])
1754+ let jm = bt(fp._2)
1755+ let jn = valueOrElse(getInteger(jm), 0)
1756+ if (if (!(cc))
1757+ then (jn >= 3)
17451758 else false)
17461759 then throw("Currently max infrastructure level = 3")
17471760 else {
1748- let jh = ((sqrt(iA, 0, 0, DOWN) / 5) + 2)
1749- let af = (jg + 1)
1750- if (if (bV)
1751- then (af > jh)
1761+ let jo = ((sqrt(iH, 0, 0, DOWN) / 5) + 2)
1762+ let aj = (jn + 1)
1763+ if (if (cc)
1764+ then (aj > jo)
17521765 else false)
1753- then throw(("Currently max infrastructure level = " + toString(jh)))
1766+ then throw(("Currently max infrastructure level = " + toString(jo)))
17541767 else {
1755- let ji = fraction(dn, (iA * af), cf)
1756- if (if (!(em))
1757- then (je != ji)
1768+ let jp = fraction(du, (iH * aj), cm)
1769+ if (if (!(et))
1770+ then (jl != jp)
17581771 else false)
1759- then throw(("Payment attached should be " + toString(ji)))
1772+ then throw(("Payment attached should be " + toString(jp)))
17601773 else {
1761- let gV = bw(fi._1)
1762- let hy = gU(gV)
1763- let is = split(hy[aZ], "_")
1764- let jj = fraction(ca, (iA * af), cf)
1765- let it = makeString(el(em, is, jj), "_")
1766- let jk = jc(b, fi._2, iA, dJ)
1767- let jl = jk._5
1768- let jm = gW(jl[aO])
1769- let jn = makeString([split(jl[aO], "_")[0], toString(af)], "_")
1770- let jo = gW(jn)
1771- let hq = split(jl[aS], "_")
1772- let jp = makeString([hq[aT], hq[aU], toString(((parseIntValue(hq[aV]) + jo) - jm)), toString(jo)], "_")
1773- $Tuple3(([IntegerEntry(jf, af), IntegerEntry(dC(fi._2, b), af), StringEntry(gV, makeString([hy[aX], jk._3[aY], it, hy[ba]], ":")), StringEntry(jk._4, makeString([jn, jl[aP], jl[aQ], jl[aR], jp], ":"))] ++ jk._1), af, jj)
1774+ let hc = bD(fp._1)
1775+ let hF = hb(hc)
1776+ let iz = split(hF[bg], "_")
1777+ let jq = fraction(ch, (iH * aj), cm)
1778+ let iA = makeString(es(et, iz, jq), "_")
1779+ let jr = jj(b, fp._2, iH, dQ)
1780+ let js = jr._5
1781+ let jt = hd(js[aV])
1782+ let ju = makeString([split(js[aV], "_")[0], toString(aj)], "_")
1783+ let jv = hd(ju)
1784+ let hx = split(js[aZ], "_")
1785+ let jw = makeString([hx[ba], hx[bb], toString(((parseIntValue(hx[bc]) + jv) - jt)), toString(jv)], "_")
1786+ $Tuple3(([IntegerEntry(jm, aj), IntegerEntry(dJ(fp._2, b), aj), StringEntry(hc, makeString([hF[be], jr._3[bf], iA, hF[bh]], ":")), StringEntry(jr._4, makeString([ju, js[aW], js[aX], js[aY], jw], ":"))] ++ jr._1), aj, jq)
17741787 }
17751788 }
17761789 }
17771790 }
17781791
17791792
1780-func jq (x,jr) = {
1781- let js = A(x)
1782- let jt = z(x)
1783- let Z = valueOrElse(getInteger(ah, jt), 0)
1784- let ae = (Z + jr)
1785- let ju = ac(valueOrElse(getInteger(ah, js), 0), ae)
1786- let jv = B(x)
1787- $Tuple2([IntegerEntry(js, ju[0]), IntegerEntry(jt, ae), IntegerEntry(jv, (valueOrElse(getInteger(jv), 0) + ju[1]))], ae)
1788- }
1789-
1790-
1791-func jw (b,jr) = {
1792- let js = E(b)
1793- let jt = D(b)
1794- let Z = valueOrElse(getInteger(ah, jt), 0)
1795- let ae = (Z + jr)
1796- let ju = ac(valueOrElse(getInteger(ah, js), 0), ae)
1797- let jv = F(b)
1798- $Tuple2([IntegerEntry(js, ju[0]), IntegerEntry(jt, ae), IntegerEntry(jv, (valueOrElse(getInteger(jv), 0) + ju[1]))], ae)
1799- }
1800-
1801-
1802-func jx (b) = {
1803- let x = valueOrErrorMessage(getString(bv(b)), "You don't have a duck staked")
1804- let jy = bq(b)
1805- let jz = getString(jy)
1806- if (!(isDefined(jz)))
1793+func jx (z,jy) = {
1794+ let jz = C(z)
1795+ let jA = B(z)
1796+ let ad = valueOrElse(getInteger(al, jA), 0)
1797+ let ai = (ad + jy)
1798+ let jB = ag(valueOrElse(getInteger(al, jz), 0), ai)
1799+ let jC = D(z)
1800+ $Tuple2([IntegerEntry(jz, jB[0]), IntegerEntry(jA, ai), IntegerEntry(jC, (valueOrElse(getInteger(jC), 0) + jB[1]))], ai)
1801+ }
1802+
1803+
1804+func jD (b,jy) = {
1805+ let jz = G(b)
1806+ let jA = F(b)
1807+ let ad = valueOrElse(getInteger(al, jA), 0)
1808+ let ai = (ad + jy)
1809+ let jB = ag(valueOrElse(getInteger(al, jz), 0), ai)
1810+ let jC = H(b)
1811+ $Tuple2([IntegerEntry(jz, jB[0]), IntegerEntry(jA, ai), IntegerEntry(jC, (valueOrElse(getInteger(jC), 0) + jB[1]))], ai)
1812+ }
1813+
1814+
1815+func jE (b) = {
1816+ let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
1817+ let jF = bx(b)
1818+ let jG = getString(jF)
1819+ if (!(isDefined(jG)))
18071820 then throw("You are not eligible for ONBOARD artifact")
18081821 else {
1809- let jA = bs(b)
1810- let jB = getString(jA)
1811- if (isDefined(jB))
1812- then throw(("You already used your ONBOARD artifact on duck " + value(jB)))
1822+ let jH = bz(b)
1823+ let jI = getString(jH)
1824+ if (isDefined(jI))
1825+ then throw(("You already used your ONBOARD artifact on duck " + value(jI)))
18131826 else {
1814- let jC = br(x)
1815- let jD = getString(jC)
1816- if (isDefined(jD))
1817- then throw(((("The duck " + x) + " already got points from ONBOARD artifact from user ") + value(jD)))
1818- else ([StringEntry(jA, x), StringEntry(jC, b)] ++ jq(x, W)._1)
1827+ let jJ = by(z)
1828+ let jK = getString(jJ)
1829+ if (isDefined(jK))
1830+ then throw(((("The duck " + z) + " already got points from ONBOARD artifact from user ") + value(jK)))
1831+ else ([StringEntry(jH, z), StringEntry(jJ, b)] ++ jx(z, aa)._1)
18191832 }
18201833 }
18211834 }
18221835
18231836
1824-func jE (b,iG) = {
1825- let fi = iE(b, dJ, iG)
1826- let M = fi._2
1827- let iA = cX(fi._3[cG])
1828- let jF = bg(av, M)
1829- if ((valueOrElse(getInteger(jF), 0) > 0))
1837+func jL (b,iN) = {
1838+ let fp = iL(b, dQ, iN)
1839+ let O = fp._2
1840+ let iH = de(fp._3[cN])
1841+ let jM = bn(aC, O)
1842+ if ((valueOrElse(getInteger(jM), 0) > 0))
18301843 then throw("Presale artifact is already activated")
1831- else if ((parseIntValue(fi._3[cF]) > dw))
1832- then throw((((at + " ") + M) + " is not eligible for presale artifact"))
1844+ else if ((parseIntValue(fp._3[cM]) > dD))
1845+ then throw((((aA + " ") + O) + " is not eligible for presale artifact"))
18331846 else {
1834- let jk = jc(b, M, iA, dJ)
1835- (((jk._1 :+ IntegerEntry(jF, iA)) :+ StringEntry(jk._2, makeString(jk._3, ":"))) :+ StringEntry(jk._4, makeString(jk._5, ":")))
1847+ let jr = jj(b, O, iH, dQ)
1848+ (((jr._1 :+ IntegerEntry(jM, iH)) :+ StringEntry(jr._2, makeString(jr._3, ":"))) :+ StringEntry(jr._4, makeString(jr._5, ":")))
18361849 }
18371850 }
18381851
18391852
1840-func jG (x) = {
1841- let jH = valueOrElse(getInteger(cE, bC), 0)
1842- let iI = split(valueOrElse(getString(bx(x)), aB), "_")
1843- let ar = lastBlock.timestamp
1844- let jI = bI(cE, jH)
1845- let bK = jI[bG]
1846- let bL = jI[bH]
1847- if ((iI[bQ] != "T"))
1853+func jN (z) = {
1854+ let jO = valueOrElse(getInteger(cL, bJ), 0)
1855+ let iP = split(valueOrElse(getString(bE(z)), aI), "_")
1856+ let av = lastBlock.timestamp
1857+ let jP = bP(cL, jO)
1858+ let bR = jP[bN]
1859+ let bS = jP[bO]
1860+ if ((iP[bX] != "T"))
18481861 then false
18491862 else {
1850- let er = if (if (if ((parseIntValue(iI[bP]) == jH))
1851- then (bL[bN] == "INPROGRESS")
1863+ let ey = if (if (if ((parseIntValue(iP[bW]) == jO))
1864+ then (bS[bU] == "INPROGRESS")
18521865 else false)
1853- then (parseIntValue(bK[bM]) > ar)
1866+ then (parseIntValue(bR[bT]) > av)
18541867 else false)
18551868 then throw("Your duck is taking part in the tournament")
1856- else invoke(this, "exitTournamentInternal", [x], nil)
1857- if ((er == er))
1869+ else invoke(this, "exitTournamentInternal", [z], nil)
1870+ if ((ey == ey))
18581871 then false
18591872 else throw("Strict value is not equal to itself.")
18601873 }
18611874 }
18621875
18631876
1864-func jJ (jK,af,jL,b,jM,jN) = {
1865- let x = valueOrErrorMessage(getString(bv(b)), "You don't have a duck staked")
1866- if (jG(x))
1877+func jQ (jR,aj,jS,b,jT,jU) = {
1878+ let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
1879+ if (jN(z))
18671880 then throw("mergeInternal_checkTournament")
18681881 else {
1869- func jO (dZ,M) = {
1870- let iL = value(assetInfo(fromBase58String(M)))
1871- let iM = bf(M)
1872- let iN = valueOrErrorMessage(getInteger(iM), (("NFT " + iL.name) + " is not staked"))
1873- let iO = valueOrErrorMessage(getString(bc(M)), (("NFT " + iL.name) + " is orphaned"))
1874- if ((iO != b))
1875- then throw((at + " is not yours"))
1882+ func jV (eg,O) = {
1883+ let iS = value(assetInfo(fromBase58String(O)))
1884+ let iT = bm(O)
1885+ let iU = valueOrErrorMessage(getInteger(iT), (("NFT " + iS.name) + " is not staked"))
1886+ let iV = valueOrErrorMessage(getString(bj(O)), (("NFT " + iS.name) + " is orphaned"))
1887+ if ((iV != b))
1888+ then throw((aA + " is not yours"))
18761889 else {
1877- let iP = split(iL.description, "_")
1878- let cP = iP[cI]
1879- if (if ((dZ._3 != ""))
1880- then (dZ._3 != cP)
1890+ let iW = split(iS.description, "_")
1891+ let cW = iW[cP]
1892+ if (if ((eg._3 != ""))
1893+ then (eg._3 != cW)
18811894 else false)
18821895 then throw("Lands should be on the same continent to merge")
18831896 else {
1884- let cY = iP[cG]
1885- let jP = dZ._1
1886- let fS = valueOrErrorMessage(indexOf(jP, cY), "You haven't passed all the lands needed")
1887- let jQ = (take(jP, fS) + drop(jP, (fS + 1)))
1888- let iA = cX(cY)
1889- let jR = (dZ._2 + valueOrElse(getInteger(bg(av, M)), 0))
1890- let hk = valueOrElse(getInteger(bm(M)), 0)
1891- let jS = {
1892- let bY = cY
1893- if (("S" == bY))
1897+ let df = iW[cN]
1898+ let jW = eg._1
1899+ let fZ = valueOrErrorMessage(indexOf(jW, df), "You haven't passed all the lands needed")
1900+ let jX = (take(jW, fZ) + drop(jW, (fZ + 1)))
1901+ let iH = de(df)
1902+ let jY = (eg._2 + valueOrElse(getInteger(bn(aC, O)), 0))
1903+ let hr = valueOrElse(getInteger(bt(O)), 0)
1904+ let jZ = {
1905+ let cf = df
1906+ if (("S" == cf))
18941907 then 3
1895- else if (("M" == bY))
1908+ else if (("M" == cf))
18961909 then 4
1897- else if (("L" == bY))
1910+ else if (("L" == cf))
18981911 then 5
1899- else if (("XL" == bY))
1912+ else if (("XL" == cf))
19001913 then 6
19011914 else throw("Only S, M, L, XL can merge")
19021915 }
1903- if ((hk != jS))
1916+ if ((hr != jZ))
19041917 then throw("All lands should be maxed to merge")
19051918 else {
1906- let dB = iP[cF]
1907- let fO = fU(iP[cH])
1908- let fY = (lastBlock.timestamp - iN)
1909- if ((0 > fY))
1910- then throw(((("Saved timestamp is in future, saved = " + toString(iN)) + ", current = ") + toString(lastBlock.timestamp)))
1919+ let dI = iW[cM]
1920+ let fV = gb(iW[cO])
1921+ let gf = (lastBlock.timestamp - iU)
1922+ if ((0 > gf))
1923+ then throw(((("Saved timestamp is in future, saved = " + toString(iU)) + ", current = ") + toString(lastBlock.timestamp)))
19111924 else {
1912- let iR = iz(M, iA)
1913- let hj = (iA / cf)
1914- let iZ = fW(split(dZ._4, "_"), fO, fY, hj, iR)
1915- let ej = fM(dZ._6, fO, hj, -1)
1916- let jT = fM(dZ._10, fO, hj, -1)
1917- let gC = fM(dZ._9, fO, hj, 1)
1918- let jU = dZ._7
1919- let cz = indexOf(jU, M)
1920- if (!(isDefined(cz)))
1921- then throw(("Your staked lands don't contain " + M))
1925+ let iY = iG(O, iH)
1926+ let hq = (iH / cm)
1927+ let jg = gd(split(eg._4, "_"), fV, gf, hq, iY)
1928+ let eq = fT(eg._6, fV, hq, -1)
1929+ let ka = fT(eg._10, fV, hq, -1)
1930+ let gJ = fT(eg._9, fV, hq, 1)
1931+ let kb = eg._7
1932+ let cG = indexOf(kb, O)
1933+ if (!(isDefined(cG)))
1934+ then throw(("Your staked lands don't contain " + O))
19221935 else {
1923- let jV = be(M)
1924- let jW = valueOrElse(getString(jV), "")
1925- $Tuple10(jQ, jR, cP, iZ, ((((((((((((dZ._5 :+ DeleteEntry(bf(M))) :+ DeleteEntry(bi(at, M, b))) :+ DeleteEntry(dA(dB))) :+ DeleteEntry(bc(M))) :+ DeleteEntry(bm(M))) :+ DeleteEntry(dC(M, b))) :+ DeleteEntry(bg(av, M))) :+ DeleteEntry(dD(dB))) :+ DeleteEntry(bl(M))) :+ DeleteEntry(jV)) :+ Burn(fromBase58String(M), 1)) ++ (if ((jW != ""))
1926- then [DeleteEntry(dy(jW))]
1927- else nil)), ej, removeByIndex(jU, value(cz)), (dZ._8 + iA), gC, jT)
1936+ let kc = bl(O)
1937+ let kd = valueOrElse(getString(kc), "")
1938+ $Tuple10(jX, jY, cW, jg, ((((((((((((eg._5 :+ DeleteEntry(bm(O))) :+ DeleteEntry(bp(aA, O, b))) :+ DeleteEntry(dH(dI))) :+ DeleteEntry(bj(O))) :+ DeleteEntry(bt(O))) :+ DeleteEntry(dJ(O, b))) :+ DeleteEntry(bn(aC, O))) :+ DeleteEntry(dK(dI))) :+ DeleteEntry(bs(O))) :+ DeleteEntry(kc)) :+ Burn(fromBase58String(O), 1)) ++ (if ((kd != ""))
1939+ then [DeleteEntry(dF(kd))]
1940+ else nil)), eq, removeByIndex(kb, value(cG)), (eg._8 + iH), gJ, ka)
19281941 }
19291942 }
19301943 }
19321945 }
19331946 }
19341947
1935- let gV = bw(x)
1936- let hy = gU(gV)
1937- let fN = split(valueOrElse(getString(cN()), "0_0_0_0_0_0"), "_")
1938- let jX = cQ(b)
1939- let jY = getString(jX)
1940- let jZ = if (isDefined(jY))
1941- then split_51C(value(jY), "_")
1948+ let hc = bD(z)
1949+ let hF = hb(hc)
1950+ let fU = split(valueOrElse(getString(cU()), "0_0_0_0_0_0"), "_")
1951+ let ke = cX(b)
1952+ let kf = getString(ke)
1953+ let kg = if (isDefined(kf))
1954+ then split_51C(value(kf), "_")
19421955 else nil
1943- let ka = split(value(assetInfo(fromBase58String(jM[0]))).description, "_")[cI]
1944- let kb = split(valueOrElse(getString(cO(ka)), "0_0_0_0_0_0"), "_")
1945- let ek = {
1946- let eb = jM
1947- let ec = size(eb)
1948- let ed = $Tuple10(jL, 0, "", hy[aY], nil, fN, jZ, 0, split("0_0_0_0_0_0", "_"), kb)
1949- func ee (ef,eg) = if ((eg >= ec))
1950- then ef
1951- else jO(ef, eb[eg])
1952-
1953- func eh (ef,eg) = if ((eg >= ec))
1954- then ef
1956+ let kh = split(value(assetInfo(fromBase58String(jT[0]))).description, "_")[cP]
1957+ let ki = split(valueOrElse(getString(cV(kh)), "0_0_0_0_0_0"), "_")
1958+ let er = {
1959+ let ei = jT
1960+ let ej = size(ei)
1961+ let ek = $Tuple10(jS, 0, "", hF[bf], nil, fU, kg, 0, split("0_0_0_0_0_0", "_"), ki)
1962+ func el (em,en) = if ((en >= ej))
1963+ then em
1964+ else jV(em, ei[en])
1965+
1966+ func eo (em,en) = if ((en >= ej))
1967+ then em
19551968 else throw("List size exceeds 5")
19561969
1957- eh(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5)
1970+ eo(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5)
19581971 }
1959- let cP = ek._3
1960- let gw = valueOrErrorMessage(indexOf(aF, cP), ("Unknown continent: " + cP))
1961- let fV = gB(ek._9, (cX(jK) / cf))
1962- let hW = valueOrElse(getInteger(dx()), (dw + 1))
1963- let kc = toString(hW)
1964- let hX = Issue(dO(kc, jK), makeString([kc, jK, fV, cP], "_"), 1, 0, false)
1965- let bd = calculateAssetId(hX)
1966- let kd = toBase58String(bd)
1967- let it = makeString(el((jN > 0), split(hy[aZ], "_"), jN), "_")
1968- let ke = cR(b)
1969- let kf = valueOrElse(getInteger(ke), 0)
1970- $Tuple2((((((((((((((((ek._5 :+ (if ((size(ek._7) > 0))
1971- then StringEntry(jX, makeString_11C(ek._7, "_"))
1972- else DeleteEntry(jX))) :+ IntegerEntry(ke, if ((ek._8 > kf))
1972+ let cW = er._3
1973+ let gD = valueOrErrorMessage(indexOf(aM, cW), ("Unknown continent: " + cW))
1974+ let gc = gI(er._9, (de(jR) / cm))
1975+ let id = valueOrElse(getInteger(dE()), (dD + 1))
1976+ let kj = toString(id)
1977+ let ie = Issue(dV(kj, jR), makeString([kj, jR, gc, cW], "_"), 1, 0, false)
1978+ let bk = calculateAssetId(ie)
1979+ let kk = toBase58String(bk)
1980+ let iA = makeString(es((jU > 0), split(hF[bg], "_"), jU), "_")
1981+ let kl = cY(b)
1982+ let km = valueOrElse(getInteger(kl), 0)
1983+ $Tuple2((((((((((((((((er._5 :+ (if ((size(er._7) > 0))
1984+ then StringEntry(ke, makeString_11C(er._7, "_"))
1985+ else DeleteEntry(ke))) :+ IntegerEntry(kl, if ((er._8 > km))
19731986 then 0
1974- else (kf - ek._8))) :+ IntegerEntry(dx(), (hW + 1))) :+ hX) :+ StringEntry(dA(kc), kd)) :+ StringEntry(bc(kd), b)) :+ StringEntry(dD(kc), b)) :+ IntegerEntry(bg(av, kd), ek._2)) :+ IntegerEntry(bm(kd), af)) :+ IntegerEntry(dC(kd, b), af)) :+ StringEntry(gV, makeString([hy[aX], ek._4, it, hy[ba]], ":"))) :+ StringEntry(cN(), makeString(ek._6, "_"))) :+ StringEntry(cO(cP), makeString(ek._10, "_"))) :+ StringEntry(bx(x), makeString([cP, "L", kd], "_"))) :+ ScriptTransfer(addressFromStringValue(b), 1, bd)), kd)
1975- }
1976- }
1977-
1978-
1979-func kg (b,jM) = jJ("M", 3, "SSSS", b, jM, 0)
1980-
1981-
1982-func kh (b,jM) = jJ("L", 4, "SMM", b, jM, (ca * 4))
1983-
1984-
1985-func ki (b,jM) = jJ("XL", 5, "SSSML", b, jM, (ca * 47))
1986-
1987-
1988-func kj (b,jM) = jJ("XXL", 6, "LXL", b, jM, (ca * 54))
1989-
1990-
1991-func kk (b,jM) = {
1992- let bY = size(jM)
1993- if ((4 == bY))
1994- then kg(b, jM)
1995- else if ((3 == bY))
1996- then kh(b, jM)
1997- else if ((5 == bY))
1998- then ki(b, jM)
1999- else if ((2 == bY))
2000- then kj(b, jM)
1987+ else (km - er._8))) :+ IntegerEntry(dE(), (id + 1))) :+ ie) :+ StringEntry(dH(kj), kk)) :+ StringEntry(bj(kk), b)) :+ StringEntry(dK(kj), b)) :+ IntegerEntry(bn(aC, kk), er._2)) :+ IntegerEntry(bt(kk), aj)) :+ IntegerEntry(dJ(kk, b), aj)) :+ StringEntry(hc, makeString([hF[be], er._4, iA, hF[bh]], ":"))) :+ StringEntry(cU(), makeString(er._6, "_"))) :+ StringEntry(cV(cW), makeString(er._10, "_"))) :+ StringEntry(bE(z), makeString([cW, "L", kk], "_"))) :+ ScriptTransfer(addressFromStringValue(b), 1, bk)), kk)
1988+ }
1989+ }
1990+
1991+
1992+func kn (b,jT) = jQ("M", 3, "SSSS", b, jT, 0)
1993+
1994+
1995+func ko (b,jT) = jQ("L", 4, "SMM", b, jT, (ch * 4))
1996+
1997+
1998+func kp (b,jT) = jQ("XL", 5, "SSSML", b, jT, (ch * 47))
1999+
2000+
2001+func kq (b,jT) = jQ("XXL", 6, "LXL", b, jT, (ch * 54))
2002+
2003+
2004+func kr (b,jT) = {
2005+ let cf = size(jT)
2006+ if ((4 == cf))
2007+ then kn(b, jT)
2008+ else if ((3 == cf))
2009+ then ko(b, jT)
2010+ else if ((5 == cf))
2011+ then kp(b, jT)
2012+ else if ((2 == cf))
2013+ then kq(b, jT)
20012014 else throw("Unknown merge")
20022015 }
20032016
20042017
2005-func kl (fS) = if (if ((fS.originCaller != cA))
2006- then valueOrElse(getBoolean(by()), false)
2018+func ks (fZ) = if (if ((fZ.originCaller != cH))
2019+ then valueOrElse(getBoolean(bF()), false)
20072020 else false)
20082021 then throw("Contracts are under maintenance")
2009- else StringEntry(bb(toString(fS.originCaller)), toBase58String(fS.transactionId))
2010-
2011-
2012-@Callable(fS)
2013-func constructorV1 (km) = if ((fS.caller != this))
2022+ else StringEntry(bi(toString(fZ.originCaller)), toBase58String(fZ.transactionId))
2023+
2024+
2025+@Callable(fZ)
2026+func constructorV1 (kt) = if ((fZ.caller != this))
20142027 then throw("Permission denied")
2015- else [StringEntry(cu(), km)]
2016-
2017-
2018-
2019-@Callable(fS)
2020-func setBlocked (kn) = if ((fS.caller != this))
2028+ else [StringEntry(cB(), kt)]
2029+
2030+
2031+
2032+@Callable(fZ)
2033+func setBlocked (ku) = if ((fZ.caller != this))
20212034 then throw("permission denied")
2022- else [BooleanEntry(by(), kn)]
2023-
2024-
2025-
2026-@Callable(fS)
2035+ else [BooleanEntry(bF(), ku)]
2036+
2037+
2038+
2039+@Callable(fZ)
20272040 func stakeLand () = {
2028- let ko = kl(fS)
2029- if ((size(fS.payments) != 1))
2041+ let kv = ks(fZ)
2042+ if ((size(fZ.payments) != 1))
20302043 then throw("Exactly one payment required")
20312044 else {
2032- let kp = value(fS.payments[0])
2033- let bd = value(kp.assetId)
2034- let cm = toString(fS.caller)
2035- if ((kp.amount != 1))
2036- then throw((("NFT " + at) + " token should be attached as payment"))
2045+ let kw = value(fZ.payments[0])
2046+ let bk = value(kw.assetId)
2047+ let ct = toString(fZ.caller)
2048+ if ((kw.amount != 1))
2049+ then throw((("NFT " + aA) + " token should be attached as payment"))
20372050 else {
2038- let iL = value(assetInfo(bd))
2039- if ((iL.issuer != this))
2051+ let iS = value(assetInfo(bk))
2052+ if ((iS.issuer != this))
20402053 then throw("Unknown issuer of token")
2041- else if (!(contains(iL.name, at)))
2042- then throw((("Only NFT " + at) + " tokens are accepted"))
2054+ else if (!(contains(iS.name, aA)))
2055+ then throw((("Only NFT " + aA) + " tokens are accepted"))
20432056 else {
2044- let kq = drop(iL.name, 4)
2045- let dB = if (contains(kq, "XXL"))
2046- then dropRight(kq, 3)
2047- else if (contains(kq, "XL"))
2048- then dropRight(kq, 2)
2049- else dropRight(kq, 1)
2050- if (!(isDefined(parseInt(dB))))
2051- then throw(("Cannot parse land number from " + iL.name))
2057+ let kx = drop(iS.name, 4)
2058+ let dI = if (contains(kx, "XXL"))
2059+ then dropRight(kx, 3)
2060+ else if (contains(kx, "XL"))
2061+ then dropRight(kx, 2)
2062+ else dropRight(kx, 1)
2063+ if (!(isDefined(parseInt(dI))))
2064+ then throw(("Cannot parse land number from " + iS.name))
20522065 else {
2053- let M = toBase58String(bd)
2054- let iM = bf(M)
2055- if (isDefined(getInteger(iM)))
2056- then throw((("NFT " + iL.name) + " is already staked"))
2066+ let O = toBase58String(bk)
2067+ let iT = bm(O)
2068+ if (isDefined(getInteger(iT)))
2069+ then throw((("NFT " + iS.name) + " is already staked"))
20572070 else {
2058- let iP = split(iL.description, "_")
2059- let fO = fU(iP[cH])
2060- let iA = cX(iP[cG])
2061- let hj = (iA / cf)
2062- let ej = fT(fO, hj, 1)
2063- let kr = cO(iP[cI])
2064- let kb = split(valueOrElse(getString(kr), "0_0_0_0_0_0"), "_")
2065- let ks = makeString(fM(kb, fO, hj, 1), "_")
2066- let jX = cQ(cm)
2067- let jY = getString(jX)
2068- let jU = if (isDefined(jY))
2069- then split_51C(value(jY), "_")
2071+ let iW = split(iS.description, "_")
2072+ let fV = gb(iW[cO])
2073+ let iH = de(iW[cN])
2074+ let hq = (iH / cm)
2075+ let eq = ga(fV, hq, 1)
2076+ let ky = cV(iW[cP])
2077+ let ki = split(valueOrElse(getString(ky), "0_0_0_0_0_0"), "_")
2078+ let kz = makeString(fT(ki, fV, hq, 1), "_")
2079+ let ke = cX(ct)
2080+ let kf = getString(ke)
2081+ let kb = if (isDefined(kf))
2082+ then split_51C(value(kf), "_")
20702083 else nil
2071- if (containsElement(jU, M))
2072- then throw(("Your staked lands already contain " + M))
2073- else if ((size(jU) >= ax))
2074- then throw((("Your already staked max (" + toString(ax)) + ") lands"))
2084+ if (containsElement(kb, O))
2085+ then throw(("Your staked lands already contain " + O))
2086+ else if ((size(kb) >= aE))
2087+ then throw((("Your already staked max (" + toString(aE)) + ") lands"))
20752088 else {
2076- let hk = valueOrElse(getInteger(bm(M)), 0)
2077- let ke = cR(cm)
2078- let kt = valueOrElse(getInteger(ke), 0)
2079- let ku = invoke(cD, "onStakeUnstakeLand", [cm], nil)
2080- $Tuple2([IntegerEntry(iM, lastBlock.timestamp), IntegerEntry(bi(at, M, cm), lastBlock.timestamp), StringEntry(jX, makeString_11C((jU :+ M), "_")), IntegerEntry(ke, (kt + iA)), StringEntry(bc(M), cm), StringEntry(dD(dB), cm), IntegerEntry(dC(M, cm), hk), StringEntry(cN(), ej), StringEntry(kr, ks), ko], ku)
2089+ let hr = valueOrElse(getInteger(bt(O)), 0)
2090+ let kl = cY(ct)
2091+ let kA = valueOrElse(getInteger(kl), 0)
2092+ let kB = invoke(cK, "onStakeUnstakeLand", [ct], nil)
2093+ $Tuple2([IntegerEntry(iT, lastBlock.timestamp), IntegerEntry(bp(aA, O, ct), lastBlock.timestamp), StringEntry(ke, makeString_11C((kb :+ O), "_")), IntegerEntry(kl, (kA + iH)), StringEntry(bj(O), ct), StringEntry(dK(dI), ct), IntegerEntry(dJ(O, ct), hr), StringEntry(cU(), eq), StringEntry(ky, kz), kv], kB)
20812094 }
20822095 }
20832096 }
20882101
20892102
20902103
2091-@Callable(fS)
2092-func unstakeLand (iG) = {
2093- let ko = kl(fS)
2094- if ((size(fS.payments) != 0))
2104+@Callable(fZ)
2105+func unstakeLand (iN) = {
2106+ let kv = ks(fZ)
2107+ if ((size(fZ.payments) != 0))
20952108 then throw("No payments required")
20962109 else {
2097- let b = toString(fS.caller)
2098- let fi = iE(b, dI, iG)
2099- let M = fi._2
2100- let iP = fi._3
2101- let jX = cQ(b)
2102- let fO = fU(iP[cH])
2103- let iA = cX(iP[cG])
2104- let hj = (iA / cf)
2105- let ej = fT(fO, hj, -1)
2106- let kr = cO(iP[cI])
2107- let kb = split(valueOrElse(getString(kr), "0_0_0_0_0_0"), "_")
2108- let ks = makeString(fM(kb, fO, hj, -1), "_")
2109- let jk = jc(b, M, iA, dI)
2110- let jU = split_51C(valueOrElse(getString(jX), ""), "_")
2111- let cz = indexOf(jU, M)
2112- if (!(isDefined(cz)))
2113- then throw(("Your staked lands don't contain " + M))
2110+ let b = toString(fZ.caller)
2111+ let fp = iL(b, dP, iN)
2112+ let O = fp._2
2113+ let iW = fp._3
2114+ let ke = cX(b)
2115+ let fV = gb(iW[cO])
2116+ let iH = de(iW[cN])
2117+ let hq = (iH / cm)
2118+ let eq = ga(fV, hq, -1)
2119+ let ky = cV(iW[cP])
2120+ let ki = split(valueOrElse(getString(ky), "0_0_0_0_0_0"), "_")
2121+ let kz = makeString(fT(ki, fV, hq, -1), "_")
2122+ let jr = jj(b, O, iH, dP)
2123+ let kb = split_51C(valueOrElse(getString(ke), ""), "_")
2124+ let cG = indexOf(kb, O)
2125+ if (!(isDefined(cG)))
2126+ then throw(("Your staked lands don't contain " + O))
21142127 else {
2115- let ar = lastBlock.timestamp
2116- let kv = valueOrElse(getInteger(cC, bz(b)), 0)
2117- if ((kv >= ar))
2118- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(kv)))
2128+ let av = lastBlock.timestamp
2129+ let kC = valueOrElse(getInteger(cJ, bG(b)), 0)
2130+ if ((kC >= av))
2131+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(kC)))
21192132 else {
2120- let kw = (valueOrElse(getInteger(cD, a(b)), 0) + cb)
2121- if ((kw > ar))
2122- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(kw)))
2133+ let kD = (valueOrElse(getInteger(cK, a(b)), 0) + ci)
2134+ if ((kD > av))
2135+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(kD)))
21232136 else {
2124- let ke = cR(b)
2125- let kf = valueOrElse(getInteger(ke), 0)
2126- let kx = if ((iA > kf))
2137+ let kl = cY(b)
2138+ let km = valueOrElse(getInteger(kl), 0)
2139+ let kE = if ((iH > km))
21272140 then 0
2128- else (kf - iA)
2129- let ku = invoke(cD, "onStakeUnstakeLand", [b], nil)
2130- $Tuple2([ScriptTransfer(fS.caller, 1, fromBase58String(M)), DeleteEntry(bf(M)), DeleteEntry(bi(at, M, b)), StringEntry(cN(), ej), StringEntry(kr, ks), StringEntry(jk._2, makeString(jk._3, ":")), if ((size(jU) > 1))
2131- then StringEntry(jX, makeString_11C(removeByIndex(jU, value(cz)), "_"))
2132- else DeleteEntry(jX), IntegerEntry(ke, kx), ko], ku)
2141+ else (km - iH)
2142+ let kB = invoke(cK, "onStakeUnstakeLand", [b], nil)
2143+ $Tuple2([ScriptTransfer(fZ.caller, 1, fromBase58String(O)), DeleteEntry(bm(O)), DeleteEntry(bp(aA, O, b)), StringEntry(cU(), eq), StringEntry(ky, kz), StringEntry(jr._2, makeString(jr._3, ":")), if ((size(kb) > 1))
2144+ then StringEntry(ke, makeString_11C(removeByIndex(kb, value(cG)), "_"))
2145+ else DeleteEntry(ke), IntegerEntry(kl, kE), kv], kB)
21332146 }
21342147 }
21352148 }
21382151
21392152
21402153
2141-@Callable(fS)
2154+@Callable(fZ)
21422155 func stakeDuck () = {
2143- let ko = kl(fS)
2144- if ((size(fS.payments) != 1))
2156+ let kv = ks(fZ)
2157+ if ((size(fZ.payments) != 1))
21452158 then throw("Exactly one payment required")
21462159 else {
2147- let kp = value(fS.payments[0])
2148- let bd = value(kp.assetId)
2149- let cm = toString(fS.caller)
2150- if ((kp.amount != 1))
2151- then throw((("NFT " + au) + " token should be attached as payment"))
2160+ let kw = value(fZ.payments[0])
2161+ let bk = value(kw.assetId)
2162+ let ct = toString(fZ.caller)
2163+ if ((kw.amount != 1))
2164+ then throw((("NFT " + aB) + " token should be attached as payment"))
21522165 else {
2153- let iL = value(assetInfo(bd))
2154- if (if ((iL.issuer != dg))
2155- then (iL.issuer != dh)
2166+ let iS = value(assetInfo(bk))
2167+ if (if ((iS.issuer != dn))
2168+ then (iS.issuer != do)
21562169 else false)
2157- then throw((("Unknown issuer of " + au) + " token"))
2158- else if (!(contains(iL.name, au)))
2159- then throw((("Only NFT " + au) + " tokens are accepted"))
2170+ then throw((("Unknown issuer of " + aB) + " token"))
2171+ else if (!(contains(iS.name, aB)))
2172+ then throw((("Only NFT " + aB) + " tokens are accepted"))
21602173 else {
2161- let ky = toBase58String(bd)
2162- let iM = bf(ky)
2163- if (isDefined(getInteger(iM)))
2164- then throw((("NFT " + iL.name) + " is already staked"))
2165- else if (isDefined(getString(bv(cm))))
2166- then throw(("You already staked one duck: " + iL.name))
2167- else if (jG(ky))
2174+ let kF = toBase58String(bk)
2175+ let iT = bm(kF)
2176+ if (isDefined(getInteger(iT)))
2177+ then throw((("NFT " + iS.name) + " is already staked"))
2178+ else if (isDefined(getString(bC(ct))))
2179+ then throw(("You already staked one duck: " + iS.name))
2180+ else if (jN(kF))
21682181 then throw("stakeDuck_checkTournament")
21692182 else {
2170- let kz = bx(ky)
2171- let kA = getString(kz)
2172- let gV = bw(ky)
2173- let kB = getString(gV)
2174- let il = w(ky)
2175- let im = aa(valueOrElse(getInteger(A(ky)), 0))
2176- let kC = valueOrElse(getInteger(il), im)
2177- ([IntegerEntry(iM, lastBlock.timestamp), IntegerEntry(bi(au, toBase58String(bd), cm), lastBlock.timestamp), StringEntry(bu(ky), cm), StringEntry(bv(cm), ky)] ++ (if (isDefined(kA))
2183+ let kG = bE(kF)
2184+ let kH = getString(kG)
2185+ let hc = bD(kF)
2186+ let kI = getString(hc)
2187+ let is = y(kF)
2188+ let it = ae(valueOrElse(getInteger(C(kF)), 0))
2189+ let kJ = valueOrElse(getInteger(is), it)
2190+ ([IntegerEntry(iT, lastBlock.timestamp), IntegerEntry(bp(aB, toBase58String(bk), ct), lastBlock.timestamp), StringEntry(bB(kF), ct), StringEntry(bC(ct), kF)] ++ (if (isDefined(kH))
21782191 then nil
2179- else ([StringEntry(kz, aB)] ++ (if (isDefined(kB))
2192+ else ([StringEntry(kG, aI)] ++ (if (isDefined(kI))
21802193 then nil
2181- else (([StringEntry(gV, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(il, kC)) :+ ko)))))
2194+ else (([StringEntry(hc, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(is, kJ)) :+ kv)))))
21822195 }
21832196 }
21842197 }
21872200
21882201
21892202
2190-@Callable(fS)
2191-func unstakeDuck (ky) = {
2192- let ko = kl(fS)
2193- if ((size(fS.payments) != 0))
2203+@Callable(fZ)
2204+func unstakeDuck (kF) = {
2205+ let kv = ks(fZ)
2206+ if ((size(fZ.payments) != 0))
21942207 then throw("No payments required")
21952208 else {
2196- let bd = fromBase58String(ky)
2197- let cm = toString(fS.caller)
2198- let iL = value(assetInfo(bd))
2199- let iM = bf(ky)
2200- if (!(isDefined(getInteger(iM))))
2201- then throw((("NFT " + iL.name) + " is not staked"))
2202- else if (!(isDefined(getString(bv(cm)))))
2203- then throw((("The duck " + iL.name) + " is not staked"))
2209+ let bk = fromBase58String(kF)
2210+ let ct = toString(fZ.caller)
2211+ let iS = value(assetInfo(bk))
2212+ let iT = bm(kF)
2213+ if (!(isDefined(getInteger(iT))))
2214+ then throw((("NFT " + iS.name) + " is not staked"))
2215+ else if (!(isDefined(getString(bC(ct)))))
2216+ then throw((("The duck " + iS.name) + " is not staked"))
22042217 else {
2205- let iO = valueOrErrorMessage(getString(bu(ky)), (("NFT " + iL.name) + " is orphaned"))
2206- if ((iO != cm))
2218+ let iV = valueOrErrorMessage(getString(bB(kF)), (("NFT " + iS.name) + " is orphaned"))
2219+ if ((iV != ct))
22072220 then throw("Staked NFT is not yours")
2208- else if (jG(ky))
2221+ else if (jN(kF))
22092222 then throw("unstakeDuck_checkTournament")
22102223 else {
2211- let il = w(ky)
2212- let im = aa(valueOrElse(getInteger(A(ky)), 0))
2213- let am = valueOrElse(getInteger(il), im)
2214- if ((im > am))
2215- then throw((("Please heal your duck to " + toString(im)) + "hp before unstaking"))
2216- else [ScriptTransfer(fS.caller, 1, bd), DeleteEntry(iM), DeleteEntry(il), DeleteEntry(bx(ky)), DeleteEntry(bu(ky)), DeleteEntry(bi(au, ky, cm)), DeleteEntry(bv(cm)), ko]
2224+ let is = y(kF)
2225+ let it = ae(valueOrElse(getInteger(C(kF)), 0))
2226+ let aq = valueOrElse(getInteger(is), it)
2227+ if ((it > aq))
2228+ then throw((("Please heal your duck to " + toString(it)) + "hp before unstaking"))
2229+ else [ScriptTransfer(fZ.caller, 1, bk), DeleteEntry(iT), DeleteEntry(is), DeleteEntry(bE(kF)), DeleteEntry(bB(kF)), DeleteEntry(bp(aB, kF, ct)), DeleteEntry(bC(ct)), kv]
22172230 }
22182231 }
22192232 }
22212234
22222235
22232236
2224-@Callable(fS)
2225-func claimRes (dQ,kD) = {
2226- let ko = kl(fS)
2227- if ((size(fS.payments) != 0))
2237+@Callable(fZ)
2238+func claimRes (dX,kK) = {
2239+ let kv = ks(fZ)
2240+ if ((size(fZ.payments) != 0))
22282241 then throw("No payments required")
22292242 else {
2230- let b = toString(fS.originCaller)
2231- let er = iQ(b, dQ, dI, kD)
2232- let x = valueOrErrorMessage(getString(bv(b)), "You don't have a duck staked")
2233- $Tuple2(((((er._1 ++ jq(x, fraction(O, dQ, ce))._1) :+ StringEntry(er._2, makeString(er._3, ":"))) :+ StringEntry(er._4, makeString(er._5, ":"))) :+ ko), er._3[aY])
2234- }
2235- }
2236-
2237-
2238-
2239-@Callable(fS)
2240-func claimResToWH (dQ,kD) = {
2241- let ko = kl(fS)
2242- if ((size(fS.payments) != 0))
2243+ let b = toString(fZ.originCaller)
2244+ let ey = iX(b, dX, dP, kK)
2245+ let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
2246+ $Tuple2(((((ey._1 ++ jx(z, fraction(S, dX, cl))._1) :+ StringEntry(ey._2, makeString(ey._3, ":"))) :+ StringEntry(ey._4, makeString(ey._5, ":"))) :+ kv), ey._3[bf])
2247+ }
2248+ }
2249+
2250+
2251+
2252+@Callable(fZ)
2253+func claimResToWH (dX,kK) = {
2254+ let kv = ks(fZ)
2255+ if ((size(fZ.payments) != 0))
22432256 then throw("No payments required")
22442257 else {
2245- let b = toString(fS.originCaller)
2246- let er = iQ(b, dQ, dH, kD)
2247- $Tuple2(((((er._1 ++ jw(b, fraction(O, dQ, ce))._1) :+ StringEntry(er._2, makeString(er._3, ":"))) :+ StringEntry(er._4, makeString(er._5, ":"))) :+ ko), er._5[aP])
2248- }
2249- }
2250-
2251-
2252-
2253-@Callable(fS)
2254-func flight (ia,ib) = {
2255- let ko = kl(fS)
2256- if ((size(fS.payments) != 0))
2258+ let b = toString(fZ.originCaller)
2259+ let ey = iX(b, dX, dO, kK)
2260+ $Tuple2(((((ey._1 ++ jD(b, fraction(S, dX, cl))._1) :+ StringEntry(ey._2, makeString(ey._3, ":"))) :+ StringEntry(ey._4, makeString(ey._5, ":"))) :+ kv), ey._5[aW])
2261+ }
2262+ }
2263+
2264+
2265+
2266+@Callable(fZ)
2267+func flight (ih,ii) = {
2268+ let kv = ks(fZ)
2269+ if ((size(fZ.payments) != 0))
22572270 then throw("No payments required")
22582271 else {
2259- let bA = toString(fS.caller)
2260- let gx = hZ(bA, ia, ib)
2261- let x = gx._2
2262- let ih = gx._4
2263- let kE = split(ih, "_")
2264- let kF = (kE[bQ] == "T")
2265- if (if (!(kF))
2266- then jG(x)
2272+ let bH = toString(fZ.caller)
2273+ let gE = ig(bH, ih, ii)
2274+ let z = gE._2
2275+ let io = gE._4
2276+ let kL = split(io, "_")
2277+ let kM = (kL[bX] == "T")
2278+ if (if (!(kM))
2279+ then jN(z)
22672280 else false)
22682281 then throw("flight_checkTournament")
22692282 else {
2270- let kG = if (kF)
2283+ let kN = if (kM)
22712284 then {
2272- let jH = valueOrElse(getInteger(cE, bC), 0)
2273- let ar = lastBlock.timestamp
2274- let jI = bI(cE, jH)
2275- let bK = jI[bG]
2276- let bL = jI[bH]
2277- if (if (if ((parseIntValue(kE[bP]) != jH))
2285+ let jO = valueOrElse(getInteger(cL, bJ), 0)
2286+ let av = lastBlock.timestamp
2287+ let jP = bP(cL, jO)
2288+ let bR = jP[bN]
2289+ let bS = jP[bO]
2290+ if (if (if ((parseIntValue(kL[bW]) != jO))
22782291 then true
2279- else (bL[bN] != "INPROGRESS"))
2292+ else (bS[bU] != "INPROGRESS"))
22802293 then true
2281- else (ar > parseIntValue(bK[bM])))
2294+ else (av > parseIntValue(bR[bT])))
22822295 then unit
22832296 else {
2284- let kH = parseIntValue(kE[bR])
2285- let kI = parseIntValue(bL[bO])
2286- if ((kI >= kH))
2297+ let kO = parseIntValue(kL[bY])
2298+ let kP = parseIntValue(bS[bV])
2299+ if ((kP >= kO))
22872300 then unit
2288- else invoke(cE, "updateDynamicData", [x, kH], nil)
2301+ else invoke(cL, "updateDynamicData", [z, kO], nil)
22892302 }
22902303 }
22912304 else unit
2292- if ((kG == kG))
2305+ if ((kN == kN))
22932306 then {
2294- let kz = bx(x)
2295- let iI = valueOrElse(getString(kz), aB)
2296- if ((ih == iI))
2307+ let kG = bE(z)
2308+ let iP = valueOrElse(getString(kG), aI)
2309+ if ((io == iP))
22972310 then throw("You can't fly to the same location")
22982311 else {
2299- let fF = C(x)
2300- let iu = valueOrElse(getString(fF), ",;,_,;,_,;,_,;,_,;,_,;,")
2301- let kJ = es(iu, gx._5)
2302- let iw = kJ._1
2303- let ix = kJ._2
2304- $Tuple2(([StringEntry(kz, if ((gx._1 > 0))
2305- then ih
2306- else iI), StringEntry(fF, iw), IntegerEntry(w(x), gx._1), ko] ++ (if (ix)
2307- then [StringEntry(I(x), "0_0_0_0_0")]
2308- else (nil ++ jq(x, if ((gx._1 > 0))
2309- then P
2310- else Q)._1))), gx._3)
2312+ let fM = E(z)
2313+ let iB = valueOrElse(getString(fM), ",;,_,;,_,;,_,;,_,;,_,;,")
2314+ let kQ = ez(iB, gE._5)
2315+ let iD = kQ._1
2316+ let iE = kQ._2
2317+ $Tuple2(([StringEntry(kG, if ((gE._1 > 0))
2318+ then io
2319+ else iP), StringEntry(fM, iD), IntegerEntry(y(z), gE._1), kv] ++ (if (iE)
2320+ then [StringEntry(K(z), "0_0_0_0_0")]
2321+ else (nil ++ jx(z, if ((gE._1 > 0))
2322+ then T
2323+ else U)._1))), gE._3)
23112324 }
23122325 }
23132326 else throw("Strict value is not equal to itself.")
23172330
23182331
23192332
2320-@Callable(fS)
2321-func heal (kK,kL,kM) = {
2322- let ko = kl(fS)
2323- if (if (if ((0 > kK))
2333+@Callable(fZ)
2334+func heal (kR,kS,kT) = {
2335+ let kv = ks(fZ)
2336+ if (if (if ((0 > kR))
23242337 then true
2325- else (0 > kL))
2338+ else (0 > kS))
23262339 then true
2327- else (0 > kM))
2340+ else (0 > kT))
23282341 then throw("Quantity cannot be negative")
23292342 else {
2330- let x = valueOrErrorMessage(getString(bv(toString(fS.caller))), "You don't have a duck staked")
2331- if (jG(x))
2343+ let z = valueOrErrorMessage(getString(bC(toString(fZ.caller))), "You don't have a duck staked")
2344+ if (jN(z))
23322345 then throw("heal_checkTournament")
23332346 else {
2334- let kN = [kK, kL, kM]
2335- let il = w(x)
2336- let im = aa(valueOrElse(getInteger(A(x)), 0))
2337- let kO = valueOrElse(getInteger(il), im)
2338- if ((kO >= im))
2339- then throw((("HP should be < " + toString(im)) + " to heal"))
2347+ let kU = [kR, kS, kT]
2348+ let is = y(z)
2349+ let it = ae(valueOrElse(getInteger(C(z)), 0))
2350+ let kV = valueOrElse(getInteger(is), it)
2351+ if ((kV >= it))
2352+ then throw((("HP should be < " + toString(it)) + " to heal"))
23402353 else {
2341- let gV = bw(x)
2342- let hy = gU(gV)
2343- let kP = if ((hy[ba] == ""))
2354+ let hc = bD(z)
2355+ let hF = hb(hc)
2356+ let kW = if ((hF[bh] == ""))
23442357 then nil
2345- else split_4C(hy[ba], "_")
2346- func kQ (dZ,bT) = {
2347- let cW = dZ._2
2348- let go = if ((size(kP) > cW))
2349- then parseIntValue(kP[cW])
2358+ else split_4C(hF[bh], "_")
2359+ func kX (eg,ca) = {
2360+ let dd = eg._2
2361+ let gv = if ((size(kW) > dd))
2362+ then parseIntValue(kW[dd])
23502363 else 0
2351- if ((3 > cW))
2364+ if ((3 > dd))
23522365 then {
2353- let kR = kN[cW]
2354- if ((kR > go))
2355- then throw(((("You have only " + toString(go)) + " of ") + aE[cW]))
2356- else $Tuple3((dZ._1 :+ toString((go - kR))), (cW + 1), (dZ._3 + (parseIntValue(split(bT, "_")[aK]) * kR)))
2366+ let kY = kU[dd]
2367+ if ((kY > gv))
2368+ then throw(((("You have only " + toString(gv)) + " of ") + aL[dd]))
2369+ else $Tuple3((eg._1 :+ toString((gv - kY))), (dd + 1), (eg._3 + (parseIntValue(split(ca, "_")[aR]) * kY)))
23572370 }
2358- else $Tuple3((dZ._1 :+ toString(go)), (cW + 1), dZ._3)
2371+ else $Tuple3((eg._1 :+ toString(gv)), (dd + 1), eg._3)
23592372 }
23602373
2361- let er = {
2362- let eb = aI
2363- let ec = size(eb)
2364- let ed = $Tuple3(nil, 0, 0)
2365- func ee (ef,eg) = if ((eg >= ec))
2366- then ef
2367- else kQ(ef, eb[eg])
2368-
2369- func eh (ef,eg) = if ((eg >= ec))
2370- then ef
2374+ let ey = {
2375+ let ei = aP
2376+ let ej = size(ei)
2377+ let ek = $Tuple3(nil, 0, 0)
2378+ func el (em,en) = if ((en >= ej))
2379+ then em
2380+ else kX(em, ei[en])
2381+
2382+ func eo (em,en) = if ((en >= ej))
2383+ then em
23712384 else throw("List size exceeds 50")
23722385
2373- eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 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)
2386+ eo(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(ek, 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)
23742387 }
2375- let kS = min([im, (kO + er._3)])
2376- $Tuple2(([IntegerEntry(il, kS), StringEntry(gV, makeString_2C([hy[aX], hy[aY], hy[aZ], makeString(er._1, "_")], ":")), ko] ++ jq(x, (X * ((kK + kL) + kM)))._1), kS)
2388+ let kZ = min([it, (kV + ey._3)])
2389+ $Tuple2(([IntegerEntry(is, kZ), StringEntry(hc, makeString_2C([hF[be], hF[bf], hF[bg], makeString(ey._1, "_")], ":")), kv] ++ jx(z, (ab * ((kR + kS) + kT)))._1), kZ)
23772390 }
23782391 }
23792392 }
23812394
23822395
23832396
2384-@Callable(fS)
2397+@Callable(fZ)
23852398 func healES () = {
2386- let ko = kl(fS)
2387- if ((size(fS.payments) != 1))
2399+ let kv = ks(fZ)
2400+ if ((size(fZ.payments) != 1))
23882401 then throw("Exactly one payment required")
23892402 else {
2390- let kp = value(fS.payments[0])
2391- if ((kp.assetId != bX))
2403+ let kw = value(fZ.payments[0])
2404+ if ((kw.assetId != ce))
23922405 then throw("Allowed USDT payment only!")
23932406 else {
2394- let x = valueOrErrorMessage(getString(bv(toString(fS.caller))), "You don't have a duck staked")
2395- if (jG(x))
2407+ let z = valueOrErrorMessage(getString(bC(toString(fZ.caller))), "You don't have a duck staked")
2408+ if (jN(z))
23962409 then throw("healES_checkTournament")
23972410 else {
2398- let il = w(x)
2399- let im = aa(valueOrElse(getInteger(A(x)), 0))
2400- let kO = valueOrElse(getInteger(il), im)
2401- if ((kO > 0))
2411+ let is = y(z)
2412+ let it = ae(valueOrElse(getInteger(C(z)), 0))
2413+ let kV = valueOrElse(getInteger(is), it)
2414+ if ((kV > 0))
24022415 then throw("HP should be 0 to call Emergency Service")
24032416 else {
2404- let gV = bw(x)
2405- let hy = gU(gV)
2406- let kP = if ((hy[ba] == ""))
2417+ let hc = bD(z)
2418+ let hF = hb(hc)
2419+ let kW = if ((hF[bh] == ""))
24072420 then nil
2408- else split_4C(hy[ba], "_")
2409- let kT = if ((size(kP) > 0))
2410- then parseIntValue(kP[0])
2421+ else split_4C(hF[bh], "_")
2422+ let la = if ((size(kW) > 0))
2423+ then parseIntValue(kW[0])
24112424 else 0
2412- let kU = if ((size(kP) > 1))
2413- then parseIntValue(kP[1])
2425+ let lb = if ((size(kW) > 1))
2426+ then parseIntValue(kW[1])
24142427 else 0
2415- let kV = if ((size(kP) > 2))
2416- then parseIntValue(kP[2])
2428+ let lc = if ((size(kW) > 2))
2429+ then parseIntValue(kW[2])
24172430 else 0
2418- if (if (if ((kT > 0))
2431+ if (if (if ((la > 0))
24192432 then true
2420- else (kU > 0))
2433+ else (lb > 0))
24212434 then true
2422- else (kV > 0))
2435+ else (lc > 0))
24232436 then throw("You have to use own Medical Kit")
24242437 else {
2425- let kW = getString(cB, bB())
2426- let kX = if (isDefined(kW))
2427- then split_4C(value(kW), "_")
2438+ let ld = getString(cI, bI())
2439+ let le = if (isDefined(ld))
2440+ then split_4C(value(ld), "_")
24282441 else nil
2429- let kY = if ((size(kX) > 0))
2430- then parseIntValue(kX[0])
2442+ let lf = if ((size(le) > 0))
2443+ then parseIntValue(le[0])
24312444 else 0
2432- if ((0 >= kY))
2445+ if ((0 >= lf))
24332446 then throw("There are no Medical Kits L1 at Emergency Service storage")
24342447 else {
2435- let kS = (kO + parseIntValue(split(aI[0], "_")[aK]))
2436- let kZ = makeString([toString((kY - 1)), removeByIndex(kX, 0)], "_")
2437- let bT = split(aI[0], "_")
2438- let la = bS(bT)
2439- let lb = fraction((la * aD), aC, (ce * aN))
2440- if ((kp.amount != lb))
2441- then throw(("Payment attached should be " + toString(lb)))
2448+ let kZ = (kV + parseIntValue(split(aP[0], "_")[aR]))
2449+ let lg = makeString([toString((lf - 1)), removeByIndex(le, 0)], "_")
2450+ let ca = split(aP[0], "_")
2451+ let lh = bZ(ca)
2452+ let li = fraction((lh * aK), aJ, (cl * aU))
2453+ if ((kw.amount != li))
2454+ then throw(("Payment attached should be " + toString(li)))
24422455 else {
2443- let er = cS(invoke(cB, "updateEsStorage", [kZ], [AttachedPayment(bX, lb)]))
2444- $Tuple2(([IntegerEntry(il, kS), ko] ++ jq(x, R)._1), er)
2456+ let ey = cZ(invoke(cI, "updateEsStorage", [lg], [AttachedPayment(ce, li)]))
2457+ $Tuple2(([IntegerEntry(is, kZ), kv] ++ jx(z, V)._1), ey)
24452458 }
24462459 }
24472460 }
24532466
24542467
24552468
2456-@Callable(fS)
2457-func updateBackpack (x,lc) = if ((fS.caller != cB))
2469+@Callable(fZ)
2470+func updateBackpack (z,lj) = if ((fZ.caller != cI))
24582471 then throw("permission denied")
2459- else $Tuple2([StringEntry(bw(x), lc)], lc)
2460-
2461-
2462-
2463-@Callable(fS)
2472+ else $Tuple2([StringEntry(bD(z), lj)], lj)
2473+
2474+
2475+
2476+@Callable(fZ)
24642477 func commitForRandom () = {
2465- let ko = kl(fS)
2466- let ld = (height + cL)
2467- let b = toString(fS.caller)
2468- $Tuple2(([IntegerEntry(cM(b), ld)] :+ ko), ld)
2469- }
2470-
2471-
2472-
2473-@Callable(fS)
2478+ let kv = ks(fZ)
2479+ let lk = (height + cS)
2480+ let b = toString(fZ.caller)
2481+ $Tuple2(([IntegerEntry(cT(b), lk)] :+ kv), lk)
2482+ }
2483+
2484+
2485+
2486+@Callable(fZ)
24742487 func buySLand () = {
2475- let ko = kl(fS)
2476- if ((size(fS.payments) != 1))
2488+ let kv = ks(fZ)
2489+ if ((size(fZ.payments) != 1))
24772490 then throw("Exactly one payment required")
24782491 else {
2479- let kp = value(fS.payments[0])
2480- if ((kp.assetId != bX))
2492+ let kw = value(fZ.payments[0])
2493+ if ((kw.assetId != ce))
24812494 then throw("Allowed USDT payment only!")
2482- else if ((kp.amount != dp))
2483- then throw(("Payment attached should be " + toString(dp)))
2495+ else if ((kw.amount != dw))
2496+ then throw(("Payment attached should be " + toString(dw)))
24842497 else {
2485- let er = hS(fS.caller, fS.transactionId)
2486- $Tuple2((((er._1 :+ ScriptTransfer(cB, kp.amount, bX)) ++ jw(toString(fS.caller), T)._1) :+ ko), er._2._1)
2498+ let ey = hZ(fZ.caller, fZ.transactionId)
2499+ $Tuple2((((ey._1 :+ ScriptTransfer(cI, kw.amount, ce)) ++ jD(toString(fZ.caller), X)._1) :+ kv), ey._2._1)
24872500 }
24882501 }
24892502 }
24902503
24912504
24922505
2493-@Callable(fS)
2494-func expedition (ia,ib) = {
2495- let ko = kl(fS)
2496- if ((size(fS.payments) != 0))
2506+@Callable(fZ)
2507+func expedition (ih,ii) = {
2508+ let kv = ks(fZ)
2509+ if ((size(fZ.payments) != 0))
24972510 then throw("No payments required")
24982511 else {
2499- let er = ir(fS.caller, fS.transactionId, ia, ib)
2500- let x = valueOrErrorMessage(getString(bv(toString(fS.caller))), "You don't have a duck staked")
2501- if (jG(x))
2512+ let ey = iy(fZ.caller, fZ.transactionId, ih, ii)
2513+ let z = valueOrErrorMessage(getString(bC(toString(fZ.caller))), "You don't have a duck staked")
2514+ if (jN(z))
25022515 then throw("expedition_checkTournament")
2503- else $Tuple2(((er._1 ++ jq(x, T)._1) :+ ko), $Tuple2(er._2, er._3))
2504- }
2505- }
2506-
2507-
2508-
2509-@Callable(fS)
2510-func upgradeInfra (M) = {
2511- let ko = kl(fS)
2512- if ((size(fS.payments) != 0))
2516+ else $Tuple2(((ey._1 ++ jx(z, X)._1) :+ kv), $Tuple2(ey._2, ey._3))
2517+ }
2518+ }
2519+
2520+
2521+
2522+@Callable(fZ)
2523+func upgradeInfra (O) = {
2524+ let kv = ks(fZ)
2525+ if ((size(fZ.payments) != 0))
25132526 then throw("No payments required")
25142527 else {
2515- let er = jd(true, fS.caller, 0, M)
2516- let x = valueOrErrorMessage(getString(bv(toString(fS.caller))), "You don't have a duck staked")
2517- $Tuple2(((er._1 :+ ko) ++ jq(x, fraction(U, er._3, ce))._1), er._2)
2518- }
2519- }
2520-
2521-
2522-
2523-@Callable(fS)
2524-func activateArtifact (le,lf) = {
2525- let ko = kl(fS)
2526- if ((size(fS.payments) != 0))
2528+ let ey = jk(true, fZ.caller, 0, O)
2529+ let z = valueOrErrorMessage(getString(bC(toString(fZ.caller))), "You don't have a duck staked")
2530+ $Tuple2(((ey._1 :+ kv) ++ jx(z, fraction(Y, ey._3, cl))._1), ey._2)
2531+ }
2532+ }
2533+
2534+
2535+
2536+@Callable(fZ)
2537+func activateArtifact (ll,lm) = {
2538+ let kv = ks(fZ)
2539+ if ((size(fZ.payments) != 0))
25272540 then throw("No payments required")
25282541 else {
2529- let b = toString(fS.caller)
2530- let er = {
2531- let bY = le
2532- if (("PRESALE" == bY))
2533- then jE(b, lf)
2534- else if (("ONBOARD" == bY))
2535- then jx(b)
2542+ let b = toString(fZ.caller)
2543+ let ey = {
2544+ let cf = ll
2545+ if (("PRESALE" == cf))
2546+ then jL(b, lm)
2547+ else if (("ONBOARD" == cf))
2548+ then jE(b)
25362549 else throw("Unknown artifact")
25372550 }
2538- (er :+ ko)
2539- }
2540- }
2541-
2542-
2543-
2544-@Callable(fS)
2545-func mergeLands (jM) = {
2546- let ko = kl(fS)
2547- if ((size(fS.payments) != 0))
2551+ (ey :+ kv)
2552+ }
2553+ }
2554+
2555+
2556+
2557+@Callable(fZ)
2558+func mergeLands (jT) = {
2559+ let kv = ks(fZ)
2560+ if ((size(fZ.payments) != 0))
25482561 then throw("No payments required")
25492562 else {
2550- let er = kk(toString(fS.caller), jM)
2551- $Tuple2(((er._1 :+ ko) ++ jw(toString(fS.caller), V)._1), er._2)
2552- }
2553- }
2554-
2555-
2556-
2557-@Callable(fS)
2558-func cargoExchange (lg,M) = {
2559- let ko = kl(fS)
2560- if ((size(fS.payments) != 0))
2563+ let ey = kr(toString(fZ.caller), jT)
2564+ $Tuple2(((ey._1 :+ kv) ++ jD(toString(fZ.caller), Z)._1), ey._2)
2565+ }
2566+ }
2567+
2568+
2569+
2570+@Callable(fZ)
2571+func cargoExchange (ln,O) = {
2572+ let kv = ks(fZ)
2573+ if ((size(fZ.payments) != 0))
25612574 then throw("No payments required")
25622575 else {
2563- let hx = split_4C(lg, ":")
2564- let b = toString(fS.originCaller)
2565- let iL = value(assetInfo(fromBase58String(M)))
2566- let iM = bf(M)
2567- if (!(isDefined(getInteger(iM))))
2568- then throw((iL.name + " is not staked"))
2576+ let hE = split_4C(ln, ":")
2577+ let b = toString(fZ.originCaller)
2578+ let iS = value(assetInfo(fromBase58String(O)))
2579+ let iT = bm(O)
2580+ if (!(isDefined(getInteger(iT))))
2581+ then throw((iS.name + " is not staked"))
25692582 else {
2570- let iO = valueOrErrorMessage(getString(bc(M)), (("NFT " + iL.name) + " is orphaned"))
2571- if ((iO != b))
2572- then throw((at + " is not yours"))
2583+ let iV = valueOrErrorMessage(getString(bj(O)), (("NFT " + iS.name) + " is orphaned"))
2584+ if ((iV != b))
2585+ then throw((aA + " is not yours"))
25732586 else {
2574- let hj = (cX(split(iL.description, "_")[cG]) / cf)
2575- let hk = valueOrElse(getInteger(bm(M)), 0)
2576- let x = valueOrErrorMessage(getString(bv(b)), "You don't have a duck staked")
2577- let iI = valueOrElse(getString(bx(x)), aB)
2578- let iJ = split(value(iI), "_")
2579- if ((iJ[bQ] != "L"))
2580- then throw((("Duck location type is " + iJ[bQ]) + ", but should be L"))
2581- else if ((iJ[bR] != M))
2582- then throw(("Duck should be on the land " + M))
2587+ let hq = (de(split(iS.description, "_")[cN]) / cm)
2588+ let hr = valueOrElse(getInteger(bt(O)), 0)
2589+ let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
2590+ let iP = valueOrElse(getString(bE(z)), aI)
2591+ let iQ = split(value(iP), "_")
2592+ if ((iQ[bX] != "L"))
2593+ then throw((("Duck location type is " + iQ[bX]) + ", but should be L"))
2594+ else if ((iQ[bY] != O))
2595+ then throw(("Duck should be on the land " + O))
25832596 else {
2584- let hi = bl(M)
2585- let gZ = hh(hi, hj, hk)
2586- let gV = bw(x)
2587- let hy = gU(gV)
2588- let er = hw(hx, gZ, hy)
2589- let hq = split(gZ[aS], "_")
2590- let ja = (parseIntValue(hq[aU]) + er._7)
2591- let jb = (parseIntValue(hq[aV]) - er._7)
2592-[StringEntry(gV, makeString_2C([hy[aX], er._4, er._5, er._6], ":")), StringEntry(hi, makeString_2C([gZ[aO], er._1, er._2, er._3, makeString([hq[aT], toString(ja), toString(jb), hq[aW]], "_")], ":")), ko]
2597+ let hp = bs(O)
2598+ let hg = ho(hp, hq, hr)
2599+ let hc = bD(z)
2600+ let hF = hb(hc)
2601+ let ey = hD(hE, hg, hF)
2602+ let hx = split(hg[aZ], "_")
2603+ let jh = (parseIntValue(hx[bb]) + ey._7)
2604+ let ji = (parseIntValue(hx[bc]) - ey._7)
2605+[StringEntry(hc, makeString_2C([hF[be], ey._4, ey._5, ey._6], ":")), StringEntry(hp, makeString_2C([hg[aV], ey._1, ey._2, ey._3, makeString([hx[ba], toString(jh), toString(ji), hx[bd]], "_")], ":")), kv]
25932606 }
25942607 }
25952608 }
25982611
25992612
26002613
2601-@Callable(fS)
2602-func saveWarehouse (hm,M) = if ((fS.caller != cB))
2614+@Callable(fZ)
2615+func saveWarehouse (ht,O) = if ((fZ.caller != cI))
26032616 then throw("Access denied")
26042617 else {
2605- let hi = bl(M)
2606- let hn = split_4C(hm, ":")
2607- if ((size(hn) != 5))
2618+ let hp = bs(O)
2619+ let hu = split_4C(ht, ":")
2620+ if ((size(hu) != 5))
26082621 then throw("warehouse string should contain 4 ':' separators")
26092622 else {
2610- let lh = split(hn[aS], "_")[aT]
2611- let ja = gY(hn)
2612- let li = gW(hn[aO])
2613- let jb = ((li - parseIntValue(lh)) - ja)
2614- let lj = makeString_2C([hn[aO], hn[aP], hn[aQ], hn[aR], makeString([lh, toString(ja), toString(jb), toString(li)], "_")], ":")
2615- $Tuple2([StringEntry(hi, lj)], lj)
2623+ let lo = split(hu[aZ], "_")[ba]
2624+ let jh = hf(hu)
2625+ let lp = hd(hu[aV])
2626+ let ji = ((lp - parseIntValue(lo)) - jh)
2627+ let lq = makeString_2C([hu[aV], hu[aW], hu[aX], hu[aY], makeString([lo, toString(jh), toString(ji), toString(lp)], "_")], ":")
2628+ $Tuple2([StringEntry(hp, lq)], lq)
26162629 }
26172630 }
26182631
26192632
26202633
2621-@Callable(fS)
2622-func fixWarehouseFormat (M) = if ((fS.caller != cA))
2634+@Callable(fZ)
2635+func fixWarehouseFormat (O) = if ((fZ.caller != cH))
26232636 then throw("Access denied")
26242637 else {
2625- let hi = bl(M)
2626- let iL = value(assetInfo(fromBase58String(M)))
2627- let hj = (cX(split(iL.description, "_")[cG]) / cf)
2628- let hk = valueOrElse(getInteger(bm(M)), 0)
2629- let hn = hh(hi, hj, hk)
2630- let lh = cV(invoke(cB, "recalcLockedVolumeREADONLY", [M, hn], nil))
2631- let ja = gY(hn)
2632- let li = gW(hn[aO])
2633- let jb = ((li - lh) - ja)
2634- let lj = makeString_2C([hn[aO], hn[aP], hn[aQ], hn[aR], makeString([toString(lh), toString(ja), toString(jb), toString(li)], "_")], ":")
2635- $Tuple2([StringEntry(hi, lj)], lj)
2638+ let hp = bs(O)
2639+ let iS = value(assetInfo(fromBase58String(O)))
2640+ let hq = (de(split(iS.description, "_")[cN]) / cm)
2641+ let hr = valueOrElse(getInteger(bt(O)), 0)
2642+ let hu = ho(hp, hq, hr)
2643+ let lo = dc(invoke(cI, "recalcLockedVolumeREADONLY", [O, hu], nil))
2644+ let jh = hf(hu)
2645+ let lp = hd(hu[aV])
2646+ let ji = ((lp - lo) - jh)
2647+ let lq = makeString_2C([hu[aV], hu[aW], hu[aX], hu[aY], makeString([toString(lo), toString(jh), toString(ji), toString(lp)], "_")], ":")
2648+ $Tuple2([StringEntry(hp, lq)], lq)
26362649 }
26372650
26382651
26392652
2640-@Callable(fS)
2641-func fixContinentProportions (jM) = if ((fS.caller != cA))
2653+@Callable(fZ)
2654+func fixContinentProportions (jT) = if ((fZ.caller != cH))
26422655 then throw("Access denied")
26432656 else {
2644- func lk (dZ,ll) = (dZ :+ valueOrElse(getString(cO(ll)), "0_0_0_0_0_0"))
2645-
2646- let fC = {
2647- let eb = aF
2648- let ec = size(eb)
2649- let ed = nil
2650- func ee (ef,eg) = if ((eg >= ec))
2651- then ef
2652- else lk(ef, eb[eg])
2653-
2654- func eh (ef,eg) = if ((eg >= ec))
2655- then ef
2657+ func lr (eg,ls) = (eg :+ valueOrElse(getString(cV(ls)), "0_0_0_0_0_0"))
2658+
2659+ let fJ = {
2660+ let ei = aM
2661+ let ej = size(ei)
2662+ let ek = nil
2663+ func el (em,en) = if ((en >= ej))
2664+ then em
2665+ else lr(em, ei[en])
2666+
2667+ func eo (em,en) = if ((en >= ej))
2668+ then em
26562669 else throw("List size exceeds 5")
26572670
2658- eh(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5)
2659- }
2660- func lm (dZ,M) = {
2661- let iL = value(assetInfo(fromBase58String(M)))
2662- let iP = split(iL.description, "_")
2663- let hj = (cX(iP[cG]) / cf)
2664- let ll = iP[cI]
2665- let fO = fU(iP[cH])
2666- let gw = value(indexOf(aF, ll))
2667- let kb = split(dZ[gw], "_")
2668- let ln = makeString(fM(kb, fO, hj, 1), "_")
2669- let bY = ll
2670- if (("Americas" == bY))
2671- then [ln, dZ[1], dZ[2], dZ[3], dZ[4]]
2672- else if (("Europe" == bY))
2673- then [dZ[0], ln, dZ[2], dZ[3], dZ[4]]
2674- else if (("Asia" == bY))
2675- then [dZ[0], dZ[1], ln, dZ[3], dZ[4]]
2676- else if (("Africa" == bY))
2677- then [dZ[0], dZ[1], dZ[2], ln, dZ[4]]
2678- else if (("Oceania" == bY))
2679- then [dZ[0], dZ[1], dZ[2], dZ[3], ln]
2671+ eo(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5)
2672+ }
2673+ func lt (eg,O) = {
2674+ let iS = value(assetInfo(fromBase58String(O)))
2675+ let iW = split(iS.description, "_")
2676+ let hq = (de(iW[cN]) / cm)
2677+ let ls = iW[cP]
2678+ let fV = gb(iW[cO])
2679+ let gD = value(indexOf(aM, ls))
2680+ let ki = split(eg[gD], "_")
2681+ let lu = makeString(fT(ki, fV, hq, 1), "_")
2682+ let cf = ls
2683+ if (("Americas" == cf))
2684+ then [lu, eg[1], eg[2], eg[3], eg[4]]
2685+ else if (("Europe" == cf))
2686+ then [eg[0], lu, eg[2], eg[3], eg[4]]
2687+ else if (("Asia" == cf))
2688+ then [eg[0], eg[1], lu, eg[3], eg[4]]
2689+ else if (("Africa" == cf))
2690+ then [eg[0], eg[1], eg[2], lu, eg[4]]
2691+ else if (("Oceania" == cf))
2692+ then [eg[0], eg[1], eg[2], eg[3], lu]
26802693 else throw("wrong continent")
26812694 }
26822695
2683- let ek = {
2684- let eb = jM
2685- let ec = size(eb)
2686- let ed = fC
2687- func gP (ef,eg) = if ((eg >= ec))
2688- then ef
2689- else lm(ef, eb[eg])
2690-
2691- func gQ (ef,eg) = if ((eg >= ec))
2692- then ef
2696+ let er = {
2697+ let ei = jT
2698+ let ej = size(ei)
2699+ let ek = fJ
2700+ func gW (em,en) = if ((en >= ej))
2701+ then em
2702+ else lt(em, ei[en])
2703+
2704+ func gX (em,en) = if ((en >= ej))
2705+ then em
26932706 else throw("List size exceeds 100")
26942707
2695- gQ(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(ed, 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)
2696- }
2697- $Tuple2([StringEntry(cO("Americas"), ek[0]), StringEntry(cO("Europe"), ek[1]), StringEntry(cO("Asia"), ek[2]), StringEntry(cO("Africa"), ek[3]), StringEntry(cO("Oceania"), ek[4])], 0)
2708+ gX(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(ek, 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)
2709+ }
2710+ $Tuple2([StringEntry(cV("Americas"), er[0]), StringEntry(cV("Europe"), er[1]), StringEntry(cV("Asia"), er[2]), StringEntry(cV("Africa"), er[3]), StringEntry(cV("Oceania"), er[4])], 0)
26982711 }
26992712
27002713
27012714
2702-@Callable(fS)
2703-func fixStakedPieces (cm) = if ((fS.caller != cA))
2715+@Callable(fZ)
2716+func fixStakedPieces (ct) = if ((fZ.caller != cH))
27042717 then throw("Access denied")
27052718 else {
2706- let kf = if ((cm == ""))
2719+ let km = if ((ct == ""))
27072720 then 0
27082721 else {
2709- let jY = getString(ah, cQ(cm))
2710- let jU = if (isDefined(jY))
2711- then split_51C(value(jY), "_")
2722+ let kf = getString(al, cX(ct))
2723+ let kb = if (isDefined(kf))
2724+ then split_51C(value(kf), "_")
27122725 else nil
2713- func lo (dZ,M) = {
2714- let iL = value(assetInfo(fromBase58String(M)))
2715- let cY = split(iL.description, "_")[cG]
2716- (dZ + cX(cY))
2726+ func lv (eg,O) = {
2727+ let iS = value(assetInfo(fromBase58String(O)))
2728+ let df = split(iS.description, "_")[cN]
2729+ (eg + de(df))
27172730 }
27182731
2719- let eb = jU
2720- let ec = size(eb)
2721- let ed = 0
2722- func ee (ef,eg) = if ((eg >= ec))
2723- then ef
2724- else lo(ef, eb[eg])
2725-
2726- func eh (ef,eg) = if ((eg >= ec))
2727- then ef
2732+ let ei = kb
2733+ let ej = size(ei)
2734+ let ek = 0
2735+ func el (em,en) = if ((en >= ej))
2736+ then em
2737+ else lv(em, ei[en])
2738+
2739+ func eo (em,en) = if ((en >= ej))
2740+ then em
27282741 else throw("List size exceeds 100")
27292742
2730- eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 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)
2743+ eo(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(ek, 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)
27312744 }
2732- $Tuple2([IntegerEntry(cR(cm), kf)], kf)
2745+ $Tuple2([IntegerEntry(cY(ct), km)], km)
27332746 }
27342747
27352748
27362749
2737-@Callable(fS)
2738-func setCustomName (bd,jW,bh) = {
2739- let ko = kl(fS)
2740- if ((size(fS.payments) != 1))
2750+@Callable(fZ)
2751+func setCustomName (bk,kd,bo) = {
2752+ let kv = ks(fZ)
2753+ if ((size(fZ.payments) != 1))
27412754 then throw("Exactly one payment required")
27422755 else {
2743- let kp = value(fS.payments[0])
2744- if ((kp.assetId != bX))
2756+ let kw = value(fZ.payments[0])
2757+ if ((kw.assetId != ce))
27452758 then throw("Allowed USDT payment only!")
2746- else if ((kp.amount != dl))
2747- then throw(("Payment should be " + toString(dl)))
2748- else if (contains(jW, "__"))
2749- then throw(("Name should not contain '__': " + jW))
2750- else if ((size(jW) > dm))
2751- then throw(("Name too long, maxLength=" + toString(dm)))
2759+ else if ((kw.amount != ds))
2760+ then throw(("Payment should be " + toString(ds)))
2761+ else if (contains(kd, "__"))
2762+ then throw(("Name should not contain '__': " + kd))
2763+ else if ((size(kd) > dt))
2764+ then throw(("Name too long, maxLength=" + toString(dt)))
27522765 else {
2753- let b = toString(fS.originCaller)
2754- let lp = {
2755- let bY = bh
2756- if (("ACCOUNT" == bY))
2766+ let b = toString(fZ.originCaller)
2767+ let lw = {
2768+ let cf = bo
2769+ if (("ACCOUNT" == cf))
27572770 then {
2758- let lq = dF(jW)
2759- let lr = getString(lq)
2760- if (isDefined(lr))
2761- then throw(("Name already registered: " + jW))
2771+ let lx = dM(kd)
2772+ let ly = getString(lx)
2773+ if (isDefined(ly))
2774+ then throw(("Name already registered: " + kd))
27622775 else {
2763- let ls = bp(b)
2764- let lt = getString(ls)
2765- let lu = if (isDefined(lt))
2766- then [DeleteEntry(dF(value(lt)))]
2776+ let lz = bw(b)
2777+ let lA = getString(lz)
2778+ let lB = if (isDefined(lA))
2779+ then [DeleteEntry(dM(value(lA)))]
27672780 else nil
2768- (((lu :+ StringEntry(ls, jW)) :+ StringEntry(lq, b)) ++ jw(b, S)._1)
2781+ (((lB :+ StringEntry(lz, kd)) :+ StringEntry(lx, b)) ++ jD(b, W)._1)
27692782 }
27702783 }
2771- else if (("LAND" == bY))
2784+ else if (("LAND" == cf))
27722785 then {
2773- let iL = value(assetInfo(fromBase58String(bd)))
2774- let iM = bf(bd)
2775- if (!(isDefined(getInteger(iM))))
2776- then throw((iL.name + " is not staked"))
2786+ let iS = value(assetInfo(fromBase58String(bk)))
2787+ let iT = bm(bk)
2788+ if (!(isDefined(getInteger(iT))))
2789+ then throw((iS.name + " is not staked"))
27772790 else {
2778- let iO = valueOrErrorMessage(getString(bc(bd)), (("NFT " + iL.name) + " is orphaned"))
2779- if ((iO != b))
2780- then throw((at + " is not yours"))
2791+ let iV = valueOrErrorMessage(getString(bj(bk)), (("NFT " + iS.name) + " is orphaned"))
2792+ if ((iV != b))
2793+ then throw((aA + " is not yours"))
27812794 else {
2782- let lq = dy(jW)
2783- let lr = getString(lq)
2784- if (isDefined(lr))
2785- then throw(("Name already registered: " + jW))
2795+ let lx = dF(kd)
2796+ let ly = getString(lx)
2797+ if (isDefined(ly))
2798+ then throw(("Name already registered: " + kd))
27862799 else {
2787- let lv = be(bd)
2788- let lt = getString(lv)
2789- let lu = if (isDefined(lt))
2790- then [DeleteEntry(dy(value(lt)))]
2800+ let lC = bl(bk)
2801+ let lA = getString(lC)
2802+ let lB = if (isDefined(lA))
2803+ then [DeleteEntry(dF(value(lA)))]
27912804 else nil
2792- (((lu :+ StringEntry(lv, jW)) :+ StringEntry(lq, bd)) ++ jw(b, S)._1)
2805+ (((lB :+ StringEntry(lC, kd)) :+ StringEntry(lx, bk)) ++ jD(b, W)._1)
27932806 }
27942807 }
27952808 }
27962809 }
2797- else if (("DUCK" == bY))
2810+ else if (("DUCK" == cf))
27982811 then {
2799- let iL = value(assetInfo(fromBase58String(bd)))
2800- let iM = bf(bd)
2801- if (if (!(isDefined(getInteger(iM))))
2812+ let iS = value(assetInfo(fromBase58String(bk)))
2813+ let iT = bm(bk)
2814+ if (if (!(isDefined(getInteger(iT))))
28022815 then true
2803- else !(isDefined(getString(bv(b)))))
2804- then throw((iL.name + " is not staked"))
2816+ else !(isDefined(getString(bC(b)))))
2817+ then throw((iS.name + " is not staked"))
28052818 else {
2806- let iO = valueOrErrorMessage(getString(bu(bd)), (("NFT " + iL.name) + " is orphaned"))
2807- if ((iO != b))
2808- then throw((au + " is not yours"))
2819+ let iV = valueOrErrorMessage(getString(bB(bk)), (("NFT " + iS.name) + " is orphaned"))
2820+ if ((iV != b))
2821+ then throw((aB + " is not yours"))
28092822 else {
2810- let lq = dE(jW)
2811- let lr = getString(lq)
2812- if (isDefined(lr))
2813- then throw(("Name already registered: " + jW))
2823+ let lx = dL(kd)
2824+ let ly = getString(lx)
2825+ if (isDefined(ly))
2826+ then throw(("Name already registered: " + kd))
28142827 else {
2815- let lv = bo(bd)
2816- let lt = getString(lv)
2817- let lu = if (isDefined(lt))
2818- then [DeleteEntry(dE(value(lt)))]
2828+ let lC = bv(bk)
2829+ let lA = getString(lC)
2830+ let lB = if (isDefined(lA))
2831+ then [DeleteEntry(dL(value(lA)))]
28192832 else nil
2820- (((lu :+ StringEntry(lv, jW)) :+ StringEntry(lq, bd)) ++ jq(bd, S)._1)
2833+ (((lB :+ StringEntry(lC, kd)) :+ StringEntry(lx, bk)) ++ jx(bk, W)._1)
28212834 }
28222835 }
28232836 }
28242837 }
28252838 else throw("Unknown entity type")
28262839 }
2827- $Tuple2(((lp :+ ScriptTransfer(cB, kp.amount, bX)) :+ ko), 0)
2840+ $Tuple2(((lw :+ ScriptTransfer(cI, kw.amount, ce)) :+ kv), 0)
28282841 }
28292842 }
28302843 }
28312844
28322845
28332846
2834-@Callable(fS)
2835-func setReferrals (lw,lx) = if ((fS.callerPublicKey != di))
2847+@Callable(fZ)
2848+func setReferrals (lD,lE) = if ((fZ.callerPublicKey != dp))
28362849 then throw("Permission denied")
28372850 else {
2838- let ko = kl(fS)
2839- if ((size(fS.payments) != 0))
2851+ let kv = ks(fZ)
2852+ if ((size(fZ.payments) != 0))
28402853 then throw("No payments required")
2841- else if (!(isDefined(addressFromString(lw))))
2842- then throw(("Invalid address: " + lw))
2843- else if (!(isDefined(addressFromString(lx))))
2844- then throw(("Invalid address: " + lx))
2854+ else if (!(isDefined(addressFromString(lD))))
2855+ then throw(("Invalid address: " + lD))
2856+ else if (!(isDefined(addressFromString(lE))))
2857+ then throw(("Invalid address: " + lE))
28452858 else {
2846- let ly = dG()
2847- let lz = getString(ly)
2848- let lA = if (isDefined(lz))
2849- then split_4C(value(lz), "_")
2859+ let lF = dN()
2860+ let lG = getString(lF)
2861+ let lH = if (isDefined(lG))
2862+ then split_4C(value(lG), "_")
28502863 else nil
2851- if (containsElement(lA, lx))
2852- then throw((lx + " is not newbie (already has referrals)"))
2864+ if (containsElement(lH, lE))
2865+ then throw((lE + " is not newbie (already has referrals)"))
28532866 else {
2854- let jy = bq(lx)
2855- let jz = getString(jy)
2856- if (if (isDefined(jz))
2857- then isDefined(addressFromString(value(jz)))
2867+ let jF = bx(lE)
2868+ let jG = getString(jF)
2869+ if (if (isDefined(jG))
2870+ then isDefined(addressFromString(value(jG)))
28582871 else false)
2859- then throw(((lx + " already has refBy: ") + value(jz)))
2872+ then throw(((lE + " already has refBy: ") + value(jG)))
28602873 else {
2861- let lB = bt(lw)
2862- let lC = getString(lB)
2863- let lD = if (isDefined(lC))
2864- then split_4C(value(lC), "_")
2874+ let lI = bA(lD)
2875+ let lJ = getString(lI)
2876+ let lK = if (isDefined(lJ))
2877+ then split_4C(value(lJ), "_")
28652878 else nil
2866- if (containsElement(lD, lx))
2867- then throw((((lw + " already contains ") + lx) + " within referrals"))
2879+ if (containsElement(lK, lE))
2880+ then throw((((lD + " already contains ") + lE) + " within referrals"))
28682881 else {
2869- let lE = makeString_2C((lD :+ lx), "_")
2870- let lF = if (containsElement(lA, lw))
2871- then value(lz)
2872- else makeString_2C((lA :+ lw), "_")
2873- $Tuple2([StringEntry(jy, lw), StringEntry(lB, lE), StringEntry(ly, lF), ko], 0)
2882+ let lL = makeString_2C((lK :+ lE), "_")
2883+ let lM = if (containsElement(lH, lD))
2884+ then value(lG)
2885+ else makeString_2C((lH :+ lD), "_")
2886+ $Tuple2([StringEntry(jF, lD), StringEntry(lI, lL), StringEntry(lF, lM), kv], 0)
28742887 }
28752888 }
28762889 }
28792892
28802893
28812894
2882-@Callable(fS)
2883-func distributePoints (lG,lH,lI,lJ,lK) = {
2884- let ko = kl(fS)
2885- if ((size(fS.payments) != 0))
2895+@Callable(fZ)
2896+func distributePoints (lN,lO,lP,lQ,lR) = {
2897+ let kv = ks(fZ)
2898+ if ((size(fZ.payments) != 0))
28862899 then throw("No payments required")
28872900 else {
2888- let b = toString(fS.originCaller)
2889- let x = valueOrErrorMessage(getString(bv(b)), "You don't have a duck staked")
2890- let lL = F(b)
2891- let lM = valueOrElse(getInteger(ah, lL), 0)
2892- let lN = B(x)
2893- let lO = valueOrElse(getInteger(ah, lN), 0)
2894- let lP = (lM + lO)
2895- let lQ = ((((lG + lH) + lI) + lJ) + lK)
2896- if ((lQ > lP))
2897- then throw((("There are only " + toString(lP)) + " free points to distribute"))
2901+ let b = toString(fZ.originCaller)
2902+ let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
2903+ let lS = H(b)
2904+ let lT = valueOrElse(getInteger(al, lS), 0)
2905+ let lU = D(z)
2906+ let lV = valueOrElse(getInteger(al, lU), 0)
2907+ let lW = (lT + lV)
2908+ let lX = ((((lN + lO) + lP) + lQ) + lR)
2909+ if ((lX > lW))
2910+ then throw((("There are only " + toString(lW)) + " free points to distribute"))
28982911 else {
2899- let lR = y(x)
2900- let ak = split(valueOrElse(getString(ah, lR), "0_0_0_0_0"), "_")
2901- let lS = (lM - lQ)
2902- $Tuple2([IntegerEntry(lL, if ((0 > lS))
2912+ let lY = A(z)
2913+ let ao = split(valueOrElse(getString(al, lY), "0_0_0_0_0"), "_")
2914+ let lZ = (lT - lX)
2915+ $Tuple2([IntegerEntry(lS, if ((0 > lZ))
29032916 then 0
2904- else lS), IntegerEntry(lN, if ((0 > lS))
2905- then (lO + lS)
2906- else lO), StringEntry(lR, makeString([toString((parseIntValue(ak[j]) + lG)), toString((parseIntValue(ak[k]) + lH)), toString((parseIntValue(ak[l]) + lI)), toString((parseIntValue(ak[m]) + lJ)), toString((parseIntValue(ak[n]) + lK))], "_")), ko], 0)
2917+ else lZ), IntegerEntry(lU, if ((0 > lZ))
2918+ then (lV + lZ)
2919+ else lV), StringEntry(lY, makeString([toString((parseIntValue(ao[j]) + lN)), toString((parseIntValue(ao[k]) + lO)), toString((parseIntValue(ao[l]) + lP)), toString((parseIntValue(ao[m]) + lQ)), toString((parseIntValue(ao[n]) + lR))], "_")), kv], 0)
29072920 }
29082921 }
29092922 }
29102923
29112924
29122925
2913-@Callable(fS)
2914-func splitByGlobalWeightsREADONLY (dQ) = $Tuple2(nil, ei(dQ))
2915-
2916-
2917-
2918-@Callable(fS)
2919-func splitByGlobalAndLocalWeightsREADONLY (lT,lU,fV) = {
2920- let fO = fU(fV)
2921- $Tuple2(nil, $Tuple2(ei(lT), dT(lU, fO)))
2922- }
2923-
2924-
2925-
2926-@Callable(fS)
2927-func getBackpackREADONLY (x) = $Tuple2(nil, makeString(gU(bw(x)), ":"))
2928-
2929-
2930-
2931-@Callable(fS)
2932-func getWarehouseREADONLY (M) = {
2933- let iL = value(assetInfo(fromBase58String(M)))
2934- let hj = (cX(split(iL.description, "_")[cG]) / cf)
2935- let hk = valueOrElse(getInteger(bm(M)), 0)
2936- $Tuple2(nil, makeString_2C(hh(bl(M), hj, hk), ":"))
2937- }
2938-
2939-
2940-
2941-@Callable(fS)
2926+@Callable(fZ)
2927+func splitByGlobalWeightsREADONLY (dX) = $Tuple2(nil, ep(dX))
2928+
2929+
2930+
2931+@Callable(fZ)
2932+func splitByGlobalAndLocalWeightsREADONLY (ma,mb,gc) = {
2933+ let fV = gb(gc)
2934+ $Tuple2(nil, $Tuple2(ep(ma), ea(mb, fV)))
2935+ }
2936+
2937+
2938+
2939+@Callable(fZ)
2940+func getBackpackREADONLY (z) = $Tuple2(nil, makeString(hb(bD(z)), ":"))
2941+
2942+
2943+
2944+@Callable(fZ)
2945+func getWarehouseREADONLY (O) = {
2946+ let iS = value(assetInfo(fromBase58String(O)))
2947+ let hq = (de(split(iS.description, "_")[cN]) / cm)
2948+ let hr = valueOrElse(getInteger(bt(O)), 0)
2949+ $Tuple2(nil, makeString_2C(ho(bs(O), hq, hr), ":"))
2950+ }
2951+
2952+
2953+
2954+@Callable(fZ)
29422955 func saveLastTx () = {
2943- let hT = fS.caller
2944- if (if (if ((hT != cD))
2945- then (hT != cB)
2956+ let ia = fZ.caller
2957+ if (if (if ((ia != cK))
2958+ then (ia != cI)
29462959 else false)
2947- then (hT != cE)
2960+ then (ia != cL)
29482961 else false)
29492962 then throw("Access denied")
2950- else $Tuple2([kl(fS)], 42)
2951- }
2952-
2953-
2954-
2955-@Callable(fS)
2956-func updateDuckStats (x,jr) = if ((fS.caller != cB))
2963+ else $Tuple2([ks(fZ)], 42)
2964+ }
2965+
2966+
2967+
2968+@Callable(fZ)
2969+func updateDuckStats (z,jy) = if ((fZ.caller != cI))
29572970 then throw("Access denied")
2958- else jq(x, jr)
2959-
2960-
2961-
2962-@Callable(fS)
2963-func updateAccStats (b,jr) = if ((fS.caller != cB))
2971+ else jx(z, jy)
2972+
2973+
2974+
2975+@Callable(fZ)
2976+func updateAccStats (b,jy) = if ((fZ.caller != cI))
29642977 then throw("Access denied")
2965- else jw(b, jr)
2966-
2967-
2968-
2969-@Callable(fS)
2970-func equipDuck (lV) = {
2971- let ko = kl(fS)
2972- if ((size(fS.payments) != 0))
2978+ else jD(b, jy)
2979+
2980+
2981+
2982+@Callable(fZ)
2983+func equipDuck (mc) = {
2984+ let kv = ks(fZ)
2985+ if ((size(fZ.payments) != 0))
29732986 then throw("No payments required")
29742987 else {
2975- let b = toString(fS.originCaller)
2976- let x = valueOrErrorMessage(getString(bv(b)), "You don't have a duck staked")
2977- if (jG(x))
2988+ let b = toString(fZ.originCaller)
2989+ let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
2990+ if (jN(z))
29782991 then throw("equipDuck_checkTournament")
29792992 else {
2980- let fF = C(x)
2981- let lW = split(valueOrElse(getString(fF), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
2982- let gV = bw(x)
2983- let hy = gU(gV)
2984- let iw = split(lV, "_")
2985- if ((size(iw) != p))
2993+ let fM = E(z)
2994+ let md = split(valueOrElse(getString(fM), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
2995+ let hc = bD(z)
2996+ let hF = hb(hc)
2997+ let iD = split(mc, "_")
2998+ if ((size(iD) != p))
29862999 then throw("Wrong equipment string")
29873000 else {
2988- let fH = fu(lW, eF(hy[ba]), true, nil)
2989- let fI = split(iw[o], ";")[1]
2990- let ai = if ((fI == ""))
3001+ let fO = fB(md, eM(hF[bh]), true, nil)
3002+ let fP = split(iD[o], ";")[1]
3003+ let am = if ((fP == ""))
29913004 then 0
29923005 else {
2993- let fJ = split(fI, ",")[0]
2994- if ((fJ == ""))
3006+ let fQ = split(fP, ",")[0]
3007+ if ((fQ == ""))
29953008 then 0
29963009 else {
2997- let eU = split(fJ, ":")
2998- let cz = eU[0]
2999- let fK = eU[1]
3000- if (if (if (if (if ((cz == "06"))
3010+ let fb = split(fQ, ":")
3011+ let cG = fb[0]
3012+ let fR = fb[1]
3013+ if (if (if (if (if ((cG == "06"))
30013014 then true
3002- else (cz == "07"))
3015+ else (cG == "07"))
30033016 then true
3004- else (cz == "08"))
3005- then (fK != "")
3017+ else (cG == "08"))
3018+ then (fR != "")
30063019 else false)
3007- then (parseIntValue(fK) > 0)
3020+ then (parseIntValue(fR) > 0)
30083021 else false)
3009- then parseIntValue(split(aI[parseIntValue(cz)], "_")[aK])
3022+ then parseIntValue(split(aP[parseIntValue(cG)], "_")[aR])
30103023 else 0
30113024 }
30123025 }
3013- let fp = ag(this, x, ai, true)
3014- let fL = fu(iw, fH, false, fp)
3015- let lX = eK(fL)
3016- $Tuple2([StringEntry(fF, lV), StringEntry(gV, makeString_2C([hy[aX], hy[aY], hy[aZ], lX], ":")), StringEntry(I(x), makeString([toString(fp[7]), toString(fp[8]), toString(fp[9]), toString(fp[10]), toString(fp[11])], "_")), ko], 0)
3026+ let fw = ak(this, z, am, true)
3027+ let fS = fB(iD, fO, false, fw)
3028+ let me = eR(fS)
3029+ $Tuple2([StringEntry(fM, mc), StringEntry(hc, makeString_2C([hF[be], hF[bf], hF[bg], me], ":")), StringEntry(K(z), makeString([toString(fw[7]), toString(fw[8]), toString(fw[9]), toString(fw[10]), toString(fw[11])], "_")), kv], 0)
30173030 }
30183031 }
30193032 }
30213034
30223035
30233036
3024-@Callable(fS)
3025-func fortificateLand (M,lY) = {
3026- let ko = kl(fS)
3027- if ((size(fS.payments) != 0))
3037+@Callable(fZ)
3038+func fortificateLand (O,mf) = {
3039+ let kv = ks(fZ)
3040+ if ((size(fZ.payments) != 0))
30283041 then throw("No payments required")
30293042 else {
3030- let b = toString(fS.originCaller)
3031- let x = valueOrElse(getString(bv(b)), "")
3032- let eP = ag(this, x, 0, false)
3033- let lZ = bn(M)
3034- let ma = split(valueOrElse(getString(lZ), ":0_15:0_18:0"), "_")
3035- let iL = value(assetInfo(fromBase58String(M)))
3036- let hj = (cX(split(iL.description, "_")[cG]) / cf)
3037- let hk = valueOrElse(getInteger(bm(M)), 0)
3038- let hi = bl(M)
3039- let hn = hh(hi, hj, hk)
3040- let mb = split(hn[aS], "_")
3041- let mc = parseIntValue(mb[aU])
3042- let md = parseIntValue(mb[aV])
3043- let me = split(lY, "_")
3044- let mf = fB(ma, eF(hn[aR]), mc, md, true, nil)
3045- let fH = mf._1
3046- let mg = mf._2
3047- let mh = mf._3
3048- let mi = fB(me, fH, mg, mh, false, eP)
3049- let fL = mi._1
3050- let mj = mi._2
3051- let mk = mi._3
3052- let lX = eK(fL)
3053- let jp = makeString([mb[aT], toString(mj), toString(mk), mb[aW]], "_")
3054- $Tuple2([StringEntry(lZ, lY), StringEntry(hi, makeString_2C([hn[aO], hn[aP], hn[aQ], lX, jp], ":")), ko], 0)
3055- }
3056- }
3057-
3058-
3059-
3060-@Callable(fS)
3061-func initDuckTourAttempt (x) = if ((fS.caller != cE))
3043+ let b = toString(fZ.originCaller)
3044+ let z = valueOrElse(getString(bC(b)), "")
3045+ let eW = ak(this, z, 0, false)
3046+ let mg = bu(O)
3047+ let mh = split(valueOrElse(getString(mg), ":0_15:0_18:0"), "_")
3048+ let iS = value(assetInfo(fromBase58String(O)))
3049+ let hq = (de(split(iS.description, "_")[cN]) / cm)
3050+ let hr = valueOrElse(getInteger(bt(O)), 0)
3051+ let hp = bs(O)
3052+ let hu = ho(hp, hq, hr)
3053+ let mi = split(hu[aZ], "_")
3054+ let mj = parseIntValue(mi[bb])
3055+ let mk = parseIntValue(mi[bc])
3056+ let ml = split(mf, "_")
3057+ let mm = fI(mh, eM(hu[aY]), mj, mk, true, nil)
3058+ let fO = mm._1
3059+ let mn = mm._2
3060+ let mo = mm._3
3061+ let mp = fI(ml, fO, mn, mo, false, eW)
3062+ let fS = mp._1
3063+ let mq = mp._2
3064+ let mr = mp._3
3065+ let me = eR(fS)
3066+ let jw = makeString([mi[ba], toString(mq), toString(mr), mi[bd]], "_")
3067+ $Tuple2([StringEntry(mg, mf), StringEntry(hp, makeString_2C([hu[aV], hu[aW], hu[aX], me, jw], ":")), kv], 0)
3068+ }
3069+ }
3070+
3071+
3072+
3073+@Callable(fZ)
3074+func initDuckTourAttempt (z) = if ((fZ.caller != cL))
30623075 then throw("Access denied")
30633076 else {
3064- let ko = kl(fS)
3065- let il = w(x)
3066- let im = aa(valueOrElse(getInteger(A(x)), 0))
3067- let kC = valueOrElse(getInteger(il), im)
3068- let ml = bx(x)
3069- let iI = valueOrElse(getString(ml), aB)
3070- let jH = valueOrElse(getInteger(cE, bC), 0)
3071- let mm = (toString(jH) + "_T_0")
3072- $Tuple2([ko, IntegerEntry(G(x), kC), IntegerEntry(il, im), StringEntry(H(x), iI), StringEntry(ml, mm)], mm)
3077+ let kv = ks(fZ)
3078+ let is = y(z)
3079+ let it = ae(valueOrElse(getInteger(C(z)), 0))
3080+ let kJ = valueOrElse(getInteger(is), it)
3081+ let ms = bE(z)
3082+ let iP = valueOrElse(getString(ms), aI)
3083+ let jO = valueOrElse(getInteger(cL, bJ), 0)
3084+ let mt = (toString(jO) + "_T_0")
3085+ $Tuple2([kv, IntegerEntry(I(z), kJ), IntegerEntry(is, it), StringEntry(J(z), iP), StringEntry(ms, mt)], mt)
30733086 }
30743087
30753088
30763089
3077-@Callable(fS)
3090+@Callable(fZ)
30783091 func breakAttempt () = {
3079- let ko = kl(fS)
3080- let x = valueOrErrorMessage(getString(bv(toString(fS.caller))), "You don't have a duck staked")
3081- let ml = bx(x)
3082- let iI = valueOrElse(getString(ml), aB)
3083- if ((split(iI, "_")[bQ] != "T"))
3092+ let kv = ks(fZ)
3093+ let z = valueOrErrorMessage(getString(bC(toString(fZ.caller))), "You don't have a duck staked")
3094+ let ms = bE(z)
3095+ let iP = valueOrElse(getString(ms), aI)
3096+ if ((split(iP, "_")[bX] != "T"))
30843097 then throw("Your duck is not in the tournament")
30853098 else {
3086- let mn = getIntegerValue(G(x))
3087- let mo = getStringValue(H(x))
3088- $Tuple2([ko, IntegerEntry(w(x), mn), StringEntry(ml, mo)], iI)
3089- }
3090- }
3091-
3092-
3093-
3094-@Callable(fS)
3095-func exitTournamentInternal (x) = if ((fS.caller != this))
3099+ let mu = getIntegerValue(I(z))
3100+ let mv = getStringValue(J(z))
3101+ $Tuple2([kv, IntegerEntry(y(z), mu), StringEntry(ms, mv)], iP)
3102+ }
3103+ }
3104+
3105+
3106+
3107+@Callable(fZ)
3108+func exitTournamentInternal (z) = if ((fZ.caller != this))
30963109 then throw("Access denied")
30973110 else {
3098- let mn = getIntegerValue(G(x))
3099- let mo = getStringValue(H(x))
3100- $Tuple2([IntegerEntry(w(x), mn), StringEntry(bx(x), mo)], 0)
3111+ let mu = getIntegerValue(I(z))
3112+ let mv = getStringValue(J(z))
3113+ $Tuple2([IntegerEntry(y(z), mu), StringEntry(bE(z), mv)], 0)
31013114 }
31023115
31033116
31043117
3105-@Callable(fS)
3106-func prepareRobbery (ia,ib) = {
3107- let ko = kl(fS)
3108- if (!(sigVerify_8Kb(ia, ib, di)))
3118+@Callable(fZ)
3119+func prepareRobbery (ih,ii) = {
3120+ let kv = ks(fZ)
3121+ if (!(sigVerify_8Kb(ih, ii, dp)))
31093122 then throw("signature does not match")
3110- else if ((size(fS.payments) != 1))
3123+ else if ((size(fZ.payments) != 1))
31113124 then throw("exactly 1 payment must be attached")
31123125 else {
3113- let kp = fS.payments[0]
3114- let mp = kp.amount
3115- if (if (!(isDefined(kp.assetId)))
3126+ let kw = fZ.payments[0]
3127+ let mw = kw.amount
3128+ if (if (!(isDefined(kw.assetId)))
31163129 then true
3117- else (value(kp.assetId) != cK))
3130+ else (value(kw.assetId) != cR))
31183131 then throw("WLGOLD payments only!")
31193132 else {
3120- let ex = split(toUtf8String(ia), "|")
3121- if ((size(ex) != 2))
3133+ let eE = split(toUtf8String(ih), "|")
3134+ if ((size(eE) != 2))
31223135 then throw("Wrong message format")
31233136 else {
3124- let x = ex[0]
3125- let mq = ao(this, x)
3126- let as = mq._1
3127- let aq = mq._2
3128- if ((as > mp))
3129- then throw(((("Payment " + toString(mp)) + " < required ") + toString(as)))
3137+ let z = eE[0]
3138+ let aw = as(this, z)._1
3139+ if ((aw > mw))
3140+ then throw(((("Payment " + toString(mw)) + " < required ") + toString(aw)))
31303141 else {
3131- let mr = split(ex[1], "_")
3132- let ar = lastBlock.timestamp
3133- func ms (dZ,M) = {
3134- let mt = valueOrElse(getInteger(L(M)), 0)
3135- let mu = valueOrElse(getInteger(N(M)), 0)
3136- if ((mt > size(t)))
3137- then throw("Invalid state")
3138- else if ((ar > mu))
3139- then {
3140- let mv = valueOrElse(getInteger(bf(M)), 0)
3141- if ((0 >= mv))
3142- then dZ
3143- else {
3144- let fz = value(assetInfo(fromBase58String(M)))
3145- let iP = split(fz.description, "_")
3146- let iA = cX(iP[cG])
3147- let mw = iz(M, iA)
3148- let fY = (ar - mv)
3149- let iS = fraction(fY, (mw * iA), az)
3150- if ((u > iS))
3151- then dZ
3152- else (dZ :+ M)
3142+ let mx = split(eE[1], "_")
3143+ let av = lastBlock.timestamp
3144+ let ax = valueOrElse(getInteger(Q(z)), 0)
3145+ let ay = valueOrElse(getString(R(z)), "")
3146+ let az = valueOrElse(getInteger(P(ay)), 0)
3147+ if (if ((ax != w))
3148+ then (az > av)
3149+ else false)
3150+ then throw(("You already started robbing, wait till " + toString(az)))
3151+ else {
3152+ func my (eg,O) = {
3153+ let mz = valueOrElse(getInteger(N(O)), 0)
3154+ let mA = valueOrElse(getInteger(P(O)), 0)
3155+ if ((mz > size(t)))
3156+ then throw("Invalid state")
3157+ else if ((av > mA))
3158+ then {
3159+ let mB = valueOrElse(getInteger(bm(O)), 0)
3160+ if ((0 >= mB))
3161+ then eg
3162+ else {
3163+ let fG = value(assetInfo(fromBase58String(O)))
3164+ let iW = split(fG.description, "_")
3165+ let iH = de(iW[cN])
3166+ let mC = iG(O, iH)
3167+ let gf = (av - mB)
3168+ let iZ = fraction(gf, (mC * iH), aG)
3169+ if ((u > iZ))
3170+ then eg
3171+ else (eg :+ O)
3172+ }
31533173 }
3174+ else eg
3175+ }
3176+
3177+ let mD = {
3178+ let ei = mx
3179+ let ej = size(ei)
3180+ let ek = nil
3181+ func el (em,en) = if ((en >= ej))
3182+ then em
3183+ else my(em, ei[en])
3184+
3185+ func eo (em,en) = if ((en >= ej))
3186+ then em
3187+ else throw("List size exceeds 10")
3188+
3189+ eo(el(el(el(el(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
3190+ }
3191+ if ((size(mD) == 0))
3192+ then throw("No candidates for robbery")
3193+ else {
3194+ let mE = dh(size(mD), height, (ii + fZ.transactionId))
3195+ let O = mD[mE]
3196+ $Tuple2([IntegerEntry(N(O), v), IntegerEntry(P(O), (av + t[v])), IntegerEntry(Q(z), x), StringEntry(R(z), O), kv], O)
31543197 }
3155- else dZ
3156- }
3157-
3158- let mx = {
3159- let eb = mr
3160- let ec = size(eb)
3161- let ed = nil
3162- func ee (ef,eg) = if ((eg >= ec))
3163- then ef
3164- else ms(ef, eb[eg])
3165-
3166- func eh (ef,eg) = if ((eg >= ec))
3167- then ef
3168- else throw("List size exceeds 10")
3169-
3170- eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
3171- }
3172- if ((size(mx) == 0))
3173- then throw("No candidates for robbery")
3174- else {
3175- let my = da(size(mx), height, (ib + fS.transactionId))
3176- let M = mx[my]
3177- $Tuple2([IntegerEntry(L(M), v), IntegerEntry(N(M), (ar + t[v])), ko], M)
31783198 }
31793199 }
31803200 }
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 = 100000000
1616
1717 let h = 400
1818
1919 let i = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
2020
2121 let j = 0
2222
2323 let k = 1
2424
2525 let l = 2
2626
2727 let m = 3
2828
2929 let n = 4
3030
3131 let o = 0
3232
3333 let p = 6
3434
3535 let q = 2
3636
3737 let r = 2
3838
3939 let s = 30
4040
4141 let t = [0, 600000, 900000, 43200000, 21600000]
4242
4343 let u = 20000000
4444
4545 let v = 1
4646
47-func w (x) = ("duckHealth_" + x)
48-
49-
50-func y (x) = ("duckChars_" + x)
51-
52-
53-func z (x) = ("duckXP_" + x)
54-
55-
56-func A (x) = ("duckLevel_" + x)
57-
58-
59-func B (x) = ("duckFreePoints_" + x)
60-
61-
62-func C (x) = ("duckEquipment_" + x)
63-
64-
65-func D (b) = ("userXP_" + b)
66-
67-
68-func E (b) = ("userLevel_" + b)
69-
70-
71-func F (b) = ("userFreePoints_" + b)
72-
73-
74-func G (x) = ("savedHealth_" + x)
75-
76-
77-func H (x) = ("savedLocation_" + x)
78-
79-
80-func I (x) = ("duckBuffs_" + x)
81-
82-
83-func J (x) = ("lastRobberyTime_" + x)
84-
85-
86-func K (x) = ("lastRobberyCost_" + x)
87-
88-
89-func L (M) = ("landRobberyState_" + M)
90-
91-
92-func N (M) = ("landCooldownETA_" + M)
93-
94-
95-let O = 10000
96-
97-let P = 10000
98-
99-let Q = 2000
100-
101-let R = 100000
102-
103-let S = 1000000
104-
105-let T = 5000000
106-
107-let U = 10000
108-
109-let V = 1000000
47+let w = 0
48+
49+let x = 1
50+
51+func y (z) = ("duckHealth_" + z)
52+
53+
54+func A (z) = ("duckChars_" + z)
55+
56+
57+func B (z) = ("duckXP_" + z)
58+
59+
60+func C (z) = ("duckLevel_" + z)
61+
62+
63+func D (z) = ("duckFreePoints_" + z)
64+
65+
66+func E (z) = ("duckEquipment_" + z)
67+
68+
69+func F (b) = ("userXP_" + b)
70+
71+
72+func G (b) = ("userLevel_" + b)
73+
74+
75+func H (b) = ("userFreePoints_" + b)
76+
77+
78+func I (z) = ("savedHealth_" + z)
79+
80+
81+func J (z) = ("savedLocation_" + z)
82+
83+
84+func K (z) = ("duckBuffs_" + z)
85+
86+
87+func L (z) = ("lastRobberyTime_" + z)
88+
89+
90+func M (z) = ("lastRobberyCost_" + z)
91+
92+
93+func N (O) = ("landRobberyState_" + O)
94+
95+
96+func P (O) = ("landCooldownETA_" + O)
97+
98+
99+func Q (z) = ("duckRobberyState_" + z)
100+
101+
102+func R (z) = ("lockedLandByDuck_" + z)
103+
104+
105+let S = 10000
106+
107+let T = 10000
108+
109+let U = 2000
110+
111+let V = 100000
110112
111113 let W = 1000000
112114
113-let X = 10000
114-
115-func Y (Z) = fraction(d, pow(Z, 4, e, 4, 4, DOWN), c)
116-
117-
118-func aa (ab) = (100 + ab)
119-
120-
121-func ac (ad,ae) = {
122- let af = Y(ae)
123-[af, (f * (af - ad))]
124- }
125-
126-
127-func ag (ah,x,ai,aj) = {
128- let ak = split(valueOrElse(getString(ah, y(x)), "0_0_0_0_0"), "_")
129- let al = valueOrElse(getInteger(ah, A(x)), 0)
130- let am = valueOrElse(getInteger(ah, w(x)), aa(al))
131- let an = split(valueOrElse(getString(ah, I(x)), "0_0_0_0_0"), "_")
132- ([parseIntValue(ak[j]), parseIntValue(ak[k]), parseIntValue(ak[l]), parseIntValue(ak[m]), parseIntValue(ak[n]), al, am] ++ (if (aj)
133- then [ai, ai, ai, ai, ai]
134- else [parseIntValue(an[j]), parseIntValue(an[k]), parseIntValue(an[l]), parseIntValue(an[m]), parseIntValue(an[n])]))
135- }
136-
137-
138-func ao (ah,x) = {
139- let ap = valueOrElse(getInteger(ah, K(x)), 0)
140- let aq = valueOrElse(getInteger(ah, J(x)), 0)
141- let ar = lastBlock.timestamp
142- let as = max([g, (ap - (h * (ar - aq)))])
143- $Tuple2(as, aq)
144- }
145-
146-
147-let at = "LAND"
148-
149-let au = "DUCK"
150-
151-let av = "PRESALE"
152-
153-let aw = 6
154-
155-let ax = 25
156-
157-let ay = 3456000
158-
159-let az = 86400000
160-
161-let aA = 10000000000
162-
163-let aB = "Africa_F_Africa"
164-
165-let aC = 39637
166-
167-let aD = 10
168-
169-let aE = ["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"]
170-
171-let aF = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
172-
173-let aG = 10000000
174-
175-let aH = [15, 16, 17, 18, 19, 20]
176-
177-let aI = ["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_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "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_"]
178-
179-let aJ = 6
180-
181-let aK = 8
182-
183-let aL = 9
184-
185-let aM = 10
186-
187-let aN = 10
188-
189-let aO = 0
190-
191-let aP = 1
192-
193-let aQ = 2
194-
195-let aR = 3
196-
197-let aS = 4
198-
199-let aT = 0
200-
201-let aU = 1
202-
203-let aV = 2
204-
205-let aW = 3
206-
207-let aX = 0
208-
209-let aY = 1
210-
211-let aZ = 2
212-
213-let ba = 3
214-
215-func bb (b) = ("lastTxIdByUser_" + b)
216-
217-
218-func bc (bd) = ("nftOwner_" + bd)
219-
220-
221-func be (bd) = ("landCustomNameByAssetId_" + bd)
222-
223-
224-func bf (bd) = ("stakedTime_" + bd)
225-
226-
227-func bg (bh,bd) = makeString(["landArtStatus", bh, bd], "_")
228-
229-
230-func bi (bj,bd,bk) = ((((("stakedTimeByTypeAssetIdAndOwner_" + bj) + "_") + bd) + "_") + bk)
231-
232-
233-func bl (M) = ("wareHouse_" + M)
234-
235-
236-func bm (bd) = ("infraLevel_" + bd)
237-
238-
239-func bn (M) = ("fortifications_" + M)
240-
241-
242-func bo (bd) = ("duckCustomNameByAssetId_" + bd)
243-
244-
245-func bp (b) = ("accountCustomNameByAddr_" + b)
246-
247-
248-func bq (b) = ("accRefBy_" + b)
249-
250-
251-func br (x) = ("onboardArtActivatedOnDuck_" + x)
252-
253-
254-func bs (b) = ("onboardArtActivatedDuckBy_" + b)
255-
256-
257-func bt (b) = ("accReferrals_" + b)
258-
259-
260-func bu (bd) = ("duckOwner_" + bd)
261-
262-
263-func bv (bk) = ("stakedDuckByOwner_" + bk)
264-
265-
266-func bw (x) = ("backPack_" + x)
267-
268-
269-func bx (x) = ("duckLocation_" + x)
270-
271-
272-func by () = "contractsBlocked"
273-
274-
275-func bz (bA) = ("%s%s__userGwlReleaseTime__" + bA)
276-
277-
278-func bB () = "emergencyWarehouseProducts"
279-
280-
281-let bC = "%s__lastTourId"
282-
283-func bD (bE) = ("%s%d__tourStaticData__" + toString(bE))
284-
285-
286-func bF (bE) = ("%s%d__tourDynamicData__" + toString(bE))
287-
288-
289-let bG = 0
290-
291-let bH = 1
292-
293-func bI (bJ,bE) = {
294- let bK = split(valueOrErrorMessage(getString(bJ, bD(bE)), (("Error reading tournament " + toString(bE)) + " data")), "__")
295- let bL = split(valueOrErrorMessage(getString(bJ, bF(bE)), (("Error reading tournament " + toString(bE)) + " data")), "__")
296-[bK, bL]
297- }
298-
299-
300-let bM = 6
301-
302-let bN = 1
303-
304-let bO = 3
305-
306-let bP = 0
307-
308-let bQ = 1
309-
310-let bR = 2
311-
312-func bS (bT) = (parseIntValue(bT[aJ]) * aG)
313-
314-
315-let bU = false
316-
317-let bV = false
318-
319-let bW = take(drop(this.bytes, 1), 1)
320-
321-let bX = {
322- let bY = bW
323- if ((base58'2W' == bY))
115+let X = 5000000
116+
117+let Y = 10000
118+
119+let Z = 1000000
120+
121+let aa = 1000000
122+
123+let ab = 10000
124+
125+func ac (ad) = fraction(d, pow(ad, 4, e, 4, 4, DOWN), c)
126+
127+
128+func ae (af) = (100 + af)
129+
130+
131+func ag (ah,ai) = {
132+ let aj = ac(ai)
133+[aj, (f * (aj - ah))]
134+ }
135+
136+
137+func ak (al,z,am,an) = {
138+ let ao = split(valueOrElse(getString(al, A(z)), "0_0_0_0_0"), "_")
139+ let ap = valueOrElse(getInteger(al, C(z)), 0)
140+ let aq = valueOrElse(getInteger(al, y(z)), ae(ap))
141+ let ar = split(valueOrElse(getString(al, K(z)), "0_0_0_0_0"), "_")
142+ ([parseIntValue(ao[j]), parseIntValue(ao[k]), parseIntValue(ao[l]), parseIntValue(ao[m]), parseIntValue(ao[n]), ap, aq] ++ (if (an)
143+ then [am, am, am, am, am]
144+ else [parseIntValue(ar[j]), parseIntValue(ar[k]), parseIntValue(ar[l]), parseIntValue(ar[m]), parseIntValue(ar[n])]))
145+ }
146+
147+
148+func as (al,z) = {
149+ let at = valueOrElse(getInteger(al, M(z)), 0)
150+ let au = valueOrElse(getInteger(al, L(z)), 0)
151+ let av = lastBlock.timestamp
152+ let aw = max([g, (at - (h * (av - au)))])
153+ let ax = valueOrElse(getInteger(al, Q(z)), 0)
154+ let ay = valueOrElse(getString(al, R(z)), "")
155+ let az = valueOrElse(getInteger(al, P(ay)), 0)
156+ $Tuple5(aw, au, ax, ay, az)
157+ }
158+
159+
160+let aA = "LAND"
161+
162+let aB = "DUCK"
163+
164+let aC = "PRESALE"
165+
166+let aD = 6
167+
168+let aE = 25
169+
170+let aF = 3456000
171+
172+let aG = 86400000
173+
174+let aH = 10000000000
175+
176+let aI = "Africa_F_Africa"
177+
178+let aJ = 39637
179+
180+let aK = 10
181+
182+let aL = ["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"]
183+
184+let aM = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
185+
186+let aN = 10000000
187+
188+let aO = [15, 16, 17, 18, 19, 20]
189+
190+let aP = ["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_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "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_"]
191+
192+let aQ = 6
193+
194+let aR = 8
195+
196+let aS = 9
197+
198+let aT = 10
199+
200+let aU = 10
201+
202+let aV = 0
203+
204+let aW = 1
205+
206+let aX = 2
207+
208+let aY = 3
209+
210+let aZ = 4
211+
212+let ba = 0
213+
214+let bb = 1
215+
216+let bc = 2
217+
218+let bd = 3
219+
220+let be = 0
221+
222+let bf = 1
223+
224+let bg = 2
225+
226+let bh = 3
227+
228+func bi (b) = ("lastTxIdByUser_" + b)
229+
230+
231+func bj (bk) = ("nftOwner_" + bk)
232+
233+
234+func bl (bk) = ("landCustomNameByAssetId_" + bk)
235+
236+
237+func bm (bk) = ("stakedTime_" + bk)
238+
239+
240+func bn (bo,bk) = makeString(["landArtStatus", bo, bk], "_")
241+
242+
243+func bp (bq,bk,br) = ((((("stakedTimeByTypeAssetIdAndOwner_" + bq) + "_") + bk) + "_") + br)
244+
245+
246+func bs (O) = ("wareHouse_" + O)
247+
248+
249+func bt (bk) = ("infraLevel_" + bk)
250+
251+
252+func bu (O) = ("fortifications_" + O)
253+
254+
255+func bv (bk) = ("duckCustomNameByAssetId_" + bk)
256+
257+
258+func bw (b) = ("accountCustomNameByAddr_" + b)
259+
260+
261+func bx (b) = ("accRefBy_" + b)
262+
263+
264+func by (z) = ("onboardArtActivatedOnDuck_" + z)
265+
266+
267+func bz (b) = ("onboardArtActivatedDuckBy_" + b)
268+
269+
270+func bA (b) = ("accReferrals_" + b)
271+
272+
273+func bB (bk) = ("duckOwner_" + bk)
274+
275+
276+func bC (br) = ("stakedDuckByOwner_" + br)
277+
278+
279+func bD (z) = ("backPack_" + z)
280+
281+
282+func bE (z) = ("duckLocation_" + z)
283+
284+
285+func bF () = "contractsBlocked"
286+
287+
288+func bG (bH) = ("%s%s__userGwlReleaseTime__" + bH)
289+
290+
291+func bI () = "emergencyWarehouseProducts"
292+
293+
294+let bJ = "%s__lastTourId"
295+
296+func bK (bL) = ("%s%d__tourStaticData__" + toString(bL))
297+
298+
299+func bM (bL) = ("%s%d__tourDynamicData__" + toString(bL))
300+
301+
302+let bN = 0
303+
304+let bO = 1
305+
306+func bP (bQ,bL) = {
307+ let bR = split(valueOrErrorMessage(getString(bQ, bK(bL)), (("Error reading tournament " + toString(bL)) + " data")), "__")
308+ let bS = split(valueOrErrorMessage(getString(bQ, bM(bL)), (("Error reading tournament " + toString(bL)) + " data")), "__")
309+[bR, bS]
310+ }
311+
312+
313+let bT = 6
314+
315+let bU = 1
316+
317+let bV = 3
318+
319+let bW = 0
320+
321+let bX = 1
322+
323+let bY = 2
324+
325+func bZ (ca) = (parseIntValue(ca[aQ]) * aN)
326+
327+
328+let cb = false
329+
330+let cc = false
331+
332+let cd = take(drop(this.bytes, 1), 1)
333+
334+let ce = {
335+ let cf = cd
336+ if ((base58'2W' == cf))
324337 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
325- else if ((base58'2T' == bY))
338+ else if ((base58'2T' == cf))
326339 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
327340 else throw("Unknown chain")
328341 }
329342
330-let bZ = {
331- let bY = bW
332- if ((base58'2W' == bY))
343+let cg = {
344+ let cf = cd
345+ if ((base58'2W' == cf))
333346 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
334- else if ((base58'2T' == bY))
347+ else if ((base58'2T' == cf))
335348 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
336349 else throw("Unknown chain")
337350 }
338351
339-let ca = {
340- let bY = bW
341- if ((base58'2W' == bY))
352+let ch = {
353+ let cf = cd
354+ if ((base58'2W' == cf))
342355 then 10000000000
343- else if ((base58'2T' == bY))
356+ else if ((base58'2T' == cf))
344357 then 100000000
345358 else throw("Unknown chain")
346359 }
347360
348-let cb = {
349- let bY = bW
350- if ((base58'2W' == bY))
361+let ci = {
362+ let cf = cd
363+ if ((base58'2W' == cf))
351364 then 86400000
352- else if ((base58'2T' == bY))
365+ else if ((base58'2T' == cf))
353366 then 60000
354367 else throw("Unknown chain")
355368 }
356369
357-let cc = "__"
358-
359-let cd = 1000000
360-
361-let ce = 100000000
362-
363-let cf = 25
364-
365-let cg = 100
366-
367-let ch = 225
368-
369-let ci = 400
370-
371-let cj = 625
372-
373-let ck = [0, 1, 2, 3, 4, 5]
374-
375-func cl (cm,cn) = valueOrErrorMessage(getString(cm, cn), makeString(["mandatory ", toString(cm), ".", cn, " is not defined"], ""))
376-
377-
378-let co = 1
379-
380-let cp = 2
381-
382-let cq = 3
383-
384-let cr = 4
385-
386-let cs = 7
387-
388-func ct () = "%s__restConfig"
389-
390-
391-func cu () = "%s__restAddr"
392-
393-
394-func cv (cw) = split_4C(cl(cw, ct()), cc)
395-
396-
397-func cx (cy,cz) = valueOrErrorMessage(addressFromString(cy[cz]), ("Rest cfg doesn't contain address at index " + toString(cz)))
398-
399-
400-let cA = addressFromStringValue(valueOrElse(getString(this, cu()), bZ))
401-
402-let cy = cv(cA)
403-
404-let ah = cx(cy, co)
405-
406-let cB = cx(cy, cp)
407-
408-let cC = cx(cy, cq)
409-
410-let cD = cx(cy, cr)
411-
412-let cE = cx(cy, cs)
413-
414-let cF = 0
415-
416-let cG = 1
417-
418-let cH = 2
419-
420-let cI = 3
421-
422-let cJ = "wlg_assetId"
423-
424-let cK = valueOrErrorMessage(getBinary(cD, cJ), "Not initialized yet")
425-
426-let cL = 2
427-
428-func cM (cm) = ("finishBlockForAddr_" + cm)
429-
430-
431-func cN () = "resTypesProportions"
432-
433-
434-func cO (cP) = ("resTypesByContinent_" + cP)
435-
436-
437-func cQ (bk) = ("stakedLandsByOwner_" + bk)
438-
439-
440-func cR (bk) = ("stakedPiecesByOwner_" + bk)
441-
442-
443-func cS (cT) = {
444- let bY = cT
445- if ($isInstanceOf(bY, "String"))
370+let cj = "__"
371+
372+let ck = 1000000
373+
374+let cl = 100000000
375+
376+let cm = 25
377+
378+let cn = 100
379+
380+let co = 225
381+
382+let cp = 400
383+
384+let cq = 625
385+
386+let cr = [0, 1, 2, 3, 4, 5]
387+
388+func cs (ct,cu) = valueOrErrorMessage(getString(ct, cu), makeString(["mandatory ", toString(ct), ".", cu, " is not defined"], ""))
389+
390+
391+let cv = 1
392+
393+let cw = 2
394+
395+let cx = 3
396+
397+let cy = 4
398+
399+let cz = 7
400+
401+func cA () = "%s__restConfig"
402+
403+
404+func cB () = "%s__restAddr"
405+
406+
407+func cC (cD) = split_4C(cs(cD, cA()), cj)
408+
409+
410+func cE (cF,cG) = valueOrErrorMessage(addressFromString(cF[cG]), ("Rest cfg doesn't contain address at index " + toString(cG)))
411+
412+
413+let cH = addressFromStringValue(valueOrElse(getString(this, cB()), cg))
414+
415+let cF = cC(cH)
416+
417+let al = cE(cF, cv)
418+
419+let cI = cE(cF, cw)
420+
421+let cJ = cE(cF, cx)
422+
423+let cK = cE(cF, cy)
424+
425+let cL = cE(cF, cz)
426+
427+let cM = 0
428+
429+let cN = 1
430+
431+let cO = 2
432+
433+let cP = 3
434+
435+let cQ = "wlg_assetId"
436+
437+let cR = valueOrErrorMessage(getBinary(cK, cQ), "Not initialized yet")
438+
439+let cS = 2
440+
441+func cT (ct) = ("finishBlockForAddr_" + ct)
442+
443+
444+func cU () = "resTypesProportions"
445+
446+
447+func cV (cW) = ("resTypesByContinent_" + cW)
448+
449+
450+func cX (br) = ("stakedLandsByOwner_" + br)
451+
452+
453+func cY (br) = ("stakedPiecesByOwner_" + br)
454+
455+
456+func cZ (da) = {
457+ let cf = da
458+ if ($isInstanceOf(cf, "String"))
446459 then {
447- let cU = bY
448- cU
460+ let db = cf
461+ db
449462 }
450463 else throw("fail to cast into String")
451464 }
452465
453466
454-func cV (cT) = {
455- let bY = cT
456- if ($isInstanceOf(bY, "Int"))
467+func dc (da) = {
468+ let cf = da
469+ if ($isInstanceOf(cf, "Int"))
457470 then {
458- let cW = bY
459- cW
471+ let dd = cf
472+ dd
460473 }
461474 else throw("fail to cast into Int")
462475 }
463476
464477
465-func cX (cY) = {
466- let bY = cY
467- if (("S" == bY))
468- then cf
469- else if (("M" == bY))
470- then cg
471- else if (("L" == bY))
472- then ch
473- else if (("XL" == bY))
474- then ci
475- else if (("XXL" == bY))
476- then cj
478+func de (df) = {
479+ let cf = df
480+ if (("S" == cf))
481+ then cm
482+ else if (("M" == cf))
483+ then cn
484+ else if (("L" == cf))
485+ then co
486+ else if (("XL" == cf))
487+ then cp
488+ else if (("XXL" == cf))
489+ then cq
477490 else throw("Unknown land size")
478491 }
479492
480493
481-func cZ (cU) = isDefined(parseInt(cU))
482-
483-
484-func da (db,dc,dd) = {
485- let de = value(blockInfoByHeight(dc))
486- let df = sha256((value(de.vrf) + dd))
487- (toInt(df) % db)
488- }
489-
490-
491-let dg = {
492- let bY = bW
493- if ((base58'2W' == bY))
494+func dg (db) = isDefined(parseInt(db))
495+
496+
497+func dh (di,dj,dk) = {
498+ let dl = value(blockInfoByHeight(dj))
499+ let dm = sha256((value(dl.vrf) + dk))
500+ (toInt(dm) % di)
501+ }
502+
503+
504+let dn = {
505+ let cf = cd
506+ if ((base58'2W' == cf))
494507 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
495- else if ((base58'2T' == bY))
508+ else if ((base58'2T' == cf))
496509 then this
497510 else throw("Unknown chain")
498511 }
499512
500-let dh = {
501- let bY = bW
502- if ((base58'2W' == bY))
513+let do = {
514+ let cf = cd
515+ if ((base58'2W' == cf))
503516 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
504- else if ((base58'2T' == bY))
517+ else if ((base58'2T' == cf))
505518 then this
506519 else throw("Unknown chain")
507520 }
508521
509-let di = {
510- let bY = bW
511- if ((base58'2W' == bY))
512- then if (bU)
522+let dp = {
523+ let cf = cd
524+ if ((base58'2W' == cf))
525+ then if (cb)
513526 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
514527 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
515- else if ((base58'2T' == bY))
528+ else if ((base58'2T' == cf))
516529 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
517530 else throw("Unknown chain")
518531 }
519532
520-let dj = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
521-
522-let dk = 300000
523-
524-let dl = 5000000
525-
526-let dm = 50
527-
528-let dn = 10000000
529-
530-let do = {
531- let bY = bW
532- if ((base58'2W' == bY))
533+let dq = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
534+
535+let dr = 300000
536+
537+let ds = 5000000
538+
539+let dt = 50
540+
541+let du = 10000000
542+
543+let dv = {
544+ let cf = cd
545+ if ((base58'2W' == cf))
533546 then 252289527462
534- else if ((base58'2T' == bY))
547+ else if ((base58'2T' == cf))
535548 then 2522895274
536549 else throw("Unknown chain")
537550 }
538551
539-let dp = {
540- let bY = bW
541- if ((base58'2W' == bY))
552+let dw = {
553+ let cf = cd
554+ if ((base58'2W' == cf))
542555 then 250000000
543- else if ((base58'2T' == bY))
556+ else if ((base58'2T' == cf))
544557 then 250000000
545558 else throw("Unknown chain")
546559 }
547560
548-let dq = toBigInt(5)
549-
550-let dr = toBigInt(20)
551-
552-let ds = toBigInt((20 * 20))
553-
554-let dt = toBigInt(((20 * 20) * 20))
555-
556-let du = toBigInt((((20 * 20) * 20) * 20))
557-
558-let dv = toBigInt(((((20 * 20) * 20) * 20) * 20))
559-
560-let dw = 500
561-
562-func dx () = "nextLandNum"
563-
564-
565-func dy (dz) = ("landByCustomName_" + dz)
566-
567-
568-func dA (dB) = ("landToAsset_" + dB)
569-
570-
571-func dC (bd,bk) = ((("infraLevelByAssetIdAndOwner_" + bd) + "_") + bk)
572-
573-
574-func dD (dB) = ("landOwner_" + dB)
575-
576-
577-func dE (dz) = ("duckByCustomName_" + dz)
578-
579-
580-func dF (dz) = ("accountByCustomName_" + dz)
581-
582-
583-func dG () = "oldiesList"
584-
585-
586-let dH = 0
587-
588-let dI = 1
589-
590-let dJ = 2
591-
592-let dK = 0
593-
594-let dL = 5
595-
596-let dM = 6
597-
598-let dN = 7
599-
600-func dO (dB,cY) = ((at + dB) + cY)
601-
602-
603-func dP (dQ,dR) = {
604- let dS = if ((dQ >= 0))
605- then (((dQ + dR) - 1) / dR)
606- else -((((-(dQ) + dR) - 1) / dR))
607- (dS * ce)
608- }
609-
610-
611-func dT (dU,dV) = {
612- let dW = (((((dV[0] + dV[1]) + dV[2]) + dV[3]) + dV[4]) + dV[5])
613- if ((0 >= dW))
561+let dx = toBigInt(5)
562+
563+let dy = toBigInt(20)
564+
565+let dz = toBigInt((20 * 20))
566+
567+let dA = toBigInt(((20 * 20) * 20))
568+
569+let dB = toBigInt((((20 * 20) * 20) * 20))
570+
571+let dC = toBigInt(((((20 * 20) * 20) * 20) * 20))
572+
573+let dD = 500
574+
575+func dE () = "nextLandNum"
576+
577+
578+func dF (dG) = ("landByCustomName_" + dG)
579+
580+
581+func dH (dI) = ("landToAsset_" + dI)
582+
583+
584+func dJ (bk,br) = ((("infraLevelByAssetIdAndOwner_" + bk) + "_") + br)
585+
586+
587+func dK (dI) = ("landOwner_" + dI)
588+
589+
590+func dL (dG) = ("duckByCustomName_" + dG)
591+
592+
593+func dM (dG) = ("accountByCustomName_" + dG)
594+
595+
596+func dN () = "oldiesList"
597+
598+
599+let dO = 0
600+
601+let dP = 1
602+
603+let dQ = 2
604+
605+let dR = 0
606+
607+let dS = 5
608+
609+let dT = 6
610+
611+let dU = 7
612+
613+func dV (dI,df) = ((aA + dI) + df)
614+
615+
616+func dW (dX,dY) = {
617+ let dZ = if ((dX >= 0))
618+ then (((dX + dY) - 1) / dY)
619+ else -((((-(dX) + dY) - 1) / dY))
620+ (dZ * cl)
621+ }
622+
623+
624+func ea (eb,ec) = {
625+ let ed = (((((ec[0] + ec[1]) + ec[2]) + ec[3]) + ec[4]) + ec[5])
626+ if ((0 >= ed))
614627 then throw("Zero weights sum")
615628 else {
616- let dX = fraction(dU, cd, dW)
617- func dY (dZ,ea) = (dZ :+ fraction(ea, dX, cd))
618-
619- let eb = dV
620- let ec = size(eb)
621- let ed = nil
622- func ee (ef,eg) = if ((eg >= ec))
623- then ef
624- else dY(ef, eb[eg])
625-
626- func eh (ef,eg) = if ((eg >= ec))
627- then ef
629+ let ee = fraction(eb, ck, ed)
630+ func ef (eg,eh) = (eg :+ fraction(eh, ee, ck))
631+
632+ let ei = ec
633+ let ej = size(ei)
634+ let ek = nil
635+ func el (em,en) = if ((en >= ej))
636+ then em
637+ else ef(em, ei[en])
638+
639+ func eo (em,en) = if ((en >= ej))
640+ then em
628641 else throw("List size exceeds 6")
629642
630- eh(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6)
631- }
632- }
633-
634-
635-func ei (dU) = {
636- let ej = split(value(getString(cN())), "_")
637- if ((size(ej) != aw))
643+ eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
644+ }
645+ }
646+
647+
648+func ep (eb) = {
649+ let eq = split(value(getString(cU())), "_")
650+ if ((size(eq) != aD))
638651 then throw("Wrong proportions data")
639652 else {
640- let ek = [parseIntValue(ej[0]), parseIntValue(ej[1]), parseIntValue(ej[2]), parseIntValue(ej[3]), parseIntValue(ej[4]), parseIntValue(ej[5])]
641- dT(dU, ek)
642- }
643- }
644-
645-
646-func el (em,en,eo) = {
647- let ep = ei(eo)
648- func eq (dZ,cz) = {
649- let er = (parseIntValue(en[cz]) - ep[cz])
650- if ((0 > er))
651- then throw(((((("Not enough material idx=" + toString(cz)) + ", you have ") + en[cz]) + ", but need ") + toString(ep[cz])))
652- else (dZ :+ toString(er))
653+ let er = [parseIntValue(eq[0]), parseIntValue(eq[1]), parseIntValue(eq[2]), parseIntValue(eq[3]), parseIntValue(eq[4]), parseIntValue(eq[5])]
654+ ea(eb, er)
655+ }
656+ }
657+
658+
659+func es (et,eu,ev) = {
660+ let ew = ep(ev)
661+ func ex (eg,cG) = {
662+ let ey = (parseIntValue(eu[cG]) - ew[cG])
663+ if ((0 > ey))
664+ then throw(((((("Not enough material idx=" + toString(cG)) + ", you have ") + eu[cG]) + ", but need ") + toString(ew[cG])))
665+ else (eg :+ toString(ey))
653666 }
654667
655- if (em)
668+ if (et)
656669 then {
657- let eb = ck
658- let ec = size(eb)
659- let ed = nil
660- func ee (ef,eg) = if ((eg >= ec))
661- then ef
662- else eq(ef, eb[eg])
663-
664- func eh (ef,eg) = if ((eg >= ec))
665- then ef
670+ let ei = cr
671+ let ej = size(ei)
672+ let ek = nil
673+ func el (em,en) = if ((en >= ej))
674+ then em
675+ else ex(em, ei[en])
676+
677+ func eo (em,en) = if ((en >= ej))
678+ then em
666679 else throw("List size exceeds 6")
667680
668- eh(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6)
669- }
670- else en
671- }
672-
673-
674-func es (et,eu) = if ((eu == ""))
675- then $Tuple2(et, false)
681+ eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
682+ }
683+ else eu
684+ }
685+
686+
687+func ez (eA,eB) = if ((eB == ""))
688+ then $Tuple2(eA, false)
676689 else {
677- func ev (dZ,ew) = {
678- let ex = split(ew, ",")
679- if ((size(ex) != 2))
690+ func eC (eg,eD) = {
691+ let eE = split(eD, ",")
692+ if ((size(eE) != 2))
680693 then throw("Incorrect format, should be index,amount")
681694 else {
682- let cz = parseIntValue(ex[0])
683- if (if ((0 > cz))
695+ let cG = parseIntValue(eE[0])
696+ if (if ((0 > cG))
684697 then true
685- else (cz >= size(aI)))
698+ else (cG >= size(aP)))
686699 then throw("Unknown product idx")
687700 else {
688- let ey = parseIntValue(ex[1])
689- let ez = split(dZ._1, (ex[0] + ":"))
690- if ((size(ez) != 2))
691- then throw((("You don't have " + aE[cz]) + " equipped"))
701+ let eF = parseIntValue(eE[1])
702+ let eG = split(eg._1, (eE[0] + ":"))
703+ if ((size(eG) != 2))
704+ then throw((("You don't have " + aL[cG]) + " equipped"))
692705 else {
693- let eA = ez[1]
694- let eB = if (cZ(take(drop(eA, 1), 1)))
706+ let eH = eG[1]
707+ let eI = if (dg(take(drop(eH, 1), 1)))
695708 then 2
696709 else 1
697- let eC = parseIntValue(take(eA, eB))
698- let eD = drop(eA, eB)
699- let eE = if ((eC >= ey))
700- then (eC - ey)
701- else throw(((((("You equipped " + toString(eC)) + " of ") + aE[cz]) + ", but tried to use ") + toString(ey)))
702- $Tuple2(((((ez[0] + ex[0]) + ":") + toString(eE)) + eD), if (dZ._2)
710+ let eJ = parseIntValue(take(eH, eI))
711+ let eK = drop(eH, eI)
712+ let eL = if ((eJ >= eF))
713+ then (eJ - eF)
714+ else throw(((((("You equipped " + toString(eJ)) + " of ") + aL[cG]) + ", but tried to use ") + toString(eF)))
715+ $Tuple2(((((eG[0] + eE[0]) + ":") + toString(eL)) + eK), if (eg._2)
703716 then true
704- else if (if ((cz >= 6))
705- then (8 >= cz)
717+ else if (if ((cG >= 6))
718+ then (8 >= cG)
706719 else false)
707- then (eE == 0)
720+ then (eL == 0)
708721 else false)
709722 }
710723 }
711724 }
712725 }
713726
714- let eb = split(eu, "_")
715- let ec = size(eb)
716- let ed = $Tuple2(et, false)
717- func ee (ef,eg) = if ((eg >= ec))
718- then ef
719- else ev(ef, eb[eg])
720-
721- func eh (ef,eg) = if ((eg >= ec))
722- then ef
727+ let ei = split(eB, "_")
728+ let ej = size(ei)
729+ let ek = $Tuple2(eA, false)
730+ func el (em,en) = if ((en >= ej))
731+ then em
732+ else eC(em, ei[en])
733+
734+ func eo (em,en) = if ((en >= ej))
735+ then em
723736 else throw("List size exceeds 10")
724737
725- eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
738+ eo(el(el(el(el(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
726739 }
727740
728741
729-func eF (eG) = {
730- let eH = if ((eG == ""))
742+func eM (eN) = {
743+ let eO = if ((eN == ""))
731744 then nil
732- else split_4C(eG, "_")
733- func eI (dZ,bT) = {
734- let eJ = (size(dZ) / 8)
735- let eC = if ((size(eH) > eJ))
736- then parseIntValue(eH[eJ])
745+ else split_4C(eN, "_")
746+ func eP (eg,ca) = {
747+ let eQ = (size(eg) / 8)
748+ let eJ = if ((size(eO) > eQ))
749+ then parseIntValue(eO[eQ])
737750 else 0
738- (dZ + toBytes(eC))
751+ (eg + toBytes(eJ))
739752 }
740753
741- let eb = aI
742- let ec = size(eb)
743- let ed = base58''
744- func ee (ef,eg) = if ((eg >= ec))
745- then ef
746- else eI(ef, eb[eg])
747-
748- func eh (ef,eg) = if ((eg >= ec))
749- then ef
754+ let ei = aP
755+ let ej = size(ei)
756+ let ek = base58''
757+ func el (em,en) = if ((en >= ej))
758+ then em
759+ else eP(em, ei[en])
760+
761+ func eo (em,en) = if ((en >= ej))
762+ then em
750763 else throw("List size exceeds 50")
751764
752- eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 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)
753- }
754-
755-
756-func eK (eL) = {
757- func eM (dZ,bT) = {
758- let eJ = size(dZ)
759- let eN = take(drop(eL, (8 * eJ)), 8)
760- (dZ :+ toString(toInt(eN)))
765+ eo(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(ek, 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)
766+ }
767+
768+
769+func eR (eS) = {
770+ func eT (eg,ca) = {
771+ let eQ = size(eg)
772+ let eU = take(drop(eS, (8 * eQ)), 8)
773+ (eg :+ toString(toInt(eU)))
761774 }
762775
763776 makeString_2C({
764- let eb = aI
765- let ec = size(eb)
766- let ed = nil
767- func ee (ef,eg) = if ((eg >= ec))
768- then ef
769- else eM(ef, eb[eg])
770-
771- func eh (ef,eg) = if ((eg >= ec))
772- then ef
777+ let ei = aP
778+ let ej = size(ei)
779+ let ek = nil
780+ func el (em,en) = if ((en >= ej))
781+ then em
782+ else eT(em, ei[en])
783+
784+ func eo (em,en) = if ((en >= ej))
785+ then em
773786 else throw("List size exceeds 50")
774787
775- eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 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)
788+ eo(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(ek, 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)
776789 }, "_")
777790 }
778791
779792
780-func eO (eP,eQ) = {
781- func eR (dZ,eJ) = {
782- let eS = if ((size(eP) > (7 + eJ)))
783- then eP[(7 + eJ)]
793+func eV (eW,eX) = {
794+ func eY (eg,eQ) = {
795+ let eZ = if ((size(eW) > (7 + eQ)))
796+ then eW[(7 + eQ)]
784797 else 0
785- if ((parseIntValue(eQ[eJ]) > (eP[eJ] + eS)))
786- then throw(("Requirement not satisfied: " + i[eJ]))
798+ if ((parseIntValue(eX[eQ]) > (eW[eQ] + eZ)))
799+ then throw(("Requirement not satisfied: " + i[eQ]))
787800 else true
788801 }
789802
790- let eb = [0, 1, 2, 3, 4, 5, 6]
791- let ec = size(eb)
792- let ed = false
793- func ee (ef,eg) = if ((eg >= ec))
794- then ef
795- else eR(ef, eb[eg])
796-
797- func eh (ef,eg) = if ((eg >= ec))
798- then ef
803+ let ei = [0, 1, 2, 3, 4, 5, 6]
804+ let ej = size(ei)
805+ let ek = false
806+ func el (em,en) = if ((en >= ej))
807+ then em
808+ else eY(em, ei[en])
809+
810+ func eo (em,en) = if ((en >= ej))
811+ then em
799812 else throw("List size exceeds 7")
800813
801- eh(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7)
802- }
803-
804-
805-func eT (eU,eH,eV,eP,eW,eX) = {
806- let ex = split(eU, ":")
807- if ((size(ex) != 2))
814+ eo(el(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6), 7)
815+ }
816+
817+
818+func fa (fb,eO,fc,eW,fd,fe) = {
819+ let eE = split(fb, ":")
820+ if ((size(eE) != 2))
808821 then throw("Incorrect format, should be index:amount")
809- else if (if (!(eV))
810- then (size(ex[0]) != 2)
822+ else if (if (!(fc))
823+ then (size(eE[0]) != 2)
811824 else false)
812825 then throw("Product idx should be 2 digits, zero padded")
813826 else {
814- let eY = parseIntValue(ex[0])
815- let eZ = parseIntValue(ex[1])
816- if (!(containsElement(aH, eY)))
817- then throw((("Product '" + aE[eY]) + "' cannot be used for land defense"))
818- else if ((0 > eZ))
827+ let ff = parseIntValue(eE[0])
828+ let fg = parseIntValue(eE[1])
829+ if (!(containsElement(aO, ff)))
830+ then throw((("Product '" + aL[ff]) + "' cannot be used for land defense"))
831+ else if ((0 > fg))
819832 then throw("Count can't be negative")
820- else if ((eZ > s))
821- then throw(((("Can't put more than " + toString(s)) + " of ") + aE[eY]))
822- else if ((eZ == 0))
823- then $Tuple3(eH, eW, eX)
833+ else if ((fg > s))
834+ then throw(((("Can't put more than " + toString(s)) + " of ") + aL[ff]))
835+ else if ((fg == 0))
836+ then $Tuple3(eO, fd, fe)
824837 else {
825- let fa = take(eH, (8 * eY))
826- let eC = toInt(take(drop(eH, (8 * eY)), 8))
827- let eD = drop(eH, (8 * (eY + 1)))
828- let bT = split(aI[eY], "_")
829- if (if (!(eV))
830- then (eZ > eC)
838+ let fh = take(eO, (8 * ff))
839+ let eJ = toInt(take(drop(eO, (8 * ff)), 8))
840+ let eK = drop(eO, (8 * (ff + 1)))
841+ let ca = split(aP[ff], "_")
842+ if (if (!(fc))
843+ then (fg > eJ)
831844 else false)
832- then throw(((((("You have " + toString(eC)) + " of ") + aE[eY]) + ", but tried to use ") + toString(eZ)))
845+ then throw(((((("You have " + toString(eJ)) + " of ") + aL[ff]) + ", but tried to use ") + toString(fg)))
833846 else {
834- let eE = if (if (!(eV))
835- then eO(eP, split(bT[aL], ","))
847+ let eL = if (if (!(fc))
848+ then eV(eW, split(ca[aS], ","))
836849 else false)
837- then (eC - eZ)
838- else (eC + eZ)
839- let fb = (dP(eE, aN) - dP(eC, aN))
840- $Tuple3(((fa + toBytes(eE)) + eD), (eW + fb), (eX - fb))
850+ then (eJ - fg)
851+ else (eJ + fg)
852+ let fi = (dW(eL, aU) - dW(eJ, aU))
853+ $Tuple3(((fh + toBytes(eL)) + eK), (fd + fi), (fe - fi))
841854 }
842855 }
843856 }
844857 }
845858
846859
847-func fc (eU,eH,eV,fd,fe,ff,eP) = {
848- let ex = split(eU, ":")
849- if ((size(ex) != 2))
860+func fj (fb,eO,fc,fk,fl,fm,eW) = {
861+ let eE = split(fb, ":")
862+ if ((size(eE) != 2))
850863 then throw("Incorrect format, should be index:amount")
851- else if (if (!(eV))
852- then (size(ex[0]) != 2)
864+ else if (if (!(fc))
865+ then (size(eE[0]) != 2)
853866 else false)
854867 then throw("Product idx should be 2 digits, zero padded")
855868 else {
856- let eY = parseIntValue(ex[0])
857- let eZ = parseIntValue(ex[1])
858- if (if ((0 > eY))
869+ let ff = parseIntValue(eE[0])
870+ let fg = parseIntValue(eE[1])
871+ if (if ((0 > ff))
859872 then true
860- else (eY >= size(aI)))
873+ else (ff >= size(aP)))
861874 then throw("Unknown product idx")
862- else if ((0 > eZ))
875+ else if ((0 > fg))
863876 then throw("Count can't be negative")
864- else if ((eZ > s))
865- then throw(((("Can't put more than " + toString(s)) + " of ") + aE[eY]))
866- else if ((eZ == 0))
867- then $Tuple2(eH, false)
877+ else if ((fg > s))
878+ then throw(((("Can't put more than " + toString(s)) + " of ") + aL[ff]))
879+ else if ((fg == 0))
880+ then $Tuple2(eO, false)
868881 else {
869- let fa = take(eH, (8 * eY))
870- let eC = toInt(take(drop(eH, (8 * eY)), 8))
871- let eD = drop(eH, (8 * (eY + 1)))
872- let bT = split(aI[eY], "_")
873- if (if (!(eV))
874- then (eZ > eC)
882+ let fh = take(eO, (8 * ff))
883+ let eJ = toInt(take(drop(eO, (8 * ff)), 8))
884+ let eK = drop(eO, (8 * (ff + 1)))
885+ let ca = split(aP[ff], "_")
886+ if (if (!(fc))
887+ then (fg > eJ)
875888 else false)
876- then throw(((((("You have " + toString(eC)) + " of ") + aE[eY]) + ", but tried to use ") + toString(eZ)))
889+ then throw(((((("You have " + toString(eJ)) + " of ") + aL[ff]) + ", but tried to use ") + toString(fg)))
877890 else {
878- let fg = if (if (!(eV))
879- then eO(eP, split(bT[aL], ","))
891+ let fn = if (if (!(fc))
892+ then eV(eW, split(ca[aS], ","))
880893 else false)
881894 then {
882- let fh = bT[aM]
883- if ((fh == ""))
895+ let fo = ca[aT]
896+ if ((fo == ""))
884897 then throw("Item cannot be equipped")
885898 else {
886- let fi = parseIntValue(fh)
887- let fj = (fi / 100)
888- if ((fd != fj))
899+ let fp = parseIntValue(fo)
900+ let fq = (fp / 100)
901+ if ((fk != fq))
889902 then throw("Segment incompatible")
890903 else {
891- let fk = ((fi % 100) / 10)
892- if ((fe != fk))
904+ let fr = ((fp % 100) / 10)
905+ if ((fl != fr))
893906 then throw("Slot incompatible")
894907 else {
895- let fl = (fi % 10)
896- if (if ((ff != 0))
897- then (fl > 1)
908+ let fs = (fp % 10)
909+ if (if ((fm != 0))
910+ then (fs > 1)
898911 else false)
899912 then throw("Big items should occupy slot 0")
900- else (fl > 1)
913+ else (fs > 1)
901914 }
902915 }
903916 }
904917 }
905918 else false
906- $Tuple2(((fa + toBytes((eC + (if (eV)
907- then eZ
908- else -(eZ))))) + eD), fg)
919+ $Tuple2(((fh + toBytes((eJ + (if (fc)
920+ then fg
921+ else -(fg))))) + eK), fn)
909922 }
910923 }
911924 }
912925 }
913926
914927
915-func fm (fn,fo,eV,fd,fe,fp) = if ((fn != ""))
928+func ft (fu,fv,fc,fk,fl,fw) = if ((fu != ""))
916929 then {
917- let fq = split(fn, ",")
918- if ((size(fq) > r))
930+ let fx = split(fu, ",")
931+ if ((size(fx) > r))
919932 then throw("Wrong slots format")
920933 else {
921- let fr = fq[0]
922- let fs = if ((size(fq) > 1))
923- then fq[1]
934+ let fy = fx[0]
935+ let fz = if ((size(fx) > 1))
936+ then fx[1]
924937 else ""
925- if (if ((fr == ""))
926- then (fs == "")
938+ if (if ((fy == ""))
939+ then (fz == "")
927940 else false)
928- then fo
941+ then fv
929942 else {
930- let ft = if ((fr != ""))
931- then fc(fr, fo, eV, fd, fe, 0, fp)
932- else $Tuple2(fo, false)
933- if ((fs != ""))
934- then if (ft._2)
943+ let fA = if ((fy != ""))
944+ then fj(fy, fv, fc, fk, fl, 0, fw)
945+ else $Tuple2(fv, false)
946+ if ((fz != ""))
947+ then if (fA._2)
935948 then throw("Big item already occupies slot")
936- else fc(fs, ft._1, eV, fd, fe, 1, fp)._1
937- else ft._1
949+ else fj(fz, fA._1, fc, fk, fl, 1, fw)._1
950+ else fA._1
938951 }
939952 }
940953 }
941- else fo
942-
943-
944-func fu (fv,fw,eV,fp) = {
945- func fd (dZ,fx) = {
946- let eJ = dZ._1
947- let fe = split(fx, ";")
948- if ((size(fe) != q))
954+ else fv
955+
956+
957+func fB (fC,fD,fc,fw) = {
958+ func fk (eg,fE) = {
959+ let eQ = eg._1
960+ let fl = split(fE, ";")
961+ if ((size(fl) != q))
949962 then throw("Wrong segment format")
950963 else {
951- let fy = fe[0]
952- let fz = fe[1]
953- if (if ((fy == ""))
954- then (fz == "")
964+ let fF = fl[0]
965+ let fG = fl[1]
966+ if (if ((fF == ""))
967+ then (fG == "")
955968 else false)
956- then $Tuple2((eJ + 1), dZ._2)
969+ then $Tuple2((eQ + 1), eg._2)
957970 else {
958- let fA = fm(fy, dZ._2, eV, eJ, 0, fp)
959- $Tuple2((eJ + 1), fm(fz, fA, eV, eJ, 1, fp))
971+ let fH = ft(fF, eg._2, fc, eQ, 0, fw)
972+ $Tuple2((eQ + 1), ft(fG, fH, fc, eQ, 1, fw))
960973 }
961974 }
962975 }
963976
964-( let eb = fv
965- let ec = size(eb)
966- let ed = $Tuple2(0, fw)
967- func ee (ef,eg) = if ((eg >= ec))
968- then ef
969- else fd(ef, eb[eg])
970-
971- func eh (ef,eg) = if ((eg >= ec))
972- then ef
977+( let ei = fC
978+ let ej = size(ei)
979+ let ek = $Tuple2(0, fD)
980+ func el (em,en) = if ((en >= ej))
981+ then em
982+ else fk(em, ei[en])
983+
984+ func eo (em,en) = if ((en >= ej))
985+ then em
973986 else throw("List size exceeds 6")
974987
975- eh(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6))._2
976- }
977-
978-
979-func fB (fv,fw,eW,eX,eV,eP) = if ((3 > size(fv)))
988+ eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6))._2
989+ }
990+
991+
992+func fI (fC,fD,fd,fe,fc,eW) = if ((3 > size(fC)))
980993 then throw("At least duck, mines and traps parts are required")
981994 else {
982- func fd (dZ,fx) = {
983- let eJ = dZ._1
984- if ((eJ == 0))
985- then $Tuple4((eJ + 1), dZ._2, dZ._3, dZ._4)
995+ func fk (eg,fE) = {
996+ let eQ = eg._1
997+ if ((eQ == 0))
998+ then $Tuple4((eQ + 1), eg._2, eg._3, eg._4)
986999 else {
987- let fC = eT(fx, dZ._2, eV, eP, dZ._3, dZ._4)
988- $Tuple4((eJ + 1), fC._1, fC._2, fC._3)
1000+ let fJ = fa(fE, eg._2, fc, eW, eg._3, eg._4)
1001+ $Tuple4((eQ + 1), fJ._1, fJ._2, fJ._3)
9891002 }
9901003 }
9911004
992- let fD = {
993- let eb = fv
994- let ec = size(eb)
995- let ed = $Tuple4(0, fw, eW, eX)
996- func ee (ef,eg) = if ((eg >= ec))
997- then ef
998- else fd(ef, eb[eg])
999-
1000- func eh (ef,eg) = if ((eg >= ec))
1001- then ef
1005+ let fK = {
1006+ let ei = fC
1007+ let ej = size(ei)
1008+ let ek = $Tuple4(0, fD, fd, fe)
1009+ func el (em,en) = if ((en >= ej))
1010+ then em
1011+ else fk(em, ei[en])
1012+
1013+ func eo (em,en) = if ((en >= ej))
1014+ then em
10021015 else throw("List size exceeds 10")
10031016
1004- eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1005- }
1006- $Tuple3(fD._2, fD._3, fD._4)
1017+ eo(el(el(el(el(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1018+ }
1019+ $Tuple3(fK._2, fK._3, fK._4)
10071020 }
10081021
10091022
1010-func fE (x) = {
1011- let fF = C(x)
1012- let fG = split(valueOrElse(getString(fF), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1013- let fH = fu(fG, dj, true, nil)
1014- let fI = split(fG[o], ";")[1]
1015- let ai = if ((fI == ""))
1023+func fL (z) = {
1024+ let fM = E(z)
1025+ let fN = split(valueOrElse(getString(fM), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1026+ let fO = fB(fN, dq, true, nil)
1027+ let fP = split(fN[o], ";")[1]
1028+ let am = if ((fP == ""))
10161029 then 0
10171030 else {
1018- let fJ = split(fI, ",")[0]
1019- if ((fJ == ""))
1031+ let fQ = split(fP, ",")[0]
1032+ if ((fQ == ""))
10201033 then 0
10211034 else {
1022- let eU = split(fJ, ":")
1023- let cz = eU[0]
1024- let fK = eU[1]
1025- if (if (if (if (if ((cz == "06"))
1035+ let fb = split(fQ, ":")
1036+ let cG = fb[0]
1037+ let fR = fb[1]
1038+ if (if (if (if (if ((cG == "06"))
10261039 then true
1027- else (cz == "07"))
1040+ else (cG == "07"))
10281041 then true
1029- else (cz == "08"))
1030- then (fK != "")
1042+ else (cG == "08"))
1043+ then (fR != "")
10311044 else false)
1032- then (parseIntValue(fK) > 0)
1045+ then (parseIntValue(fR) > 0)
10331046 else false)
1034- then parseIntValue(split(aI[parseIntValue(cz)], "_")[aK])
1047+ then parseIntValue(split(aP[parseIntValue(cG)], "_")[aR])
10351048 else 0
10361049 }
10371050 }
1038- let fp = ag(this, x, ai, true)
1039- let fL = fu(fG, fH, false, fp)
1040- (fL == fL)
1041- }
1042-
1043-
1044-func fM (fN,fO,fP,fQ) = if ((size(fN) != aw))
1051+ let fw = ak(this, z, am, true)
1052+ let fS = fB(fN, fO, false, fw)
1053+ (fS == fS)
1054+ }
1055+
1056+
1057+func fT (fU,fV,fW,fX) = if ((size(fU) != aD))
10451058 then throw("Wrong proportions data")
10461059 else {
1047- func fR (dZ,fS) = {
1048- let er = (parseIntValue(fN[fS]) + ((fQ * fO[fS]) * fP))
1049- if ((0 > er))
1050- then throw(((((((("Panic! Pieces of type=" + toString(fS)) + ", sign=") + toString(fQ)) + ", terrainCounts[i]=") + toString(fO[fS])) + ", landSizeIndex=") + toString(fP)))
1051- else (dZ :+ toString(er))
1052- }
1053-
1054- let eb = ck
1055- let ec = size(eb)
1056- let ed = nil
1057- func ee (ef,eg) = if ((eg >= ec))
1058- then ef
1059- else fR(ef, eb[eg])
1060-
1061- func eh (ef,eg) = if ((eg >= ec))
1062- then ef
1060+ func fY (eg,fZ) = {
1061+ let ey = (parseIntValue(fU[fZ]) + ((fX * fV[fZ]) * fW))
1062+ if ((0 > ey))
1063+ then throw(((((((("Panic! Pieces of type=" + toString(fZ)) + ", sign=") + toString(fX)) + ", terrainCounts[i]=") + toString(fV[fZ])) + ", landSizeIndex=") + toString(fW)))
1064+ else (eg :+ toString(ey))
1065+ }
1066+
1067+ let ei = cr
1068+ let ej = size(ei)
1069+ let ek = nil
1070+ func el (em,en) = if ((en >= ej))
1071+ then em
1072+ else fY(em, ei[en])
1073+
1074+ func eo (em,en) = if ((en >= ej))
1075+ then em
10631076 else throw("List size exceeds 6")
10641077
1065- eh(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6)
1078+ eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
10661079 }
10671080
10681081
1069-func fT (fO,fP,fQ) = {
1070- let fN = split(valueOrElse(getString(cN()), "0_0_0_0_0_0"), "_")
1071- makeString(fM(fN, fO, fP, fQ), "_")
1072- }
1073-
1074-
1075-func fU (fV) = [(size(split(fV, "A")) - 1), (size(split(fV, "B")) - 1), (size(split(fV, "C")) - 1), (size(split(fV, "D")) - 1), (size(split(fV, "E")) - 1), (size(split(fV, "F")) - 1)]
1076-
1077-
1078-func fW (fX,fO,fY,fP,fZ) = {
1079- func ga (dZ,fS) = {
1080- let gb = ((fraction(fY, fZ, az) * fO[fS]) * fP)
1081- (dZ :+ toString((parseIntValue(fX[fS]) + gb)))
1082+func ga (fV,fW,fX) = {
1083+ let fU = split(valueOrElse(getString(cU()), "0_0_0_0_0_0"), "_")
1084+ makeString(fT(fU, fV, fW, fX), "_")
1085+ }
1086+
1087+
1088+func gb (gc) = [(size(split(gc, "A")) - 1), (size(split(gc, "B")) - 1), (size(split(gc, "C")) - 1), (size(split(gc, "D")) - 1), (size(split(gc, "E")) - 1), (size(split(gc, "F")) - 1)]
1089+
1090+
1091+func gd (ge,fV,gf,fW,gg) = {
1092+ func gh (eg,fZ) = {
1093+ let gi = ((fraction(gf, gg, aG) * fV[fZ]) * fW)
1094+ (eg :+ toString((parseIntValue(ge[fZ]) + gi)))
10821095 }
10831096
1084- let ek = {
1085- let eb = ck
1086- let ec = size(eb)
1087- let ed = nil
1088- func ee (ef,eg) = if ((eg >= ec))
1089- then ef
1090- else ga(ef, eb[eg])
1091-
1092- func eh (ef,eg) = if ((eg >= ec))
1093- then ef
1097+ let er = {
1098+ let ei = cr
1099+ let ej = size(ei)
1100+ let ek = nil
1101+ func el (em,en) = if ((en >= ej))
1102+ then em
1103+ else gh(em, ei[en])
1104+
1105+ func eo (em,en) = if ((en >= ej))
1106+ then em
10941107 else throw("List size exceeds 6")
10951108
1096- eh(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6)
1109+ eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
10971110 }
1098- makeString(ek, "_")
1099- }
1100-
1101-
1102-func gc (fO,fY,fP,fZ) = {
1103- func ga (dZ,fS) = {
1104- let gb = ((fraction(fY, fZ, az) * fO[fS]) * fP)
1105- $Tuple2((dZ._1 :+ gb), (dZ._2 + gb))
1111+ makeString(er, "_")
1112+ }
1113+
1114+
1115+func gj (fV,gf,fW,gg) = {
1116+ func gh (eg,fZ) = {
1117+ let gi = ((fraction(gf, gg, aG) * fV[fZ]) * fW)
1118+ $Tuple2((eg._1 :+ gi), (eg._2 + gi))
11061119 }
11071120
1108- let eb = ck
1109- let ec = size(eb)
1110- let ed = $Tuple2(nil, 0)
1111- func ee (ef,eg) = if ((eg >= ec))
1112- then ef
1113- else ga(ef, eb[eg])
1114-
1115- func eh (ef,eg) = if ((eg >= ec))
1116- then ef
1121+ let ei = cr
1122+ let ej = size(ei)
1123+ let ek = $Tuple2(nil, 0)
1124+ func el (em,en) = if ((en >= ej))
1125+ then em
1126+ else gh(em, ei[en])
1127+
1128+ func eo (em,en) = if ((en >= ej))
1129+ then em
11171130 else throw("List size exceeds 6")
11181131
1119- eh(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6)
1120- }
1121-
1122-
1123-func gd (ge,gf,gg,gh) = {
1124- let gi = gg._1
1125- let gj = gg._2
1126- if ((gj == 0))
1127- then $Tuple2(makeString(ge, "_"), makeString(gf, "_"))
1128- else if ((gh >= gj))
1132+ eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
1133+ }
1134+
1135+
1136+func gk (gl,gm,gn,go) = {
1137+ let gp = gn._1
1138+ let gq = gn._2
1139+ if ((gq == 0))
1140+ then $Tuple2(makeString(gl, "_"), makeString(gm, "_"))
1141+ else if ((go >= gq))
11291142 then {
1130- func gk (dZ,fS) = (dZ :+ toString((parseIntValue(ge[fS]) + gi[fS])))
1131-
1132- let ek = {
1133- let eb = ck
1134- let ec = size(eb)
1135- let ed = nil
1136- func ee (ef,eg) = if ((eg >= ec))
1137- then ef
1138- else gk(ef, eb[eg])
1139-
1140- func eh (ef,eg) = if ((eg >= ec))
1141- then ef
1143+ func gr (eg,fZ) = (eg :+ toString((parseIntValue(gl[fZ]) + gp[fZ])))
1144+
1145+ let er = {
1146+ let ei = cr
1147+ let ej = size(ei)
1148+ let ek = nil
1149+ func el (em,en) = if ((en >= ej))
1150+ then em
1151+ else gr(em, ei[en])
1152+
1153+ func eo (em,en) = if ((en >= ej))
1154+ then em
11421155 else throw("List size exceeds 6")
11431156
1144- eh(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6)
1157+ eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
11451158 }
1146- $Tuple2(makeString(ek, "_"), makeString(gf, "_"))
1159+ $Tuple2(makeString(er, "_"), makeString(gm, "_"))
11471160 }
11481161 else {
1149- func gl (dZ,fS) = {
1150- let gm = fraction(gi[fS], gh, gj)
1151- $Tuple2((dZ._1 :+ toString((parseIntValue(ge[fS]) + gm))), (dZ._2 :+ toString(((parseIntValue(gf[fS]) + gi[fS]) - gm))))
1162+ func gs (eg,fZ) = {
1163+ let gt = fraction(gp[fZ], go, gq)
1164+ $Tuple2((eg._1 :+ toString((parseIntValue(gl[fZ]) + gt))), (eg._2 :+ toString(((parseIntValue(gm[fZ]) + gp[fZ]) - gt))))
11521165 }
11531166
1154- let ek = {
1155- let eb = ck
1156- let ec = size(eb)
1157- let ed = $Tuple2(nil, nil)
1158- func ee (ef,eg) = if ((eg >= ec))
1159- then ef
1160- else gl(ef, eb[eg])
1161-
1162- func eh (ef,eg) = if ((eg >= ec))
1163- then ef
1167+ let er = {
1168+ let ei = cr
1169+ let ej = size(ei)
1170+ let ek = $Tuple2(nil, nil)
1171+ func el (em,en) = if ((en >= ej))
1172+ then em
1173+ else gs(em, ei[en])
1174+
1175+ func eo (em,en) = if ((en >= ej))
1176+ then em
11641177 else throw("List size exceeds 6")
11651178
1166- eh(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6)
1179+ eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
11671180 }
1168- $Tuple2(makeString(ek._1, "_"), makeString(ek._2, "_"))
1181+ $Tuple2(makeString(er._1, "_"), makeString(er._2, "_"))
11691182 }
11701183 }
11711184
11721185
1173-func gn (go) = if ((go >= toBigInt(0)))
1174- then go
1175- else -(go)
1176-
1177-
1178-let gp = [[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]]
1179-
1180-func gq (cW,gr) = {
1181- let gs = toInt((cW % dr))
1182- let gt = if ((gr[0] > gs))
1186+func gu (gv) = if ((gv >= toBigInt(0)))
1187+ then gv
1188+ else -(gv)
1189+
1190+
1191+let gw = [[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]]
1192+
1193+func gx (dd,gy) = {
1194+ let gz = toInt((dd % dy))
1195+ let gA = if ((gy[0] > gz))
11831196 then "A"
1184- else if ((gr[1] > gs))
1197+ else if ((gy[1] > gz))
11851198 then "B"
1186- else if ((gr[2] > gs))
1199+ else if ((gy[2] > gz))
11871200 then "C"
1188- else if ((gr[3] > gs))
1201+ else if ((gy[3] > gz))
11891202 then "D"
1190- else if ((gr[4] > gs))
1203+ else if ((gy[4] > gz))
11911204 then "E"
11921205 else "F"
1193- gt
1194- }
1195-
1196-
1197-func gu (gv,gw) = {
1198- let gx = gp[gw]
1199- func gy (dZ,ea) = $Tuple2((((((dZ._1 + gq(dZ._2, gx)) + gq((dZ._2 / dr), gx)) + gq((dZ._2 / ds), gx)) + gq((dZ._2 / dt), gx)) + gq((dZ._2 / du), gx)), (dZ._2 / dv))
1200-
1201- let fD = {
1202- let eb = [1, 2, 3, 4, 5]
1203- let ec = size(eb)
1204- let ed = $Tuple2("", (gv / dq))
1205- func ee (ef,eg) = if ((eg >= ec))
1206- then ef
1207- else gy(ef, eb[eg])
1208-
1209- func eh (ef,eg) = if ((eg >= ec))
1210- then ef
1206+ gA
1207+ }
1208+
1209+
1210+func gB (gC,gD) = {
1211+ let gE = gw[gD]
1212+ func gF (eg,eh) = $Tuple2((((((eg._1 + gx(eg._2, gE)) + gx((eg._2 / dy), gE)) + gx((eg._2 / dz), gE)) + gx((eg._2 / dA), gE)) + gx((eg._2 / dB), gE)), (eg._2 / dC))
1213+
1214+ let fK = {
1215+ let ei = [1, 2, 3, 4, 5]
1216+ let ej = size(ei)
1217+ let ek = $Tuple2("", (gC / dx))
1218+ func el (em,en) = if ((en >= ej))
1219+ then em
1220+ else gF(em, ei[en])
1221+
1222+ func eo (em,en) = if ((en >= ej))
1223+ then em
12111224 else throw("List size exceeds 5")
12121225
1213- eh(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5)
1226+ eo(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5)
12141227 }
1215- fD._1
1216- }
1217-
1218-
1219-let gz = [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]
1220-
1221-let gA = ["A", "B", "C", "D", "E", "F"]
1222-
1223-func gB (gC,fP) = {
1224- func gD (dZ,cU) = {
1225- let eJ = dZ._2
1226- let gE = parseIntValue(cU)
1227- let go = if ((gE == 0))
1228+ fK._1
1229+ }
1230+
1231+
1232+let gG = [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]
1233+
1234+let gH = ["A", "B", "C", "D", "E", "F"]
1235+
1236+func gI (gJ,fW) = {
1237+ func gK (eg,db) = {
1238+ let eQ = eg._2
1239+ let gL = parseIntValue(db)
1240+ let gv = if ((gL == 0))
12281241 then 0
1229- else if ((gE >= (4 * fP)))
1230- then (gE / fP)
1231- else if ((gE > (3 * fP)))
1242+ else if ((gL >= (4 * fW)))
1243+ then (gL / fW)
1244+ else if ((gL > (3 * fW)))
12321245 then 3
1233- else (((gE - 1) / fP) + 1)
1234- $Tuple3((dZ._1 :+ go), (dZ._2 + 1), (dZ._3 + go))
1246+ else (((gL - 1) / fW) + 1)
1247+ $Tuple3((eg._1 :+ gv), (eg._2 + 1), (eg._3 + gv))
12351248 }
12361249
1237- let fD = {
1238- let eb = gC
1239- let ec = size(eb)
1240- let ed = $Tuple3(nil, 0, 0)
1241- func ee (ef,eg) = if ((eg >= ec))
1242- then ef
1243- else gD(ef, eb[eg])
1244-
1245- func eh (ef,eg) = if ((eg >= ec))
1246- then ef
1250+ let fK = {
1251+ let ei = gJ
1252+ let ej = size(ei)
1253+ let ek = $Tuple3(nil, 0, 0)
1254+ func el (em,en) = if ((en >= ej))
1255+ then em
1256+ else gK(em, ei[en])
1257+
1258+ func eo (em,en) = if ((en >= ej))
1259+ then em
12471260 else throw("List size exceeds 6")
12481261
1249- eh(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6)
1262+ eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
12501263 }
1251- let gF = fD._1
1252- let gG = value(indexOf(gF, max(gF)))
1253- let gH = (fD._3 - 25)
1254- func gI (dZ,cz) = {
1255- let gJ = if ((cz == gG))
1256- then (gF[cz] - gH)
1257- else gF[cz]
1258- let gK = if ((gJ == 0))
1264+ let gM = fK._1
1265+ let gN = value(indexOf(gM, max(gM)))
1266+ let gO = (fK._3 - 25)
1267+ func gP (eg,cG) = {
1268+ let gQ = if ((cG == gN))
1269+ then (gM[cG] - gO)
1270+ else gM[cG]
1271+ let gR = if ((gQ == 0))
12591272 then nil
1260- else split(drop(toString(pow(10, 0, gJ, 0, 0, DOWN)), 1), "")
1261- let fi = gA[cz]
1262- func gL (gM,gN) = (gM :+ fi)
1263-
1264- let gO = {
1265- let eb = gK
1266- let ec = size(eb)
1267- let ed = nil
1268- func gP (ef,eg) = if ((eg >= ec))
1269- then ef
1270- else gL(ef, eb[eg])
1271-
1272- func gQ (ef,eg) = if ((eg >= ec))
1273- then ef
1273+ else split(drop(toString(pow(10, 0, gQ, 0, 0, DOWN)), 1), "")
1274+ let fp = gH[cG]
1275+ func gS (gT,gU) = (gT :+ fp)
1276+
1277+ let gV = {
1278+ let ei = gR
1279+ let ej = size(ei)
1280+ let ek = nil
1281+ func gW (em,en) = if ((en >= ej))
1282+ then em
1283+ else gS(em, ei[en])
1284+
1285+ func gX (em,en) = if ((en >= ej))
1286+ then em
12741287 else throw("List size exceeds 25")
12751288
1276- gQ(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(ed, 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)
1277- }
1278- (dZ ++ gO)
1289+ gX(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(ek, 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)
1290+ }
1291+ (eg ++ gV)
12791292 }
12801293
1281- let ek = {
1282- let eb = ck
1283- let ec = size(eb)
1284- let ed = nil
1285- func gP (ef,eg) = if ((eg >= ec))
1286- then ef
1287- else gI(ef, eb[eg])
1288-
1289- func gQ (ef,eg) = if ((eg >= ec))
1290- then ef
1294+ let er = {
1295+ let ei = cr
1296+ let ej = size(ei)
1297+ let ek = nil
1298+ func gW (em,en) = if ((en >= ej))
1299+ then em
1300+ else gP(em, ei[en])
1301+
1302+ func gX (em,en) = if ((en >= ej))
1303+ then em
12911304 else throw("List size exceeds 6")
12921305
1293- gQ(gP(gP(gP(gP(gP(gP(ed, 0), 1), 2), 3), 4), 5), 6)
1306+ gX(gW(gW(gW(gW(gW(gW(ek, 0), 1), 2), 3), 4), 5), 6)
12941307 }
1295- func gR (dZ,eJ) = (dZ + ek[eJ])
1296-
1297- let eb = gz
1298- let ec = size(eb)
1299- let ed = ""
1300- func gS (ef,eg) = if ((eg >= ec))
1301- then ef
1302- else gR(ef, eb[eg])
1303-
1304- func gT (ef,eg) = if ((eg >= ec))
1305- then ef
1308+ func gY (eg,eQ) = (eg + er[eQ])
1309+
1310+ let ei = gG
1311+ let ej = size(ei)
1312+ let ek = ""
1313+ func gZ (em,en) = if ((en >= ej))
1314+ then em
1315+ else gY(em, ei[en])
1316+
1317+ func ha (em,en) = if ((en >= ej))
1318+ then em
13061319 else throw("List size exceeds 25")
13071320
1308- gT(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(ed, 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)
1309- }
1310-
1311-
1312-func gU (gV) = {
1313- let fC = split(valueOrElse(getString(gV), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1314-[toString(valueOrElse(parseInt(fC[aX]), 0)), if ((size(split(fC[aY], "_")) == aw))
1315- then fC[aY]
1316- else "0_0_0_0_0_0", if ((size(split(fC[aZ], "_")) == aw))
1317- then fC[aZ]
1318- else "0_0_0_0_0_0", fC[ba]]
1319- }
1320-
1321-
1322-func gW (gX) = {
1323- let ex = split(gX, "_")
1324- ((aA * (parseIntValue(ex[1]) + 1)) * parseIntValue(ex[0]))
1325- }
1326-
1327-
1328-func gY (gZ) = {
1329- let ha = gZ[aR]
1330- func hb (dZ,hc) = (dZ + parseIntValue(hc))
1331-
1332- func hd (dZ,hc) = {
1333- let cz = dZ._1
1334- let dS = (((parseIntValue(hc) + aN) - 1) / aN)
1335- $Tuple2((cz + 1), (dZ._2 + (dS * ce)))
1321+ ha(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(ek, 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)
1322+ }
1323+
1324+
1325+func hb (hc) = {
1326+ let fJ = split(valueOrElse(getString(hc), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1327+[toString(valueOrElse(parseInt(fJ[be]), 0)), if ((size(split(fJ[bf], "_")) == aD))
1328+ then fJ[bf]
1329+ else "0_0_0_0_0_0", if ((size(split(fJ[bg], "_")) == aD))
1330+ then fJ[bg]
1331+ else "0_0_0_0_0_0", fJ[bh]]
1332+ }
1333+
1334+
1335+func hd (he) = {
1336+ let eE = split(he, "_")
1337+ ((aH * (parseIntValue(eE[1]) + 1)) * parseIntValue(eE[0]))
1338+ }
1339+
1340+
1341+func hf (hg) = {
1342+ let hh = hg[aY]
1343+ func hi (eg,hj) = (eg + parseIntValue(hj))
1344+
1345+ func hk (eg,hj) = {
1346+ let cG = eg._1
1347+ let dZ = (((parseIntValue(hj) + aU) - 1) / aU)
1348+ $Tuple2((cG + 1), (eg._2 + (dZ * cl)))
13361349 }
13371350
1338- let he = {
1339- let eb = split(gZ[aP], "_")
1340- let ec = size(eb)
1341- let ed = 0
1342- func ee (ef,eg) = if ((eg >= ec))
1343- then ef
1344- else hb(ef, eb[eg])
1345-
1346- func eh (ef,eg) = if ((eg >= ec))
1347- then ef
1351+ let hl = {
1352+ let ei = split(hg[aW], "_")
1353+ let ej = size(ei)
1354+ let ek = 0
1355+ func el (em,en) = if ((en >= ej))
1356+ then em
1357+ else hi(em, ei[en])
1358+
1359+ func eo (em,en) = if ((en >= ej))
1360+ then em
13481361 else throw("List size exceeds 6")
13491362
1350- eh(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6)
1363+ eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
13511364 }
1352- let hf = {
1353- let eb = split(gZ[aQ], "_")
1354- let ec = size(eb)
1355- let ed = 0
1356- func gP (ef,eg) = if ((eg >= ec))
1357- then ef
1358- else hb(ef, eb[eg])
1359-
1360- func gQ (ef,eg) = if ((eg >= ec))
1361- then ef
1365+ let hm = {
1366+ let ei = split(hg[aX], "_")
1367+ let ej = size(ei)
1368+ let ek = 0
1369+ func gW (em,en) = if ((en >= ej))
1370+ then em
1371+ else hi(em, ei[en])
1372+
1373+ func gX (em,en) = if ((en >= ej))
1374+ then em
13621375 else throw("List size exceeds 6")
13631376
1364- gQ(gP(gP(gP(gP(gP(gP(ed, 0), 1), 2), 3), 4), 5), 6)
1377+ gX(gW(gW(gW(gW(gW(gW(ek, 0), 1), 2), 3), 4), 5), 6)
13651378 }
1366- let hg = if ((ha == ""))
1379+ let hn = if ((hh == ""))
13671380 then 0
1368- else ( let eb = split_4C(ha, "_")
1369- let ec = size(eb)
1370- let ed = $Tuple2(0, 0)
1371- func gS (ef,eg) = if ((eg >= ec))
1372- then ef
1373- else hd(ef, eb[eg])
1374-
1375- func gT (ef,eg) = if ((eg >= ec))
1376- then ef
1381+ else ( let ei = split_4C(hh, "_")
1382+ let ej = size(ei)
1383+ let ek = $Tuple2(0, 0)
1384+ func gZ (em,en) = if ((en >= ej))
1385+ then em
1386+ else hk(em, ei[en])
1387+
1388+ func ha (em,en) = if ((en >= ej))
1389+ then em
13771390 else throw("List size exceeds 50")
13781391
1379- gT(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(ed, 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
1380- ((he + hf) + hg)
1381- }
1382-
1383-
1384-func hh (hi,hj,hk) = {
1385- let gX = ((toString(hj) + "_") + toString(hk))
1386- let hl = gW(gX)
1387- let hm = valueOrElse(getString(hi), (gX + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1388- let hn = split_4C(hm, ":")
1389- let ho = gY(hn)
1390- let hp = if ((5 > size(hn)))
1391- then makeString(["0", toString(ho), toString((hl - ho)), toString(hl)], "_")
1392+ ha(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(ek, 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
1393+ ((hl + hm) + hn)
1394+ }
1395+
1396+
1397+func ho (hp,hq,hr) = {
1398+ let he = ((toString(hq) + "_") + toString(hr))
1399+ let hs = hd(he)
1400+ let ht = valueOrElse(getString(hp), (he + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1401+ let hu = split_4C(ht, ":")
1402+ let hv = hf(hu)
1403+ let hw = if ((5 > size(hu)))
1404+ then makeString(["0", toString(hv), toString((hs - hv)), toString(hs)], "_")
13921405 else {
1393- let hq = split(hn[aS], "_")
1394- let hr = parseIntValue(hq[aT])
1395- let hs = if ((size(hq) > 1))
1396- then parseIntValue(hq[aU])
1397- else ho
1398- makeString([toString(hr), toString(hs), toString(((hl - hr) - hs)), toString(hl)], "_")
1399- }
1400-[hn[aO], if ((size(split(hn[aP], "_")) == aw))
1401- then hn[aP]
1402- else "0_0_0_0_0_0", if ((size(split(hn[aQ], "_")) == aw))
1403- then hn[aQ]
1404- else "0_0_0_0_0_0", hn[aR], hp]
1405- }
1406-
1407-
1408-func ht (gZ) = {
1409- let hu = gY(gZ)
1410- let hv = parseIntValue(split(gZ[aS], "_")[aT])
1411- ((gW(gZ[aO]) - hu) - hv)
1412- }
1413-
1414-
1415-func hw (hx,gZ,hy) = if ((size(hx) != 3))
1406+ let hx = split(hu[aZ], "_")
1407+ let hy = parseIntValue(hx[ba])
1408+ let hz = if ((size(hx) > 1))
1409+ then parseIntValue(hx[bb])
1410+ else hv
1411+ makeString([toString(hy), toString(hz), toString(((hs - hy) - hz)), toString(hs)], "_")
1412+ }
1413+[hu[aV], if ((size(split(hu[aW], "_")) == aD))
1414+ then hu[aW]
1415+ else "0_0_0_0_0_0", if ((size(split(hu[aX], "_")) == aD))
1416+ then hu[aX]
1417+ else "0_0_0_0_0_0", hu[aY], hw]
1418+ }
1419+
1420+
1421+func hA (hg) = {
1422+ let hB = hf(hg)
1423+ let hC = parseIntValue(split(hg[aZ], "_")[ba])
1424+ ((hd(hg[aV]) - hB) - hC)
1425+ }
1426+
1427+
1428+func hD (hE,hg,hF) = if ((size(hE) != 3))
14161429 then throw("cargoListStr should contain exactly 2 ':' separators")
14171430 else {
1418- let hz = split(hx[0], "_")
1419- let hA = split(hx[1], "_")
1420- let hB = if ((hx[2] == ""))
1431+ let hG = split(hE[0], "_")
1432+ let hH = split(hE[1], "_")
1433+ let hI = if ((hE[2] == ""))
14211434 then nil
1422- else split_4C(hx[2], "_")
1423- if ((size(hz) != aw))
1435+ else split_4C(hE[2], "_")
1436+ if ((size(hG) != aD))
14241437 then throw("All 6 resources should be passed")
1425- else if ((size(hA) != aw))
1438+ else if ((size(hH) != aD))
14261439 then throw("All 6 materials should be passed")
14271440 else {
1428- let gh = ht(gZ)
1429- let hC = split(gZ[aP], "_")
1430- let hD = split(gZ[aQ], "_")
1431- let hE = if ((gZ[aR] == ""))
1441+ let go = hA(hg)
1442+ let hJ = split(hg[aW], "_")
1443+ let hK = split(hg[aX], "_")
1444+ let hL = if ((hg[aY] == ""))
14321445 then nil
1433- else split_4C(gZ[aR], "_")
1434- let gf = split(hy[aY], "_")
1435- let hF = split(hy[aZ], "_")
1436- let hG = if ((hy[ba] == ""))
1446+ else split_4C(hg[aY], "_")
1447+ let gm = split(hF[bf], "_")
1448+ let hM = split(hF[bg], "_")
1449+ let hN = if ((hF[bh] == ""))
14371450 then nil
1438- else split_4C(hy[ba], "_")
1439- func hH (dZ,hc) = {
1440- let fS = dZ._1
1441- let hI = parseIntValue(hc)
1442- let hJ = parseIntValue(hC[fS])
1443- let hK = parseIntValue(gf[fS])
1444- if ((hI == 0))
1445- then $Tuple4((fS + 1), (dZ._2 :+ hC[fS]), (dZ._3 :+ gf[fS]), dZ._4)
1446- else if ((hI > 0))
1447- then if ((hI > hK))
1448- then throw((((("Attempt to take " + hc) + " from backpack, but only ") + toString(hK)) + " available"))
1449- else $Tuple4((fS + 1), (dZ._2 :+ toString((hJ + hI))), (dZ._3 :+ toString((hK - hI))), (dZ._4 + hI))
1450- else if ((-(hI) > hJ))
1451- then throw((((("Attempt to take " + toString(-(hI))) + " from warehouse, but only ") + toString(hJ)) + " available"))
1452- else $Tuple4((fS + 1), (dZ._2 :+ toString((hJ + hI))), (dZ._3 :+ toString((hK - hI))), (dZ._4 + hI))
1451+ else split_4C(hF[bh], "_")
1452+ func hO (eg,hj) = {
1453+ let fZ = eg._1
1454+ let hP = parseIntValue(hj)
1455+ let hQ = parseIntValue(hJ[fZ])
1456+ let hR = parseIntValue(gm[fZ])
1457+ if ((hP == 0))
1458+ then $Tuple4((fZ + 1), (eg._2 :+ hJ[fZ]), (eg._3 :+ gm[fZ]), eg._4)
1459+ else if ((hP > 0))
1460+ then if ((hP > hR))
1461+ then throw((((("Attempt to take " + hj) + " from backpack, but only ") + toString(hR)) + " available"))
1462+ else $Tuple4((fZ + 1), (eg._2 :+ toString((hQ + hP))), (eg._3 :+ toString((hR - hP))), (eg._4 + hP))
1463+ else if ((-(hP) > hQ))
1464+ then throw((((("Attempt to take " + toString(-(hP))) + " from warehouse, but only ") + toString(hQ)) + " available"))
1465+ else $Tuple4((fZ + 1), (eg._2 :+ toString((hQ + hP))), (eg._3 :+ toString((hR - hP))), (eg._4 + hP))
14531466 }
14541467
1455- let ek = {
1456- let eb = hz
1457- let ec = size(eb)
1458- let ed = $Tuple4(0, nil, nil, 0)
1459- func ee (ef,eg) = if ((eg >= ec))
1460- then ef
1461- else hH(ef, eb[eg])
1462-
1463- func eh (ef,eg) = if ((eg >= ec))
1464- then ef
1468+ let er = {
1469+ let ei = hG
1470+ let ej = size(ei)
1471+ let ek = $Tuple4(0, nil, nil, 0)
1472+ func el (em,en) = if ((en >= ej))
1473+ then em
1474+ else hO(em, ei[en])
1475+
1476+ func eo (em,en) = if ((en >= ej))
1477+ then em
14651478 else throw("List size exceeds 6")
14661479
1467- eh(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6)
1480+ eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
14681481 }
1469- func hL (dZ,hc) = {
1470- let fS = dZ._1
1471- let hI = parseIntValue(hc)
1472- let hM = parseIntValue(hD[fS])
1473- let hN = parseIntValue(hF[fS])
1474- if ((hI == 0))
1475- then $Tuple4((fS + 1), (dZ._2 :+ hD[fS]), (dZ._3 :+ hF[fS]), dZ._4)
1476- else if ((hI > 0))
1477- then if ((hI > hN))
1478- then throw((((("Attempt to take " + hc) + " from backpack, but only ") + toString(hN)) + " available"))
1479- else $Tuple4((fS + 1), (dZ._2 :+ toString((hM + hI))), (dZ._3 :+ toString((hN - hI))), (dZ._4 + hI))
1480- else if ((-(hI) > hM))
1481- then throw((((("Attempt to take " + toString(-(hI))) + " from warehouse, but only ") + toString(hM)) + " available"))
1482- else $Tuple4((fS + 1), (dZ._2 :+ toString((hM + hI))), (dZ._3 :+ toString((hN - hI))), (dZ._4 + hI))
1482+ func hS (eg,hj) = {
1483+ let fZ = eg._1
1484+ let hP = parseIntValue(hj)
1485+ let hT = parseIntValue(hK[fZ])
1486+ let hU = parseIntValue(hM[fZ])
1487+ if ((hP == 0))
1488+ then $Tuple4((fZ + 1), (eg._2 :+ hK[fZ]), (eg._3 :+ hM[fZ]), eg._4)
1489+ else if ((hP > 0))
1490+ then if ((hP > hU))
1491+ then throw((((("Attempt to take " + hj) + " from backpack, but only ") + toString(hU)) + " available"))
1492+ else $Tuple4((fZ + 1), (eg._2 :+ toString((hT + hP))), (eg._3 :+ toString((hU - hP))), (eg._4 + hP))
1493+ else if ((-(hP) > hT))
1494+ then throw((((("Attempt to take " + toString(-(hP))) + " from warehouse, but only ") + toString(hT)) + " available"))
1495+ else $Tuple4((fZ + 1), (eg._2 :+ toString((hT + hP))), (eg._3 :+ toString((hU - hP))), (eg._4 + hP))
14831496 }
14841497
1485- let fy = {
1486- let eb = hA
1487- let ec = size(eb)
1488- let ed = $Tuple4(0, nil, nil, ek._4)
1489- func gP (ef,eg) = if ((eg >= ec))
1490- then ef
1491- else hL(ef, eb[eg])
1492-
1493- func gQ (ef,eg) = if ((eg >= ec))
1494- then ef
1498+ let fF = {
1499+ let ei = hH
1500+ let ej = size(ei)
1501+ let ek = $Tuple4(0, nil, nil, er._4)
1502+ func gW (em,en) = if ((en >= ej))
1503+ then em
1504+ else hS(em, ei[en])
1505+
1506+ func gX (em,en) = if ((en >= ej))
1507+ then em
14951508 else throw("List size exceeds 6")
14961509
1497- gQ(gP(gP(gP(gP(gP(gP(ed, 0), 1), 2), 3), 4), 5), 6)
1510+ gX(gW(gW(gW(gW(gW(gW(ek, 0), 1), 2), 3), 4), 5), 6)
14981511 }
1499- func hO (dZ,hc) = {
1500- let fS = dZ._1
1501- let hI = parseIntValue(hc)
1502- let hP = if ((size(hE) > fS))
1503- then parseIntValue(hE[fS])
1512+ func hV (eg,hj) = {
1513+ let fZ = eg._1
1514+ let hP = parseIntValue(hj)
1515+ let hW = if ((size(hL) > fZ))
1516+ then parseIntValue(hL[fZ])
15041517 else 0
1505- let hQ = if ((size(hG) > fS))
1506- then parseIntValue(hG[fS])
1518+ let hX = if ((size(hN) > fZ))
1519+ then parseIntValue(hN[fZ])
15071520 else 0
1508- if ((hI == 0))
1509- then $Tuple4((fS + 1), (dZ._2 :+ toString(hP)), (dZ._3 :+ toString(hQ)), dZ._4)
1510- else if ((hI > 0))
1511- then if ((hI > hQ))
1512- then throw((((("Attempt to take " + hc) + " from backpack, but only ") + toString(hQ)) + " available"))
1521+ if ((hP == 0))
1522+ then $Tuple4((fZ + 1), (eg._2 :+ toString(hW)), (eg._3 :+ toString(hX)), eg._4)
1523+ else if ((hP > 0))
1524+ then if ((hP > hX))
1525+ then throw((((("Attempt to take " + hj) + " from backpack, but only ") + toString(hX)) + " available"))
15131526 else {
1514- let fb = (dP((hP + hI), aN) - dP(hP, aN))
1515- $Tuple4((fS + 1), (dZ._2 :+ toString((hP + hI))), (dZ._3 :+ toString((hQ - hI))), (dZ._4 + fb))
1527+ let fi = (dW((hW + hP), aU) - dW(hW, aU))
1528+ $Tuple4((fZ + 1), (eg._2 :+ toString((hW + hP))), (eg._3 :+ toString((hX - hP))), (eg._4 + fi))
15161529 }
1517- else if ((-(hI) > hP))
1518- then throw((((("Attempt to take " + toString(-(hI))) + " from warehouse, but only ") + toString(hP)) + " available"))
1530+ else if ((-(hP) > hW))
1531+ then throw((((("Attempt to take " + toString(-(hP))) + " from warehouse, but only ") + toString(hW)) + " available"))
15191532 else {
1520- let fb = (dP((hP + hI), aN) - dP(hP, aN))
1521- $Tuple4((fS + 1), (dZ._2 :+ toString((hP + hI))), (dZ._3 :+ toString((hQ - hI))), (dZ._4 + fb))
1533+ let fi = (dW((hW + hP), aU) - dW(hW, aU))
1534+ $Tuple4((fZ + 1), (eg._2 :+ toString((hW + hP))), (eg._3 :+ toString((hX - hP))), (eg._4 + fi))
15221535 }
15231536 }
15241537
1525- let fC = if ((size(hB) != 0))
1538+ let fJ = if ((size(hI) != 0))
15261539 then {
1527- let eb = hB
1528- let ec = size(eb)
1529- let ed = $Tuple4(0, nil, nil, fy._4)
1530- func gS (ef,eg) = if ((eg >= ec))
1531- then ef
1532- else hO(ef, eb[eg])
1533-
1534- func gT (ef,eg) = if ((eg >= ec))
1535- then ef
1540+ let ei = hI
1541+ let ej = size(ei)
1542+ let ek = $Tuple4(0, nil, nil, fF._4)
1543+ func gZ (em,en) = if ((en >= ej))
1544+ then em
1545+ else hV(em, ei[en])
1546+
1547+ func ha (em,en) = if ((en >= ej))
1548+ then em
15361549 else throw("List size exceeds 50")
15371550
1538- gT(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(gS(ed, 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)
1551+ ha(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(ek, 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)
15391552 }
1540- else $Tuple4(0, hE, hG, fy._4)
1541- let hR = fC._4
1542- if ((hR > gh))
1543- then throw((((("Attempt to put total " + toString(hR)) + " stuff, but only ") + toString(gh)) + " warehouse space left"))
1544- else $Tuple7(makeString(ek._2, "_"), makeString(fy._2, "_"), makeString_2C(fC._2, "_"), makeString(ek._3, "_"), makeString(fy._3, "_"), makeString_2C(fC._3, "_"), hR)
1553+ else $Tuple4(0, hL, hN, fF._4)
1554+ let hY = fJ._4
1555+ if ((hY > go))
1556+ then throw((((("Attempt to put total " + toString(hY)) + " stuff, but only ") + toString(go)) + " warehouse space left"))
1557+ else $Tuple7(makeString(er._2, "_"), makeString(fF._2, "_"), makeString_2C(fJ._2, "_"), makeString(er._3, "_"), makeString(fF._3, "_"), makeString_2C(fJ._3, "_"), hY)
15451558 }
15461559 }
15471560
15481561
1549-func hS (hT,hU) = {
1550- let bA = toString(hT)
1551- let hV = gn(toBigInt(hU))
1552- let hW = valueOrElse(getInteger(dx()), (dw + 1))
1553- let dB = toString(hW)
1554- let gw = toInt((hV % dq))
1555- let fV = gu(hV, gw)
1556- let cP = aF[gw]
1557- let hX = Issue(dO(dB, "S"), makeString([dB, "S", fV, cP], "_"), 1, 0, false)
1558- let bd = calculateAssetId(hX)
1559- let hY = toBase58String(bd)
1560- $Tuple2([IntegerEntry(dx(), (hW + 1)), hX, StringEntry(dA(dB), hY), StringEntry(bc(hY), bA), StringEntry(dD(dB), bA), IntegerEntry(bm(hY), 0), IntegerEntry(dC(hY, bA), 0), ScriptTransfer(hT, 1, bd)], $Tuple2(hY, cP))
1561- }
1562-
1563-
1564-func hZ (bA,ia,ib) = if (!(sigVerify_8Kb(ia, ib, di)))
1562+func hZ (ia,ib) = {
1563+ let bH = toString(ia)
1564+ let ic = gu(toBigInt(ib))
1565+ let id = valueOrElse(getInteger(dE()), (dD + 1))
1566+ let dI = toString(id)
1567+ let gD = toInt((ic % dx))
1568+ let gc = gB(ic, gD)
1569+ let cW = aM[gD]
1570+ let ie = Issue(dV(dI, "S"), makeString([dI, "S", gc, cW], "_"), 1, 0, false)
1571+ let bk = calculateAssetId(ie)
1572+ let if = toBase58String(bk)
1573+ $Tuple2([IntegerEntry(dE(), (id + 1)), ie, StringEntry(dH(dI), if), StringEntry(bj(if), bH), StringEntry(dK(dI), bH), IntegerEntry(bt(if), 0), IntegerEntry(dJ(if, bH), 0), ScriptTransfer(ia, 1, bk)], $Tuple2(if, cW))
1574+ }
1575+
1576+
1577+func ig (bH,ih,ii) = if (!(sigVerify_8Kb(ih, ii, dp)))
15651578 then throw("signature does not match")
15661579 else {
1567- let ex = split(toUtf8String(ia), ";")
1568- let ic = split(ex[0], "|")
1569- let id = split(ic[dK], "_")
1570- let ie = parseIntValue(id[0])
1571- let if = parseIntValue(id[1])
1572- let ig = split(ex[1], ":")
1573- let ih = ig[0]
1574- let ii = parseIntValue(ic[dL])
1575- if (if ((ii > (lastBlock.timestamp + dk)))
1580+ let eE = split(toUtf8String(ih), ";")
1581+ let ij = split(eE[0], "|")
1582+ let ik = split(ij[dR], "_")
1583+ let il = parseIntValue(ik[0])
1584+ let im = parseIntValue(ik[1])
1585+ let in = split(eE[1], ":")
1586+ let io = in[0]
1587+ let ip = parseIntValue(ij[dS])
1588+ if (if ((ip > (lastBlock.timestamp + dr)))
15761589 then true
1577- else ((lastBlock.timestamp - dk) > ii))
1578- then throw(((("signature outdated: logTime=" + toString(ii)) + ", bcTime=") + toString(lastBlock.timestamp)))
1590+ else ((lastBlock.timestamp - dr) > ip))
1591+ then throw(((("signature outdated: logTime=" + toString(ip)) + ", bcTime=") + toString(lastBlock.timestamp)))
15791592 else {
1580- let ij = ig[1]
1581- let ik = valueOrElse(getString(bb(bA)), "")
1582- if ((ik != ij))
1583- then throw(((("Tx ids don't match! In state: " + ik) + ", in msg: ") + ij))
1593+ let iq = in[1]
1594+ let ir = valueOrElse(getString(bi(bH)), "")
1595+ if ((ir != iq))
1596+ then throw(((("Tx ids don't match! In state: " + ir) + ", in msg: ") + iq))
15841597 else {
1585- let x = valueOrErrorMessage(getString(bv(bA)), "You don't have a duck staked")
1586- let il = w(x)
1587- let im = aa(valueOrElse(getInteger(A(x)), 0))
1588- let in = valueOrElse(getInteger(il), im)
1589- if ((in != ie))
1590- then throw(((("oldHealth=" + toString(in)) + " from state does not match one from flight log=") + toString(ie)))
1591- else if ((0 >= ie))
1598+ let z = valueOrErrorMessage(getString(bC(bH)), "You don't have a duck staked")
1599+ let is = y(z)
1600+ let it = ae(valueOrElse(getInteger(C(z)), 0))
1601+ let iu = valueOrElse(getInteger(is), it)
1602+ if ((iu != il))
1603+ then throw(((("oldHealth=" + toString(iu)) + " from state does not match one from flight log=") + toString(il)))
1604+ else if ((0 >= il))
15921605 then throw("You can't fly with zero health")
1593- else if (!(fE(x)))
1606+ else if (!(fL(z)))
15941607 then throw("Equipment incompatible")
15951608 else {
1596- let io = if ((size(ic) > dM))
1597- then ic[dM]
1609+ let iv = if ((size(ij) > dT))
1610+ then ij[dT]
15981611 else ""
1599- let ip = if ((size(ic) > dN))
1600- then ic[dN]
1612+ let iw = if ((size(ij) > dU))
1613+ then ij[dU]
16011614 else ""
1602- let iq = if (if ((if > 0))
1603- then (io == "$")
1615+ let ix = if (if ((im > 0))
1616+ then (iv == "$")
16041617 else false)
1605- then cV(invoke(cA, "sendUsdtPrize", [bA], nil))
1618+ then dc(invoke(cH, "sendUsdtPrize", [bH], nil))
16061619 else 0
1607- $Tuple5(if, x, iq, ih, ip)
1620+ $Tuple5(im, z, ix, io, iw)
16081621 }
16091622 }
16101623 }
16111624 }
16121625
16131626
1614-func ir (hT,hU,ia,ib) = {
1615- let bA = toString(hT)
1616- let gx = hZ(bA, ia, ib)
1617- let x = gx._2
1618- let il = w(x)
1619- let gV = bw(x)
1620- let hy = gU(gV)
1621- let is = split(hy[aZ], "_")
1622- let it = makeString(el(true, is, do), "_")
1623- let fF = C(x)
1624- let iu = valueOrElse(getString(fF), ",;,_,;,_,;,_,;,_,;,_,;,")
1625- let iv = es(iu, gx._5)
1626- let iw = iv._1
1627- let ix = iv._2
1628- if ((0 >= gx._1))
1629- then $Tuple3([IntegerEntry(il, 0), StringEntry(fF, iw)], "", 0)
1627+func iy (ia,ib,ih,ii) = {
1628+ let bH = toString(ia)
1629+ let gE = ig(bH, ih, ii)
1630+ let z = gE._2
1631+ let is = y(z)
1632+ let hc = bD(z)
1633+ let hF = hb(hc)
1634+ let iz = split(hF[bg], "_")
1635+ let iA = makeString(es(true, iz, dv), "_")
1636+ let fM = E(z)
1637+ let iB = valueOrElse(getString(fM), ",;,_,;,_,;,_,;,_,;,_,;,")
1638+ let iC = ez(iB, gE._5)
1639+ let iD = iC._1
1640+ let iE = iC._2
1641+ if ((0 >= gE._1))
1642+ then $Tuple3([IntegerEntry(is, 0), StringEntry(fM, iD)], "", 0)
16301643 else {
1631- let iy = hS(hT, hU)
1632- let hY = iy._2._1
1633- $Tuple3((iy._1 ++ (if (ix)
1634- then [StringEntry(I(x), "0_0_0_0_0")]
1635- else ((((nil :+ StringEntry(bx(x), makeString([iy._2._2, "L", hY], "_"))) :+ IntegerEntry(il, gx._1)) :+ StringEntry(fF, iw)) :+ StringEntry(gV, makeString([hy[aX], hy[aY], it, hy[ba]], ":"))))), hY, gx._3)
1636- }
1637- }
1638-
1639-
1640-func iz (M,iA) = {
1641- let hk = valueOrElse(getInteger(bm(M)), 0)
1642- let iB = valueOrElse(getInteger(bg(av, M)), 0)
1643- let iC = (hk / 6)
1644- let iD = (hk / 7)
1645- ((ay + fraction(ay, ((hk + iC) + (2 * iD)), 5)) + fraction(ay, iB, (iA * 5)))
1646- }
1647-
1648-
1649-func iE (b,iF,iG) = {
1650- let iH = if ((iF == dH))
1651- then $Tuple2(iG, valueOrElse(getString(bv(b)), ""))
1644+ let iF = hZ(ia, ib)
1645+ let if = iF._2._1
1646+ $Tuple3((iF._1 ++ (if (iE)
1647+ then [StringEntry(K(z), "0_0_0_0_0")]
1648+ else ((((nil :+ StringEntry(bE(z), makeString([iF._2._2, "L", if], "_"))) :+ IntegerEntry(is, gE._1)) :+ StringEntry(fM, iD)) :+ StringEntry(hc, makeString([hF[be], hF[bf], iA, hF[bh]], ":"))))), if, gE._3)
1649+ }
1650+ }
1651+
1652+
1653+func iG (O,iH) = {
1654+ let hr = valueOrElse(getInteger(bt(O)), 0)
1655+ let iI = valueOrElse(getInteger(bn(aC, O)), 0)
1656+ let iJ = (hr / 6)
1657+ let iK = (hr / 7)
1658+ ((aF + fraction(aF, ((hr + iJ) + (2 * iK)), 5)) + fraction(aF, iI, (iH * 5)))
1659+ }
1660+
1661+
1662+func iL (b,iM,iN) = {
1663+ let iO = if ((iM == dO))
1664+ then $Tuple2(iN, valueOrElse(getString(bC(b)), ""))
16521665 else {
1653- let x = valueOrErrorMessage(getString(bv(b)), "You don't have a duck staked")
1654- let iI = valueOrElse(getString(bx(x)), aB)
1655- let iJ = split(value(iI), "_")
1656- if ((iJ[bQ] != "L"))
1657- then throw((("Duck location type is " + iJ[bQ]) + ", but should be L"))
1658- else $Tuple2(iJ[bR], x)
1659- }
1660- let M = iH._1
1661- let iK = iH._2
1662- let iL = value(assetInfo(fromBase58String(M)))
1663- let iM = bf(M)
1664- let iN = valueOrErrorMessage(getInteger(iM), (("Land " + iL.name) + " is not staked"))
1665- let iO = valueOrErrorMessage(getString(bc(M)), (("NFT " + iL.name) + " is orphaned"))
1666- if ((iO != b))
1667- then throw((at + " is not yours"))
1666+ let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
1667+ let iP = valueOrElse(getString(bE(z)), aI)
1668+ let iQ = split(value(iP), "_")
1669+ if ((iQ[bX] != "L"))
1670+ then throw((("Duck location type is " + iQ[bX]) + ", but should be L"))
1671+ else $Tuple2(iQ[bY], z)
1672+ }
1673+ let O = iO._1
1674+ let iR = iO._2
1675+ let iS = value(assetInfo(fromBase58String(O)))
1676+ let iT = bm(O)
1677+ let iU = valueOrErrorMessage(getInteger(iT), (("Land " + iS.name) + " is not staked"))
1678+ let iV = valueOrErrorMessage(getString(bj(O)), (("NFT " + iS.name) + " is orphaned"))
1679+ if ((iV != b))
1680+ then throw((aA + " is not yours"))
16681681 else {
1669- let iP = split(iL.description, "_")
1670- $Tuple4(iK, M, iP, iN)
1671- }
1672- }
1673-
1674-
1675-func iQ (b,dQ,iF,iG) = if ((0 > dQ))
1682+ let iW = split(iS.description, "_")
1683+ $Tuple4(iR, O, iW, iU)
1684+ }
1685+ }
1686+
1687+
1688+func iX (b,dX,iM,iN) = if ((0 > dX))
16761689 then throw("Negative amount")
16771690 else {
1678- let fi = iE(b, iF, iG)
1679- let cY = fi._3[cG]
1680- let fO = fU(fi._3[cH])
1681- let fY = (lastBlock.timestamp - fi._4)
1682- if ((0 > fY))
1683- then throw(((("Saved timestamp is in future, saved = " + toString(fi._4)) + ", current = ") + toString(lastBlock.timestamp)))
1691+ let fp = iL(b, iM, iN)
1692+ let df = fp._3[cN]
1693+ let fV = gb(fp._3[cO])
1694+ let gf = (lastBlock.timestamp - fp._4)
1695+ if ((0 > gf))
1696+ then throw(((("Saved timestamp is in future, saved = " + toString(fp._4)) + ", current = ") + toString(lastBlock.timestamp)))
16841697 else {
1685- let iA = cX(cY)
1686- let iR = iz(fi._2, iA)
1687- let iS = fraction(fY, (iR * iA), az)
1688- if ((dQ > iS))
1689- then throw(((("Not enough resources, available = " + toString(iS)) + ", requested = ") + toString(dQ)))
1698+ let iH = de(df)
1699+ let iY = iG(fp._2, iH)
1700+ let iZ = fraction(gf, (iY * iH), aG)
1701+ if ((dX > iZ))
1702+ then throw(((("Not enough resources, available = " + toString(iZ)) + ", requested = ") + toString(dX)))
16901703 else {
1691- let iT = fraction((iS - dQ), az, (iR * iA))
1692- let iU = (lastBlock.timestamp - iT)
1693- let hj = (iA / cf)
1694- let gg = gc(fO, (fY - iT), hj, iR)
1695- let hi = bl(fi._2)
1696- let hk = valueOrElse(getInteger(bm(fi._2)), 0)
1697- let gZ = hh(hi, hj, hk)
1698- let hq = split(gZ[aS], "_")
1699- let gh = parseIntValue(hq[aV])
1700- if (if ((iF == dH))
1701- then (dQ > gh)
1704+ let ja = fraction((iZ - dX), aG, (iY * iH))
1705+ let jb = (lastBlock.timestamp - ja)
1706+ let hq = (iH / cm)
1707+ let gn = gj(fV, (gf - ja), hq, iY)
1708+ let hp = bs(fp._2)
1709+ let hr = valueOrElse(getInteger(bt(fp._2)), 0)
1710+ let hg = ho(hp, hq, hr)
1711+ let hx = split(hg[aZ], "_")
1712+ let go = parseIntValue(hx[bc])
1713+ if (if ((iM == dO))
1714+ then (dX > go)
17021715 else false)
1703- then throw((("Only " + toString(gh)) + " space left in warehouse"))
1716+ then throw((("Only " + toString(go)) + " space left in warehouse"))
17041717 else {
1705- let gV = bw(fi._1)
1706- let hy = gU(gV)
1707- let gf = split(hy[aY], "_")
1708- let ge = split(gZ[aP], "_")
1709- let iV = if ((iF == dH))
1710- then $Tuple4(fW(ge, fO, (fY - iT), hj, iR), hy[aY], (parseIntValue(hq[aU]) + gg._2), (parseIntValue(hq[aV]) - gg._2))
1711- else if ((iF == dI))
1712- then $Tuple4(gZ[aP], fW(gf, fO, (fY - iT), hj, iR), parseIntValue(hq[aU]), parseIntValue(hq[aV]))
1718+ let hc = bD(fp._1)
1719+ let hF = hb(hc)
1720+ let gm = split(hF[bf], "_")
1721+ let gl = split(hg[aW], "_")
1722+ let jc = if ((iM == dO))
1723+ then $Tuple4(gd(gl, fV, (gf - ja), hq, iY), hF[bf], (parseIntValue(hx[bb]) + gn._2), (parseIntValue(hx[bc]) - gn._2))
1724+ else if ((iM == dP))
1725+ then $Tuple4(hg[aW], gd(gm, fV, (gf - ja), hq, iY), parseIntValue(hx[bb]), parseIntValue(hx[bc]))
17131726 else {
1714- let iW = gd(ge, gf, gg, gh)
1715- let iX = min([parseIntValue(hq[aV]), gg._2])
1716- $Tuple4(iW._1, iW._2, (parseIntValue(hq[aU]) + iX), (parseIntValue(hq[aV]) - iX))
1727+ let jd = gk(gl, gm, gn, go)
1728+ let je = min([parseIntValue(hx[bc]), gn._2])
1729+ $Tuple4(jd._1, jd._2, (parseIntValue(hx[bb]) + je), (parseIntValue(hx[bc]) - je))
17171730 }
1718- let iY = iV._1
1719- let iZ = iV._2
1720- let ja = iV._3
1721- let jb = iV._4
1722- $Tuple5([IntegerEntry(bf(fi._2), iU), IntegerEntry(bi(at, fi._2, b), iU)], gV, [hy[aX], iZ, hy[aZ], hy[ba]], hi, [gZ[aO], iY, gZ[aQ], gZ[aR], makeString([hq[aT], toString(ja), toString(jb), hq[aW]], "_")])
1731+ let jf = jc._1
1732+ let jg = jc._2
1733+ let jh = jc._3
1734+ let ji = jc._4
1735+ $Tuple5([IntegerEntry(bm(fp._2), jb), IntegerEntry(bp(aA, fp._2, b), jb)], hc, [hF[be], jg, hF[bg], hF[bh]], hp, [hg[aV], jf, hg[aX], hg[aY], makeString([hx[ba], toString(jh), toString(ji), hx[bd]], "_")])
17231736 }
17241737 }
17251738 }
17261739 }
17271740
17281741
1729-func jc (b,M,iA,iF) = {
1730- let iM = bf(M)
1731- let iN = value(getInteger(iM))
1732- let iS = (fraction((lastBlock.timestamp - iN), iz(M, iA), az) * iA)
1733- iQ(b, iS, iF, M)
1734- }
1735-
1736-
1737-func jd (em,hT,je,M) = {
1738- let b = toString(hT)
1739- let fi = iE(b, dJ, M)
1740- let iA = cX(fi._3[cG])
1741- let jf = bm(fi._2)
1742- let jg = valueOrElse(getInteger(jf), 0)
1743- if (if (!(bV))
1744- then (jg >= 3)
1742+func jj (b,O,iH,iM) = {
1743+ let iT = bm(O)
1744+ let iU = value(getInteger(iT))
1745+ let iZ = (fraction((lastBlock.timestamp - iU), iG(O, iH), aG) * iH)
1746+ iX(b, iZ, iM, O)
1747+ }
1748+
1749+
1750+func jk (et,ia,jl,O) = {
1751+ let b = toString(ia)
1752+ let fp = iL(b, dQ, O)
1753+ let iH = de(fp._3[cN])
1754+ let jm = bt(fp._2)
1755+ let jn = valueOrElse(getInteger(jm), 0)
1756+ if (if (!(cc))
1757+ then (jn >= 3)
17451758 else false)
17461759 then throw("Currently max infrastructure level = 3")
17471760 else {
1748- let jh = ((sqrt(iA, 0, 0, DOWN) / 5) + 2)
1749- let af = (jg + 1)
1750- if (if (bV)
1751- then (af > jh)
1761+ let jo = ((sqrt(iH, 0, 0, DOWN) / 5) + 2)
1762+ let aj = (jn + 1)
1763+ if (if (cc)
1764+ then (aj > jo)
17521765 else false)
1753- then throw(("Currently max infrastructure level = " + toString(jh)))
1766+ then throw(("Currently max infrastructure level = " + toString(jo)))
17541767 else {
1755- let ji = fraction(dn, (iA * af), cf)
1756- if (if (!(em))
1757- then (je != ji)
1768+ let jp = fraction(du, (iH * aj), cm)
1769+ if (if (!(et))
1770+ then (jl != jp)
17581771 else false)
1759- then throw(("Payment attached should be " + toString(ji)))
1772+ then throw(("Payment attached should be " + toString(jp)))
17601773 else {
1761- let gV = bw(fi._1)
1762- let hy = gU(gV)
1763- let is = split(hy[aZ], "_")
1764- let jj = fraction(ca, (iA * af), cf)
1765- let it = makeString(el(em, is, jj), "_")
1766- let jk = jc(b, fi._2, iA, dJ)
1767- let jl = jk._5
1768- let jm = gW(jl[aO])
1769- let jn = makeString([split(jl[aO], "_")[0], toString(af)], "_")
1770- let jo = gW(jn)
1771- let hq = split(jl[aS], "_")
1772- let jp = makeString([hq[aT], hq[aU], toString(((parseIntValue(hq[aV]) + jo) - jm)), toString(jo)], "_")
1773- $Tuple3(([IntegerEntry(jf, af), IntegerEntry(dC(fi._2, b), af), StringEntry(gV, makeString([hy[aX], jk._3[aY], it, hy[ba]], ":")), StringEntry(jk._4, makeString([jn, jl[aP], jl[aQ], jl[aR], jp], ":"))] ++ jk._1), af, jj)
1774+ let hc = bD(fp._1)
1775+ let hF = hb(hc)
1776+ let iz = split(hF[bg], "_")
1777+ let jq = fraction(ch, (iH * aj), cm)
1778+ let iA = makeString(es(et, iz, jq), "_")
1779+ let jr = jj(b, fp._2, iH, dQ)
1780+ let js = jr._5
1781+ let jt = hd(js[aV])
1782+ let ju = makeString([split(js[aV], "_")[0], toString(aj)], "_")
1783+ let jv = hd(ju)
1784+ let hx = split(js[aZ], "_")
1785+ let jw = makeString([hx[ba], hx[bb], toString(((parseIntValue(hx[bc]) + jv) - jt)), toString(jv)], "_")
1786+ $Tuple3(([IntegerEntry(jm, aj), IntegerEntry(dJ(fp._2, b), aj), StringEntry(hc, makeString([hF[be], jr._3[bf], iA, hF[bh]], ":")), StringEntry(jr._4, makeString([ju, js[aW], js[aX], js[aY], jw], ":"))] ++ jr._1), aj, jq)
17741787 }
17751788 }
17761789 }
17771790 }
17781791
17791792
1780-func jq (x,jr) = {
1781- let js = A(x)
1782- let jt = z(x)
1783- let Z = valueOrElse(getInteger(ah, jt), 0)
1784- let ae = (Z + jr)
1785- let ju = ac(valueOrElse(getInteger(ah, js), 0), ae)
1786- let jv = B(x)
1787- $Tuple2([IntegerEntry(js, ju[0]), IntegerEntry(jt, ae), IntegerEntry(jv, (valueOrElse(getInteger(jv), 0) + ju[1]))], ae)
1788- }
1789-
1790-
1791-func jw (b,jr) = {
1792- let js = E(b)
1793- let jt = D(b)
1794- let Z = valueOrElse(getInteger(ah, jt), 0)
1795- let ae = (Z + jr)
1796- let ju = ac(valueOrElse(getInteger(ah, js), 0), ae)
1797- let jv = F(b)
1798- $Tuple2([IntegerEntry(js, ju[0]), IntegerEntry(jt, ae), IntegerEntry(jv, (valueOrElse(getInteger(jv), 0) + ju[1]))], ae)
1799- }
1800-
1801-
1802-func jx (b) = {
1803- let x = valueOrErrorMessage(getString(bv(b)), "You don't have a duck staked")
1804- let jy = bq(b)
1805- let jz = getString(jy)
1806- if (!(isDefined(jz)))
1793+func jx (z,jy) = {
1794+ let jz = C(z)
1795+ let jA = B(z)
1796+ let ad = valueOrElse(getInteger(al, jA), 0)
1797+ let ai = (ad + jy)
1798+ let jB = ag(valueOrElse(getInteger(al, jz), 0), ai)
1799+ let jC = D(z)
1800+ $Tuple2([IntegerEntry(jz, jB[0]), IntegerEntry(jA, ai), IntegerEntry(jC, (valueOrElse(getInteger(jC), 0) + jB[1]))], ai)
1801+ }
1802+
1803+
1804+func jD (b,jy) = {
1805+ let jz = G(b)
1806+ let jA = F(b)
1807+ let ad = valueOrElse(getInteger(al, jA), 0)
1808+ let ai = (ad + jy)
1809+ let jB = ag(valueOrElse(getInteger(al, jz), 0), ai)
1810+ let jC = H(b)
1811+ $Tuple2([IntegerEntry(jz, jB[0]), IntegerEntry(jA, ai), IntegerEntry(jC, (valueOrElse(getInteger(jC), 0) + jB[1]))], ai)
1812+ }
1813+
1814+
1815+func jE (b) = {
1816+ let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
1817+ let jF = bx(b)
1818+ let jG = getString(jF)
1819+ if (!(isDefined(jG)))
18071820 then throw("You are not eligible for ONBOARD artifact")
18081821 else {
1809- let jA = bs(b)
1810- let jB = getString(jA)
1811- if (isDefined(jB))
1812- then throw(("You already used your ONBOARD artifact on duck " + value(jB)))
1822+ let jH = bz(b)
1823+ let jI = getString(jH)
1824+ if (isDefined(jI))
1825+ then throw(("You already used your ONBOARD artifact on duck " + value(jI)))
18131826 else {
1814- let jC = br(x)
1815- let jD = getString(jC)
1816- if (isDefined(jD))
1817- then throw(((("The duck " + x) + " already got points from ONBOARD artifact from user ") + value(jD)))
1818- else ([StringEntry(jA, x), StringEntry(jC, b)] ++ jq(x, W)._1)
1827+ let jJ = by(z)
1828+ let jK = getString(jJ)
1829+ if (isDefined(jK))
1830+ then throw(((("The duck " + z) + " already got points from ONBOARD artifact from user ") + value(jK)))
1831+ else ([StringEntry(jH, z), StringEntry(jJ, b)] ++ jx(z, aa)._1)
18191832 }
18201833 }
18211834 }
18221835
18231836
1824-func jE (b,iG) = {
1825- let fi = iE(b, dJ, iG)
1826- let M = fi._2
1827- let iA = cX(fi._3[cG])
1828- let jF = bg(av, M)
1829- if ((valueOrElse(getInteger(jF), 0) > 0))
1837+func jL (b,iN) = {
1838+ let fp = iL(b, dQ, iN)
1839+ let O = fp._2
1840+ let iH = de(fp._3[cN])
1841+ let jM = bn(aC, O)
1842+ if ((valueOrElse(getInteger(jM), 0) > 0))
18301843 then throw("Presale artifact is already activated")
1831- else if ((parseIntValue(fi._3[cF]) > dw))
1832- then throw((((at + " ") + M) + " is not eligible for presale artifact"))
1844+ else if ((parseIntValue(fp._3[cM]) > dD))
1845+ then throw((((aA + " ") + O) + " is not eligible for presale artifact"))
18331846 else {
1834- let jk = jc(b, M, iA, dJ)
1835- (((jk._1 :+ IntegerEntry(jF, iA)) :+ StringEntry(jk._2, makeString(jk._3, ":"))) :+ StringEntry(jk._4, makeString(jk._5, ":")))
1847+ let jr = jj(b, O, iH, dQ)
1848+ (((jr._1 :+ IntegerEntry(jM, iH)) :+ StringEntry(jr._2, makeString(jr._3, ":"))) :+ StringEntry(jr._4, makeString(jr._5, ":")))
18361849 }
18371850 }
18381851
18391852
1840-func jG (x) = {
1841- let jH = valueOrElse(getInteger(cE, bC), 0)
1842- let iI = split(valueOrElse(getString(bx(x)), aB), "_")
1843- let ar = lastBlock.timestamp
1844- let jI = bI(cE, jH)
1845- let bK = jI[bG]
1846- let bL = jI[bH]
1847- if ((iI[bQ] != "T"))
1853+func jN (z) = {
1854+ let jO = valueOrElse(getInteger(cL, bJ), 0)
1855+ let iP = split(valueOrElse(getString(bE(z)), aI), "_")
1856+ let av = lastBlock.timestamp
1857+ let jP = bP(cL, jO)
1858+ let bR = jP[bN]
1859+ let bS = jP[bO]
1860+ if ((iP[bX] != "T"))
18481861 then false
18491862 else {
1850- let er = if (if (if ((parseIntValue(iI[bP]) == jH))
1851- then (bL[bN] == "INPROGRESS")
1863+ let ey = if (if (if ((parseIntValue(iP[bW]) == jO))
1864+ then (bS[bU] == "INPROGRESS")
18521865 else false)
1853- then (parseIntValue(bK[bM]) > ar)
1866+ then (parseIntValue(bR[bT]) > av)
18541867 else false)
18551868 then throw("Your duck is taking part in the tournament")
1856- else invoke(this, "exitTournamentInternal", [x], nil)
1857- if ((er == er))
1869+ else invoke(this, "exitTournamentInternal", [z], nil)
1870+ if ((ey == ey))
18581871 then false
18591872 else throw("Strict value is not equal to itself.")
18601873 }
18611874 }
18621875
18631876
1864-func jJ (jK,af,jL,b,jM,jN) = {
1865- let x = valueOrErrorMessage(getString(bv(b)), "You don't have a duck staked")
1866- if (jG(x))
1877+func jQ (jR,aj,jS,b,jT,jU) = {
1878+ let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
1879+ if (jN(z))
18671880 then throw("mergeInternal_checkTournament")
18681881 else {
1869- func jO (dZ,M) = {
1870- let iL = value(assetInfo(fromBase58String(M)))
1871- let iM = bf(M)
1872- let iN = valueOrErrorMessage(getInteger(iM), (("NFT " + iL.name) + " is not staked"))
1873- let iO = valueOrErrorMessage(getString(bc(M)), (("NFT " + iL.name) + " is orphaned"))
1874- if ((iO != b))
1875- then throw((at + " is not yours"))
1882+ func jV (eg,O) = {
1883+ let iS = value(assetInfo(fromBase58String(O)))
1884+ let iT = bm(O)
1885+ let iU = valueOrErrorMessage(getInteger(iT), (("NFT " + iS.name) + " is not staked"))
1886+ let iV = valueOrErrorMessage(getString(bj(O)), (("NFT " + iS.name) + " is orphaned"))
1887+ if ((iV != b))
1888+ then throw((aA + " is not yours"))
18761889 else {
1877- let iP = split(iL.description, "_")
1878- let cP = iP[cI]
1879- if (if ((dZ._3 != ""))
1880- then (dZ._3 != cP)
1890+ let iW = split(iS.description, "_")
1891+ let cW = iW[cP]
1892+ if (if ((eg._3 != ""))
1893+ then (eg._3 != cW)
18811894 else false)
18821895 then throw("Lands should be on the same continent to merge")
18831896 else {
1884- let cY = iP[cG]
1885- let jP = dZ._1
1886- let fS = valueOrErrorMessage(indexOf(jP, cY), "You haven't passed all the lands needed")
1887- let jQ = (take(jP, fS) + drop(jP, (fS + 1)))
1888- let iA = cX(cY)
1889- let jR = (dZ._2 + valueOrElse(getInteger(bg(av, M)), 0))
1890- let hk = valueOrElse(getInteger(bm(M)), 0)
1891- let jS = {
1892- let bY = cY
1893- if (("S" == bY))
1897+ let df = iW[cN]
1898+ let jW = eg._1
1899+ let fZ = valueOrErrorMessage(indexOf(jW, df), "You haven't passed all the lands needed")
1900+ let jX = (take(jW, fZ) + drop(jW, (fZ + 1)))
1901+ let iH = de(df)
1902+ let jY = (eg._2 + valueOrElse(getInteger(bn(aC, O)), 0))
1903+ let hr = valueOrElse(getInteger(bt(O)), 0)
1904+ let jZ = {
1905+ let cf = df
1906+ if (("S" == cf))
18941907 then 3
1895- else if (("M" == bY))
1908+ else if (("M" == cf))
18961909 then 4
1897- else if (("L" == bY))
1910+ else if (("L" == cf))
18981911 then 5
1899- else if (("XL" == bY))
1912+ else if (("XL" == cf))
19001913 then 6
19011914 else throw("Only S, M, L, XL can merge")
19021915 }
1903- if ((hk != jS))
1916+ if ((hr != jZ))
19041917 then throw("All lands should be maxed to merge")
19051918 else {
1906- let dB = iP[cF]
1907- let fO = fU(iP[cH])
1908- let fY = (lastBlock.timestamp - iN)
1909- if ((0 > fY))
1910- then throw(((("Saved timestamp is in future, saved = " + toString(iN)) + ", current = ") + toString(lastBlock.timestamp)))
1919+ let dI = iW[cM]
1920+ let fV = gb(iW[cO])
1921+ let gf = (lastBlock.timestamp - iU)
1922+ if ((0 > gf))
1923+ then throw(((("Saved timestamp is in future, saved = " + toString(iU)) + ", current = ") + toString(lastBlock.timestamp)))
19111924 else {
1912- let iR = iz(M, iA)
1913- let hj = (iA / cf)
1914- let iZ = fW(split(dZ._4, "_"), fO, fY, hj, iR)
1915- let ej = fM(dZ._6, fO, hj, -1)
1916- let jT = fM(dZ._10, fO, hj, -1)
1917- let gC = fM(dZ._9, fO, hj, 1)
1918- let jU = dZ._7
1919- let cz = indexOf(jU, M)
1920- if (!(isDefined(cz)))
1921- then throw(("Your staked lands don't contain " + M))
1925+ let iY = iG(O, iH)
1926+ let hq = (iH / cm)
1927+ let jg = gd(split(eg._4, "_"), fV, gf, hq, iY)
1928+ let eq = fT(eg._6, fV, hq, -1)
1929+ let ka = fT(eg._10, fV, hq, -1)
1930+ let gJ = fT(eg._9, fV, hq, 1)
1931+ let kb = eg._7
1932+ let cG = indexOf(kb, O)
1933+ if (!(isDefined(cG)))
1934+ then throw(("Your staked lands don't contain " + O))
19221935 else {
1923- let jV = be(M)
1924- let jW = valueOrElse(getString(jV), "")
1925- $Tuple10(jQ, jR, cP, iZ, ((((((((((((dZ._5 :+ DeleteEntry(bf(M))) :+ DeleteEntry(bi(at, M, b))) :+ DeleteEntry(dA(dB))) :+ DeleteEntry(bc(M))) :+ DeleteEntry(bm(M))) :+ DeleteEntry(dC(M, b))) :+ DeleteEntry(bg(av, M))) :+ DeleteEntry(dD(dB))) :+ DeleteEntry(bl(M))) :+ DeleteEntry(jV)) :+ Burn(fromBase58String(M), 1)) ++ (if ((jW != ""))
1926- then [DeleteEntry(dy(jW))]
1927- else nil)), ej, removeByIndex(jU, value(cz)), (dZ._8 + iA), gC, jT)
1936+ let kc = bl(O)
1937+ let kd = valueOrElse(getString(kc), "")
1938+ $Tuple10(jX, jY, cW, jg, ((((((((((((eg._5 :+ DeleteEntry(bm(O))) :+ DeleteEntry(bp(aA, O, b))) :+ DeleteEntry(dH(dI))) :+ DeleteEntry(bj(O))) :+ DeleteEntry(bt(O))) :+ DeleteEntry(dJ(O, b))) :+ DeleteEntry(bn(aC, O))) :+ DeleteEntry(dK(dI))) :+ DeleteEntry(bs(O))) :+ DeleteEntry(kc)) :+ Burn(fromBase58String(O), 1)) ++ (if ((kd != ""))
1939+ then [DeleteEntry(dF(kd))]
1940+ else nil)), eq, removeByIndex(kb, value(cG)), (eg._8 + iH), gJ, ka)
19281941 }
19291942 }
19301943 }
19311944 }
19321945 }
19331946 }
19341947
1935- let gV = bw(x)
1936- let hy = gU(gV)
1937- let fN = split(valueOrElse(getString(cN()), "0_0_0_0_0_0"), "_")
1938- let jX = cQ(b)
1939- let jY = getString(jX)
1940- let jZ = if (isDefined(jY))
1941- then split_51C(value(jY), "_")
1948+ let hc = bD(z)
1949+ let hF = hb(hc)
1950+ let fU = split(valueOrElse(getString(cU()), "0_0_0_0_0_0"), "_")
1951+ let ke = cX(b)
1952+ let kf = getString(ke)
1953+ let kg = if (isDefined(kf))
1954+ then split_51C(value(kf), "_")
19421955 else nil
1943- let ka = split(value(assetInfo(fromBase58String(jM[0]))).description, "_")[cI]
1944- let kb = split(valueOrElse(getString(cO(ka)), "0_0_0_0_0_0"), "_")
1945- let ek = {
1946- let eb = jM
1947- let ec = size(eb)
1948- let ed = $Tuple10(jL, 0, "", hy[aY], nil, fN, jZ, 0, split("0_0_0_0_0_0", "_"), kb)
1949- func ee (ef,eg) = if ((eg >= ec))
1950- then ef
1951- else jO(ef, eb[eg])
1952-
1953- func eh (ef,eg) = if ((eg >= ec))
1954- then ef
1956+ let kh = split(value(assetInfo(fromBase58String(jT[0]))).description, "_")[cP]
1957+ let ki = split(valueOrElse(getString(cV(kh)), "0_0_0_0_0_0"), "_")
1958+ let er = {
1959+ let ei = jT
1960+ let ej = size(ei)
1961+ let ek = $Tuple10(jS, 0, "", hF[bf], nil, fU, kg, 0, split("0_0_0_0_0_0", "_"), ki)
1962+ func el (em,en) = if ((en >= ej))
1963+ then em
1964+ else jV(em, ei[en])
1965+
1966+ func eo (em,en) = if ((en >= ej))
1967+ then em
19551968 else throw("List size exceeds 5")
19561969
1957- eh(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5)
1970+ eo(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5)
19581971 }
1959- let cP = ek._3
1960- let gw = valueOrErrorMessage(indexOf(aF, cP), ("Unknown continent: " + cP))
1961- let fV = gB(ek._9, (cX(jK) / cf))
1962- let hW = valueOrElse(getInteger(dx()), (dw + 1))
1963- let kc = toString(hW)
1964- let hX = Issue(dO(kc, jK), makeString([kc, jK, fV, cP], "_"), 1, 0, false)
1965- let bd = calculateAssetId(hX)
1966- let kd = toBase58String(bd)
1967- let it = makeString(el((jN > 0), split(hy[aZ], "_"), jN), "_")
1968- let ke = cR(b)
1969- let kf = valueOrElse(getInteger(ke), 0)
1970- $Tuple2((((((((((((((((ek._5 :+ (if ((size(ek._7) > 0))
1971- then StringEntry(jX, makeString_11C(ek._7, "_"))
1972- else DeleteEntry(jX))) :+ IntegerEntry(ke, if ((ek._8 > kf))
1972+ let cW = er._3
1973+ let gD = valueOrErrorMessage(indexOf(aM, cW), ("Unknown continent: " + cW))
1974+ let gc = gI(er._9, (de(jR) / cm))
1975+ let id = valueOrElse(getInteger(dE()), (dD + 1))
1976+ let kj = toString(id)
1977+ let ie = Issue(dV(kj, jR), makeString([kj, jR, gc, cW], "_"), 1, 0, false)
1978+ let bk = calculateAssetId(ie)
1979+ let kk = toBase58String(bk)
1980+ let iA = makeString(es((jU > 0), split(hF[bg], "_"), jU), "_")
1981+ let kl = cY(b)
1982+ let km = valueOrElse(getInteger(kl), 0)
1983+ $Tuple2((((((((((((((((er._5 :+ (if ((size(er._7) > 0))
1984+ then StringEntry(ke, makeString_11C(er._7, "_"))
1985+ else DeleteEntry(ke))) :+ IntegerEntry(kl, if ((er._8 > km))
19731986 then 0
1974- else (kf - ek._8))) :+ IntegerEntry(dx(), (hW + 1))) :+ hX) :+ StringEntry(dA(kc), kd)) :+ StringEntry(bc(kd), b)) :+ StringEntry(dD(kc), b)) :+ IntegerEntry(bg(av, kd), ek._2)) :+ IntegerEntry(bm(kd), af)) :+ IntegerEntry(dC(kd, b), af)) :+ StringEntry(gV, makeString([hy[aX], ek._4, it, hy[ba]], ":"))) :+ StringEntry(cN(), makeString(ek._6, "_"))) :+ StringEntry(cO(cP), makeString(ek._10, "_"))) :+ StringEntry(bx(x), makeString([cP, "L", kd], "_"))) :+ ScriptTransfer(addressFromStringValue(b), 1, bd)), kd)
1975- }
1976- }
1977-
1978-
1979-func kg (b,jM) = jJ("M", 3, "SSSS", b, jM, 0)
1980-
1981-
1982-func kh (b,jM) = jJ("L", 4, "SMM", b, jM, (ca * 4))
1983-
1984-
1985-func ki (b,jM) = jJ("XL", 5, "SSSML", b, jM, (ca * 47))
1986-
1987-
1988-func kj (b,jM) = jJ("XXL", 6, "LXL", b, jM, (ca * 54))
1989-
1990-
1991-func kk (b,jM) = {
1992- let bY = size(jM)
1993- if ((4 == bY))
1994- then kg(b, jM)
1995- else if ((3 == bY))
1996- then kh(b, jM)
1997- else if ((5 == bY))
1998- then ki(b, jM)
1999- else if ((2 == bY))
2000- then kj(b, jM)
1987+ else (km - er._8))) :+ IntegerEntry(dE(), (id + 1))) :+ ie) :+ StringEntry(dH(kj), kk)) :+ StringEntry(bj(kk), b)) :+ StringEntry(dK(kj), b)) :+ IntegerEntry(bn(aC, kk), er._2)) :+ IntegerEntry(bt(kk), aj)) :+ IntegerEntry(dJ(kk, b), aj)) :+ StringEntry(hc, makeString([hF[be], er._4, iA, hF[bh]], ":"))) :+ StringEntry(cU(), makeString(er._6, "_"))) :+ StringEntry(cV(cW), makeString(er._10, "_"))) :+ StringEntry(bE(z), makeString([cW, "L", kk], "_"))) :+ ScriptTransfer(addressFromStringValue(b), 1, bk)), kk)
1988+ }
1989+ }
1990+
1991+
1992+func kn (b,jT) = jQ("M", 3, "SSSS", b, jT, 0)
1993+
1994+
1995+func ko (b,jT) = jQ("L", 4, "SMM", b, jT, (ch * 4))
1996+
1997+
1998+func kp (b,jT) = jQ("XL", 5, "SSSML", b, jT, (ch * 47))
1999+
2000+
2001+func kq (b,jT) = jQ("XXL", 6, "LXL", b, jT, (ch * 54))
2002+
2003+
2004+func kr (b,jT) = {
2005+ let cf = size(jT)
2006+ if ((4 == cf))
2007+ then kn(b, jT)
2008+ else if ((3 == cf))
2009+ then ko(b, jT)
2010+ else if ((5 == cf))
2011+ then kp(b, jT)
2012+ else if ((2 == cf))
2013+ then kq(b, jT)
20012014 else throw("Unknown merge")
20022015 }
20032016
20042017
2005-func kl (fS) = if (if ((fS.originCaller != cA))
2006- then valueOrElse(getBoolean(by()), false)
2018+func ks (fZ) = if (if ((fZ.originCaller != cH))
2019+ then valueOrElse(getBoolean(bF()), false)
20072020 else false)
20082021 then throw("Contracts are under maintenance")
2009- else StringEntry(bb(toString(fS.originCaller)), toBase58String(fS.transactionId))
2010-
2011-
2012-@Callable(fS)
2013-func constructorV1 (km) = if ((fS.caller != this))
2022+ else StringEntry(bi(toString(fZ.originCaller)), toBase58String(fZ.transactionId))
2023+
2024+
2025+@Callable(fZ)
2026+func constructorV1 (kt) = if ((fZ.caller != this))
20142027 then throw("Permission denied")
2015- else [StringEntry(cu(), km)]
2016-
2017-
2018-
2019-@Callable(fS)
2020-func setBlocked (kn) = if ((fS.caller != this))
2028+ else [StringEntry(cB(), kt)]
2029+
2030+
2031+
2032+@Callable(fZ)
2033+func setBlocked (ku) = if ((fZ.caller != this))
20212034 then throw("permission denied")
2022- else [BooleanEntry(by(), kn)]
2023-
2024-
2025-
2026-@Callable(fS)
2035+ else [BooleanEntry(bF(), ku)]
2036+
2037+
2038+
2039+@Callable(fZ)
20272040 func stakeLand () = {
2028- let ko = kl(fS)
2029- if ((size(fS.payments) != 1))
2041+ let kv = ks(fZ)
2042+ if ((size(fZ.payments) != 1))
20302043 then throw("Exactly one payment required")
20312044 else {
2032- let kp = value(fS.payments[0])
2033- let bd = value(kp.assetId)
2034- let cm = toString(fS.caller)
2035- if ((kp.amount != 1))
2036- then throw((("NFT " + at) + " token should be attached as payment"))
2045+ let kw = value(fZ.payments[0])
2046+ let bk = value(kw.assetId)
2047+ let ct = toString(fZ.caller)
2048+ if ((kw.amount != 1))
2049+ then throw((("NFT " + aA) + " token should be attached as payment"))
20372050 else {
2038- let iL = value(assetInfo(bd))
2039- if ((iL.issuer != this))
2051+ let iS = value(assetInfo(bk))
2052+ if ((iS.issuer != this))
20402053 then throw("Unknown issuer of token")
2041- else if (!(contains(iL.name, at)))
2042- then throw((("Only NFT " + at) + " tokens are accepted"))
2054+ else if (!(contains(iS.name, aA)))
2055+ then throw((("Only NFT " + aA) + " tokens are accepted"))
20432056 else {
2044- let kq = drop(iL.name, 4)
2045- let dB = if (contains(kq, "XXL"))
2046- then dropRight(kq, 3)
2047- else if (contains(kq, "XL"))
2048- then dropRight(kq, 2)
2049- else dropRight(kq, 1)
2050- if (!(isDefined(parseInt(dB))))
2051- then throw(("Cannot parse land number from " + iL.name))
2057+ let kx = drop(iS.name, 4)
2058+ let dI = if (contains(kx, "XXL"))
2059+ then dropRight(kx, 3)
2060+ else if (contains(kx, "XL"))
2061+ then dropRight(kx, 2)
2062+ else dropRight(kx, 1)
2063+ if (!(isDefined(parseInt(dI))))
2064+ then throw(("Cannot parse land number from " + iS.name))
20522065 else {
2053- let M = toBase58String(bd)
2054- let iM = bf(M)
2055- if (isDefined(getInteger(iM)))
2056- then throw((("NFT " + iL.name) + " is already staked"))
2066+ let O = toBase58String(bk)
2067+ let iT = bm(O)
2068+ if (isDefined(getInteger(iT)))
2069+ then throw((("NFT " + iS.name) + " is already staked"))
20572070 else {
2058- let iP = split(iL.description, "_")
2059- let fO = fU(iP[cH])
2060- let iA = cX(iP[cG])
2061- let hj = (iA / cf)
2062- let ej = fT(fO, hj, 1)
2063- let kr = cO(iP[cI])
2064- let kb = split(valueOrElse(getString(kr), "0_0_0_0_0_0"), "_")
2065- let ks = makeString(fM(kb, fO, hj, 1), "_")
2066- let jX = cQ(cm)
2067- let jY = getString(jX)
2068- let jU = if (isDefined(jY))
2069- then split_51C(value(jY), "_")
2071+ let iW = split(iS.description, "_")
2072+ let fV = gb(iW[cO])
2073+ let iH = de(iW[cN])
2074+ let hq = (iH / cm)
2075+ let eq = ga(fV, hq, 1)
2076+ let ky = cV(iW[cP])
2077+ let ki = split(valueOrElse(getString(ky), "0_0_0_0_0_0"), "_")
2078+ let kz = makeString(fT(ki, fV, hq, 1), "_")
2079+ let ke = cX(ct)
2080+ let kf = getString(ke)
2081+ let kb = if (isDefined(kf))
2082+ then split_51C(value(kf), "_")
20702083 else nil
2071- if (containsElement(jU, M))
2072- then throw(("Your staked lands already contain " + M))
2073- else if ((size(jU) >= ax))
2074- then throw((("Your already staked max (" + toString(ax)) + ") lands"))
2084+ if (containsElement(kb, O))
2085+ then throw(("Your staked lands already contain " + O))
2086+ else if ((size(kb) >= aE))
2087+ then throw((("Your already staked max (" + toString(aE)) + ") lands"))
20752088 else {
2076- let hk = valueOrElse(getInteger(bm(M)), 0)
2077- let ke = cR(cm)
2078- let kt = valueOrElse(getInteger(ke), 0)
2079- let ku = invoke(cD, "onStakeUnstakeLand", [cm], nil)
2080- $Tuple2([IntegerEntry(iM, lastBlock.timestamp), IntegerEntry(bi(at, M, cm), lastBlock.timestamp), StringEntry(jX, makeString_11C((jU :+ M), "_")), IntegerEntry(ke, (kt + iA)), StringEntry(bc(M), cm), StringEntry(dD(dB), cm), IntegerEntry(dC(M, cm), hk), StringEntry(cN(), ej), StringEntry(kr, ks), ko], ku)
2089+ let hr = valueOrElse(getInteger(bt(O)), 0)
2090+ let kl = cY(ct)
2091+ let kA = valueOrElse(getInteger(kl), 0)
2092+ let kB = invoke(cK, "onStakeUnstakeLand", [ct], nil)
2093+ $Tuple2([IntegerEntry(iT, lastBlock.timestamp), IntegerEntry(bp(aA, O, ct), lastBlock.timestamp), StringEntry(ke, makeString_11C((kb :+ O), "_")), IntegerEntry(kl, (kA + iH)), StringEntry(bj(O), ct), StringEntry(dK(dI), ct), IntegerEntry(dJ(O, ct), hr), StringEntry(cU(), eq), StringEntry(ky, kz), kv], kB)
20812094 }
20822095 }
20832096 }
20842097 }
20852098 }
20862099 }
20872100 }
20882101
20892102
20902103
2091-@Callable(fS)
2092-func unstakeLand (iG) = {
2093- let ko = kl(fS)
2094- if ((size(fS.payments) != 0))
2104+@Callable(fZ)
2105+func unstakeLand (iN) = {
2106+ let kv = ks(fZ)
2107+ if ((size(fZ.payments) != 0))
20952108 then throw("No payments required")
20962109 else {
2097- let b = toString(fS.caller)
2098- let fi = iE(b, dI, iG)
2099- let M = fi._2
2100- let iP = fi._3
2101- let jX = cQ(b)
2102- let fO = fU(iP[cH])
2103- let iA = cX(iP[cG])
2104- let hj = (iA / cf)
2105- let ej = fT(fO, hj, -1)
2106- let kr = cO(iP[cI])
2107- let kb = split(valueOrElse(getString(kr), "0_0_0_0_0_0"), "_")
2108- let ks = makeString(fM(kb, fO, hj, -1), "_")
2109- let jk = jc(b, M, iA, dI)
2110- let jU = split_51C(valueOrElse(getString(jX), ""), "_")
2111- let cz = indexOf(jU, M)
2112- if (!(isDefined(cz)))
2113- then throw(("Your staked lands don't contain " + M))
2110+ let b = toString(fZ.caller)
2111+ let fp = iL(b, dP, iN)
2112+ let O = fp._2
2113+ let iW = fp._3
2114+ let ke = cX(b)
2115+ let fV = gb(iW[cO])
2116+ let iH = de(iW[cN])
2117+ let hq = (iH / cm)
2118+ let eq = ga(fV, hq, -1)
2119+ let ky = cV(iW[cP])
2120+ let ki = split(valueOrElse(getString(ky), "0_0_0_0_0_0"), "_")
2121+ let kz = makeString(fT(ki, fV, hq, -1), "_")
2122+ let jr = jj(b, O, iH, dP)
2123+ let kb = split_51C(valueOrElse(getString(ke), ""), "_")
2124+ let cG = indexOf(kb, O)
2125+ if (!(isDefined(cG)))
2126+ then throw(("Your staked lands don't contain " + O))
21142127 else {
2115- let ar = lastBlock.timestamp
2116- let kv = valueOrElse(getInteger(cC, bz(b)), 0)
2117- if ((kv >= ar))
2118- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(kv)))
2128+ let av = lastBlock.timestamp
2129+ let kC = valueOrElse(getInteger(cJ, bG(b)), 0)
2130+ if ((kC >= av))
2131+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(kC)))
21192132 else {
2120- let kw = (valueOrElse(getInteger(cD, a(b)), 0) + cb)
2121- if ((kw > ar))
2122- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(kw)))
2133+ let kD = (valueOrElse(getInteger(cK, a(b)), 0) + ci)
2134+ if ((kD > av))
2135+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(kD)))
21232136 else {
2124- let ke = cR(b)
2125- let kf = valueOrElse(getInteger(ke), 0)
2126- let kx = if ((iA > kf))
2137+ let kl = cY(b)
2138+ let km = valueOrElse(getInteger(kl), 0)
2139+ let kE = if ((iH > km))
21272140 then 0
2128- else (kf - iA)
2129- let ku = invoke(cD, "onStakeUnstakeLand", [b], nil)
2130- $Tuple2([ScriptTransfer(fS.caller, 1, fromBase58String(M)), DeleteEntry(bf(M)), DeleteEntry(bi(at, M, b)), StringEntry(cN(), ej), StringEntry(kr, ks), StringEntry(jk._2, makeString(jk._3, ":")), if ((size(jU) > 1))
2131- then StringEntry(jX, makeString_11C(removeByIndex(jU, value(cz)), "_"))
2132- else DeleteEntry(jX), IntegerEntry(ke, kx), ko], ku)
2141+ else (km - iH)
2142+ let kB = invoke(cK, "onStakeUnstakeLand", [b], nil)
2143+ $Tuple2([ScriptTransfer(fZ.caller, 1, fromBase58String(O)), DeleteEntry(bm(O)), DeleteEntry(bp(aA, O, b)), StringEntry(cU(), eq), StringEntry(ky, kz), StringEntry(jr._2, makeString(jr._3, ":")), if ((size(kb) > 1))
2144+ then StringEntry(ke, makeString_11C(removeByIndex(kb, value(cG)), "_"))
2145+ else DeleteEntry(ke), IntegerEntry(kl, kE), kv], kB)
21332146 }
21342147 }
21352148 }
21362149 }
21372150 }
21382151
21392152
21402153
2141-@Callable(fS)
2154+@Callable(fZ)
21422155 func stakeDuck () = {
2143- let ko = kl(fS)
2144- if ((size(fS.payments) != 1))
2156+ let kv = ks(fZ)
2157+ if ((size(fZ.payments) != 1))
21452158 then throw("Exactly one payment required")
21462159 else {
2147- let kp = value(fS.payments[0])
2148- let bd = value(kp.assetId)
2149- let cm = toString(fS.caller)
2150- if ((kp.amount != 1))
2151- then throw((("NFT " + au) + " token should be attached as payment"))
2160+ let kw = value(fZ.payments[0])
2161+ let bk = value(kw.assetId)
2162+ let ct = toString(fZ.caller)
2163+ if ((kw.amount != 1))
2164+ then throw((("NFT " + aB) + " token should be attached as payment"))
21522165 else {
2153- let iL = value(assetInfo(bd))
2154- if (if ((iL.issuer != dg))
2155- then (iL.issuer != dh)
2166+ let iS = value(assetInfo(bk))
2167+ if (if ((iS.issuer != dn))
2168+ then (iS.issuer != do)
21562169 else false)
2157- then throw((("Unknown issuer of " + au) + " token"))
2158- else if (!(contains(iL.name, au)))
2159- then throw((("Only NFT " + au) + " tokens are accepted"))
2170+ then throw((("Unknown issuer of " + aB) + " token"))
2171+ else if (!(contains(iS.name, aB)))
2172+ then throw((("Only NFT " + aB) + " tokens are accepted"))
21602173 else {
2161- let ky = toBase58String(bd)
2162- let iM = bf(ky)
2163- if (isDefined(getInteger(iM)))
2164- then throw((("NFT " + iL.name) + " is already staked"))
2165- else if (isDefined(getString(bv(cm))))
2166- then throw(("You already staked one duck: " + iL.name))
2167- else if (jG(ky))
2174+ let kF = toBase58String(bk)
2175+ let iT = bm(kF)
2176+ if (isDefined(getInteger(iT)))
2177+ then throw((("NFT " + iS.name) + " is already staked"))
2178+ else if (isDefined(getString(bC(ct))))
2179+ then throw(("You already staked one duck: " + iS.name))
2180+ else if (jN(kF))
21682181 then throw("stakeDuck_checkTournament")
21692182 else {
2170- let kz = bx(ky)
2171- let kA = getString(kz)
2172- let gV = bw(ky)
2173- let kB = getString(gV)
2174- let il = w(ky)
2175- let im = aa(valueOrElse(getInteger(A(ky)), 0))
2176- let kC = valueOrElse(getInteger(il), im)
2177- ([IntegerEntry(iM, lastBlock.timestamp), IntegerEntry(bi(au, toBase58String(bd), cm), lastBlock.timestamp), StringEntry(bu(ky), cm), StringEntry(bv(cm), ky)] ++ (if (isDefined(kA))
2183+ let kG = bE(kF)
2184+ let kH = getString(kG)
2185+ let hc = bD(kF)
2186+ let kI = getString(hc)
2187+ let is = y(kF)
2188+ let it = ae(valueOrElse(getInteger(C(kF)), 0))
2189+ let kJ = valueOrElse(getInteger(is), it)
2190+ ([IntegerEntry(iT, lastBlock.timestamp), IntegerEntry(bp(aB, toBase58String(bk), ct), lastBlock.timestamp), StringEntry(bB(kF), ct), StringEntry(bC(ct), kF)] ++ (if (isDefined(kH))
21782191 then nil
2179- else ([StringEntry(kz, aB)] ++ (if (isDefined(kB))
2192+ else ([StringEntry(kG, aI)] ++ (if (isDefined(kI))
21802193 then nil
2181- else (([StringEntry(gV, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(il, kC)) :+ ko)))))
2194+ else (([StringEntry(hc, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(is, kJ)) :+ kv)))))
21822195 }
21832196 }
21842197 }
21852198 }
21862199 }
21872200
21882201
21892202
2190-@Callable(fS)
2191-func unstakeDuck (ky) = {
2192- let ko = kl(fS)
2193- if ((size(fS.payments) != 0))
2203+@Callable(fZ)
2204+func unstakeDuck (kF) = {
2205+ let kv = ks(fZ)
2206+ if ((size(fZ.payments) != 0))
21942207 then throw("No payments required")
21952208 else {
2196- let bd = fromBase58String(ky)
2197- let cm = toString(fS.caller)
2198- let iL = value(assetInfo(bd))
2199- let iM = bf(ky)
2200- if (!(isDefined(getInteger(iM))))
2201- then throw((("NFT " + iL.name) + " is not staked"))
2202- else if (!(isDefined(getString(bv(cm)))))
2203- then throw((("The duck " + iL.name) + " is not staked"))
2209+ let bk = fromBase58String(kF)
2210+ let ct = toString(fZ.caller)
2211+ let iS = value(assetInfo(bk))
2212+ let iT = bm(kF)
2213+ if (!(isDefined(getInteger(iT))))
2214+ then throw((("NFT " + iS.name) + " is not staked"))
2215+ else if (!(isDefined(getString(bC(ct)))))
2216+ then throw((("The duck " + iS.name) + " is not staked"))
22042217 else {
2205- let iO = valueOrErrorMessage(getString(bu(ky)), (("NFT " + iL.name) + " is orphaned"))
2206- if ((iO != cm))
2218+ let iV = valueOrErrorMessage(getString(bB(kF)), (("NFT " + iS.name) + " is orphaned"))
2219+ if ((iV != ct))
22072220 then throw("Staked NFT is not yours")
2208- else if (jG(ky))
2221+ else if (jN(kF))
22092222 then throw("unstakeDuck_checkTournament")
22102223 else {
2211- let il = w(ky)
2212- let im = aa(valueOrElse(getInteger(A(ky)), 0))
2213- let am = valueOrElse(getInteger(il), im)
2214- if ((im > am))
2215- then throw((("Please heal your duck to " + toString(im)) + "hp before unstaking"))
2216- else [ScriptTransfer(fS.caller, 1, bd), DeleteEntry(iM), DeleteEntry(il), DeleteEntry(bx(ky)), DeleteEntry(bu(ky)), DeleteEntry(bi(au, ky, cm)), DeleteEntry(bv(cm)), ko]
2224+ let is = y(kF)
2225+ let it = ae(valueOrElse(getInteger(C(kF)), 0))
2226+ let aq = valueOrElse(getInteger(is), it)
2227+ if ((it > aq))
2228+ then throw((("Please heal your duck to " + toString(it)) + "hp before unstaking"))
2229+ else [ScriptTransfer(fZ.caller, 1, bk), DeleteEntry(iT), DeleteEntry(is), DeleteEntry(bE(kF)), DeleteEntry(bB(kF)), DeleteEntry(bp(aB, kF, ct)), DeleteEntry(bC(ct)), kv]
22172230 }
22182231 }
22192232 }
22202233 }
22212234
22222235
22232236
2224-@Callable(fS)
2225-func claimRes (dQ,kD) = {
2226- let ko = kl(fS)
2227- if ((size(fS.payments) != 0))
2237+@Callable(fZ)
2238+func claimRes (dX,kK) = {
2239+ let kv = ks(fZ)
2240+ if ((size(fZ.payments) != 0))
22282241 then throw("No payments required")
22292242 else {
2230- let b = toString(fS.originCaller)
2231- let er = iQ(b, dQ, dI, kD)
2232- let x = valueOrErrorMessage(getString(bv(b)), "You don't have a duck staked")
2233- $Tuple2(((((er._1 ++ jq(x, fraction(O, dQ, ce))._1) :+ StringEntry(er._2, makeString(er._3, ":"))) :+ StringEntry(er._4, makeString(er._5, ":"))) :+ ko), er._3[aY])
2234- }
2235- }
2236-
2237-
2238-
2239-@Callable(fS)
2240-func claimResToWH (dQ,kD) = {
2241- let ko = kl(fS)
2242- if ((size(fS.payments) != 0))
2243+ let b = toString(fZ.originCaller)
2244+ let ey = iX(b, dX, dP, kK)
2245+ let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
2246+ $Tuple2(((((ey._1 ++ jx(z, fraction(S, dX, cl))._1) :+ StringEntry(ey._2, makeString(ey._3, ":"))) :+ StringEntry(ey._4, makeString(ey._5, ":"))) :+ kv), ey._3[bf])
2247+ }
2248+ }
2249+
2250+
2251+
2252+@Callable(fZ)
2253+func claimResToWH (dX,kK) = {
2254+ let kv = ks(fZ)
2255+ if ((size(fZ.payments) != 0))
22432256 then throw("No payments required")
22442257 else {
2245- let b = toString(fS.originCaller)
2246- let er = iQ(b, dQ, dH, kD)
2247- $Tuple2(((((er._1 ++ jw(b, fraction(O, dQ, ce))._1) :+ StringEntry(er._2, makeString(er._3, ":"))) :+ StringEntry(er._4, makeString(er._5, ":"))) :+ ko), er._5[aP])
2248- }
2249- }
2250-
2251-
2252-
2253-@Callable(fS)
2254-func flight (ia,ib) = {
2255- let ko = kl(fS)
2256- if ((size(fS.payments) != 0))
2258+ let b = toString(fZ.originCaller)
2259+ let ey = iX(b, dX, dO, kK)
2260+ $Tuple2(((((ey._1 ++ jD(b, fraction(S, dX, cl))._1) :+ StringEntry(ey._2, makeString(ey._3, ":"))) :+ StringEntry(ey._4, makeString(ey._5, ":"))) :+ kv), ey._5[aW])
2261+ }
2262+ }
2263+
2264+
2265+
2266+@Callable(fZ)
2267+func flight (ih,ii) = {
2268+ let kv = ks(fZ)
2269+ if ((size(fZ.payments) != 0))
22572270 then throw("No payments required")
22582271 else {
2259- let bA = toString(fS.caller)
2260- let gx = hZ(bA, ia, ib)
2261- let x = gx._2
2262- let ih = gx._4
2263- let kE = split(ih, "_")
2264- let kF = (kE[bQ] == "T")
2265- if (if (!(kF))
2266- then jG(x)
2272+ let bH = toString(fZ.caller)
2273+ let gE = ig(bH, ih, ii)
2274+ let z = gE._2
2275+ let io = gE._4
2276+ let kL = split(io, "_")
2277+ let kM = (kL[bX] == "T")
2278+ if (if (!(kM))
2279+ then jN(z)
22672280 else false)
22682281 then throw("flight_checkTournament")
22692282 else {
2270- let kG = if (kF)
2283+ let kN = if (kM)
22712284 then {
2272- let jH = valueOrElse(getInteger(cE, bC), 0)
2273- let ar = lastBlock.timestamp
2274- let jI = bI(cE, jH)
2275- let bK = jI[bG]
2276- let bL = jI[bH]
2277- if (if (if ((parseIntValue(kE[bP]) != jH))
2285+ let jO = valueOrElse(getInteger(cL, bJ), 0)
2286+ let av = lastBlock.timestamp
2287+ let jP = bP(cL, jO)
2288+ let bR = jP[bN]
2289+ let bS = jP[bO]
2290+ if (if (if ((parseIntValue(kL[bW]) != jO))
22782291 then true
2279- else (bL[bN] != "INPROGRESS"))
2292+ else (bS[bU] != "INPROGRESS"))
22802293 then true
2281- else (ar > parseIntValue(bK[bM])))
2294+ else (av > parseIntValue(bR[bT])))
22822295 then unit
22832296 else {
2284- let kH = parseIntValue(kE[bR])
2285- let kI = parseIntValue(bL[bO])
2286- if ((kI >= kH))
2297+ let kO = parseIntValue(kL[bY])
2298+ let kP = parseIntValue(bS[bV])
2299+ if ((kP >= kO))
22872300 then unit
2288- else invoke(cE, "updateDynamicData", [x, kH], nil)
2301+ else invoke(cL, "updateDynamicData", [z, kO], nil)
22892302 }
22902303 }
22912304 else unit
2292- if ((kG == kG))
2305+ if ((kN == kN))
22932306 then {
2294- let kz = bx(x)
2295- let iI = valueOrElse(getString(kz), aB)
2296- if ((ih == iI))
2307+ let kG = bE(z)
2308+ let iP = valueOrElse(getString(kG), aI)
2309+ if ((io == iP))
22972310 then throw("You can't fly to the same location")
22982311 else {
2299- let fF = C(x)
2300- let iu = valueOrElse(getString(fF), ",;,_,;,_,;,_,;,_,;,_,;,")
2301- let kJ = es(iu, gx._5)
2302- let iw = kJ._1
2303- let ix = kJ._2
2304- $Tuple2(([StringEntry(kz, if ((gx._1 > 0))
2305- then ih
2306- else iI), StringEntry(fF, iw), IntegerEntry(w(x), gx._1), ko] ++ (if (ix)
2307- then [StringEntry(I(x), "0_0_0_0_0")]
2308- else (nil ++ jq(x, if ((gx._1 > 0))
2309- then P
2310- else Q)._1))), gx._3)
2312+ let fM = E(z)
2313+ let iB = valueOrElse(getString(fM), ",;,_,;,_,;,_,;,_,;,_,;,")
2314+ let kQ = ez(iB, gE._5)
2315+ let iD = kQ._1
2316+ let iE = kQ._2
2317+ $Tuple2(([StringEntry(kG, if ((gE._1 > 0))
2318+ then io
2319+ else iP), StringEntry(fM, iD), IntegerEntry(y(z), gE._1), kv] ++ (if (iE)
2320+ then [StringEntry(K(z), "0_0_0_0_0")]
2321+ else (nil ++ jx(z, if ((gE._1 > 0))
2322+ then T
2323+ else U)._1))), gE._3)
23112324 }
23122325 }
23132326 else throw("Strict value is not equal to itself.")
23142327 }
23152328 }
23162329 }
23172330
23182331
23192332
2320-@Callable(fS)
2321-func heal (kK,kL,kM) = {
2322- let ko = kl(fS)
2323- if (if (if ((0 > kK))
2333+@Callable(fZ)
2334+func heal (kR,kS,kT) = {
2335+ let kv = ks(fZ)
2336+ if (if (if ((0 > kR))
23242337 then true
2325- else (0 > kL))
2338+ else (0 > kS))
23262339 then true
2327- else (0 > kM))
2340+ else (0 > kT))
23282341 then throw("Quantity cannot be negative")
23292342 else {
2330- let x = valueOrErrorMessage(getString(bv(toString(fS.caller))), "You don't have a duck staked")
2331- if (jG(x))
2343+ let z = valueOrErrorMessage(getString(bC(toString(fZ.caller))), "You don't have a duck staked")
2344+ if (jN(z))
23322345 then throw("heal_checkTournament")
23332346 else {
2334- let kN = [kK, kL, kM]
2335- let il = w(x)
2336- let im = aa(valueOrElse(getInteger(A(x)), 0))
2337- let kO = valueOrElse(getInteger(il), im)
2338- if ((kO >= im))
2339- then throw((("HP should be < " + toString(im)) + " to heal"))
2347+ let kU = [kR, kS, kT]
2348+ let is = y(z)
2349+ let it = ae(valueOrElse(getInteger(C(z)), 0))
2350+ let kV = valueOrElse(getInteger(is), it)
2351+ if ((kV >= it))
2352+ then throw((("HP should be < " + toString(it)) + " to heal"))
23402353 else {
2341- let gV = bw(x)
2342- let hy = gU(gV)
2343- let kP = if ((hy[ba] == ""))
2354+ let hc = bD(z)
2355+ let hF = hb(hc)
2356+ let kW = if ((hF[bh] == ""))
23442357 then nil
2345- else split_4C(hy[ba], "_")
2346- func kQ (dZ,bT) = {
2347- let cW = dZ._2
2348- let go = if ((size(kP) > cW))
2349- then parseIntValue(kP[cW])
2358+ else split_4C(hF[bh], "_")
2359+ func kX (eg,ca) = {
2360+ let dd = eg._2
2361+ let gv = if ((size(kW) > dd))
2362+ then parseIntValue(kW[dd])
23502363 else 0
2351- if ((3 > cW))
2364+ if ((3 > dd))
23522365 then {
2353- let kR = kN[cW]
2354- if ((kR > go))
2355- then throw(((("You have only " + toString(go)) + " of ") + aE[cW]))
2356- else $Tuple3((dZ._1 :+ toString((go - kR))), (cW + 1), (dZ._3 + (parseIntValue(split(bT, "_")[aK]) * kR)))
2366+ let kY = kU[dd]
2367+ if ((kY > gv))
2368+ then throw(((("You have only " + toString(gv)) + " of ") + aL[dd]))
2369+ else $Tuple3((eg._1 :+ toString((gv - kY))), (dd + 1), (eg._3 + (parseIntValue(split(ca, "_")[aR]) * kY)))
23572370 }
2358- else $Tuple3((dZ._1 :+ toString(go)), (cW + 1), dZ._3)
2371+ else $Tuple3((eg._1 :+ toString(gv)), (dd + 1), eg._3)
23592372 }
23602373
2361- let er = {
2362- let eb = aI
2363- let ec = size(eb)
2364- let ed = $Tuple3(nil, 0, 0)
2365- func ee (ef,eg) = if ((eg >= ec))
2366- then ef
2367- else kQ(ef, eb[eg])
2368-
2369- func eh (ef,eg) = if ((eg >= ec))
2370- then ef
2374+ let ey = {
2375+ let ei = aP
2376+ let ej = size(ei)
2377+ let ek = $Tuple3(nil, 0, 0)
2378+ func el (em,en) = if ((en >= ej))
2379+ then em
2380+ else kX(em, ei[en])
2381+
2382+ func eo (em,en) = if ((en >= ej))
2383+ then em
23712384 else throw("List size exceeds 50")
23722385
2373- eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 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)
2386+ eo(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(ek, 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)
23742387 }
2375- let kS = min([im, (kO + er._3)])
2376- $Tuple2(([IntegerEntry(il, kS), StringEntry(gV, makeString_2C([hy[aX], hy[aY], hy[aZ], makeString(er._1, "_")], ":")), ko] ++ jq(x, (X * ((kK + kL) + kM)))._1), kS)
2388+ let kZ = min([it, (kV + ey._3)])
2389+ $Tuple2(([IntegerEntry(is, kZ), StringEntry(hc, makeString_2C([hF[be], hF[bf], hF[bg], makeString(ey._1, "_")], ":")), kv] ++ jx(z, (ab * ((kR + kS) + kT)))._1), kZ)
23772390 }
23782391 }
23792392 }
23802393 }
23812394
23822395
23832396
2384-@Callable(fS)
2397+@Callable(fZ)
23852398 func healES () = {
2386- let ko = kl(fS)
2387- if ((size(fS.payments) != 1))
2399+ let kv = ks(fZ)
2400+ if ((size(fZ.payments) != 1))
23882401 then throw("Exactly one payment required")
23892402 else {
2390- let kp = value(fS.payments[0])
2391- if ((kp.assetId != bX))
2403+ let kw = value(fZ.payments[0])
2404+ if ((kw.assetId != ce))
23922405 then throw("Allowed USDT payment only!")
23932406 else {
2394- let x = valueOrErrorMessage(getString(bv(toString(fS.caller))), "You don't have a duck staked")
2395- if (jG(x))
2407+ let z = valueOrErrorMessage(getString(bC(toString(fZ.caller))), "You don't have a duck staked")
2408+ if (jN(z))
23962409 then throw("healES_checkTournament")
23972410 else {
2398- let il = w(x)
2399- let im = aa(valueOrElse(getInteger(A(x)), 0))
2400- let kO = valueOrElse(getInteger(il), im)
2401- if ((kO > 0))
2411+ let is = y(z)
2412+ let it = ae(valueOrElse(getInteger(C(z)), 0))
2413+ let kV = valueOrElse(getInteger(is), it)
2414+ if ((kV > 0))
24022415 then throw("HP should be 0 to call Emergency Service")
24032416 else {
2404- let gV = bw(x)
2405- let hy = gU(gV)
2406- let kP = if ((hy[ba] == ""))
2417+ let hc = bD(z)
2418+ let hF = hb(hc)
2419+ let kW = if ((hF[bh] == ""))
24072420 then nil
2408- else split_4C(hy[ba], "_")
2409- let kT = if ((size(kP) > 0))
2410- then parseIntValue(kP[0])
2421+ else split_4C(hF[bh], "_")
2422+ let la = if ((size(kW) > 0))
2423+ then parseIntValue(kW[0])
24112424 else 0
2412- let kU = if ((size(kP) > 1))
2413- then parseIntValue(kP[1])
2425+ let lb = if ((size(kW) > 1))
2426+ then parseIntValue(kW[1])
24142427 else 0
2415- let kV = if ((size(kP) > 2))
2416- then parseIntValue(kP[2])
2428+ let lc = if ((size(kW) > 2))
2429+ then parseIntValue(kW[2])
24172430 else 0
2418- if (if (if ((kT > 0))
2431+ if (if (if ((la > 0))
24192432 then true
2420- else (kU > 0))
2433+ else (lb > 0))
24212434 then true
2422- else (kV > 0))
2435+ else (lc > 0))
24232436 then throw("You have to use own Medical Kit")
24242437 else {
2425- let kW = getString(cB, bB())
2426- let kX = if (isDefined(kW))
2427- then split_4C(value(kW), "_")
2438+ let ld = getString(cI, bI())
2439+ let le = if (isDefined(ld))
2440+ then split_4C(value(ld), "_")
24282441 else nil
2429- let kY = if ((size(kX) > 0))
2430- then parseIntValue(kX[0])
2442+ let lf = if ((size(le) > 0))
2443+ then parseIntValue(le[0])
24312444 else 0
2432- if ((0 >= kY))
2445+ if ((0 >= lf))
24332446 then throw("There are no Medical Kits L1 at Emergency Service storage")
24342447 else {
2435- let kS = (kO + parseIntValue(split(aI[0], "_")[aK]))
2436- let kZ = makeString([toString((kY - 1)), removeByIndex(kX, 0)], "_")
2437- let bT = split(aI[0], "_")
2438- let la = bS(bT)
2439- let lb = fraction((la * aD), aC, (ce * aN))
2440- if ((kp.amount != lb))
2441- then throw(("Payment attached should be " + toString(lb)))
2448+ let kZ = (kV + parseIntValue(split(aP[0], "_")[aR]))
2449+ let lg = makeString([toString((lf - 1)), removeByIndex(le, 0)], "_")
2450+ let ca = split(aP[0], "_")
2451+ let lh = bZ(ca)
2452+ let li = fraction((lh * aK), aJ, (cl * aU))
2453+ if ((kw.amount != li))
2454+ then throw(("Payment attached should be " + toString(li)))
24422455 else {
2443- let er = cS(invoke(cB, "updateEsStorage", [kZ], [AttachedPayment(bX, lb)]))
2444- $Tuple2(([IntegerEntry(il, kS), ko] ++ jq(x, R)._1), er)
2456+ let ey = cZ(invoke(cI, "updateEsStorage", [lg], [AttachedPayment(ce, li)]))
2457+ $Tuple2(([IntegerEntry(is, kZ), kv] ++ jx(z, V)._1), ey)
24452458 }
24462459 }
24472460 }
24482461 }
24492462 }
24502463 }
24512464 }
24522465 }
24532466
24542467
24552468
2456-@Callable(fS)
2457-func updateBackpack (x,lc) = if ((fS.caller != cB))
2469+@Callable(fZ)
2470+func updateBackpack (z,lj) = if ((fZ.caller != cI))
24582471 then throw("permission denied")
2459- else $Tuple2([StringEntry(bw(x), lc)], lc)
2460-
2461-
2462-
2463-@Callable(fS)
2472+ else $Tuple2([StringEntry(bD(z), lj)], lj)
2473+
2474+
2475+
2476+@Callable(fZ)
24642477 func commitForRandom () = {
2465- let ko = kl(fS)
2466- let ld = (height + cL)
2467- let b = toString(fS.caller)
2468- $Tuple2(([IntegerEntry(cM(b), ld)] :+ ko), ld)
2469- }
2470-
2471-
2472-
2473-@Callable(fS)
2478+ let kv = ks(fZ)
2479+ let lk = (height + cS)
2480+ let b = toString(fZ.caller)
2481+ $Tuple2(([IntegerEntry(cT(b), lk)] :+ kv), lk)
2482+ }
2483+
2484+
2485+
2486+@Callable(fZ)
24742487 func buySLand () = {
2475- let ko = kl(fS)
2476- if ((size(fS.payments) != 1))
2488+ let kv = ks(fZ)
2489+ if ((size(fZ.payments) != 1))
24772490 then throw("Exactly one payment required")
24782491 else {
2479- let kp = value(fS.payments[0])
2480- if ((kp.assetId != bX))
2492+ let kw = value(fZ.payments[0])
2493+ if ((kw.assetId != ce))
24812494 then throw("Allowed USDT payment only!")
2482- else if ((kp.amount != dp))
2483- then throw(("Payment attached should be " + toString(dp)))
2495+ else if ((kw.amount != dw))
2496+ then throw(("Payment attached should be " + toString(dw)))
24842497 else {
2485- let er = hS(fS.caller, fS.transactionId)
2486- $Tuple2((((er._1 :+ ScriptTransfer(cB, kp.amount, bX)) ++ jw(toString(fS.caller), T)._1) :+ ko), er._2._1)
2498+ let ey = hZ(fZ.caller, fZ.transactionId)
2499+ $Tuple2((((ey._1 :+ ScriptTransfer(cI, kw.amount, ce)) ++ jD(toString(fZ.caller), X)._1) :+ kv), ey._2._1)
24872500 }
24882501 }
24892502 }
24902503
24912504
24922505
2493-@Callable(fS)
2494-func expedition (ia,ib) = {
2495- let ko = kl(fS)
2496- if ((size(fS.payments) != 0))
2506+@Callable(fZ)
2507+func expedition (ih,ii) = {
2508+ let kv = ks(fZ)
2509+ if ((size(fZ.payments) != 0))
24972510 then throw("No payments required")
24982511 else {
2499- let er = ir(fS.caller, fS.transactionId, ia, ib)
2500- let x = valueOrErrorMessage(getString(bv(toString(fS.caller))), "You don't have a duck staked")
2501- if (jG(x))
2512+ let ey = iy(fZ.caller, fZ.transactionId, ih, ii)
2513+ let z = valueOrErrorMessage(getString(bC(toString(fZ.caller))), "You don't have a duck staked")
2514+ if (jN(z))
25022515 then throw("expedition_checkTournament")
2503- else $Tuple2(((er._1 ++ jq(x, T)._1) :+ ko), $Tuple2(er._2, er._3))
2504- }
2505- }
2506-
2507-
2508-
2509-@Callable(fS)
2510-func upgradeInfra (M) = {
2511- let ko = kl(fS)
2512- if ((size(fS.payments) != 0))
2516+ else $Tuple2(((ey._1 ++ jx(z, X)._1) :+ kv), $Tuple2(ey._2, ey._3))
2517+ }
2518+ }
2519+
2520+
2521+
2522+@Callable(fZ)
2523+func upgradeInfra (O) = {
2524+ let kv = ks(fZ)
2525+ if ((size(fZ.payments) != 0))
25132526 then throw("No payments required")
25142527 else {
2515- let er = jd(true, fS.caller, 0, M)
2516- let x = valueOrErrorMessage(getString(bv(toString(fS.caller))), "You don't have a duck staked")
2517- $Tuple2(((er._1 :+ ko) ++ jq(x, fraction(U, er._3, ce))._1), er._2)
2518- }
2519- }
2520-
2521-
2522-
2523-@Callable(fS)
2524-func activateArtifact (le,lf) = {
2525- let ko = kl(fS)
2526- if ((size(fS.payments) != 0))
2528+ let ey = jk(true, fZ.caller, 0, O)
2529+ let z = valueOrErrorMessage(getString(bC(toString(fZ.caller))), "You don't have a duck staked")
2530+ $Tuple2(((ey._1 :+ kv) ++ jx(z, fraction(Y, ey._3, cl))._1), ey._2)
2531+ }
2532+ }
2533+
2534+
2535+
2536+@Callable(fZ)
2537+func activateArtifact (ll,lm) = {
2538+ let kv = ks(fZ)
2539+ if ((size(fZ.payments) != 0))
25272540 then throw("No payments required")
25282541 else {
2529- let b = toString(fS.caller)
2530- let er = {
2531- let bY = le
2532- if (("PRESALE" == bY))
2533- then jE(b, lf)
2534- else if (("ONBOARD" == bY))
2535- then jx(b)
2542+ let b = toString(fZ.caller)
2543+ let ey = {
2544+ let cf = ll
2545+ if (("PRESALE" == cf))
2546+ then jL(b, lm)
2547+ else if (("ONBOARD" == cf))
2548+ then jE(b)
25362549 else throw("Unknown artifact")
25372550 }
2538- (er :+ ko)
2539- }
2540- }
2541-
2542-
2543-
2544-@Callable(fS)
2545-func mergeLands (jM) = {
2546- let ko = kl(fS)
2547- if ((size(fS.payments) != 0))
2551+ (ey :+ kv)
2552+ }
2553+ }
2554+
2555+
2556+
2557+@Callable(fZ)
2558+func mergeLands (jT) = {
2559+ let kv = ks(fZ)
2560+ if ((size(fZ.payments) != 0))
25482561 then throw("No payments required")
25492562 else {
2550- let er = kk(toString(fS.caller), jM)
2551- $Tuple2(((er._1 :+ ko) ++ jw(toString(fS.caller), V)._1), er._2)
2552- }
2553- }
2554-
2555-
2556-
2557-@Callable(fS)
2558-func cargoExchange (lg,M) = {
2559- let ko = kl(fS)
2560- if ((size(fS.payments) != 0))
2563+ let ey = kr(toString(fZ.caller), jT)
2564+ $Tuple2(((ey._1 :+ kv) ++ jD(toString(fZ.caller), Z)._1), ey._2)
2565+ }
2566+ }
2567+
2568+
2569+
2570+@Callable(fZ)
2571+func cargoExchange (ln,O) = {
2572+ let kv = ks(fZ)
2573+ if ((size(fZ.payments) != 0))
25612574 then throw("No payments required")
25622575 else {
2563- let hx = split_4C(lg, ":")
2564- let b = toString(fS.originCaller)
2565- let iL = value(assetInfo(fromBase58String(M)))
2566- let iM = bf(M)
2567- if (!(isDefined(getInteger(iM))))
2568- then throw((iL.name + " is not staked"))
2576+ let hE = split_4C(ln, ":")
2577+ let b = toString(fZ.originCaller)
2578+ let iS = value(assetInfo(fromBase58String(O)))
2579+ let iT = bm(O)
2580+ if (!(isDefined(getInteger(iT))))
2581+ then throw((iS.name + " is not staked"))
25692582 else {
2570- let iO = valueOrErrorMessage(getString(bc(M)), (("NFT " + iL.name) + " is orphaned"))
2571- if ((iO != b))
2572- then throw((at + " is not yours"))
2583+ let iV = valueOrErrorMessage(getString(bj(O)), (("NFT " + iS.name) + " is orphaned"))
2584+ if ((iV != b))
2585+ then throw((aA + " is not yours"))
25732586 else {
2574- let hj = (cX(split(iL.description, "_")[cG]) / cf)
2575- let hk = valueOrElse(getInteger(bm(M)), 0)
2576- let x = valueOrErrorMessage(getString(bv(b)), "You don't have a duck staked")
2577- let iI = valueOrElse(getString(bx(x)), aB)
2578- let iJ = split(value(iI), "_")
2579- if ((iJ[bQ] != "L"))
2580- then throw((("Duck location type is " + iJ[bQ]) + ", but should be L"))
2581- else if ((iJ[bR] != M))
2582- then throw(("Duck should be on the land " + M))
2587+ let hq = (de(split(iS.description, "_")[cN]) / cm)
2588+ let hr = valueOrElse(getInteger(bt(O)), 0)
2589+ let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
2590+ let iP = valueOrElse(getString(bE(z)), aI)
2591+ let iQ = split(value(iP), "_")
2592+ if ((iQ[bX] != "L"))
2593+ then throw((("Duck location type is " + iQ[bX]) + ", but should be L"))
2594+ else if ((iQ[bY] != O))
2595+ then throw(("Duck should be on the land " + O))
25832596 else {
2584- let hi = bl(M)
2585- let gZ = hh(hi, hj, hk)
2586- let gV = bw(x)
2587- let hy = gU(gV)
2588- let er = hw(hx, gZ, hy)
2589- let hq = split(gZ[aS], "_")
2590- let ja = (parseIntValue(hq[aU]) + er._7)
2591- let jb = (parseIntValue(hq[aV]) - er._7)
2592-[StringEntry(gV, makeString_2C([hy[aX], er._4, er._5, er._6], ":")), StringEntry(hi, makeString_2C([gZ[aO], er._1, er._2, er._3, makeString([hq[aT], toString(ja), toString(jb), hq[aW]], "_")], ":")), ko]
2597+ let hp = bs(O)
2598+ let hg = ho(hp, hq, hr)
2599+ let hc = bD(z)
2600+ let hF = hb(hc)
2601+ let ey = hD(hE, hg, hF)
2602+ let hx = split(hg[aZ], "_")
2603+ let jh = (parseIntValue(hx[bb]) + ey._7)
2604+ let ji = (parseIntValue(hx[bc]) - ey._7)
2605+[StringEntry(hc, makeString_2C([hF[be], ey._4, ey._5, ey._6], ":")), StringEntry(hp, makeString_2C([hg[aV], ey._1, ey._2, ey._3, makeString([hx[ba], toString(jh), toString(ji), hx[bd]], "_")], ":")), kv]
25932606 }
25942607 }
25952608 }
25962609 }
25972610 }
25982611
25992612
26002613
2601-@Callable(fS)
2602-func saveWarehouse (hm,M) = if ((fS.caller != cB))
2614+@Callable(fZ)
2615+func saveWarehouse (ht,O) = if ((fZ.caller != cI))
26032616 then throw("Access denied")
26042617 else {
2605- let hi = bl(M)
2606- let hn = split_4C(hm, ":")
2607- if ((size(hn) != 5))
2618+ let hp = bs(O)
2619+ let hu = split_4C(ht, ":")
2620+ if ((size(hu) != 5))
26082621 then throw("warehouse string should contain 4 ':' separators")
26092622 else {
2610- let lh = split(hn[aS], "_")[aT]
2611- let ja = gY(hn)
2612- let li = gW(hn[aO])
2613- let jb = ((li - parseIntValue(lh)) - ja)
2614- let lj = makeString_2C([hn[aO], hn[aP], hn[aQ], hn[aR], makeString([lh, toString(ja), toString(jb), toString(li)], "_")], ":")
2615- $Tuple2([StringEntry(hi, lj)], lj)
2623+ let lo = split(hu[aZ], "_")[ba]
2624+ let jh = hf(hu)
2625+ let lp = hd(hu[aV])
2626+ let ji = ((lp - parseIntValue(lo)) - jh)
2627+ let lq = makeString_2C([hu[aV], hu[aW], hu[aX], hu[aY], makeString([lo, toString(jh), toString(ji), toString(lp)], "_")], ":")
2628+ $Tuple2([StringEntry(hp, lq)], lq)
26162629 }
26172630 }
26182631
26192632
26202633
2621-@Callable(fS)
2622-func fixWarehouseFormat (M) = if ((fS.caller != cA))
2634+@Callable(fZ)
2635+func fixWarehouseFormat (O) = if ((fZ.caller != cH))
26232636 then throw("Access denied")
26242637 else {
2625- let hi = bl(M)
2626- let iL = value(assetInfo(fromBase58String(M)))
2627- let hj = (cX(split(iL.description, "_")[cG]) / cf)
2628- let hk = valueOrElse(getInteger(bm(M)), 0)
2629- let hn = hh(hi, hj, hk)
2630- let lh = cV(invoke(cB, "recalcLockedVolumeREADONLY", [M, hn], nil))
2631- let ja = gY(hn)
2632- let li = gW(hn[aO])
2633- let jb = ((li - lh) - ja)
2634- let lj = makeString_2C([hn[aO], hn[aP], hn[aQ], hn[aR], makeString([toString(lh), toString(ja), toString(jb), toString(li)], "_")], ":")
2635- $Tuple2([StringEntry(hi, lj)], lj)
2638+ let hp = bs(O)
2639+ let iS = value(assetInfo(fromBase58String(O)))
2640+ let hq = (de(split(iS.description, "_")[cN]) / cm)
2641+ let hr = valueOrElse(getInteger(bt(O)), 0)
2642+ let hu = ho(hp, hq, hr)
2643+ let lo = dc(invoke(cI, "recalcLockedVolumeREADONLY", [O, hu], nil))
2644+ let jh = hf(hu)
2645+ let lp = hd(hu[aV])
2646+ let ji = ((lp - lo) - jh)
2647+ let lq = makeString_2C([hu[aV], hu[aW], hu[aX], hu[aY], makeString([toString(lo), toString(jh), toString(ji), toString(lp)], "_")], ":")
2648+ $Tuple2([StringEntry(hp, lq)], lq)
26362649 }
26372650
26382651
26392652
2640-@Callable(fS)
2641-func fixContinentProportions (jM) = if ((fS.caller != cA))
2653+@Callable(fZ)
2654+func fixContinentProportions (jT) = if ((fZ.caller != cH))
26422655 then throw("Access denied")
26432656 else {
2644- func lk (dZ,ll) = (dZ :+ valueOrElse(getString(cO(ll)), "0_0_0_0_0_0"))
2645-
2646- let fC = {
2647- let eb = aF
2648- let ec = size(eb)
2649- let ed = nil
2650- func ee (ef,eg) = if ((eg >= ec))
2651- then ef
2652- else lk(ef, eb[eg])
2653-
2654- func eh (ef,eg) = if ((eg >= ec))
2655- then ef
2657+ func lr (eg,ls) = (eg :+ valueOrElse(getString(cV(ls)), "0_0_0_0_0_0"))
2658+
2659+ let fJ = {
2660+ let ei = aM
2661+ let ej = size(ei)
2662+ let ek = nil
2663+ func el (em,en) = if ((en >= ej))
2664+ then em
2665+ else lr(em, ei[en])
2666+
2667+ func eo (em,en) = if ((en >= ej))
2668+ then em
26562669 else throw("List size exceeds 5")
26572670
2658- eh(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5)
2659- }
2660- func lm (dZ,M) = {
2661- let iL = value(assetInfo(fromBase58String(M)))
2662- let iP = split(iL.description, "_")
2663- let hj = (cX(iP[cG]) / cf)
2664- let ll = iP[cI]
2665- let fO = fU(iP[cH])
2666- let gw = value(indexOf(aF, ll))
2667- let kb = split(dZ[gw], "_")
2668- let ln = makeString(fM(kb, fO, hj, 1), "_")
2669- let bY = ll
2670- if (("Americas" == bY))
2671- then [ln, dZ[1], dZ[2], dZ[3], dZ[4]]
2672- else if (("Europe" == bY))
2673- then [dZ[0], ln, dZ[2], dZ[3], dZ[4]]
2674- else if (("Asia" == bY))
2675- then [dZ[0], dZ[1], ln, dZ[3], dZ[4]]
2676- else if (("Africa" == bY))
2677- then [dZ[0], dZ[1], dZ[2], ln, dZ[4]]
2678- else if (("Oceania" == bY))
2679- then [dZ[0], dZ[1], dZ[2], dZ[3], ln]
2671+ eo(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5)
2672+ }
2673+ func lt (eg,O) = {
2674+ let iS = value(assetInfo(fromBase58String(O)))
2675+ let iW = split(iS.description, "_")
2676+ let hq = (de(iW[cN]) / cm)
2677+ let ls = iW[cP]
2678+ let fV = gb(iW[cO])
2679+ let gD = value(indexOf(aM, ls))
2680+ let ki = split(eg[gD], "_")
2681+ let lu = makeString(fT(ki, fV, hq, 1), "_")
2682+ let cf = ls
2683+ if (("Americas" == cf))
2684+ then [lu, eg[1], eg[2], eg[3], eg[4]]
2685+ else if (("Europe" == cf))
2686+ then [eg[0], lu, eg[2], eg[3], eg[4]]
2687+ else if (("Asia" == cf))
2688+ then [eg[0], eg[1], lu, eg[3], eg[4]]
2689+ else if (("Africa" == cf))
2690+ then [eg[0], eg[1], eg[2], lu, eg[4]]
2691+ else if (("Oceania" == cf))
2692+ then [eg[0], eg[1], eg[2], eg[3], lu]
26802693 else throw("wrong continent")
26812694 }
26822695
2683- let ek = {
2684- let eb = jM
2685- let ec = size(eb)
2686- let ed = fC
2687- func gP (ef,eg) = if ((eg >= ec))
2688- then ef
2689- else lm(ef, eb[eg])
2690-
2691- func gQ (ef,eg) = if ((eg >= ec))
2692- then ef
2696+ let er = {
2697+ let ei = jT
2698+ let ej = size(ei)
2699+ let ek = fJ
2700+ func gW (em,en) = if ((en >= ej))
2701+ then em
2702+ else lt(em, ei[en])
2703+
2704+ func gX (em,en) = if ((en >= ej))
2705+ then em
26932706 else throw("List size exceeds 100")
26942707
2695- gQ(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(gP(ed, 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)
2696- }
2697- $Tuple2([StringEntry(cO("Americas"), ek[0]), StringEntry(cO("Europe"), ek[1]), StringEntry(cO("Asia"), ek[2]), StringEntry(cO("Africa"), ek[3]), StringEntry(cO("Oceania"), ek[4])], 0)
2708+ gX(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(ek, 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)
2709+ }
2710+ $Tuple2([StringEntry(cV("Americas"), er[0]), StringEntry(cV("Europe"), er[1]), StringEntry(cV("Asia"), er[2]), StringEntry(cV("Africa"), er[3]), StringEntry(cV("Oceania"), er[4])], 0)
26982711 }
26992712
27002713
27012714
2702-@Callable(fS)
2703-func fixStakedPieces (cm) = if ((fS.caller != cA))
2715+@Callable(fZ)
2716+func fixStakedPieces (ct) = if ((fZ.caller != cH))
27042717 then throw("Access denied")
27052718 else {
2706- let kf = if ((cm == ""))
2719+ let km = if ((ct == ""))
27072720 then 0
27082721 else {
2709- let jY = getString(ah, cQ(cm))
2710- let jU = if (isDefined(jY))
2711- then split_51C(value(jY), "_")
2722+ let kf = getString(al, cX(ct))
2723+ let kb = if (isDefined(kf))
2724+ then split_51C(value(kf), "_")
27122725 else nil
2713- func lo (dZ,M) = {
2714- let iL = value(assetInfo(fromBase58String(M)))
2715- let cY = split(iL.description, "_")[cG]
2716- (dZ + cX(cY))
2726+ func lv (eg,O) = {
2727+ let iS = value(assetInfo(fromBase58String(O)))
2728+ let df = split(iS.description, "_")[cN]
2729+ (eg + de(df))
27172730 }
27182731
2719- let eb = jU
2720- let ec = size(eb)
2721- let ed = 0
2722- func ee (ef,eg) = if ((eg >= ec))
2723- then ef
2724- else lo(ef, eb[eg])
2725-
2726- func eh (ef,eg) = if ((eg >= ec))
2727- then ef
2732+ let ei = kb
2733+ let ej = size(ei)
2734+ let ek = 0
2735+ func el (em,en) = if ((en >= ej))
2736+ then em
2737+ else lv(em, ei[en])
2738+
2739+ func eo (em,en) = if ((en >= ej))
2740+ then em
27282741 else throw("List size exceeds 100")
27292742
2730- eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 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)
2743+ eo(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(ek, 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)
27312744 }
2732- $Tuple2([IntegerEntry(cR(cm), kf)], kf)
2745+ $Tuple2([IntegerEntry(cY(ct), km)], km)
27332746 }
27342747
27352748
27362749
2737-@Callable(fS)
2738-func setCustomName (bd,jW,bh) = {
2739- let ko = kl(fS)
2740- if ((size(fS.payments) != 1))
2750+@Callable(fZ)
2751+func setCustomName (bk,kd,bo) = {
2752+ let kv = ks(fZ)
2753+ if ((size(fZ.payments) != 1))
27412754 then throw("Exactly one payment required")
27422755 else {
2743- let kp = value(fS.payments[0])
2744- if ((kp.assetId != bX))
2756+ let kw = value(fZ.payments[0])
2757+ if ((kw.assetId != ce))
27452758 then throw("Allowed USDT payment only!")
2746- else if ((kp.amount != dl))
2747- then throw(("Payment should be " + toString(dl)))
2748- else if (contains(jW, "__"))
2749- then throw(("Name should not contain '__': " + jW))
2750- else if ((size(jW) > dm))
2751- then throw(("Name too long, maxLength=" + toString(dm)))
2759+ else if ((kw.amount != ds))
2760+ then throw(("Payment should be " + toString(ds)))
2761+ else if (contains(kd, "__"))
2762+ then throw(("Name should not contain '__': " + kd))
2763+ else if ((size(kd) > dt))
2764+ then throw(("Name too long, maxLength=" + toString(dt)))
27522765 else {
2753- let b = toString(fS.originCaller)
2754- let lp = {
2755- let bY = bh
2756- if (("ACCOUNT" == bY))
2766+ let b = toString(fZ.originCaller)
2767+ let lw = {
2768+ let cf = bo
2769+ if (("ACCOUNT" == cf))
27572770 then {
2758- let lq = dF(jW)
2759- let lr = getString(lq)
2760- if (isDefined(lr))
2761- then throw(("Name already registered: " + jW))
2771+ let lx = dM(kd)
2772+ let ly = getString(lx)
2773+ if (isDefined(ly))
2774+ then throw(("Name already registered: " + kd))
27622775 else {
2763- let ls = bp(b)
2764- let lt = getString(ls)
2765- let lu = if (isDefined(lt))
2766- then [DeleteEntry(dF(value(lt)))]
2776+ let lz = bw(b)
2777+ let lA = getString(lz)
2778+ let lB = if (isDefined(lA))
2779+ then [DeleteEntry(dM(value(lA)))]
27672780 else nil
2768- (((lu :+ StringEntry(ls, jW)) :+ StringEntry(lq, b)) ++ jw(b, S)._1)
2781+ (((lB :+ StringEntry(lz, kd)) :+ StringEntry(lx, b)) ++ jD(b, W)._1)
27692782 }
27702783 }
2771- else if (("LAND" == bY))
2784+ else if (("LAND" == cf))
27722785 then {
2773- let iL = value(assetInfo(fromBase58String(bd)))
2774- let iM = bf(bd)
2775- if (!(isDefined(getInteger(iM))))
2776- then throw((iL.name + " is not staked"))
2786+ let iS = value(assetInfo(fromBase58String(bk)))
2787+ let iT = bm(bk)
2788+ if (!(isDefined(getInteger(iT))))
2789+ then throw((iS.name + " is not staked"))
27772790 else {
2778- let iO = valueOrErrorMessage(getString(bc(bd)), (("NFT " + iL.name) + " is orphaned"))
2779- if ((iO != b))
2780- then throw((at + " is not yours"))
2791+ let iV = valueOrErrorMessage(getString(bj(bk)), (("NFT " + iS.name) + " is orphaned"))
2792+ if ((iV != b))
2793+ then throw((aA + " is not yours"))
27812794 else {
2782- let lq = dy(jW)
2783- let lr = getString(lq)
2784- if (isDefined(lr))
2785- then throw(("Name already registered: " + jW))
2795+ let lx = dF(kd)
2796+ let ly = getString(lx)
2797+ if (isDefined(ly))
2798+ then throw(("Name already registered: " + kd))
27862799 else {
2787- let lv = be(bd)
2788- let lt = getString(lv)
2789- let lu = if (isDefined(lt))
2790- then [DeleteEntry(dy(value(lt)))]
2800+ let lC = bl(bk)
2801+ let lA = getString(lC)
2802+ let lB = if (isDefined(lA))
2803+ then [DeleteEntry(dF(value(lA)))]
27912804 else nil
2792- (((lu :+ StringEntry(lv, jW)) :+ StringEntry(lq, bd)) ++ jw(b, S)._1)
2805+ (((lB :+ StringEntry(lC, kd)) :+ StringEntry(lx, bk)) ++ jD(b, W)._1)
27932806 }
27942807 }
27952808 }
27962809 }
2797- else if (("DUCK" == bY))
2810+ else if (("DUCK" == cf))
27982811 then {
2799- let iL = value(assetInfo(fromBase58String(bd)))
2800- let iM = bf(bd)
2801- if (if (!(isDefined(getInteger(iM))))
2812+ let iS = value(assetInfo(fromBase58String(bk)))
2813+ let iT = bm(bk)
2814+ if (if (!(isDefined(getInteger(iT))))
28022815 then true
2803- else !(isDefined(getString(bv(b)))))
2804- then throw((iL.name + " is not staked"))
2816+ else !(isDefined(getString(bC(b)))))
2817+ then throw((iS.name + " is not staked"))
28052818 else {
2806- let iO = valueOrErrorMessage(getString(bu(bd)), (("NFT " + iL.name) + " is orphaned"))
2807- if ((iO != b))
2808- then throw((au + " is not yours"))
2819+ let iV = valueOrErrorMessage(getString(bB(bk)), (("NFT " + iS.name) + " is orphaned"))
2820+ if ((iV != b))
2821+ then throw((aB + " is not yours"))
28092822 else {
2810- let lq = dE(jW)
2811- let lr = getString(lq)
2812- if (isDefined(lr))
2813- then throw(("Name already registered: " + jW))
2823+ let lx = dL(kd)
2824+ let ly = getString(lx)
2825+ if (isDefined(ly))
2826+ then throw(("Name already registered: " + kd))
28142827 else {
2815- let lv = bo(bd)
2816- let lt = getString(lv)
2817- let lu = if (isDefined(lt))
2818- then [DeleteEntry(dE(value(lt)))]
2828+ let lC = bv(bk)
2829+ let lA = getString(lC)
2830+ let lB = if (isDefined(lA))
2831+ then [DeleteEntry(dL(value(lA)))]
28192832 else nil
2820- (((lu :+ StringEntry(lv, jW)) :+ StringEntry(lq, bd)) ++ jq(bd, S)._1)
2833+ (((lB :+ StringEntry(lC, kd)) :+ StringEntry(lx, bk)) ++ jx(bk, W)._1)
28212834 }
28222835 }
28232836 }
28242837 }
28252838 else throw("Unknown entity type")
28262839 }
2827- $Tuple2(((lp :+ ScriptTransfer(cB, kp.amount, bX)) :+ ko), 0)
2840+ $Tuple2(((lw :+ ScriptTransfer(cI, kw.amount, ce)) :+ kv), 0)
28282841 }
28292842 }
28302843 }
28312844
28322845
28332846
2834-@Callable(fS)
2835-func setReferrals (lw,lx) = if ((fS.callerPublicKey != di))
2847+@Callable(fZ)
2848+func setReferrals (lD,lE) = if ((fZ.callerPublicKey != dp))
28362849 then throw("Permission denied")
28372850 else {
2838- let ko = kl(fS)
2839- if ((size(fS.payments) != 0))
2851+ let kv = ks(fZ)
2852+ if ((size(fZ.payments) != 0))
28402853 then throw("No payments required")
2841- else if (!(isDefined(addressFromString(lw))))
2842- then throw(("Invalid address: " + lw))
2843- else if (!(isDefined(addressFromString(lx))))
2844- then throw(("Invalid address: " + lx))
2854+ else if (!(isDefined(addressFromString(lD))))
2855+ then throw(("Invalid address: " + lD))
2856+ else if (!(isDefined(addressFromString(lE))))
2857+ then throw(("Invalid address: " + lE))
28452858 else {
2846- let ly = dG()
2847- let lz = getString(ly)
2848- let lA = if (isDefined(lz))
2849- then split_4C(value(lz), "_")
2859+ let lF = dN()
2860+ let lG = getString(lF)
2861+ let lH = if (isDefined(lG))
2862+ then split_4C(value(lG), "_")
28502863 else nil
2851- if (containsElement(lA, lx))
2852- then throw((lx + " is not newbie (already has referrals)"))
2864+ if (containsElement(lH, lE))
2865+ then throw((lE + " is not newbie (already has referrals)"))
28532866 else {
2854- let jy = bq(lx)
2855- let jz = getString(jy)
2856- if (if (isDefined(jz))
2857- then isDefined(addressFromString(value(jz)))
2867+ let jF = bx(lE)
2868+ let jG = getString(jF)
2869+ if (if (isDefined(jG))
2870+ then isDefined(addressFromString(value(jG)))
28582871 else false)
2859- then throw(((lx + " already has refBy: ") + value(jz)))
2872+ then throw(((lE + " already has refBy: ") + value(jG)))
28602873 else {
2861- let lB = bt(lw)
2862- let lC = getString(lB)
2863- let lD = if (isDefined(lC))
2864- then split_4C(value(lC), "_")
2874+ let lI = bA(lD)
2875+ let lJ = getString(lI)
2876+ let lK = if (isDefined(lJ))
2877+ then split_4C(value(lJ), "_")
28652878 else nil
2866- if (containsElement(lD, lx))
2867- then throw((((lw + " already contains ") + lx) + " within referrals"))
2879+ if (containsElement(lK, lE))
2880+ then throw((((lD + " already contains ") + lE) + " within referrals"))
28682881 else {
2869- let lE = makeString_2C((lD :+ lx), "_")
2870- let lF = if (containsElement(lA, lw))
2871- then value(lz)
2872- else makeString_2C((lA :+ lw), "_")
2873- $Tuple2([StringEntry(jy, lw), StringEntry(lB, lE), StringEntry(ly, lF), ko], 0)
2882+ let lL = makeString_2C((lK :+ lE), "_")
2883+ let lM = if (containsElement(lH, lD))
2884+ then value(lG)
2885+ else makeString_2C((lH :+ lD), "_")
2886+ $Tuple2([StringEntry(jF, lD), StringEntry(lI, lL), StringEntry(lF, lM), kv], 0)
28742887 }
28752888 }
28762889 }
28772890 }
28782891 }
28792892
28802893
28812894
2882-@Callable(fS)
2883-func distributePoints (lG,lH,lI,lJ,lK) = {
2884- let ko = kl(fS)
2885- if ((size(fS.payments) != 0))
2895+@Callable(fZ)
2896+func distributePoints (lN,lO,lP,lQ,lR) = {
2897+ let kv = ks(fZ)
2898+ if ((size(fZ.payments) != 0))
28862899 then throw("No payments required")
28872900 else {
2888- let b = toString(fS.originCaller)
2889- let x = valueOrErrorMessage(getString(bv(b)), "You don't have a duck staked")
2890- let lL = F(b)
2891- let lM = valueOrElse(getInteger(ah, lL), 0)
2892- let lN = B(x)
2893- let lO = valueOrElse(getInteger(ah, lN), 0)
2894- let lP = (lM + lO)
2895- let lQ = ((((lG + lH) + lI) + lJ) + lK)
2896- if ((lQ > lP))
2897- then throw((("There are only " + toString(lP)) + " free points to distribute"))
2901+ let b = toString(fZ.originCaller)
2902+ let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
2903+ let lS = H(b)
2904+ let lT = valueOrElse(getInteger(al, lS), 0)
2905+ let lU = D(z)
2906+ let lV = valueOrElse(getInteger(al, lU), 0)
2907+ let lW = (lT + lV)
2908+ let lX = ((((lN + lO) + lP) + lQ) + lR)
2909+ if ((lX > lW))
2910+ then throw((("There are only " + toString(lW)) + " free points to distribute"))
28982911 else {
2899- let lR = y(x)
2900- let ak = split(valueOrElse(getString(ah, lR), "0_0_0_0_0"), "_")
2901- let lS = (lM - lQ)
2902- $Tuple2([IntegerEntry(lL, if ((0 > lS))
2912+ let lY = A(z)
2913+ let ao = split(valueOrElse(getString(al, lY), "0_0_0_0_0"), "_")
2914+ let lZ = (lT - lX)
2915+ $Tuple2([IntegerEntry(lS, if ((0 > lZ))
29032916 then 0
2904- else lS), IntegerEntry(lN, if ((0 > lS))
2905- then (lO + lS)
2906- else lO), StringEntry(lR, makeString([toString((parseIntValue(ak[j]) + lG)), toString((parseIntValue(ak[k]) + lH)), toString((parseIntValue(ak[l]) + lI)), toString((parseIntValue(ak[m]) + lJ)), toString((parseIntValue(ak[n]) + lK))], "_")), ko], 0)
2917+ else lZ), IntegerEntry(lU, if ((0 > lZ))
2918+ then (lV + lZ)
2919+ else lV), StringEntry(lY, makeString([toString((parseIntValue(ao[j]) + lN)), toString((parseIntValue(ao[k]) + lO)), toString((parseIntValue(ao[l]) + lP)), toString((parseIntValue(ao[m]) + lQ)), toString((parseIntValue(ao[n]) + lR))], "_")), kv], 0)
29072920 }
29082921 }
29092922 }
29102923
29112924
29122925
2913-@Callable(fS)
2914-func splitByGlobalWeightsREADONLY (dQ) = $Tuple2(nil, ei(dQ))
2915-
2916-
2917-
2918-@Callable(fS)
2919-func splitByGlobalAndLocalWeightsREADONLY (lT,lU,fV) = {
2920- let fO = fU(fV)
2921- $Tuple2(nil, $Tuple2(ei(lT), dT(lU, fO)))
2922- }
2923-
2924-
2925-
2926-@Callable(fS)
2927-func getBackpackREADONLY (x) = $Tuple2(nil, makeString(gU(bw(x)), ":"))
2928-
2929-
2930-
2931-@Callable(fS)
2932-func getWarehouseREADONLY (M) = {
2933- let iL = value(assetInfo(fromBase58String(M)))
2934- let hj = (cX(split(iL.description, "_")[cG]) / cf)
2935- let hk = valueOrElse(getInteger(bm(M)), 0)
2936- $Tuple2(nil, makeString_2C(hh(bl(M), hj, hk), ":"))
2937- }
2938-
2939-
2940-
2941-@Callable(fS)
2926+@Callable(fZ)
2927+func splitByGlobalWeightsREADONLY (dX) = $Tuple2(nil, ep(dX))
2928+
2929+
2930+
2931+@Callable(fZ)
2932+func splitByGlobalAndLocalWeightsREADONLY (ma,mb,gc) = {
2933+ let fV = gb(gc)
2934+ $Tuple2(nil, $Tuple2(ep(ma), ea(mb, fV)))
2935+ }
2936+
2937+
2938+
2939+@Callable(fZ)
2940+func getBackpackREADONLY (z) = $Tuple2(nil, makeString(hb(bD(z)), ":"))
2941+
2942+
2943+
2944+@Callable(fZ)
2945+func getWarehouseREADONLY (O) = {
2946+ let iS = value(assetInfo(fromBase58String(O)))
2947+ let hq = (de(split(iS.description, "_")[cN]) / cm)
2948+ let hr = valueOrElse(getInteger(bt(O)), 0)
2949+ $Tuple2(nil, makeString_2C(ho(bs(O), hq, hr), ":"))
2950+ }
2951+
2952+
2953+
2954+@Callable(fZ)
29422955 func saveLastTx () = {
2943- let hT = fS.caller
2944- if (if (if ((hT != cD))
2945- then (hT != cB)
2956+ let ia = fZ.caller
2957+ if (if (if ((ia != cK))
2958+ then (ia != cI)
29462959 else false)
2947- then (hT != cE)
2960+ then (ia != cL)
29482961 else false)
29492962 then throw("Access denied")
2950- else $Tuple2([kl(fS)], 42)
2951- }
2952-
2953-
2954-
2955-@Callable(fS)
2956-func updateDuckStats (x,jr) = if ((fS.caller != cB))
2963+ else $Tuple2([ks(fZ)], 42)
2964+ }
2965+
2966+
2967+
2968+@Callable(fZ)
2969+func updateDuckStats (z,jy) = if ((fZ.caller != cI))
29572970 then throw("Access denied")
2958- else jq(x, jr)
2959-
2960-
2961-
2962-@Callable(fS)
2963-func updateAccStats (b,jr) = if ((fS.caller != cB))
2971+ else jx(z, jy)
2972+
2973+
2974+
2975+@Callable(fZ)
2976+func updateAccStats (b,jy) = if ((fZ.caller != cI))
29642977 then throw("Access denied")
2965- else jw(b, jr)
2966-
2967-
2968-
2969-@Callable(fS)
2970-func equipDuck (lV) = {
2971- let ko = kl(fS)
2972- if ((size(fS.payments) != 0))
2978+ else jD(b, jy)
2979+
2980+
2981+
2982+@Callable(fZ)
2983+func equipDuck (mc) = {
2984+ let kv = ks(fZ)
2985+ if ((size(fZ.payments) != 0))
29732986 then throw("No payments required")
29742987 else {
2975- let b = toString(fS.originCaller)
2976- let x = valueOrErrorMessage(getString(bv(b)), "You don't have a duck staked")
2977- if (jG(x))
2988+ let b = toString(fZ.originCaller)
2989+ let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
2990+ if (jN(z))
29782991 then throw("equipDuck_checkTournament")
29792992 else {
2980- let fF = C(x)
2981- let lW = split(valueOrElse(getString(fF), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
2982- let gV = bw(x)
2983- let hy = gU(gV)
2984- let iw = split(lV, "_")
2985- if ((size(iw) != p))
2993+ let fM = E(z)
2994+ let md = split(valueOrElse(getString(fM), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
2995+ let hc = bD(z)
2996+ let hF = hb(hc)
2997+ let iD = split(mc, "_")
2998+ if ((size(iD) != p))
29862999 then throw("Wrong equipment string")
29873000 else {
2988- let fH = fu(lW, eF(hy[ba]), true, nil)
2989- let fI = split(iw[o], ";")[1]
2990- let ai = if ((fI == ""))
3001+ let fO = fB(md, eM(hF[bh]), true, nil)
3002+ let fP = split(iD[o], ";")[1]
3003+ let am = if ((fP == ""))
29913004 then 0
29923005 else {
2993- let fJ = split(fI, ",")[0]
2994- if ((fJ == ""))
3006+ let fQ = split(fP, ",")[0]
3007+ if ((fQ == ""))
29953008 then 0
29963009 else {
2997- let eU = split(fJ, ":")
2998- let cz = eU[0]
2999- let fK = eU[1]
3000- if (if (if (if (if ((cz == "06"))
3010+ let fb = split(fQ, ":")
3011+ let cG = fb[0]
3012+ let fR = fb[1]
3013+ if (if (if (if (if ((cG == "06"))
30013014 then true
3002- else (cz == "07"))
3015+ else (cG == "07"))
30033016 then true
3004- else (cz == "08"))
3005- then (fK != "")
3017+ else (cG == "08"))
3018+ then (fR != "")
30063019 else false)
3007- then (parseIntValue(fK) > 0)
3020+ then (parseIntValue(fR) > 0)
30083021 else false)
3009- then parseIntValue(split(aI[parseIntValue(cz)], "_")[aK])
3022+ then parseIntValue(split(aP[parseIntValue(cG)], "_")[aR])
30103023 else 0
30113024 }
30123025 }
3013- let fp = ag(this, x, ai, true)
3014- let fL = fu(iw, fH, false, fp)
3015- let lX = eK(fL)
3016- $Tuple2([StringEntry(fF, lV), StringEntry(gV, makeString_2C([hy[aX], hy[aY], hy[aZ], lX], ":")), StringEntry(I(x), makeString([toString(fp[7]), toString(fp[8]), toString(fp[9]), toString(fp[10]), toString(fp[11])], "_")), ko], 0)
3026+ let fw = ak(this, z, am, true)
3027+ let fS = fB(iD, fO, false, fw)
3028+ let me = eR(fS)
3029+ $Tuple2([StringEntry(fM, mc), StringEntry(hc, makeString_2C([hF[be], hF[bf], hF[bg], me], ":")), StringEntry(K(z), makeString([toString(fw[7]), toString(fw[8]), toString(fw[9]), toString(fw[10]), toString(fw[11])], "_")), kv], 0)
30173030 }
30183031 }
30193032 }
30203033 }
30213034
30223035
30233036
3024-@Callable(fS)
3025-func fortificateLand (M,lY) = {
3026- let ko = kl(fS)
3027- if ((size(fS.payments) != 0))
3037+@Callable(fZ)
3038+func fortificateLand (O,mf) = {
3039+ let kv = ks(fZ)
3040+ if ((size(fZ.payments) != 0))
30283041 then throw("No payments required")
30293042 else {
3030- let b = toString(fS.originCaller)
3031- let x = valueOrElse(getString(bv(b)), "")
3032- let eP = ag(this, x, 0, false)
3033- let lZ = bn(M)
3034- let ma = split(valueOrElse(getString(lZ), ":0_15:0_18:0"), "_")
3035- let iL = value(assetInfo(fromBase58String(M)))
3036- let hj = (cX(split(iL.description, "_")[cG]) / cf)
3037- let hk = valueOrElse(getInteger(bm(M)), 0)
3038- let hi = bl(M)
3039- let hn = hh(hi, hj, hk)
3040- let mb = split(hn[aS], "_")
3041- let mc = parseIntValue(mb[aU])
3042- let md = parseIntValue(mb[aV])
3043- let me = split(lY, "_")
3044- let mf = fB(ma, eF(hn[aR]), mc, md, true, nil)
3045- let fH = mf._1
3046- let mg = mf._2
3047- let mh = mf._3
3048- let mi = fB(me, fH, mg, mh, false, eP)
3049- let fL = mi._1
3050- let mj = mi._2
3051- let mk = mi._3
3052- let lX = eK(fL)
3053- let jp = makeString([mb[aT], toString(mj), toString(mk), mb[aW]], "_")
3054- $Tuple2([StringEntry(lZ, lY), StringEntry(hi, makeString_2C([hn[aO], hn[aP], hn[aQ], lX, jp], ":")), ko], 0)
3055- }
3056- }
3057-
3058-
3059-
3060-@Callable(fS)
3061-func initDuckTourAttempt (x) = if ((fS.caller != cE))
3043+ let b = toString(fZ.originCaller)
3044+ let z = valueOrElse(getString(bC(b)), "")
3045+ let eW = ak(this, z, 0, false)
3046+ let mg = bu(O)
3047+ let mh = split(valueOrElse(getString(mg), ":0_15:0_18:0"), "_")
3048+ let iS = value(assetInfo(fromBase58String(O)))
3049+ let hq = (de(split(iS.description, "_")[cN]) / cm)
3050+ let hr = valueOrElse(getInteger(bt(O)), 0)
3051+ let hp = bs(O)
3052+ let hu = ho(hp, hq, hr)
3053+ let mi = split(hu[aZ], "_")
3054+ let mj = parseIntValue(mi[bb])
3055+ let mk = parseIntValue(mi[bc])
3056+ let ml = split(mf, "_")
3057+ let mm = fI(mh, eM(hu[aY]), mj, mk, true, nil)
3058+ let fO = mm._1
3059+ let mn = mm._2
3060+ let mo = mm._3
3061+ let mp = fI(ml, fO, mn, mo, false, eW)
3062+ let fS = mp._1
3063+ let mq = mp._2
3064+ let mr = mp._3
3065+ let me = eR(fS)
3066+ let jw = makeString([mi[ba], toString(mq), toString(mr), mi[bd]], "_")
3067+ $Tuple2([StringEntry(mg, mf), StringEntry(hp, makeString_2C([hu[aV], hu[aW], hu[aX], me, jw], ":")), kv], 0)
3068+ }
3069+ }
3070+
3071+
3072+
3073+@Callable(fZ)
3074+func initDuckTourAttempt (z) = if ((fZ.caller != cL))
30623075 then throw("Access denied")
30633076 else {
3064- let ko = kl(fS)
3065- let il = w(x)
3066- let im = aa(valueOrElse(getInteger(A(x)), 0))
3067- let kC = valueOrElse(getInteger(il), im)
3068- let ml = bx(x)
3069- let iI = valueOrElse(getString(ml), aB)
3070- let jH = valueOrElse(getInteger(cE, bC), 0)
3071- let mm = (toString(jH) + "_T_0")
3072- $Tuple2([ko, IntegerEntry(G(x), kC), IntegerEntry(il, im), StringEntry(H(x), iI), StringEntry(ml, mm)], mm)
3077+ let kv = ks(fZ)
3078+ let is = y(z)
3079+ let it = ae(valueOrElse(getInteger(C(z)), 0))
3080+ let kJ = valueOrElse(getInteger(is), it)
3081+ let ms = bE(z)
3082+ let iP = valueOrElse(getString(ms), aI)
3083+ let jO = valueOrElse(getInteger(cL, bJ), 0)
3084+ let mt = (toString(jO) + "_T_0")
3085+ $Tuple2([kv, IntegerEntry(I(z), kJ), IntegerEntry(is, it), StringEntry(J(z), iP), StringEntry(ms, mt)], mt)
30733086 }
30743087
30753088
30763089
3077-@Callable(fS)
3090+@Callable(fZ)
30783091 func breakAttempt () = {
3079- let ko = kl(fS)
3080- let x = valueOrErrorMessage(getString(bv(toString(fS.caller))), "You don't have a duck staked")
3081- let ml = bx(x)
3082- let iI = valueOrElse(getString(ml), aB)
3083- if ((split(iI, "_")[bQ] != "T"))
3092+ let kv = ks(fZ)
3093+ let z = valueOrErrorMessage(getString(bC(toString(fZ.caller))), "You don't have a duck staked")
3094+ let ms = bE(z)
3095+ let iP = valueOrElse(getString(ms), aI)
3096+ if ((split(iP, "_")[bX] != "T"))
30843097 then throw("Your duck is not in the tournament")
30853098 else {
3086- let mn = getIntegerValue(G(x))
3087- let mo = getStringValue(H(x))
3088- $Tuple2([ko, IntegerEntry(w(x), mn), StringEntry(ml, mo)], iI)
3089- }
3090- }
3091-
3092-
3093-
3094-@Callable(fS)
3095-func exitTournamentInternal (x) = if ((fS.caller != this))
3099+ let mu = getIntegerValue(I(z))
3100+ let mv = getStringValue(J(z))
3101+ $Tuple2([kv, IntegerEntry(y(z), mu), StringEntry(ms, mv)], iP)
3102+ }
3103+ }
3104+
3105+
3106+
3107+@Callable(fZ)
3108+func exitTournamentInternal (z) = if ((fZ.caller != this))
30963109 then throw("Access denied")
30973110 else {
3098- let mn = getIntegerValue(G(x))
3099- let mo = getStringValue(H(x))
3100- $Tuple2([IntegerEntry(w(x), mn), StringEntry(bx(x), mo)], 0)
3111+ let mu = getIntegerValue(I(z))
3112+ let mv = getStringValue(J(z))
3113+ $Tuple2([IntegerEntry(y(z), mu), StringEntry(bE(z), mv)], 0)
31013114 }
31023115
31033116
31043117
3105-@Callable(fS)
3106-func prepareRobbery (ia,ib) = {
3107- let ko = kl(fS)
3108- if (!(sigVerify_8Kb(ia, ib, di)))
3118+@Callable(fZ)
3119+func prepareRobbery (ih,ii) = {
3120+ let kv = ks(fZ)
3121+ if (!(sigVerify_8Kb(ih, ii, dp)))
31093122 then throw("signature does not match")
3110- else if ((size(fS.payments) != 1))
3123+ else if ((size(fZ.payments) != 1))
31113124 then throw("exactly 1 payment must be attached")
31123125 else {
3113- let kp = fS.payments[0]
3114- let mp = kp.amount
3115- if (if (!(isDefined(kp.assetId)))
3126+ let kw = fZ.payments[0]
3127+ let mw = kw.amount
3128+ if (if (!(isDefined(kw.assetId)))
31163129 then true
3117- else (value(kp.assetId) != cK))
3130+ else (value(kw.assetId) != cR))
31183131 then throw("WLGOLD payments only!")
31193132 else {
3120- let ex = split(toUtf8String(ia), "|")
3121- if ((size(ex) != 2))
3133+ let eE = split(toUtf8String(ih), "|")
3134+ if ((size(eE) != 2))
31223135 then throw("Wrong message format")
31233136 else {
3124- let x = ex[0]
3125- let mq = ao(this, x)
3126- let as = mq._1
3127- let aq = mq._2
3128- if ((as > mp))
3129- then throw(((("Payment " + toString(mp)) + " < required ") + toString(as)))
3137+ let z = eE[0]
3138+ let aw = as(this, z)._1
3139+ if ((aw > mw))
3140+ then throw(((("Payment " + toString(mw)) + " < required ") + toString(aw)))
31303141 else {
3131- let mr = split(ex[1], "_")
3132- let ar = lastBlock.timestamp
3133- func ms (dZ,M) = {
3134- let mt = valueOrElse(getInteger(L(M)), 0)
3135- let mu = valueOrElse(getInteger(N(M)), 0)
3136- if ((mt > size(t)))
3137- then throw("Invalid state")
3138- else if ((ar > mu))
3139- then {
3140- let mv = valueOrElse(getInteger(bf(M)), 0)
3141- if ((0 >= mv))
3142- then dZ
3143- else {
3144- let fz = value(assetInfo(fromBase58String(M)))
3145- let iP = split(fz.description, "_")
3146- let iA = cX(iP[cG])
3147- let mw = iz(M, iA)
3148- let fY = (ar - mv)
3149- let iS = fraction(fY, (mw * iA), az)
3150- if ((u > iS))
3151- then dZ
3152- else (dZ :+ M)
3142+ let mx = split(eE[1], "_")
3143+ let av = lastBlock.timestamp
3144+ let ax = valueOrElse(getInteger(Q(z)), 0)
3145+ let ay = valueOrElse(getString(R(z)), "")
3146+ let az = valueOrElse(getInteger(P(ay)), 0)
3147+ if (if ((ax != w))
3148+ then (az > av)
3149+ else false)
3150+ then throw(("You already started robbing, wait till " + toString(az)))
3151+ else {
3152+ func my (eg,O) = {
3153+ let mz = valueOrElse(getInteger(N(O)), 0)
3154+ let mA = valueOrElse(getInteger(P(O)), 0)
3155+ if ((mz > size(t)))
3156+ then throw("Invalid state")
3157+ else if ((av > mA))
3158+ then {
3159+ let mB = valueOrElse(getInteger(bm(O)), 0)
3160+ if ((0 >= mB))
3161+ then eg
3162+ else {
3163+ let fG = value(assetInfo(fromBase58String(O)))
3164+ let iW = split(fG.description, "_")
3165+ let iH = de(iW[cN])
3166+ let mC = iG(O, iH)
3167+ let gf = (av - mB)
3168+ let iZ = fraction(gf, (mC * iH), aG)
3169+ if ((u > iZ))
3170+ then eg
3171+ else (eg :+ O)
3172+ }
31533173 }
3174+ else eg
3175+ }
3176+
3177+ let mD = {
3178+ let ei = mx
3179+ let ej = size(ei)
3180+ let ek = nil
3181+ func el (em,en) = if ((en >= ej))
3182+ then em
3183+ else my(em, ei[en])
3184+
3185+ func eo (em,en) = if ((en >= ej))
3186+ then em
3187+ else throw("List size exceeds 10")
3188+
3189+ eo(el(el(el(el(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
3190+ }
3191+ if ((size(mD) == 0))
3192+ then throw("No candidates for robbery")
3193+ else {
3194+ let mE = dh(size(mD), height, (ii + fZ.transactionId))
3195+ let O = mD[mE]
3196+ $Tuple2([IntegerEntry(N(O), v), IntegerEntry(P(O), (av + t[v])), IntegerEntry(Q(z), x), StringEntry(R(z), O), kv], O)
31543197 }
3155- else dZ
3156- }
3157-
3158- let mx = {
3159- let eb = mr
3160- let ec = size(eb)
3161- let ed = nil
3162- func ee (ef,eg) = if ((eg >= ec))
3163- then ef
3164- else ms(ef, eb[eg])
3165-
3166- func eh (ef,eg) = if ((eg >= ec))
3167- then ef
3168- else throw("List size exceeds 10")
3169-
3170- eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
3171- }
3172- if ((size(mx) == 0))
3173- then throw("No candidates for robbery")
3174- else {
3175- let my = da(size(mx), height, (ib + fS.transactionId))
3176- let M = mx[my]
3177- $Tuple2([IntegerEntry(L(M), v), IntegerEntry(N(M), (ar + t[v])), ko], M)
31783198 }
31793199 }
31803200 }
31813201 }
31823202 }
31833203 }
31843204
31853205

github/deemru/w8io/169f3d6 
1516.88 ms