tx · 6JQn6zjbVZccBYm5XhfrGCh2R1LZUiQ3jmVyQ495S3pC

3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm:  -0.10700000 Waves

2023.11.03 21:21 [2827512] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves

{ "type": 13, "id": "6JQn6zjbVZccBYm5XhfrGCh2R1LZUiQ3jmVyQ495S3pC", "fee": 10700000, "feeAssetId": null, "timestamp": 1699035693284, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "3MZinEo9cCWk9sLDguk2akaZ32FZ1QgbzrLJLPgcrRUoGcPrpvtq5FJdNCaKaV4r66DHGTpFF5WGWyaTSzJdikNw" ], "script": "base64:BgLiAQgCEgMKAQgSBAoCCAESAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASABIECgICAhIAEgMKAQgSBAoCCAgSAwoBGBIECgIICBIECgIICBIFCgMICAgSBAoCCAgSBwoFAQEBAQESAwoBARIFCgMBAQgSAwoBCBIDCgEIEgASBAoCCAESBAoCCAESAwoBCBIECgIICBIDCgEIEgASAwoBCBIDCgEIEgYKBAgBCAESABIECgICAhIECgICAhIAEgMKAQgSBAoCAQGpAgAJREFZTUlMTElTAIC4mSkBFGtleUxhc3RBcmJUaW1lQnlVc2VyAQRhZGRyCQCsAgICEGxhc3RBcmJUaW1lVXNlcl8FBGFkZHIBGmtleUFjcmVzU3Rha2VkQW1vdW50QnlVc2VyAQRhZGRyCQCsAgICGGFjcmVzU3Rha2VkQW1vdW50QnlVc2VyXwUEYWRkcgAGU0NBTEU4AIDC1y8ADHhwTGV2ZWxTY2FsZQCAGQAPeHBMZXZlbFJlY2lwUG93AKAfABJudW1Qb2ludHNPbkxldmVsVXAAAwAOcm9iYmVyeUNvc3RNaW4AgMLXLwAUcm9iYmVyeUNvb2xkb3duQ29lZmYAkAMADHJlcXVpcmVtZW50cwkAzAgCAghTdHJlbmd0aAkAzAgCAghBY2N1cmFjeQkAzAgCAglJbnRlbGxlY3QJAMwIAgIJRW5kdXJhbmNlCQDMCAICCURleHRlcml0eQkAzAgCAgVMZXZlbAkAzAgCAgZIZWFsdGgFA25pbAAMY2hhclN0cmVuZ3RoAAAADGNoYXJBY2N1cmFjeQABAA1jaGFySW50ZWxsZWN0AAIADWNoYXJFbmR1cmFuY2UAAwANY2hhckRleHRlcml0eQAEAAtzZWdCYWNrcGFjawAAAAtOVU1TRUdNRU5UUwAGAApOVU1NQUlOQVVYAAIACE1BWFNMT1RTAAIADU1BWFBST0RJTlNMT1QAHgAQbGFuZFJvYkNvb2xkb3ducwkAzAgCAAAJAMwIAgDAzyQJAMwIAgCg9zYJAMwIAgCA3MwUCQDMCAIAgK6mCgUDbmlsAA5NSU5fUkVTX1RPX1JPQgCA2sQJAAxyb2JJZHhMb2NrZWQAAQALZHVja0lkeEZyZWUAAAAQZHVja0lkeFByZXBhcmluZwABAQ1rZXlEdWNrSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgtkdWNrSGVhbHRoXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tDaGFycwELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0NoYXJzXwULZHVja0Fzc2V0SWQBCWtleUR1Y2tYUAELZHVja0Fzc2V0SWQJAKwCAgIHZHVja1hQXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tMZXZlbAELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0xldmVsXwULZHVja0Fzc2V0SWQBEWtleUR1Y2tGcmVlUG9pbnRzAQtkdWNrQXNzZXRJZAkArAICAg9kdWNrRnJlZVBvaW50c18FC2R1Y2tBc3NldElkARBrZXlEdWNrRXF1aXBtZW50AQtkdWNrQXNzZXRJZAkArAICAg5kdWNrRXF1aXBtZW50XwULZHVja0Fzc2V0SWQBCWtleVVzZXJYUAEEYWRkcgkArAICAgd1c2VyWFBfBQRhZGRyAQxrZXlVc2VyTGV2ZWwBBGFkZHIJAKwCAgIKdXNlckxldmVsXwUEYWRkcgERa2V5VXNlckZyZWVQb2ludHMBBGFkZHIJAKwCAgIPdXNlckZyZWVQb2ludHNfBQRhZGRyAQ5rZXlTYXZlZEhlYWx0aAELZHVja0Fzc2V0SWQJAKwCAgIMc2F2ZWRIZWFsdGhfBQtkdWNrQXNzZXRJZAEQa2V5U2F2ZWRMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgIOc2F2ZWRMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQxrZXlEdWNrQnVmZnMBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tCdWZmc18FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5VGltZV8FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeUNvc3RCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5Q29zdF8FC2R1Y2tBc3NldElkARNrZXlMYW5kUm9iYmVyeVN0YXRlAQtsYW5kQXNzZXRJZAkArAICAhFsYW5kUm9iYmVyeVN0YXRlXwULbGFuZEFzc2V0SWQBEmtleUxhbmRDb29sZG93bkVUQQELbGFuZEFzc2V0SWQJAKwCAgIQbGFuZENvb2xkb3duRVRBXwULbGFuZEFzc2V0SWQBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBC2R1Y2tBc3NldElkCQCsAgICEWR1Y2tSb2JiZXJ5U3RhdGVfBQtkdWNrQXNzZXRJZAETa2V5TG9ja2VkTGFuZEJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIRbG9ja2VkTGFuZEJ5RHVja18FC2R1Y2tBc3NldElkARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAhRkZWxpdmVyeURlbGF5QnlEdWNrXwULZHVja0Fzc2V0SWQBFGtleVVzZXJEZWxpdmVyeUNvdW50AQRhZGRyCQCsAgICEnVzZXJEZWxpdmVyeUNvdW50XwUEYWRkcgEWa2V5VXNlckxhc3REZWxpdmVyeURheQEEYWRkcgkArAICAhR1c2VyTGFzdERlbGl2ZXJ5RGF5XwUEYWRkcgAHeHBDbGFpbQCQTgAPeHBTdWNjZXNzRmxpZ2h0AJBOAAx4cEZhaWxGbGlnaHQA0A8ACHhwQ2FsbEVTAKCNBgAMeHBDdXN0b21OYW1lAMCEPQAKeHBOZXdTTGFuZADAlrECAA54cFVwZ3JhZGVJbmZyYQCQTgAHeHBNZXJnZQDAhD0ACXhwT25ib2FyZADAhD0ABnhwSGVhbACQTgEJbGV2ZWxCeVhQAQJ4cAkAawMFDHhwTGV2ZWxTY2FsZQkAbAYFAnhwAAQFD3hwTGV2ZWxSZWNpcFBvdwAEAAQFBERPV04FBlNDQUxFOAEJbWF4SGVhbHRoAQVsZXZlbAkAZAIAZAUFbGV2ZWwBB2xldmVsVXACCWN1cnJMZXZlbAVuZXdYUAQIbmV3TGV2ZWwJAQlsZXZlbEJ5WFABBQVuZXdYUAkAzAgCBQhuZXdMZXZlbAkAzAgCCQBoAgUSbnVtUG9pbnRzT25MZXZlbFVwCQBlAgUIbmV3TGV2ZWwFCWN1cnJMZXZlbAUDbmlsAQxnZXREdWNrU3RhdHMED3N0YWtpbmdDb250cmFjdAtkdWNrQXNzZXRJZApidWZmRWZmZWN0CmZvcmNlQnVmZnMEBWNoYXJzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0NoYXJzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAIBXwQDbHZsCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAEBmhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQJAQltYXhIZWFsdGgBBQNsdmwECnN0YXRlQnVmZnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wAgFfCQDOCAIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyU3RyZW5ndGgJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyQWNjdXJhY3kJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFySW50ZWxsZWN0CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckVuZHVyYW5jZQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJEZXh0ZXJpdHkJAMwIAgUDbHZsCQDMCAIFBmhlYWx0aAUDbmlsAwUKZm9yY2VCdWZmcwkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QFA25pbAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUMY2hhclN0cmVuZ3RoCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQxjaGFyQWNjdXJhY3kJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJJbnRlbGxlY3QJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJFbmR1cmFuY2UJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJEZXh0ZXJpdHkFA25pbAEOZ2V0Um9iYmVyeURhdGECD3N0YWtpbmdDb250cmFjdAtkdWNrQXNzZXRJZAQLbGFzdFJvYkNvc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEYa2V5TGFzdFJvYmJlcnlDb3N0QnlEdWNrAQULZHVja0Fzc2V0SWQAAAQLbGFzdFJvYlRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEYa2V5TGFzdFJvYmJlcnlUaW1lQnlEdWNrAQULZHVja0Fzc2V0SWQAAAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQHcm9iQ29zdAkAlgMBCQDMCAIFDnJvYmJlcnlDb3N0TWluCQDMCAIJAGUCBQtsYXN0Um9iQ29zdAkAaAIFFHJvYmJlcnlDb29sZG93bkNvZWZmCQBlAgUDbm93BQtsYXN0Um9iVGltZQUDbmlsBAlkdWNrU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQETa2V5RHVja1JvYmJlcnlTdGF0ZQEFC2R1Y2tBc3NldElkAAAECmxvY2tlZExhbmQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQETa2V5TG9ja2VkTGFuZEJ5RHVjawEFC2R1Y2tBc3NldElkAgAEB2xhbmRFVEEJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQESa2V5TGFuZENvb2xkb3duRVRBAQUKbG9ja2VkTGFuZAAACQCXCgUFB3JvYkNvc3QFC2xhc3RSb2JUaW1lBQlkdWNrU3RhdGUFCmxvY2tlZExhbmQFB2xhbmRFVEEACkxBTkRQUkVGSVgCBExBTkQACkRVQ0tQUkVGSVgCBERVQ0sACkFSVFBSRVNBTEUCB1BSRVNBTEUABk5VTVJFUwAGAA5OVU1fQ09OVElORU5UUwAFABhNQVhfTEFORFNfU1RBS0VEX0JZX1VTRVIAGQAPREFJTFlSRVNCWVBJRUNFAID40gEADFdITVVMVElQTElFUgCAyK+gJQAPREVGQVVMVExPQ0FUSU9OAg9BZnJpY2FfRl9BZnJpY2EAEFJFU09VUkNFUFJJQ0VNSU4A1bUCAApFU1NFTExDT0VGAAoAFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQDQhgMAElRFTl9NSU5VVEVTX01JTExJUwDAzyQAF0FMTE9XRURfRlJFRV9ERUxJVkVSSUVTAAEAGkFDUkVTX0ZPUl9ERUxJVkVSWV9BVFRFTVBUAIDh6xcACXByb2RUeXBlcwkAzAgCAhBGaXJzdCBBaWQgS2l0IEwxCQDMCAICEEZpcnN0IEFpZCBLaXQgTDIJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMwkAzAgCAgtCYWNrcGFjayBMMQkAzAgCAgtCYWNrcGFjayBMMgkAzAgCAgtCYWNrcGFjayBMMwkAzAgCAg5Gb29kIFJhdGlvbiBMMQkAzAgCAg5Gb29kIFJhdGlvbiBMMgkAzAgCAg5Gb29kIFJhdGlvbiBMMwkAzAgCAgtKZXQgUGFjayBMMQkAzAgCAgtKZXQgUGFjayBMMgkAzAgCAgtKZXQgUGFjayBMMwkAzAgCAglTaGllbGQgTDEJAMwIAgIJU2hpZWxkIEwyCQDMCAICCVNoaWVsZCBMMwkAzAgCAgdNaW5lIEwxCQDMCAICB01pbmUgTDIJAMwIAgIHTWluZSBMMwkAzAgCAgdUcmFwIEwxCQDMCAICB1RyYXAgTDIJAMwIAgIHVHJhcCBMMwUDbmlsAApjb250aW5lbnRzCQDMCAICCEFtZXJpY2FzCQDMCAICBkV1cm9wZQkAzAgCAgRBc2lhCQDMCAICBkFmcmljYQkAzAgCAgdPY2VhbmlhBQNuaWwACUNPRUZGMk1BVACAreIEABBmb3J0QWxsb3dlZFByb2RzCQDMCAIADwkAzAgCABAJAMwIAgARCQDMCAIAEgkAzAgCABMJAMwIAgAUBQNuaWwAEHByb2R1Y3Rpb25NYXRyaXgJAMwIAgIlOF84XzhfMTdfMTdfNDJfMTJfMF8zMF8wLDAsMCwwLDAsMCwwXwkAzAgCAiU4XzhfOF8xN18xN180Ml8yNF8wXzYwXzAsMCw1LDIsMCwwLDBfCQDMCAICJzhfOF84XzE3XzE3XzQyXzM2XzBfMTIwXzAsMCwxMCw0LDAsMCwwXwkAzAgCAik4XzE5XzE5XzhfMjdfMTlfMjZfMV8yMF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNTJfMV80MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNzhfMV84MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAiU4XzhfOF84XzhfNjBfMTNfMl8yXzAsMCwwLDAsMCwwLDBfMDExCQDMCAICJThfOF84XzhfOF82MF8yNl8yXzRfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzM5XzJfOF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfMzBfM18zMF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfNjBfM181MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfOTBfM183MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8xMV80XzEwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzIyXzRfMjBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMzNfNF8zMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAio0XzEzXzIyXzRfMzVfMjJfMjNfMF81MCwxLDBfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNF8xM18yMl80XzM1XzIyXzQ2XzBfNTAsMSwxXzAsMiw1LDAsMCwwLDBfCQDMCAICKzRfMTNfMjJfNF8zNV8yMl82OV8wXzUwLDIsMV8wLDUsMTAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzIwXzFfMzAsMSwxXzAsMCwwLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV80MF8xXzMwLDEsMl8yLDEsMywwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfNjBfMV8zMCwxLDNfNSwyLDgsMCwwLDAsMF8FA25pbAAJcklkeENvZWZmAAYACnJJZHhFZmZlY3QACAAQcklkeFJlcXVpcmVtZW50cwAJAAlySWR4U2xvdHMACgAOUFJPRFVDVFBLR1NJWkUACgALd2hJZHhMZXZlbHMAAAAId2hJZHhSZXMAAQAId2hJZHhNYXQAAgAJd2hJZHhQcm9kAAMACXdoSWR4TE9GVAAEAAl2b2xMb2NrZWQAAAALdm9sT2NjdXBpZWQAAQAHdm9sRnJlZQACAAh2b2xUb3RhbAADAApicElkeExldmVsAAAACGJwSWR4UmVzAAEACGJwSWR4TWF0AAIACWJwSWR4UHJvZAADAA9sb2NJZHhDb250aW5lbnQAAAAKbG9jSWR4VHlwZQABAAhsb2NJZHhJZAACARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIDbm9fBQdhc3NldElkARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEHYXNzZXRJZAkArAICAgVsY25hXwUHYXNzZXRJZAEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgNzdF8FB2Fzc2V0SWQBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgR0eXBlB2Fzc2V0SWQJALkJAgkAzAgCAgNsYXMJAMwIAgUEdHlwZQkAzAgCBQdhc3NldElkBQNuaWwCAV8BImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDB25mdFR5cGUHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgZzdHRhb18FB25mdFR5cGUCAV8FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgESa2V5V2FyZWhvdXNlQnlMYW5kAQtsYW5kQXNzZXRJZAkArAICAgN3aF8FC2xhbmRBc3NldElkARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQdhc3NldElkCQCsAgICC2luZnJhTGV2ZWxfBQdhc3NldElkARdrZXlGb3J0aWZpY2F0aW9uc0J5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIPZm9ydGlmaWNhdGlvbnNfBQtsYW5kQXNzZXRJZAEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIYZHVja0N1c3RvbU5hbWVCeUFzc2V0SWRfBQdhc3NldElkARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQRhZGRyCQCsAgICGGFjY291bnRDdXN0b21OYW1lQnlBZGRyXwUEYWRkcgEPa2V5QWRkcmVzc1JlZkJ5AQRhZGRyCQCsAgICCWFjY1JlZkJ5XwUEYWRkcgEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawELZHVja0Fzc2V0SWQJAKwCAgIab25ib2FyZEFydEFjdGl2YXRlZE9uRHVja18FC2R1Y2tBc3NldElkARxrZXlPbmJvYXJkQXJ0RHVja0FjdGl2YXRlZEJ5AQRhZGRyCQCsAgICGm9uYm9hcmRBcnRBY3RpdmF0ZWREdWNrQnlfBQRhZGRyARNrZXlBZGRyZXNzUmVmZXJyYWxzAQRhZGRyCQCsAgICDWFjY1JlZmVycmFsc18FBGFkZHIBEGtleUR1Y2tJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIKZHVja093bmVyXwUHYXNzZXRJZAEUa2V5U3Rha2VkRHVja0J5T3duZXIBCW93bmVyQWRkcgkArAICAhJzdGFrZWREdWNrQnlPd25lcl8FCW93bmVyQWRkcgERa2V5QmFja3BhY2tCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICCWJhY2tQYWNrXwULZHVja0Fzc2V0SWQBD2tleUR1Y2tMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgINZHVja0xvY2F0aW9uXwULZHVja0Fzc2V0SWQBFWtleVVzZXJHd2xSZWxlYXNlVGltZQEIdXNlckFkZHIJAKwCAgIaJXMlc19fdXNlckd3bFJlbGVhc2VUaW1lX18FCHVzZXJBZGRyAQ5rZXlFc1dhcmVob3VzZQACGmVtZXJnZW5jeVdhcmVob3VzZVByb2R1Y3RzAA9kZWxpdmVyeUZ1bmRLZXkCDGRlbGl2ZXJ5RnVuZAARZGVsaXZlcnlMb2NrZWRLZXkCDmRlbGl2ZXJ5TG9ja2VkAA1sYXN0VG91cklkS2V5Ag4lc19fbGFzdFRvdXJJZAEVa2V5VG91clN0YXRpY0RhdGFCeUlkAQN0SWQJAKwCAgIWJXMlZF9fdG91clN0YXRpY0RhdGFfXwkApAMBBQN0SWQBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBA3RJZAkArAICAhclcyVkX190b3VyRHluYW1pY0RhdGFfXwkApAMBBQN0SWQBGmtleUJlc3RSZXN1bHRCeVRvdXJBbmREdWNrAgN0SWQLZHVja0Fzc2V0SWQJALkJAgkAzAgCAh8lcyVkJXNfX2Jlc3RSZXN1bHRCeVRvdXJBbmREdWNrCQDMCAIJAKQDAQUDdElkCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwCAl9fAAlpZHhTdGF0aWMAAAAKaWR4RHluYW1pYwABAAp0U3RhdGljRW5kAAYADnREeW5hbWljU3RhdHVzAAEBC2dldFRvdXJEYXRhAgx0b3VyQ29udHJhY3QDdElkBAZzdGF0aWMJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDHRvdXJDb250cmFjdAkBFWtleVRvdXJTdGF0aWNEYXRhQnlJZAEFA3RJZAkArAICCQCsAgICGUVycm9yIHJlYWRpbmcgdG91cm5hbWVudCAJAKQDAQUDdElkAgUgZGF0YQICX18EB2R5bmFtaWMJALwJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDHRvdXJDb250cmFjdAkBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBBQN0SWQJAKwCAgkArAICAhlFcnJvciByZWFkaW5nIHRvdXJuYW1lbnQgCQCkAwEFA3RJZAIFIGRhdGECAl9fCQDMCAIFBnN0YXRpYwkAzAgCBQdkeW5hbWljBQNuaWwBDmlzSW5Ub3VybmFtZW50Agx0b3VyQ29udHJhY3QIbG9jYXRpb24EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQx0b3VyQ29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQDbG9jCQC1CQIFCGxvY2F0aW9uAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUMdG91ckNvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljAwMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAVQJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAcJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcBDGlzSW5EZWxpdmVyeQEIbG9jYXRpb24EA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJc3RhcnRUaW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQECGRpc3RhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQhsb2NJZHhJZAMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUQJAGYCCQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMFA25vdwcJAGcCAAMFCGRpc3RhbmNlBwEPaXNVc3VhbExvY2F0aW9uAQhsb2NhdGlvbgQHbG9jVHlwZQkAkQMCCQC1CQIFCGxvY2F0aW9uAgFfBQpsb2NJZHhUeXBlAwkBAiE9AgUHbG9jVHlwZQIBVAkBAiE9AgUHbG9jVHlwZQIBRAcBCW9uTWlzc2lvbgIMdG91ckNvbnRyYWN0CGxvY2F0aW9uBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMdG91ckNvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFDHRvdXJDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwQHbG9jVHlwZQkAkQMCBQNsb2MFCmxvY0lkeFR5cGUDCQAAAgUHbG9jVHlwZQIBRAYDAwMJAAACCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBVAkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFD2xvY0lkeENvbnRpbmVudAUGbGFzdElkBwkAAAIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MHCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbm93BwESZ2V0UmVjaXBlTWF0ZXJpYWxzAQZyZWNpcGUJAGgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGcmVjaXBlBQlySWR4Q29lZmYFCUNPRUZGMk1BVAEMY2hlYXRBdHRlbXB0AwZvbGRMb2MGbmV3TG9jCWNoZWF0Q2FzZQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhZDaGVhdCBhdHRlbXB0OiBvbGRMb2M9BQZvbGRMb2MCCSwgbmV3TG9jPQUGbmV3TG9jAgcsIGNhc2U9CQCkAwEFCWNoZWF0Q2FzZQAWS1NfU0VQQVJBVEVfUFVCTElDX0tFWQcAGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQcACkRBWV9NSUxMSVMAgLiZKQAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEAC3VzZHRBc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQMJAAACAQFUBQckbWF0Y2gwASBVsdifcoeC7+XjW42sBatl3ppDoS8WuwXzGreHpfHFGAkAAgECDVVua25vd24gY2hhaW4AFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAIjM1BRQ3V2RmJ2aDRMa1BVbnJuVTF6M2puYkExcDltM1dOaHYDCQAAAgEBVAUHJG1hdGNoMAIjM011bWtHR3p0Q0tBWHBXRHF4a2Rkb2ZxWFNVYnFRa3ZTSnkJAAIBAg1Vbmtub3duIGNoYWluABFJbmZyYVVwZ3JhZGVDb3N0UwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAyK+gJQMJAAACAQFUBQckbWF0Y2gwAIDC1y8JAAIBAg1Vbmtub3duIGNoYWluAA5hcmJpdHJhZ2VEZWxheQQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAUKREFZX01JTExJUwMJAAACAQFUBQckbWF0Y2gwAODUAwkAAgECDVVua25vd24gY2hhaW4AE0RFTElWRVJZX1BVTklTSE1FTlQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAgJeTBQMJAAACAQFUBQckbWF0Y2gwAKD3NgkAAgECDVVua25vd24gY2hhaW4AA1NFUAICX18ABU1VTFQ2AMCEPQAFTVVMVDgAgMLXLwAFU1NJWkUAGQAFTVNJWkUAZAAFTFNJWkUA4QEABlhMU0laRQCQAwAHWFhMU0laRQDxBAAFSVRFUjYJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUFA25pbAEPZ2V0U3RyaW5nT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgAAEUlkeENmZ1N0YWtpbmdEYXBwAAEAEUlkeENmZ0Vjb25vbXlEYXBwAAIAFElkeENmZ0dvdmVybmFuY2VEYXBwAAMADUlkeENmZ1dsZ0RhcHAABAAUSWR4Q2ZnVG91cm5hbWVudERhcHAABwAPSWR4Q2ZnQWNyZXNEYXBwAAgBCmtleVJlc3RDZmcAAg4lc19fcmVzdENvbmZpZwEOa2V5UmVzdEFkZHJlc3MAAgwlc19fcmVzdEFkZHIBEXJlYWRSZXN0Q2ZnT3JGYWlsAQRyZXN0CQC8CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQRyZXN0CQEKa2V5UmVzdENmZwAFA1NFUAEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgdyZXN0Q2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHcmVzdENmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgADHJlc3RDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5UmVzdEFkZHJlc3MABRVkZWZhdWx0UmVzdEFkZHJlc3NTdHIAB3Jlc3RDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDHJlc3RDb250cmFjdAAPc3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnU3Rha2luZ0RhcHAAD2Vjb25vbXlDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ0Vjb25vbXlEYXBwAAtnb3ZDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ0dvdmVybmFuY2VEYXBwAAt3bGdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFDUlkeENmZ1dsZ0RhcHAAEnRvdXJuYW1lbnRDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ1RvdXJuYW1lbnREYXBwAA1hY3Jlc0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUPSWR4Q2ZnQWNyZXNEYXBwAApyZWNMYW5kTnVtAAAAC3JlY0xhbmRTaXplAAEAC3JlY1RlcnJhaW5zAAIADHJlY0NvbnRpbmVudAADAA13bGdBc3NldElkS2V5Agt3bGdfYXNzZXRJZAAKd2xnQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFC3dsZ0NvbnRyYWN0BQ13bGdBc3NldElkS2V5AhhXTEdPTEQgaXMgbm90IGlzc3VlZCB5ZXQAD2FjcmVzQXNzZXRJZEtleQIMYWNyZXNBc3NldElkAAxhY3Jlc0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQ1hY3Jlc0NvbnRyYWN0BQ9hY3Jlc0Fzc2V0SWRLZXkCF0FDUkVTIGlzIG5vdCBpc3N1ZWQgeWV0AAtyYW5kb21EZWxheQACAQlrZXlDb21taXQBB2FkZHJlc3MJAKwCAgITZmluaXNoQmxvY2tGb3JBZGRyXwUHYWRkcmVzcwERa2V5UmVzUHJvcG9ydGlvbnMAAhNyZXNUeXBlc1Byb3BvcnRpb25zARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQljb250aW5lbnQJAKwCAgIUcmVzVHlwZXNCeUNvbnRpbmVudF8FCWNvbnRpbmVudAEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQlvd25lckFkZHIJAKwCAgITc3Rha2VkTGFuZHNCeU93bmVyXwUJb3duZXJBZGRyARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQlvd25lckFkZHIJAKwCAgIUc3Rha2VkUGllY2VzQnlPd25lcl8FCW93bmVyQWRkcgEIYXNTdHJpbmcBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIYZmFpbCB0byBjYXN0IGludG8gU3RyaW5nAQVhc0ludAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgNJbnQEAW4FByRtYXRjaDAFAW4JAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBCWFzQW55TGlzdAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAglMaXN0W0FueV0EAWwFByRtYXRjaDAFAWwJAAIBAhtmYWlsIHRvIGNhc3QgaW50byBMaXN0W0FueV0BCWFzQm9vbGVhbgEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAFzBQckbWF0Y2gwBQFzCQACAQIZZmFpbCB0byBjYXN0IGludG8gQm9vbGVhbgEPbnVtUGllY2VzQnlTaXplAQhsYW5kU2l6ZQQHJG1hdGNoMAUIbGFuZFNpemUDCQAAAgIBUwUHJG1hdGNoMAUFU1NJWkUDCQAAAgIBTQUHJG1hdGNoMAUFTVNJWkUDCQAAAgIBTAUHJG1hdGNoMAUFTFNJWkUDCQAAAgICWEwFByRtYXRjaDAFBlhMU0laRQMJAAACAgNYWEwFByRtYXRjaDAFB1hYTFNJWkUJAAIBAhFVbmtub3duIGxhbmQgc2l6ZQEHaXNEaWdpdAEBcwkBCWlzRGVmaW5lZAEJALYJAQUBcwEKa2V5QmxvY2tlZAACEGNvbnRyYWN0c0Jsb2NrZWQBEWtleUxhc3RUeElkQnlVc2VyAQRhZGRyCQCsAgICD2xhc3RUeElkQnlVc2VyXwUEYWRkcgEKZml4ZWRQb2ludAIDdmFsCGRlY2ltYWxzBAZ0ZW5Qb3cJAGwGAAoAAAUIZGVjaW1hbHMAAAAABQRET1dOBAdsb3dQYXJ0CQCkAwEJAGoCBQN2YWwFBnRlblBvdwQGemVyb2VzCQCwAgIJAKQDAQUGdGVuUG93CQBkAgABCQCxAgEFB2xvd1BhcnQJAKwCAgkArAICCQCsAgIJAKQDAQkAaQIFA3ZhbAUGdGVuUG93AgEuBQZ6ZXJvZXMFB2xvd1BhcnQBD2dldFJhbmRvbU51bWJlcgMIbWF4VmFsdWUEc2FsdAdlbnRyb3B5BApyYW5kb21IYXNoCQD3AwEJAMsBAgUEc2FsdAUHZW50cm9weQkAagIJALEJAQUKcmFuZG9tSGFzaAUIbWF4VmFsdWUADWluY3ViYXRvckFkZHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQRWt0VnV4MlJoY2hTTjYzRHNEbzRiNG16NFFxektTZUR2AwkAAAIBAVQFByRtYXRjaDAFBHRoaXMJAAIBAg1Vbmtub3duIGNoYWluAAticmVlZGVyQWRkcgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BEVnVVNDVIN0VoNWRtdE5iblJOUlN0R3dVTEE3Tlk2SGIDCQAAAgEBVAUHJG1hdGNoMAUEdGhpcwkAAgECDVVua25vd24gY2hhaW4AA3B1YgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAMFFktTX1NFUEFSQVRFX1BVQkxJQ19LRVkBIKsXV48VZ+NZVEGw1nLrZpvEo9NmXtWZhlDfmDcfsgkIASBPU+IaP1So1p1SThMdRidVvbNT8yx7yVRUsP9DwbQUKAMJAAACAQFUBQckbWF0Y2gwASBPU+IaP1So1p1SThMdRidVvbNT8yx7yVRUsP9DwbQUKAkAAgECDVVua25vd24gY2hhaW4ADEVNUFRZX1BST0Q1MAGQAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEUZJVkVNSU5VVEVTTUlMTElTAOCnEgAMUkVOQU1JTkdDT1NUAMCWsQIACk1BWE5BTUVMRU4AMgAVSW5mcmFVcGdyYWRlQ29zdFNVc2R0AICt4gQADEVYUE1BVEVSSUFMUwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACm3YLtqwcDCQAAAgEBVAUHJG1hdGNoMACqp4GzCQkAAgECDVVua25vd24gY2hhaW4AB0VYUFVTRFQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAgOWadwMJAAACAQFUBQckbWF0Y2gwAIDlmncJAAIBAg1Vbmtub3duIGNoYWluAAxTX0NPU1RfQUNSRVMAgPKLqAkABUZJVkVYCQC2AgEABQAHVFdFTlRZWAkAtgIBABQACFRXRU5UWTJYCQC2AgEJAGgCABQAFAAIVFdFTlRZM1gJALYCAQkAaAIJAGgCABQAFAAUAAhUV0VOVFk0WAkAtgIBCQBoAgkAaAIJAGgCABQAFAAUABQACFRXRU5UWTVYCQC2AgEJAGgCCQBoAgkAaAIJAGgCABQAFAAUABQAFAAPUFJFU0FMRU5VTUxBTkRTAPQDARJrZXlOZXh0RnJlZUxhbmROdW0AAgtuZXh0TGFuZE51bQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBG5hbWUJAKwCAgIEbGNuXwUEbmFtZQEQa2V5TGFuZFRvQXNzZXRJZAEHbGFuZE51bQkArAICAgNsYV8FB2xhbmROdW0BHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgICBWlsYW9fBQdhc3NldElkAgFfBQlvd25lckFkZHIBEWtleUxhbmROdW1Ub093bmVyAQdsYW5kTnVtCQCsAgICA2xvXwUHbGFuZE51bQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBBG5hbWUJAKwCAgIRZHVja0J5Q3VzdG9tTmFtZV8FBG5hbWUBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBBG5hbWUJAKwCAgIUYWNjb3VudEJ5Q3VzdG9tTmFtZV8FBG5hbWUBCWtleU9sZGllcwACCm9sZGllc0xpc3QAC2NsYWltTW9kZVdoAAAADWNsYWltTW9kZUR1Y2sAAQATY2xhaW1Nb2RlV2hUaGVuRHVjawACAAhmbEhlYWx0aAAAAAtmbFRpbWVzdGFtcAAFAAdmbEJvbnVzAAYAC2ZsUHJvZHNVc2VkAAcBB25mdE5hbWUCB2xhbmROdW0IbGFuZFNpemUJAKwCAgkArAICBQpMQU5EUFJFRklYBQdsYW5kTnVtBQhsYW5kU2l6ZQEIdG9Wb2x1bWUCBmFtb3VudAdwa2dTaXplBARwa2dzAwkAZwIFBmFtb3VudAAACQBpAgkAZQIJAGQCBQZhbW91bnQFB3BrZ1NpemUAAQUHcGtnU2l6ZQkBAS0BCQBpAgkAZQIJAGQCCQEBLQEFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQBoAgUEcGtncwUFTVVMVDgBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBXRvdGFsB3dlaWdodHMEA3N1bQkAZAIJAGQCCQBkAgkAZAIJAGQCCQCRAwIFB3dlaWdodHMAAAkAkQMCBQd3ZWlnaHRzAAEJAJEDAgUHd2VpZ2h0cwACCQCRAwIFB3dlaWdodHMAAwkAkQMCBQd3ZWlnaHRzAAQJAJEDAgUHd2VpZ2h0cwAFAwkAZwIAAAUDc3VtCQACAQIQWmVybyB3ZWlnaHRzIHN1bQQFbm9ybTYJAGsDBQV0b3RhbAUFTVVMVDYFA3N1bQoBCm5vcm1hbGl6ZXICA2FjYwRlbGVtCQDNCAIFA2FjYwkAawMFBGVsZW0FBW5vcm02BQVNVUxUNgoAAiRsBQd3ZWlnaHRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpub3JtYWxpemVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGARJnZXROZWVkZWRNYXRlcmlhbHMBBXRvdGFsBAVwcm9wcwkAtQkCCQEFdmFsdWUBCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACAV8DCQECIT0CCQCQAwEFBXByb3BzBQZOVU1SRVMJAAIBAhZXcm9uZyBwcm9wb3J0aW9ucyBkYXRhBAFyCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAACQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwABCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwACCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwADCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAECQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAFBQNuaWwJARNkaXN0cmlidXRlQnlXZWlnaHRzAgUFdG90YWwFAXIBEXN1YnRyYWN0TWF0ZXJpYWxzAwxzaG91bGRVc2VNYXQDaGFzCXRvdGFsTmVlZAQEbmVlZAkBEmdldE5lZWRlZE1hdGVyaWFscwEFCXRvdGFsTmVlZAoBCnN1YnRyYWN0b3ICA2FjYwNpZHgEBnJlc3VsdAkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNoYXMFA2lkeAkAkQMCBQRuZWVkBQNpZHgDCQBmAgAABQZyZXN1bHQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJ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BQVwTGlzdAUIb2NjdXBpZWQFBGZyZWUEBGhlYWQJAMkBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgEBGN1cnIJALEJAQkAyQECCQDKAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4AAgEBHRhaWwJAMoBAgUFcExpc3QJAGgCAAgJAGQCBQpwcm9kdWN0SWR4AAEEBnJlY2lwZQkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgFCnByb2R1Y3RJZHgCAV8DAwkBASEBBQppc1Bvc2l0aXZlCQBmAgUFY291bnQFBGN1cnIHCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCVlvdSBoYXZlIAkApAMBBQRjdXJyAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAITLCBidXQgdHJpZWQgdG8gdXNlIAkApAMBBQVjb3VudAQGbmV3QW10AwMJAQEhAQUKaXNQb3NpdGl2ZQkBFWNoZWNrU3RhdFJlcXVpcmVtZW50cwIFCWR1Y2tTdGF0cwkAtQkCCQCRAwIFBnJlY2lwZQUQcklkeFJlcXVpcmVtZW50cwIBLAcJAGUCBQRjdXJyBQVjb3VudAkAZAIFBGN1cnIFBWNvdW50BAhkZWx0YVZvbAkAZQIJAQh0b1ZvbHVtZQIFBm5ld0FtdAUOUFJPRFVDVFBLR1NJWkUJAQh0b1ZvbHVtZQIFBGN1cnIFDlBST0RVQ1RQS0dTSVpFCQCVCgMJAMsBAgkAywECBQRoZWFkCQCaAwEFBm5ld0FtdAUEdGFpbAkAZAIFCG9jY3VwaWVkBQhkZWx0YVZvbAkAZQIFBGZyZWUFCGRlbHRhVm9sAQhhZGRQcm9kQgcGaWR4Q250BXBMaXN0CmlzUG9zaXRpdmUHc2VnbWVudAdtYWluQXV4BHNsb3QJZHVja1N0YXRzBAVwYXJ0cwkAtQkCBQZpZHhDbnQCAToDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAihJbmNvcnJlY3QgZm9ybWF0LCBzaG91bGQgYmUgaW5kZXg6YW1vdW50AwMJAQEhAQUKaXNQb3NpdGl2ZQkBAiE9AgkAsQIBCQCRAwIFBXBhcnRzAAAAAgcJAAIBAitQcm9kdWN0IGlkeCBzaG91bGQgYmUgMiBkaWdpdHMsIHplcm8gcGFkZGVkBApwcm9kdWN0SWR4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAAQFY291bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwABAwMJAGYCAAAFCnByb2R1Y3RJZHgGCQBnAgUKcHJvZHVjdElkeAkAkAMBBRBwcm9kdWN0aW9uTWF0cml4CQACAQITVW5rbm93biBwcm9kdWN0IGlkeAMJAGYCAAAFBWNvdW50CQACAQIXQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmUDCQBmAgUFY291bnQFDU1BWFBST0RJTlNMT1QJAAIBCQCsAgIJAKwCAgkArAICAhRDYW4ndCBwdXQgbW9yZSB0aGFuIAkApAMBBQ1NQVhQUk9ESU5TTE9UAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAMJAAACBQVjb3VudAAACQCUCgIFBXBMaXN0BwQEaGVhZAkAyQECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAQEY3VycgkAsQkBCQDJAQIJAMoBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgACAQEdGFpbAkAygECBQVwTGlzdAkAaAIACAkAZAIFCnByb2R1Y3RJZHgAAQQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAUKcHJvZHVjdElkeAIBXwMDCQEBIQEFCmlzUG9zaXRpdmUJAGYCBQVjb3VudAUEY3VycgcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJWW91IGhhdmUgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AhMsIGJ1dCB0cmllZCB0byB1c2UgCQCkAwEFBWNvdW50BAlpc0JpZ0l0ZW0DAwkBASEBBQppc1Bvc2l0aXZlCQEVY2hlY2tTdGF0UmVxdWlyZW1lbnRzAgUJZHVja1N0YXRzCQC1CQIJAJEDAgUGcmVjaXBlBRBySWR4UmVxdWlyZW1lbnRzAgEsBwQGY29tcGF0CQCRAwIFBnJlY2lwZQUJcklkeFNsb3RzAwkAAAIFBmNvbXBhdAIACQACAQIXSXRlbSBjYW5ub3QgYmUgZXF1aXBwZWQEAWMJAQ1wYXJzZUludFZhbHVlAQUGY29tcGF0BARjU2VnCQBpAgUBYwBkAwkBAiE9AgUHc2VnbWVudAUEY1NlZwkAAgECFFNlZ21lbnQgaW5jb21wYXRpYmxlBAhjTWFpbkF1eAkAaQIJAGoCBQFjAGQACgMJAQIhPQIFB21haW5BdXgFCGNNYWluQXV4CQACAQIRU2xvdCBpbmNvbXBhdGlibGUECWNOdW1TbG90cwkAagIFAWMACgMDCQECIT0CBQRzbG90AAAJAGYCBQljTnVtU2xvdHMAAQcJAAIBAh5CaWcgaXRlbXMgc2hvdWxkIG9jY3VweSBzbG90IDAJAGYCBQljTnVtU2xvdHMAAQcJAJQKAgkAywECCQDLAQIFBGhlYWQJAJoDAQkAZAIFBGN1cnIDBQppc1Bvc2l0aXZlBQVjb3VudAkBAS0BBQVjb3VudAUEdGFpbAUJaXNCaWdJdGVtAQtzbG90c0dyb3VwQgYBZwRicEluCmlzUG9zaXRpdmUHc2VnbWVudAdtYWluQXV4BXN0YXRzAwkBAiE9AgUBZwIABAVzbG90cwkAtQkCBQFnAgEsAwkAZgIJAJADAQUFc2xvdHMFCE1BWFNMT1RTCQACAQISV3Jvbmcgc2xvdHMgZm9ybWF0BAJzMAkAkQMCBQVzbG90cwAABAJzMQMJAGYCCQCQAwEFBXNsb3RzAAEJAJEDAgUFc2xvdHMAAQIAAwMJAAACBQJzMAIACQAAAgUCczECAAcFBGJwSW4EBXRtcFMwAwkBAiE9AgUCczACAAkBCGFkZFByb2RCBwUCczAFBGJwSW4FCmlzUG9zaXRpdmUFB3NlZ21lbnQFB21haW5BdXgAAAUFc3RhdHMJAJQKAgUEYnBJbgcDCQECIT0CBQJzMQIAAwgFBXRtcFMwAl8yCQACAQIeQmlnIGl0ZW0gYWxyZWFkeSBvY2N1cGllcyBzbG90CAkBCGFkZFByb2RCBwUCczEIBQV0bXBTMAJfMQUKaXNQb3NpdGl2ZQUHc2VnbWVudAUHbWFpbkF1eAABBQVzdGF0cwJfMQgFBXRtcFMwAl8xBQRicEluAQZkcmVzc0IEB3NlZ0xpc3QGcEJ5dGVzCmlzUG9zaXRpdmUFc3RhdHMKAQdzZWdtZW50AgNhY2MDc2VnBAFqCAUDYWNjAl8xBAdtYWluQXV4CQC1CQIFA3NlZwIBOwMJ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ZXdQcm9kQgkBBmRyZXNzQgQFBmN1cnJFcQUJdGVtcFByb2RCBwUFc3RhdHMJAAACBQhuZXdQcm9kQgUIbmV3UHJvZEIBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECHByb3BMaXN0DXRlcnJhaW5Db3VudHMNbGFuZFNpemVJbmRleARzaWduAwkBAiE9AgkAkAMBBQhwcm9wTGlzdAUGTlVNUkVTCQACAQIWV3JvbmcgcHJvcG9ydGlvbnMgZGF0YQoBB3VwZGF0ZXICA2FjYwFpBAZyZXN1bHQJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvcExpc3QFAWkJAGgCCQBoAgUEc2lnbgkAkQMCBQ10ZXJyYWluQ291bnRzBQFpBQ1sYW5kU2l6ZUluZGV4AwkAZgIAAAUGcmVzdWx0CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhZQYW5pYyEgUGllY2VzIG9mIHR5cGU9CQCkAwEFAWkCBywgc2lnbj0JAKQDAQUEc2lnbgITLCB0ZXJyYWluQ291bnRzW2ldPQkApAMBCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkCECwgbGFuZFNpemVJbmRleD0JAKQDAQUNbGFuZFNpemVJbmRleAkAzQgCBQNhY2MJAKQDAQUGcmVzdWx0CgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQd1cGRhdGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGARF1cGRhdGVQcm9wb3J0aW9ucwMNdGVycmFpbkNvdW50cw1sYW5kU2l6ZUluZGV4BHNpZ24ECHByb3BMaXN0CQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAILMF8wXzBfMF8wXzACAV8JALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQhwcm9wTGlzdAUNdGVycmFpbkNvdW50cwUNbGFuZFNpemVJbmRleAUEc2lnbgIBXwENY291bnRUZXJyYWlucwEIdGVycmFpbnMJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBQQABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUIAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFDAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBRAABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUUAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFGAAEFA25pbAEGYWRkUmVzBQpjdXJyZW50UmVzDXRlcnJhaW5Db3VudHMJZGVsdGFUaW1lDWxhbmRTaXplSW5kZXgXZGFpbHlCeVBpZWNlV2l0aEJvbnVzZXMKAQVhZGRlcgIDYWNjAWkECXJlc09mVHlwZQkAaAIJAGgCCQBrAwUJZGVsdGFUaW1lBRdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwUJREFZTUlMTElTCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkFDWxhbmRTaXplSW5kZXgJAM0IAgUDYWNjCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKY3VycmVudFJlcwUBaQUJcmVzT2ZUeXBlBAFyCgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQVhZGRlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAuQkCBQFyAgFfAQl2aXJ0Q2xhaW0EDXRlcnJhaW5Db3VudHMJZGVsdGFUaW1lDWxhbmRTaXplSW5kZXgXZGFpbHlCeVBpZWNlV2l0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ZGVsdGFDb250CQBpAgUGclRvdGFsCQBoAgUKREVDSU1BVElPTgUOTlVNX0NPTlRJTkVOVFMEDSR0MDIwMjM2MjA2NTUDAwkAZwIFD2NvbnRpbmVudFByZXNldAAACQBmAgUOTlVNX0NPTlRJTkVOVFMFD2NvbnRpbmVudFByZXNldAcJAJQKAgUPY29udGluZW50UHJlc2V0BQVzZWVkMAMJAAACBQZyVG90YWwAAAkBB2dlblJhbmQCBQ5OVU1fQ09OVElORU5UUwUFc2VlZDAEDSR0MDIwNDMwMjA0OTYJAQdnZW5SYW5kAgkAZAIFBnJUb3RhbAkAaAIFCWRlbHRhQ29udAUOTlVNX0NPTlRJTkVOVFMFBXNlZWQwBAFyCAUNJHQwMjA0MzAyMDQ5NgJfMQQDb3V0CAUNJHQwMjA0MzAyMDQ5NgJfMgoBBHN1YnICA2FjYwJlbAkAzQgCBQNhY2MJAGUCBQZtYXhTdW0FAmVsBAVjb21wbAoAAiRsBQhjb250U3VtcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEEc3VicgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAlAoCCQEIZmluZFNsb3QDBQVjb21wbAUBcgUJZGVsdGFDb250BQNvdXQEB2NvbnRJZHgIBQ0kdDAyMDIzNjIwNjU1Al8xBAVzZWVkMQgFDSR0MDIwMjM2MjA2NTUCXzIEBnRhcmdldAkAkQMCBRV0YXJnZXRGcmVxQnlDb250aW5lbnQFB2NvbnRJZHgEBmFjdHVhbAkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQkAkQMCBQpjb250aW5lbnRzBQdjb250SWR4AgswXzBfMF8wXzBfMAIBXwoBBnRvSW50cwIDYWNjAmVsCQDNCAIFA2FjYwkBDXBhcnNlSW50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cnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkBQp3aE9jY3VwaWVkCQC5CQIJAMwIAgkApAMBBQh3aExvY2tlZAkAzAgCCQCkAwEFA29jYwkAzAgCCQCkAwEJAGUCCQBlAgUHd2hUb3RhbAUId2hMb2NrZWQFA29jYwkAzAgCCQCkAwEFB3doVG90YWwFA25pbAIBXwkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAndoBQh3aElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAndoBQh3aElkeFJlcwILMF8wXzBfMF8wXzAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCBQZ3aExvZnQFA25pbAEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQljdXJyZW50V2gEC29jY3VwaWVkVm9sCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQljdXJyZW50V2gED2N1cnJXaExvY2tlZFZvbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkCQBlAgkAZQIJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwULb2NjdXBpZWRWb2wFD2N1cnJXaExvY2tlZFZvbAEJbW92ZVN0dWZmAwpjYXJnb1BhcnRzCWN1cnJlbnRXaAtjdXJyZW50UGFjawMJAQIhPQIJAJADAQUKY2FyZ29QYXJ0cwADCQACAQI0Y2FyZ29MaXN0U3RyIHNob3VsZCBjb250YWluIGV4YWN0bHkgMiAnOicgc2VwYXJhdG9ycwQIcmVzUGFydHMJALUJAgkAkQMCBQpjYXJnb1BhcnRzAAACAV8ECG1hdFBhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwABAgFfBAlwcm9kUGFydHMDCQAAAgkAkQMCBQpjYXJnb1BhcnRzAAICAAUDbmlsCQC8CQIJAJEDAgUKY2FyZ29QYXJ0cwACAgFfAwkBAiE9AgkAkAMBBQhyZXNQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgcmVzb3VyY2VzIHNob3VsZCBiZSBwYXNzZWQDCQECIT0CCQCQAwEFCG1hdFBhcnRzBQZOVU1SRVMJAAIBAiBBbGwgNiBtYXRlcmlhbHMgc2hvdWxkIGJlIHBhc3NlZAQLd2hTcGFjZUxlZnQJARVnZXRXYXJlaG91c2VTcGFjZUxlZnQBBQljdXJyZW50V2gECWN1cnJXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8ECWN1cnJXaE1hdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8ECmN1cnJXaFByb2QDCQAAAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIBXwQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDmN1cnJlbnRQYWNrTWF0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBA9jdXJyZW50UGFja1Byb2QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8KAQNtdlICA2FjYwRpdGVtBAFpCAUDYWNjAl8xBAJhbQkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAN3aHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQljdXJyV2hSZXMFAWkEA2JwcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpAwkAAAIFAmFtAAAJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCRAwIFCWN1cnJXaFJlcwUBaQkAzQgCCAUDYWNjAl8zCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpCAUDYWNjAl80AwkAZgIFAmFtAAADCQBmAgUCYW0FA2JwcgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtl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SWQECHVzZXJBZGRyCQClCAEFBmNhbGxlcgQGYmlnTnVtCQEDYWJzAQkAngMBBQR0eElkBAdmcmVlTnVtCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUPUFJFU0FMRU5VTUxBTkRTAAEEB2xhbmROdW0JAKQDAQUHZnJlZU51bQQMY29udGluZW50SWR4CQCgAwEJALsCAgUGYmlnTnVtBQVGSVZFWAQIdGVycmFpbnMJAQtnZW5UZXJyYWlucwIFBmJpZ051bQUMY29udGluZW50SWR4BAljb250aW5lbnQJAJEDAgUKY29udGluZW50cwUMY29udGluZW50SWR4BAVpc3N1ZQkAwggFCQEHbmZ0TmFtZQIFB2xhbmROdW0CAVMJALkJAgkAzAgCBQdsYW5kTnVtCQDMCAICAVMJAMwIAgUIdGVycmFpbnMJAMwIAgUJY29udGluZW50BQNuaWwCAV8AAQAABwQHYXNzZXRJZAkAuAgBBQVpc3N1ZQQCaWQJANgEAQUHYXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQkAzAgCBQVpc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0FAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQJpZAUIdXNlckFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUIdXNlckFkZHIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUCaWQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFAmlkBQh1c2VyQWRkcgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgABBQdhc3NldElkBQNuaWwJAJQKAgUCaWQFCWNvbnRpbmVudAEMZmxpZ2h0Q29tbW9uAwh1c2VyQWRkcgdtZXNzYWdlA3NpZwMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAQFcGFydHMJALwJAgkAsAkBBQdtZXNzYWdlAgE7BAlmbGlnaHRMb2cJALwJAgkAkQMCBQVwYXJ0cwAAAgF8BAJocAkAtQkCCQCRAwIFCWZsaWdodExvZwUIZmxIZWFsdGgCAV8EBWN1ckhQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAAQFbmV3SFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAABBAtuZXdMb2NUeFZlcgkAtQkCCQCRAwIFBXBhcnRzAAECAToEC25ld0xvY2F0aW9uCQCRAwIFC25ld0xvY1R4VmVyAAAEBHRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlmbGlnaHRMb2cFC2ZsVGltZXN0YW1wAwMJAGYCBQR0aW1lCQBkAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBgkAZgIJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMFBHRpbWUJAAIBCQCsAgIJAKwCAgkArAICAhxzaWduYXR1cmUgb3V0ZGF0ZWQ6IGxvZ1RpbWU9CQCkAwEFBHRpbWUCCSwgYmNUaW1lPQkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJdHhGcm9tTXNnCQCRAwIFC25ld0xvY1R4VmVyAAEEBmxhc3RUeAkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5TGFzdFR4SWRCeVVzZXIBBQh1c2VyQWRkcgIAAwkBAiE9AgUGbGFzdFR4BQl0eEZyb21Nc2cJAAIBCQCsAgIJAKwCAgkArAICAh5UeCBpZHMgZG9uJ3QgbWF0Y2ghIEluIHN0YXRlOiAFBmxhc3RUeAIKLCBpbiBtc2c6IAUJdHhGcm9tTXNnBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQMb2xkRnJvbVN0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQECIT0CBQxvbGRGcm9tU3RhdGUFBWN1ckhQCQACAQkArAICCQCsAgIJAKwCAgIKb2xkSGVhbHRoPQkApAMBBQxvbGRGcm9tU3RhdGUCLyBmcm9tIHN0YXRlIGRvZXMgbm90IG1hdGNoIG9uZSBmcm9tIGZsaWdodCBsb2c9CQCkAwEFBWN1ckhQAwkAZwIAAAUFY3VySFAJAAIBAh5Zb3UgY2FuJ3QgZmx5IHdpdGggemVybyBoZWFsdGgDCQEBIQEJARdjYW5XZWFyQ3VycmVudEVxdWlwbWVudAEFC2R1Y2tBc3NldElkCQACAQIWRXF1aXBtZW50IGluY29tcGF0aWJsZQQFYm9udXMDCQBmAgkAkAMBBQlmbGlnaHRMb2cFB2ZsQm9udXMJAJEDAgUJZmxpZ2h0TG9nBQdmbEJvbnVzAgAECHByb2RVc2VkAwkAZgIJAJADAQUJZmxpZ2h0TG9nBQtmbFByb2RzVXNlZAkAkQMCBQlmbGlnaHRMb2cFC2ZsUHJvZHNVc2VkAgAECnNlbnRBbW91bnQDAwkAZgIFBW5ld0hQAAAJAAACBQVib251cwIBJAcJAQVhc0ludAEJAPwHBAUMcmVzdENvbnRyYWN0Ag1zZW5kVXNkdFByaXplCQDMCAIFCHVzZXJBZGRyBQNuaWwFA25pbAAACQCXCgUFBW5ld0hQBQtkdWNrQXNzZXRJZAUKc2VudEFtb3VudAULbmV3TG9jYXRpb24FCHByb2RVc2VkAQxhcHBseUJvbnVzZXMCC2xhbmRBc3NldElkBnBpZWNlcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECWFydFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABARhZGQ2CQBpAgUKaW5mcmFMZXZlbAAGBARhZGQ3CQBpAgUKaW5mcmFMZXZlbAAHCQBkAgkAZAIFD0RBSUxZUkVTQllQSUVDRQkAawMFD0RBSUxZUkVTQllQSUVDRQkAZAIJAGQCBQppbmZyYUxldmVsBQRhZGQ2CQBoAgACBQRhZGQ3AAUJAGsDBQ9EQUlMWVJFU0JZUElFQ0UFCWFydFBpZWNlcwkAaAIFBnBpZWNlcwAFARRjaGVja0NsYWltQ29uZGl0aW9ucwMEYWRkcgljbGFpbU1vZGUNbGFuZEFzc2V0SWRJbgQNJHQwMzY2MzYzNzE3NQMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQCUCgIFDWxhbmRBc3NldElkSW4JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OBANsb2MJALUJAgkBBXZhbHVlAQULY3VyTG9jYXRpb24CAV8DCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBTAkAAgEJAKwCAgkArAICAhZEdWNrIGxvY2F0aW9uIHR5cGUgaXMgCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIRLCBidXQgc2hvdWxkIGJlIEwJAJQKAgkAkQMCBQNsb2MFCGxvY0lkeElkBQtkdWNrQXNzZXRJZAQLbGFuZEFzc2V0SWQIBQ0kdDAzNjYzNjM3MTc1Al8xBAZkdWNrSWQIBQ0kdDAzNjYzNjM3MTc1Al8yBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQd0aW1lS2V5CQCsAgIJAKwCAgIFTGFuZCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfCQCWCgQFBmR1Y2tJZAULbGFuZEFzc2V0SWQFAWQFCXNhdmVkVGltZQEQY2xhaW1SZXNJbnRlcm5hbAQEYWRkcgZhbW91bnQJY2xhaW1Nb2RlDWxhbmRBc3NldElkSW4DCQBmAgAABQZhbW91bnQJAAIBAg9OZWdhdGl2ZSBhbW91bnQEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFCWNsYWltTW9kZQUNbGFuZEFzc2V0SWRJbgQIbGFuZFNpemUJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAggFAWMCXzMFC3JlY1RlcnJhaW5zBAlkZWx0YVRpbWUJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAgFAWMCXzQDCQBmAgAABQlkZWx0YVRpbWUJAAIBCQCsAgIJAKwCAgkArAICAiZTYXZlZCB0aW1lc3RhbXAgaXMgaW4gZnV0dXJlLCBzYXZlZCA9IAkApAMBCAUBYwJfNAIMLCBjdXJyZW50ID0gCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBBQhsYW5kU2l6ZQQWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDGFwcGx5Qm9udXNlcwIIBQFjAl8yBQZwaWVjZXMECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQUGcGllY2VzBQlEQVlNSUxMSVMDCQBmAgUGYW1vdW50BQhhdmFpbFJlcwkAAgEJAKwCAgkArAICCQCsAgICIk5vdCBlbm91Z2ggcmVzb3VyY2VzLCBhdmFpbGFibGUgPSAJAKQDAQUIYXZhaWxSZXMCDiwgcmVxdWVzdGVkID0gCQCkAwEFBmFtb3VudAQMbmV3RGVsdGFUaW1lCQBrAwkAZQIFCGF2YWlsUmVzBQZhbW91bnQFCURBWU1JTExJUwkAaAIFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UFBnBpZWNlcwQMbmV3VGltZXN0YW1wCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFDG5ld0RlbHRhVGltZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQKcmVzVG9DbGFpbQkBCXZpcnRDbGFpbQQFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEIBQFjAl8yBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQgFAWMCXzIAAAQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQEbG9mdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBAt3aFNwYWNlTGVmdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUDAwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAGYCBQZhbW91bnQFC3doU3BhY2VMZWZ0BwkAAgEJAKwCAgkArAICAgVPbmx5IAkApAMBBQt3aFNwYWNlTGVmdAIYIHNwYWNlIGxlZnQgaW4gd2FyZWhvdXNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDGN1cnJlbnRXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8EDSR0MDM5NTQ5NDA0MjADCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAlgoECQEGYWRkUmVzBQUMY3VycmVudFdoUmVzBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQIBQpyZXNUb0NsYWltAl8yCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUIBQpyZXNUb0NsYWltAl8yAwkAAAIFCWNsYWltTW9kZQUNY2xhaW1Nb2RlRHVjawkAlgoECQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMJAQZhZGRSZXMFBQ5jdXJyZW50UGFja1JlcwUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUEBWRpc3RyCQENZGlzdHJpYnV0ZVJlcwQFDGN1cnJlbnRXaFJlcwUOY3VycmVudFBhY2tSZXMFCnJlc1RvQ2xhaW0FC3doU3BhY2VMZWZ0BAR3aEFtCQCXAwEJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUJAMwIAggFCnJlc1RvQ2xhaW0CXzIFA25pbAkAlgoECAUFZGlzdHICXzEIBQVkaXN0cgJfMgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAUEd2hBbQkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBQR3aEFtBAV3aFJlcwgFDSR0MDM5NTQ5NDA0MjACXzEEBWJwUmVzCAUNJHQwMzk1NDk0MDQyMAJfMgQFbG9mdE8IBQ0kdDAzOTU0OTQwNDIwAl8zBAVsb2Z0RggFDSR0MDM5NTQ5NDA0MjACXzQJAJcKBQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBCAUBYwJfMgUMbmV3VGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgIBQFjAl8yBQRhZGRyBQxuZXdUaW1lc3RhbXAFA25pbAUFYnBLZXkJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCBQVicFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAUFd2hLZXkJAMwIAgkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzCQDMCAIFBXdoUmVzCQDMCAIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAkAzAgCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCCQCRAwIFBGxvZnQFCXZvbExvY2tlZAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkAkQMCBQRsb2Z0BQh2b2xUb3RhbAUDbmlsAgFfBQNuaWwBCGNsYWltQWxsBARhZGRyC2xhbmRBc3NldElkBnBpZWNlcwljbGFpbU1vZGUEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBBXZhbHVlAQkAnwgBBQd0aW1lS2V5BAhhdmFpbFJlcwkAaAIJAGsDCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCXNhdmVkVGltZQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMFCURBWU1JTExJUwUGcGllY2VzCQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFCGF2YWlsUmVzBQljbGFpbU1vZGUFC2xhbmRBc3NldElkAQ11cEluZnJhQ29tbW9uBAxzaG91bGRVc2VNYXQGY2FsbGVyDXBheW1lbnRBbW91bnQLbGFuZEFzc2V0SWQEBGFkZHIJAKUIAQUGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBRNjbGFpbU1vZGVXaFRoZW5EdWNrBQtsYW5kQXNzZXRJZAQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUECGluZnJhS2V5CQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEIBQFjAl8yBAhjdXJMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQhpbmZyYUtleQAAAwMJAQEhAQUYS1NfQUxMT1dfQklHX0lORlJBX01FUkdFCQBnAgUIY3VyTGV2ZWwAAwcJAAIBAiZDdXJyZW50bHkgbWF4IGluZnJhc3RydWN0dXJlIGxldmVsID0gMwQIbWF4SW5mcmEJAGQCCQBpAgkBBHNxcnQEBQZwaWVjZXMAAAAABQRET1dOAAUAAgQIbmV3TGV2ZWwJAGQCBQhjdXJMZXZlbAABAwMFGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQkAZgIFCG5ld0xldmVsBQhtYXhJbmZyYQcJAAIBCQCsAgICJUN1cnJlbnRseSBtYXggaW5mcmFzdHJ1Y3R1cmUgbGV2ZWwgPSAJAKQDAQUIbWF4SW5mcmEEBGNvc3QJAGsDBRVJbmZyYVVwZ3JhZGVDb3N0U1VzZHQJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQMDCQEBIQEFDHNob3VsZFVzZU1hdAkBAiE9AgUNcGF5bWVudEFtb3VudAUEY29zdAcJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQRjb3N0BAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbUxpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EB21hdFVzZWQJAGsDBRFJbmZyYVVwZ3JhZGVDb3N0UwkAaAIFBnBpZWNlcwUIbmV3TGV2ZWwFBVNTSVpFBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwUMc2hvdWxkVXNlTWF0BQVtTGlzdAUHbWF0VXNlZAIBXwQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIIBQFjAl8yBQZwaWVjZXMFE2NsYWltTW9kZVdoVGhlbkR1Y2sEBndoRGF0YQgFC2NsYWltUmVzdWx0Al81BAZvbGRWb2wJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUGd2hEYXRhBQt3aElkeExldmVscwQKbmV3Vm9sRGF0YQkAuQkCCQDMCAIJAJEDAgkAtQkCCQCRAwIFBndoRGF0YQULd2hJZHhMZXZlbHMCAV8AAAkAzAgCCQCkAwEFCG5ld0xldmVsBQNuaWwCAV8EBm5ld1ZvbAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQUKbmV3Vm9sRGF0YQQEbG9mdAkAtQkCCQCRAwIFBndoRGF0YQUJd2hJZHhMT0ZUAgFfBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAkAzAgCCQCkAwEJAGUCCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUFBm5ld1ZvbAUGb2xkVm9sCQDMCAIJAKQDAQUGbmV3Vm9sBQNuaWwCAV8JAJUKAwkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhpbmZyYUtleQUIbmV3TGV2ZWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICCAUBYwJfMgUEYWRkcgUIbmV3TGV2ZWwJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAggFC2NsYWltUmVzdWx0Al8zBQhicElkeFJlcwkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al80CQC5CQIJAMwIAgUKbmV3Vm9sRGF0YQkAzAgCCQCRAwIFBndoRGF0YQUId2hJZHhSZXMJAMwIAgkAkQMCBQZ3aERhdGEFCHdoSWR4TWF0CQDMCAIJAJEDAgUGd2hEYXRhBQl3aElkeFByb2QJAMwIAgUKbmV3TG9mdFN0cgUDbmlsAgE6BQNuaWwIBQtjbGFpbVJlc3VsdAJfMQUIbmV3TGV2ZWwFB21hdFVzZWQBE3VwZGF0ZVN0YXRzSW50ZXJuYWwEBmx2bEtleQV4cEtleQlwb2ludHNLZXkHZGVsdGFYUAQCeHAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUFeHBLZXkAAAQFbmV3WFAJAGQCBQJ4cAUHZGVsdGFYUAQJbHZsUG9pbnRzCQEHbGV2ZWxVcAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUGbHZsS2V5AAAFBW5ld1hQCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFBmx2bEtleQkAkQMCBQlsdmxQb2ludHMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUFeHBLZXkFBW5ld1hQCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwb2ludHNLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCXBvaW50c0tleQAACQCRAwIFCWx2bFBvaW50cwABBQNuaWwFBW5ld1hQARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAILZHVja0Fzc2V0SWQHZGVsdGFYUAkBE3VwZGF0ZVN0YXRzSW50ZXJuYWwECQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQJAQlrZXlEdWNrWFABBQtkdWNrQXNzZXRJZAkBEWtleUR1Y2tGcmVlUG9pbnRzAQULZHVja0Fzc2V0SWQFB2RlbHRhWFABFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBGFkZHIHZGVsdGFYUAkBE3VwZGF0ZVN0YXRzSW50ZXJuYWwECQEMa2V5VXNlckxldmVsAQUEYWRkcgkBCWtleVVzZXJYUAEFBGFkZHIJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIFB2RlbHRhWFABEmFjdGl2YXRlT25ib2FyZEFydAEEYWRkcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFBGFkZHIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwkBASEBCQEJaXNEZWZpbmVkAQUFcmVmQnkJAAIBAilZb3UgYXJlIG5vdCBlbGlnaWJsZSBmb3IgT05CT0FSRCBhcnRpZmFjdAQGYXJ0S2V5CQEca2V5T25ib2FyZEFydER1Y2tBY3RpdmF0ZWRCeQEFBGFkZHIEB2FydER1Y2sJAKIIAQUGYXJ0S2V5AwkBCWlzRGVmaW5lZAEFB2FydER1Y2sJAAIBCQCsAgICL1lvdSBhbHJlYWR5IHVzZWQgeW91ciBPTkJPQVJEIGFydGlmYWN0IG9uIGR1Y2sgCQEFdmFsdWUBBQdhcnREdWNrBBBkdWNrQWN0aXZhdG9yS2V5CQEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawEFC2R1Y2tBc3NldElkBA1kdWNrQWN0aXZhdG9yCQCiCAEFEGR1Y2tBY3RpdmF0b3JLZXkDCQEJaXNEZWZpbmVkAQUNZHVja0FjdGl2YXRvcgkAAgEJAKwCAgkArAICCQCsAgICCVRoZSBkdWNrIAULZHVja0Fzc2V0SWQCNCBhbHJlYWR5IGdvdCBwb2ludHMgZnJvbSBPTkJPQVJEIGFydGlmYWN0IGZyb20gdXNlciAJAQV2YWx1ZQEFDWR1Y2tBY3RpdmF0b3IJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZhcnRLZXkFC2R1Y2tBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFEGR1Y2tBY3RpdmF0b3JLZXkFBGFkZHIFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQl4cE9uYm9hcmQCXzEBEmFjdGl2YXRlUHJlc2FsZUFydAIEYWRkcg1sYW5kQXNzZXRJZEluBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBRNjbGFpbU1vZGVXaFRoZW5EdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBA1hY3RpdmF0aW9uS2V5CQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAMJAGYCCQELdmFsdWVPckVsc2UCCQCfCAEFDWFjdGl2YXRpb25LZXkAAAAACQACAQIlUHJlc2FsZSBhcnRpZmFjdCBpcyBhbHJlYWR5IGFjdGl2YXRlZAMJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAggFAWMCXzMFCnJlY0xhbmROdW0FD1BSRVNBTEVOVU1MQU5EUwkAAgEJAKwCAgkArAICCQCsAgIFCkxBTkRQUkVGSVgCASAFC2xhbmRBc3NldElkAiUgaXMgbm90IGVsaWdpYmxlIGZvciBwcmVzYWxlIGFydGlmYWN0BAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUTY2xhaW1Nb2RlV2hUaGVuRHVjawkAzQgCCQDNCAIJAM0IAggFC2NsYWltUmVzdWx0Al8xCQEMSW50ZWdlckVudHJ5AgUNYWN0aXZhdGlvbktleQUGcGllY2VzCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzIJALkJAggFC2NsYWltUmVzdWx0Al8zAgE6CQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzQJALkJAggFC2NsYWltUmVzdWx0Al81AgE6AQ9jaGVja1RvdXJuYW1lbnQBC2R1Y2tBc3NldElkBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBXREYXRhCQELZ2V0VG91ckRhdGECBRJ0b3VybmFtZW50Q29udHJhY3QFBmxhc3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMDCQECIT0CCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlAgFUBwMDAwkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUPbG9jSWR4Q29udGluZW50BQZsYXN0SWQJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcJAAIBAipZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gdGhlIHRvdXJuYW1lbnQJAQlhc0Jvb2xlYW4BCQD8BwQFBHRoaXMCFmV4aXRUb3VybmFtZW50SW50ZXJuYWwJAMwIAgULZHVja0Fzc2V0SWQFA25pbAUDbmlsAQ1jaGVja0RlbGl2ZXJ5AQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAMJAQIhPQIJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUCAUQHBAlzdGFydFRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUPbG9jSWR4Q29udGluZW50BAhkaXN0YW5jZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQhsb2NJZHhJZAMDCQBmAgkAZAIFCXN0YXJ0VGltZQUSVEVOX01JTlVURVNfTUlMTElTBQNub3cJAGYCAAEFCGRpc3RhbmNlBwkAAgECIFlvdXIgZHVjayBpcyBvbiBkZWxpdmVyeSBtaXNzaW9uCQEJYXNCb29sZWFuAQkA/AcEBQR0aGlzAhRleGl0RGVsaXZlcnlJbnRlcm5hbAkAzAgCBQtkdWNrQXNzZXRJZAUDbmlsBQNuaWwBEmV4aXREZWxpdmVyeUNvbW1vbgQLZHVja0Fzc2V0SWQFY2hlY2sFbmV3SFAFc2NvcmUEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQ9sb2NJZHhDb250aW5lbnQECGRpc3RhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FCGxvY0lkeElkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQULZHVja0Fzc2V0SWQCFE5GVCBkdWNrIGlzIG9ycGhhbmVkBAloZWFsdGhLZXkJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQECWN1ckhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQUJaGVhbHRoS2V5BA5vdXRjb21lQWN0aW9ucwMDCQBmAgUIZGlzdGFuY2UAAAYDAwUFY2hlY2sJAGYCBQVzY29yZQAABwkAZgIFBW5ld0hQAAAHBAZyZXdhcmQJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhJzZW5kRGVsaXZlcnlSZXdhcmQJAMwIAgUFb3duZXIFA25pbAUDbmlsAwkAAAIFBnJld2FyZAUGcmV3YXJkBAhjb3VudEtleQkBFGtleVVzZXJEZWxpdmVyeUNvdW50AQUFb3duZXIJAMwIAgkBDEludGVnZXJFbnRyeQIFCGNvdW50S2V5CQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQhjb3VudEtleQAAAAEJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlVc2VyTGFzdERlbGl2ZXJ5RGF5AQUFb3duZXIJAGkCBQlzdGFydFRpbWUFCURBWU1JTExJUwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwMDBQVjaGVjawkAZgIFBW5ld0hQAAAHCQBmAgkAZAIFCXN0YXJ0VGltZQUSVEVOX01JTlVURVNfTUlMTElTBQNub3cHCQACAQImWW91ciBkdWNrIGlzIHN0aWxsIG9uIGRlbGl2ZXJ5IG1pc3Npb24EC2xvY2tlZFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFD2Vjb25vbXlDb250cmFjdAURZGVsaXZlcnlMb2NrZWRLZXkAAAQGdW5sb2NrCQD8BwQFD2Vjb25vbXlDb250cmFjdAIUdXBkYXRlRGVsaXZlcnlMb2NrZWQJAMwIAgkAZQIFC2xvY2tlZFRvdGFsBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFA25pbAUDbmlsAwkAAAIFBnVubG9jawUGdW5sb2NrAwMDBQVjaGVjawkAZwIAAAUFbmV3SFAHBgkAZwIAAAUJY3VySGVhbHRoBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQULZHVja0Fzc2V0SWQJAGQCBQlzdGFydFRpbWUFE0RFTElWRVJZX1BVTklTSE1FTlQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQNc2F2ZWRMb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAlQoDBQ5vdXRjb21lQWN0aW9ucwkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFDXNhdmVkTG9jYXRpb24FA25pbAUNc2F2ZWRMb2NhdGlvbgENbWVyZ2VJbnRlcm5hbAYLbmV3TGFuZFNpemUIbmV3TGV2ZWwHZm9ybXVsYQRhZGRyDGxhbmRBc3NldElkcwduZWVkTWF0BAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh1tZXJnZUludGVybmFsX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhttZXJnZUludGVybmFsX2NoZWNrRGVsaXZlcnkKAQpjaGVja01lcmdlAgNhY2MLbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFB3RpbWVLZXkJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwQJY29udGluZW50CQCRAwIFAWQFDHJlY0NvbnRpbmVudAMDCQECIT0CCAUDYWNjAl8zAgAJAQIhPQIIBQNhY2MCXzMFCWNvbnRpbmVudAcJAAIBAi5MYW5kcyBzaG91bGQgYmUgb24gdGhlIHNhbWUgY29udGluZW50IHRvIG1lcmdlBAhsYW5kU2l6ZQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQHc2l6ZXNJbggFA2FjYwJfMQQBaQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCzCQIFB3NpemVzSW4FCGxhbmRTaXplAidZb3UgaGF2ZW4ndCBwYXNzZWQgYWxsIHRoZSBsYW5kcyBuZWVkZWQECHNpemVzT3V0CQCsAgIJAK8CAgUHc2l6ZXNJbgUBaQkAsAICBQdzaXplc0luCQBkAgUBaQABBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBBQhsYW5kU2l6ZQQEYXJ0cwkAZAIIBQNhY2MCXzIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQAAAQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECHJlcUxldmVsBAckbWF0Y2gwBQhsYW5kU2l6ZQMJAAACAgFTBQckbWF0Y2gwAAMDCQAAAgIBTQUHJG1hdGNoMAAEAwkAAAICAUwFByRtYXRjaDAABQMJAAACAgJYTAUHJG1hdGNoMAAGCQACAQIaT25seSBTLCBNLCBMLCBYTCBjYW4gbWVyZ2UDCQECIT0CBQppbmZyYUxldmVsBQhyZXFMZXZlbAkAAgECIkFsbCBsYW5kcyBzaG91bGQgYmUgbWF4ZWQgdG8gbWVyZ2UEB2xhbmROdW0JAJEDAgUBZAUKcmVjTGFuZE51bQQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAlkZWx0YVRpbWUJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUJc2F2ZWRUaW1lAwkAZgIAAAUJZGVsdGFUaW1lCQACAQkArAICCQCsAgIJAKwCAgImU2F2ZWQgdGltZXN0YW1wIGlzIGluIGZ1dHVyZSwgc2F2ZWQgPSAJAKQDAQUJc2F2ZWRUaW1lAgwsIGN1cnJlbnQgPSAJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAEFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBAVicFJlcwkBBmFkZFJlcwUJALUJAggFA2FjYwJfNAIBXwUNdGVycmFpbkNvdW50cwUJZGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UEBXByb3BzCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MCXzYFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAZjUHJvcHMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwNfMTAFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAtzdW1UZXJyYWlucwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjAl85BQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQQFbGFuZHMIBQNhY2MCXzcEA2lkeAkAzwgCBQVsYW5kcwULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBBQNpZHgJAAIBCQCsAgICIFlvdXIgc3Rha2VkIGxhbmRzIGRvbid0IGNvbnRhaW4gBQtsYW5kQXNzZXRJZAQJY3VzdG9tS2V5CQEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBBQtsYW5kQXNzZXRJZAQKY3VzdG9tTmFtZQkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXN0b21LZXkCAAkAnAoKBQhzaXplc091dAUEYXJ0cwUJY29udGluZW50BQVicFJlcwkAzggCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAggFA2FjYwJfNQkBC0RlbGV0ZUVudHJ5AQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgkBC0RlbGV0ZUVudHJ5AQkBEGtleUxhbmRUb0Fzc2V0SWQBBQdsYW5kTnVtCQELRGVsZXRlRW50cnkBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQtsYW5kQXNzZXRJZAUEYWRkcgkBC0RlbGV0ZUVudHJ5AQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0JAQtEZWxldGVFbnRyeQEJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQUJY3VzdG9tS2V5CQEEQnVybgIJANkEAQULbGFuZEFzc2V0SWQAAQMJAQIhPQIFCmN1c3RvbU5hbWUCAAkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBQNuaWwFA25pbAUFcHJvcHMJANEIAgUFbGFuZHMJAQV2YWx1ZQEFA2lkeAkAZAIIBQNhY2MCXzgFBnBpZWNlcwULc3VtVGVycmFpbnMFBmNQcm9wcwQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkECHByb3BMaXN0CQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAILMF8wXzBfMF8wXzACAV8ECGxhbmRzS2V5CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUEYWRkcgQIbGFuZHNTdHIJAKIIAQUIbGFuZHNLZXkEB2xhbmRzSW4DCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAQFY29udDAJAJEDAgkAtQkCCAkBBXZhbHVlAQkA7AcBCQDZBAEJAJEDAgUMbGFuZEFzc2V0SWRzAAALZGVzY3JpcHRpb24CAV8FDHJlY0NvbnRpbmVudAQJY29udFByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBBQVjb250MAILMF8wXzBfMF8wXzACAV8EAXIKAAIkbAUMbGFuZEFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAnAoKBQdmb3JtdWxhAAACAAkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMFA25pbAUIcHJvcExpc3QFB2xhbmRzSW4AAAkAtQkCAgswXzBfMF8wXzBfMAIBXwUJY29udFByb3BzCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpjaGVja01lcmdlAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQQJY29udGluZW50CAUBcgJfMwQMY29udGluZW50SWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAM8IAgUKY29udGluZW50cwUJY29udGluZW50CQCsAgICE1Vua25vd24gY29udGluZW50OiAFCWNvbnRpbmVudAQIdGVycmFpbnMJARNnZW5UZXJyYWluc0Zvck1lcmdlAggFAXICXzkJAGkCCQEPbnVtUGllY2VzQnlTaXplAQULbmV3TGFuZFNpemUFBVNTSVpFBAdmcmVlTnVtCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUPUFJFU0FMRU5VTUxBTkRTAAEECm5ld0xhbmROdW0JAKQDAQUHZnJlZU51bQQFaXNzdWUJAMIIBQkBB25mdE5hbWUCBQpuZXdMYW5kTnVtBQtuZXdMYW5kU2l6ZQkAuQkCCQDMCAIFCm5ld0xhbmROdW0JAMwIAgULbmV3TGFuZFNpemUJAMwIAgUIdGVycmFpbnMJAMwIAgUJY29udGluZW50BQNuaWwCAV8AAQAABwQHYXNzZXRJZAkAuAgBBQVpc3N1ZQQObmV3TGFuZEFzc2V0SWQJANgEAQUHYXNzZXRJZAQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMJAGYCBQduZWVkTWF0AAAJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8FB25lZWRNYXQCAV8ECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQRhZGRyBAxzdGFrZWRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAJAJQKAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAggFAXICXzUDCQBmAgkAkAMBCAUBcgJfNwAACQELU3RyaW5nRW50cnkCBQhsYW5kc0tleQkAuwkCCAUBcgJfNwIBXwkBC0RlbGV0ZUVudHJ5AQUIbGFuZHNLZXkJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkDCQBmAggFAXICXzgFDHN0YWtlZFBpZWNlcwAACQBlAgUMc3Rha2VkUGllY2VzCAUBcgJfOAkBDEludGVnZXJFbnRyeQIJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUHZnJlZU51bQABBQVpc3N1ZQkBC1N0cmluZ0VudHJ5AgkBEGtleUxhbmRUb0Fzc2V0SWQBBQpuZXdMYW5kTnVtBQ5uZXdMYW5kQXNzZXRJZAkBC1N0cmluZ0VudHJ5AgkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFDm5ld0xhbmRBc3NldElkBQRhZGRyCQELU3RyaW5nRW50cnkCCQERa2V5TGFuZE51bVRvT3duZXIBBQpuZXdMYW5kTnVtBQRhZGRyCQEMSW50ZWdlckVudHJ5AgkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQUObmV3TGFuZEFzc2V0SWQIBQFyAl8yCQEMSW50ZWdlckVudHJ5AgkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQ5uZXdMYW5kQXNzZXRJZAUIbmV3TGV2ZWwJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgUObmV3TGFuZEFzc2V0SWQFBGFkZHIFCG5ld0xldmVsCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAggFAXICXzQJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6CQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMACQC5CQIIBQFyAl82AgFfCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEFCWNvbnRpbmVudAkAuQkCCAUBcgNfMTACAV8JAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIFCWNvbnRpbmVudAkAzAgCAgFMCQDMCAIFDm5ld0xhbmRBc3NldElkBQNuaWwCAV8JAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBGFkZHIAAQUHYXNzZXRJZAUObmV3TGFuZEFzc2V0SWQBA3MybQIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIBTQADAgRTU1NTBQRhZGRyBQxsYW5kQXNzZXRJZHMAAAEDbTJsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgFMAAQCA1NNTQUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMABAEEbDJ4bAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgICWEwABQIFU1NTTUwFBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTAC8BBnhsMnh4bAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIDWFhMAAYCA0xYTAUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMANgELbWVyZ2VDb21tb24CBGFkZHIMbGFuZEFzc2V0SWRzBAckbWF0Y2gwCQCQAwEFDGxhbmRBc3NldElkcwMJAAACAAQFByRtYXRjaDAJAQNzMm0CBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgADBQckbWF0Y2gwCQEDbTJsAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIABQUHJG1hdGNoMAkBBGwyeGwCBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgACBQckbWF0Y2gwCQEGeGwyeHhsAgUEYWRkcgUMbGFuZEFzc2V0SWRzCQACAQINVW5rbm93biBtZXJnZQEVY2hlY2tPdXRkYXRlZERlbGl2ZXJ5AQh1c2VyQWRkcgQEZHVjawkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgMJAQlpc0RlZmluZWQBBQRkdWNrBAtkdWNrQXNzZXRJZAkBBXZhbHVlAQUEZHVjawQGbG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEA2xvYwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBmxvY0tleQUPREVGQVVMVExPQ0FUSU9OAgFfBAlzdGFydFRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFD2xvY0lkeENvbnRpbmVudAMDCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBRAYJAGYCCQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQNuaWwECWhlYWx0aEtleQkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAMJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQhsb2NJZHhJZAAABAZyZXdhcmQJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhJzZW5kRGVsaXZlcnlSZXdhcmQJAMwIAgUIdXNlckFkZHIFA25pbAUDbmlsAwkAAAIFBnJld2FyZAUGcmV3YXJkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAM0IAgkAzQgCBAtsb2NrZWRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9lY29ub215Q29udHJhY3QFEWRlbGl2ZXJ5TG9ja2VkS2V5AAAEBnVubG9jawkA/AcEBQ9lY29ub215Q29udHJhY3QCFHVwZGF0ZURlbGl2ZXJ5TG9ja2VkCQDMCAIJAGUCBQtsb2NrZWRUb3RhbAUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQNuaWwFA25pbAMJAAACBQZ1bmxvY2sFBnVubG9jawMJAGcCAAAJARFAZXh0ck5hdGl2ZSgxMDU1KQEFCWhlYWx0aEtleQUDbmlsBApwdW5pc2htZW50CQD8BwQFBHRoaXMCC3NhdmVJbnRlZ2VyCQDMCAIJARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQULZHVja0Fzc2V0SWQJAMwIAgkAZAIFCXN0YXJ0VGltZQUTREVMSVZFUllfUFVOSVNITUVOVAUDbmlsBQNuaWwDCQAAAgUKcHVuaXNobWVudAUKcHVuaXNobWVudAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQEMSW50ZWdlckVudHJ5AgUJaGVhbHRoS2V5CQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAkBC1N0cmluZ0VudHJ5AgUGbG9jS2V5CQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQNuaWwBBnByb2xvZwEBaQMDCQECIT0CCAUBaQxvcmlnaW5DYWxsZXIFDHJlc3RDb250cmFjdAkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEKa2V5QmxvY2tlZAAHBwkAAgECH0NvbnRyYWN0cyBhcmUgdW5kZXIgbWFpbnRlbmFuY2UECHVzZXJBZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgkAzQgCCQEVY2hlY2tPdXRkYXRlZERlbGl2ZXJ5AQUIdXNlckFkZHIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYXN0VHhJZEJ5VXNlcgEFCHVzZXJBZGRyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQBDHByb2xvZ0ZsaWdodAEBaQMDCQECIT0CCAUBaQxvcmlnaW5DYWxsZXIFDHJlc3RDb250cmFjdAkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEKa2V5QmxvY2tlZAAHBwkAAgECH0NvbnRyYWN0cyBhcmUgdW5kZXIgbWFpbnRlbmFuY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhc3RUeElkQnlVc2VyAQkApQgBCAUBaQxvcmlnaW5DYWxsZXIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAUDbmlsLQFpAQ1jb25zdHJ1Y3RvclYxAQhyZXN0QWRkcgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlSZXN0QWRkcmVzcwAFCHJlc3RBZGRyBQNuaWwBaQELc2F2ZUludGVnZXICA2tleQZhbW91bnQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAiBzYXZlSW50ZWdlciBpcyBub3QgcHVibGljIG1ldGhvZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUDa2V5BQZhbW91bnQFA25pbAFpAQpzZXRCbG9ja2VkAQlpc0Jsb2NrZWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBCmtleUJsb2NrZWQABQlpc0Jsb2NrZWQFA25pbAFpAQlzdGFrZUxhbmQABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAdhc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyAwkBAiE9AggFA3BtdAZhbW91bnQAAQkAAgEJAKwCAgkArAICAgRORlQgBQpMQU5EUFJFRklYAiQgdG9rZW4gc2hvdWxkIGJlIGF0dGFjaGVkIGFzIHBheW1lbnQEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQDCQECIT0CCAUFYXNzZXQGaXNzdWVyBQR0aGlzCQACAQIXVW5rbm93biBpc3N1ZXIgb2YgdG9rZW4DCQEBIQEJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQpMQU5EUFJFRklYCQACAQkArAICCQCsAgICCU9ubHkgTkZUIAUKTEFORFBSRUZJWAIUIHRva2VucyBhcmUgYWNjZXB0ZWQEC2xhbmROdW1TaXplCQCwAgIIBQVhc3NldARuYW1lAAQEB2xhbmROdW0DCQEIY29udGFpbnMCBQtsYW5kTnVtU2l6ZQIDWFhMCQCzAgIFC2xhbmROdW1TaXplAAMDCQEIY29udGFpbnMCBQtsYW5kTnVtU2l6ZQICWEwJALMCAgULbGFuZE51bVNpemUAAgkAswICBQtsYW5kTnVtU2l6ZQABAwkBASEBCQEJaXNEZWZpbmVkAQkAtgkBBQdsYW5kTnVtCQACAQkArAICAh5DYW5ub3QgcGFyc2UgbGFuZCBudW1iZXIgZnJvbSAIBQVhc3NldARuYW1lBAtsYW5kQXNzZXRJZAkA2AQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAwkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQISIGlzIGFscmVhZHkgc3Rha2VkBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBAVwcm9wcwkBEXVwZGF0ZVByb3BvcnRpb25zAwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAEEDHJlc0J5Q29udEtleQkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBCQCRAwIFAWQFDHJlY0NvbnRpbmVudAQJY29udFByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUMcmVzQnlDb250S2V5AgswXzBfMF8wXzBfMAIBXwQQdXBkYXRlZENvbnRQcm9wcwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCWNvbnRQcm9wcwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAECAV8ECGxhbmRzS2V5CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUHYWRkcmVzcwQIbGFuZHNTdHIJAKIIAQUIbGFuZHNLZXkEBWxhbmRzAwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUFbGFuZHMFC2xhbmRBc3NldElkCQACAQkArAICAiJZb3VyIHN0YWtlZCBsYW5kcyBhbHJlYWR5IGNvbnRhaW4gBQtsYW5kQXNzZXRJZAMJAGcCCQCQAwEFBWxhbmRzBRhNQVhfTEFORFNfU1RBS0VEX0JZX1VTRVIJAAIBCQCsAgIJAKwCAgIZWW91ciBhbHJlYWR5IHN0YWtlZCBtYXggKAkApAMBBRhNQVhfTEFORFNfU1RBS0VEX0JZX1VTRVICBykgbGFuZHMECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUHYWRkcmVzcwQJb2xkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAABAl3bGdSZXN1bHQJAPwHBAULd2xnQ29udHJhY3QCEm9uU3Rha2VVbnN0YWtlTGFuZAkAzAgCBQdhZGRyZXNzBQNuaWwFA25pbAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFB3RpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQdhZGRyZXNzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQELU3RyaW5nRW50cnkCBQhsYW5kc0tleQkAuwkCCQDNCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAIBXwkAzAgCCQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5CQBkAgUJb2xkUGllY2VzBQZwaWVjZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkBQdhZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0FB2FkZHJlc3MJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwUKaW5mcmFMZXZlbAkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMABQVwcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCBQxyZXNCeUNvbnRLZXkFEHVwZGF0ZWRDb250UHJvcHMFA25pbAUNcHJvbG9nQWN0aW9ucwUJd2xnUmVzdWx0AWkBC3Vuc3Rha2VMYW5kAQ1sYW5kQXNzZXRJZEluBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpBmNhbGxlcgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUNY2xhaW1Nb2RlRHVjawUNbGFuZEFzc2V0SWRJbgQLbGFuZEFzc2V0SWQIBQFjAl8yBAFkCAUBYwJfMwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQRhZGRyBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBXByb3BzCQERdXBkYXRlUHJvcG9ydGlvbnMDBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQMcmVzQnlDb250S2V5CQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJAJEDAgUBZAUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQxyZXNCeUNvbnRLZXkCCzBfMF8wXzBfMF8wAgFfBBB1cGRhdGVkQ29udFByb3BzCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUJY29udFByb3BzBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQIBXwQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIFC2xhbmRBc3NldElkBQZwaWVjZXMFDWNsYWltTW9kZUR1Y2sEBWxhbmRzCQC9CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUIbGFuZHNLZXkCAAIBXwQDaWR4CQDPCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEFA2lkeAkAAgEJAKwCAgIgWW91ciBzdGFrZWQgbGFuZHMgZG9uJ3QgY29udGFpbiAFC2xhbmRBc3NldElkBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBA5nb3ZSZWxlYXNlVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQtnb3ZDb250cmFjdAkBFWtleVVzZXJHd2xSZWxlYXNlVGltZQEFBGFkZHIAAAMJAGcCBQ5nb3ZSZWxlYXNlVGltZQUDbm93CQACAQkArAICAjlZb3VyIGdXTCBhcmUgdGFraW5nIHBhcnQgaW4gdm90aW5nLCBjYW5ub3QgdW5zdGFrZSB1bnRpbCAJAKQDAQUOZ292UmVsZWFzZVRpbWUEDmFyYlJlbGVhc2VUaW1lCQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQt3bGdDb250cmFjdAkBFGtleUxhc3RBcmJUaW1lQnlVc2VyAQUEYWRkcgAABQ5hcmJpdHJhZ2VEZWxheQMJAGYCBQ5hcmJSZWxlYXNlVGltZQUDbm93CQACAQkArAICAj9Zb3VyIHN0YWtlZCBsYW5kcyB0b29rIHBhcnQgaW4gYXJiaXRyYWdlLCBjYW5ub3QgdW5zdGFrZSB1bnRpbCAJAKQDAQUOYXJiUmVsZWFzZVRpbWUECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQRhZGRyBAxzdGFrZWRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAECW5ld1BpZWNlcwMJAGYCBQZwaWVjZXMFDHN0YWtlZFBpZWNlcwAACQBlAgUMc3Rha2VkUGllY2VzBQZwaWVjZXMECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFBGFkZHIFA25pbAUDbmlsCQCUCgIJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQkA2QQBBQtsYW5kQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFBGFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAUFcHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AgUMcmVzQnlDb250S2V5BRB1cGRhdGVkQ29udFByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfMgkAuQkCCAULY2xhaW1SZXN1bHQCXzMCAToJAMwIAgMJAGYCCQCQAwEFBWxhbmRzAAEJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIJANEIAgUFbGFuZHMJAQV2YWx1ZQEFA2lkeAIBXwkBC0RlbGV0ZUVudHJ5AQUIbGFuZHNLZXkJAMwIAgkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQUJbmV3UGllY2VzBQNuaWwFDXByb2xvZ0FjdGlvbnMFCXdsZ1Jlc3VsdAFpAQlzdGFrZUR1Y2sABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAdhc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyAwkBAiE9AggFA3BtdAZhbW91bnQAAQkAAgEJAKwCAgkArAICAgRORlQgBQpEVUNLUFJFRklYAiQgdG9rZW4gc2hvdWxkIGJlIGF0dGFjaGVkIGFzIHBheW1lbnQEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQDAwkBAiE9AggFBWFzc2V0Bmlzc3VlcgUNaW5jdWJhdG9yQWRkcgkBAiE9AggFBWFzc2V0Bmlzc3VlcgULYnJlZWRlckFkZHIHCQACAQkArAICCQCsAgICElVua25vd24gaXNzdWVyIG9mIAUKRFVDS1BSRUZJWAIGIHRva2VuAwkBASEBCQEIY29udGFpbnMCCAUFYXNzZXQEbmFtZQUKRFVDS1BSRUZJWAkAAgEJAKwCAgkArAICAglPbmx5IE5GVCAFCkRVQ0tQUkVGSVgCFCB0b2tlbnMgYXJlIGFjY2VwdGVkBAphc3NldElkU3RyCQDYBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUKYXNzZXRJZFN0cgMJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCEiBpcyBhbHJlYWR5IHN0YWtlZAMJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAAIBCQCsAgICHVlvdSBhbHJlYWR5IHN0YWtlZCBvbmUgZHVjazogCAUFYXNzZXQEbmFtZQQGbG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgQIbG9jYXRpb24JAKIIAQUGbG9jS2V5BAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQUKYXNzZXRJZFN0cgQIYmFja3BhY2sJAKIIAQUFYnBLZXkECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQphc3NldElkU3RyBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFCmFzc2V0SWRTdHIAAAQJY3VySGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFAJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKRFVDS1BSRUZJWAkA2AQBBQdhc3NldElkBQdhZGRyZXNzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwUKYXNzZXRJZFN0cgUDbmlsAwkBCWlzRGVmaW5lZAEFCGxvY2F0aW9uBQNuaWwJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZsb2NLZXkFD0RFRkFVTFRMT0NBVElPTgUDbmlsAwkBCWlzRGVmaW5lZAEFCGJhY2twYWNrBQNuaWwJAM4IAgkAzQgCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5AhowOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOgUDbmlsCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQljdXJIZWFsdGgFDXByb2xvZ0FjdGlvbnMBaQELdW5zdGFrZUR1Y2sBCmFzc2V0SWRTdHIEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEB2Fzc2V0SWQJANkEAQUKYXNzZXRJZFN0cgQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUKYXNzZXRJZFN0cgMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAAIBCQCsAgIJAKwCAgIJVGhlIGR1Y2sgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQphc3NldElkU3RyCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQdhZGRyZXNzCQACAQIXU3Rha2VkIE5GVCBpcyBub3QgeW91cnMDCQEPY2hlY2tUb3VybmFtZW50AQUKYXNzZXRJZFN0cgkAAgECG3Vuc3Rha2VEdWNrX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQUKYXNzZXRJZFN0cgkAAgECGXVuc3Rha2VEdWNrX2NoZWNrRGVsaXZlcnkECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQphc3NldElkU3RyBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFCmFzc2V0SWRTdHIAAAQGaGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBmAgUFbWF4SFAFBmhlYWx0aAkAAgEJAKwCAgkArAICAhlQbGVhc2UgaGVhbCB5b3VyIGR1Y2sgdG8gCQCkAwEFBW1heEhQAhNocCBiZWZvcmUgdW5zdGFraW5nCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEFB2Fzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQUHdGltZUtleQkAzAgCCQELRGVsZXRlRW50cnkBBQlrZXlIZWFsdGgJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBD2tleUR1Y2tMb2NhdGlvbgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEGtleUR1Y2tJZFRvT3duZXIBBQphc3NldElkU3RyCQDMCAIJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKRFVDS1BSRUZJWAUKYXNzZXRJZFN0cgUHYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzBQNuaWwFDXByb2xvZ0FjdGlvbnMBaQEIY2xhaW1SZXMCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBnJlc3VsdAkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQZhbW91bnQFDWNsYWltTW9kZUR1Y2sFDmxhbmRBc3NldElkU3RyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQJAJQKAgkAzggCCQDNCAIJAM0IAgkAzggCCAUGcmVzdWx0Al8xCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGsDBQd4cENsYWltBQZhbW91bnQFBU1VTFQ4Al8xCQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al8yCQC5CQIIBQZyZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzQJALkJAggFBnJlc3VsdAJfNQIBOgUNcHJvbG9nQWN0aW9ucwkAkQMCCAUGcmVzdWx0Al8zBQhicElkeFJlcwFpAQxjbGFpbVJlc1RvV0gCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBnJlc3VsdAkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQZhbW91bnQFC2NsYWltTW9kZVdoBQ5sYW5kQXNzZXRJZFN0cgkAlAoCCQDOCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIJAGsDBQd4cENsYWltBQZhbW91bnQFBU1VTFQ4Al8xCQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al8yCQC5CQIIBQZyZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzQJALkJAggFBnJlc3VsdAJfNQIBOgUNcHJvbG9nQWN0aW9ucwkAkQMCCAUGcmVzdWx0Al81BQh3aElkeFJlcwFpAQZmbGlnaHQCB21lc3NhZ2UDc2lnBA1wcm9sb2dBY3Rpb25zCQEMcHJvbG9nRmxpZ2h0AQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAh1c2VyQWRkcgkApQgBCAUBaQZjYWxsZXIEAWYJAQxmbGlnaHRDb21tb24DBQh1c2VyQWRkcgUHbWVzc2FnZQUDc2lnBAVuZXdIUAgFAWYCXzEEC2R1Y2tBc3NldElkCAUBZgJfMgQGbG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFBmxvY0tleQUPREVGQVVMVExPQ0FUSU9OBAtuZXdMb2NhdGlvbggFAWYCXzQDCQAAAgULbmV3TG9jYXRpb24FC2N1ckxvY2F0aW9uCQACAQIiWW91IGNhbid0IGZseSB0byB0aGUgc2FtZSBsb2NhdGlvbgQGbmV3TG9jCQC1CQIFC25ld0xvY2F0aW9uAgFfBAZpc1RvdXIJAAACCQCRAwIFBm5ld0xvYwUKbG9jSWR4VHlwZQIBVAQHaXNEZWxpdgkAAAIJAJEDAgUGbmV3TG9jBQpsb2NJZHhUeXBlAgFEBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQJY3VycmVudEVxCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAQNJHQwNzMwNjI3MzE1OQkBEXN1YnRyYWN0RXF1aXBtZW50AgUJY3VycmVudEVxCAUBZgJfNQQFbmV3RXEIBQ0kdDA3MzA2MjczMTU5Al8xBA9zaG91bGRaZXJvQnVmZnMIBQ0kdDA3MzA2MjczMTU5Al8yBA0kdDA3MzE2Mjc2Mjc0AwkBASEBCQEJb25NaXNzaW9uAgUSdG91cm5hbWVudENvbnRyYWN0BQtjdXJMb2NhdGlvbgMJAQEhAQkBD2lzVXN1YWxMb2NhdGlvbgEFC25ld0xvY2F0aW9uCQEMY2hlYXRBdHRlbXB0AwULY3VyTG9jYXRpb24FC25ld0xvY2F0aW9uAAUDCQBmAgUFbmV3SFAAAAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAJAJQKAgULY3VyTG9jYXRpb24AAAMJAQ5pc0luVG91cm5hbWVudAIFEnRvdXJuYW1lbnRDb250cmFjdAULY3VyTG9jYXRpb24DCQEBIQEJAQ5pc0luVG91cm5hbWVudAIFEnRvdXJuYW1lbnRDb250cmFjdAULbmV3TG9jYXRpb24JAAIBAipZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gdGhlIHRvdXJuYW1lbnQEBXNjb3JlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGbmV3TG9jBQhsb2NJZHhJZAQGY3VyTG9jCQC1CQIFC2N1ckxvY2F0aW9uAgFfBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAADCQECIT0CBQVzY29yZQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZjdXJMb2MFCGxvY0lkeElkAAEJAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ABwMJAGYCBQVuZXdIUAAABAlsb2NhbEJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0CQEaa2V5QmVzdFJlc3VsdEJ5VG91ckFuZER1Y2sCBQZsYXN0SWQFC2R1Y2tBc3NldElkAAAECHVwZExvY2FsAwkAZgIFBXNjb3JlBQlsb2NhbEJlc3QJAPwHBAUSdG91cm5hbWVudENvbnRyYWN0Ag5zYXZlRHVja1Jlc3VsdAkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQVzY29yZQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUIdXBkTG9jYWwFCHVwZExvY2FsCQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAlAoCBQtjdXJMb2NhdGlvbgAAAwkBASEBCQEMaXNJbkRlbGl2ZXJ5AQULY3VyTG9jYXRpb24ECHNhdmVkTG9jCQEIYXNTdHJpbmcBCQD8BwQFBHRoaXMCEGF1dG9FeGl0RGVsaXZlcnkJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUFbmV3SFAJAMwIAgMFB2lzRGVsaXYCAjEwAgIxMQkAzAgCAAAFA25pbAUDbmlsAwkAAAIFCHNhdmVkTG9jBQhzYXZlZExvYwMFB2lzRGVsaXYJAJQKAgUIc2F2ZWRMb2MFBW5ld0hQAwkAZgIFBW5ld0hQAAAJAJQKAgULbmV3TG9jYXRpb24FBW5ld0hQCQCUCgIFCHNhdmVkTG9jAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQEBIQEFB2lzRGVsaXYJAAIBAiRZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gZGVsaXZlcnkDCQEBIQEJAQxpc0luRGVsaXZlcnkBBQtuZXdMb2NhdGlvbgkBDGNoZWF0QXR0ZW1wdAMFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgANBAVzY29yZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBm5ld0xvYwUIbG9jSWR4SWQEBmN1ckxvYwkAtQkCBQtjdXJMb2NhdGlvbgIBXwMJAQIhPQIFBXNjb3JlCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBmN1ckxvYwUIbG9jSWR4SWQAAQkBDGNoZWF0QXR0ZW1wdAMFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgAOAwMJAGYCBQVuZXdIUAAACQBmAgABBQVzY29yZQcJAJQKAgULbmV3TG9jYXRpb24FBW5ld0hQBAhzYXZlZExvYwkBCGFzU3RyaW5nAQkA/AcEBQR0aGlzAhBhdXRvRXhpdERlbGl2ZXJ5CQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFBW5ld0hQCQDMCAICBTE1LTE3CQDMCAIFBXNjb3JlBQNuaWwFA25pbAMJAAACBQhzYXZlZExvYwUIc2F2ZWRMb2MJAJQKAgUIc2F2ZWRMb2MFBW5ld0hQCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAlsb2NUb1NhdmUIBQ0kdDA3MzE2Mjc2Mjc0Al8xBAhocFRvU2F2ZQgFDSR0MDczMTYyNzYyNzQCXzIJAJQKAgkAzggCCQDOCAIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZsb2NLZXkFCWxvY1RvU2F2ZQkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFCGhwVG9TYXZlBQNuaWwFDXByb2xvZ0FjdGlvbnMDBQ9zaG91bGRaZXJvQnVmZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzAFA25pbAUDbmlsCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQDCQBmAgUFbmV3SFAAAAUPeHBTdWNjZXNzRmxpZ2h0BQx4cEZhaWxGbGlnaHQCXzEIBQFmAl8zAWkBBGhlYWwDCnF1YW50aXR5TDEKcXVhbnRpdHlMMgpxdWFudGl0eUwzBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMDAwkAZgIAAAUKcXVhbnRpdHlMMQYJAGYCAAAFCnF1YW50aXR5TDIGCQBmAgAABQpxdWFudGl0eUwzCQACAQIbUXVhbnRpdHkgY2Fubm90IGJlIG5lZ2F0aXZlBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIUaGVhbF9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQISaGVhbF9jaGVja0RlbGl2ZXJ5BANxdHMJAMwIAgUKcXVhbnRpdHlMMQkAzAgCBQpxdWFudGl0eUwyCQDMCAIFCnF1YW50aXR5TDMFA25pbAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAECW9sZEhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkAZwIFCW9sZEhlYWx0aAUFbWF4SFAJAAIBCQCsAgIJAKwCAgIPSFAgc2hvdWxkIGJlIDwgCQCkAwEFBW1heEhQAgggdG8gaGVhbAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2tw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dEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFmhlYWxFU19jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIUaGVhbEVTX2NoZWNrRGVsaXZlcnkECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAlvbGRIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGYCBQlvbGRIZWFsdGgAAAkAAgECKEhQIHNob3VsZCBiZSAwIHRvIGNhbGwgRW1lcmdlbmN5IFNlcnZpY2UEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwQNbWVkS2l0QW1vdW50MQMJAGYCCQCQAwEFCHByb2RMaXN0AAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAAAAAAEDW1lZEtpdEFtb3VudDIDCQBmAgkAkAMBBQhwcm9kTGlzdAABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAQAABA1tZWRLaXRBbW91bnQzAwkAZgIJAJADAQUIcHJvZExpc3QAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAIAAAMDAwkAZgIFDW1lZEtpdEFtb3VudDEAAAYJAGYCBQ1tZWRLaXRBbW91bnQyAAAGCQBmAgUNbWVkS2l0QW1vdW50MwAACQACAQIfWW91IGhhdmUgdG8gdXNlIG93biBNZWRpY2FsIEtpdAQIZXhpc3RTdHIJAJ0IAgUPZWNvbm9teUNvbnRyYWN0CQEOa2V5RXNXYXJlaG91c2UABAxleGlzdEFtb3VudHMDCQEJaXNEZWZpbmVkAQUIZXhpc3RTdHIJALwJAgkBBXZhbHVlAQUIZXhpc3RTdHICAV8FA25pbAQLZXhpc3RBbW91bnQDCQBmAgkAkAMBBQxleGlzdEFtb3VudHMAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGV4aXN0QW1vdW50cwAAAAADCQBnAgAABQtleGlzdEFtb3VudAkAAgECOVRoZXJlIGFyZSBubyBNZWRpY2FsIEtpdHMgTDEgYXQgRW1lcmdlbmN5IFNlcnZpY2Ugc3RvcmFnZQQJbmV3SGVhbHRoCQBkAgUJb2xkSGVhbHRoCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgAAAIBXwUKcklkeEVmZmVjdAQFbmV3RVMJALkJAgkAzAgCCQCkAwEJAGUCBQtleGlzdEFtb3VudAABCQDRCAIFDGV4aXN0QW1vdW50cwAAAgFfBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4AAACAV8ECHRvdGFsTWF0CQESZ2V0UmVjaXBlTWF0ZXJpYWxzAQUGcmVjaXBlBAlzZWxsUHJpY2UJAGsDCQBoAgUIdG90YWxNYXQFCkVTU0VMTENPRUYFEFJFU09VUkNFUFJJQ0VNSU4JAGgCBQVNVUxUOAUOUFJPRFVDVFBLR1NJWkUDCQECIT0CCAUDcG10BmFtb3VudAUJc2VsbFByaWNlCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUJc2VsbFByaWNlBAZyZXN1bHQJAQhhc1N0cmluZwEJAPwHBAUPZWNvbm9teUNvbnRyYWN0Ag91cGRhdGVFc1N0b3JhZ2UJAMwIAgUFbmV3RVMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgULdXNkdEFzc2V0SWQFCXNlbGxQcmljZQUDbmlsCQCUCgIJAM4IAgkAzQgCBQ1wcm9sb2dBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQluZXdIZWFsdGgICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUIeHBDYWxsRVMCXzEFBnJlc3VsdAFpAQ51cGRhdGVCYWNrcGFjawILZHVja0Fzc2V0SWQHbmV3UGFjawMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQIRcGVybWlzc2lvbiBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAUHbmV3UGFjawUDbmlsBQduZXdQYWNrAWkBD2NvbW1pdEZvclJhbmRvbQAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpBAtmaW5pc2hCbG9jawkAZAIFBmhlaWdodAULcmFuZG9tRGVsYXkEBGFkZHIJAKUIAQgFAWkGY2FsbGVyCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCWtleUNvbW1pdAEFBGFkZHIFC2ZpbmlzaEJsb2NrBQNuaWwFDXByb2xvZ0FjdGlvbnMFC2ZpbmlzaEJsb2NrAWkBCGJ1eVNMYW5kAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQMJAQIhPQIIBQNwbXQGYW1vdW50BQdFWFBVU0RUCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUHRVhQVVNEVAQGcmVzdWx0CQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgkAzQgCCAUGcmVzdWx0Al8xCQEOU2NyaXB0VHJhbnNmZXIDBQ9lY29ub215Q29udHJhY3QIBQNwbXQGYW1vdW50BQt1c2R0QXNzZXRJZAgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgkApQgBCAUBaQZjYWxsZXIFCnhwTmV3U0xhbmQCXzEFDXByb2xvZ0FjdGlvbnMJAJQKAggIBQZyZXN1bHQCXzICXzEFC2FjcmVzUmVzdWx0AWkBCmV4cGVkaXRpb24CB21lc3NhZ2UDc2lnBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAh1c2VyQWRkcgkApQgBCAUBaQZjYWxsZXIEAWYJAQxmbGlnaHRDb21tb24DBQh1c2VyQWRkcgUHbWVzc2FnZQUDc2lnBAtkdWNrQXNzZXRJZAgFAWYCXzIECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW1MaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwYFBW1MaXN0BQxFWFBNQVRFUklBTFMCAV8EBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAljdXJyZW50RXEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssBA0kdDA4MzcxNDgzODExCQERc3VidHJhY3RFcXVpcG1lbnQCBQljdXJyZW50RXEIBQFmAl81BAVuZXdFcQgFDSR0MDgzNzE0ODM4MTECXzEED3Nob3VsZFplcm9CdWZmcwgFDSR0MDgzNzE0ODM4MTECXzIEAWUJARJleHBlZGl0aW9uSW50ZXJuYWwCCAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQEAmlkCAgFAWUCXzICXzEEBnJlc3VsdAMJAGcCAAAIBQFmAl8xCQCVCgMJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAAACQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQUDbmlsAgAAAAkAlQoDCQDOCAIIBQFlAl8xAwUPc2hvdWxkWmVyb0J1ZmZzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wBQNuaWwJAM0IAgkAzQgCCQDNCAIJAM0IAgUDbmlsCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCCAgFAWUCXzICXzIJAMwIAgIBTAkAzAgCBQJpZAUDbmlsAgFfCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoCAUBZgJfMQkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6BQJpZAgFAWYCXzMDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhpleHBlZGl0aW9uX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhhleHBlZGl0aW9uX2NoZWNrRGVsaXZlcnkEC2FjcmVzUmVzdWx0CQEFYXNJbnQBCQD8BwQFDWFjcmVzQ29udHJhY3QCCWJ1cm5BY3JlcwkAzAgCBQxTX0NPU1RfQUNSRVMFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCCAUGcmVzdWx0Al8xCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCnhwTmV3U0xhbmQCXzEFDXByb2xvZ0FjdGlvbnMJAJUKAwgFBnJlc3VsdAJfMggFBnJlc3VsdAJfMwULYWNyZXNSZXN1bHQBaQEQYnV5U0xhbmRGb3JBY3JlcwAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEA2FtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQxhY3Jlc0Fzc2V0SWQJAAIBAhRBQ1JFUyBwYXltZW50cyBvbmx5IQMJAQIhPQIFA2FtdAUMU19DT1NUX0FDUkVTCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUMU19DT1NUX0FDUkVTBAZyZXN1bHQJARJleHBlZGl0aW9uSW50ZXJuYWwCCAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQEC2FjcmVzUmVzdWx0CQEFYXNJbnQBCQD8BwQFDWFjcmVzQ29udHJhY3QCCWJ1cm5BY3JlcwkAzAgCBQxTX0NPU1RfQUNSRVMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUMYWNyZXNBc3NldElkBQNhbXQFA25pbAkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgkApQgBCAUBaQZjYWxsZXIFCnhwTmV3U0xhbmQCXzEFDXByb2xvZ0FjdGlvbnMJAJQKAggIBQZyZXN1bHQCXzICXzEFC2FjcmVzUmVzdWx0AWkBDHVwZ3JhZGVJbmZyYQELbGFuZEFzc2V0SWQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBnJlc3VsdAkBDXVwSW5mcmFDb21tb24EBggFAWkGY2FsbGVyAAAFC2xhbmRBc3NldElkBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkCQCUCgIJAM4IAgkAzggCCAUGcmVzdWx0Al8xBQ1wcm9sb2dBY3Rpb25zCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGsDBQ54cFVwZ3JhZGVJbmZyYQgFBnJlc3VsdAJfMwUFTVVMVDgCXzEIBQZyZXN1bHQCXzIBaQEQYWN0aXZhdGVBcnRpZmFjdAIHYXJ0TmFtZQ5sYW5kQXNzZXRJZE9wdAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQZjYWxsZXIEBnJlc3VsdAQHJG1hdGNoMAUHYXJ0TmFtZQMJAAACAgdQUkVTQUxFBQckbWF0Y2gwCQESYWN0aXZhdGVQcmVzYWxlQXJ0AgUEYWRkcgUObGFuZEFzc2V0SWRPcHQDCQAAAgIHT05CT0FSRAUHJG1hdGNoMAkBEmFjdGl2YXRlT25ib2FyZEFydAEFBGFkZHIJAAIBAhBVbmtub3duIGFydGlmYWN0CQDOCAIFBnJlc3VsdAUNcHJvbG9nQWN0aW9ucwFpAQptZXJnZUxhbmRzAQxsYW5kQXNzZXRJZHMEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBnJlc3VsdAkBC21lcmdlQ29tbW9uAgkApQgBCAUBaQZjYWxsZXIFDGxhbmRBc3NldElkcwkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQUNcHJvbG9nQWN0aW9ucwgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgkApQgBCAUBaQZjYWxsZXIFB3hwTWVyZ2UCXzEIBQZyZXN1bHQCXzIBaQENY2FyZ29FeGNoYW5nZQIMY2FyZ29MaXN0U3RyC2xhbmRBc3NldElkBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBApjYXJnb1BhcnRzCQC8CQIFDGNhcmdvTGlzdFN0cgIBOgQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OBANsb2MJALUJAgkBBXZhbHVlAQULY3VyTG9jYXRpb24CAV8DCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBTAkAAgEJAKwCAgkArAICAhZEdWNrIGxvY2F0aW9uIHR5cGUgaXMgCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIRLCBidXQgc2hvdWxkIGJlIEwDCQECIT0CCQCRAwIFA2xvYwUIbG9jSWR4SWQFC2xhbmRBc3NldElkCQACAQkArAICAhtEdWNrIHNob3VsZCBiZSBvbiB0aGUgbGFuZCAFC2xhbmRBc3NldElkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAljdXJyZW50V2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQGcmVzdWx0CQEJbW92ZVN0dWZmAwUKY2FyZ29QYXJ0cwUJY3VycmVudFdoBQtjdXJyZW50UGFjawQEbG9mdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBAVsb2Z0TwkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAgFBnJlc3VsdAJfNwQFbG9mdEYJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQgFBnJlc3VsdAJfNwkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCAUGcmVzdWx0Al80CQDMCAIIBQZyZXN1bHQCXzUJAMwIAggFBnJlc3VsdAJfNgUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5CQC6CQIJAMwIAgkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzCQDMCAIIBQZyZXN1bHQCXzEJAMwIAggFBnJlc3VsdAJfMgkAzAgCCAUGcmVzdWx0Al8zCQDMCAIJALkJAgkAzAgCCQCRAwIFBGxvZnQFCXZvbExvY2tlZAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkAkQMCBQRsb2Z0BQh2b2xUb3RhbAUDbmlsAgFfBQNuaWwCAToFA25pbAUNcHJvbG9nQWN0aW9ucwFpAQ1zYXZlV2FyZWhvdXNlAgV3aFN0cgtsYW5kQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQCd2gJALwJAgUFd2hTdHICAToDCQECIT0CCQCQAwEFAndoAAUJAAIBAjB3YXJlaG91c2Ugc3RyaW5nIHNob3VsZCBjb250YWluIDQgJzonIHNlcGFyYXRvcnMEBWxvZnRMCQCRAwIJALUJAgkAkQMCBQJ3aAUJd2hJZHhMT0ZUAgFfBQl2b2xMb2NrZWQEBWxvZnRPCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQJ3aAQFbG9mdFQJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUCd2gFC3doSWR4TGV2ZWxzBAVsb2Z0RgkAZQIJAGUCBQVsb2Z0VAkBDXBhcnNlSW50VmFsdWUBBQVsb2Z0TAUFbG9mdE8DCQBmAgAABQVsb2Z0RgkAAgECME9wZXJhdGlvbiBsZWFkcyB0byBuZWdhdGl2ZSBmcmVlIHdhcmVob3VzZSBzcGFjZQQIbmV3V2hTdHIJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIFBWxvZnRMCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCkAwEFBWxvZnRUBQNuaWwCAV8FA25pbAIBOgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5BQhuZXdXaFN0cgUDbmlsBQhuZXdXaFN0cgFpAQ1zZXRDdXN0b21OYW1lAwdhc3NldElkCmN1c3RvbU5hbWUEdHlwZQQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQMJAQIhPQIIBQNwbXQGYW1vdW50BQxSRU5BTUlOR0NPU1QJAAIBCQCsAgICElBheW1lbnQgc2hvdWxkIGJlIAkApAMBBQxSRU5BTUlOR0NPU1QDCQEIY29udGFpbnMCBQpjdXN0b21OYW1lAgJfXwkAAgEJAKwCAgIeTmFtZSBzaG91bGQgbm90IGNvbnRhaW4gJ19fJzogBQpjdXN0b21OYW1lAwkAZgIJALECAQUKY3VzdG9tTmFtZQUKTUFYTkFNRUxFTgkAAgEJAKwCAgIZTmFtZSB0b28gbG9uZywgbWF4TGVuZ3RoPQkApAMBBQpNQVhOQU1FTEVOBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQHYWN0aW9ucwQHJG1hdGNoMAUEdHlwZQMJAAACAgdBQ0NPVU5UBQckbWF0Y2gwBApyZXZlcnNlS2V5CQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQNYWRkclRvTmFtZUtleQkBFmtleUFkZHJlc3NUb0N1c3RvbU5hbWUBBQRhZGRyBAdvbGROYW1lCQCiCAEFDWFkZHJUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ1hZGRyVG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQRhZGRyCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQx4cEN1c3RvbU5hbWUCXzEDCQAAAgIETEFORAUHJG1hdGNoMAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA5hc3NldFRvTmFtZUtleQkBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAQHb2xkTmFtZQkAoggBBQ5hc3NldFRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ5hc3NldFRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUHYXNzZXRJZAgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgUMeHBDdXN0b21OYW1lAl8xAwkAAAICBERVQ0sFByRtYXRjaDAEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQdhc3NldElkAwMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQYJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKRFVDS1BSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA5hc3NldFRvTmFtZUtleQkBGmtleUR1Y2tBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAQHb2xkTmFtZQkAoggBBQ5hc3NldFRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ5hc3NldFRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUHYXNzZXRJZAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFB2Fzc2V0SWQFDHhwQ3VzdG9tTmFtZQJfMQkAAgECE1Vua25vd24gZW50aXR5IHR5cGUJAJQKAgkAzggCCQDNCAIFB2FjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkBQ1wcm9sb2dBY3Rpb25zAAABaQEMc2V0UmVmZXJyYWxzAglvbGRQbGF5ZXIJbmV3UGxheWVyAwkBAiE9AggFAWkPY2FsbGVyUHVibGljS2V5BQNwdWIJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUJb2xkUGxheWVyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJb2xkUGxheWVyAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBQluZXdQbGF5ZXIJAAIBCQCsAgICEUludmFsaWQgYWRkcmVzczogBQluZXdQbGF5ZXIEB29sZHNLZXkJAQlrZXlPbGRpZXMABARvbGRzCQCiCAEFB29sZHNLZXkEBm9sZGllcwMJAQlpc0RlZmluZWQBBQRvbGRzCQC8CQIJAQV2YWx1ZQEFBG9sZHMCAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQZvbGRpZXMFCW5ld1BsYXllcgkAAgEJAKwCAgUJbmV3UGxheWVyAiYgaXMgbm90IG5ld2JpZSAoYWxyZWFkeSBoYXMgcmVmZXJyYWxzKQQIcmVmQnlLZXkJAQ9rZXlBZGRyZXNzUmVmQnkBBQluZXdQbGF5ZXIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwMJAQlpc0RlZmluZWQBBQVyZWZCeQkBCWlzRGVmaW5lZAEJAKYIAQkBBXZhbHVlAQUFcmVmQnkHCQACAQkArAICCQCsAgIFCW5ld1BsYXllcgIUIGFscmVhZHkgaGFzIHJlZkJ5OiAJAQV2YWx1ZQEFBXJlZkJ5BAdyZWZzS2V5CQETa2V5QWRkcmVzc1JlZmVycmFscwEFCW9sZFBsYXllcgQEcmVmcwkAoggBBQdyZWZzS2V5BAlyZWZzQXJyYXkDCQEJaXNEZWZpbmVkAQUEcmVmcwkAvAkCCQEFdmFsdWUBBQRyZWZzAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUJcmVmc0FycmF5BQluZXdQbGF5ZXIJAAIBCQCsAgIJAKwCAgkArAICBQlvbGRQbGF5ZXICEiBhbHJlYWR5IGNvbnRhaW5zIAUJbmV3UGxheWVyAhEgd2l0aGluIHJlZmVycmFscwQHbmV3UmVmcwkAugkCCQDNCAIFCXJlZnNBcnJheQUJbmV3UGxheWVyAgFfBAduZXdPbGRzAwkBD2NvbnRhaW5zRWxlbWVudAIFBm9sZGllcwUJb2xkUGxheWVyCQEFdmFsdWUBBQRvbGRzCQC6CQIJAM0IAgUGb2xkaWVzBQlvbGRQbGF5ZXICAV8JAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFCHJlZkJ5S2V5BQlvbGRQbGF5ZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgUHcmVmc0tleQUHbmV3UmVmcwkAzAgCCQELU3RyaW5nRW50cnkCBQdvbGRzS2V5BQduZXdPbGRzBQNuaWwFDXByb2xvZ0FjdGlvbnMAAAFpARBkaXN0cmlidXRlUG9pbnRzBQhzdHJlbmd0aAhhY2N1cmFjeQlpbnRlbGxlY3QJZW5kdXJhbmNlCWRleHRlcml0eQQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC3ZpcnRXbGdEYXRhCQEJYXNBbnlMaXN0AQkA/AcEBQt3bGdDb250cmFjdAISY2hlY2tXbGdYcFJFQURPTkxZCQDMCAIFBGFkZHIFA25pbAUDbmlsBA12aXJ0V2xnUG9pbnRzCQEFYXNJbnQBCQCRAwIFC3ZpcnRXbGdEYXRhAAEEDSR0MDk5NDMxOTk4MjEDCQBnAgAABQ12aXJ0V2xnUG9pbnRzCQCUCgIAAAUDbmlsBAdkZWx0YVhQCQEFYXNJbnQBCQD8BwQFC3dsZ0NvbnRyYWN0Agl0YWtlV2xnWHAJAMwIAgUEYWRkcgUDbmlsBQNuaWwDCQAAAgUHZGVsdGFYUAUHZGVsdGFYUAkAlAoCBQ12aXJ0V2xnUG9pbnRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMa2V5VXNlckxldmVsAQUEYWRkcgkBBWFzSW50AQkAkQMCBQt2aXJ0V2xnRGF0YQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEJa2V5VXNlclhQAQUEYWRkcgkBBWFzSW50AQkAkQMCBQt2aXJ0V2xnRGF0YQACBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ECXdsZ1BvaW50cwgFDSR0MDk5NDMxOTk4MjECXzEECndsZ0FjdGlvbnMIBQ0kdDA5OTQzMTk5ODIxAl8yBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECmZyZWVLZXlBY2MJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIEDWZyZWVQb2ludHNBY2MJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCmZyZWVLZXlBY2MAAAUJd2xnUG9pbnRzBAtmcmVlS2V5RHVjawkBEWtleUR1Y2tGcmVlUG9pbnRzAQULZHVja0Fzc2V0SWQEDmZyZWVQb2ludHNEdWNrCQELdmFsdWVPckVsc2UCCQCfCAEFC2ZyZWVLZXlEdWNrAAAEB3N1bUZyZWUJAGQCBQ1mcmVlUG9pbnRzQWNjBQ5mcmVlUG9pbnRzRHVjawQPc3VtVG9EaXN0cmlidXRlCQBkAgkAZAIJAGQCCQBkAgUIc3RyZW5ndGgFCGFjY3VyYWN5BQlpbnRlbGxlY3QFCWVuZHVyYW5jZQUJZGV4dGVyaXR5AwkAZgIFD3N1bVRvRGlzdHJpYnV0ZQUHc3VtRnJlZQkAAgEJAKwCAgkArAICAg9UaGVyZSBhcmUgb25seSAJAKQDAQUHc3VtRnJlZQIaIGZyZWUgcG9pbnRzIHRvIGRpc3RyaWJ1dGUECGNoYXJzS2V5CQEMa2V5RHVja0NoYXJzAQULZHVja0Fzc2V0SWQEBWNoYXJzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUIY2hhcnNLZXkCCTBfMF8wXzBfMAIBXwQGbmV3QWNjCQBlAgUNZnJlZVBvaW50c0FjYwUPc3VtVG9EaXN0cmlidXRlCQCUCgIJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQpmcmVlS2V5QWNjAwkAZgIAAAUGbmV3QWNjAAAFBm5ld0FjYwkAzAgCCQEMSW50ZWdlckVudHJ5AgULZnJlZUtleUR1Y2sDCQBmAgAABQZuZXdBY2MJAGQCBQ5mcmVlUG9pbnRzRHVjawUGbmV3QWNjBQ5mcmVlUG9pbnRzRHVjawkAzAgCCQELU3RyaW5nRW50cnkCBQhjaGFyc0tleQkAuQkCCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhclN0cmVuZ3RoBQhzdHJlbmd0aAkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJBY2N1cmFjeQUIYWNjdXJhY3kJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFySW50ZWxsZWN0BQlpbnRlbGxlY3QJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRW5kdXJhbmNlBQllbmR1cmFuY2UJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRGV4dGVyaXR5BQlkZXh0ZXJpdHkFA25pbAIBXwUDbmlsBQ1wcm9sb2dBY3Rpb25zBQp3bGdBY3Rpb25zAAABaQEcc3BsaXRCeUdsb2JhbFdlaWdodHNSRUFET05MWQEGYW1vdW50CQCUCgIFA25pbAkBEmdldE5lZWRlZE1hdGVyaWFscwEFBmFtb3VudAFpASRzcGxpdEJ5R2xvYmFsQW5kTG9jYWxXZWlnaHRzUkVBRE9OTFkDCW1hdEFtb3VudAlyZXNBbW91bnQIdGVycmFpbnMEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQUIdGVycmFpbnMJAJQKAgUDbmlsCQCUCgIJARJnZXROZWVkZWRNYXRlcmlhbHMBBQltYXRBbW91bnQJARNkaXN0cmlidXRlQnlXZWlnaHRzAgUJcmVzQW1vdW50BQ10ZXJyYWluQ291bnRzAWkBE2dldEJhY2twYWNrUkVBRE9OTFkBC2R1Y2tBc3NldElkCQCUCgIFA25pbAkAuQkCCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAIBOgFpARRnZXRXYXJlaG91c2VSRUFET05MWQELbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAACQCUCgIFA25pbAkAugkCCQEMZ2V0V2FyZWhvdXNlAwkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwCAToBaQEKc2F2ZUxhc3RUeAADCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFD2Vjb25vbXlDb250cmFjdAkAzAgCBRJ0b3VybmFtZW50Q29udHJhY3QJAMwIAgUNYWNyZXNDb250cmFjdAUDbmlsCAUBaQZjYWxsZXIJAAIBAg1BY2Nlc3MgZGVuaWVkCQCUCgIJAQZwcm9sb2cBBQFpACoBaQEPdXBkYXRlRHVja1N0YXRzAgtkdWNrQXNzZXRJZAdkZWx0YVhQAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkCQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUHZGVsdGFYUAFpAQ51cGRhdGVBY2NTdGF0cwIEYWRkcgdkZWx0YVhQAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQt3bGdDb250cmFjdAkAzAgCBQ9lY29ub215Q29udHJhY3QJAMwIAgUNYWNyZXNDb250cmFjdAUDbmlsCAUBaQZjYWxsZXIJAAIBAg1BY2Nlc3MgZGVuaWVkCQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFB2RlbHRhWFABaQEJZXF1aXBEdWNrAQllcXVpcG1lbnQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhllcXVpcER1Y2tfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECF2VxdWlwRHVja19jaGVja0RlbGl2ZXJ5BAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQLY3VycmVudFNlZ3MJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywCAV8EBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVuZXdFcQkAtQkCBQllcXVpcG1lbnQCAV8DCQECIT0CCQCQAwEFBW5ld0VxBQtOVU1TRUdNRU5UUwkAAgECFldyb25nIGVxdWlwbWVudCBzdHJpbmcECXRlbXBQcm9kQgkBBmRyZXNzQgQFC2N1cnJlbnRTZWdzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QGBQNuaWwECHNlZ0JwQXV4CQCRAwIJALUJAgkAkQMCBQVuZXdFcQULc2VnQmFja3BhY2sCATsAAQQKYnVmZkVmZmVjdAMJAAACBQhzZWdCcEF1eAIAAAAEBGF1eDAJAJEDAgkAtQkCBQhzZWdCcEF1eAIBLAAAAwkAAAIFBGF1eDACAAAABAZpZHhDbnQJALUJAgUEYXV4MAIBOgQDaWR4CQCRAwIFBmlkeENudAAABANjbnQJAJEDAgUGaWR4Q250AAEDAwMDAwkAAAIFA2lkeAICMDYGCQAAAgUDaWR4AgIwNwYJAAACBQNpZHgCAjA4CQECIT0CBQNjbnQCAAcJAGYCCQENcGFyc2VJbnRWYWx1ZQEFA2NudAAABwkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4CQENcGFyc2VJbnRWYWx1ZQEFA2lkeAIBXwUKcklkeEVmZmVjdAAABAVzdGF0cwkBDGdldER1Y2tTdGF0cwQFBHRoaXMFC2R1Y2tBc3NldElkBQpidWZmRWZmZWN0BgQIbmV3UHJvZEIJAQZkcmVzc0IEBQVuZXdFcQUJdGVtcFByb2RCBwUFc3RhdHMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUJZXF1aXBtZW50CQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCBQpuZXdQcm9kU3RyBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAcJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAgJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAkJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAoJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAsFA25pbAIBXwUDbmlsBQ1wcm9sb2dBY3Rpb25zAAABaQEPZm9ydGlmaWNhdGVMYW5kAgtsYW5kQXNzZXRJZARwbGFuBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLZHVja0Fzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIABAlkdWNrU3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAAABwQHZm9ydEtleQkBF2tleUZvcnRpZmljYXRpb25zQnlMYW5kAQULbGFuZEFzc2V0SWQEDGN1cnJlbnRGb3J0cwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFB2ZvcnRLZXkCDDowXzE1OjBfMTg6MAIBXwQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEAndoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQHY3VyTG9mdAkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8EBGN1ck8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdjdXJMb2Z0BQt2b2xPY2N1cGllZAQEY3VyRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB2N1ckxvZnQFB3ZvbEZyZWUECG5ld0ZvcnRzCQC1CQIFBHBsYW4CAV8EDyR0MDEwNjY1OTEwNjc3NAkBBWZvcnRCBgUMY3VycmVudEZvcnRzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFAndoBQl3aElkeFByb2QFBGN1ck8FBGN1ckYGBQNuaWwECXRlbXBQcm9kQggFDyR0MDEwNjY1OTEwNjc3NAJfMQQFdGVtcE8IBQ8kdDAxMDY2NTkxMDY3NzQCXzIEBXRlbXBGCAUPJHQwMTA2NjU5MTA2Nzc0Al8zBA8kdDAxMDY3NzcxMDY4NzMJAQVmb3J0QgYFCG5ld0ZvcnRzBQl0ZW1wUHJvZEIFBXRlbXBPBQV0ZW1wRgcFCWR1Y2tTdGF0cwQIbmV3UHJvZEIIBQ8kdDAxMDY3NzcxMDY4NzMCXzEEBG5ld08IBQ8kdDAxMDY3NzcxMDY4NzMCXzIEBG5ld0YIBQ8kdDAxMDY3NzcxMDY4NzMCXzMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQdjdXJMb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQRuZXdPCQDMCAIJAKQDAQUEbmV3RgkAzAgCCQCRAwIFB2N1ckxvZnQFCHZvbFRvdGFsBQNuaWwCAV8JAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFB2ZvcnRLZXkFBHBsYW4JAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCBQpuZXdQcm9kU3RyCQDMCAIFCm5ld0xvZnRTdHIFA25pbAIBOgUDbmlsBQ1wcm9sb2dBY3Rpb25zAAABaQETaW5pdER1Y2tUb3VyQXR0ZW1wdAELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFEnRvdXJuYW1lbnRDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEDHRvdXJMb2NhdGlvbgkArAICCQCkAwEFBmxhc3RJZAIEX1RfMAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAUJY3VySGVhbHRoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFBW1heEhQCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFC2N1ckxvY2F0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUMdG91ckxvY2F0aW9uBQNuaWwFDHRvdXJMb2NhdGlvbgFpAQxicmVha0F0dGVtcHQABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OAwkBAiE9AgkAkQMCCQC1CQIFC2N1ckxvY2F0aW9uAgFfBQpsb2NJZHhUeXBlAgFUCQACAQIiWW91ciBkdWNrIGlzIG5vdCBpbiB0aGUgdG91cm5hbWVudAQLc2F2ZWRIZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBA1zYXZlZExvY2F0aW9uCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQCUCgIJAM0IAgkAzQgCBQ1wcm9sb2dBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAULc2F2ZWRIZWFsdGgJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUNc2F2ZWRMb2NhdGlvbgULY3VyTG9jYXRpb24BaQEWZXhpdFRvdXJuYW1lbnRJbnRlcm5hbAELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg1BY2Nlc3MgZGVuaWVkBAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAULc2F2ZWRIZWFsdGgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ1zYXZlZExvY2F0aW9uBQNuaWwHAWkBFGV4aXREZWxpdmVyeUludGVybmFsAQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEAWUJARJleGl0RGVsaXZlcnlDb21tb24EBQtkdWNrQXNzZXRJZAcAAAAACQCUCgIJAM4IAggFAWUCXzEIBQFlAl8yBwFpARBhdXRvRXhpdERlbGl2ZXJ5BAtkdWNrQXNzZXRJZAVuZXdIUAZyZWFzb24Fc2NvcmUDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg1BY2Nlc3MgZGVuaWVkBAFlCQESZXhpdERlbGl2ZXJ5Q29tbW9uBAULZHVja0Fzc2V0SWQGBQVuZXdIUAUFc2NvcmUJAJQKAggFAWUCXzEIBQFlAl8zAWkBDWJyZWFrRGVsaXZlcnkACQCUCgIJAQZwcm9sb2cBBQFpAg1icmVha0RlbGl2ZXJ5AWkBDnByZXBhcmVSb2JiZXJ5AgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQGd2xnQW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFCndsZ0Fzc2V0SWQJAAIBAhVXTEdPTEQgcGF5bWVudHMgb25seSEEBXBhcnRzCQC1CQIJALAJAQUHbWVzc2FnZQIBfAMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECFFdyb25nIG1lc3NhZ2UgZm9ybWF0BAtkdWNrQXNzZXRJZAkAkQMCBQVwYXJ0cwAAAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIecHJlcGFyZVJvYmJlcnlfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECHHByZXBhcmVSb2JiZXJ5X2NoZWNrRGVsaXZlcnkEB3JvYkNvc3QICQEOZ2V0Um9iYmVyeURhdGECBQR0aGlzBQtkdWNrQXNzZXRJZAJfMQMJAGYCBQdyb2JDb3N0BQZ3bGdBbXQJAAIBCQCsAgIJAKwCAgkArAICAghQYXltZW50IAkApAMBBQZ3bGdBbXQCDCA8IHJlcXVpcmVkIAkApAMBBQdyb2JDb3N0BApjYW5kaWRhdGVzCQC1CQIJAJEDAgUFcGFydHMAAQIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJZHVja1N0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEJARNrZXlEdWNrUm9iYmVyeVN0YXRlAQULZHVja0Fzc2V0SWQAAAQKbG9ja2VkTGFuZAkBC3ZhbHVlT3JFbHNlAgkAoggBCQETa2V5TG9ja2VkTGFuZEJ5RHVjawEFC2R1Y2tBc3NldElkAgAEB2xhbmRFVEEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleUxhbmRDb29sZG93bkVUQQEFCmxvY2tlZExhbmQAAAMDCQECIT0CBQlkdWNrU3RhdGUFC2R1Y2tJZHhGcmVlCQBmAgUHbGFuZEVUQQUDbm93BwkAAgEJAKwCAgInWW91IGFscmVhZHkgc3RhcnRlZCByb2JiaW5nLCB3YWl0IHRpbGwgCQCkAwEFB2xhbmRFVEEKAQdjaGVja2VyAgNhY2MLbGFuZEFzc2V0SWQEBXN0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEJARNrZXlMYW5kUm9iYmVyeVN0YXRlAQULbGFuZEFzc2V0SWQAAAQLY29vbGRvd25FVEEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleUxhbmRDb29sZG93bkVUQQEFC2xhbmRBc3NldElkAAADCQBmAgUFc3RhdGUJAJADAQUQbGFuZFJvYkNvb2xkb3ducwkAAgECDUludmFsaWQgc3RhdGUDCQBmAgUDbm93BQtjb29sZG93bkVUQQQKc3Rha2VkVGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAADCQBnAgAABQpzdGFrZWRUaW1lBQNhY2MEAWEJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQBZAkAtQkCCAUBYQtkZXNjcmlwdGlvbgIBXwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQMcHJvZHVjdGl2aXR5CQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwQJZGVsdGFUaW1lCQBlAgUDbm93BQpzdGFrZWRUaW1lBAhhdmFpbFJlcwkAawMFCWRlbHRhVGltZQkAaAIFDHByb2R1Y3Rpdml0eQUGcGllY2VzBQlEQVlNSUxMSVMDCQBmAgUOTUlOX1JFU19UT19ST0IFCGF2YWlsUmVzBQNhY2MJAM0IAgUDYWNjBQtsYW5kQXNzZXRJZAUDYWNjBAhmaWx0ZXJlZAoAAiRsBQpjYW5kaWRhdGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdjaGVja2VyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAwkAAAIJAJADAQUIZmlsdGVyZWQAAAkAAgECGU5vIGNhbmRpZGF0ZXMgZm9yIHJvYmJlcnkEBnJuZElkeAkBD2dldFJhbmRvbU51bWJlcgMJAJADAQUIZmlsdGVyZWQFB21lc3NhZ2UFA3NpZwQLbGFuZEFzc2V0SWQJAJEDAgUIZmlsdGVyZWQFBnJuZElkeAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJARNrZXlMYW5kUm9iYmVyeVN0YXRlAQULbGFuZEFzc2V0SWQFDHJvYklkeExvY2tlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleUxhbmRDb29sZG93bkVUQQEFC2xhbmRBc3NldElkCQBkAgUDbm93CQCRAwIFEGxhbmRSb2JDb29sZG93bnMFDHJvYklkeExvY2tlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAUQZHVja0lkeFByZXBhcmluZwkAzAgCCQELU3RyaW5nRW50cnkCCQETa2V5TG9ja2VkTGFuZEJ5RHVjawEFC2R1Y2tBc3NldElkBQtsYW5kQXNzZXRJZAUDbmlsBQ1wcm9sb2dBY3Rpb25zBQtsYW5kQXNzZXRJZAFpAQdyb2JMYW5kAgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAlAoCCQDNCAIFDXByb2xvZ0FjdGlvbnMJAQxJbnRlZ2VyRW50cnkCCQEYa2V5TGFzdFJvYmJlcnlUaW1lQnlEdWNrAQULZHVja0Fzc2V0SWQFA25vdwAAAWkBDmFjY2VwdERlbGl2ZXJ5AAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJZnVuZFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFD2Vjb25vbXlDb250cmFjdAUPZGVsaXZlcnlGdW5kS2V5AAAEC2xvY2tlZFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFD2Vjb25vbXlDb250cmFjdAURZGVsaXZlcnlMb2NrZWRLZXkAAAMJAGYCBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkJAGUCBQlmdW5kVG90YWwFC2xvY2tlZFRvdGFsCQACAQkArAICCQCsAgIJAKwCAgIgRGVsaXZlcnkgaXMgbm90IGF2YWlsYWJsZSwgZnVuZD0JAQpmaXhlZFBvaW50AgUJZnVuZFRvdGFsAAYCCSwgbG9ja2VkPQkBCmZpeGVkUG9pbnQCBQtsb2NrZWRUb3RhbAAGBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAhkZWxheUVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5RGVsaXZlcnlEZWxheUJ5RHVjawEFC2R1Y2tBc3NldElkAAADCQBmAgUIZGVsYXlFVEEFA25vdwkAAgEJAKwCAgIqRGVsaXZlcnkgaXMgZm9yYmlkZGVuIGZvciB5b3VyIGR1Y2sgdW50aWwgCQCkAwEFCGRlbGF5RVRBBAZoZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQDCQBnAgAABQZoZWFsdGgJAAIBAitZb3UgY2Fubm90IGFjY2VwdCBkZWxpdmVyeSB3aXRoIHplcm8gaGVhbHRoBAhjb3VudEtleQkBFGtleVVzZXJEZWxpdmVyeUNvdW50AQUIdXNlckFkZHIEBWNvdW50CQELdmFsdWVPckVsc2UCCQCfCAEFCGNvdW50S2V5AAAEB2xhc3REYXkJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleVVzZXJMYXN0RGVsaXZlcnlEYXkBBQh1c2VyQWRkcgAABAV0b2RheQkAaQIFA25vdwUJREFZTUlMTElTBAVhY3JlcwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ1hY3Jlc0NvbnRyYWN0CQEaa2V5QWNyZXNTdGFrZWRBbW91bnRCeVVzZXIBBQh1c2VyQWRkcgAABBFhbGxvd2VkRGVsaXZlcmllcwkAZAIFF0FMTE9XRURfRlJFRV9ERUxJVkVSSUVTCQBpAgUFYWNyZXMFGkFDUkVTX0ZPUl9ERUxJVkVSWV9BVFRFTVBUAwMJAGcCBQVjb3VudAURYWxsb3dlZERlbGl2ZXJpZXMJAAACBQdsYXN0RGF5BQV0b2RheQcJAAIBCQCsAgIJAKwCAgIRWW91IGFscmVhZHkgdXNlZCAJAKQDAQURYWxsb3dlZERlbGl2ZXJpZXMCHCBkZWxpdmVyeSBhdHRlbXB0cyBmb3IgdG9kYXkDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh5hY2NlcHREZWxpdmVyeV9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIcYWNjZXB0RGVsaXZlcnlfY2hlY2tEZWxpdmVyeQQObmV3TG9ja2VkVG90YWwJAQVhc0ludAEJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhR1cGRhdGVEZWxpdmVyeUxvY2tlZAkAzAgCCQBkAgULbG9ja2VkVG90YWwFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUDbmlsBQNuaWwECWN1ckxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXJMb2NLZXkFD0RFRkFVTFRMT0NBVElPTgQQZGVsaXZlcnlMb2NhdGlvbgkArAICCQCkAwEFA25vdwIEX0RfMAkAlAoCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAULY3VyTG9jYXRpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgUJY3VyTG9jS2V5BRBkZWxpdmVyeUxvY2F0aW9uCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhjb3VudEtleQMJAQIhPQIFB2xhc3REYXkFBXRvZGF5AAAFBWNvdW50BQNuaWwFDXByb2xvZ0FjdGlvbnMJAJQKAgUQZGVsaXZlcnlMb2NhdGlvbgUObmV3TG9ja2VkVG90YWwBaQEVY2hlY2tEZWxpdmVyeUNhbGxiYWNrAQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUSdG91cm5hbWVudENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAkAlAoCBQNuaWwJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQBaQEPZ2VuVGVzdFJFQURPTkxZAgRzZWVkDWxhbmRTaXplSW5kZXgEA3ZyZgkBBXZhbHVlAQgJAQV2YWx1ZQEJAO0HAQD+xawBA3ZyZgQGYmlnTnVtCQEDYWJzAQkAngMBCQDLAQIFA3ZyZgkA9wMBCQCaAwEFBHNlZWQJAJQKAgUDbmlsCQEEZ2VuMQMFBmJpZ051bQUNbGFuZFNpemVJbmRleAD///////////8BADSBSfs=", "height": 2827512, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DYWprMNgwRcxyBQsbywLHWYo17cbCotJBzWj3wpP2zmM Next: EHki7ShqZPBSgtwFxCThNtbfK92WztqA3zVtppJxmNKk Diff:
OldNewDifferences
179179
180180 let aI = 6
181181
182-let aJ = 25
183-
184-let aK = 3456000
185-
186-let aL = 10000000000
187-
188-let aM = "Africa_F_Africa"
189-
190-let aN = 39637
191-
192-let aO = 10
193-
194-let aP = 50000
195-
196-let aQ = 600000
197-
198-let aR = 1
199-
200-let aS = 50000000
201-
202-let aT = ["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"]
203-
204-let aU = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
205-
206-let aV = 10000000
207-
208-let aW = [15, 16, 17, 18, 19, 20]
209-
210-let aX = ["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_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_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_"]
211-
212-let aY = 6
213-
214-let aZ = 8
215-
216-let ba = 9
217-
218-let bb = 10
182+let aJ = 5
183+
184+let aK = 25
185+
186+let aL = 3456000
187+
188+let aM = 10000000000
189+
190+let aN = "Africa_F_Africa"
191+
192+let aO = 39637
193+
194+let aP = 10
195+
196+let aQ = 50000
197+
198+let aR = 600000
199+
200+let aS = 1
201+
202+let aT = 50000000
203+
204+let aU = ["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"]
205+
206+let aV = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
207+
208+let aW = 10000000
209+
210+let aX = [15, 16, 17, 18, 19, 20]
211+
212+let aY = ["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_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_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_"]
213+
214+let aZ = 6
215+
216+let ba = 8
217+
218+let bb = 9
219219
220220 let bc = 10
221221
222-let bd = 0
223-
224-let be = 1
225-
226-let bf = 2
227-
228-let bg = 3
229-
230-let bh = 4
231-
232-let bi = 0
233-
234-let bj = 1
235-
236-let bk = 2
237-
238-let bl = 3
239-
240-let bm = 0
241-
242-let bn = 1
243-
244-let bo = 2
245-
246-let bp = 3
247-
248-let bq = 0
249-
250-let br = 1
251-
252-let bs = 2
253-
254-func bt (bu) = ("no_" + bu)
255-
256-
257-func bv (bu) = ("lcna_" + bu)
258-
259-
260-func bw (bu) = ("st_" + bu)
261-
262-
263-func bx (by,bu) = makeString(["las", by, bu], "_")
264-
265-
266-func bz (bA,bu,bB) = ((((("sttao_" + bA) + "_") + bu) + "_") + bB)
267-
268-
269-func bC (Q) = ("wh_" + Q)
270-
271-
272-func bD (bu) = ("infraLevel_" + bu)
273-
274-
275-func bE (Q) = ("fortifications_" + Q)
276-
277-
278-func bF (bu) = ("duckCustomNameByAssetId_" + bu)
279-
280-
281-func bG (c) = ("accountCustomNameByAddr_" + c)
282-
283-
284-func bH (c) = ("accRefBy_" + c)
285-
286-
287-func bI (B) = ("onboardArtActivatedOnDuck_" + B)
288-
289-
290-func bJ (c) = ("onboardArtActivatedDuckBy_" + c)
291-
292-
293-func bK (c) = ("accReferrals_" + c)
294-
295-
296-func bL (bu) = ("duckOwner_" + bu)
297-
298-
299-func bM (bB) = ("stakedDuckByOwner_" + bB)
300-
301-
302-func bN (B) = ("backPack_" + B)
303-
304-
305-func bO (B) = ("duckLocation_" + B)
306-
307-
308-func bP (bQ) = ("%s%s__userGwlReleaseTime__" + bQ)
309-
310-
311-func bR () = "emergencyWarehouseProducts"
312-
313-
314-let bS = "deliveryFund"
315-
316-let bT = "deliveryLocked"
317-
318-let bU = "%s__lastTourId"
319-
320-func bV (bW) = ("%s%d__tourStaticData__" + toString(bW))
321-
322-
323-func bX (bW) = ("%s%d__tourDynamicData__" + toString(bW))
324-
325-
326-func bY (bW,B) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bW), B], "__")
327-
328-
329-let bZ = 0
330-
331-let ca = 1
332-
333-let cb = 6
334-
335-let cc = 1
336-
337-func cd (ce,bW) = {
338- let cf = split(valueOrErrorMessage(getString(ce, bV(bW)), (("Error reading tournament " + toString(bW)) + " data")), "__")
339- let cg = split_4C(valueOrErrorMessage(getString(ce, bX(bW)), (("Error reading tournament " + toString(bW)) + " data")), "__")
340-[cf, cg]
341- }
342-
343-
344-func ch (ce,ci) = {
345- let cj = valueOrElse(getInteger(ce, bU), 0)
346- let ck = split(ci, "_")
222+let bd = 10
223+
224+let be = 0
225+
226+let bf = 1
227+
228+let bg = 2
229+
230+let bh = 3
231+
232+let bi = 4
233+
234+let bj = 0
235+
236+let bk = 1
237+
238+let bl = 2
239+
240+let bm = 3
241+
242+let bn = 0
243+
244+let bo = 1
245+
246+let bp = 2
247+
248+let bq = 3
249+
250+let br = 0
251+
252+let bs = 1
253+
254+let bt = 2
255+
256+func bu (bv) = ("no_" + bv)
257+
258+
259+func bw (bv) = ("lcna_" + bv)
260+
261+
262+func bx (bv) = ("st_" + bv)
263+
264+
265+func by (bz,bv) = makeString(["las", bz, bv], "_")
266+
267+
268+func bA (bB,bv,bC) = ((((("sttao_" + bB) + "_") + bv) + "_") + bC)
269+
270+
271+func bD (Q) = ("wh_" + Q)
272+
273+
274+func bE (bv) = ("infraLevel_" + bv)
275+
276+
277+func bF (Q) = ("fortifications_" + Q)
278+
279+
280+func bG (bv) = ("duckCustomNameByAssetId_" + bv)
281+
282+
283+func bH (c) = ("accountCustomNameByAddr_" + c)
284+
285+
286+func bI (c) = ("accRefBy_" + c)
287+
288+
289+func bJ (B) = ("onboardArtActivatedOnDuck_" + B)
290+
291+
292+func bK (c) = ("onboardArtActivatedDuckBy_" + c)
293+
294+
295+func bL (c) = ("accReferrals_" + c)
296+
297+
298+func bM (bv) = ("duckOwner_" + bv)
299+
300+
301+func bN (bC) = ("stakedDuckByOwner_" + bC)
302+
303+
304+func bO (B) = ("backPack_" + B)
305+
306+
307+func bP (B) = ("duckLocation_" + B)
308+
309+
310+func bQ (bR) = ("%s%s__userGwlReleaseTime__" + bR)
311+
312+
313+func bS () = "emergencyWarehouseProducts"
314+
315+
316+let bT = "deliveryFund"
317+
318+let bU = "deliveryLocked"
319+
320+let bV = "%s__lastTourId"
321+
322+func bW (bX) = ("%s%d__tourStaticData__" + toString(bX))
323+
324+
325+func bY (bX) = ("%s%d__tourDynamicData__" + toString(bX))
326+
327+
328+func bZ (bX,B) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bX), B], "__")
329+
330+
331+let ca = 0
332+
333+let cb = 1
334+
335+let cc = 6
336+
337+let cd = 1
338+
339+func ce (cf,bX) = {
340+ let cg = split(valueOrErrorMessage(getString(cf, bW(bX)), (("Error reading tournament " + toString(bX)) + " data")), "__")
341+ let ch = split_4C(valueOrErrorMessage(getString(cf, bY(bX)), (("Error reading tournament " + toString(bX)) + " data")), "__")
342+[cg, ch]
343+ }
344+
345+
346+func ci (cf,cj) = {
347+ let ck = valueOrElse(getInteger(cf, bV), 0)
348+ let cl = split(cj, "_")
347349 let aA = lastBlock.timestamp
348- let cl = cd(ce, cj)
349- let cf = cl[bZ]
350- let cg = cl[ca]
351- if (if (if ((ck[br] == "T"))
352- then (parseIntValue(ck[bq]) == cj)
350+ let cm = ce(cf, ck)
351+ let cg = cm[ca]
352+ let ch = cm[cb]
353+ if (if (if ((cl[bs] == "T"))
354+ then (parseIntValue(cl[br]) == ck)
353355 else false)
354- then (cg[cc] == "INPROGRESS")
356+ then (ch[cd] == "INPROGRESS")
355357 else false)
356- then (parseIntValue(cf[cb]) > aA)
358+ then (parseIntValue(cg[cc]) > aA)
357359 else false
358360 }
359361
360362
361-func cm (ci) = {
362- let ck = split(ci, "_")
363+func cn (cj) = {
364+ let cl = split(cj, "_")
363365 let aA = lastBlock.timestamp
364- let cn = parseIntValue(ck[bq])
365- let co = parseIntValue(ck[bs])
366- if (if ((ck[br] == "D"))
367- then ((cn + aQ) > aA)
366+ let co = parseIntValue(cl[br])
367+ let cp = parseIntValue(cl[bt])
368+ if (if ((cl[bs] == "D"))
369+ then ((co + aR) > aA)
368370 else false)
369- then (3 >= co)
371+ then (3 >= cp)
370372 else false
371373 }
372374
373375
374-func cp (ci) = {
375- let cq = split(ci, "_")[br]
376- if ((cq != "T"))
377- then (cq != "D")
376+func cq (cj) = {
377+ let cr = split(cj, "_")[bs]
378+ if ((cr != "T"))
379+ then (cr != "D")
378380 else false
379381 }
380382
381383
382-func cr (ce,ci) = {
383- let cj = valueOrElse(getInteger(ce, bU), 0)
384- let ck = split(ci, "_")
384+func cs (cf,cj) = {
385+ let ck = valueOrElse(getInteger(cf, bV), 0)
386+ let cl = split(cj, "_")
385387 let aA = lastBlock.timestamp
386- let cl = cd(ce, cj)
387- let cf = cl[bZ]
388- let cg = cl[ca]
389- let cq = ck[br]
390- if ((cq == "D"))
388+ let cm = ce(cf, ck)
389+ let cg = cm[ca]
390+ let ch = cm[cb]
391+ let cr = cl[bs]
392+ if ((cr == "D"))
391393 then true
392- else if (if (if ((ck[br] == "T"))
393- then (parseIntValue(ck[bq]) == cj)
394+ else if (if (if ((cl[bs] == "T"))
395+ then (parseIntValue(cl[br]) == ck)
394396 else false)
395- then (cg[cc] == "INPROGRESS")
397+ then (ch[cd] == "INPROGRESS")
396398 else false)
397- then (parseIntValue(cf[cb]) > aA)
399+ then (parseIntValue(cg[cc]) > aA)
398400 else false
399401 }
400402
401403
402-func cs (ct) = (parseIntValue(ct[aY]) * aV)
403-
404-
405-func cu (cv,cw,cx) = throw(((((("Cheat attempt: oldLoc=" + cv) + ", newLoc=") + cw) + ", case=") + toString(cx)))
406-
407-
408-let cy = false
404+func ct (cu) = (parseIntValue(cu[aZ]) * aW)
405+
406+
407+func cv (cw,cx,cy) = throw(((((("Cheat attempt: oldLoc=" + cw) + ", newLoc=") + cx) + ", case=") + toString(cy)))
408+
409409
410410 let cz = false
411411
412-let cA = 86400000
413-
414-let cB = take(drop(this.bytes, 1), 1)
415-
416-let cC = {
417- let cD = cB
418- if ((base58'2W' == cD))
412+let cA = false
413+
414+let cB = 86400000
415+
416+let cC = take(drop(this.bytes, 1), 1)
417+
418+let cD = {
419+ let cE = cC
420+ if ((base58'2W' == cE))
419421 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
420- else if ((base58'2T' == cD))
422+ else if ((base58'2T' == cE))
421423 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
422424 else throw("Unknown chain")
423425 }
424426
425-let cE = {
426- let cD = cB
427- if ((base58'2W' == cD))
427+let cF = {
428+ let cE = cC
429+ if ((base58'2W' == cE))
428430 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
429- else if ((base58'2T' == cD))
431+ else if ((base58'2T' == cE))
430432 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
431433 else throw("Unknown chain")
432434 }
433435
434-let cF = {
435- let cD = cB
436- if ((base58'2W' == cD))
436+let cG = {
437+ let cE = cC
438+ if ((base58'2W' == cE))
437439 then 10000000000
438- else if ((base58'2T' == cD))
440+ else if ((base58'2T' == cE))
439441 then 100000000
440442 else throw("Unknown chain")
441443 }
442444
443-let cG = {
444- let cD = cB
445- if ((base58'2W' == cD))
446- then cA
447- else if ((base58'2T' == cD))
445+let cH = {
446+ let cE = cC
447+ if ((base58'2W' == cE))
448+ then cB
449+ else if ((base58'2T' == cE))
448450 then 60000
449451 else throw("Unknown chain")
450452 }
451453
452-let cH = {
453- let cD = cB
454- if ((base58'2W' == cD))
454+let cI = {
455+ let cE = cC
456+ if ((base58'2W' == cE))
455457 then 10800000
456- else if ((base58'2T' == cD))
458+ else if ((base58'2T' == cE))
457459 then 900000
458460 else throw("Unknown chain")
459461 }
460462
461-let cI = "__"
462-
463-let cJ = 1000000
464-
465-let cK = 100000000
466-
467-let cL = 25
468-
469-let cM = 100
470-
471-let cN = 225
472-
473-let cO = 400
474-
475-let cP = 625
476-
477-let cQ = [0, 1, 2, 3, 4, 5]
478-
479-func cR (cS,cT) = valueOrErrorMessage(getString(cS, cT), makeString(["mandatory ", toString(cS), ".", cT, " is not defined"], ""))
480-
481-
482-let cU = 1
483-
484-let cV = 2
485-
486-let cW = 3
487-
488-let cX = 4
489-
490-let cY = 7
491-
492-let cZ = 8
493-
494-func da () = "%s__restConfig"
495-
496-
497-func db () = "%s__restAddr"
498-
499-
500-func dc (dd) = split_4C(cR(dd, da()), cI)
501-
502-
503-func de (df,dg) = valueOrErrorMessage(addressFromString(df[dg]), ("Rest cfg doesn't contain address at index " + toString(dg)))
504-
505-
506-let dh = addressFromStringValue(valueOrElse(getString(this, db()), cE))
507-
508-let df = dc(dh)
509-
510-let aq = de(df, cU)
511-
512-let di = de(df, cV)
513-
514-let dj = de(df, cW)
515-
516-let dk = de(df, cX)
517-
518-let dl = de(df, cY)
519-
520-let dm = de(df, cZ)
521-
522-let dn = 0
523-
524-let do = 1
525-
526-let dp = 2
527-
528-let dq = 3
529-
530-let dr = "wlg_assetId"
531-
532-let ds = valueOrErrorMessage(getBinary(dk, dr), "WLGOLD is not issued yet")
533-
534-let dt = "acresAssetId"
535-
536-let du = valueOrErrorMessage(getBinary(dm, dt), "ACRES is not issued yet")
537-
538-let dv = 2
539-
540-func dw (cS) = ("finishBlockForAddr_" + cS)
541-
542-
543-func dx () = "resTypesProportions"
544-
545-
546-func dy (dz) = ("resTypesByContinent_" + dz)
547-
548-
549-func dA (bB) = ("stakedLandsByOwner_" + bB)
550-
551-
552-func dB (bB) = ("stakedPiecesByOwner_" + bB)
553-
554-
555-func dC (dD) = {
556- let cD = dD
557- if ($isInstanceOf(cD, "String"))
463+let cJ = "__"
464+
465+let cK = 1000000
466+
467+let cL = 100000000
468+
469+let cM = 25
470+
471+let cN = 100
472+
473+let cO = 225
474+
475+let cP = 400
476+
477+let cQ = 625
478+
479+let cR = [0, 1, 2, 3, 4, 5]
480+
481+func cS (cT,cU) = valueOrErrorMessage(getString(cT, cU), makeString(["mandatory ", toString(cT), ".", cU, " is not defined"], ""))
482+
483+
484+let cV = 1
485+
486+let cW = 2
487+
488+let cX = 3
489+
490+let cY = 4
491+
492+let cZ = 7
493+
494+let da = 8
495+
496+func db () = "%s__restConfig"
497+
498+
499+func dc () = "%s__restAddr"
500+
501+
502+func dd (de) = split_4C(cS(de, db()), cJ)
503+
504+
505+func df (dg,dh) = valueOrErrorMessage(addressFromString(dg[dh]), ("Rest cfg doesn't contain address at index " + toString(dh)))
506+
507+
508+let di = addressFromStringValue(valueOrElse(getString(this, dc()), cF))
509+
510+let dg = dd(di)
511+
512+let aq = df(dg, cV)
513+
514+let dj = df(dg, cW)
515+
516+let dk = df(dg, cX)
517+
518+let dl = df(dg, cY)
519+
520+let dm = df(dg, cZ)
521+
522+let dn = df(dg, da)
523+
524+let do = 0
525+
526+let dp = 1
527+
528+let dq = 2
529+
530+let dr = 3
531+
532+let ds = "wlg_assetId"
533+
534+let dt = valueOrErrorMessage(getBinary(dl, ds), "WLGOLD is not issued yet")
535+
536+let du = "acresAssetId"
537+
538+let dv = valueOrErrorMessage(getBinary(dn, du), "ACRES is not issued yet")
539+
540+let dw = 2
541+
542+func dx (cT) = ("finishBlockForAddr_" + cT)
543+
544+
545+func dy () = "resTypesProportions"
546+
547+
548+func dz (dA) = ("resTypesByContinent_" + dA)
549+
550+
551+func dB (bC) = ("stakedLandsByOwner_" + bC)
552+
553+
554+func dC (bC) = ("stakedPiecesByOwner_" + bC)
555+
556+
557+func dD (dE) = {
558+ let cE = dE
559+ if ($isInstanceOf(cE, "String"))
558560 then {
559- let dE = cD
560- dE
561+ let dF = cE
562+ dF
561563 }
562564 else throw("fail to cast into String")
563565 }
564566
565567
566-func dF (dD) = {
567- let cD = dD
568- if ($isInstanceOf(cD, "Int"))
568+func dG (dE) = {
569+ let cE = dE
570+ if ($isInstanceOf(cE, "Int"))
569571 then {
570- let dG = cD
571- dG
572+ let dH = cE
573+ dH
572574 }
573575 else throw("fail to cast into Int")
574576 }
575577
576578
577-func dH (dD) = {
578- let cD = dD
579- if ($isInstanceOf(cD, "List[Any]"))
579+func dI (dE) = {
580+ let cE = dE
581+ if ($isInstanceOf(cE, "List[Any]"))
580582 then {
581- let dI = cD
582- dI
583+ let dJ = cE
584+ dJ
583585 }
584586 else throw("fail to cast into List[Any]")
585587 }
586588
587589
588-func dJ (dD) = {
589- let cD = dD
590- if ($isInstanceOf(cD, "Boolean"))
590+func dK (dE) = {
591+ let cE = dE
592+ if ($isInstanceOf(cE, "Boolean"))
591593 then {
592- let dE = cD
593- dE
594+ let dF = cE
595+ dF
594596 }
595597 else throw("fail to cast into Boolean")
596598 }
597599
598600
599-func dK (dL) = {
600- let cD = dL
601- if (("S" == cD))
602- then cL
603- else if (("M" == cD))
604- then cM
605- else if (("L" == cD))
606- then cN
607- else if (("XL" == cD))
608- then cO
609- else if (("XXL" == cD))
610- then cP
601+func dL (dM) = {
602+ let cE = dM
603+ if (("S" == cE))
604+ then cM
605+ else if (("M" == cE))
606+ then cN
607+ else if (("L" == cE))
608+ then cO
609+ else if (("XL" == cE))
610+ then cP
611+ else if (("XXL" == cE))
612+ then cQ
611613 else throw("Unknown land size")
612614 }
613615
614616
615-func dM (dE) = isDefined(parseInt(dE))
616-
617-
618-func dN () = "contractsBlocked"
619-
620-
621-func dO (c) = ("lastTxIdByUser_" + c)
622-
623-
624-func dP (dQ,dR) = {
625- let dS = pow(10, 0, dR, 0, 0, DOWN)
626- let dT = toString((dQ % dS))
627- let dU = drop(toString(dS), (1 + size(dT)))
628- (((toString((dQ / dS)) + ".") + dU) + dT)
629- }
630-
631-
632-func dV (dW,dX,dY) = {
633- let dZ = sha256((dX + dY))
634- (toInt(dZ) % dW)
635- }
636-
637-
638-let ea = {
639- let cD = cB
640- if ((base58'2W' == cD))
617+func dN (dF) = isDefined(parseInt(dF))
618+
619+
620+func dO () = "contractsBlocked"
621+
622+
623+func dP (c) = ("lastTxIdByUser_" + c)
624+
625+
626+func dQ (dR,dS) = {
627+ let dT = pow(10, 0, dS, 0, 0, DOWN)
628+ let dU = toString((dR % dT))
629+ let dV = drop(toString(dT), (1 + size(dU)))
630+ (((toString((dR / dT)) + ".") + dV) + dU)
631+ }
632+
633+
634+func dW (dX,dY,dZ) = {
635+ let ea = sha256((dY + dZ))
636+ (toInt(ea) % dX)
637+ }
638+
639+
640+let eb = {
641+ let cE = cC
642+ if ((base58'2W' == cE))
641643 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
642- else if ((base58'2T' == cD))
644+ else if ((base58'2T' == cE))
643645 then this
644646 else throw("Unknown chain")
645647 }
646648
647-let eb = {
648- let cD = cB
649- if ((base58'2W' == cD))
649+let ec = {
650+ let cE = cC
651+ if ((base58'2W' == cE))
650652 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
651- else if ((base58'2T' == cD))
653+ else if ((base58'2T' == cE))
652654 then this
653655 else throw("Unknown chain")
654656 }
655657
656-let ec = {
657- let cD = cB
658- if ((base58'2W' == cD))
659- then if (cy)
658+let ed = {
659+ let cE = cC
660+ if ((base58'2W' == cE))
661+ then if (cz)
660662 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
661663 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
662- else if ((base58'2T' == cD))
664+ else if ((base58'2T' == cE))
663665 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
664666 else throw("Unknown chain")
665667 }
666668
667-let ed = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
668-
669-let ee = 300000
670-
671-let ef = 5000000
672-
673-let eg = 50
674-
675-let eh = 10000000
676-
677-let ei = {
678- let cD = cB
679- if ((base58'2W' == cD))
669+let ee = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
670+
671+let ef = 300000
672+
673+let eg = 5000000
674+
675+let eh = 50
676+
677+let ei = 10000000
678+
679+let ej = {
680+ let cE = cC
681+ if ((base58'2W' == cE))
680682 then 252289527462
681- else if ((base58'2T' == cD))
683+ else if ((base58'2T' == cE))
682684 then 2522895274
683685 else throw("Unknown chain")
684686 }
685687
686-let ej = {
687- let cD = cB
688- if ((base58'2W' == cD))
688+let ek = {
689+ let cE = cC
690+ if ((base58'2W' == cE))
689691 then 250000000
690- else if ((base58'2T' == cD))
692+ else if ((base58'2T' == cE))
691693 then 250000000
692694 else throw("Unknown chain")
693695 }
694696
695-let ek = 2500000000
696-
697-let el = toBigInt(5)
698-
699-let em = toBigInt(20)
700-
701-let en = toBigInt((20 * 20))
702-
703-let eo = toBigInt(((20 * 20) * 20))
704-
705-let ep = toBigInt((((20 * 20) * 20) * 20))
706-
707-let eq = toBigInt(((((20 * 20) * 20) * 20) * 20))
708-
709-let er = 500
710-
711-func es () = "nextLandNum"
712-
713-
714-func et (eu) = ("lcn_" + eu)
715-
716-
717-func ev (ew) = ("la_" + ew)
718-
719-
720-func ex (bu,bB) = ((("ilao_" + bu) + "_") + bB)
721-
722-
723-func ey (ew) = ("lo_" + ew)
724-
725-
726-func ez (eu) = ("duckByCustomName_" + eu)
727-
728-
729-func eA (eu) = ("accountByCustomName_" + eu)
730-
731-
732-func eB () = "oldiesList"
733-
734-
735-let eC = 0
736-
737-let eD = 1
738-
739-let eE = 2
740-
741-let eF = 0
742-
743-let eG = 5
744-
745-let eH = 6
746-
747-let eI = 7
748-
749-func eJ (ew,dL) = ((aF + ew) + dL)
750-
751-
752-func eK (eL,eM) = {
753- let eN = if ((eL >= 0))
754- then (((eL + eM) - 1) / eM)
755- else -((((-(eL) + eM) - 1) / eM))
756- (eN * cK)
757- }
758-
759-
760-func eO (eP,eQ) = {
761- let eR = (((((eQ[0] + eQ[1]) + eQ[2]) + eQ[3]) + eQ[4]) + eQ[5])
762- if ((0 >= eR))
697+let el = 2500000000
698+
699+let em = toBigInt(5)
700+
701+let en = toBigInt(20)
702+
703+let eo = toBigInt((20 * 20))
704+
705+let ep = toBigInt(((20 * 20) * 20))
706+
707+let eq = toBigInt((((20 * 20) * 20) * 20))
708+
709+let er = toBigInt(((((20 * 20) * 20) * 20) * 20))
710+
711+let es = 500
712+
713+func et () = "nextLandNum"
714+
715+
716+func eu (ev) = ("lcn_" + ev)
717+
718+
719+func ew (ex) = ("la_" + ex)
720+
721+
722+func ey (bv,bC) = ((("ilao_" + bv) + "_") + bC)
723+
724+
725+func ez (ex) = ("lo_" + ex)
726+
727+
728+func eA (ev) = ("duckByCustomName_" + ev)
729+
730+
731+func eB (ev) = ("accountByCustomName_" + ev)
732+
733+
734+func eC () = "oldiesList"
735+
736+
737+let eD = 0
738+
739+let eE = 1
740+
741+let eF = 2
742+
743+let eG = 0
744+
745+let eH = 5
746+
747+let eI = 6
748+
749+let eJ = 7
750+
751+func eK (ex,dM) = ((aF + ex) + dM)
752+
753+
754+func eL (eM,eN) = {
755+ let eO = if ((eM >= 0))
756+ then (((eM + eN) - 1) / eN)
757+ else -((((-(eM) + eN) - 1) / eN))
758+ (eO * cL)
759+ }
760+
761+
762+func eP (eQ,eR) = {
763+ let eS = (((((eR[0] + eR[1]) + eR[2]) + eR[3]) + eR[4]) + eR[5])
764+ if ((0 >= eS))
763765 then throw("Zero weights sum")
764766 else {
765- let eS = fraction(eP, cJ, eR)
766- func eT (eU,eV) = (eU :+ fraction(eV, eS, cJ))
767-
768- let eW = eQ
769- let eX = size(eW)
770- let eY = nil
771- func eZ (fa,fb) = if ((fb >= eX))
772- then fa
773- else eT(fa, eW[fb])
774-
775- func fc (fa,fb) = if ((fb >= eX))
776- then fa
767+ let eT = fraction(eQ, cK, eS)
768+ func eU (eV,eW) = (eV :+ fraction(eW, eT, cK))
769+
770+ let eX = eR
771+ let eY = size(eX)
772+ let eZ = nil
773+ func fa (fb,fc) = if ((fc >= eY))
774+ then fb
775+ else eU(fb, eX[fc])
776+
777+ func fd (fb,fc) = if ((fc >= eY))
778+ then fb
777779 else throw("List size exceeds 6")
778780
779- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
780- }
781- }
782-
783-
784-func fd (eP) = {
785- let fe = split(value(getString(dx())), "_")
786- if ((size(fe) != aI))
781+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
782+ }
783+ }
784+
785+
786+func fe (eQ) = {
787+ let ff = split(value(getString(dy())), "_")
788+ if ((size(ff) != aI))
787789 then throw("Wrong proportions data")
788790 else {
789- let ff = [parseIntValue(fe[0]), parseIntValue(fe[1]), parseIntValue(fe[2]), parseIntValue(fe[3]), parseIntValue(fe[4]), parseIntValue(fe[5])]
790- eO(eP, ff)
791- }
792- }
793-
794-
795-func fg (fh,fi,fj) = {
796- let fk = fd(fj)
797- func fl (eU,dg) = {
798- let fm = (parseIntValue(fi[dg]) - fk[dg])
799- if ((0 > fm))
800- then throw(((((("Not enough material idx=" + toString(dg)) + ", you have ") + fi[dg]) + ", but need ") + toString(fk[dg])))
801- else (eU :+ toString(fm))
791+ let fg = [parseIntValue(ff[0]), parseIntValue(ff[1]), parseIntValue(ff[2]), parseIntValue(ff[3]), parseIntValue(ff[4]), parseIntValue(ff[5])]
792+ eP(eQ, fg)
793+ }
794+ }
795+
796+
797+func fh (fi,fj,fk) = {
798+ let fl = fe(fk)
799+ func fm (eV,dh) = {
800+ let fn = (parseIntValue(fj[dh]) - fl[dh])
801+ if ((0 > fn))
802+ then throw(((((("Not enough material idx=" + toString(dh)) + ", you have ") + fj[dh]) + ", but need ") + toString(fl[dh])))
803+ else (eV :+ toString(fn))
802804 }
803805
804- if (fh)
806+ if (fi)
805807 then {
806- let eW = cQ
807- let eX = size(eW)
808- let eY = nil
809- func eZ (fa,fb) = if ((fb >= eX))
810- then fa
811- else fl(fa, eW[fb])
812-
813- func fc (fa,fb) = if ((fb >= eX))
814- then fa
808+ let eX = cR
809+ let eY = size(eX)
810+ let eZ = nil
811+ func fa (fb,fc) = if ((fc >= eY))
812+ then fb
813+ else fm(fb, eX[fc])
814+
815+ func fd (fb,fc) = if ((fc >= eY))
816+ then fb
815817 else throw("List size exceeds 6")
816818
817- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
818- }
819- else fi
820- }
821-
822-
823-func fn (fo,fp) = if ((fp == ""))
824- then $Tuple2(fo, false)
819+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
820+ }
821+ else fj
822+ }
823+
824+
825+func fo (fp,fq) = if ((fq == ""))
826+ then $Tuple2(fp, false)
825827 else {
826- func fq (eU,fr) = {
827- let fs = split(fr, ",")
828- if ((size(fs) != 2))
828+ func fr (eV,fs) = {
829+ let ft = split(fs, ",")
830+ if ((size(ft) != 2))
829831 then throw("Incorrect format, should be index,amount")
830832 else {
831- let dg = parseIntValue(fs[0])
832- if (if ((0 > dg))
833+ let dh = parseIntValue(ft[0])
834+ if (if ((0 > dh))
833835 then true
834- else (dg >= size(aX)))
836+ else (dh >= size(aY)))
835837 then throw("Unknown product idx")
836838 else {
837- let ft = parseIntValue(fs[1])
838- let fu = split(eU._1, (fs[0] + ":"))
839- if ((size(fu) != 2))
840- then throw((("You don't have " + aT[dg]) + " equipped"))
839+ let fu = parseIntValue(ft[1])
840+ let fv = split(eV._1, (ft[0] + ":"))
841+ if ((size(fv) != 2))
842+ then throw((("You don't have " + aU[dh]) + " equipped"))
841843 else {
842- let fv = fu[1]
843- let fw = if (dM(take(drop(fv, 1), 1)))
844+ let fw = fv[1]
845+ let fx = if (dN(take(drop(fw, 1), 1)))
844846 then 2
845847 else 1
846- let fx = parseIntValue(take(fv, fw))
847- let fy = drop(fv, fw)
848- let fz = if ((fx >= ft))
849- then (fx - ft)
850- else throw(((((("You equipped " + toString(fx)) + " of ") + aT[dg]) + ", but tried to use ") + toString(ft)))
851- $Tuple2(((((fu[0] + fs[0]) + ":") + toString(fz)) + fy), if (eU._2)
848+ let fy = parseIntValue(take(fw, fx))
849+ let fz = drop(fw, fx)
850+ let fA = if ((fy >= fu))
851+ then (fy - fu)
852+ else throw(((((("You equipped " + toString(fy)) + " of ") + aU[dh]) + ", but tried to use ") + toString(fu)))
853+ $Tuple2(((((fv[0] + ft[0]) + ":") + toString(fA)) + fz), if (eV._2)
852854 then true
853- else if (if ((dg >= 6))
854- then (8 >= dg)
855+ else if (if ((dh >= 6))
856+ then (8 >= dh)
855857 else false)
856- then (fz == 0)
858+ then (fA == 0)
857859 else false)
858860 }
859861 }
860862 }
861863 }
862864
863- let eW = split(fp, "_")
864- let eX = size(eW)
865- let eY = $Tuple2(fo, false)
866- func eZ (fa,fb) = if ((fb >= eX))
867- then fa
868- else fq(fa, eW[fb])
869-
870- func fc (fa,fb) = if ((fb >= eX))
871- then fa
865+ let eX = split(fq, "_")
866+ let eY = size(eX)
867+ let eZ = $Tuple2(fp, false)
868+ func fa (fb,fc) = if ((fc >= eY))
869+ then fb
870+ else fr(fb, eX[fc])
871+
872+ func fd (fb,fc) = if ((fc >= eY))
873+ then fb
872874 else throw("List size exceeds 10")
873875
874- fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
876+ fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
875877 }
876878
877879
878-func fA (fB) = {
879- let fC = if ((fB == ""))
880+func fB (fC) = {
881+ let fD = if ((fC == ""))
880882 then nil
881- else split_4C(fB, "_")
882- func fD (eU,ct) = {
883- let fE = (size(eU) / 8)
884- let fx = if ((size(fC) > fE))
885- then parseIntValue(fC[fE])
883+ else split_4C(fC, "_")
884+ func fE (eV,cu) = {
885+ let fF = (size(eV) / 8)
886+ let fy = if ((size(fD) > fF))
887+ then parseIntValue(fD[fF])
886888 else 0
887- (eU + toBytes(fx))
889+ (eV + toBytes(fy))
888890 }
889891
890- let eW = aX
891- let eX = size(eW)
892- let eY = base58''
893- func eZ (fa,fb) = if ((fb >= eX))
894- then fa
895- else fD(fa, eW[fb])
896-
897- func fc (fa,fb) = if ((fb >= eX))
898- then fa
892+ let eX = aY
893+ let eY = size(eX)
894+ let eZ = base58''
895+ func fa (fb,fc) = if ((fc >= eY))
896+ then fb
897+ else fE(fb, eX[fc])
898+
899+ func fd (fb,fc) = if ((fc >= eY))
900+ then fb
899901 else throw("List size exceeds 50")
900902
901- fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 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)
902- }
903-
904-
905-func fF (fG) = {
906- func fH (eU,ct) = {
907- let fE = size(eU)
908- let fI = take(drop(fG, (8 * fE)), 8)
909- (eU :+ toString(toInt(fI)))
903+ fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 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)
904+ }
905+
906+
907+func fG (fH) = {
908+ func fI (eV,cu) = {
909+ let fF = size(eV)
910+ let fJ = take(drop(fH, (8 * fF)), 8)
911+ (eV :+ toString(toInt(fJ)))
910912 }
911913
912914 makeString_2C({
913- let eW = aX
914- let eX = size(eW)
915- let eY = nil
916- func eZ (fa,fb) = if ((fb >= eX))
917- then fa
918- else fH(fa, eW[fb])
919-
920- func fc (fa,fb) = if ((fb >= eX))
921- then fa
915+ let eX = aY
916+ let eY = size(eX)
917+ let eZ = nil
918+ func fa (fb,fc) = if ((fc >= eY))
919+ then fb
920+ else fI(fb, eX[fc])
921+
922+ func fd (fb,fc) = if ((fc >= eY))
923+ then fb
922924 else throw("List size exceeds 50")
923925
924- fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 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)
926+ fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 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)
925927 }, "_")
926928 }
927929
928930
929-func fJ (fK,fL) = {
930- func fM (eU,fE) = {
931- let fN = if ((size(fK) > (7 + fE)))
932- then fK[(7 + fE)]
931+func fK (fL,fM) = {
932+ func fN (eV,fF) = {
933+ let fO = if ((size(fL) > (7 + fF)))
934+ then fL[(7 + fF)]
933935 else 0
934- if ((parseIntValue(fL[fE]) > (fK[fE] + fN)))
935- then throw(("Requirement not satisfied: " + k[fE]))
936+ if ((parseIntValue(fM[fF]) > (fL[fF] + fO)))
937+ then throw(("Requirement not satisfied: " + k[fF]))
936938 else true
937939 }
938940
939- let eW = [0, 1, 2, 3, 4, 5, 6]
940- let eX = size(eW)
941- let eY = false
942- func eZ (fa,fb) = if ((fb >= eX))
943- then fa
944- else fM(fa, eW[fb])
945-
946- func fc (fa,fb) = if ((fb >= eX))
947- then fa
941+ let eX = [0, 1, 2, 3, 4, 5, 6]
942+ let eY = size(eX)
943+ let eZ = false
944+ func fa (fb,fc) = if ((fc >= eY))
945+ then fb
946+ else fN(fb, eX[fc])
947+
948+ func fd (fb,fc) = if ((fc >= eY))
949+ then fb
948950 else throw("List size exceeds 7")
949951
950- fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6), 7)
951- }
952-
953-
954-func fO (fP,fC,fQ,fK,fR,fS) = {
955- let fs = split(fP, ":")
956- if ((size(fs) != 2))
952+ fd(fa(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6), 7)
953+ }
954+
955+
956+func fP (fQ,fD,fR,fL,fS,fT) = {
957+ let ft = split(fQ, ":")
958+ if ((size(ft) != 2))
957959 then throw("Incorrect format, should be index:amount")
958- else if (if (!(fQ))
959- then (size(fs[0]) != 2)
960+ else if (if (!(fR))
961+ then (size(ft[0]) != 2)
960962 else false)
961963 then throw("Product idx should be 2 digits, zero padded")
962964 else {
963- let fT = parseIntValue(fs[0])
964- let fU = parseIntValue(fs[1])
965- if (!(containsElement(aW, fT)))
966- then throw((("Product '" + aT[fT]) + "' cannot be used for land defense"))
967- else if ((0 > fU))
965+ let fU = parseIntValue(ft[0])
966+ let fV = parseIntValue(ft[1])
967+ if (!(containsElement(aX, fU)))
968+ then throw((("Product '" + aU[fU]) + "' cannot be used for land defense"))
969+ else if ((0 > fV))
968970 then throw("Count can't be negative")
969- else if ((fU > u))
970- then throw(((("Can't put more than " + toString(u)) + " of ") + aT[fT]))
971- else if ((fU == 0))
972- then $Tuple3(fC, fR, fS)
971+ else if ((fV > u))
972+ then throw(((("Can't put more than " + toString(u)) + " of ") + aU[fU]))
973+ else if ((fV == 0))
974+ then $Tuple3(fD, fS, fT)
973975 else {
974- let fV = take(fC, (8 * fT))
975- let fx = toInt(take(drop(fC, (8 * fT)), 8))
976- let fy = drop(fC, (8 * (fT + 1)))
977- let ct = split(aX[fT], "_")
978- if (if (!(fQ))
979- then (fU > fx)
976+ let fW = take(fD, (8 * fU))
977+ let fy = toInt(take(drop(fD, (8 * fU)), 8))
978+ let fz = drop(fD, (8 * (fU + 1)))
979+ let cu = split(aY[fU], "_")
980+ if (if (!(fR))
981+ then (fV > fy)
980982 else false)
981- then throw(((((("You have " + toString(fx)) + " of ") + aT[fT]) + ", but tried to use ") + toString(fU)))
983+ then throw(((((("You have " + toString(fy)) + " of ") + aU[fU]) + ", but tried to use ") + toString(fV)))
982984 else {
983- let fz = if (if (!(fQ))
984- then fJ(fK, split(ct[ba], ","))
985+ let fA = if (if (!(fR))
986+ then fK(fL, split(cu[bb], ","))
985987 else false)
986- then (fx - fU)
987- else (fx + fU)
988- let fW = (eK(fz, bc) - eK(fx, bc))
989- $Tuple3(((fV + toBytes(fz)) + fy), (fR + fW), (fS - fW))
988+ then (fy - fV)
989+ else (fy + fV)
990+ let fX = (eL(fA, bd) - eL(fy, bd))
991+ $Tuple3(((fW + toBytes(fA)) + fz), (fS + fX), (fT - fX))
990992 }
991993 }
992994 }
993995 }
994996
995997
996-func fX (fP,fC,fQ,fY,fZ,ga,fK) = {
997- let fs = split(fP, ":")
998- if ((size(fs) != 2))
998+func fY (fQ,fD,fR,fZ,ga,gb,fL) = {
999+ let ft = split(fQ, ":")
1000+ if ((size(ft) != 2))
9991001 then throw("Incorrect format, should be index:amount")
1000- else if (if (!(fQ))
1001- then (size(fs[0]) != 2)
1002+ else if (if (!(fR))
1003+ then (size(ft[0]) != 2)
10021004 else false)
10031005 then throw("Product idx should be 2 digits, zero padded")
10041006 else {
1005- let fT = parseIntValue(fs[0])
1006- let fU = parseIntValue(fs[1])
1007- if (if ((0 > fT))
1007+ let fU = parseIntValue(ft[0])
1008+ let fV = parseIntValue(ft[1])
1009+ if (if ((0 > fU))
10081010 then true
1009- else (fT >= size(aX)))
1011+ else (fU >= size(aY)))
10101012 then throw("Unknown product idx")
1011- else if ((0 > fU))
1013+ else if ((0 > fV))
10121014 then throw("Count can't be negative")
1013- else if ((fU > u))
1014- then throw(((("Can't put more than " + toString(u)) + " of ") + aT[fT]))
1015- else if ((fU == 0))
1016- then $Tuple2(fC, false)
1015+ else if ((fV > u))
1016+ then throw(((("Can't put more than " + toString(u)) + " of ") + aU[fU]))
1017+ else if ((fV == 0))
1018+ then $Tuple2(fD, false)
10171019 else {
1018- let fV = take(fC, (8 * fT))
1019- let fx = toInt(take(drop(fC, (8 * fT)), 8))
1020- let fy = drop(fC, (8 * (fT + 1)))
1021- let ct = split(aX[fT], "_")
1022- if (if (!(fQ))
1023- then (fU > fx)
1020+ let fW = take(fD, (8 * fU))
1021+ let fy = toInt(take(drop(fD, (8 * fU)), 8))
1022+ let fz = drop(fD, (8 * (fU + 1)))
1023+ let cu = split(aY[fU], "_")
1024+ if (if (!(fR))
1025+ then (fV > fy)
10241026 else false)
1025- then throw(((((("You have " + toString(fx)) + " of ") + aT[fT]) + ", but tried to use ") + toString(fU)))
1027+ then throw(((((("You have " + toString(fy)) + " of ") + aU[fU]) + ", but tried to use ") + toString(fV)))
10261028 else {
1027- let gb = if (if (!(fQ))
1028- then fJ(fK, split(ct[ba], ","))
1029+ let gc = if (if (!(fR))
1030+ then fK(fL, split(cu[bb], ","))
10291031 else false)
10301032 then {
1031- let gc = ct[bb]
1032- if ((gc == ""))
1033+ let gd = cu[bc]
1034+ if ((gd == ""))
10331035 then throw("Item cannot be equipped")
10341036 else {
1035- let gd = parseIntValue(gc)
1036- let ge = (gd / 100)
1037- if ((fY != ge))
1037+ let ge = parseIntValue(gd)
1038+ let gf = (ge / 100)
1039+ if ((fZ != gf))
10381040 then throw("Segment incompatible")
10391041 else {
1040- let gf = ((gd % 100) / 10)
1041- if ((fZ != gf))
1042+ let gg = ((ge % 100) / 10)
1043+ if ((ga != gg))
10421044 then throw("Slot incompatible")
10431045 else {
1044- let gg = (gd % 10)
1045- if (if ((ga != 0))
1046- then (gg > 1)
1046+ let gh = (ge % 10)
1047+ if (if ((gb != 0))
1048+ then (gh > 1)
10471049 else false)
10481050 then throw("Big items should occupy slot 0")
1049- else (gg > 1)
1051+ else (gh > 1)
10501052 }
10511053 }
10521054 }
10531055 }
10541056 else false
1055- $Tuple2(((fV + toBytes((fx + (if (fQ)
1056- then fU
1057- else -(fU))))) + fy), gb)
1057+ $Tuple2(((fW + toBytes((fy + (if (fR)
1058+ then fV
1059+ else -(fV))))) + fz), gc)
10581060 }
10591061 }
10601062 }
10611063 }
10621064
10631065
1064-func gh (gi,gj,fQ,fY,fZ,gk) = if ((gi != ""))
1066+func gi (gj,gk,fR,fZ,ga,gl) = if ((gj != ""))
10651067 then {
1066- let gl = split(gi, ",")
1067- if ((size(gl) > t))
1068+ let gm = split(gj, ",")
1069+ if ((size(gm) > t))
10681070 then throw("Wrong slots format")
10691071 else {
1070- let gm = gl[0]
1071- let gn = if ((size(gl) > 1))
1072- then gl[1]
1072+ let gn = gm[0]
1073+ let go = if ((size(gm) > 1))
1074+ then gm[1]
10731075 else ""
1074- if (if ((gm == ""))
1075- then (gn == "")
1076+ if (if ((gn == ""))
1077+ then (go == "")
10761078 else false)
1077- then gj
1079+ then gk
10781080 else {
1079- let go = if ((gm != ""))
1080- then fX(gm, gj, fQ, fY, fZ, 0, gk)
1081- else $Tuple2(gj, false)
1082- if ((gn != ""))
1083- then if (go._2)
1081+ let gp = if ((gn != ""))
1082+ then fY(gn, gk, fR, fZ, ga, 0, gl)
1083+ else $Tuple2(gk, false)
1084+ if ((go != ""))
1085+ then if (gp._2)
10841086 then throw("Big item already occupies slot")
1085- else fX(gn, go._1, fQ, fY, fZ, 1, gk)._1
1086- else go._1
1087+ else fY(go, gp._1, fR, fZ, ga, 1, gl)._1
1088+ else gp._1
10871089 }
10881090 }
10891091 }
1090- else gj
1091-
1092-
1093-func gp (gq,gr,fQ,gk) = {
1094- func fY (eU,gs) = {
1095- let fE = eU._1
1096- let fZ = split(gs, ";")
1097- if ((size(fZ) != s))
1092+ else gk
1093+
1094+
1095+func gq (gr,gs,fR,gl) = {
1096+ func fZ (eV,gt) = {
1097+ let fF = eV._1
1098+ let ga = split(gt, ";")
1099+ if ((size(ga) != s))
10981100 then throw("Wrong segment format")
10991101 else {
1100- let gt = fZ[0]
1101- let gu = fZ[1]
1102- if (if ((gt == ""))
1103- then (gu == "")
1102+ let gu = ga[0]
1103+ let gv = ga[1]
1104+ if (if ((gu == ""))
1105+ then (gv == "")
11041106 else false)
1105- then $Tuple2((fE + 1), eU._2)
1107+ then $Tuple2((fF + 1), eV._2)
11061108 else {
1107- let gv = gh(gt, eU._2, fQ, fE, 0, gk)
1108- $Tuple2((fE + 1), gh(gu, gv, fQ, fE, 1, gk))
1109+ let gw = gi(gu, eV._2, fR, fF, 0, gl)
1110+ $Tuple2((fF + 1), gi(gv, gw, fR, fF, 1, gl))
11091111 }
11101112 }
11111113 }
11121114
1113-( let eW = gq
1114- let eX = size(eW)
1115- let eY = $Tuple2(0, gr)
1116- func eZ (fa,fb) = if ((fb >= eX))
1117- then fa
1118- else fY(fa, eW[fb])
1119-
1120- func fc (fa,fb) = if ((fb >= eX))
1121- then fa
1115+( let eX = gr
1116+ let eY = size(eX)
1117+ let eZ = $Tuple2(0, gs)
1118+ func fa (fb,fc) = if ((fc >= eY))
1119+ then fb
1120+ else fZ(fb, eX[fc])
1121+
1122+ func fd (fb,fc) = if ((fc >= eY))
1123+ then fb
11221124 else throw("List size exceeds 6")
11231125
1124- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6))._2
1125- }
1126-
1127-
1128-func gw (gq,gr,fR,fS,fQ,fK) = if ((3 > size(gq)))
1126+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6))._2
1127+ }
1128+
1129+
1130+func gx (gr,gs,fS,fT,fR,fL) = if ((3 > size(gr)))
11291131 then throw("At least duck, mines and traps parts are required")
11301132 else {
1131- func fY (eU,gs) = {
1132- let fE = eU._1
1133- if ((fE == 0))
1134- then $Tuple4((fE + 1), eU._2, eU._3, eU._4)
1133+ func fZ (eV,gt) = {
1134+ let fF = eV._1
1135+ if ((fF == 0))
1136+ then $Tuple4((fF + 1), eV._2, eV._3, eV._4)
11351137 else {
1136- let gx = fO(gs, eU._2, fQ, fK, eU._3, eU._4)
1137- $Tuple4((fE + 1), gx._1, gx._2, gx._3)
1138+ let gy = fP(gt, eV._2, fR, fL, eV._3, eV._4)
1139+ $Tuple4((fF + 1), gy._1, gy._2, gy._3)
11381140 }
11391141 }
11401142
1141- let gy = {
1142- let eW = gq
1143- let eX = size(eW)
1144- let eY = $Tuple4(0, gr, fR, fS)
1145- func eZ (fa,fb) = if ((fb >= eX))
1146- then fa
1147- else fY(fa, eW[fb])
1148-
1149- func fc (fa,fb) = if ((fb >= eX))
1150- then fa
1143+ let gz = {
1144+ let eX = gr
1145+ let eY = size(eX)
1146+ let eZ = $Tuple4(0, gs, fS, fT)
1147+ func fa (fb,fc) = if ((fc >= eY))
1148+ then fb
1149+ else fZ(fb, eX[fc])
1150+
1151+ func fd (fb,fc) = if ((fc >= eY))
1152+ then fb
11511153 else throw("List size exceeds 10")
11521154
1153- fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1154- }
1155- $Tuple3(gy._2, gy._3, gy._4)
1155+ fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1156+ }
1157+ $Tuple3(gz._2, gz._3, gz._4)
11561158 }
11571159
11581160
1159-func gz (B) = {
1160- let gA = G(B)
1161- let gB = split(valueOrElse(getString(gA), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1162- let gC = gp(gB, ed, true, nil)
1163- let gD = split(gB[q], ";")[1]
1164- let ar = if ((gD == ""))
1161+func gA (B) = {
1162+ let gB = G(B)
1163+ let gC = split(valueOrElse(getString(gB), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1164+ let gD = gq(gC, ee, true, nil)
1165+ let gE = split(gC[q], ";")[1]
1166+ let ar = if ((gE == ""))
11651167 then 0
11661168 else {
1167- let gE = split(gD, ",")[0]
1168- if ((gE == ""))
1169+ let gF = split(gE, ",")[0]
1170+ if ((gF == ""))
11691171 then 0
11701172 else {
1171- let fP = split(gE, ":")
1172- let dg = fP[0]
1173- let gF = fP[1]
1174- if (if (if (if (if ((dg == "06"))
1173+ let fQ = split(gF, ":")
1174+ let dh = fQ[0]
1175+ let gG = fQ[1]
1176+ if (if (if (if (if ((dh == "06"))
11751177 then true
1176- else (dg == "07"))
1178+ else (dh == "07"))
11771179 then true
1178- else (dg == "08"))
1179- then (gF != "")
1180+ else (dh == "08"))
1181+ then (gG != "")
11801182 else false)
1181- then (parseIntValue(gF) > 0)
1183+ then (parseIntValue(gG) > 0)
11821184 else false)
1183- then parseIntValue(split(aX[parseIntValue(dg)], "_")[aZ])
1185+ then parseIntValue(split(aY[parseIntValue(dh)], "_")[ba])
11841186 else 0
11851187 }
11861188 }
1187- let gk = ap(this, B, ar, true)
1188- let gG = gp(gB, gC, false, gk)
1189- (gG == gG)
1190- }
1191-
1192-
1193-func gH (gI,gJ,gK,gL) = if ((size(gI) != aI))
1189+ let gl = ap(this, B, ar, true)
1190+ let gH = gq(gC, gD, false, gl)
1191+ (gH == gH)
1192+ }
1193+
1194+
1195+func gI (gJ,gK,gL,gM) = if ((size(gJ) != aI))
11941196 then throw("Wrong proportions data")
11951197 else {
1196- func gM (eU,gN) = {
1197- let fm = (parseIntValue(gI[gN]) + ((gL * gJ[gN]) * gK))
1198- if ((0 > fm))
1199- then throw(((((((("Panic! Pieces of type=" + toString(gN)) + ", sign=") + toString(gL)) + ", terrainCounts[i]=") + toString(gJ[gN])) + ", landSizeIndex=") + toString(gK)))
1200- else (eU :+ toString(fm))
1201- }
1202-
1203- let eW = cQ
1204- let eX = size(eW)
1205- let eY = nil
1206- func eZ (fa,fb) = if ((fb >= eX))
1207- then fa
1208- else gM(fa, eW[fb])
1209-
1210- func fc (fa,fb) = if ((fb >= eX))
1211- then fa
1198+ func gN (eV,gO) = {
1199+ let fn = (parseIntValue(gJ[gO]) + ((gM * gK[gO]) * gL))
1200+ if ((0 > fn))
1201+ then throw(((((((("Panic! Pieces of type=" + toString(gO)) + ", sign=") + toString(gM)) + ", terrainCounts[i]=") + toString(gK[gO])) + ", landSizeIndex=") + toString(gL)))
1202+ else (eV :+ toString(fn))
1203+ }
1204+
1205+ let eX = cR
1206+ let eY = size(eX)
1207+ let eZ = nil
1208+ func fa (fb,fc) = if ((fc >= eY))
1209+ then fb
1210+ else gN(fb, eX[fc])
1211+
1212+ func fd (fb,fc) = if ((fc >= eY))
1213+ then fb
12121214 else throw("List size exceeds 6")
12131215
1214- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
1216+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
12151217 }
12161218
12171219
1218-func gO (gJ,gK,gL) = {
1219- let gI = split(valueOrElse(getString(dx()), "0_0_0_0_0_0"), "_")
1220- makeString(gH(gI, gJ, gK, gL), "_")
1221- }
1222-
1223-
1224-func gP (gQ) = [(size(split(gQ, "A")) - 1), (size(split(gQ, "B")) - 1), (size(split(gQ, "C")) - 1), (size(split(gQ, "D")) - 1), (size(split(gQ, "E")) - 1), (size(split(gQ, "F")) - 1)]
1225-
1226-
1227-func gR (gS,gJ,gT,gK,gU) = {
1228- func gV (eU,gN) = {
1229- let gW = ((fraction(gT, gU, a) * gJ[gN]) * gK)
1230- (eU :+ toString((parseIntValue(gS[gN]) + gW)))
1220+func gP (gK,gL,gM) = {
1221+ let gJ = split(valueOrElse(getString(dy()), "0_0_0_0_0_0"), "_")
1222+ makeString(gI(gJ, gK, gL, gM), "_")
1223+ }
1224+
1225+
1226+func gQ (gR) = [(size(split(gR, "A")) - 1), (size(split(gR, "B")) - 1), (size(split(gR, "C")) - 1), (size(split(gR, "D")) - 1), (size(split(gR, "E")) - 1), (size(split(gR, "F")) - 1)]
1227+
1228+
1229+func gS (gT,gK,gU,gL,gV) = {
1230+ func gW (eV,gO) = {
1231+ let gX = ((fraction(gU, gV, a) * gK[gO]) * gL)
1232+ (eV :+ toString((parseIntValue(gT[gO]) + gX)))
12311233 }
12321234
1233- let ff = {
1234- let eW = cQ
1235- let eX = size(eW)
1236- let eY = nil
1237- func eZ (fa,fb) = if ((fb >= eX))
1238- then fa
1239- else gV(fa, eW[fb])
1240-
1241- func fc (fa,fb) = if ((fb >= eX))
1242- then fa
1235+ let fg = {
1236+ let eX = cR
1237+ let eY = size(eX)
1238+ let eZ = nil
1239+ func fa (fb,fc) = if ((fc >= eY))
1240+ then fb
1241+ else gW(fb, eX[fc])
1242+
1243+ func fd (fb,fc) = if ((fc >= eY))
1244+ then fb
12431245 else throw("List size exceeds 6")
12441246
1245- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
1247+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
12461248 }
1247- makeString(ff, "_")
1248- }
1249-
1250-
1251-func gX (gJ,gT,gK,gU) = {
1252- func gV (eU,gN) = {
1253- let gW = ((fraction(gT, gU, a) * gJ[gN]) * gK)
1254- $Tuple2((eU._1 :+ gW), (eU._2 + gW))
1249+ makeString(fg, "_")
1250+ }
1251+
1252+
1253+func gY (gK,gU,gL,gV) = {
1254+ func gW (eV,gO) = {
1255+ let gX = ((fraction(gU, gV, a) * gK[gO]) * gL)
1256+ $Tuple2((eV._1 :+ gX), (eV._2 + gX))
12551257 }
12561258
1257- let eW = cQ
1258- let eX = size(eW)
1259- let eY = $Tuple2(nil, 0)
1260- func eZ (fa,fb) = if ((fb >= eX))
1261- then fa
1262- else gV(fa, eW[fb])
1263-
1264- func fc (fa,fb) = if ((fb >= eX))
1265- then fa
1259+ let eX = cR
1260+ let eY = size(eX)
1261+ let eZ = $Tuple2(nil, 0)
1262+ func fa (fb,fc) = if ((fc >= eY))
1263+ then fb
1264+ else gW(fb, eX[fc])
1265+
1266+ func fd (fb,fc) = if ((fc >= eY))
1267+ then fb
12661268 else throw("List size exceeds 6")
12671269
1268- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
1269- }
1270-
1271-
1272-func gY (gZ,ha,hb,hc) = {
1273- let hd = hb._1
1274- let he = hb._2
1275- if ((he == 0))
1276- then $Tuple2(makeString(gZ, "_"), makeString(ha, "_"))
1277- else if ((hc >= he))
1270+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
1271+ }
1272+
1273+
1274+func gZ (ha,hb,hc,hd) = {
1275+ let he = hc._1
1276+ let hf = hc._2
1277+ if ((hf == 0))
1278+ then $Tuple2(makeString(ha, "_"), makeString(hb, "_"))
1279+ else if ((hd >= hf))
12781280 then {
1279- func hf (eU,gN) = (eU :+ toString((parseIntValue(gZ[gN]) + hd[gN])))
1280-
1281- let ff = {
1282- let eW = cQ
1283- let eX = size(eW)
1284- let eY = nil
1285- func eZ (fa,fb) = if ((fb >= eX))
1286- then fa
1287- else hf(fa, eW[fb])
1288-
1289- func fc (fa,fb) = if ((fb >= eX))
1290- then fa
1281+ func hg (eV,gO) = (eV :+ toString((parseIntValue(ha[gO]) + he[gO])))
1282+
1283+ let fg = {
1284+ let eX = cR
1285+ let eY = size(eX)
1286+ let eZ = nil
1287+ func fa (fb,fc) = if ((fc >= eY))
1288+ then fb
1289+ else hg(fb, eX[fc])
1290+
1291+ func fd (fb,fc) = if ((fc >= eY))
1292+ then fb
12911293 else throw("List size exceeds 6")
12921294
1293- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
1295+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
12941296 }
1295- $Tuple2(makeString(ff, "_"), makeString(ha, "_"))
1297+ $Tuple2(makeString(fg, "_"), makeString(hb, "_"))
12961298 }
12971299 else {
1298- func hg (eU,gN) = {
1299- let hh = fraction(hd[gN], hc, he)
1300- $Tuple2((eU._1 :+ toString((parseIntValue(gZ[gN]) + hh))), (eU._2 :+ toString(((parseIntValue(ha[gN]) + hd[gN]) - hh))))
1300+ func hh (eV,gO) = {
1301+ let hi = fraction(he[gO], hd, hf)
1302+ $Tuple2((eV._1 :+ toString((parseIntValue(ha[gO]) + hi))), (eV._2 :+ toString(((parseIntValue(hb[gO]) + he[gO]) - hi))))
13011303 }
13021304
1303- let ff = {
1304- let eW = cQ
1305- let eX = size(eW)
1306- let eY = $Tuple2(nil, nil)
1307- func eZ (fa,fb) = if ((fb >= eX))
1308- then fa
1309- else hg(fa, eW[fb])
1310-
1311- func fc (fa,fb) = if ((fb >= eX))
1312- then fa
1305+ let fg = {
1306+ let eX = cR
1307+ let eY = size(eX)
1308+ let eZ = $Tuple2(nil, nil)
1309+ func fa (fb,fc) = if ((fc >= eY))
1310+ then fb
1311+ else hh(fb, eX[fc])
1312+
1313+ func fd (fb,fc) = if ((fc >= eY))
1314+ then fb
13131315 else throw("List size exceeds 6")
13141316
1315- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
1317+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
13161318 }
1317- $Tuple2(makeString(ff._1, "_"), makeString(ff._2, "_"))
1319+ $Tuple2(makeString(fg._1, "_"), makeString(fg._2, "_"))
13181320 }
13191321 }
13201322
13211323
1322-func hi (hj) = if ((hj >= toBigInt(0)))
1323- then hj
1324- else -(hj)
1325-
1326-
1327-let hk = [[35, 18, 30, 7, 6, 24], [29, 18, 29, 7, 8, 29], [6, 18, 29, 8, 30, 29], [6, 28, 6, 48, 26, 6], [24, 18, 6, 30, 30, 12]]
1328-
1329-let hl = [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]
1330-
1331-let hm = ["A", "B", "C", "D", "E", "F"]
1332-
1333-func hn (eU,ho) = (eU + parseIntValue(ho))
1334-
1335-
1336-func hp (hq,hr) = if ((hq == 0))
1324+func hj (hk) = if ((hk >= toBigInt(0)))
1325+ then hk
1326+ else -(hk)
1327+
1328+
1329+let hl = [[35, 18, 30, 7, 6, 24], [29, 18, 29, 7, 8, 29], [6, 18, 29, 8, 30, 29], [6, 28, 6, 48, 26, 6], [24, 18, 6, 30, 30, 12]]
1330+
1331+let hm = [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]
1332+
1333+let hn = ["A", "B", "C", "D", "E", "F"]
1334+
1335+let ho = 10
1336+
1337+func hp (eV,hq) = (eV + parseIntValue(hq))
1338+
1339+
1340+func hr (hs,ht) = if ((hs == 0))
13371341 then throw("maxRand should be non-zero")
13381342 else {
1339- let hs = toBigInt(hq)
1340- $Tuple2(toInt((hr % hs)), (hr / hs))
1343+ let hu = toBigInt(hs)
1344+ $Tuple2(toInt((ht % hu)), (ht / hu))
13411345 }
13421346
13431347
1344-func ht (hu,hv,hw) = {
1345- func hx (eU,ho) = if (eU._1)
1346- then eU
1348+func hv (hw,hx,hy) = {
1349+ func hz (eV,hq) = if (eV._1)
1350+ then eV
13471351 else {
1348- let hy = ((eU._3 - ho) - hw)
1349- if ((0 > hy))
1350- then $Tuple3(true, eU._2, 0)
1351- else $Tuple3(false, (eU._2 + 1), hy)
1352- }
1353-
1354- let ff = {
1355- let eW = hu
1356- let eX = size(eW)
1357- let eY = $Tuple3(false, 0, hv)
1358- func eZ (fa,fb) = if ((fb >= eX))
1359- then fa
1360- else hx(fa, eW[fb])
1361-
1362- func fc (fa,fb) = if ((fb >= eX))
1363- then fa
1352+ let hA = ((eV._3 - hq) - hy)
1353+ if ((0 > hA))
1354+ then $Tuple3(true, eV._2, 0)
1355+ else $Tuple3(false, (eV._2 + 1), hA)
1356+ }
1357+
1358+ let fg = {
1359+ let eX = hw
1360+ let eY = size(eX)
1361+ let eZ = $Tuple3(false, 0, hx)
1362+ func fa (fb,fc) = if ((fc >= eY))
1363+ then fb
1364+ else hz(fb, eX[fc])
1365+
1366+ func fd (fb,fc) = if ((fc >= eY))
1367+ then fb
13641368 else throw("List size exceeds 6")
13651369
1366- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
1370+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
13671371 }
1368- ff._2
1369- }
1370-
1371-
1372-func hz (hA,gK) = {
1373- func hB (hC,hD) = {
1374- let fx = split(valueOrElse(getString(dy(hD)), "0_0_0_0_0_0"), "_")
1375- let hE = {
1376- let eW = fx
1377- let eX = size(eW)
1378- let eY = 0
1379- func eZ (fa,fb) = if ((fb >= eX))
1380- then fa
1381- else hn(fa, eW[fb])
1382-
1383- func fc (fa,fb) = if ((fb >= eX))
1384- then fa
1372+ fg._2
1373+ }
1374+
1375+
1376+func hB (hC,gL,hD) = {
1377+ func hE (hF,hG) = {
1378+ let fy = split(valueOrElse(getString(dz(hG)), "0_0_0_0_0_0"), "_")
1379+ let hH = {
1380+ let eX = fy
1381+ let eY = size(eX)
1382+ let eZ = 0
1383+ func fa (fb,fc) = if ((fc >= eY))
1384+ then fb
1385+ else hp(fb, eX[fc])
1386+
1387+ func fd (fb,fc) = if ((fc >= eY))
1388+ then fb
13851389 else throw("List size exceeds 6")
13861390
1387- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
1388- }
1389- $Tuple2((hC._1 :+ hE), (hC._2 + hE))
1391+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
1392+ }
1393+ $Tuple2((hF._1 :+ hH), (hF._2 + hH))
13901394 }
13911395
1392- let hF = {
1393- let eW = aU
1394- let eX = size(eW)
1395- let eY = $Tuple2(nil, 0)
1396- func eZ (fa,fb) = if ((fb >= eX))
1397- then fa
1398- else hB(fa, eW[fb])
1399-
1400- func fc (fa,fb) = if ((fb >= eX))
1401- then fa
1396+ let hI = {
1397+ let eX = aV
1398+ let eY = size(eX)
1399+ let eZ = $Tuple2(nil, 0)
1400+ func fa (fb,fc) = if ((fc >= eY))
1401+ then fb
1402+ else hE(fb, eX[fc])
1403+
1404+ func fd (fb,fc) = if ((fc >= eY))
1405+ then fb
14021406 else throw("List size exceeds 5")
14031407
1404- fc(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5)
1408+ fd(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5)
14051409 }
1406- let hG = hF._1
1407- let eP = hF._2
1408- let hH = max(hG)
1409- let hI = ((hH * 5) - eP)
1410- let hJ = (hI / 50)
1411- let hK = if ((hI == 0))
1412- then hp(5, hA)
1413- else {
1414- let hL = hp((hI + (hJ * 5)), hA)
1415- let ff = hL._1
1416- let hM = hL._2
1417- func hN (eU,ho) = (eU :+ (hH - ho))
1418-
1419- let hO = {
1420- let eW = hG
1421- let eX = size(eW)
1422- let eY = nil
1423- func hP (fa,fb) = if ((fb >= eX))
1424- then fa
1425- else hN(fa, eW[fb])
1426-
1427- func hQ (fa,fb) = if ((fb >= eX))
1428- then fa
1429- else throw("List size exceeds 6")
1430-
1431- hQ(hP(hP(hP(hP(hP(hP(eY, 0), 1), 2), 3), 4), 5), 6)
1410+ let hJ = hI._1
1411+ let eQ = hI._2
1412+ let hK = max(hJ)
1413+ let hL = ((hK * aJ) - eQ)
1414+ let hM = (hL / (ho * aJ))
1415+ let hN = if (if ((hD >= 0))
1416+ then (aJ > hD)
1417+ else false)
1418+ then $Tuple2(hD, hC)
1419+ else if ((hL == 0))
1420+ then hr(aJ, hC)
1421+ else {
1422+ let hO = hr((hL + (hM * aJ)), hC)
1423+ let fg = hO._1
1424+ let hP = hO._2
1425+ func hQ (eV,hq) = (eV :+ (hK - hq))
1426+
1427+ let hR = {
1428+ let eX = hJ
1429+ let eY = size(eX)
1430+ let eZ = nil
1431+ func hS (fb,fc) = if ((fc >= eY))
1432+ then fb
1433+ else hQ(fb, eX[fc])
1434+
1435+ func hT (fb,fc) = if ((fc >= eY))
1436+ then fb
1437+ else throw("List size exceeds 6")
1438+
1439+ hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6)
1440+ }
1441+ $Tuple2(hv(hR, fg, hM), hP)
14321442 }
1433- $Tuple2(ht(hO, ff, hJ), hM)
1434- }
1435- let hR = hK._1
1436- let hS = hK._2
1437- let hT = hk[hR]
1438- let hU = split(valueOrElse(getString(dy(aU[hR])), "0_0_0_0_0_0"), "_")
1439- func hV (eU,ho) = (eU :+ parseIntValue(ho))
1440-
1441- let hW = {
1442- let eW = hU
1443- let eX = size(eW)
1444- let eY = nil
1445- func hP (fa,fb) = if ((fb >= eX))
1446- then fa
1447- else hV(fa, eW[fb])
1448-
1449- func hQ (fa,fb) = if ((fb >= eX))
1450- then fa
1443+ let hU = hN._1
1444+ let hV = hN._2
1445+ let hW = hl[hU]
1446+ let hX = split(valueOrElse(getString(dz(aV[hU])), "0_0_0_0_0_0"), "_")
1447+ func hY (eV,hq) = (eV :+ parseIntValue(hq))
1448+
1449+ let hZ = {
1450+ let eX = hX
1451+ let eY = size(eX)
1452+ let eZ = nil
1453+ func hS (fb,fc) = if ((fc >= eY))
1454+ then fb
1455+ else hY(fb, eX[fc])
1456+
1457+ func hT (fb,fc) = if ((fc >= eY))
1458+ then fb
14511459 else throw("List size exceeds 6")
14521460
1453- hQ(hP(hP(hP(hP(hP(hP(eY, 0), 1), 2), 3), 4), 5), 6)
1461+ hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6)
14541462 }
1455- let hX = hG[hR]
1456- func hY (hC,hZ) = {
1457- func ia (eU,fE) = (eU :+ ((hC._2[fE] * 120) - (hT[fE] * hC._3)))
1458-
1459- let ib = {
1460- let eW = cQ
1461- let eX = size(eW)
1462- let eY = nil
1463- func ic (fa,fb) = if ((fb >= eX))
1464- then fa
1465- else ia(fa, eW[fb])
1466-
1467- func id (fa,fb) = if ((fb >= eX))
1468- then fa
1463+ let ia = hJ[hU]
1464+ func ib (hF,ic) = {
1465+ func id (eV,fF) = (eV :+ ((hF._2[fF] * 120) - (hW[fF] * hF._3)))
1466+
1467+ let ie = {
1468+ let eX = cR
1469+ let eY = size(eX)
1470+ let eZ = nil
1471+ func if (fb,fc) = if ((fc >= eY))
1472+ then fb
1473+ else id(fb, eX[fc])
1474+
1475+ func ig (fb,fc) = if ((fc >= eY))
1476+ then fb
14691477 else throw("List size exceeds 6")
14701478
1471- id(ic(ic(ic(ic(ic(ic(eY, 0), 1), 2), 3), 4), 5), 6)
1472- }
1473- let ie = max(ib)
1474- func if (eU,ho) = {
1475- let dE = (ie - ho)
1476- $Tuple2((eU._1 :+ dE), (eU._2 + dE))
1477- }
1478-
1479- let ig = {
1480- let eW = ib
1481- let eX = size(eW)
1482- let eY = $Tuple2(nil, 0)
1483- func ih (fa,fb) = if ((fb >= eX))
1484- then fa
1485- else if(fa, eW[fb])
1486-
1487- func ii (fa,fb) = if ((fb >= eX))
1488- then fa
1479+ ig(if(if(if(if(if(if(eZ, 0), 1), 2), 3), 4), 5), 6)
1480+ }
1481+ let ih = max(ie)
1482+ func ii (eV,hq) = {
1483+ let dF = (ih - hq)
1484+ $Tuple2((eV._1 :+ dF), (eV._2 + dF))
1485+ }
1486+
1487+ let ij = {
1488+ let eX = ie
1489+ let eY = size(eX)
1490+ let eZ = $Tuple2(nil, 0)
1491+ func ik (fb,fc) = if ((fc >= eY))
1492+ then fb
1493+ else ii(fb, eX[fc])
1494+
1495+ func il (fb,fc) = if ((fc >= eY))
1496+ then fb
14891497 else throw("List size exceeds 6")
14901498
1491- ii(ih(ih(ih(ih(ih(ih(eY, 0), 1), 2), 3), 4), 5), 6)
1492- }
1493- let ij = ig._1
1494- let ik = ig._2
1495- let il = (ik / 60)
1496- let im = if ((ik == 0))
1497- then hp(6, hC._4)
1499+ il(ik(ik(ik(ik(ik(ik(eZ, 0), 1), 2), 3), 4), 5), 6)
1500+ }
1501+ let im = ij._1
1502+ let in = ij._2
1503+ let io = (in / (ho * aI))
1504+ let ip = if ((in == 0))
1505+ then hr(aI, hF._4)
14981506 else {
1499- let in = hp((ik + (il * 6)), hC._4)
1500- let ff = in._1
1501- let hM = in._2
1502- $Tuple2(ht(ij, ff, il), hM)
1507+ let iq = hr((in + (io * aI)), hF._4)
1508+ let fg = iq._1
1509+ let hP = iq._2
1510+ $Tuple2(hv(im, fg, io), hP)
15031511 }
1504- let dg = im._1
1505- let io = im._2
1506- func ip (eU,fE) = (eU :+ (hC._2[fE] + (if ((fE == dg))
1507- then gK
1512+ let dh = ip._1
1513+ let ir = ip._2
1514+ func is (eV,fF) = (eV :+ (hF._2[fF] + (if ((fF == dh))
1515+ then gL
15081516 else 0)))
15091517
1510- let iq = {
1511- let eW = cQ
1512- let eX = size(eW)
1513- let eY = nil
1514- func ir (fa,fb) = if ((fb >= eX))
1515- then fa
1516- else ip(fa, eW[fb])
1517-
1518- func is (fa,fb) = if ((fb >= eX))
1519- then fa
1518+ let it = {
1519+ let eX = cR
1520+ let eY = size(eX)
1521+ let eZ = nil
1522+ func iu (fb,fc) = if ((fc >= eY))
1523+ then fb
1524+ else is(fb, eX[fc])
1525+
1526+ func iv (fb,fc) = if ((fc >= eY))
1527+ then fb
15201528 else throw("List size exceeds 6")
15211529
1522- is(ir(ir(ir(ir(ir(ir(eY, 0), 1), 2), 3), 4), 5), 6)
1523- }
1524- $Tuple4((hC._1 :+ hm[dg]), iq, (hC._3 + gK), io)
1530+ iv(iu(iu(iu(iu(iu(iu(eZ, 0), 1), 2), 3), 4), 5), 6)
1531+ }
1532+ $Tuple4((hF._1 + hn[dh]), it, (hF._3 + gL), ir)
15251533 }
15261534
1527- let fm = {
1528- let eW = hl
1529- let eX = size(eW)
1530- let eY = $Tuple4(nil, hW, hX, hS)
1531- func ic (fa,fb) = if ((fb >= eX))
1532- then fa
1533- else hY(fa, eW[fb])
1534-
1535- func id (fa,fb) = if ((fb >= eX))
1536- then fa
1535+ let fn = {
1536+ let eX = hm
1537+ let eY = size(eX)
1538+ let eZ = $Tuple4("", hZ, ia, hV)
1539+ func if (fb,fc) = if ((fc >= eY))
1540+ then fb
1541+ else ib(fb, eX[fc])
1542+
1543+ func ig (fb,fc) = if ((fc >= eY))
1544+ then fb
15371545 else throw("List size exceeds 25")
15381546
1539- id(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(eY, 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)
1547+ ig(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(eZ, 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)
15401548 }
1541- func it (eU,fE) = (eU + fm._1[fE])
1542-
1543- $Tuple2(hR, {
1544- let eW = hl
1545- let eX = size(eW)
1546- let eY = ""
1547- func ih (fa,fb) = if ((fb >= eX))
1548- then fa
1549- else it(fa, eW[fb])
1550-
1551- func ii (fa,fb) = if ((fb >= eX))
1552- then fa
1553- else throw("List size exceeds 25")
1554-
1555- ii(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(eY, 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)
1556- })
1557- }
1558-
1559-
1560-let iu = [[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]]
1561-
1562-func iv (dG,iw) = {
1563- let hy = toInt((dG % em))
1564- let ix = if ((iw[0] > hy))
1549+ $Tuple2(hU, fn._1)
1550+ }
1551+
1552+
1553+let iw = [[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]]
1554+
1555+func ix (dH,iy) = {
1556+ let hA = toInt((dH % en))
1557+ let iz = if ((iy[0] > hA))
15651558 then "A"
1566- else if ((iw[1] > hy))
1559+ else if ((iy[1] > hA))
15671560 then "B"
1568- else if ((iw[2] > hy))
1561+ else if ((iy[2] > hA))
15691562 then "C"
1570- else if ((iw[3] > hy))
1563+ else if ((iy[3] > hA))
15711564 then "D"
1572- else if ((iw[4] > hy))
1565+ else if ((iy[4] > hA))
15731566 then "E"
15741567 else "F"
1575- ix
1576- }
1577-
1578-
1579-func iy (iz,iA) = {
1580- let iB = iu[iA]
1581- func iC (eU,eV) = $Tuple2((((((eU._1 + iv(eU._2, iB)) + iv((eU._2 / em), iB)) + iv((eU._2 / en), iB)) + iv((eU._2 / eo), iB)) + iv((eU._2 / ep), iB)), (eU._2 / eq))
1582-
1583- let gy = {
1584- let eW = [1, 2, 3, 4, 5]
1585- let eX = size(eW)
1586- let eY = $Tuple2("", (iz / el))
1587- func eZ (fa,fb) = if ((fb >= eX))
1588- then fa
1589- else iC(fa, eW[fb])
1590-
1591- func fc (fa,fb) = if ((fb >= eX))
1592- then fa
1568+ iz
1569+ }
1570+
1571+
1572+func iA (iB,iC) = {
1573+ let iD = iw[iC]
1574+ func iE (eV,eW) = $Tuple2((((((eV._1 + ix(eV._2, iD)) + ix((eV._2 / en), iD)) + ix((eV._2 / eo), iD)) + ix((eV._2 / ep), iD)) + ix((eV._2 / eq), iD)), (eV._2 / er))
1575+
1576+ let gz = {
1577+ let eX = [1, 2, 3, 4, 5]
1578+ let eY = size(eX)
1579+ let eZ = $Tuple2("", (iB / em))
1580+ func fa (fb,fc) = if ((fc >= eY))
1581+ then fb
1582+ else iE(fb, eX[fc])
1583+
1584+ func fd (fb,fc) = if ((fc >= eY))
1585+ then fb
15931586 else throw("List size exceeds 5")
15941587
1595- fc(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5)
1588+ fd(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5)
15961589 }
1597- gy._1
1598- }
1599-
1600-
1601-func iD (iE,gK) = {
1602- func iF (eU,dE) = {
1603- let fE = eU._2
1604- let ho = parseIntValue(dE)
1605- let hj = if ((ho == 0))
1590+ gz._1
1591+ }
1592+
1593+
1594+func iF (iG,gL) = {
1595+ func iH (eV,dF) = {
1596+ let fF = eV._2
1597+ let hq = parseIntValue(dF)
1598+ let hk = if ((hq == 0))
16061599 then 0
1607- else if ((ho >= (4 * gK)))
1608- then (ho / gK)
1609- else if ((ho > (3 * gK)))
1600+ else if ((hq >= (4 * gL)))
1601+ then (hq / gL)
1602+ else if ((hq > (3 * gL)))
16101603 then 3
1611- else (((ho - 1) / gK) + 1)
1612- $Tuple3((eU._1 :+ hj), (eU._2 + 1), (eU._3 + hj))
1604+ else (((hq - 1) / gL) + 1)
1605+ $Tuple3((eV._1 :+ hk), (eV._2 + 1), (eV._3 + hk))
16131606 }
16141607
1615- let gy = {
1616- let eW = iE
1617- let eX = size(eW)
1618- let eY = $Tuple3(nil, 0, 0)
1619- func eZ (fa,fb) = if ((fb >= eX))
1620- then fa
1621- else iF(fa, eW[fb])
1622-
1623- func fc (fa,fb) = if ((fb >= eX))
1624- then fa
1608+ let gz = {
1609+ let eX = iG
1610+ let eY = size(eX)
1611+ let eZ = $Tuple3(nil, 0, 0)
1612+ func fa (fb,fc) = if ((fc >= eY))
1613+ then fb
1614+ else iH(fb, eX[fc])
1615+
1616+ func fd (fb,fc) = if ((fc >= eY))
1617+ then fb
16251618 else throw("List size exceeds 6")
16261619
1627- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
1620+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
16281621 }
1629- let hu = gy._1
1630- let iG = value(indexOf(hu, max(hu)))
1631- let hw = (gy._3 - 25)
1632- func iH (eU,dg) = {
1633- let dQ = (hu[dg] - (if ((dg == iG))
1634- then hw
1622+ let hw = gz._1
1623+ let iI = value(indexOf(hw, max(hw)))
1624+ let hy = (gz._3 - 25)
1625+ func iJ (eV,dh) = {
1626+ let dR = (hw[dh] - (if ((dh == iI))
1627+ then hy
16351628 else 0))
1636- let dU = if ((dQ == 0))
1629+ let dV = if ((dR == 0))
16371630 then nil
1638- else split(drop(toString(pow(10, 0, dQ, 0, 0, DOWN)), 1), "")
1639- let gd = hm[dg]
1640- func iI (hC,hZ) = (hC :+ gd)
1641-
1642- let iJ = {
1643- let eW = dU
1644- let eX = size(eW)
1645- let eY = nil
1646- func hP (fa,fb) = if ((fb >= eX))
1647- then fa
1648- else iI(fa, eW[fb])
1649-
1650- func hQ (fa,fb) = if ((fb >= eX))
1651- then fa
1631+ else split(drop(toString(pow(10, 0, dR, 0, 0, DOWN)), 1), "")
1632+ let ge = hn[dh]
1633+ func iK (hF,ic) = (hF :+ ge)
1634+
1635+ let iL = {
1636+ let eX = dV
1637+ let eY = size(eX)
1638+ let eZ = nil
1639+ func hS (fb,fc) = if ((fc >= eY))
1640+ then fb
1641+ else iK(fb, eX[fc])
1642+
1643+ func hT (fb,fc) = if ((fc >= eY))
1644+ then fb
16521645 else throw("List size exceeds 25")
16531646
1654- hQ(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(eY, 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)
1655- }
1656- (eU ++ iJ)
1647+ hT(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(eZ, 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)
1648+ }
1649+ (eV ++ iL)
16571650 }
16581651
1659- let ff = {
1660- let eW = cQ
1661- let eX = size(eW)
1662- let eY = nil
1663- func hP (fa,fb) = if ((fb >= eX))
1664- then fa
1665- else iH(fa, eW[fb])
1666-
1667- func hQ (fa,fb) = if ((fb >= eX))
1668- then fa
1652+ let fg = {
1653+ let eX = cR
1654+ let eY = size(eX)
1655+ let eZ = nil
1656+ func hS (fb,fc) = if ((fc >= eY))
1657+ then fb
1658+ else iJ(fb, eX[fc])
1659+
1660+ func hT (fb,fc) = if ((fc >= eY))
1661+ then fb
16691662 else throw("List size exceeds 6")
16701663
1671- hQ(hP(hP(hP(hP(hP(hP(eY, 0), 1), 2), 3), 4), 5), 6)
1664+ hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6)
16721665 }
1673- func it (eU,fE) = (eU + ff[fE])
1674-
1675- let eW = hl
1676- let eX = size(eW)
1677- let eY = ""
1678- func ic (fa,fb) = if ((fb >= eX))
1679- then fa
1680- else it(fa, eW[fb])
1681-
1682- func id (fa,fb) = if ((fb >= eX))
1683- then fa
1666+ func iM (eV,fF) = (eV + fg[fF])
1667+
1668+ let eX = hm
1669+ let eY = size(eX)
1670+ let eZ = ""
1671+ func if (fb,fc) = if ((fc >= eY))
1672+ then fb
1673+ else iM(fb, eX[fc])
1674+
1675+ func ig (fb,fc) = if ((fc >= eY))
1676+ then fb
16841677 else throw("List size exceeds 25")
16851678
1686- id(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(eY, 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)
1687- }
1688-
1689-
1690-func iK (iL) = {
1691- let gx = split(valueOrElse(getString(iL), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1692-[toString(valueOrElse(parseInt(gx[bm]), 0)), if ((size(split(gx[bn], "_")) == aI))
1693- then gx[bn]
1694- else "0_0_0_0_0_0", if ((size(split(gx[bo], "_")) == aI))
1695- then gx[bo]
1696- else "0_0_0_0_0_0", gx[bp]]
1697- }
1698-
1699-
1700-func iM (iN) = {
1701- let fs = split(iN, "_")
1702- ((aL * (parseIntValue(fs[1]) + 1)) * parseIntValue(fs[0]))
1703- }
1704-
1705-
1706-func iO (iP) = {
1707- let iQ = iP[bg]
1708- func iR (eU,iS) = (eU + parseIntValue(iS))
1709-
1710- func iT (eU,iS) = {
1711- let dg = eU._1
1712- let eN = (((parseIntValue(iS) + bc) - 1) / bc)
1713- $Tuple2((dg + 1), (eU._2 + (eN * cK)))
1679+ ig(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(eZ, 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)
1680+ }
1681+
1682+
1683+func iN (iO) = {
1684+ let gy = split(valueOrElse(getString(iO), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1685+[toString(valueOrElse(parseInt(gy[bn]), 0)), if ((size(split(gy[bo], "_")) == aI))
1686+ then gy[bo]
1687+ else "0_0_0_0_0_0", if ((size(split(gy[bp], "_")) == aI))
1688+ then gy[bp]
1689+ else "0_0_0_0_0_0", gy[bq]]
1690+ }
1691+
1692+
1693+func iP (iQ) = {
1694+ let ft = split(iQ, "_")
1695+ ((aM * (parseIntValue(ft[1]) + 1)) * parseIntValue(ft[0]))
1696+ }
1697+
1698+
1699+func iR (iS) = {
1700+ let iT = iS[bh]
1701+ func iU (eV,iV) = (eV + parseIntValue(iV))
1702+
1703+ func iW (eV,iV) = {
1704+ let dh = eV._1
1705+ let eO = (((parseIntValue(iV) + bd) - 1) / bd)
1706+ $Tuple2((dh + 1), (eV._2 + (eO * cL)))
17141707 }
17151708
1716- let iU = {
1717- let eW = split(iP[be], "_")
1718- let eX = size(eW)
1719- let eY = 0
1720- func eZ (fa,fb) = if ((fb >= eX))
1721- then fa
1722- else iR(fa, eW[fb])
1723-
1724- func fc (fa,fb) = if ((fb >= eX))
1725- then fa
1709+ let iX = {
1710+ let eX = split(iS[bf], "_")
1711+ let eY = size(eX)
1712+ let eZ = 0
1713+ func fa (fb,fc) = if ((fc >= eY))
1714+ then fb
1715+ else iU(fb, eX[fc])
1716+
1717+ func fd (fb,fc) = if ((fc >= eY))
1718+ then fb
17261719 else throw("List size exceeds 6")
17271720
1728- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
1721+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
17291722 }
1730- let iV = {
1731- let eW = split(iP[bf], "_")
1732- let eX = size(eW)
1733- let eY = 0
1734- func hP (fa,fb) = if ((fb >= eX))
1735- then fa
1736- else iR(fa, eW[fb])
1737-
1738- func hQ (fa,fb) = if ((fb >= eX))
1739- then fa
1723+ let iY = {
1724+ let eX = split(iS[bg], "_")
1725+ let eY = size(eX)
1726+ let eZ = 0
1727+ func hS (fb,fc) = if ((fc >= eY))
1728+ then fb
1729+ else iU(fb, eX[fc])
1730+
1731+ func hT (fb,fc) = if ((fc >= eY))
1732+ then fb
17401733 else throw("List size exceeds 6")
17411734
1742- hQ(hP(hP(hP(hP(hP(hP(eY, 0), 1), 2), 3), 4), 5), 6)
1735+ hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6)
17431736 }
1744- let iW = if ((iQ == ""))
1737+ let iZ = if ((iT == ""))
17451738 then 0
1746- else ( let eW = split_4C(iQ, "_")
1747- let eX = size(eW)
1748- let eY = $Tuple2(0, 0)
1749- func ic (fa,fb) = if ((fb >= eX))
1750- then fa
1751- else iT(fa, eW[fb])
1752-
1753- func id (fa,fb) = if ((fb >= eX))
1754- then fa
1739+ else ( let eX = split_4C(iT, "_")
1740+ let eY = size(eX)
1741+ let eZ = $Tuple2(0, 0)
1742+ func if (fb,fc) = if ((fc >= eY))
1743+ then fb
1744+ else iW(fb, eX[fc])
1745+
1746+ func ig (fb,fc) = if ((fc >= eY))
1747+ then fb
17551748 else throw("List size exceeds 50")
17561749
1757- id(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(eY, 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
1758- ((iU + iV) + iW)
1759- }
1760-
1761-
1762-func iX (iY,iZ,ja) = {
1763- let iN = ((toString(iZ) + "_") + toString(ja))
1764- let jb = iM(iN)
1765- let jc = valueOrElse(getString(iY), (iN + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1766- let jd = split_4C(jc, ":")
1767- let je = iO(jd)
1768- let jf = if ((5 > size(jd)))
1769- then makeString(["0", toString(je), toString((jb - je)), toString(jb)], "_")
1750+ ig(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(eZ, 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
1751+ ((iX + iY) + iZ)
1752+ }
1753+
1754+
1755+func ja (jb,jc,jd) = {
1756+ let iQ = ((toString(jc) + "_") + toString(jd))
1757+ let je = iP(iQ)
1758+ let jf = valueOrElse(getString(jb), (iQ + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1759+ let jg = split_4C(jf, ":")
1760+ let jh = iR(jg)
1761+ let ji = if ((5 > size(jg)))
1762+ then makeString(["0", toString(jh), toString((je - jh)), toString(je)], "_")
17701763 else {
1771- let jg = split(jd[bh], "_")
1772- let jh = parseIntValue(jg[bi])
1773- let ji = if ((size(jg) > 1))
1774- then parseIntValue(jg[bj])
1775- else je
1776- makeString([toString(jh), toString(ji), toString(((jb - jh) - ji)), toString(jb)], "_")
1777- }
1778-[jd[bd], if ((size(split(jd[be], "_")) == aI))
1779- then jd[be]
1780- else "0_0_0_0_0_0", if ((size(split(jd[bf], "_")) == aI))
1781- then jd[bf]
1782- else "0_0_0_0_0_0", jd[bg], jf]
1783- }
1784-
1785-
1786-func jj (iP) = {
1787- let jk = iO(iP)
1788- let jl = parseIntValue(split(iP[bh], "_")[bi])
1789- ((iM(iP[bd]) - jk) - jl)
1790- }
1791-
1792-
1793-func jm (jn,iP,jo) = if ((size(jn) != 3))
1764+ let jj = split(jg[bi], "_")
1765+ let jk = parseIntValue(jj[bj])
1766+ let jl = if ((size(jj) > 1))
1767+ then parseIntValue(jj[bk])
1768+ else jh
1769+ makeString([toString(jk), toString(jl), toString(((je - jk) - jl)), toString(je)], "_")
1770+ }
1771+[jg[be], if ((size(split(jg[bf], "_")) == aI))
1772+ then jg[bf]
1773+ else "0_0_0_0_0_0", if ((size(split(jg[bg], "_")) == aI))
1774+ then jg[bg]
1775+ else "0_0_0_0_0_0", jg[bh], ji]
1776+ }
1777+
1778+
1779+func jm (iS) = {
1780+ let jn = iR(iS)
1781+ let jo = parseIntValue(split(iS[bi], "_")[bj])
1782+ ((iP(iS[be]) - jn) - jo)
1783+ }
1784+
1785+
1786+func jp (jq,iS,jr) = if ((size(jq) != 3))
17941787 then throw("cargoListStr should contain exactly 2 ':' separators")
17951788 else {
1796- let jp = split(jn[0], "_")
1797- let jq = split(jn[1], "_")
1798- let jr = if ((jn[2] == ""))
1789+ let js = split(jq[0], "_")
1790+ let jt = split(jq[1], "_")
1791+ let ju = if ((jq[2] == ""))
17991792 then nil
1800- else split_4C(jn[2], "_")
1801- if ((size(jp) != aI))
1793+ else split_4C(jq[2], "_")
1794+ if ((size(js) != aI))
18021795 then throw("All 6 resources should be passed")
1803- else if ((size(jq) != aI))
1796+ else if ((size(jt) != aI))
18041797 then throw("All 6 materials should be passed")
18051798 else {
1806- let hc = jj(iP)
1807- let js = split(iP[be], "_")
1808- let jt = split(iP[bf], "_")
1809- let ju = if ((iP[bg] == ""))
1799+ let hd = jm(iS)
1800+ let jv = split(iS[bf], "_")
1801+ let jw = split(iS[bg], "_")
1802+ let jx = if ((iS[bh] == ""))
18101803 then nil
1811- else split_4C(iP[bg], "_")
1812- let ha = split(jo[bn], "_")
1813- let jv = split(jo[bo], "_")
1814- let jw = if ((jo[bp] == ""))
1804+ else split_4C(iS[bh], "_")
1805+ let hb = split(jr[bo], "_")
1806+ let jy = split(jr[bp], "_")
1807+ let jz = if ((jr[bq] == ""))
18151808 then nil
1816- else split_4C(jo[bp], "_")
1817- func jx (eU,iS) = {
1818- let gN = eU._1
1819- let jy = parseIntValue(iS)
1820- let jz = parseIntValue(js[gN])
1821- let jA = parseIntValue(ha[gN])
1822- if ((jy == 0))
1823- then $Tuple4((gN + 1), (eU._2 :+ js[gN]), (eU._3 :+ ha[gN]), eU._4)
1824- else if ((jy > 0))
1825- then if ((jy > jA))
1826- then throw((((("Attempt to take " + iS) + " from backpack, but only ") + toString(jA)) + " available"))
1827- else $Tuple4((gN + 1), (eU._2 :+ toString((jz + jy))), (eU._3 :+ toString((jA - jy))), (eU._4 + jy))
1828- else if ((-(jy) > jz))
1829- then throw((((("Attempt to take " + toString(-(jy))) + " from warehouse, but only ") + toString(jz)) + " available"))
1830- else $Tuple4((gN + 1), (eU._2 :+ toString((jz + jy))), (eU._3 :+ toString((jA - jy))), (eU._4 + jy))
1809+ else split_4C(jr[bq], "_")
1810+ func jA (eV,iV) = {
1811+ let gO = eV._1
1812+ let jB = parseIntValue(iV)
1813+ let jC = parseIntValue(jv[gO])
1814+ let jD = parseIntValue(hb[gO])
1815+ if ((jB == 0))
1816+ then $Tuple4((gO + 1), (eV._2 :+ jv[gO]), (eV._3 :+ hb[gO]), eV._4)
1817+ else if ((jB > 0))
1818+ then if ((jB > jD))
1819+ then throw((((("Attempt to take " + iV) + " from backpack, but only ") + toString(jD)) + " available"))
1820+ else $Tuple4((gO + 1), (eV._2 :+ toString((jC + jB))), (eV._3 :+ toString((jD - jB))), (eV._4 + jB))
1821+ else if ((-(jB) > jC))
1822+ then throw((((("Attempt to take " + toString(-(jB))) + " from warehouse, but only ") + toString(jC)) + " available"))
1823+ else $Tuple4((gO + 1), (eV._2 :+ toString((jC + jB))), (eV._3 :+ toString((jD - jB))), (eV._4 + jB))
18311824 }
18321825
1833- let ff = {
1834- let eW = jp
1835- let eX = size(eW)
1836- let eY = $Tuple4(0, nil, nil, 0)
1837- func eZ (fa,fb) = if ((fb >= eX))
1838- then fa
1839- else jx(fa, eW[fb])
1840-
1841- func fc (fa,fb) = if ((fb >= eX))
1842- then fa
1826+ let fg = {
1827+ let eX = js
1828+ let eY = size(eX)
1829+ let eZ = $Tuple4(0, nil, nil, 0)
1830+ func fa (fb,fc) = if ((fc >= eY))
1831+ then fb
1832+ else jA(fb, eX[fc])
1833+
1834+ func fd (fb,fc) = if ((fc >= eY))
1835+ then fb
18431836 else throw("List size exceeds 6")
18441837
1845- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
1838+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
18461839 }
1847- func jB (eU,iS) = {
1848- let gN = eU._1
1849- let jy = parseIntValue(iS)
1850- let jC = parseIntValue(jt[gN])
1851- let jD = parseIntValue(jv[gN])
1852- if ((jy == 0))
1853- then $Tuple4((gN + 1), (eU._2 :+ jt[gN]), (eU._3 :+ jv[gN]), eU._4)
1854- else if ((jy > 0))
1855- then if ((jy > jD))
1856- then throw((((("Attempt to take " + iS) + " from backpack, but only ") + toString(jD)) + " available"))
1857- else $Tuple4((gN + 1), (eU._2 :+ toString((jC + jy))), (eU._3 :+ toString((jD - jy))), (eU._4 + jy))
1858- else if ((-(jy) > jC))
1859- then throw((((("Attempt to take " + toString(-(jy))) + " from warehouse, but only ") + toString(jC)) + " available"))
1860- else $Tuple4((gN + 1), (eU._2 :+ toString((jC + jy))), (eU._3 :+ toString((jD - jy))), (eU._4 + jy))
1840+ func jE (eV,iV) = {
1841+ let gO = eV._1
1842+ let jB = parseIntValue(iV)
1843+ let jF = parseIntValue(jw[gO])
1844+ let jG = parseIntValue(jy[gO])
1845+ if ((jB == 0))
1846+ then $Tuple4((gO + 1), (eV._2 :+ jw[gO]), (eV._3 :+ jy[gO]), eV._4)
1847+ else if ((jB > 0))
1848+ then if ((jB > jG))
1849+ then throw((((("Attempt to take " + iV) + " from backpack, but only ") + toString(jG)) + " available"))
1850+ else $Tuple4((gO + 1), (eV._2 :+ toString((jF + jB))), (eV._3 :+ toString((jG - jB))), (eV._4 + jB))
1851+ else if ((-(jB) > jF))
1852+ then throw((((("Attempt to take " + toString(-(jB))) + " from warehouse, but only ") + toString(jF)) + " available"))
1853+ else $Tuple4((gO + 1), (eV._2 :+ toString((jF + jB))), (eV._3 :+ toString((jG - jB))), (eV._4 + jB))
18611854 }
18621855
1863- let gt = {
1864- let eW = jq
1865- let eX = size(eW)
1866- let eY = $Tuple4(0, nil, nil, ff._4)
1867- func hP (fa,fb) = if ((fb >= eX))
1868- then fa
1869- else jB(fa, eW[fb])
1870-
1871- func hQ (fa,fb) = if ((fb >= eX))
1872- then fa
1856+ let gu = {
1857+ let eX = jt
1858+ let eY = size(eX)
1859+ let eZ = $Tuple4(0, nil, nil, fg._4)
1860+ func hS (fb,fc) = if ((fc >= eY))
1861+ then fb
1862+ else jE(fb, eX[fc])
1863+
1864+ func hT (fb,fc) = if ((fc >= eY))
1865+ then fb
18731866 else throw("List size exceeds 6")
18741867
1875- hQ(hP(hP(hP(hP(hP(hP(eY, 0), 1), 2), 3), 4), 5), 6)
1868+ hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6)
18761869 }
1877- func jE (eU,iS) = {
1878- let gN = eU._1
1879- let jy = parseIntValue(iS)
1880- let jF = if ((size(ju) > gN))
1881- then parseIntValue(ju[gN])
1870+ func jH (eV,iV) = {
1871+ let gO = eV._1
1872+ let jB = parseIntValue(iV)
1873+ let jI = if ((size(jx) > gO))
1874+ then parseIntValue(jx[gO])
18821875 else 0
1883- let jG = if ((size(jw) > gN))
1884- then parseIntValue(jw[gN])
1876+ let jJ = if ((size(jz) > gO))
1877+ then parseIntValue(jz[gO])
18851878 else 0
1886- if ((jy == 0))
1887- then $Tuple4((gN + 1), (eU._2 :+ toString(jF)), (eU._3 :+ toString(jG)), eU._4)
1888- else if ((jy > 0))
1889- then if ((jy > jG))
1890- then throw((((("Attempt to take " + iS) + " from backpack, but only ") + toString(jG)) + " available"))
1879+ if ((jB == 0))
1880+ then $Tuple4((gO + 1), (eV._2 :+ toString(jI)), (eV._3 :+ toString(jJ)), eV._4)
1881+ else if ((jB > 0))
1882+ then if ((jB > jJ))
1883+ then throw((((("Attempt to take " + iV) + " from backpack, but only ") + toString(jJ)) + " available"))
18911884 else {
1892- let fW = (eK((jF + jy), bc) - eK(jF, bc))
1893- $Tuple4((gN + 1), (eU._2 :+ toString((jF + jy))), (eU._3 :+ toString((jG - jy))), (eU._4 + fW))
1885+ let fX = (eL((jI + jB), bd) - eL(jI, bd))
1886+ $Tuple4((gO + 1), (eV._2 :+ toString((jI + jB))), (eV._3 :+ toString((jJ - jB))), (eV._4 + fX))
18941887 }
1895- else if ((-(jy) > jF))
1896- then throw((((("Attempt to take " + toString(-(jy))) + " from warehouse, but only ") + toString(jF)) + " available"))
1888+ else if ((-(jB) > jI))
1889+ then throw((((("Attempt to take " + toString(-(jB))) + " from warehouse, but only ") + toString(jI)) + " available"))
18971890 else {
1898- let fW = (eK((jF + jy), bc) - eK(jF, bc))
1899- $Tuple4((gN + 1), (eU._2 :+ toString((jF + jy))), (eU._3 :+ toString((jG - jy))), (eU._4 + fW))
1891+ let fX = (eL((jI + jB), bd) - eL(jI, bd))
1892+ $Tuple4((gO + 1), (eV._2 :+ toString((jI + jB))), (eV._3 :+ toString((jJ - jB))), (eV._4 + fX))
19001893 }
19011894 }
19021895
1903- let gx = if ((size(jr) != 0))
1896+ let gy = if ((size(ju) != 0))
19041897 then {
1905- let eW = jr
1906- let eX = size(eW)
1907- let eY = $Tuple4(0, nil, nil, gt._4)
1908- func ic (fa,fb) = if ((fb >= eX))
1909- then fa
1910- else jE(fa, eW[fb])
1911-
1912- func id (fa,fb) = if ((fb >= eX))
1913- then fa
1898+ let eX = ju
1899+ let eY = size(eX)
1900+ let eZ = $Tuple4(0, nil, nil, gu._4)
1901+ func if (fb,fc) = if ((fc >= eY))
1902+ then fb
1903+ else jH(fb, eX[fc])
1904+
1905+ func ig (fb,fc) = if ((fc >= eY))
1906+ then fb
19141907 else throw("List size exceeds 50")
19151908
1916- id(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(eY, 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)
1909+ ig(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(eZ, 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)
19171910 }
1918- else $Tuple4(0, ju, jw, gt._4)
1919- let jH = gx._4
1920- if ((jH > hc))
1921- then throw((((("Attempt to put total " + toString(jH)) + " stuff, but only ") + toString(hc)) + " warehouse space left"))
1922- else $Tuple7(makeString(ff._2, "_"), makeString(gt._2, "_"), makeString_2C(gx._2, "_"), makeString(ff._3, "_"), makeString(gt._3, "_"), makeString_2C(gx._3, "_"), jH)
1911+ else $Tuple4(0, jx, jz, gu._4)
1912+ let jK = gy._4
1913+ if ((jK > hd))
1914+ then throw((((("Attempt to put total " + toString(jK)) + " stuff, but only ") + toString(hd)) + " warehouse space left"))
1915+ else $Tuple7(makeString(fg._2, "_"), makeString(gu._2, "_"), makeString_2C(gy._2, "_"), makeString(fg._3, "_"), makeString(gu._3, "_"), makeString_2C(gy._3, "_"), jK)
19231916 }
19241917 }
19251918
19261919
1927-func jI (jJ,jK) = {
1928- let bQ = toString(jJ)
1929- let jL = hi(toBigInt(jK))
1930- let jM = valueOrElse(getInteger(es()), (er + 1))
1931- let ew = toString(jM)
1932- let iA = toInt((jL % el))
1933- let gQ = iy(jL, iA)
1934- let dz = aU[iA]
1935- let jN = Issue(eJ(ew, "S"), makeString([ew, "S", gQ, dz], "_"), 1, 0, false)
1936- let bu = calculateAssetId(jN)
1937- let jO = toBase58String(bu)
1938- $Tuple2([IntegerEntry(es(), (jM + 1)), jN, StringEntry(ev(ew), jO), StringEntry(bt(jO), bQ), StringEntry(ey(ew), bQ), IntegerEntry(bD(jO), 0), IntegerEntry(ex(jO, bQ), 0), ScriptTransfer(jJ, 1, bu)], $Tuple2(jO, dz))
1939- }
1940-
1941-
1942-func jP (bQ,jQ,jR) = if (!(sigVerify_8Kb(jQ, jR, ec)))
1920+func jL (jM,jN) = {
1921+ let bR = toString(jM)
1922+ let jO = hj(toBigInt(jN))
1923+ let jP = valueOrElse(getInteger(et()), (es + 1))
1924+ let ex = toString(jP)
1925+ let iC = toInt((jO % em))
1926+ let gR = iA(jO, iC)
1927+ let dA = aV[iC]
1928+ let jQ = Issue(eK(ex, "S"), makeString([ex, "S", gR, dA], "_"), 1, 0, false)
1929+ let bv = calculateAssetId(jQ)
1930+ let jR = toBase58String(bv)
1931+ $Tuple2([IntegerEntry(et(), (jP + 1)), jQ, StringEntry(ew(ex), jR), StringEntry(bu(jR), bR), StringEntry(ez(ex), bR), IntegerEntry(bE(jR), 0), IntegerEntry(ey(jR, bR), 0), ScriptTransfer(jM, 1, bv)], $Tuple2(jR, dA))
1932+ }
1933+
1934+
1935+func jS (bR,jT,jU) = if (!(sigVerify_8Kb(jT, jU, ed)))
19431936 then throw("signature does not match")
19441937 else {
1945- let fs = split_4C(toUtf8String(jQ), ";")
1946- let jS = split_4C(fs[0], "|")
1947- let jT = split(jS[eF], "_")
1948- let jU = parseIntValue(jT[0])
1949- let jV = parseIntValue(jT[1])
1950- let jW = split(fs[1], ":")
1951- let jX = jW[0]
1952- let jY = parseIntValue(jS[eG])
1953- if (if ((jY > (lastBlock.timestamp + ee)))
1938+ let ft = split_4C(toUtf8String(jT), ";")
1939+ let jV = split_4C(ft[0], "|")
1940+ let jW = split(jV[eG], "_")
1941+ let jX = parseIntValue(jW[0])
1942+ let jY = parseIntValue(jW[1])
1943+ let jZ = split(ft[1], ":")
1944+ let ka = jZ[0]
1945+ let kb = parseIntValue(jV[eH])
1946+ if (if ((kb > (lastBlock.timestamp + ef)))
19541947 then true
1955- else ((lastBlock.timestamp - ee) > jY))
1956- then throw(((("signature outdated: logTime=" + toString(jY)) + ", bcTime=") + toString(lastBlock.timestamp)))
1948+ else ((lastBlock.timestamp - ef) > kb))
1949+ then throw(((("signature outdated: logTime=" + toString(kb)) + ", bcTime=") + toString(lastBlock.timestamp)))
19571950 else {
1958- let jZ = jW[1]
1959- let ka = valueOrElse(getString(dO(bQ)), "")
1960- if ((ka != jZ))
1961- then throw(((("Tx ids don't match! In state: " + ka) + ", in msg: ") + jZ))
1951+ let kc = jZ[1]
1952+ let kd = valueOrElse(getString(dP(bR)), "")
1953+ if ((kd != kc))
1954+ then throw(((("Tx ids don't match! In state: " + kd) + ", in msg: ") + kc))
19621955 else {
1963- let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked")
1964- let kb = A(B)
1965- let kc = aj(valueOrElse(getInteger(E(B)), 0))
1966- let kd = valueOrElse(getInteger(kb), kc)
1967- if ((kd != jU))
1968- then throw(((("oldHealth=" + toString(kd)) + " from state does not match one from flight log=") + toString(jU)))
1969- else if ((0 >= jU))
1956+ let B = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
1957+ let ke = A(B)
1958+ let kf = aj(valueOrElse(getInteger(E(B)), 0))
1959+ let kg = valueOrElse(getInteger(ke), kf)
1960+ if ((kg != jX))
1961+ then throw(((("oldHealth=" + toString(kg)) + " from state does not match one from flight log=") + toString(jX)))
1962+ else if ((0 >= jX))
19701963 then throw("You can't fly with zero health")
1971- else if (!(gz(B)))
1964+ else if (!(gA(B)))
19721965 then throw("Equipment incompatible")
19731966 else {
1974- let ke = if ((size(jS) > eH))
1975- then jS[eH]
1967+ let kh = if ((size(jV) > eI))
1968+ then jV[eI]
19761969 else ""
1977- let kf = if ((size(jS) > eI))
1978- then jS[eI]
1970+ let ki = if ((size(jV) > eJ))
1971+ then jV[eJ]
19791972 else ""
1980- let kg = if (if ((jV > 0))
1981- then (ke == "$")
1973+ let kj = if (if ((jY > 0))
1974+ then (kh == "$")
19821975 else false)
1983- then dF(invoke(dh, "sendUsdtPrize", [bQ], nil))
1976+ then dG(invoke(di, "sendUsdtPrize", [bR], nil))
19841977 else 0
1985- $Tuple5(jV, B, kg, jX, kf)
1978+ $Tuple5(jY, B, kj, ka, ki)
19861979 }
19871980 }
19881981 }
19891982 }
19901983
19911984
1992-func kh (Q,ki) = {
1993- let ja = valueOrElse(getInteger(bD(Q)), 0)
1994- let kj = valueOrElse(getInteger(bx(aH, Q)), 0)
1995- let kk = (ja / 6)
1996- let kl = (ja / 7)
1997- ((aK + fraction(aK, ((ja + kk) + (2 * kl)), 5)) + fraction(aK, kj, (ki * 5)))
1998- }
1999-
2000-
2001-func km (c,kn,ko) = {
2002- let kp = if ((kn == eC))
2003- then $Tuple2(ko, valueOrElse(getString(bM(c)), ""))
1985+func kk (Q,kl) = {
1986+ let jd = valueOrElse(getInteger(bE(Q)), 0)
1987+ let km = valueOrElse(getInteger(by(aH, Q)), 0)
1988+ let kn = (jd / 6)
1989+ let ko = (jd / 7)
1990+ ((aL + fraction(aL, ((jd + kn) + (2 * ko)), 5)) + fraction(aL, km, (kl * 5)))
1991+ }
1992+
1993+
1994+func kp (c,kq,kr) = {
1995+ let ks = if ((kq == eD))
1996+ then $Tuple2(kr, valueOrElse(getString(bN(c)), ""))
20041997 else {
2005- let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
2006- let kq = valueOrElse(getString(bO(B)), aM)
2007- let ck = split(value(kq), "_")
2008- if ((ck[br] != "L"))
2009- then throw((("Duck location type is " + ck[br]) + ", but should be L"))
2010- else $Tuple2(ck[bs], B)
2011- }
2012- let Q = kp._1
2013- let kr = kp._2
2014- let ks = value(assetInfo(fromBase58String(Q)))
2015- let kt = bw(Q)
2016- let ku = valueOrErrorMessage(getInteger(kt), (("Land " + ks.name) + " is not staked"))
2017- let kv = valueOrErrorMessage(getString(bt(Q)), (("NFT " + ks.name) + " is orphaned"))
2018- if ((kv != c))
1998+ let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
1999+ let kt = valueOrElse(getString(bP(B)), aN)
2000+ let cl = split(value(kt), "_")
2001+ if ((cl[bs] != "L"))
2002+ then throw((("Duck location type is " + cl[bs]) + ", but should be L"))
2003+ else $Tuple2(cl[bt], B)
2004+ }
2005+ let Q = ks._1
2006+ let ku = ks._2
2007+ let kv = value(assetInfo(fromBase58String(Q)))
2008+ let kw = bx(Q)
2009+ let kx = valueOrErrorMessage(getInteger(kw), (("Land " + kv.name) + " is not staked"))
2010+ let ky = valueOrErrorMessage(getString(bu(Q)), (("NFT " + kv.name) + " is orphaned"))
2011+ if ((ky != c))
20192012 then throw((aF + " is not yours"))
20202013 else {
2021- let kw = split(ks.description, "_")
2022- $Tuple4(kr, Q, kw, ku)
2023- }
2024- }
2025-
2026-
2027-func kx (c,eL,kn,ko) = if ((0 > eL))
2014+ let kz = split(kv.description, "_")
2015+ $Tuple4(ku, Q, kz, kx)
2016+ }
2017+ }
2018+
2019+
2020+func kA (c,eM,kq,kr) = if ((0 > eM))
20282021 then throw("Negative amount")
20292022 else {
2030- let gd = km(c, kn, ko)
2031- let dL = gd._3[do]
2032- let gJ = gP(gd._3[dp])
2033- let gT = (lastBlock.timestamp - gd._4)
2034- if ((0 > gT))
2035- then throw(((("Saved timestamp is in future, saved = " + toString(gd._4)) + ", current = ") + toString(lastBlock.timestamp)))
2023+ let ge = kp(c, kq, kr)
2024+ let dM = ge._3[dp]
2025+ let gK = gQ(ge._3[dq])
2026+ let gU = (lastBlock.timestamp - ge._4)
2027+ if ((0 > gU))
2028+ then throw(((("Saved timestamp is in future, saved = " + toString(ge._4)) + ", current = ") + toString(lastBlock.timestamp)))
20362029 else {
2037- let ki = dK(dL)
2038- let ky = kh(gd._2, ki)
2039- let kz = fraction(gT, (ky * ki), a)
2040- if ((eL > kz))
2041- then throw(((("Not enough resources, available = " + toString(kz)) + ", requested = ") + toString(eL)))
2030+ let kl = dL(dM)
2031+ let kB = kk(ge._2, kl)
2032+ let kC = fraction(gU, (kB * kl), a)
2033+ if ((eM > kC))
2034+ then throw(((("Not enough resources, available = " + toString(kC)) + ", requested = ") + toString(eM)))
20422035 else {
2043- let kA = fraction((kz - eL), a, (ky * ki))
2044- let kB = (lastBlock.timestamp - kA)
2045- let iZ = (ki / cL)
2046- let hb = gX(gJ, (gT - kA), iZ, ky)
2047- let iY = bC(gd._2)
2048- let ja = valueOrElse(getInteger(bD(gd._2)), 0)
2049- let iP = iX(iY, iZ, ja)
2050- let jg = split(iP[bh], "_")
2051- let hc = parseIntValue(jg[bk])
2052- if (if ((kn == eC))
2053- then (eL > hc)
2036+ let kD = fraction((kC - eM), a, (kB * kl))
2037+ let kE = (lastBlock.timestamp - kD)
2038+ let jc = (kl / cM)
2039+ let hc = gY(gK, (gU - kD), jc, kB)
2040+ let jb = bD(ge._2)
2041+ let jd = valueOrElse(getInteger(bE(ge._2)), 0)
2042+ let iS = ja(jb, jc, jd)
2043+ let jj = split(iS[bi], "_")
2044+ let hd = parseIntValue(jj[bl])
2045+ if (if ((kq == eD))
2046+ then (eM > hd)
20542047 else false)
2055- then throw((("Only " + toString(hc)) + " space left in warehouse"))
2048+ then throw((("Only " + toString(hd)) + " space left in warehouse"))
20562049 else {
2057- let iL = bN(gd._1)
2058- let jo = iK(iL)
2059- let ha = split(jo[bn], "_")
2060- let gZ = split(iP[be], "_")
2061- let kC = if ((kn == eC))
2062- then $Tuple4(gR(gZ, gJ, (gT - kA), iZ, ky), jo[bn], (parseIntValue(jg[bj]) + hb._2), (parseIntValue(jg[bk]) - hb._2))
2063- else if ((kn == eD))
2064- then $Tuple4(iP[be], gR(ha, gJ, (gT - kA), iZ, ky), parseIntValue(jg[bj]), parseIntValue(jg[bk]))
2050+ let iO = bO(ge._1)
2051+ let jr = iN(iO)
2052+ let hb = split(jr[bo], "_")
2053+ let ha = split(iS[bf], "_")
2054+ let kF = if ((kq == eD))
2055+ then $Tuple4(gS(ha, gK, (gU - kD), jc, kB), jr[bo], (parseIntValue(jj[bk]) + hc._2), (parseIntValue(jj[bl]) - hc._2))
2056+ else if ((kq == eE))
2057+ then $Tuple4(iS[bf], gS(hb, gK, (gU - kD), jc, kB), parseIntValue(jj[bk]), parseIntValue(jj[bl]))
20652058 else {
2066- let kD = gY(gZ, ha, hb, hc)
2067- let kE = min([parseIntValue(jg[bk]), hb._2])
2068- $Tuple4(kD._1, kD._2, (parseIntValue(jg[bj]) + kE), (parseIntValue(jg[bk]) - kE))
2059+ let kG = gZ(ha, hb, hc, hd)
2060+ let kH = min([parseIntValue(jj[bl]), hc._2])
2061+ $Tuple4(kG._1, kG._2, (parseIntValue(jj[bk]) + kH), (parseIntValue(jj[bl]) - kH))
20692062 }
2070- let kF = kC._1
2071- let kG = kC._2
2072- let kH = kC._3
2073- let kI = kC._4
2074- $Tuple5([IntegerEntry(bw(gd._2), kB), IntegerEntry(bz(aF, gd._2, c), kB)], iL, [jo[bm], kG, jo[bo], jo[bp]], iY, [iP[bd], kF, iP[bf], iP[bg], makeString([jg[bi], toString(kH), toString(kI), jg[bl]], "_")])
2063+ let kI = kF._1
2064+ let kJ = kF._2
2065+ let kK = kF._3
2066+ let kL = kF._4
2067+ $Tuple5([IntegerEntry(bx(ge._2), kE), IntegerEntry(bA(aF, ge._2, c), kE)], iO, [jr[bn], kJ, jr[bp], jr[bq]], jb, [iS[be], kI, iS[bg], iS[bh], makeString([jj[bj], toString(kK), toString(kL), jj[bm]], "_")])
20752068 }
20762069 }
20772070 }
20782071 }
20792072
20802073
2081-func kJ (c,Q,ki,kn) = {
2082- let kt = bw(Q)
2083- let ku = value(getInteger(kt))
2084- let kz = (fraction((lastBlock.timestamp - ku), kh(Q, ki), a) * ki)
2085- kx(c, kz, kn, Q)
2086- }
2087-
2088-
2089-func kK (fh,jJ,kL,Q) = {
2090- let c = toString(jJ)
2091- let gd = km(c, eE, Q)
2092- let ki = dK(gd._3[do])
2093- let kM = bD(gd._2)
2094- let kN = valueOrElse(getInteger(kM), 0)
2095- if (if (!(cz))
2096- then (kN >= 3)
2074+func kM (c,Q,kl,kq) = {
2075+ let kw = bx(Q)
2076+ let kx = value(getInteger(kw))
2077+ let kC = (fraction((lastBlock.timestamp - kx), kk(Q, kl), a) * kl)
2078+ kA(c, kC, kq, Q)
2079+ }
2080+
2081+
2082+func kN (fi,jM,kO,Q) = {
2083+ let c = toString(jM)
2084+ let ge = kp(c, eF, Q)
2085+ let kl = dL(ge._3[dp])
2086+ let kP = bE(ge._2)
2087+ let kQ = valueOrElse(getInteger(kP), 0)
2088+ if (if (!(cA))
2089+ then (kQ >= 3)
20972090 else false)
20982091 then throw("Currently max infrastructure level = 3")
20992092 else {
2100- let kO = ((sqrt(ki, 0, 0, DOWN) / 5) + 2)
2101- let ao = (kN + 1)
2102- if (if (cz)
2103- then (ao > kO)
2093+ let kR = ((sqrt(kl, 0, 0, DOWN) / 5) + 2)
2094+ let ao = (kQ + 1)
2095+ if (if (cA)
2096+ then (ao > kR)
21042097 else false)
2105- then throw(("Currently max infrastructure level = " + toString(kO)))
2098+ then throw(("Currently max infrastructure level = " + toString(kR)))
21062099 else {
2107- let kP = fraction(eh, (ki * ao), cL)
2108- if (if (!(fh))
2109- then (kL != kP)
2100+ let kS = fraction(ei, (kl * ao), cM)
2101+ if (if (!(fi))
2102+ then (kO != kS)
21102103 else false)
2111- then throw(("Payment attached should be " + toString(kP)))
2104+ then throw(("Payment attached should be " + toString(kS)))
21122105 else {
2113- let iL = bN(gd._1)
2114- let jo = iK(iL)
2115- let kQ = split(jo[bo], "_")
2116- let kR = fraction(cF, (ki * ao), cL)
2117- let kS = makeString(fg(fh, kQ, kR), "_")
2118- let kT = kJ(c, gd._2, ki, eE)
2119- let kU = kT._5
2120- let kV = iM(kU[bd])
2121- let kW = makeString([split(kU[bd], "_")[0], toString(ao)], "_")
2122- let kX = iM(kW)
2123- let jg = split(kU[bh], "_")
2124- let kY = makeString([jg[bi], jg[bj], toString(((parseIntValue(jg[bk]) + kX) - kV)), toString(kX)], "_")
2125- $Tuple3(([IntegerEntry(kM, ao), IntegerEntry(ex(gd._2, c), ao), StringEntry(iL, makeString([jo[bm], kT._3[bn], kS, jo[bp]], ":")), StringEntry(kT._4, makeString([kW, kU[be], kU[bf], kU[bg], kY], ":"))] ++ kT._1), ao, kR)
2106+ let iO = bO(ge._1)
2107+ let jr = iN(iO)
2108+ let kT = split(jr[bp], "_")
2109+ let kU = fraction(cG, (kl * ao), cM)
2110+ let kV = makeString(fh(fi, kT, kU), "_")
2111+ let kW = kM(c, ge._2, kl, eF)
2112+ let kX = kW._5
2113+ let kY = iP(kX[be])
2114+ let kZ = makeString([split(kX[be], "_")[0], toString(ao)], "_")
2115+ let la = iP(kZ)
2116+ let jj = split(kX[bi], "_")
2117+ let lb = makeString([jj[bj], jj[bk], toString(((parseIntValue(jj[bl]) + la) - kY)), toString(la)], "_")
2118+ $Tuple3(([IntegerEntry(kP, ao), IntegerEntry(ey(ge._2, c), ao), StringEntry(iO, makeString([jr[bn], kW._3[bo], kV, jr[bq]], ":")), StringEntry(kW._4, makeString([kZ, kX[bf], kX[bg], kX[bh], lb], ":"))] ++ kW._1), ao, kU)
21262119 }
21272120 }
21282121 }
21292122 }
21302123
21312124
2132-func kZ (la,lb,lc,ld) = {
2133- let ai = valueOrElse(getInteger(lb), 0)
2134- let an = (ai + ld)
2135- let le = al(valueOrElse(getInteger(la), 0), an)
2136- $Tuple2([IntegerEntry(la, le[0]), IntegerEntry(lb, an), IntegerEntry(lc, (valueOrElse(getInteger(lc), 0) + le[1]))], an)
2137- }
2138-
2139-
2140-func lf (B,ld) = kZ(E(B), D(B), F(B), ld)
2141-
2142-
2143-func lg (c,ld) = kZ(I(c), H(c), J(c), ld)
2144-
2145-
2146-func lh (c) = {
2147- let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
2148- let li = bH(c)
2149- let lj = getString(li)
2150- if (!(isDefined(lj)))
2125+func lc (ld,le,lf,lg) = {
2126+ let ai = valueOrElse(getInteger(le), 0)
2127+ let an = (ai + lg)
2128+ let lh = al(valueOrElse(getInteger(ld), 0), an)
2129+ $Tuple2([IntegerEntry(ld, lh[0]), IntegerEntry(le, an), IntegerEntry(lf, (valueOrElse(getInteger(lf), 0) + lh[1]))], an)
2130+ }
2131+
2132+
2133+func li (B,lg) = lc(E(B), D(B), F(B), lg)
2134+
2135+
2136+func lj (c,lg) = lc(I(c), H(c), J(c), lg)
2137+
2138+
2139+func lk (c) = {
2140+ let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
2141+ let ll = bI(c)
2142+ let lm = getString(ll)
2143+ if (!(isDefined(lm)))
21512144 then throw("You are not eligible for ONBOARD artifact")
21522145 else {
2153- let lk = bJ(c)
2154- let ll = getString(lk)
2155- if (isDefined(ll))
2156- then throw(("You already used your ONBOARD artifact on duck " + value(ll)))
2146+ let ln = bK(c)
2147+ let lo = getString(ln)
2148+ if (isDefined(lo))
2149+ then throw(("You already used your ONBOARD artifact on duck " + value(lo)))
21572150 else {
2158- let lm = bI(B)
2159- let ln = getString(lm)
2160- if (isDefined(ln))
2161- then throw(((("The duck " + B) + " already got points from ONBOARD artifact from user ") + value(ln)))
2162- else ([StringEntry(lk, B), StringEntry(lm, c)] ++ lf(B, af)._1)
2151+ let lp = bJ(B)
2152+ let lq = getString(lp)
2153+ if (isDefined(lq))
2154+ then throw(((("The duck " + B) + " already got points from ONBOARD artifact from user ") + value(lq)))
2155+ else ([StringEntry(ln, B), StringEntry(lp, c)] ++ li(B, af)._1)
21632156 }
21642157 }
21652158 }
21662159
21672160
2168-func lo (c,ko) = {
2169- let gd = km(c, eE, ko)
2170- let Q = gd._2
2171- let ki = dK(gd._3[do])
2172- let lp = bx(aH, Q)
2173- if ((valueOrElse(getInteger(lp), 0) > 0))
2161+func lr (c,kr) = {
2162+ let ge = kp(c, eF, kr)
2163+ let Q = ge._2
2164+ let kl = dL(ge._3[dp])
2165+ let ls = by(aH, Q)
2166+ if ((valueOrElse(getInteger(ls), 0) > 0))
21742167 then throw("Presale artifact is already activated")
2175- else if ((parseIntValue(gd._3[dn]) > er))
2168+ else if ((parseIntValue(ge._3[do]) > es))
21762169 then throw((((aF + " ") + Q) + " is not eligible for presale artifact"))
21772170 else {
2178- let kT = kJ(c, Q, ki, eE)
2179- (((kT._1 :+ IntegerEntry(lp, ki)) :+ StringEntry(kT._2, makeString(kT._3, ":"))) :+ StringEntry(kT._4, makeString(kT._5, ":")))
2171+ let kW = kM(c, Q, kl, eF)
2172+ (((kW._1 :+ IntegerEntry(ls, kl)) :+ StringEntry(kW._2, makeString(kW._3, ":"))) :+ StringEntry(kW._4, makeString(kW._5, ":")))
21802173 }
21812174 }
21822175
21832176
2184-func lq (B) = {
2185- let cj = valueOrElse(getInteger(dl, bU), 0)
2186- let kq = split(valueOrElse(getString(bO(B)), aM), "_")
2177+func lt (B) = {
2178+ let ck = valueOrElse(getInteger(dm, bV), 0)
2179+ let kt = split(valueOrElse(getString(bP(B)), aN), "_")
21872180 let aA = lastBlock.timestamp
2188- let cl = cd(dl, cj)
2189- let cf = cl[bZ]
2190- let cg = cl[ca]
2191- if ((kq[br] != "T"))
2181+ let cm = ce(dm, ck)
2182+ let cg = cm[ca]
2183+ let ch = cm[cb]
2184+ if ((kt[bs] != "T"))
21922185 then false
2193- else if (if (if ((parseIntValue(kq[bq]) == cj))
2194- then (cg[cc] == "INPROGRESS")
2186+ else if (if (if ((parseIntValue(kt[br]) == ck))
2187+ then (ch[cd] == "INPROGRESS")
21952188 else false)
2196- then (parseIntValue(cf[cb]) > aA)
2189+ then (parseIntValue(cg[cc]) > aA)
21972190 else false)
21982191 then throw("Your duck is taking part in the tournament")
2199- else dJ(invoke(this, "exitTournamentInternal", [B], nil))
2200- }
2201-
2202-
2203-func lr (B) = {
2204- let kq = split(valueOrElse(getString(bO(B)), aM), "_")
2192+ else dK(invoke(this, "exitTournamentInternal", [B], nil))
2193+ }
2194+
2195+
2196+func lu (B) = {
2197+ let kt = split(valueOrElse(getString(bP(B)), aN), "_")
22052198 let aA = lastBlock.timestamp
2206- if ((kq[br] != "D"))
2199+ if ((kt[bs] != "D"))
22072200 then false
22082201 else {
2209- let cn = parseIntValue(kq[bq])
2210- let co = parseIntValue(kq[bs])
2211- if (if (((cn + aQ) > aA))
2212- then (1 > co)
2202+ let co = parseIntValue(kt[br])
2203+ let cp = parseIntValue(kt[bt])
2204+ if (if (((co + aR) > aA))
2205+ then (1 > cp)
22132206 else false)
22142207 then throw("Your duck is on delivery mission")
2215- else dJ(invoke(this, "exitDeliveryInternal", [B], nil))
2216- }
2217- }
2218-
2219-
2220-func ls (B,fM,jV,lt) = {
2221- let kq = split(valueOrElse(getString(bO(B)), aM), "_")
2208+ else dK(invoke(this, "exitDeliveryInternal", [B], nil))
2209+ }
2210+ }
2211+
2212+
2213+func lv (B,fN,jY,lw) = {
2214+ let kt = split(valueOrElse(getString(bP(B)), aN), "_")
22222215 let aA = lastBlock.timestamp
2223- let cn = parseIntValue(kq[bq])
2224- let co = parseIntValue(kq[bs])
2225- let kv = valueOrErrorMessage(getString(bL(B)), "NFT duck is orphaned")
2226- let lu = A(B)
2227- let lv = getIntegerValue(lu)
2228- let lw = if (if ((co > 0))
2216+ let co = parseIntValue(kt[br])
2217+ let cp = parseIntValue(kt[bt])
2218+ let ky = valueOrErrorMessage(getString(bM(B)), "NFT duck is orphaned")
2219+ let lx = A(B)
2220+ let ly = getIntegerValue(lx)
2221+ let lz = if (if ((cp > 0))
22292222 then true
2230- else if (if (fM)
2231- then (lt > 0)
2223+ else if (if (fN)
2224+ then (lw > 0)
22322225 else false)
2233- then (jV > 0)
2226+ then (jY > 0)
22342227 else false)
22352228 then {
2236- let lx = invoke(di, "sendDeliveryReward", [kv], nil)
2237- if ((lx == lx))
2229+ let lA = invoke(dj, "sendDeliveryReward", [ky], nil)
2230+ if ((lA == lA))
22382231 then {
2239- let ly = V(kv)
2240-[IntegerEntry(ly, (valueOrElse(getInteger(ly), 0) + 1)), IntegerEntry(W(kv), (cn / a))]
2232+ let lB = V(ky)
2233+[IntegerEntry(lB, (valueOrElse(getInteger(lB), 0) + 1)), IntegerEntry(W(ky), (co / a))]
22412234 }
22422235 else throw("Strict value is not equal to itself.")
22432236 }
2244- else if (if (if (fM)
2245- then (jV > 0)
2237+ else if (if (if (fN)
2238+ then (jY > 0)
22462239 else false)
2247- then ((cn + aQ) > aA)
2240+ then ((co + aR) > aA)
22482241 else false)
22492242 then throw("Your duck is still on delivery mission")
22502243 else {
2251- let lz = valueOrElse(getInteger(di, bT), 0)
2252- let lA = invoke(di, "updateDeliveryLocked", [(lz - aP)], nil)
2253- if ((lA == lA))
2254- then if (if (if (fM)
2255- then (0 >= jV)
2244+ let lC = valueOrElse(getInteger(dj, bU), 0)
2245+ let lD = invoke(dj, "updateDeliveryLocked", [(lC - aQ)], nil)
2246+ if ((lD == lD))
2247+ then if (if (if (fN)
2248+ then (0 >= jY)
22562249 else false)
22572250 then true
2258- else (0 >= lv))
2251+ else (0 >= ly))
22592252 then nil
2260- else [IntegerEntry(U(B), (cn + cH))]
2253+ else [IntegerEntry(U(B), (co + cI))]
22612254 else throw("Strict value is not equal to itself.")
22622255 }
2263- let lB = getStringValue(L(B))
2264- $Tuple3(lw, [StringEntry(bO(B), lB)], lB)
2265- }
2266-
2267-
2268-func lC (lD,ao,lE,c,lF,lG) = {
2269- let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
2270- if (lq(B))
2256+ let lE = getStringValue(L(B))
2257+ $Tuple3(lz, [StringEntry(bP(B), lE)], lE)
2258+ }
2259+
2260+
2261+func lF (lG,ao,lH,c,lI,lJ) = {
2262+ let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
2263+ if (lt(B))
22712264 then throw("mergeInternal_checkTournament")
2272- else if (lr(B))
2265+ else if (lu(B))
22732266 then throw("mergeInternal_checkDelivery")
22742267 else {
2275- func lH (eU,Q) = {
2276- let ks = value(assetInfo(fromBase58String(Q)))
2277- let kt = bw(Q)
2278- let ku = valueOrErrorMessage(getInteger(kt), (("NFT " + ks.name) + " is not staked"))
2279- let kv = valueOrErrorMessage(getString(bt(Q)), (("NFT " + ks.name) + " is orphaned"))
2280- if ((kv != c))
2268+ func lK (eV,Q) = {
2269+ let kv = value(assetInfo(fromBase58String(Q)))
2270+ let kw = bx(Q)
2271+ let kx = valueOrErrorMessage(getInteger(kw), (("NFT " + kv.name) + " is not staked"))
2272+ let ky = valueOrErrorMessage(getString(bu(Q)), (("NFT " + kv.name) + " is orphaned"))
2273+ if ((ky != c))
22812274 then throw((aF + " is not yours"))
22822275 else {
2283- let kw = split(ks.description, "_")
2284- let dz = kw[dq]
2285- if (if ((eU._3 != ""))
2286- then (eU._3 != dz)
2276+ let kz = split(kv.description, "_")
2277+ let dA = kz[dr]
2278+ if (if ((eV._3 != ""))
2279+ then (eV._3 != dA)
22872280 else false)
22882281 then throw("Lands should be on the same continent to merge")
22892282 else {
2290- let dL = kw[do]
2291- let lI = eU._1
2292- let gN = valueOrErrorMessage(indexOf(lI, dL), "You haven't passed all the lands needed")
2293- let lJ = (take(lI, gN) + drop(lI, (gN + 1)))
2294- let ki = dK(dL)
2295- let lK = (eU._2 + valueOrElse(getInteger(bx(aH, Q)), 0))
2296- let ja = valueOrElse(getInteger(bD(Q)), 0)
2297- let lL = {
2298- let cD = dL
2299- if (("S" == cD))
2283+ let dM = kz[dp]
2284+ let lL = eV._1
2285+ let gO = valueOrErrorMessage(indexOf(lL, dM), "You haven't passed all the lands needed")
2286+ let lM = (take(lL, gO) + drop(lL, (gO + 1)))
2287+ let kl = dL(dM)
2288+ let lN = (eV._2 + valueOrElse(getInteger(by(aH, Q)), 0))
2289+ let jd = valueOrElse(getInteger(bE(Q)), 0)
2290+ let lO = {
2291+ let cE = dM
2292+ if (("S" == cE))
23002293 then 3
2301- else if (("M" == cD))
2294+ else if (("M" == cE))
23022295 then 4
2303- else if (("L" == cD))
2296+ else if (("L" == cE))
23042297 then 5
2305- else if (("XL" == cD))
2298+ else if (("XL" == cE))
23062299 then 6
23072300 else throw("Only S, M, L, XL can merge")
23082301 }
2309- if ((ja != lL))
2302+ if ((jd != lO))
23102303 then throw("All lands should be maxed to merge")
23112304 else {
2312- let ew = kw[dn]
2313- let gJ = gP(kw[dp])
2314- let gT = (lastBlock.timestamp - ku)
2315- if ((0 > gT))
2316- then throw(((("Saved timestamp is in future, saved = " + toString(ku)) + ", current = ") + toString(lastBlock.timestamp)))
2305+ let ex = kz[do]
2306+ let gK = gQ(kz[dq])
2307+ let gU = (lastBlock.timestamp - kx)
2308+ if ((0 > gU))
2309+ then throw(((("Saved timestamp is in future, saved = " + toString(kx)) + ", current = ") + toString(lastBlock.timestamp)))
23172310 else {
2318- let ky = kh(Q, ki)
2319- let iZ = (ki / cL)
2320- let kG = gR(split(eU._4, "_"), gJ, gT, iZ, ky)
2321- let fe = gH(eU._6, gJ, iZ, -1)
2322- let lM = gH(eU._10, gJ, iZ, -1)
2323- let iE = gH(eU._9, gJ, iZ, 1)
2324- let lN = eU._7
2325- let dg = indexOf(lN, Q)
2326- if (!(isDefined(dg)))
2311+ let kB = kk(Q, kl)
2312+ let jc = (kl / cM)
2313+ let kJ = gS(split(eV._4, "_"), gK, gU, jc, kB)
2314+ let ff = gI(eV._6, gK, jc, -1)
2315+ let lP = gI(eV._10, gK, jc, -1)
2316+ let iG = gI(eV._9, gK, jc, 1)
2317+ let lQ = eV._7
2318+ let dh = indexOf(lQ, Q)
2319+ if (!(isDefined(dh)))
23272320 then throw(("Your staked lands don't contain " + Q))
23282321 else {
2329- let lO = bv(Q)
2330- let lP = valueOrElse(getString(lO), "")
2331- $Tuple10(lJ, lK, dz, kG, ((((((((((((eU._5 :+ DeleteEntry(bw(Q))) :+ DeleteEntry(bz(aF, Q, c))) :+ DeleteEntry(ev(ew))) :+ DeleteEntry(bt(Q))) :+ DeleteEntry(bD(Q))) :+ DeleteEntry(ex(Q, c))) :+ DeleteEntry(bx(aH, Q))) :+ DeleteEntry(ey(ew))) :+ DeleteEntry(bC(Q))) :+ DeleteEntry(lO)) :+ Burn(fromBase58String(Q), 1)) ++ (if ((lP != ""))
2332- then [DeleteEntry(et(lP))]
2333- else nil)), fe, removeByIndex(lN, value(dg)), (eU._8 + ki), iE, lM)
2322+ let lR = bw(Q)
2323+ let lS = valueOrElse(getString(lR), "")
2324+ $Tuple10(lM, lN, dA, kJ, ((((((((((((eV._5 :+ DeleteEntry(bx(Q))) :+ DeleteEntry(bA(aF, Q, c))) :+ DeleteEntry(ew(ex))) :+ DeleteEntry(bu(Q))) :+ DeleteEntry(bE(Q))) :+ DeleteEntry(ey(Q, c))) :+ DeleteEntry(by(aH, Q))) :+ DeleteEntry(ez(ex))) :+ DeleteEntry(bD(Q))) :+ DeleteEntry(lR)) :+ Burn(fromBase58String(Q), 1)) ++ (if ((lS != ""))
2325+ then [DeleteEntry(eu(lS))]
2326+ else nil)), ff, removeByIndex(lQ, value(dh)), (eV._8 + kl), iG, lP)
23342327 }
23352328 }
23362329 }
23382331 }
23392332 }
23402333
2341- let iL = bN(B)
2342- let jo = iK(iL)
2343- let gI = split(valueOrElse(getString(dx()), "0_0_0_0_0_0"), "_")
2344- let lQ = dA(c)
2345- let lR = getString(lQ)
2346- let lS = if (isDefined(lR))
2347- then split_51C(value(lR), "_")
2334+ let iO = bO(B)
2335+ let jr = iN(iO)
2336+ let gJ = split(valueOrElse(getString(dy()), "0_0_0_0_0_0"), "_")
2337+ let lT = dB(c)
2338+ let lU = getString(lT)
2339+ let lV = if (isDefined(lU))
2340+ then split_51C(value(lU), "_")
23482341 else nil
2349- let lT = split(value(assetInfo(fromBase58String(lF[0]))).description, "_")[dq]
2350- let lU = split(valueOrElse(getString(dy(lT)), "0_0_0_0_0_0"), "_")
2351- let ff = {
2352- let eW = lF
2353- let eX = size(eW)
2354- let eY = $Tuple10(lE, 0, "", jo[bn], nil, gI, lS, 0, split("0_0_0_0_0_0", "_"), lU)
2355- func eZ (fa,fb) = if ((fb >= eX))
2356- then fa
2357- else lH(fa, eW[fb])
2358-
2359- func fc (fa,fb) = if ((fb >= eX))
2360- then fa
2342+ let lW = split(value(assetInfo(fromBase58String(lI[0]))).description, "_")[dr]
2343+ let lX = split(valueOrElse(getString(dz(lW)), "0_0_0_0_0_0"), "_")
2344+ let fg = {
2345+ let eX = lI
2346+ let eY = size(eX)
2347+ let eZ = $Tuple10(lH, 0, "", jr[bo], nil, gJ, lV, 0, split("0_0_0_0_0_0", "_"), lX)
2348+ func fa (fb,fc) = if ((fc >= eY))
2349+ then fb
2350+ else lK(fb, eX[fc])
2351+
2352+ func fd (fb,fc) = if ((fc >= eY))
2353+ then fb
23612354 else throw("List size exceeds 5")
23622355
2363- fc(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5)
2356+ fd(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5)
23642357 }
2365- let dz = ff._3
2366- let iA = valueOrErrorMessage(indexOf(aU, dz), ("Unknown continent: " + dz))
2367- let gQ = iD(ff._9, (dK(lD) / cL))
2368- let jM = valueOrElse(getInteger(es()), (er + 1))
2369- let lV = toString(jM)
2370- let jN = Issue(eJ(lV, lD), makeString([lV, lD, gQ, dz], "_"), 1, 0, false)
2371- let bu = calculateAssetId(jN)
2372- let lW = toBase58String(bu)
2373- let kS = makeString(fg((lG > 0), split(jo[bo], "_"), lG), "_")
2374- let lX = dB(c)
2375- let lY = valueOrElse(getInteger(lX), 0)
2376- $Tuple2((((((((((((((((ff._5 :+ (if ((size(ff._7) > 0))
2377- then StringEntry(lQ, makeString_11C(ff._7, "_"))
2378- else DeleteEntry(lQ))) :+ IntegerEntry(lX, if ((ff._8 > lY))
2358+ let dA = fg._3
2359+ let iC = valueOrErrorMessage(indexOf(aV, dA), ("Unknown continent: " + dA))
2360+ let gR = iF(fg._9, (dL(lG) / cM))
2361+ let jP = valueOrElse(getInteger(et()), (es + 1))
2362+ let lY = toString(jP)
2363+ let jQ = Issue(eK(lY, lG), makeString([lY, lG, gR, dA], "_"), 1, 0, false)
2364+ let bv = calculateAssetId(jQ)
2365+ let lZ = toBase58String(bv)
2366+ let kV = makeString(fh((lJ > 0), split(jr[bp], "_"), lJ), "_")
2367+ let ma = dC(c)
2368+ let mb = valueOrElse(getInteger(ma), 0)
2369+ $Tuple2((((((((((((((((fg._5 :+ (if ((size(fg._7) > 0))
2370+ then StringEntry(lT, makeString_11C(fg._7, "_"))
2371+ else DeleteEntry(lT))) :+ IntegerEntry(ma, if ((fg._8 > mb))
23792372 then 0
2380- else (lY - ff._8))) :+ IntegerEntry(es(), (jM + 1))) :+ jN) :+ StringEntry(ev(lV), lW)) :+ StringEntry(bt(lW), c)) :+ StringEntry(ey(lV), c)) :+ IntegerEntry(bx(aH, lW), ff._2)) :+ IntegerEntry(bD(lW), ao)) :+ IntegerEntry(ex(lW, c), ao)) :+ StringEntry(iL, makeString([jo[bm], ff._4, kS, jo[bp]], ":"))) :+ StringEntry(dx(), makeString(ff._6, "_"))) :+ StringEntry(dy(dz), makeString(ff._10, "_"))) :+ StringEntry(bO(B), makeString([dz, "L", lW], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bu)), lW)
2373+ else (mb - fg._8))) :+ IntegerEntry(et(), (jP + 1))) :+ jQ) :+ StringEntry(ew(lY), lZ)) :+ StringEntry(bu(lZ), c)) :+ StringEntry(ez(lY), c)) :+ IntegerEntry(by(aH, lZ), fg._2)) :+ IntegerEntry(bE(lZ), ao)) :+ IntegerEntry(ey(lZ, c), ao)) :+ StringEntry(iO, makeString([jr[bn], fg._4, kV, jr[bq]], ":"))) :+ StringEntry(dy(), makeString(fg._6, "_"))) :+ StringEntry(dz(dA), makeString(fg._10, "_"))) :+ StringEntry(bP(B), makeString([dA, "L", lZ], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bv)), lZ)
23812374 }
23822375 }
23832376
23842377
2385-func lZ (c,lF) = lC("M", 3, "SSSS", c, lF, 0)
2386-
2387-
2388-func ma (c,lF) = lC("L", 4, "SMM", c, lF, (cF * 4))
2389-
2390-
2391-func mb (c,lF) = lC("XL", 5, "SSSML", c, lF, (cF * 47))
2392-
2393-
2394-func mc (c,lF) = lC("XXL", 6, "LXL", c, lF, (cF * 54))
2395-
2396-
2397-func md (c,lF) = {
2398- let cD = size(lF)
2399- if ((4 == cD))
2400- then lZ(c, lF)
2401- else if ((3 == cD))
2402- then ma(c, lF)
2403- else if ((5 == cD))
2404- then mb(c, lF)
2405- else if ((2 == cD))
2406- then mc(c, lF)
2378+func mc (c,lI) = lF("M", 3, "SSSS", c, lI, 0)
2379+
2380+
2381+func md (c,lI) = lF("L", 4, "SMM", c, lI, (cG * 4))
2382+
2383+
2384+func me (c,lI) = lF("XL", 5, "SSSML", c, lI, (cG * 47))
2385+
2386+
2387+func mf (c,lI) = lF("XXL", 6, "LXL", c, lI, (cG * 54))
2388+
2389+
2390+func mg (c,lI) = {
2391+ let cE = size(lI)
2392+ if ((4 == cE))
2393+ then mc(c, lI)
2394+ else if ((3 == cE))
2395+ then md(c, lI)
2396+ else if ((5 == cE))
2397+ then me(c, lI)
2398+ else if ((2 == cE))
2399+ then mf(c, lI)
24072400 else throw("Unknown merge")
24082401 }
24092402
24102403
2411-func me (bQ) = {
2412- let mf = getString(bM(bQ))
2413- if (isDefined(mf))
2404+func mh (bR) = {
2405+ let mi = getString(bN(bR))
2406+ if (isDefined(mi))
24142407 then {
2415- let B = value(mf)
2416- let mg = bO(B)
2417- let ck = split(valueOrElse(getString(mg), aM), "_")
2418- let cn = parseIntValue(ck[bq])
2419- if (if ((ck[br] != "D"))
2408+ let B = value(mi)
2409+ let mj = bP(B)
2410+ let cl = split(valueOrElse(getString(mj), aN), "_")
2411+ let co = parseIntValue(cl[br])
2412+ if (if ((cl[bs] != "D"))
24202413 then true
2421- else ((cn + aQ) > lastBlock.timestamp))
2414+ else ((co + aR) > lastBlock.timestamp))
24222415 then nil
24232416 else {
2424- let lu = A(B)
2425- if ((parseIntValue(ck[bs]) > 0))
2417+ let lx = A(B)
2418+ if ((parseIntValue(cl[bt]) > 0))
24262419 then {
2427- let lx = invoke(di, "sendDeliveryReward", [bQ], nil)
2428- if ((lx == lx))
2420+ let lA = invoke(dj, "sendDeliveryReward", [bR], nil)
2421+ if ((lA == lA))
24292422 then nil
24302423 else throw("Strict value is not equal to itself.")
24312424 }
24322425 else (({
2433- let lz = valueOrElse(getInteger(di, bT), 0)
2434- let lA = invoke(di, "updateDeliveryLocked", [(lz - aP)], nil)
2435- if ((lA == lA))
2436- then if ((0 >= getIntegerValue(lu)))
2426+ let lC = valueOrElse(getInteger(dj, bU), 0)
2427+ let lD = invoke(dj, "updateDeliveryLocked", [(lC - aQ)], nil)
2428+ if ((lD == lD))
2429+ then if ((0 >= getIntegerValue(lx)))
24372430 then nil
24382431 else {
2439- let mh = invoke(this, "saveInteger", [U(B), (cn + cH)], nil)
2440- if ((mh == mh))
2432+ let mk = invoke(this, "saveInteger", [U(B), (co + cI)], nil)
2433+ if ((mk == mk))
24412434 then nil
24422435 else throw("Strict value is not equal to itself.")
24432436 }
24442437 else throw("Strict value is not equal to itself.")
2445- } :+ IntegerEntry(lu, getIntegerValue(K(B)))) :+ StringEntry(mg, getStringValue(L(B))))
2438+ } :+ IntegerEntry(lx, getIntegerValue(K(B)))) :+ StringEntry(mj, getStringValue(L(B))))
24462439 }
24472440 }
24482441 else nil
24492442 }
24502443
24512444
2452-func mi (gN) = if (if ((gN.originCaller != dh))
2453- then valueOrElse(getBoolean(dN()), false)
2445+func ml (gO) = if (if ((gO.originCaller != di))
2446+ then valueOrElse(getBoolean(dO()), false)
24542447 else false)
24552448 then throw("Contracts are under maintenance")
24562449 else {
2457- let bQ = toString(gN.originCaller)
2458- (me(bQ) :+ StringEntry(dO(bQ), toBase58String(gN.transactionId)))
2450+ let bR = toString(gO.originCaller)
2451+ (mh(bR) :+ StringEntry(dP(bR), toBase58String(gO.transactionId)))
24592452 }
24602453
24612454
2462-func mj (gN) = if (if ((gN.originCaller != dh))
2463- then valueOrElse(getBoolean(dN()), false)
2455+func mm (gO) = if (if ((gO.originCaller != di))
2456+ then valueOrElse(getBoolean(dO()), false)
24642457 else false)
24652458 then throw("Contracts are under maintenance")
2466- else [StringEntry(dO(toString(gN.originCaller)), toBase58String(gN.transactionId))]
2467-
2468-
2469-@Callable(gN)
2470-func constructorV1 (mk) = if ((gN.caller != this))
2459+ else [StringEntry(dP(toString(gO.originCaller)), toBase58String(gO.transactionId))]
2460+
2461+
2462+@Callable(gO)
2463+func constructorV1 (mn) = if ((gO.caller != this))
24712464 then throw("Permission denied")
2472- else [StringEntry(db(), mk)]
2473-
2474-
2475-
2476-@Callable(gN)
2477-func saveInteger (cT,eL) = if ((gN.caller != this))
2465+ else [StringEntry(dc(), mn)]
2466+
2467+
2468+
2469+@Callable(gO)
2470+func saveInteger (cU,eM) = if ((gO.caller != this))
24782471 then throw("saveInteger is not public method")
2479- else [IntegerEntry(cT, eL)]
2480-
2481-
2482-
2483-@Callable(gN)
2484-func setBlocked (ml) = if ((gN.caller != this))
2472+ else [IntegerEntry(cU, eM)]
2473+
2474+
2475+
2476+@Callable(gO)
2477+func setBlocked (mo) = if ((gO.caller != this))
24852478 then throw("permission denied")
2486- else [BooleanEntry(dN(), ml)]
2487-
2488-
2489-
2490-@Callable(gN)
2479+ else [BooleanEntry(dO(), mo)]
2480+
2481+
2482+
2483+@Callable(gO)
24912484 func stakeLand () = {
2492- let mm = mi(gN)
2493- if ((size(gN.payments) != 1))
2485+ let mp = ml(gO)
2486+ if ((size(gO.payments) != 1))
24942487 then throw("Exactly one payment required")
24952488 else {
2496- let mn = value(gN.payments[0])
2497- let bu = value(mn.assetId)
2498- let cS = toString(gN.caller)
2499- if ((mn.amount != 1))
2489+ let mq = value(gO.payments[0])
2490+ let bv = value(mq.assetId)
2491+ let cT = toString(gO.caller)
2492+ if ((mq.amount != 1))
25002493 then throw((("NFT " + aF) + " token should be attached as payment"))
25012494 else {
2502- let ks = value(assetInfo(bu))
2503- if ((ks.issuer != this))
2495+ let kv = value(assetInfo(bv))
2496+ if ((kv.issuer != this))
25042497 then throw("Unknown issuer of token")
2505- else if (!(contains(ks.name, aF)))
2498+ else if (!(contains(kv.name, aF)))
25062499 then throw((("Only NFT " + aF) + " tokens are accepted"))
25072500 else {
2508- let mo = drop(ks.name, 4)
2509- let ew = if (contains(mo, "XXL"))
2510- then dropRight(mo, 3)
2511- else if (contains(mo, "XL"))
2512- then dropRight(mo, 2)
2513- else dropRight(mo, 1)
2514- if (!(isDefined(parseInt(ew))))
2515- then throw(("Cannot parse land number from " + ks.name))
2501+ let mr = drop(kv.name, 4)
2502+ let ex = if (contains(mr, "XXL"))
2503+ then dropRight(mr, 3)
2504+ else if (contains(mr, "XL"))
2505+ then dropRight(mr, 2)
2506+ else dropRight(mr, 1)
2507+ if (!(isDefined(parseInt(ex))))
2508+ then throw(("Cannot parse land number from " + kv.name))
25162509 else {
2517- let Q = toBase58String(bu)
2518- let kt = bw(Q)
2519- if (isDefined(getInteger(kt)))
2520- then throw((("NFT " + ks.name) + " is already staked"))
2510+ let Q = toBase58String(bv)
2511+ let kw = bx(Q)
2512+ if (isDefined(getInteger(kw)))
2513+ then throw((("NFT " + kv.name) + " is already staked"))
25212514 else {
2522- let kw = split(ks.description, "_")
2523- let gJ = gP(kw[dp])
2524- let ki = dK(kw[do])
2525- let iZ = (ki / cL)
2526- let fe = gO(gJ, iZ, 1)
2527- let mp = dy(kw[dq])
2528- let lU = split(valueOrElse(getString(mp), "0_0_0_0_0_0"), "_")
2529- let mq = makeString(gH(lU, gJ, iZ, 1), "_")
2530- let lQ = dA(cS)
2531- let lR = getString(lQ)
2532- let lN = if (isDefined(lR))
2533- then split_51C(value(lR), "_")
2515+ let kz = split(kv.description, "_")
2516+ let gK = gQ(kz[dq])
2517+ let kl = dL(kz[dp])
2518+ let jc = (kl / cM)
2519+ let ff = gP(gK, jc, 1)
2520+ let ms = dz(kz[dr])
2521+ let lX = split(valueOrElse(getString(ms), "0_0_0_0_0_0"), "_")
2522+ let mt = makeString(gI(lX, gK, jc, 1), "_")
2523+ let lT = dB(cT)
2524+ let lU = getString(lT)
2525+ let lQ = if (isDefined(lU))
2526+ then split_51C(value(lU), "_")
25342527 else nil
2535- if (containsElement(lN, Q))
2528+ if (containsElement(lQ, Q))
25362529 then throw(("Your staked lands already contain " + Q))
2537- else if ((size(lN) >= aJ))
2538- then throw((("Your already staked max (" + toString(aJ)) + ") lands"))
2530+ else if ((size(lQ) >= aK))
2531+ then throw((("Your already staked max (" + toString(aK)) + ") lands"))
25392532 else {
2540- let ja = valueOrElse(getInteger(bD(Q)), 0)
2541- let lX = dB(cS)
2542- let mr = valueOrElse(getInteger(lX), 0)
2543- let ms = invoke(dk, "onStakeUnstakeLand", [cS], nil)
2544- $Tuple2(([IntegerEntry(kt, lastBlock.timestamp), IntegerEntry(bz(aF, Q, cS), lastBlock.timestamp), StringEntry(lQ, makeString_11C((lN :+ Q), "_")), IntegerEntry(lX, (mr + ki)), StringEntry(bt(Q), cS), StringEntry(ey(ew), cS), IntegerEntry(ex(Q, cS), ja), StringEntry(dx(), fe), StringEntry(mp, mq)] ++ mm), ms)
2533+ let jd = valueOrElse(getInteger(bE(Q)), 0)
2534+ let ma = dC(cT)
2535+ let mu = valueOrElse(getInteger(ma), 0)
2536+ let mv = invoke(dl, "onStakeUnstakeLand", [cT], nil)
2537+ $Tuple2(([IntegerEntry(kw, lastBlock.timestamp), IntegerEntry(bA(aF, Q, cT), lastBlock.timestamp), StringEntry(lT, makeString_11C((lQ :+ Q), "_")), IntegerEntry(ma, (mu + kl)), StringEntry(bu(Q), cT), StringEntry(ez(ex), cT), IntegerEntry(ey(Q, cT), jd), StringEntry(dy(), ff), StringEntry(ms, mt)] ++ mp), mv)
25452538 }
25462539 }
25472540 }
25522545
25532546
25542547
2555-@Callable(gN)
2556-func unstakeLand (ko) = {
2557- let mm = mi(gN)
2558- if ((size(gN.payments) != 0))
2548+@Callable(gO)
2549+func unstakeLand (kr) = {
2550+ let mp = ml(gO)
2551+ if ((size(gO.payments) != 0))
25592552 then throw("No payments required")
25602553 else {
2561- let c = toString(gN.caller)
2562- let gd = km(c, eD, ko)
2563- let Q = gd._2
2564- let kw = gd._3
2565- let lQ = dA(c)
2566- let gJ = gP(kw[dp])
2567- let ki = dK(kw[do])
2568- let iZ = (ki / cL)
2569- let fe = gO(gJ, iZ, -1)
2570- let mp = dy(kw[dq])
2571- let lU = split(valueOrElse(getString(mp), "0_0_0_0_0_0"), "_")
2572- let mq = makeString(gH(lU, gJ, iZ, -1), "_")
2573- let kT = kJ(c, Q, ki, eD)
2574- let lN = split_51C(valueOrElse(getString(lQ), ""), "_")
2575- let dg = indexOf(lN, Q)
2576- if (!(isDefined(dg)))
2554+ let c = toString(gO.caller)
2555+ let ge = kp(c, eE, kr)
2556+ let Q = ge._2
2557+ let kz = ge._3
2558+ let lT = dB(c)
2559+ let gK = gQ(kz[dq])
2560+ let kl = dL(kz[dp])
2561+ let jc = (kl / cM)
2562+ let ff = gP(gK, jc, -1)
2563+ let ms = dz(kz[dr])
2564+ let lX = split(valueOrElse(getString(ms), "0_0_0_0_0_0"), "_")
2565+ let mt = makeString(gI(lX, gK, jc, -1), "_")
2566+ let kW = kM(c, Q, kl, eE)
2567+ let lQ = split_51C(valueOrElse(getString(lT), ""), "_")
2568+ let dh = indexOf(lQ, Q)
2569+ if (!(isDefined(dh)))
25772570 then throw(("Your staked lands don't contain " + Q))
25782571 else {
25792572 let aA = lastBlock.timestamp
2580- let mt = valueOrElse(getInteger(dj, bP(c)), 0)
2581- if ((mt >= aA))
2582- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(mt)))
2573+ let mw = valueOrElse(getInteger(dk, bQ(c)), 0)
2574+ if ((mw >= aA))
2575+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(mw)))
25832576 else {
2584- let mu = (valueOrElse(getInteger(dk, b(c)), 0) + cG)
2585- if ((mu > aA))
2586- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(mu)))
2577+ let mx = (valueOrElse(getInteger(dl, b(c)), 0) + cH)
2578+ if ((mx > aA))
2579+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(mx)))
25872580 else {
2588- let lX = dB(c)
2589- let lY = valueOrElse(getInteger(lX), 0)
2590- let mv = if ((ki > lY))
2581+ let ma = dC(c)
2582+ let mb = valueOrElse(getInteger(ma), 0)
2583+ let my = if ((kl > mb))
25912584 then 0
2592- else (lY - ki)
2593- let ms = invoke(dk, "onStakeUnstakeLand", [c], nil)
2594- $Tuple2(([ScriptTransfer(gN.caller, 1, fromBase58String(Q)), DeleteEntry(bw(Q)), DeleteEntry(bz(aF, Q, c)), StringEntry(dx(), fe), StringEntry(mp, mq), StringEntry(kT._2, makeString(kT._3, ":")), if ((size(lN) > 1))
2595- then StringEntry(lQ, makeString_11C(removeByIndex(lN, value(dg)), "_"))
2596- else DeleteEntry(lQ), IntegerEntry(lX, mv)] ++ mm), ms)
2585+ else (mb - kl)
2586+ let mv = invoke(dl, "onStakeUnstakeLand", [c], nil)
2587+ $Tuple2(([ScriptTransfer(gO.caller, 1, fromBase58String(Q)), DeleteEntry(bx(Q)), DeleteEntry(bA(aF, Q, c)), StringEntry(dy(), ff), StringEntry(ms, mt), StringEntry(kW._2, makeString(kW._3, ":")), if ((size(lQ) > 1))
2588+ then StringEntry(lT, makeString_11C(removeByIndex(lQ, value(dh)), "_"))
2589+ else DeleteEntry(lT), IntegerEntry(ma, my)] ++ mp), mv)
25972590 }
25982591 }
25992592 }
26022595
26032596
26042597
2605-@Callable(gN)
2598+@Callable(gO)
26062599 func stakeDuck () = {
2607- let mm = mi(gN)
2608- if ((size(gN.payments) != 1))
2600+ let mp = ml(gO)
2601+ if ((size(gO.payments) != 1))
26092602 then throw("Exactly one payment required")
26102603 else {
2611- let mn = value(gN.payments[0])
2612- let bu = value(mn.assetId)
2613- let cS = toString(gN.caller)
2614- if ((mn.amount != 1))
2604+ let mq = value(gO.payments[0])
2605+ let bv = value(mq.assetId)
2606+ let cT = toString(gO.caller)
2607+ if ((mq.amount != 1))
26152608 then throw((("NFT " + aG) + " token should be attached as payment"))
26162609 else {
2617- let ks = value(assetInfo(bu))
2618- if (if ((ks.issuer != ea))
2619- then (ks.issuer != eb)
2610+ let kv = value(assetInfo(bv))
2611+ if (if ((kv.issuer != eb))
2612+ then (kv.issuer != ec)
26202613 else false)
26212614 then throw((("Unknown issuer of " + aG) + " token"))
2622- else if (!(contains(ks.name, aG)))
2615+ else if (!(contains(kv.name, aG)))
26232616 then throw((("Only NFT " + aG) + " tokens are accepted"))
26242617 else {
2625- let mw = toBase58String(bu)
2626- let kt = bw(mw)
2627- if (isDefined(getInteger(kt)))
2628- then throw((("NFT " + ks.name) + " is already staked"))
2629- else if (isDefined(getString(bM(cS))))
2630- then throw(("You already staked one duck: " + ks.name))
2618+ let mz = toBase58String(bv)
2619+ let kw = bx(mz)
2620+ if (isDefined(getInteger(kw)))
2621+ then throw((("NFT " + kv.name) + " is already staked"))
2622+ else if (isDefined(getString(bN(cT))))
2623+ then throw(("You already staked one duck: " + kv.name))
26312624 else {
2632- let mg = bO(mw)
2633- let ci = getString(mg)
2634- let iL = bN(mw)
2635- let mx = getString(iL)
2636- let kb = A(mw)
2637- let kc = aj(valueOrElse(getInteger(E(mw)), 0))
2638- let lv = valueOrElse(getInteger(kb), kc)
2639- ([IntegerEntry(kt, lastBlock.timestamp), IntegerEntry(bz(aG, toBase58String(bu), cS), lastBlock.timestamp), StringEntry(bL(mw), cS), StringEntry(bM(cS), mw)] ++ (if (isDefined(ci))
2625+ let mj = bP(mz)
2626+ let cj = getString(mj)
2627+ let iO = bO(mz)
2628+ let mA = getString(iO)
2629+ let ke = A(mz)
2630+ let kf = aj(valueOrElse(getInteger(E(mz)), 0))
2631+ let ly = valueOrElse(getInteger(ke), kf)
2632+ ([IntegerEntry(kw, lastBlock.timestamp), IntegerEntry(bA(aG, toBase58String(bv), cT), lastBlock.timestamp), StringEntry(bM(mz), cT), StringEntry(bN(cT), mz)] ++ (if (isDefined(cj))
26402633 then nil
2641- else ([StringEntry(mg, aM)] ++ (if (isDefined(mx))
2634+ else ([StringEntry(mj, aN)] ++ (if (isDefined(mA))
26422635 then nil
2643- else (([StringEntry(iL, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(kb, lv)) ++ mm)))))
2636+ else (([StringEntry(iO, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(ke, ly)) ++ mp)))))
26442637 }
26452638 }
26462639 }
26492642
26502643
26512644
2652-@Callable(gN)
2653-func unstakeDuck (mw) = {
2654- let mm = mi(gN)
2655- if ((size(gN.payments) != 0))
2645+@Callable(gO)
2646+func unstakeDuck (mz) = {
2647+ let mp = ml(gO)
2648+ if ((size(gO.payments) != 0))
26562649 then throw("No payments required")
26572650 else {
2658- let bu = fromBase58String(mw)
2659- let cS = toString(gN.caller)
2660- let ks = value(assetInfo(bu))
2661- let kt = bw(mw)
2662- if (!(isDefined(getInteger(kt))))
2663- then throw((("NFT " + ks.name) + " is not staked"))
2664- else if (!(isDefined(getString(bM(cS)))))
2665- then throw((("The duck " + ks.name) + " is not staked"))
2651+ let bv = fromBase58String(mz)
2652+ let cT = toString(gO.caller)
2653+ let kv = value(assetInfo(bv))
2654+ let kw = bx(mz)
2655+ if (!(isDefined(getInteger(kw))))
2656+ then throw((("NFT " + kv.name) + " is not staked"))
2657+ else if (!(isDefined(getString(bN(cT)))))
2658+ then throw((("The duck " + kv.name) + " is not staked"))
26662659 else {
2667- let kv = valueOrErrorMessage(getString(bL(mw)), (("NFT " + ks.name) + " is orphaned"))
2668- if ((kv != cS))
2660+ let ky = valueOrErrorMessage(getString(bM(mz)), (("NFT " + kv.name) + " is orphaned"))
2661+ if ((ky != cT))
26692662 then throw("Staked NFT is not yours")
2670- else if (lq(mw))
2663+ else if (lt(mz))
26712664 then throw("unstakeDuck_checkTournament")
2672- else if (lr(mw))
2665+ else if (lu(mz))
26732666 then throw("unstakeDuck_checkDelivery")
26742667 else {
2675- let kb = A(mw)
2676- let kc = aj(valueOrElse(getInteger(E(mw)), 0))
2677- let av = valueOrElse(getInteger(kb), kc)
2678- if ((kc > av))
2679- then throw((("Please heal your duck to " + toString(kc)) + "hp before unstaking"))
2680- else ([ScriptTransfer(gN.caller, 1, bu), DeleteEntry(kt), DeleteEntry(kb), DeleteEntry(bO(mw)), DeleteEntry(bL(mw)), DeleteEntry(bz(aG, mw, cS)), DeleteEntry(bM(cS))] ++ mm)
2668+ let ke = A(mz)
2669+ let kf = aj(valueOrElse(getInteger(E(mz)), 0))
2670+ let av = valueOrElse(getInteger(ke), kf)
2671+ if ((kf > av))
2672+ then throw((("Please heal your duck to " + toString(kf)) + "hp before unstaking"))
2673+ else ([ScriptTransfer(gO.caller, 1, bv), DeleteEntry(kw), DeleteEntry(ke), DeleteEntry(bP(mz)), DeleteEntry(bM(mz)), DeleteEntry(bA(aG, mz, cT)), DeleteEntry(bN(cT))] ++ mp)
26812674 }
26822675 }
26832676 }
26852678
26862679
26872680
2688-@Callable(gN)
2689-func claimRes (eL,my) = {
2690- let mm = mi(gN)
2691- if ((size(gN.payments) != 0))
2681+@Callable(gO)
2682+func claimRes (eM,mB) = {
2683+ let mp = ml(gO)
2684+ if ((size(gO.payments) != 0))
26922685 then throw("No payments required")
26932686 else {
2694- let c = toString(gN.originCaller)
2695- let fm = kx(c, eL, eD, my)
2696- let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
2697- $Tuple2(((((fm._1 ++ lf(B, fraction(X, eL, cK))._1) :+ StringEntry(fm._2, makeString(fm._3, ":"))) :+ StringEntry(fm._4, makeString(fm._5, ":"))) ++ mm), fm._3[bn])
2698- }
2699- }
2700-
2701-
2702-
2703-@Callable(gN)
2704-func claimResToWH (eL,my) = {
2705- let mm = mi(gN)
2706- if ((size(gN.payments) != 0))
2687+ let c = toString(gO.originCaller)
2688+ let fn = kA(c, eM, eE, mB)
2689+ let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
2690+ $Tuple2(((((fn._1 ++ li(B, fraction(X, eM, cL))._1) :+ StringEntry(fn._2, makeString(fn._3, ":"))) :+ StringEntry(fn._4, makeString(fn._5, ":"))) ++ mp), fn._3[bo])
2691+ }
2692+ }
2693+
2694+
2695+
2696+@Callable(gO)
2697+func claimResToWH (eM,mB) = {
2698+ let mp = ml(gO)
2699+ if ((size(gO.payments) != 0))
27072700 then throw("No payments required")
27082701 else {
2709- let c = toString(gN.originCaller)
2710- let fm = kx(c, eL, eC, my)
2711- $Tuple2(((((fm._1 ++ lg(c, fraction(X, eL, cK))._1) :+ StringEntry(fm._2, makeString(fm._3, ":"))) :+ StringEntry(fm._4, makeString(fm._5, ":"))) ++ mm), fm._5[be])
2712- }
2713- }
2714-
2715-
2716-
2717-@Callable(gN)
2718-func flight (jQ,jR) = {
2719- let mm = mj(gN)
2720- if ((size(gN.payments) != 0))
2702+ let c = toString(gO.originCaller)
2703+ let fn = kA(c, eM, eD, mB)
2704+ $Tuple2(((((fn._1 ++ lj(c, fraction(X, eM, cL))._1) :+ StringEntry(fn._2, makeString(fn._3, ":"))) :+ StringEntry(fn._4, makeString(fn._5, ":"))) ++ mp), fn._5[bf])
2705+ }
2706+ }
2707+
2708+
2709+
2710+@Callable(gO)
2711+func flight (jT,jU) = {
2712+ let mp = mm(gO)
2713+ if ((size(gO.payments) != 0))
27212714 then throw("No payments required")
27222715 else {
2723- let bQ = toString(gN.caller)
2724- let iB = jP(bQ, jQ, jR)
2725- let jV = iB._1
2726- let B = iB._2
2727- let mg = bO(B)
2728- let kq = valueOrElse(getString(mg), aM)
2729- let jX = iB._4
2730- if ((jX == kq))
2716+ let bR = toString(gO.caller)
2717+ let iD = jS(bR, jT, jU)
2718+ let jY = iD._1
2719+ let B = iD._2
2720+ let mj = bP(B)
2721+ let kt = valueOrElse(getString(mj), aN)
2722+ let ka = iD._4
2723+ if ((ka == kt))
27312724 then throw("You can't fly to the same location")
27322725 else {
2733- let cw = split(jX, "_")
2734- let mz = (cw[br] == "T")
2735- let mA = (cw[br] == "D")
2736- let gA = G(B)
2737- let mB = valueOrElse(getString(gA), ",;,_,;,_,;,_,;,_,;,_,;,")
2738- let mC = fn(mB, iB._5)
2739- let mD = mC._1
2740- let mE = mC._2
2741- let mF = if (!(cr(dl, kq)))
2742- then if (!(cp(jX)))
2743- then cu(kq, jX, 5)
2744- else if ((jV > 0))
2745- then $Tuple2(jX, jV)
2746- else $Tuple2(kq, 0)
2747- else if (ch(dl, kq))
2748- then if (!(ch(dl, jX)))
2726+ let cx = split(ka, "_")
2727+ let mC = (cx[bs] == "T")
2728+ let mD = (cx[bs] == "D")
2729+ let gB = G(B)
2730+ let mE = valueOrElse(getString(gB), ",;,_,;,_,;,_,;,_,;,_,;,")
2731+ let mF = fo(mE, iD._5)
2732+ let mG = mF._1
2733+ let mH = mF._2
2734+ let mI = if (!(cs(dm, kt)))
2735+ then if (!(cq(ka)))
2736+ then cv(kt, ka, 5)
2737+ else if ((jY > 0))
2738+ then $Tuple2(ka, jY)
2739+ else $Tuple2(kt, 0)
2740+ else if (ci(dm, kt))
2741+ then if (!(ci(dm, ka)))
27492742 then throw("Your duck is taking part in the tournament")
27502743 else {
2751- let lt = parseIntValue(cw[bs])
2752- let mG = split(kq, "_")
2753- let cj = valueOrElse(getInteger(dl, bU), 0)
2754- if ((lt != (parseIntValue(mG[bs]) + 1)))
2755- then cu(kq, jX, 7)
2756- else if ((jV > 0))
2744+ let lw = parseIntValue(cx[bt])
2745+ let mJ = split(kt, "_")
2746+ let ck = valueOrElse(getInteger(dm, bV), 0)
2747+ if ((lw != (parseIntValue(mJ[bt]) + 1)))
2748+ then cv(kt, ka, 7)
2749+ else if ((jY > 0))
27572750 then {
2758- let mH = valueOrElse(getInteger(dl, bY(cj, B)), 0)
2759- let mI = if ((lt > mH))
2760- then invoke(dl, "saveDuckResult", [B, lt], nil)
2751+ let mK = valueOrElse(getInteger(dm, bZ(ck, B)), 0)
2752+ let mL = if ((lw > mK))
2753+ then invoke(dm, "saveDuckResult", [B, lw], nil)
27612754 else unit
2762- if ((mI == mI))
2763- then $Tuple2(jX, jV)
2755+ if ((mL == mL))
2756+ then $Tuple2(ka, jY)
27642757 else throw("Strict value is not equal to itself.")
27652758 }
2766- else $Tuple2(kq, 0)
2759+ else $Tuple2(kt, 0)
27672760 }
2768- else if (!(cm(kq)))
2761+ else if (!(cn(kt)))
27692762 then {
2770- let mJ = dC(invoke(this, "autoExitDelivery", [B, jV, if (mA)
2763+ let mM = dD(invoke(this, "autoExitDelivery", [B, jY, if (mD)
27712764 then "10"
27722765 else "11", 0], nil))
2773- if ((mJ == mJ))
2774- then if (mA)
2775- then $Tuple2(mJ, jV)
2776- else if ((jV > 0))
2777- then $Tuple2(jX, jV)
2778- else $Tuple2(mJ, 0)
2766+ if ((mM == mM))
2767+ then if (mD)
2768+ then $Tuple2(mM, jY)
2769+ else if ((jY > 0))
2770+ then $Tuple2(ka, jY)
2771+ else $Tuple2(mM, 0)
27792772 else throw("Strict value is not equal to itself.")
27802773 }
2781- else if (!(mA))
2774+ else if (!(mD))
27822775 then throw("Your duck is taking part in delivery")
2783- else if (!(cm(jX)))
2784- then cu(kq, jX, 13)
2776+ else if (!(cn(ka)))
2777+ then cv(kt, ka, 13)
27852778 else {
2786- let lt = parseIntValue(cw[bs])
2787- let mG = split(kq, "_")
2788- if ((lt != (parseIntValue(mG[bs]) + 1)))
2789- then cu(kq, jX, 14)
2790- else if (if ((jV > 0))
2791- then (1 > lt)
2779+ let lw = parseIntValue(cx[bt])
2780+ let mJ = split(kt, "_")
2781+ if ((lw != (parseIntValue(mJ[bt]) + 1)))
2782+ then cv(kt, ka, 14)
2783+ else if (if ((jY > 0))
2784+ then (1 > lw)
27922785 else false)
2793- then $Tuple2(jX, jV)
2786+ then $Tuple2(ka, jY)
27942787 else {
2795- let mJ = dC(invoke(this, "autoExitDelivery", [B, jV, "15-17", lt], nil))
2796- if ((mJ == mJ))
2797- then $Tuple2(mJ, jV)
2788+ let mM = dD(invoke(this, "autoExitDelivery", [B, jY, "15-17", lw], nil))
2789+ if ((mM == mM))
2790+ then $Tuple2(mM, jY)
27982791 else throw("Strict value is not equal to itself.")
27992792 }
28002793 }
2801- let mK = mF._1
2802- let mL = mF._2
2803- $Tuple2(((([StringEntry(mg, mK), StringEntry(gA, mD), IntegerEntry(A(B), mL)] ++ mm) ++ (if (mE)
2794+ let mN = mI._1
2795+ let mO = mI._2
2796+ $Tuple2(((([StringEntry(mj, mN), StringEntry(gB, mG), IntegerEntry(A(B), mO)] ++ mp) ++ (if (mH)
28042797 then [StringEntry(M(B), "0_0_0_0_0")]
2805- else nil)) ++ lf(B, if ((jV > 0))
2798+ else nil)) ++ li(B, if ((jY > 0))
28062799 then Y
2807- else Z)._1), iB._3)
2800+ else Z)._1), iD._3)
28082801 }
28092802 }
28102803 }
28112804
28122805
28132806
2814-@Callable(gN)
2815-func heal (mM,mN,mO) = {
2816- let mm = mi(gN)
2817- if (if (if ((0 > mM))
2807+@Callable(gO)
2808+func heal (mP,mQ,mR) = {
2809+ let mp = ml(gO)
2810+ if (if (if ((0 > mP))
28182811 then true
2819- else (0 > mN))
2812+ else (0 > mQ))
28202813 then true
2821- else (0 > mO))
2814+ else (0 > mR))
28222815 then throw("Quantity cannot be negative")
28232816 else {
2824- let B = valueOrErrorMessage(getString(bM(toString(gN.caller))), "You don't have a duck staked")
2825- if (lq(B))
2817+ let B = valueOrErrorMessage(getString(bN(toString(gO.caller))), "You don't have a duck staked")
2818+ if (lt(B))
28262819 then throw("heal_checkTournament")
2827- else if (lr(B))
2820+ else if (lu(B))
28282821 then throw("heal_checkDelivery")
28292822 else {
2830- let mP = [mM, mN, mO]
2831- let kb = A(B)
2832- let kc = aj(valueOrElse(getInteger(E(B)), 0))
2833- let mQ = valueOrElse(getInteger(kb), kc)
2834- if ((mQ >= kc))
2835- then throw((("HP should be < " + toString(kc)) + " to heal"))
2823+ let mS = [mP, mQ, mR]
2824+ let ke = A(B)
2825+ let kf = aj(valueOrElse(getInteger(E(B)), 0))
2826+ let mT = valueOrElse(getInteger(ke), kf)
2827+ if ((mT >= kf))
2828+ then throw((("HP should be < " + toString(kf)) + " to heal"))
28362829 else {
2837- let iL = bN(B)
2838- let jo = iK(iL)
2839- let mR = if ((jo[bp] == ""))
2830+ let iO = bO(B)
2831+ let jr = iN(iO)
2832+ let mU = if ((jr[bq] == ""))
28402833 then nil
2841- else split_4C(jo[bp], "_")
2842- func mS (eU,ct) = {
2843- let dG = eU._2
2844- let hj = if ((size(mR) > dG))
2845- then parseIntValue(mR[dG])
2834+ else split_4C(jr[bq], "_")
2835+ func mV (eV,cu) = {
2836+ let dH = eV._2
2837+ let hk = if ((size(mU) > dH))
2838+ then parseIntValue(mU[dH])
28462839 else 0
2847- if ((3 > dG))
2840+ if ((3 > dH))
28482841 then {
2849- let mT = mP[dG]
2850- if ((mT > hj))
2851- then throw(((("You have only " + toString(hj)) + " of ") + aT[dG]))
2852- else $Tuple3((eU._1 :+ toString((hj - mT))), (dG + 1), (eU._3 + (parseIntValue(split(ct, "_")[aZ]) * mT)))
2842+ let mW = mS[dH]
2843+ if ((mW > hk))
2844+ then throw(((("You have only " + toString(hk)) + " of ") + aU[dH]))
2845+ else $Tuple3((eV._1 :+ toString((hk - mW))), (dH + 1), (eV._3 + (parseIntValue(split(cu, "_")[ba]) * mW)))
28532846 }
2854- else $Tuple3((eU._1 :+ toString(hj)), (dG + 1), eU._3)
2847+ else $Tuple3((eV._1 :+ toString(hk)), (dH + 1), eV._3)
28552848 }
28562849
2857- let fm = {
2858- let eW = aX
2859- let eX = size(eW)
2860- let eY = $Tuple3(nil, 0, 0)
2861- func eZ (fa,fb) = if ((fb >= eX))
2862- then fa
2863- else mS(fa, eW[fb])
2864-
2865- func fc (fa,fb) = if ((fb >= eX))
2866- then fa
2850+ let fn = {
2851+ let eX = aY
2852+ let eY = size(eX)
2853+ let eZ = $Tuple3(nil, 0, 0)
2854+ func fa (fb,fc) = if ((fc >= eY))
2855+ then fb
2856+ else mV(fb, eX[fc])
2857+
2858+ func fd (fb,fc) = if ((fc >= eY))
2859+ then fb
28672860 else throw("List size exceeds 50")
28682861
2869- fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 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)
2862+ fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 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)
28702863 }
2871- let mU = min([kc, (mQ + fm._3)])
2872- $Tuple2((([IntegerEntry(kb, mU), StringEntry(iL, makeString_2C([jo[bm], jo[bn], jo[bo], makeString(fm._1, "_")], ":"))] ++ mm) ++ lf(B, (ag * ((mM + mN) + mO)))._1), mU)
2864+ let mX = min([kf, (mT + fn._3)])
2865+ $Tuple2((([IntegerEntry(ke, mX), StringEntry(iO, makeString_2C([jr[bn], jr[bo], jr[bp], makeString(fn._1, "_")], ":"))] ++ mp) ++ li(B, (ag * ((mP + mQ) + mR)))._1), mX)
28732866 }
28742867 }
28752868 }
28772870
28782871
28792872
2880-@Callable(gN)
2873+@Callable(gO)
28812874 func healES () = {
2882- let mm = mi(gN)
2883- if ((size(gN.payments) != 1))
2875+ let mp = ml(gO)
2876+ if ((size(gO.payments) != 1))
28842877 then throw("Exactly one payment required")
28852878 else {
2886- let mn = value(gN.payments[0])
2887- if ((mn.assetId != cC))
2879+ let mq = value(gO.payments[0])
2880+ if ((mq.assetId != cD))
28882881 then throw("Allowed USDT payment only!")
28892882 else {
2890- let B = valueOrErrorMessage(getString(bM(toString(gN.caller))), "You don't have a duck staked")
2891- if (lq(B))
2883+ let B = valueOrErrorMessage(getString(bN(toString(gO.caller))), "You don't have a duck staked")
2884+ if (lt(B))
28922885 then throw("healES_checkTournament")
2893- else if (lr(B))
2886+ else if (lu(B))
28942887 then throw("healES_checkDelivery")
28952888 else {
2896- let kb = A(B)
2897- let kc = aj(valueOrElse(getInteger(E(B)), 0))
2898- let mQ = valueOrElse(getInteger(kb), kc)
2899- if ((mQ > 0))
2889+ let ke = A(B)
2890+ let kf = aj(valueOrElse(getInteger(E(B)), 0))
2891+ let mT = valueOrElse(getInteger(ke), kf)
2892+ if ((mT > 0))
29002893 then throw("HP should be 0 to call Emergency Service")
29012894 else {
2902- let iL = bN(B)
2903- let jo = iK(iL)
2904- let mR = if ((jo[bp] == ""))
2895+ let iO = bO(B)
2896+ let jr = iN(iO)
2897+ let mU = if ((jr[bq] == ""))
29052898 then nil
2906- else split_4C(jo[bp], "_")
2907- let mV = if ((size(mR) > 0))
2908- then parseIntValue(mR[0])
2899+ else split_4C(jr[bq], "_")
2900+ let mY = if ((size(mU) > 0))
2901+ then parseIntValue(mU[0])
29092902 else 0
2910- let mW = if ((size(mR) > 1))
2911- then parseIntValue(mR[1])
2903+ let mZ = if ((size(mU) > 1))
2904+ then parseIntValue(mU[1])
29122905 else 0
2913- let mX = if ((size(mR) > 2))
2914- then parseIntValue(mR[2])
2906+ let na = if ((size(mU) > 2))
2907+ then parseIntValue(mU[2])
29152908 else 0
2916- if (if (if ((mV > 0))
2909+ if (if (if ((mY > 0))
29172910 then true
2918- else (mW > 0))
2911+ else (mZ > 0))
29192912 then true
2920- else (mX > 0))
2913+ else (na > 0))
29212914 then throw("You have to use own Medical Kit")
29222915 else {
2923- let mY = getString(di, bR())
2924- let mZ = if (isDefined(mY))
2925- then split_4C(value(mY), "_")
2916+ let nb = getString(dj, bS())
2917+ let nc = if (isDefined(nb))
2918+ then split_4C(value(nb), "_")
29262919 else nil
2927- let na = if ((size(mZ) > 0))
2928- then parseIntValue(mZ[0])
2920+ let nd = if ((size(nc) > 0))
2921+ then parseIntValue(nc[0])
29292922 else 0
2930- if ((0 >= na))
2923+ if ((0 >= nd))
29312924 then throw("There are no Medical Kits L1 at Emergency Service storage")
29322925 else {
2933- let mU = (mQ + parseIntValue(split(aX[0], "_")[aZ]))
2934- let nb = makeString([toString((na - 1)), removeByIndex(mZ, 0)], "_")
2935- let ct = split(aX[0], "_")
2936- let nc = cs(ct)
2937- let nd = fraction((nc * aO), aN, (cK * bc))
2938- if ((mn.amount != nd))
2939- then throw(("Payment attached should be " + toString(nd)))
2926+ let mX = (mT + parseIntValue(split(aY[0], "_")[ba]))
2927+ let ne = makeString([toString((nd - 1)), removeByIndex(nc, 0)], "_")
2928+ let cu = split(aY[0], "_")
2929+ let nf = ct(cu)
2930+ let ng = fraction((nf * aP), aO, (cL * bd))
2931+ if ((mq.amount != ng))
2932+ then throw(("Payment attached should be " + toString(ng)))
29402933 else {
2941- let fm = dC(invoke(di, "updateEsStorage", [nb], [AttachedPayment(cC, nd)]))
2942- $Tuple2(((mm :+ IntegerEntry(kb, mU)) ++ lf(B, aa)._1), fm)
2934+ let fn = dD(invoke(dj, "updateEsStorage", [ne], [AttachedPayment(cD, ng)]))
2935+ $Tuple2(((mp :+ IntegerEntry(ke, mX)) ++ li(B, aa)._1), fn)
29432936 }
29442937 }
29452938 }
29512944
29522945
29532946
2954-@Callable(gN)
2955-func updateBackpack (B,ne) = if ((gN.caller != di))
2947+@Callable(gO)
2948+func updateBackpack (B,nh) = if ((gO.caller != dj))
29562949 then throw("permission denied")
2957- else $Tuple2([StringEntry(bN(B), ne)], ne)
2958-
2959-
2960-
2961-@Callable(gN)
2950+ else $Tuple2([StringEntry(bO(B), nh)], nh)
2951+
2952+
2953+
2954+@Callable(gO)
29622955 func commitForRandom () = {
2963- let mm = mi(gN)
2964- let nf = (height + dv)
2965- let c = toString(gN.caller)
2966- $Tuple2(([IntegerEntry(dw(c), nf)] ++ mm), nf)
2967- }
2968-
2969-
2970-
2971-@Callable(gN)
2956+ let mp = ml(gO)
2957+ let ni = (height + dw)
2958+ let c = toString(gO.caller)
2959+ $Tuple2(([IntegerEntry(dx(c), ni)] ++ mp), ni)
2960+ }
2961+
2962+
2963+
2964+@Callable(gO)
29722965 func buySLand () = {
2973- let mm = mi(gN)
2974- if ((size(gN.payments) != 1))
2966+ let mp = ml(gO)
2967+ if ((size(gO.payments) != 1))
29752968 then throw("Exactly one payment required")
29762969 else {
2977- let mn = value(gN.payments[0])
2978- if ((mn.assetId != cC))
2970+ let mq = value(gO.payments[0])
2971+ if ((mq.assetId != cD))
29792972 then throw("Allowed USDT payment only!")
2980- else if ((mn.amount != ej))
2981- then throw(("Payment attached should be " + toString(ej)))
2973+ else if ((mq.amount != ek))
2974+ then throw(("Payment attached should be " + toString(ek)))
29822975 else {
2983- let fm = jI(gN.caller, gN.transactionId)
2984- let ng = dF(invoke(dm, "burnAcres", [ek], nil))
2985- $Tuple2((((fm._1 :+ ScriptTransfer(di, mn.amount, cC)) ++ lg(toString(gN.caller), ac)._1) ++ mm), $Tuple2(fm._2._1, ng))
2976+ let fn = jL(gO.caller, gO.transactionId)
2977+ let nj = dG(invoke(dn, "burnAcres", [el], nil))
2978+ $Tuple2((((fn._1 :+ ScriptTransfer(dj, mq.amount, cD)) ++ lj(toString(gO.caller), ac)._1) ++ mp), $Tuple2(fn._2._1, nj))
29862979 }
29872980 }
29882981 }
29892982
29902983
29912984
2992-@Callable(gN)
2993-func expedition (jQ,jR) = {
2994- let mm = mi(gN)
2995- if ((size(gN.payments) != 0))
2985+@Callable(gO)
2986+func expedition (jT,jU) = {
2987+ let mp = ml(gO)
2988+ if ((size(gO.payments) != 0))
29962989 then throw("No payments required")
29972990 else {
2998- let bQ = toString(gN.caller)
2999- let iB = jP(bQ, jQ, jR)
3000- let B = iB._2
3001- let kb = A(B)
3002- let iL = bN(B)
3003- let jo = iK(iL)
3004- let kQ = split(jo[bo], "_")
3005- let kS = makeString(fg(true, kQ, ei), "_")
3006- let gA = G(B)
3007- let mB = valueOrElse(getString(gA), ",;,_,;,_,;,_,;,_,;,_,;,")
3008- let nh = fn(mB, iB._5)
3009- let mD = nh._1
3010- let mE = nh._2
3011- let ni = jI(gN.caller, gN.transactionId)
3012- let jO = ni._2._1
3013- let fm = if ((0 >= iB._1))
3014- then $Tuple3([IntegerEntry(kb, 0), StringEntry(gA, mD)], "", 0)
3015- else $Tuple3((ni._1 ++ (if (mE)
2991+ let bR = toString(gO.caller)
2992+ let iD = jS(bR, jT, jU)
2993+ let B = iD._2
2994+ let ke = A(B)
2995+ let iO = bO(B)
2996+ let jr = iN(iO)
2997+ let kT = split(jr[bp], "_")
2998+ let kV = makeString(fh(true, kT, ej), "_")
2999+ let gB = G(B)
3000+ let mE = valueOrElse(getString(gB), ",;,_,;,_,;,_,;,_,;,_,;,")
3001+ let nk = fo(mE, iD._5)
3002+ let mG = nk._1
3003+ let mH = nk._2
3004+ let nl = jL(gO.caller, gO.transactionId)
3005+ let jR = nl._2._1
3006+ let fn = if ((0 >= iD._1))
3007+ then $Tuple3([IntegerEntry(ke, 0), StringEntry(gB, mG)], "", 0)
3008+ else $Tuple3((nl._1 ++ (if (mH)
30163009 then [StringEntry(M(B), "0_0_0_0_0")]
3017- else ((((nil :+ StringEntry(bO(B), makeString([ni._2._2, "L", jO], "_"))) :+ IntegerEntry(kb, iB._1)) :+ StringEntry(gA, mD)) :+ StringEntry(iL, makeString([jo[bm], jo[bn], kS, jo[bp]], ":"))))), jO, iB._3)
3018- if (lq(B))
3010+ else ((((nil :+ StringEntry(bP(B), makeString([nl._2._2, "L", jR], "_"))) :+ IntegerEntry(ke, iD._1)) :+ StringEntry(gB, mG)) :+ StringEntry(iO, makeString([jr[bn], jr[bo], kV, jr[bq]], ":"))))), jR, iD._3)
3011+ if (lt(B))
30193012 then throw("expedition_checkTournament")
3020- else if (lr(B))
3013+ else if (lu(B))
30213014 then throw("expedition_checkDelivery")
30223015 else {
3023- let ng = dF(invoke(dm, "burnAcres", [ek], nil))
3024- $Tuple2(((fm._1 ++ lf(B, ac)._1) ++ mm), $Tuple3(fm._2, fm._3, ng))
3016+ let nj = dG(invoke(dn, "burnAcres", [el], nil))
3017+ $Tuple2(((fn._1 ++ li(B, ac)._1) ++ mp), $Tuple3(fn._2, fn._3, nj))
30253018 }
30263019 }
30273020 }
30283021
30293022
30303023
3031-@Callable(gN)
3024+@Callable(gO)
30323025 func buySLandForAcres () = {
3033- let mm = mi(gN)
3034- if ((size(gN.payments) != 1))
3026+ let mp = ml(gO)
3027+ if ((size(gO.payments) != 1))
30353028 then throw("exactly 1 payment must be attached")
30363029 else {
3037- let mn = gN.payments[0]
3038- let ft = mn.amount
3039- if (if (!(isDefined(mn.assetId)))
3030+ let mq = gO.payments[0]
3031+ let fu = mq.amount
3032+ if (if (!(isDefined(mq.assetId)))
30403033 then true
3041- else (value(mn.assetId) != du))
3034+ else (value(mq.assetId) != dv))
30423035 then throw("ACRES payments only!")
3043- else if ((ft != ek))
3044- then throw(("Payment attached should be " + toString(ek)))
3036+ else if ((fu != el))
3037+ then throw(("Payment attached should be " + toString(el)))
30453038 else {
3046- let fm = jI(gN.caller, gN.transactionId)
3047- let ng = dF(invoke(dm, "burnAcres", [ek], [AttachedPayment(du, ft)]))
3048- $Tuple2(((fm._1 ++ lg(toString(gN.caller), ac)._1) ++ mm), $Tuple2(fm._2._1, ng))
3039+ let fn = jL(gO.caller, gO.transactionId)
3040+ let nj = dG(invoke(dn, "burnAcres", [el], [AttachedPayment(dv, fu)]))
3041+ $Tuple2(((fn._1 ++ lj(toString(gO.caller), ac)._1) ++ mp), $Tuple2(fn._2._1, nj))
30493042 }
30503043 }
30513044 }
30523045
30533046
30543047
3055-@Callable(gN)
3048+@Callable(gO)
30563049 func upgradeInfra (Q) = {
3057- let mm = mi(gN)
3058- if ((size(gN.payments) != 0))
3050+ let mp = ml(gO)
3051+ if ((size(gO.payments) != 0))
30593052 then throw("No payments required")
30603053 else {
3061- let fm = kK(true, gN.caller, 0, Q)
3062- let B = valueOrErrorMessage(getString(bM(toString(gN.caller))), "You don't have a duck staked")
3063- $Tuple2(((fm._1 ++ mm) ++ lf(B, fraction(ad, fm._3, cK))._1), fm._2)
3064- }
3065- }
3066-
3067-
3068-
3069-@Callable(gN)
3070-func activateArtifact (nj,nk) = {
3071- let mm = mi(gN)
3072- if ((size(gN.payments) != 0))
3054+ let fn = kN(true, gO.caller, 0, Q)
3055+ let B = valueOrErrorMessage(getString(bN(toString(gO.caller))), "You don't have a duck staked")
3056+ $Tuple2(((fn._1 ++ mp) ++ li(B, fraction(ad, fn._3, cL))._1), fn._2)
3057+ }
3058+ }
3059+
3060+
3061+
3062+@Callable(gO)
3063+func activateArtifact (nm,nn) = {
3064+ let mp = ml(gO)
3065+ if ((size(gO.payments) != 0))
30733066 then throw("No payments required")
30743067 else {
3075- let c = toString(gN.caller)
3076- let fm = {
3077- let cD = nj
3078- if (("PRESALE" == cD))
3079- then lo(c, nk)
3080- else if (("ONBOARD" == cD))
3081- then lh(c)
3068+ let c = toString(gO.caller)
3069+ let fn = {
3070+ let cE = nm
3071+ if (("PRESALE" == cE))
3072+ then lr(c, nn)
3073+ else if (("ONBOARD" == cE))
3074+ then lk(c)
30823075 else throw("Unknown artifact")
30833076 }
3084- (fm ++ mm)
3085- }
3086- }
3087-
3088-
3089-
3090-@Callable(gN)
3091-func mergeLands (lF) = {
3092- let mm = mi(gN)
3093- if ((size(gN.payments) != 0))
3077+ (fn ++ mp)
3078+ }
3079+ }
3080+
3081+
3082+
3083+@Callable(gO)
3084+func mergeLands (lI) = {
3085+ let mp = ml(gO)
3086+ if ((size(gO.payments) != 0))
30943087 then throw("No payments required")
30953088 else {
3096- let fm = md(toString(gN.caller), lF)
3097- $Tuple2(((fm._1 ++ mm) ++ lg(toString(gN.caller), ae)._1), fm._2)
3098- }
3099- }
3100-
3101-
3102-
3103-@Callable(gN)
3104-func cargoExchange (nl,Q) = {
3105- let mm = mi(gN)
3106- if ((size(gN.payments) != 0))
3089+ let fn = mg(toString(gO.caller), lI)
3090+ $Tuple2(((fn._1 ++ mp) ++ lj(toString(gO.caller), ae)._1), fn._2)
3091+ }
3092+ }
3093+
3094+
3095+
3096+@Callable(gO)
3097+func cargoExchange (no,Q) = {
3098+ let mp = ml(gO)
3099+ if ((size(gO.payments) != 0))
31073100 then throw("No payments required")
31083101 else {
3109- let jn = split_4C(nl, ":")
3110- let c = toString(gN.originCaller)
3111- let ks = value(assetInfo(fromBase58String(Q)))
3112- let kt = bw(Q)
3113- if (!(isDefined(getInteger(kt))))
3114- then throw((ks.name + " is not staked"))
3102+ let jq = split_4C(no, ":")
3103+ let c = toString(gO.originCaller)
3104+ let kv = value(assetInfo(fromBase58String(Q)))
3105+ let kw = bx(Q)
3106+ if (!(isDefined(getInteger(kw))))
3107+ then throw((kv.name + " is not staked"))
31153108 else {
3116- let kv = valueOrErrorMessage(getString(bt(Q)), (("NFT " + ks.name) + " is orphaned"))
3117- if ((kv != c))
3109+ let ky = valueOrErrorMessage(getString(bu(Q)), (("NFT " + kv.name) + " is orphaned"))
3110+ if ((ky != c))
31183111 then throw((aF + " is not yours"))
31193112 else {
3120- let iZ = (dK(split(ks.description, "_")[do]) / cL)
3121- let ja = valueOrElse(getInteger(bD(Q)), 0)
3122- let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
3123- let kq = valueOrElse(getString(bO(B)), aM)
3124- let ck = split(value(kq), "_")
3125- if ((ck[br] != "L"))
3126- then throw((("Duck location type is " + ck[br]) + ", but should be L"))
3127- else if ((ck[bs] != Q))
3113+ let jc = (dL(split(kv.description, "_")[dp]) / cM)
3114+ let jd = valueOrElse(getInteger(bE(Q)), 0)
3115+ let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
3116+ let kt = valueOrElse(getString(bP(B)), aN)
3117+ let cl = split(value(kt), "_")
3118+ if ((cl[bs] != "L"))
3119+ then throw((("Duck location type is " + cl[bs]) + ", but should be L"))
3120+ else if ((cl[bt] != Q))
31283121 then throw(("Duck should be on the land " + Q))
31293122 else {
3130- let iY = bC(Q)
3131- let iP = iX(iY, iZ, ja)
3132- let iL = bN(B)
3133- let jo = iK(iL)
3134- let fm = jm(jn, iP, jo)
3135- let jg = split(iP[bh], "_")
3136- let kH = (parseIntValue(jg[bj]) + fm._7)
3137- let kI = (parseIntValue(jg[bk]) - fm._7)
3138- ([StringEntry(iL, makeString_2C([jo[bm], fm._4, fm._5, fm._6], ":")), StringEntry(iY, makeString_2C([iP[bd], fm._1, fm._2, fm._3, makeString([jg[bi], toString(kH), toString(kI), jg[bl]], "_")], ":"))] ++ mm)
3123+ let jb = bD(Q)
3124+ let iS = ja(jb, jc, jd)
3125+ let iO = bO(B)
3126+ let jr = iN(iO)
3127+ let fn = jp(jq, iS, jr)
3128+ let jj = split(iS[bi], "_")
3129+ let kK = (parseIntValue(jj[bk]) + fn._7)
3130+ let kL = (parseIntValue(jj[bl]) - fn._7)
3131+ ([StringEntry(iO, makeString_2C([jr[bn], fn._4, fn._5, fn._6], ":")), StringEntry(jb, makeString_2C([iS[be], fn._1, fn._2, fn._3, makeString([jj[bj], toString(kK), toString(kL), jj[bm]], "_")], ":"))] ++ mp)
31393132 }
31403133 }
31413134 }
31443137
31453138
31463139
3147-@Callable(gN)
3148-func saveWarehouse (jc,Q) = if ((gN.caller != di))
3140+@Callable(gO)
3141+func saveWarehouse (jf,Q) = if ((gO.caller != dj))
31493142 then throw("Access denied")
31503143 else {
3151- let iY = bC(Q)
3152- let jd = split_4C(jc, ":")
3153- if ((size(jd) != 5))
3144+ let jb = bD(Q)
3145+ let jg = split_4C(jf, ":")
3146+ if ((size(jg) != 5))
31543147 then throw("warehouse string should contain 4 ':' separators")
31553148 else {
3156- let nm = split(jd[bh], "_")[bi]
3157- let kH = iO(jd)
3158- let nn = iM(jd[bd])
3159- let kI = ((nn - parseIntValue(nm)) - kH)
3160- if ((0 > kI))
3149+ let np = split(jg[bi], "_")[bj]
3150+ let kK = iR(jg)
3151+ let nq = iP(jg[be])
3152+ let kL = ((nq - parseIntValue(np)) - kK)
3153+ if ((0 > kL))
31613154 then throw("Operation leads to negative free warehouse space")
31623155 else {
3163- let no = makeString_2C([jd[bd], jd[be], jd[bf], jd[bg], makeString([nm, toString(kH), toString(kI), toString(nn)], "_")], ":")
3164- $Tuple2([StringEntry(iY, no)], no)
3156+ let nr = makeString_2C([jg[be], jg[bf], jg[bg], jg[bh], makeString([np, toString(kK), toString(kL), toString(nq)], "_")], ":")
3157+ $Tuple2([StringEntry(jb, nr)], nr)
31653158 }
31663159 }
31673160 }
31683161
31693162
31703163
3171-@Callable(gN)
3172-func setCustomName (bu,lP,by) = {
3173- let mm = mi(gN)
3174- if ((size(gN.payments) != 1))
3164+@Callable(gO)
3165+func setCustomName (bv,lS,bz) = {
3166+ let mp = ml(gO)
3167+ if ((size(gO.payments) != 1))
31753168 then throw("Exactly one payment required")
31763169 else {
3177- let mn = value(gN.payments[0])
3178- if ((mn.assetId != cC))
3170+ let mq = value(gO.payments[0])
3171+ if ((mq.assetId != cD))
31793172 then throw("Allowed USDT payment only!")
3180- else if ((mn.amount != ef))
3181- then throw(("Payment should be " + toString(ef)))
3182- else if (contains(lP, "__"))
3183- then throw(("Name should not contain '__': " + lP))
3184- else if ((size(lP) > eg))
3185- then throw(("Name too long, maxLength=" + toString(eg)))
3173+ else if ((mq.amount != eg))
3174+ then throw(("Payment should be " + toString(eg)))
3175+ else if (contains(lS, "__"))
3176+ then throw(("Name should not contain '__': " + lS))
3177+ else if ((size(lS) > eh))
3178+ then throw(("Name too long, maxLength=" + toString(eh)))
31863179 else {
3187- let c = toString(gN.originCaller)
3188- let np = {
3189- let cD = by
3190- if (("ACCOUNT" == cD))
3180+ let c = toString(gO.originCaller)
3181+ let ns = {
3182+ let cE = bz
3183+ if (("ACCOUNT" == cE))
31913184 then {
3192- let nq = eA(lP)
3193- let nr = getString(nq)
3194- if (isDefined(nr))
3195- then throw(("Name already registered: " + lP))
3185+ let nt = eB(lS)
3186+ let nu = getString(nt)
3187+ if (isDefined(nu))
3188+ then throw(("Name already registered: " + lS))
31963189 else {
3197- let ns = bG(c)
3198- let nt = getString(ns)
3199- let nu = if (isDefined(nt))
3200- then [DeleteEntry(eA(value(nt)))]
3190+ let nv = bH(c)
3191+ let nw = getString(nv)
3192+ let nx = if (isDefined(nw))
3193+ then [DeleteEntry(eB(value(nw)))]
32013194 else nil
3202- (((nu :+ StringEntry(ns, lP)) :+ StringEntry(nq, c)) ++ lg(c, ab)._1)
3195+ (((nx :+ StringEntry(nv, lS)) :+ StringEntry(nt, c)) ++ lj(c, ab)._1)
32033196 }
32043197 }
3205- else if (("LAND" == cD))
3198+ else if (("LAND" == cE))
32063199 then {
3207- let ks = value(assetInfo(fromBase58String(bu)))
3208- let kt = bw(bu)
3209- if (!(isDefined(getInteger(kt))))
3210- then throw((ks.name + " is not staked"))
3200+ let kv = value(assetInfo(fromBase58String(bv)))
3201+ let kw = bx(bv)
3202+ if (!(isDefined(getInteger(kw))))
3203+ then throw((kv.name + " is not staked"))
32113204 else {
3212- let kv = valueOrErrorMessage(getString(bt(bu)), (("NFT " + ks.name) + " is orphaned"))
3213- if ((kv != c))
3205+ let ky = valueOrErrorMessage(getString(bu(bv)), (("NFT " + kv.name) + " is orphaned"))
3206+ if ((ky != c))
32143207 then throw((aF + " is not yours"))
32153208 else {
3216- let nq = et(lP)
3217- let nr = getString(nq)
3218- if (isDefined(nr))
3219- then throw(("Name already registered: " + lP))
3209+ let nt = eu(lS)
3210+ let nu = getString(nt)
3211+ if (isDefined(nu))
3212+ then throw(("Name already registered: " + lS))
32203213 else {
3221- let nv = bv(bu)
3222- let nt = getString(nv)
3223- let nu = if (isDefined(nt))
3224- then [DeleteEntry(et(value(nt)))]
3214+ let ny = bw(bv)
3215+ let nw = getString(ny)
3216+ let nx = if (isDefined(nw))
3217+ then [DeleteEntry(eu(value(nw)))]
32253218 else nil
3226- (((nu :+ StringEntry(nv, lP)) :+ StringEntry(nq, bu)) ++ lg(c, ab)._1)
3219+ (((nx :+ StringEntry(ny, lS)) :+ StringEntry(nt, bv)) ++ lj(c, ab)._1)
32273220 }
32283221 }
32293222 }
32303223 }
3231- else if (("DUCK" == cD))
3224+ else if (("DUCK" == cE))
32323225 then {
3233- let ks = value(assetInfo(fromBase58String(bu)))
3234- let kt = bw(bu)
3235- if (if (!(isDefined(getInteger(kt))))
3226+ let kv = value(assetInfo(fromBase58String(bv)))
3227+ let kw = bx(bv)
3228+ if (if (!(isDefined(getInteger(kw))))
32363229 then true
3237- else !(isDefined(getString(bM(c)))))
3238- then throw((ks.name + " is not staked"))
3230+ else !(isDefined(getString(bN(c)))))
3231+ then throw((kv.name + " is not staked"))
32393232 else {
3240- let kv = valueOrErrorMessage(getString(bL(bu)), (("NFT " + ks.name) + " is orphaned"))
3241- if ((kv != c))
3233+ let ky = valueOrErrorMessage(getString(bM(bv)), (("NFT " + kv.name) + " is orphaned"))
3234+ if ((ky != c))
32423235 then throw((aG + " is not yours"))
32433236 else {
3244- let nq = ez(lP)
3245- let nr = getString(nq)
3246- if (isDefined(nr))
3247- then throw(("Name already registered: " + lP))
3237+ let nt = eA(lS)
3238+ let nu = getString(nt)
3239+ if (isDefined(nu))
3240+ then throw(("Name already registered: " + lS))
32483241 else {
3249- let nv = bF(bu)
3250- let nt = getString(nv)
3251- let nu = if (isDefined(nt))
3252- then [DeleteEntry(ez(value(nt)))]
3242+ let ny = bG(bv)
3243+ let nw = getString(ny)
3244+ let nx = if (isDefined(nw))
3245+ then [DeleteEntry(eA(value(nw)))]
32533246 else nil
3254- (((nu :+ StringEntry(nv, lP)) :+ StringEntry(nq, bu)) ++ lf(bu, ab)._1)
3247+ (((nx :+ StringEntry(ny, lS)) :+ StringEntry(nt, bv)) ++ li(bv, ab)._1)
32553248 }
32563249 }
32573250 }
32583251 }
32593252 else throw("Unknown entity type")
32603253 }
3261- $Tuple2(((np :+ ScriptTransfer(di, mn.amount, cC)) ++ mm), 0)
3254+ $Tuple2(((ns :+ ScriptTransfer(dj, mq.amount, cD)) ++ mp), 0)
32623255 }
32633256 }
32643257 }
32653258
32663259
32673260
3268-@Callable(gN)
3269-func setReferrals (nw,nx) = if ((gN.callerPublicKey != ec))
3261+@Callable(gO)
3262+func setReferrals (nz,nA) = if ((gO.callerPublicKey != ed))
32703263 then throw("Permission denied")
32713264 else {
3272- let mm = mi(gN)
3273- if ((size(gN.payments) != 0))
3265+ let mp = ml(gO)
3266+ if ((size(gO.payments) != 0))
32743267 then throw("No payments required")
3275- else if (!(isDefined(addressFromString(nw))))
3276- then throw(("Invalid address: " + nw))
3277- else if (!(isDefined(addressFromString(nx))))
3278- then throw(("Invalid address: " + nx))
3268+ else if (!(isDefined(addressFromString(nz))))
3269+ then throw(("Invalid address: " + nz))
3270+ else if (!(isDefined(addressFromString(nA))))
3271+ then throw(("Invalid address: " + nA))
32793272 else {
3280- let ny = eB()
3281- let nz = getString(ny)
3282- let nA = if (isDefined(nz))
3283- then split_4C(value(nz), "_")
3273+ let nB = eC()
3274+ let nC = getString(nB)
3275+ let nD = if (isDefined(nC))
3276+ then split_4C(value(nC), "_")
32843277 else nil
3285- if (containsElement(nA, nx))
3286- then throw((nx + " is not newbie (already has referrals)"))
3278+ if (containsElement(nD, nA))
3279+ then throw((nA + " is not newbie (already has referrals)"))
32873280 else {
3288- let li = bH(nx)
3289- let lj = getString(li)
3290- if (if (isDefined(lj))
3291- then isDefined(addressFromString(value(lj)))
3281+ let ll = bI(nA)
3282+ let lm = getString(ll)
3283+ if (if (isDefined(lm))
3284+ then isDefined(addressFromString(value(lm)))
32923285 else false)
3293- then throw(((nx + " already has refBy: ") + value(lj)))
3286+ then throw(((nA + " already has refBy: ") + value(lm)))
32943287 else {
3295- let nB = bK(nw)
3296- let nC = getString(nB)
3297- let nD = if (isDefined(nC))
3298- then split_4C(value(nC), "_")
3288+ let nE = bL(nz)
3289+ let nF = getString(nE)
3290+ let nG = if (isDefined(nF))
3291+ then split_4C(value(nF), "_")
32993292 else nil
3300- if (containsElement(nD, nx))
3301- then throw((((nw + " already contains ") + nx) + " within referrals"))
3293+ if (containsElement(nG, nA))
3294+ then throw((((nz + " already contains ") + nA) + " within referrals"))
33023295 else {
3303- let nE = makeString_2C((nD :+ nx), "_")
3304- let nF = if (containsElement(nA, nw))
3305- then value(nz)
3306- else makeString_2C((nA :+ nw), "_")
3307- $Tuple2(([StringEntry(li, nw), StringEntry(nB, nE), StringEntry(ny, nF)] ++ mm), 0)
3296+ let nH = makeString_2C((nG :+ nA), "_")
3297+ let nI = if (containsElement(nD, nz))
3298+ then value(nC)
3299+ else makeString_2C((nD :+ nz), "_")
3300+ $Tuple2(([StringEntry(ll, nz), StringEntry(nE, nH), StringEntry(nB, nI)] ++ mp), 0)
33083301 }
33093302 }
33103303 }
33133306
33143307
33153308
3316-@Callable(gN)
3317-func distributePoints (nG,nH,nI,nJ,nK) = {
3318- let mm = mi(gN)
3319- if ((size(gN.payments) != 0))
3309+@Callable(gO)
3310+func distributePoints (nJ,nK,nL,nM,nN) = {
3311+ let mp = ml(gO)
3312+ if ((size(gO.payments) != 0))
33203313 then throw("No payments required")
33213314 else {
3322- let c = toString(gN.originCaller)
3323- let nL = dH(invoke(dk, "checkWlgXpREADONLY", [c], nil))
3324- let nM = dF(nL[1])
3325- let nN = if ((0 >= nM))
3315+ let c = toString(gO.originCaller)
3316+ let nO = dI(invoke(dl, "checkWlgXpREADONLY", [c], nil))
3317+ let nP = dG(nO[1])
3318+ let nQ = if ((0 >= nP))
33263319 then $Tuple2(0, nil)
33273320 else {
3328- let ld = dF(invoke(dk, "takeWlgXp", [c], nil))
3329- if ((ld == ld))
3330- then $Tuple2(nM, [IntegerEntry(I(c), dF(nL[0])), IntegerEntry(H(c), dF(nL[2]))])
3321+ let lg = dG(invoke(dl, "takeWlgXp", [c], nil))
3322+ if ((lg == lg))
3323+ then $Tuple2(nP, [IntegerEntry(I(c), dG(nO[0])), IntegerEntry(H(c), dG(nO[2]))])
33313324 else throw("Strict value is not equal to itself.")
33323325 }
3333- let nO = nN._1
3334- let nP = nN._2
3335- let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
3336- let nQ = J(c)
3337- let nR = (valueOrElse(getInteger(nQ), 0) + nO)
3338- let nS = F(B)
3339- let nT = valueOrElse(getInteger(nS), 0)
3340- let nU = (nR + nT)
3341- let nV = ((((nG + nH) + nI) + nJ) + nK)
3342- if ((nV > nU))
3343- then throw((("There are only " + toString(nU)) + " free points to distribute"))
3326+ let nR = nQ._1
3327+ let nS = nQ._2
3328+ let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
3329+ let nT = J(c)
3330+ let nU = (valueOrElse(getInteger(nT), 0) + nR)
3331+ let nV = F(B)
3332+ let nW = valueOrElse(getInteger(nV), 0)
3333+ let nX = (nU + nW)
3334+ let nY = ((((nJ + nK) + nL) + nM) + nN)
3335+ if ((nY > nX))
3336+ then throw((("There are only " + toString(nX)) + " free points to distribute"))
33443337 else {
3345- let nW = C(B)
3346- let at = split(valueOrElse(getString(nW), "0_0_0_0_0"), "_")
3347- let nX = (nR - nV)
3348- $Tuple2((([IntegerEntry(nQ, if ((0 > nX))
3338+ let nZ = C(B)
3339+ let at = split(valueOrElse(getString(nZ), "0_0_0_0_0"), "_")
3340+ let oa = (nU - nY)
3341+ $Tuple2((([IntegerEntry(nT, if ((0 > oa))
33493342 then 0
3350- else nX), IntegerEntry(nS, if ((0 > nX))
3351- then (nT + nX)
3352- else nT), StringEntry(nW, makeString([toString((parseIntValue(at[l]) + nG)), toString((parseIntValue(at[m]) + nH)), toString((parseIntValue(at[n]) + nI)), toString((parseIntValue(at[o]) + nJ)), toString((parseIntValue(at[p]) + nK))], "_"))] ++ mm) ++ nP), 0)
3343+ else oa), IntegerEntry(nV, if ((0 > oa))
3344+ then (nW + oa)
3345+ else nW), StringEntry(nZ, makeString([toString((parseIntValue(at[l]) + nJ)), toString((parseIntValue(at[m]) + nK)), toString((parseIntValue(at[n]) + nL)), toString((parseIntValue(at[o]) + nM)), toString((parseIntValue(at[p]) + nN))], "_"))] ++ mp) ++ nS), 0)
33533346 }
33543347 }
33553348 }
33563349
33573350
33583351
3359-@Callable(gN)
3360-func splitByGlobalWeightsREADONLY (eL) = $Tuple2(nil, fd(eL))
3361-
3362-
3363-
3364-@Callable(gN)
3365-func splitByGlobalAndLocalWeightsREADONLY (nY,nZ,gQ) = {
3366- let gJ = gP(gQ)
3367- $Tuple2(nil, $Tuple2(fd(nY), eO(nZ, gJ)))
3368- }
3369-
3370-
3371-
3372-@Callable(gN)
3373-func getBackpackREADONLY (B) = $Tuple2(nil, makeString(iK(bN(B)), ":"))
3374-
3375-
3376-
3377-@Callable(gN)
3352+@Callable(gO)
3353+func splitByGlobalWeightsREADONLY (eM) = $Tuple2(nil, fe(eM))
3354+
3355+
3356+
3357+@Callable(gO)
3358+func splitByGlobalAndLocalWeightsREADONLY (ob,oc,gR) = {
3359+ let gK = gQ(gR)
3360+ $Tuple2(nil, $Tuple2(fe(ob), eP(oc, gK)))
3361+ }
3362+
3363+
3364+
3365+@Callable(gO)
3366+func getBackpackREADONLY (B) = $Tuple2(nil, makeString(iN(bO(B)), ":"))
3367+
3368+
3369+
3370+@Callable(gO)
33783371 func getWarehouseREADONLY (Q) = {
3379- let ks = value(assetInfo(fromBase58String(Q)))
3380- let iZ = (dK(split(ks.description, "_")[do]) / cL)
3381- let ja = valueOrElse(getInteger(bD(Q)), 0)
3382- $Tuple2(nil, makeString_2C(iX(bC(Q), iZ, ja), ":"))
3383- }
3384-
3385-
3386-
3387-@Callable(gN)
3388-func saveLastTx () = if (!(containsElement([dk, di, dl, dm], gN.caller)))
3372+ let kv = value(assetInfo(fromBase58String(Q)))
3373+ let jc = (dL(split(kv.description, "_")[dp]) / cM)
3374+ let jd = valueOrElse(getInteger(bE(Q)), 0)
3375+ $Tuple2(nil, makeString_2C(ja(bD(Q), jc, jd), ":"))
3376+ }
3377+
3378+
3379+
3380+@Callable(gO)
3381+func saveLastTx () = if (!(containsElement([dl, dj, dm, dn], gO.caller)))
33893382 then throw("Access denied")
3390- else $Tuple2(mi(gN), 42)
3391-
3392-
3393-
3394-@Callable(gN)
3395-func updateDuckStats (B,ld) = if ((gN.caller != di))
3383+ else $Tuple2(ml(gO), 42)
3384+
3385+
3386+
3387+@Callable(gO)
3388+func updateDuckStats (B,lg) = if ((gO.caller != dj))
33963389 then throw("Access denied")
3397- else lf(B, ld)
3398-
3399-
3400-
3401-@Callable(gN)
3402-func updateAccStats (c,ld) = if (!(containsElement([dk, di, dm], gN.caller)))
3390+ else li(B, lg)
3391+
3392+
3393+
3394+@Callable(gO)
3395+func updateAccStats (c,lg) = if (!(containsElement([dl, dj, dn], gO.caller)))
34033396 then throw("Access denied")
3404- else lg(c, ld)
3405-
3406-
3407-
3408-@Callable(gN)
3409-func equipDuck (oa) = {
3410- let mm = mi(gN)
3411- if ((size(gN.payments) != 0))
3397+ else lj(c, lg)
3398+
3399+
3400+
3401+@Callable(gO)
3402+func equipDuck (od) = {
3403+ let mp = ml(gO)
3404+ if ((size(gO.payments) != 0))
34123405 then throw("No payments required")
34133406 else {
3414- let c = toString(gN.originCaller)
3415- let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
3416- if (lq(B))
3407+ let c = toString(gO.originCaller)
3408+ let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
3409+ if (lt(B))
34173410 then throw("equipDuck_checkTournament")
3418- else if (lr(B))
3411+ else if (lu(B))
34193412 then throw("equipDuck_checkDelivery")
34203413 else {
3421- let gA = G(B)
3422- let ob = split(valueOrElse(getString(gA), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3423- let iL = bN(B)
3424- let jo = iK(iL)
3425- let mD = split(oa, "_")
3426- if ((size(mD) != r))
3414+ let gB = G(B)
3415+ let oe = split(valueOrElse(getString(gB), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3416+ let iO = bO(B)
3417+ let jr = iN(iO)
3418+ let mG = split(od, "_")
3419+ if ((size(mG) != r))
34273420 then throw("Wrong equipment string")
34283421 else {
3429- let gC = gp(ob, fA(jo[bp]), true, nil)
3430- let gD = split(mD[q], ";")[1]
3431- let ar = if ((gD == ""))
3422+ let gD = gq(oe, fB(jr[bq]), true, nil)
3423+ let gE = split(mG[q], ";")[1]
3424+ let ar = if ((gE == ""))
34323425 then 0
34333426 else {
3434- let gE = split(gD, ",")[0]
3435- if ((gE == ""))
3427+ let gF = split(gE, ",")[0]
3428+ if ((gF == ""))
34363429 then 0
34373430 else {
3438- let fP = split(gE, ":")
3439- let dg = fP[0]
3440- let gF = fP[1]
3441- if (if (if (if (if ((dg == "06"))
3431+ let fQ = split(gF, ":")
3432+ let dh = fQ[0]
3433+ let gG = fQ[1]
3434+ if (if (if (if (if ((dh == "06"))
34423435 then true
3443- else (dg == "07"))
3436+ else (dh == "07"))
34443437 then true
3445- else (dg == "08"))
3446- then (gF != "")
3438+ else (dh == "08"))
3439+ then (gG != "")
34473440 else false)
3448- then (parseIntValue(gF) > 0)
3441+ then (parseIntValue(gG) > 0)
34493442 else false)
3450- then parseIntValue(split(aX[parseIntValue(dg)], "_")[aZ])
3443+ then parseIntValue(split(aY[parseIntValue(dh)], "_")[ba])
34513444 else 0
34523445 }
34533446 }
3454- let gk = ap(this, B, ar, true)
3455- let gG = gp(mD, gC, false, gk)
3456- let oc = fF(gG)
3457- $Tuple2(([StringEntry(gA, oa), StringEntry(iL, makeString_2C([jo[bm], jo[bn], jo[bo], oc], ":")), StringEntry(M(B), makeString([toString(gk[7]), toString(gk[8]), toString(gk[9]), toString(gk[10]), toString(gk[11])], "_"))] ++ mm), 0)
3447+ let gl = ap(this, B, ar, true)
3448+ let gH = gq(mG, gD, false, gl)
3449+ let of = fG(gH)
3450+ $Tuple2(([StringEntry(gB, od), StringEntry(iO, makeString_2C([jr[bn], jr[bo], jr[bp], of], ":")), StringEntry(M(B), makeString([toString(gl[7]), toString(gl[8]), toString(gl[9]), toString(gl[10]), toString(gl[11])], "_"))] ++ mp), 0)
34583451 }
34593452 }
34603453 }
34623455
34633456
34643457
3465-@Callable(gN)
3466-func fortificateLand (Q,od) = {
3467- let mm = mi(gN)
3468- if ((size(gN.payments) != 0))
3458+@Callable(gO)
3459+func fortificateLand (Q,og) = {
3460+ let mp = ml(gO)
3461+ if ((size(gO.payments) != 0))
34693462 then throw("No payments required")
34703463 else {
3471- let c = toString(gN.originCaller)
3472- let B = valueOrElse(getString(bM(c)), "")
3473- let fK = ap(this, B, 0, false)
3474- let oe = bE(Q)
3475- let of = split(valueOrElse(getString(oe), ":0_15:0_18:0"), "_")
3476- let ks = value(assetInfo(fromBase58String(Q)))
3477- let iZ = (dK(split(ks.description, "_")[do]) / cL)
3478- let ja = valueOrElse(getInteger(bD(Q)), 0)
3479- let iY = bC(Q)
3480- let jd = iX(iY, iZ, ja)
3481- let og = split(jd[bh], "_")
3482- let oh = parseIntValue(og[bj])
3483- let oi = parseIntValue(og[bk])
3484- let oj = split(od, "_")
3485- let ok = gw(of, fA(jd[bg]), oh, oi, true, nil)
3486- let gC = ok._1
3487- let ol = ok._2
3488- let om = ok._3
3489- let on = gw(oj, gC, ol, om, false, fK)
3490- let gG = on._1
3464+ let c = toString(gO.originCaller)
3465+ let B = valueOrElse(getString(bN(c)), "")
3466+ let fL = ap(this, B, 0, false)
3467+ let oh = bF(Q)
3468+ let oi = split(valueOrElse(getString(oh), ":0_15:0_18:0"), "_")
3469+ let kv = value(assetInfo(fromBase58String(Q)))
3470+ let jc = (dL(split(kv.description, "_")[dp]) / cM)
3471+ let jd = valueOrElse(getInteger(bE(Q)), 0)
3472+ let jb = bD(Q)
3473+ let jg = ja(jb, jc, jd)
3474+ let oj = split(jg[bi], "_")
3475+ let ok = parseIntValue(oj[bk])
3476+ let ol = parseIntValue(oj[bl])
3477+ let om = split(og, "_")
3478+ let on = gx(oi, fB(jg[bh]), ok, ol, true, nil)
3479+ let gD = on._1
34913480 let oo = on._2
34923481 let op = on._3
3493- let oc = fF(gG)
3494- let kY = makeString([og[bi], toString(oo), toString(op), og[bl]], "_")
3495- $Tuple2(([StringEntry(oe, od), StringEntry(iY, makeString_2C([jd[bd], jd[be], jd[bf], oc, kY], ":"))] ++ mm), 0)
3496- }
3497- }
3498-
3499-
3500-
3501-@Callable(gN)
3502-func initDuckTourAttempt (B) = if ((gN.caller != dl))
3482+ let oq = gx(om, gD, oo, op, false, fL)
3483+ let gH = oq._1
3484+ let or = oq._2
3485+ let os = oq._3
3486+ let of = fG(gH)
3487+ let lb = makeString([oj[bj], toString(or), toString(os), oj[bm]], "_")
3488+ $Tuple2(([StringEntry(oh, og), StringEntry(jb, makeString_2C([jg[be], jg[bf], jg[bg], of, lb], ":"))] ++ mp), 0)
3489+ }
3490+ }
3491+
3492+
3493+
3494+@Callable(gO)
3495+func initDuckTourAttempt (B) = if ((gO.caller != dm))
35033496 then throw("Access denied")
35043497 else {
3505- let kb = A(B)
3506- let kc = aj(valueOrElse(getInteger(E(B)), 0))
3507- let lv = valueOrElse(getInteger(kb), kc)
3508- let oq = bO(B)
3509- let kq = valueOrElse(getString(oq), aM)
3510- let cj = valueOrElse(getInteger(dl, bU), 0)
3511- let or = (toString(cj) + "_T_0")
3512- $Tuple2([IntegerEntry(K(B), lv), IntegerEntry(kb, kc), StringEntry(L(B), kq), StringEntry(oq, or)], or)
3498+ let ke = A(B)
3499+ let kf = aj(valueOrElse(getInteger(E(B)), 0))
3500+ let ly = valueOrElse(getInteger(ke), kf)
3501+ let ot = bP(B)
3502+ let kt = valueOrElse(getString(ot), aN)
3503+ let ck = valueOrElse(getInteger(dm, bV), 0)
3504+ let ou = (toString(ck) + "_T_0")
3505+ $Tuple2([IntegerEntry(K(B), ly), IntegerEntry(ke, kf), StringEntry(L(B), kt), StringEntry(ot, ou)], ou)
35133506 }
35143507
35153508
35163509
3517-@Callable(gN)
3510+@Callable(gO)
35183511 func breakAttempt () = {
3519- let mm = mi(gN)
3520- let B = valueOrErrorMessage(getString(bM(toString(gN.caller))), "You don't have a duck staked")
3521- let oq = bO(B)
3522- let kq = valueOrElse(getString(oq), aM)
3523- if ((split(kq, "_")[br] != "T"))
3512+ let mp = ml(gO)
3513+ let B = valueOrErrorMessage(getString(bN(toString(gO.caller))), "You don't have a duck staked")
3514+ let ot = bP(B)
3515+ let kt = valueOrElse(getString(ot), aN)
3516+ if ((split(kt, "_")[bs] != "T"))
35243517 then throw("Your duck is not in the tournament")
35253518 else {
3526- let os = getIntegerValue(K(B))
3527- let lB = getStringValue(L(B))
3528- $Tuple2(((mm :+ IntegerEntry(A(B), os)) :+ StringEntry(oq, lB)), kq)
3529- }
3530- }
3531-
3532-
3533-
3534-@Callable(gN)
3535-func exitTournamentInternal (B) = if ((gN.caller != this))
3519+ let ov = getIntegerValue(K(B))
3520+ let lE = getStringValue(L(B))
3521+ $Tuple2(((mp :+ IntegerEntry(A(B), ov)) :+ StringEntry(ot, lE)), kt)
3522+ }
3523+ }
3524+
3525+
3526+
3527+@Callable(gO)
3528+func exitTournamentInternal (B) = if ((gO.caller != this))
35363529 then throw("Access denied")
35373530 else {
3538- let os = getIntegerValue(K(B))
3539- let lB = getStringValue(L(B))
3540- $Tuple2([IntegerEntry(A(B), os), StringEntry(bO(B), lB)], false)
3531+ let ov = getIntegerValue(K(B))
3532+ let lE = getStringValue(L(B))
3533+ $Tuple2([IntegerEntry(A(B), ov), StringEntry(bP(B), lE)], false)
35413534 }
35423535
35433536
35443537
3545-@Callable(gN)
3546-func exitDeliveryInternal (B) = if ((gN.caller != this))
3538+@Callable(gO)
3539+func exitDeliveryInternal (B) = if ((gO.caller != this))
35473540 then throw("Access denied")
35483541 else {
3549- let ni = ls(B, false, 0, 0)
3550- $Tuple2((ni._1 ++ ni._2), false)
3542+ let nl = lv(B, false, 0, 0)
3543+ $Tuple2((nl._1 ++ nl._2), false)
35513544 }
35523545
35533546
35543547
3555-@Callable(gN)
3556-func autoExitDelivery (B,jV,ot,lt) = if ((gN.caller != this))
3548+@Callable(gO)
3549+func autoExitDelivery (B,jY,ow,lw) = if ((gO.caller != this))
35573550 then throw("Access denied")
35583551 else {
3559- let ni = ls(B, true, jV, lt)
3560- $Tuple2(ni._1, ni._3)
3552+ let nl = lv(B, true, jY, lw)
3553+ $Tuple2(nl._1, nl._3)
35613554 }
35623555
35633556
35643557
3565-@Callable(gN)
3566-func breakDelivery () = $Tuple2(mi(gN), "breakDelivery")
3567-
3568-
3569-
3570-@Callable(gN)
3571-func prepareRobbery (jQ,jR) = {
3572- let mm = mi(gN)
3573- if (!(sigVerify_8Kb(jQ, jR, ec)))
3558+@Callable(gO)
3559+func breakDelivery () = $Tuple2(ml(gO), "breakDelivery")
3560+
3561+
3562+
3563+@Callable(gO)
3564+func prepareRobbery (jT,jU) = {
3565+ let mp = ml(gO)
3566+ if (!(sigVerify_8Kb(jT, jU, ed)))
35743567 then throw("signature does not match")
3575- else if ((size(gN.payments) != 1))
3568+ else if ((size(gO.payments) != 1))
35763569 then throw("exactly 1 payment must be attached")
35773570 else {
3578- let mn = gN.payments[0]
3579- let ou = mn.amount
3580- if (if (!(isDefined(mn.assetId)))
3571+ let mq = gO.payments[0]
3572+ let ox = mq.amount
3573+ if (if (!(isDefined(mq.assetId)))
35813574 then true
3582- else (value(mn.assetId) != ds))
3575+ else (value(mq.assetId) != dt))
35833576 then throw("WLGOLD payments only!")
35843577 else {
3585- let fs = split(toUtf8String(jQ), "|")
3586- if ((size(fs) != 2))
3578+ let ft = split(toUtf8String(jT), "|")
3579+ if ((size(ft) != 2))
35873580 then throw("Wrong message format")
35883581 else {
3589- let B = fs[0]
3590- if (lq(B))
3582+ let B = ft[0]
3583+ if (lt(B))
35913584 then throw("prepareRobbery_checkTournament")
3592- else if (lr(B))
3585+ else if (lu(B))
35933586 then throw("prepareRobbery_checkDelivery")
35943587 else {
35953588 let aB = ax(this, B)._1
3596- if ((aB > ou))
3597- then throw(((("Payment " + toString(ou)) + " < required ") + toString(aB)))
3589+ if ((aB > ox))
3590+ then throw(((("Payment " + toString(ox)) + " < required ") + toString(aB)))
35983591 else {
3599- let ov = split(fs[1], "_")
3592+ let oy = split(ft[1], "_")
36003593 let aA = lastBlock.timestamp
36013594 let aC = valueOrElse(getInteger(S(B)), 0)
36023595 let aD = valueOrElse(getString(T(B)), "")
36063599 else false)
36073600 then throw(("You already started robbing, wait till " + toString(aE)))
36083601 else {
3609- func ow (eU,Q) = {
3610- let ox = valueOrElse(getInteger(P(Q)), 0)
3611- let oy = valueOrElse(getInteger(R(Q)), 0)
3612- if ((ox > size(v)))
3602+ func oz (eV,Q) = {
3603+ let oA = valueOrElse(getInteger(P(Q)), 0)
3604+ let oB = valueOrElse(getInteger(R(Q)), 0)
3605+ if ((oA > size(v)))
36133606 then throw("Invalid state")
3614- else if ((aA > oy))
3607+ else if ((aA > oB))
36153608 then {
3616- let oz = valueOrElse(getInteger(bw(Q)), 0)
3617- if ((0 >= oz))
3618- then eU
3609+ let oC = valueOrElse(getInteger(bx(Q)), 0)
3610+ if ((0 >= oC))
3611+ then eV
36193612 else {
3620- let gu = value(assetInfo(fromBase58String(Q)))
3621- let kw = split(gu.description, "_")
3622- let ki = dK(kw[do])
3623- let oA = kh(Q, ki)
3624- let gT = (aA - oz)
3625- let kz = fraction(gT, (oA * ki), a)
3626- if ((w > kz))
3627- then eU
3628- else (eU :+ Q)
3613+ let gv = value(assetInfo(fromBase58String(Q)))
3614+ let kz = split(gv.description, "_")
3615+ let kl = dL(kz[dp])
3616+ let oD = kk(Q, kl)
3617+ let gU = (aA - oC)
3618+ let kC = fraction(gU, (oD * kl), a)
3619+ if ((w > kC))
3620+ then eV
3621+ else (eV :+ Q)
36293622 }
36303623 }
3631- else eU
3624+ else eV
36323625 }
36333626
3634- let oB = {
3635- let eW = ov
3636- let eX = size(eW)
3637- let eY = nil
3638- func eZ (fa,fb) = if ((fb >= eX))
3639- then fa
3640- else ow(fa, eW[fb])
3641-
3642- func fc (fa,fb) = if ((fb >= eX))
3643- then fa
3627+ let oE = {
3628+ let eX = oy
3629+ let eY = size(eX)
3630+ let eZ = nil
3631+ func fa (fb,fc) = if ((fc >= eY))
3632+ then fb
3633+ else oz(fb, eX[fc])
3634+
3635+ func fd (fb,fc) = if ((fc >= eY))
3636+ then fb
36443637 else throw("List size exceeds 10")
36453638
3646- fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
3639+ fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
36473640 }
3648- if ((size(oB) == 0))
3641+ if ((size(oE) == 0))
36493642 then throw("No candidates for robbery")
36503643 else {
3651- let oC = dV(size(oB), jQ, jR)
3652- let Q = oB[oC]
3653- $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (aA + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ mm), Q)
3644+ let oF = dW(size(oE), jT, jU)
3645+ let Q = oE[oF]
3646+ $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (aA + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ mp), Q)
36543647 }
36553648 }
36563649 }
36623655
36633656
36643657
3665-@Callable(gN)
3666-func robLand (jQ,jR) = {
3667- let mm = mi(gN)
3668- if (!(sigVerify_8Kb(jQ, jR, ec)))
3658+@Callable(gO)
3659+func robLand (jT,jU) = {
3660+ let mp = ml(gO)
3661+ if (!(sigVerify_8Kb(jT, jU, ed)))
36693662 then throw("signature does not match")
36703663 else {
3671- let bQ = toString(gN.caller)
3672- let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked")
3664+ let bR = toString(gO.caller)
3665+ let B = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
36733666 let aA = lastBlock.timestamp
3674- $Tuple2((mm :+ IntegerEntry(N(B), aA)), 0)
3675- }
3676- }
3677-
3678-
3679-
3680-@Callable(gN)
3667+ $Tuple2((mp :+ IntegerEntry(N(B), aA)), 0)
3668+ }
3669+ }
3670+
3671+
3672+
3673+@Callable(gO)
36813674 func acceptDelivery () = {
3682- let mm = mi(gN)
3683- let bQ = toString(gN.caller)
3684- let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked")
3685- let oD = valueOrElse(getInteger(di, bS), 0)
3686- let lz = valueOrElse(getInteger(di, bT), 0)
3687- if ((aP > (oD - lz)))
3688- then throw(((("Delivery is not available, fund=" + dP(oD, 6)) + ", locked=") + dP(lz, 6)))
3675+ let mp = ml(gO)
3676+ let bR = toString(gO.caller)
3677+ let B = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
3678+ let oG = valueOrElse(getInteger(dj, bT), 0)
3679+ let lC = valueOrElse(getInteger(dj, bU), 0)
3680+ if ((aQ > (oG - lC)))
3681+ then throw(((("Delivery is not available, fund=" + dQ(oG, 6)) + ", locked=") + dQ(lC, 6)))
36893682 else {
36903683 let aA = lastBlock.timestamp
3691- let oE = valueOrElse(getInteger(U(B)), 0)
3692- if ((oE > aA))
3693- then throw(("Delivery is forbidden for your duck until " + toString(oE)))
3684+ let oH = valueOrElse(getInteger(U(B)), 0)
3685+ if ((oH > aA))
3686+ then throw(("Delivery is forbidden for your duck until " + toString(oH)))
36943687 else {
36953688 let av = getIntegerValue(A(B))
36963689 if ((0 >= av))
36973690 then throw("You cannot accept delivery with zero health")
36983691 else {
3699- let ly = V(bQ)
3700- let fU = valueOrElse(getInteger(ly), 0)
3701- let oF = valueOrElse(getInteger(W(bQ)), 0)
3702- let oG = (aA / a)
3703- let oH = valueOrElse(getInteger(dm, d(bQ)), 0)
3704- let oI = (aR + (oH / aS))
3705- if (if ((fU >= oI))
3706- then (oF == oG)
3692+ let lB = V(bR)
3693+ let fV = valueOrElse(getInteger(lB), 0)
3694+ let oI = valueOrElse(getInteger(W(bR)), 0)
3695+ let oJ = (aA / a)
3696+ let oK = valueOrElse(getInteger(dn, d(bR)), 0)
3697+ let oL = (aS + (oK / aT))
3698+ if (if ((fV >= oL))
3699+ then (oI == oJ)
37073700 else false)
3708- then throw((("You already used " + toString(oI)) + " delivery attempts for today"))
3709- else if (lq(B))
3701+ then throw((("You already used " + toString(oL)) + " delivery attempts for today"))
3702+ else if (lt(B))
37103703 then throw("acceptDelivery_checkTournament")
3711- else if (lr(B))
3704+ else if (lu(B))
37123705 then throw("acceptDelivery_checkDelivery")
37133706 else {
3714- let oJ = dF(invoke(di, "updateDeliveryLocked", [(lz + aP)], nil))
3715- let oq = bO(B)
3716- let kq = valueOrElse(getString(oq), aM)
3717- let oK = (toString(aA) + "_D_0")
3718- $Tuple2(([StringEntry(L(B), kq), StringEntry(oq, oK), IntegerEntry(ly, if ((oF != oG))
3707+ let oM = dG(invoke(dj, "updateDeliveryLocked", [(lC + aQ)], nil))
3708+ let ot = bP(B)
3709+ let kt = valueOrElse(getString(ot), aN)
3710+ let oN = (toString(aA) + "_D_0")
3711+ $Tuple2(([StringEntry(L(B), kt), StringEntry(ot, oN), IntegerEntry(lB, if ((oI != oJ))
37193712 then 0
3720- else fU)] ++ mm), $Tuple2(oK, oJ))
3713+ else fV)] ++ mp), $Tuple2(oN, oM))
37213714 }
37223715 }
37233716 }
37263719
37273720
37283721
3729-@Callable(gN)
3730-func checkDeliveryCallback (B) = if ((gN.caller != dl))
3722+@Callable(gO)
3723+func checkDeliveryCallback (B) = if ((gO.caller != dm))
37313724 then throw("Access denied")
3732- else $Tuple2(nil, lr(B))
3733-
3734-
3735-
3736-@Callable(gN)
3737-func genTestREADONLY (iz,gK) = {
3738- let oL = value(value(blockInfoByHeight(2827006)).vrf)
3739- let jL = hi(toBigInt((oL + sha256(toBytes(iz)))))
3740- $Tuple2(nil, hz(jL, gK))
3725+ else $Tuple2(nil, lu(B))
3726+
3727+
3728+
3729+@Callable(gO)
3730+func genTestREADONLY (iB,gL) = {
3731+ let oO = value(value(blockInfoByHeight(2827006)).vrf)
3732+ let jO = hj(toBigInt((oO + sha256(toBytes(iB)))))
3733+ $Tuple2(nil, hB(jO, gL, -1))
37413734 }
37423735
37433736
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 86400000
55
66 func b (c) = ("lastArbTimeUser_" + c)
77
88
99 func d (c) = ("acresStakedAmountByUser_" + c)
1010
1111
1212 let e = 100000000
1313
1414 let f = 3200
1515
1616 let g = 4000
1717
1818 let h = 3
1919
2020 let i = 100000000
2121
2222 let j = 400
2323
2424 let k = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
2525
2626 let l = 0
2727
2828 let m = 1
2929
3030 let n = 2
3131
3232 let o = 3
3333
3434 let p = 4
3535
3636 let q = 0
3737
3838 let r = 6
3939
4040 let s = 2
4141
4242 let t = 2
4343
4444 let u = 30
4545
4646 let v = [0, 600000, 900000, 43200000, 21600000]
4747
4848 let w = 20000000
4949
5050 let x = 1
5151
5252 let y = 0
5353
5454 let z = 1
5555
5656 func A (B) = ("duckHealth_" + B)
5757
5858
5959 func C (B) = ("duckChars_" + B)
6060
6161
6262 func D (B) = ("duckXP_" + B)
6363
6464
6565 func E (B) = ("duckLevel_" + B)
6666
6767
6868 func F (B) = ("duckFreePoints_" + B)
6969
7070
7171 func G (B) = ("duckEquipment_" + B)
7272
7373
7474 func H (c) = ("userXP_" + c)
7575
7676
7777 func I (c) = ("userLevel_" + c)
7878
7979
8080 func J (c) = ("userFreePoints_" + c)
8181
8282
8383 func K (B) = ("savedHealth_" + B)
8484
8585
8686 func L (B) = ("savedLocation_" + B)
8787
8888
8989 func M (B) = ("duckBuffs_" + B)
9090
9191
9292 func N (B) = ("lastRobberyTime_" + B)
9393
9494
9595 func O (B) = ("lastRobberyCost_" + B)
9696
9797
9898 func P (Q) = ("landRobberyState_" + Q)
9999
100100
101101 func R (Q) = ("landCooldownETA_" + Q)
102102
103103
104104 func S (B) = ("duckRobberyState_" + B)
105105
106106
107107 func T (B) = ("lockedLandByDuck_" + B)
108108
109109
110110 func U (B) = ("deliveryDelayByDuck_" + B)
111111
112112
113113 func V (c) = ("userDeliveryCount_" + c)
114114
115115
116116 func W (c) = ("userLastDeliveryDay_" + c)
117117
118118
119119 let X = 10000
120120
121121 let Y = 10000
122122
123123 let Z = 2000
124124
125125 let aa = 100000
126126
127127 let ab = 1000000
128128
129129 let ac = 5000000
130130
131131 let ad = 10000
132132
133133 let ae = 1000000
134134
135135 let af = 1000000
136136
137137 let ag = 10000
138138
139139 func ah (ai) = fraction(f, pow(ai, 4, g, 4, 4, DOWN), e)
140140
141141
142142 func aj (ak) = (100 + ak)
143143
144144
145145 func al (am,an) = {
146146 let ao = ah(an)
147147 [ao, (h * (ao - am))]
148148 }
149149
150150
151151 func ap (aq,B,ar,as) = {
152152 let at = split(valueOrElse(getString(aq, C(B)), "0_0_0_0_0"), "_")
153153 let au = valueOrElse(getInteger(aq, E(B)), 0)
154154 let av = valueOrElse(getInteger(aq, A(B)), aj(au))
155155 let aw = split(valueOrElse(getString(aq, M(B)), "0_0_0_0_0"), "_")
156156 ([parseIntValue(at[l]), parseIntValue(at[m]), parseIntValue(at[n]), parseIntValue(at[o]), parseIntValue(at[p]), au, av] ++ (if (as)
157157 then [ar, ar, ar, ar, ar]
158158 else [parseIntValue(aw[l]), parseIntValue(aw[m]), parseIntValue(aw[n]), parseIntValue(aw[o]), parseIntValue(aw[p])]))
159159 }
160160
161161
162162 func ax (aq,B) = {
163163 let ay = valueOrElse(getInteger(aq, O(B)), 0)
164164 let az = valueOrElse(getInteger(aq, N(B)), 0)
165165 let aA = lastBlock.timestamp
166166 let aB = max([i, (ay - (j * (aA - az)))])
167167 let aC = valueOrElse(getInteger(aq, S(B)), 0)
168168 let aD = valueOrElse(getString(aq, T(B)), "")
169169 let aE = valueOrElse(getInteger(aq, R(aD)), 0)
170170 $Tuple5(aB, az, aC, aD, aE)
171171 }
172172
173173
174174 let aF = "LAND"
175175
176176 let aG = "DUCK"
177177
178178 let aH = "PRESALE"
179179
180180 let aI = 6
181181
182-let aJ = 25
183-
184-let aK = 3456000
185-
186-let aL = 10000000000
187-
188-let aM = "Africa_F_Africa"
189-
190-let aN = 39637
191-
192-let aO = 10
193-
194-let aP = 50000
195-
196-let aQ = 600000
197-
198-let aR = 1
199-
200-let aS = 50000000
201-
202-let aT = ["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"]
203-
204-let aU = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
205-
206-let aV = 10000000
207-
208-let aW = [15, 16, 17, 18, 19, 20]
209-
210-let aX = ["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_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_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_"]
211-
212-let aY = 6
213-
214-let aZ = 8
215-
216-let ba = 9
217-
218-let bb = 10
182+let aJ = 5
183+
184+let aK = 25
185+
186+let aL = 3456000
187+
188+let aM = 10000000000
189+
190+let aN = "Africa_F_Africa"
191+
192+let aO = 39637
193+
194+let aP = 10
195+
196+let aQ = 50000
197+
198+let aR = 600000
199+
200+let aS = 1
201+
202+let aT = 50000000
203+
204+let aU = ["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"]
205+
206+let aV = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
207+
208+let aW = 10000000
209+
210+let aX = [15, 16, 17, 18, 19, 20]
211+
212+let aY = ["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_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_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_"]
213+
214+let aZ = 6
215+
216+let ba = 8
217+
218+let bb = 9
219219
220220 let bc = 10
221221
222-let bd = 0
223-
224-let be = 1
225-
226-let bf = 2
227-
228-let bg = 3
229-
230-let bh = 4
231-
232-let bi = 0
233-
234-let bj = 1
235-
236-let bk = 2
237-
238-let bl = 3
239-
240-let bm = 0
241-
242-let bn = 1
243-
244-let bo = 2
245-
246-let bp = 3
247-
248-let bq = 0
249-
250-let br = 1
251-
252-let bs = 2
253-
254-func bt (bu) = ("no_" + bu)
255-
256-
257-func bv (bu) = ("lcna_" + bu)
258-
259-
260-func bw (bu) = ("st_" + bu)
261-
262-
263-func bx (by,bu) = makeString(["las", by, bu], "_")
264-
265-
266-func bz (bA,bu,bB) = ((((("sttao_" + bA) + "_") + bu) + "_") + bB)
267-
268-
269-func bC (Q) = ("wh_" + Q)
270-
271-
272-func bD (bu) = ("infraLevel_" + bu)
273-
274-
275-func bE (Q) = ("fortifications_" + Q)
276-
277-
278-func bF (bu) = ("duckCustomNameByAssetId_" + bu)
279-
280-
281-func bG (c) = ("accountCustomNameByAddr_" + c)
282-
283-
284-func bH (c) = ("accRefBy_" + c)
285-
286-
287-func bI (B) = ("onboardArtActivatedOnDuck_" + B)
288-
289-
290-func bJ (c) = ("onboardArtActivatedDuckBy_" + c)
291-
292-
293-func bK (c) = ("accReferrals_" + c)
294-
295-
296-func bL (bu) = ("duckOwner_" + bu)
297-
298-
299-func bM (bB) = ("stakedDuckByOwner_" + bB)
300-
301-
302-func bN (B) = ("backPack_" + B)
303-
304-
305-func bO (B) = ("duckLocation_" + B)
306-
307-
308-func bP (bQ) = ("%s%s__userGwlReleaseTime__" + bQ)
309-
310-
311-func bR () = "emergencyWarehouseProducts"
312-
313-
314-let bS = "deliveryFund"
315-
316-let bT = "deliveryLocked"
317-
318-let bU = "%s__lastTourId"
319-
320-func bV (bW) = ("%s%d__tourStaticData__" + toString(bW))
321-
322-
323-func bX (bW) = ("%s%d__tourDynamicData__" + toString(bW))
324-
325-
326-func bY (bW,B) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bW), B], "__")
327-
328-
329-let bZ = 0
330-
331-let ca = 1
332-
333-let cb = 6
334-
335-let cc = 1
336-
337-func cd (ce,bW) = {
338- let cf = split(valueOrErrorMessage(getString(ce, bV(bW)), (("Error reading tournament " + toString(bW)) + " data")), "__")
339- let cg = split_4C(valueOrErrorMessage(getString(ce, bX(bW)), (("Error reading tournament " + toString(bW)) + " data")), "__")
340-[cf, cg]
341- }
342-
343-
344-func ch (ce,ci) = {
345- let cj = valueOrElse(getInteger(ce, bU), 0)
346- let ck = split(ci, "_")
222+let bd = 10
223+
224+let be = 0
225+
226+let bf = 1
227+
228+let bg = 2
229+
230+let bh = 3
231+
232+let bi = 4
233+
234+let bj = 0
235+
236+let bk = 1
237+
238+let bl = 2
239+
240+let bm = 3
241+
242+let bn = 0
243+
244+let bo = 1
245+
246+let bp = 2
247+
248+let bq = 3
249+
250+let br = 0
251+
252+let bs = 1
253+
254+let bt = 2
255+
256+func bu (bv) = ("no_" + bv)
257+
258+
259+func bw (bv) = ("lcna_" + bv)
260+
261+
262+func bx (bv) = ("st_" + bv)
263+
264+
265+func by (bz,bv) = makeString(["las", bz, bv], "_")
266+
267+
268+func bA (bB,bv,bC) = ((((("sttao_" + bB) + "_") + bv) + "_") + bC)
269+
270+
271+func bD (Q) = ("wh_" + Q)
272+
273+
274+func bE (bv) = ("infraLevel_" + bv)
275+
276+
277+func bF (Q) = ("fortifications_" + Q)
278+
279+
280+func bG (bv) = ("duckCustomNameByAssetId_" + bv)
281+
282+
283+func bH (c) = ("accountCustomNameByAddr_" + c)
284+
285+
286+func bI (c) = ("accRefBy_" + c)
287+
288+
289+func bJ (B) = ("onboardArtActivatedOnDuck_" + B)
290+
291+
292+func bK (c) = ("onboardArtActivatedDuckBy_" + c)
293+
294+
295+func bL (c) = ("accReferrals_" + c)
296+
297+
298+func bM (bv) = ("duckOwner_" + bv)
299+
300+
301+func bN (bC) = ("stakedDuckByOwner_" + bC)
302+
303+
304+func bO (B) = ("backPack_" + B)
305+
306+
307+func bP (B) = ("duckLocation_" + B)
308+
309+
310+func bQ (bR) = ("%s%s__userGwlReleaseTime__" + bR)
311+
312+
313+func bS () = "emergencyWarehouseProducts"
314+
315+
316+let bT = "deliveryFund"
317+
318+let bU = "deliveryLocked"
319+
320+let bV = "%s__lastTourId"
321+
322+func bW (bX) = ("%s%d__tourStaticData__" + toString(bX))
323+
324+
325+func bY (bX) = ("%s%d__tourDynamicData__" + toString(bX))
326+
327+
328+func bZ (bX,B) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bX), B], "__")
329+
330+
331+let ca = 0
332+
333+let cb = 1
334+
335+let cc = 6
336+
337+let cd = 1
338+
339+func ce (cf,bX) = {
340+ let cg = split(valueOrErrorMessage(getString(cf, bW(bX)), (("Error reading tournament " + toString(bX)) + " data")), "__")
341+ let ch = split_4C(valueOrErrorMessage(getString(cf, bY(bX)), (("Error reading tournament " + toString(bX)) + " data")), "__")
342+[cg, ch]
343+ }
344+
345+
346+func ci (cf,cj) = {
347+ let ck = valueOrElse(getInteger(cf, bV), 0)
348+ let cl = split(cj, "_")
347349 let aA = lastBlock.timestamp
348- let cl = cd(ce, cj)
349- let cf = cl[bZ]
350- let cg = cl[ca]
351- if (if (if ((ck[br] == "T"))
352- then (parseIntValue(ck[bq]) == cj)
350+ let cm = ce(cf, ck)
351+ let cg = cm[ca]
352+ let ch = cm[cb]
353+ if (if (if ((cl[bs] == "T"))
354+ then (parseIntValue(cl[br]) == ck)
353355 else false)
354- then (cg[cc] == "INPROGRESS")
356+ then (ch[cd] == "INPROGRESS")
355357 else false)
356- then (parseIntValue(cf[cb]) > aA)
358+ then (parseIntValue(cg[cc]) > aA)
357359 else false
358360 }
359361
360362
361-func cm (ci) = {
362- let ck = split(ci, "_")
363+func cn (cj) = {
364+ let cl = split(cj, "_")
363365 let aA = lastBlock.timestamp
364- let cn = parseIntValue(ck[bq])
365- let co = parseIntValue(ck[bs])
366- if (if ((ck[br] == "D"))
367- then ((cn + aQ) > aA)
366+ let co = parseIntValue(cl[br])
367+ let cp = parseIntValue(cl[bt])
368+ if (if ((cl[bs] == "D"))
369+ then ((co + aR) > aA)
368370 else false)
369- then (3 >= co)
371+ then (3 >= cp)
370372 else false
371373 }
372374
373375
374-func cp (ci) = {
375- let cq = split(ci, "_")[br]
376- if ((cq != "T"))
377- then (cq != "D")
376+func cq (cj) = {
377+ let cr = split(cj, "_")[bs]
378+ if ((cr != "T"))
379+ then (cr != "D")
378380 else false
379381 }
380382
381383
382-func cr (ce,ci) = {
383- let cj = valueOrElse(getInteger(ce, bU), 0)
384- let ck = split(ci, "_")
384+func cs (cf,cj) = {
385+ let ck = valueOrElse(getInteger(cf, bV), 0)
386+ let cl = split(cj, "_")
385387 let aA = lastBlock.timestamp
386- let cl = cd(ce, cj)
387- let cf = cl[bZ]
388- let cg = cl[ca]
389- let cq = ck[br]
390- if ((cq == "D"))
388+ let cm = ce(cf, ck)
389+ let cg = cm[ca]
390+ let ch = cm[cb]
391+ let cr = cl[bs]
392+ if ((cr == "D"))
391393 then true
392- else if (if (if ((ck[br] == "T"))
393- then (parseIntValue(ck[bq]) == cj)
394+ else if (if (if ((cl[bs] == "T"))
395+ then (parseIntValue(cl[br]) == ck)
394396 else false)
395- then (cg[cc] == "INPROGRESS")
397+ then (ch[cd] == "INPROGRESS")
396398 else false)
397- then (parseIntValue(cf[cb]) > aA)
399+ then (parseIntValue(cg[cc]) > aA)
398400 else false
399401 }
400402
401403
402-func cs (ct) = (parseIntValue(ct[aY]) * aV)
403-
404-
405-func cu (cv,cw,cx) = throw(((((("Cheat attempt: oldLoc=" + cv) + ", newLoc=") + cw) + ", case=") + toString(cx)))
406-
407-
408-let cy = false
404+func ct (cu) = (parseIntValue(cu[aZ]) * aW)
405+
406+
407+func cv (cw,cx,cy) = throw(((((("Cheat attempt: oldLoc=" + cw) + ", newLoc=") + cx) + ", case=") + toString(cy)))
408+
409409
410410 let cz = false
411411
412-let cA = 86400000
413-
414-let cB = take(drop(this.bytes, 1), 1)
415-
416-let cC = {
417- let cD = cB
418- if ((base58'2W' == cD))
412+let cA = false
413+
414+let cB = 86400000
415+
416+let cC = take(drop(this.bytes, 1), 1)
417+
418+let cD = {
419+ let cE = cC
420+ if ((base58'2W' == cE))
419421 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
420- else if ((base58'2T' == cD))
422+ else if ((base58'2T' == cE))
421423 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
422424 else throw("Unknown chain")
423425 }
424426
425-let cE = {
426- let cD = cB
427- if ((base58'2W' == cD))
427+let cF = {
428+ let cE = cC
429+ if ((base58'2W' == cE))
428430 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
429- else if ((base58'2T' == cD))
431+ else if ((base58'2T' == cE))
430432 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
431433 else throw("Unknown chain")
432434 }
433435
434-let cF = {
435- let cD = cB
436- if ((base58'2W' == cD))
436+let cG = {
437+ let cE = cC
438+ if ((base58'2W' == cE))
437439 then 10000000000
438- else if ((base58'2T' == cD))
440+ else if ((base58'2T' == cE))
439441 then 100000000
440442 else throw("Unknown chain")
441443 }
442444
443-let cG = {
444- let cD = cB
445- if ((base58'2W' == cD))
446- then cA
447- else if ((base58'2T' == cD))
445+let cH = {
446+ let cE = cC
447+ if ((base58'2W' == cE))
448+ then cB
449+ else if ((base58'2T' == cE))
448450 then 60000
449451 else throw("Unknown chain")
450452 }
451453
452-let cH = {
453- let cD = cB
454- if ((base58'2W' == cD))
454+let cI = {
455+ let cE = cC
456+ if ((base58'2W' == cE))
455457 then 10800000
456- else if ((base58'2T' == cD))
458+ else if ((base58'2T' == cE))
457459 then 900000
458460 else throw("Unknown chain")
459461 }
460462
461-let cI = "__"
462-
463-let cJ = 1000000
464-
465-let cK = 100000000
466-
467-let cL = 25
468-
469-let cM = 100
470-
471-let cN = 225
472-
473-let cO = 400
474-
475-let cP = 625
476-
477-let cQ = [0, 1, 2, 3, 4, 5]
478-
479-func cR (cS,cT) = valueOrErrorMessage(getString(cS, cT), makeString(["mandatory ", toString(cS), ".", cT, " is not defined"], ""))
480-
481-
482-let cU = 1
483-
484-let cV = 2
485-
486-let cW = 3
487-
488-let cX = 4
489-
490-let cY = 7
491-
492-let cZ = 8
493-
494-func da () = "%s__restConfig"
495-
496-
497-func db () = "%s__restAddr"
498-
499-
500-func dc (dd) = split_4C(cR(dd, da()), cI)
501-
502-
503-func de (df,dg) = valueOrErrorMessage(addressFromString(df[dg]), ("Rest cfg doesn't contain address at index " + toString(dg)))
504-
505-
506-let dh = addressFromStringValue(valueOrElse(getString(this, db()), cE))
507-
508-let df = dc(dh)
509-
510-let aq = de(df, cU)
511-
512-let di = de(df, cV)
513-
514-let dj = de(df, cW)
515-
516-let dk = de(df, cX)
517-
518-let dl = de(df, cY)
519-
520-let dm = de(df, cZ)
521-
522-let dn = 0
523-
524-let do = 1
525-
526-let dp = 2
527-
528-let dq = 3
529-
530-let dr = "wlg_assetId"
531-
532-let ds = valueOrErrorMessage(getBinary(dk, dr), "WLGOLD is not issued yet")
533-
534-let dt = "acresAssetId"
535-
536-let du = valueOrErrorMessage(getBinary(dm, dt), "ACRES is not issued yet")
537-
538-let dv = 2
539-
540-func dw (cS) = ("finishBlockForAddr_" + cS)
541-
542-
543-func dx () = "resTypesProportions"
544-
545-
546-func dy (dz) = ("resTypesByContinent_" + dz)
547-
548-
549-func dA (bB) = ("stakedLandsByOwner_" + bB)
550-
551-
552-func dB (bB) = ("stakedPiecesByOwner_" + bB)
553-
554-
555-func dC (dD) = {
556- let cD = dD
557- if ($isInstanceOf(cD, "String"))
463+let cJ = "__"
464+
465+let cK = 1000000
466+
467+let cL = 100000000
468+
469+let cM = 25
470+
471+let cN = 100
472+
473+let cO = 225
474+
475+let cP = 400
476+
477+let cQ = 625
478+
479+let cR = [0, 1, 2, 3, 4, 5]
480+
481+func cS (cT,cU) = valueOrErrorMessage(getString(cT, cU), makeString(["mandatory ", toString(cT), ".", cU, " is not defined"], ""))
482+
483+
484+let cV = 1
485+
486+let cW = 2
487+
488+let cX = 3
489+
490+let cY = 4
491+
492+let cZ = 7
493+
494+let da = 8
495+
496+func db () = "%s__restConfig"
497+
498+
499+func dc () = "%s__restAddr"
500+
501+
502+func dd (de) = split_4C(cS(de, db()), cJ)
503+
504+
505+func df (dg,dh) = valueOrErrorMessage(addressFromString(dg[dh]), ("Rest cfg doesn't contain address at index " + toString(dh)))
506+
507+
508+let di = addressFromStringValue(valueOrElse(getString(this, dc()), cF))
509+
510+let dg = dd(di)
511+
512+let aq = df(dg, cV)
513+
514+let dj = df(dg, cW)
515+
516+let dk = df(dg, cX)
517+
518+let dl = df(dg, cY)
519+
520+let dm = df(dg, cZ)
521+
522+let dn = df(dg, da)
523+
524+let do = 0
525+
526+let dp = 1
527+
528+let dq = 2
529+
530+let dr = 3
531+
532+let ds = "wlg_assetId"
533+
534+let dt = valueOrErrorMessage(getBinary(dl, ds), "WLGOLD is not issued yet")
535+
536+let du = "acresAssetId"
537+
538+let dv = valueOrErrorMessage(getBinary(dn, du), "ACRES is not issued yet")
539+
540+let dw = 2
541+
542+func dx (cT) = ("finishBlockForAddr_" + cT)
543+
544+
545+func dy () = "resTypesProportions"
546+
547+
548+func dz (dA) = ("resTypesByContinent_" + dA)
549+
550+
551+func dB (bC) = ("stakedLandsByOwner_" + bC)
552+
553+
554+func dC (bC) = ("stakedPiecesByOwner_" + bC)
555+
556+
557+func dD (dE) = {
558+ let cE = dE
559+ if ($isInstanceOf(cE, "String"))
558560 then {
559- let dE = cD
560- dE
561+ let dF = cE
562+ dF
561563 }
562564 else throw("fail to cast into String")
563565 }
564566
565567
566-func dF (dD) = {
567- let cD = dD
568- if ($isInstanceOf(cD, "Int"))
568+func dG (dE) = {
569+ let cE = dE
570+ if ($isInstanceOf(cE, "Int"))
569571 then {
570- let dG = cD
571- dG
572+ let dH = cE
573+ dH
572574 }
573575 else throw("fail to cast into Int")
574576 }
575577
576578
577-func dH (dD) = {
578- let cD = dD
579- if ($isInstanceOf(cD, "List[Any]"))
579+func dI (dE) = {
580+ let cE = dE
581+ if ($isInstanceOf(cE, "List[Any]"))
580582 then {
581- let dI = cD
582- dI
583+ let dJ = cE
584+ dJ
583585 }
584586 else throw("fail to cast into List[Any]")
585587 }
586588
587589
588-func dJ (dD) = {
589- let cD = dD
590- if ($isInstanceOf(cD, "Boolean"))
590+func dK (dE) = {
591+ let cE = dE
592+ if ($isInstanceOf(cE, "Boolean"))
591593 then {
592- let dE = cD
593- dE
594+ let dF = cE
595+ dF
594596 }
595597 else throw("fail to cast into Boolean")
596598 }
597599
598600
599-func dK (dL) = {
600- let cD = dL
601- if (("S" == cD))
602- then cL
603- else if (("M" == cD))
604- then cM
605- else if (("L" == cD))
606- then cN
607- else if (("XL" == cD))
608- then cO
609- else if (("XXL" == cD))
610- then cP
601+func dL (dM) = {
602+ let cE = dM
603+ if (("S" == cE))
604+ then cM
605+ else if (("M" == cE))
606+ then cN
607+ else if (("L" == cE))
608+ then cO
609+ else if (("XL" == cE))
610+ then cP
611+ else if (("XXL" == cE))
612+ then cQ
611613 else throw("Unknown land size")
612614 }
613615
614616
615-func dM (dE) = isDefined(parseInt(dE))
616-
617-
618-func dN () = "contractsBlocked"
619-
620-
621-func dO (c) = ("lastTxIdByUser_" + c)
622-
623-
624-func dP (dQ,dR) = {
625- let dS = pow(10, 0, dR, 0, 0, DOWN)
626- let dT = toString((dQ % dS))
627- let dU = drop(toString(dS), (1 + size(dT)))
628- (((toString((dQ / dS)) + ".") + dU) + dT)
629- }
630-
631-
632-func dV (dW,dX,dY) = {
633- let dZ = sha256((dX + dY))
634- (toInt(dZ) % dW)
635- }
636-
637-
638-let ea = {
639- let cD = cB
640- if ((base58'2W' == cD))
617+func dN (dF) = isDefined(parseInt(dF))
618+
619+
620+func dO () = "contractsBlocked"
621+
622+
623+func dP (c) = ("lastTxIdByUser_" + c)
624+
625+
626+func dQ (dR,dS) = {
627+ let dT = pow(10, 0, dS, 0, 0, DOWN)
628+ let dU = toString((dR % dT))
629+ let dV = drop(toString(dT), (1 + size(dU)))
630+ (((toString((dR / dT)) + ".") + dV) + dU)
631+ }
632+
633+
634+func dW (dX,dY,dZ) = {
635+ let ea = sha256((dY + dZ))
636+ (toInt(ea) % dX)
637+ }
638+
639+
640+let eb = {
641+ let cE = cC
642+ if ((base58'2W' == cE))
641643 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
642- else if ((base58'2T' == cD))
644+ else if ((base58'2T' == cE))
643645 then this
644646 else throw("Unknown chain")
645647 }
646648
647-let eb = {
648- let cD = cB
649- if ((base58'2W' == cD))
649+let ec = {
650+ let cE = cC
651+ if ((base58'2W' == cE))
650652 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
651- else if ((base58'2T' == cD))
653+ else if ((base58'2T' == cE))
652654 then this
653655 else throw("Unknown chain")
654656 }
655657
656-let ec = {
657- let cD = cB
658- if ((base58'2W' == cD))
659- then if (cy)
658+let ed = {
659+ let cE = cC
660+ if ((base58'2W' == cE))
661+ then if (cz)
660662 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
661663 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
662- else if ((base58'2T' == cD))
664+ else if ((base58'2T' == cE))
663665 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
664666 else throw("Unknown chain")
665667 }
666668
667-let ed = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
668-
669-let ee = 300000
670-
671-let ef = 5000000
672-
673-let eg = 50
674-
675-let eh = 10000000
676-
677-let ei = {
678- let cD = cB
679- if ((base58'2W' == cD))
669+let ee = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
670+
671+let ef = 300000
672+
673+let eg = 5000000
674+
675+let eh = 50
676+
677+let ei = 10000000
678+
679+let ej = {
680+ let cE = cC
681+ if ((base58'2W' == cE))
680682 then 252289527462
681- else if ((base58'2T' == cD))
683+ else if ((base58'2T' == cE))
682684 then 2522895274
683685 else throw("Unknown chain")
684686 }
685687
686-let ej = {
687- let cD = cB
688- if ((base58'2W' == cD))
688+let ek = {
689+ let cE = cC
690+ if ((base58'2W' == cE))
689691 then 250000000
690- else if ((base58'2T' == cD))
692+ else if ((base58'2T' == cE))
691693 then 250000000
692694 else throw("Unknown chain")
693695 }
694696
695-let ek = 2500000000
696-
697-let el = toBigInt(5)
698-
699-let em = toBigInt(20)
700-
701-let en = toBigInt((20 * 20))
702-
703-let eo = toBigInt(((20 * 20) * 20))
704-
705-let ep = toBigInt((((20 * 20) * 20) * 20))
706-
707-let eq = toBigInt(((((20 * 20) * 20) * 20) * 20))
708-
709-let er = 500
710-
711-func es () = "nextLandNum"
712-
713-
714-func et (eu) = ("lcn_" + eu)
715-
716-
717-func ev (ew) = ("la_" + ew)
718-
719-
720-func ex (bu,bB) = ((("ilao_" + bu) + "_") + bB)
721-
722-
723-func ey (ew) = ("lo_" + ew)
724-
725-
726-func ez (eu) = ("duckByCustomName_" + eu)
727-
728-
729-func eA (eu) = ("accountByCustomName_" + eu)
730-
731-
732-func eB () = "oldiesList"
733-
734-
735-let eC = 0
736-
737-let eD = 1
738-
739-let eE = 2
740-
741-let eF = 0
742-
743-let eG = 5
744-
745-let eH = 6
746-
747-let eI = 7
748-
749-func eJ (ew,dL) = ((aF + ew) + dL)
750-
751-
752-func eK (eL,eM) = {
753- let eN = if ((eL >= 0))
754- then (((eL + eM) - 1) / eM)
755- else -((((-(eL) + eM) - 1) / eM))
756- (eN * cK)
757- }
758-
759-
760-func eO (eP,eQ) = {
761- let eR = (((((eQ[0] + eQ[1]) + eQ[2]) + eQ[3]) + eQ[4]) + eQ[5])
762- if ((0 >= eR))
697+let el = 2500000000
698+
699+let em = toBigInt(5)
700+
701+let en = toBigInt(20)
702+
703+let eo = toBigInt((20 * 20))
704+
705+let ep = toBigInt(((20 * 20) * 20))
706+
707+let eq = toBigInt((((20 * 20) * 20) * 20))
708+
709+let er = toBigInt(((((20 * 20) * 20) * 20) * 20))
710+
711+let es = 500
712+
713+func et () = "nextLandNum"
714+
715+
716+func eu (ev) = ("lcn_" + ev)
717+
718+
719+func ew (ex) = ("la_" + ex)
720+
721+
722+func ey (bv,bC) = ((("ilao_" + bv) + "_") + bC)
723+
724+
725+func ez (ex) = ("lo_" + ex)
726+
727+
728+func eA (ev) = ("duckByCustomName_" + ev)
729+
730+
731+func eB (ev) = ("accountByCustomName_" + ev)
732+
733+
734+func eC () = "oldiesList"
735+
736+
737+let eD = 0
738+
739+let eE = 1
740+
741+let eF = 2
742+
743+let eG = 0
744+
745+let eH = 5
746+
747+let eI = 6
748+
749+let eJ = 7
750+
751+func eK (ex,dM) = ((aF + ex) + dM)
752+
753+
754+func eL (eM,eN) = {
755+ let eO = if ((eM >= 0))
756+ then (((eM + eN) - 1) / eN)
757+ else -((((-(eM) + eN) - 1) / eN))
758+ (eO * cL)
759+ }
760+
761+
762+func eP (eQ,eR) = {
763+ let eS = (((((eR[0] + eR[1]) + eR[2]) + eR[3]) + eR[4]) + eR[5])
764+ if ((0 >= eS))
763765 then throw("Zero weights sum")
764766 else {
765- let eS = fraction(eP, cJ, eR)
766- func eT (eU,eV) = (eU :+ fraction(eV, eS, cJ))
767-
768- let eW = eQ
769- let eX = size(eW)
770- let eY = nil
771- func eZ (fa,fb) = if ((fb >= eX))
772- then fa
773- else eT(fa, eW[fb])
774-
775- func fc (fa,fb) = if ((fb >= eX))
776- then fa
767+ let eT = fraction(eQ, cK, eS)
768+ func eU (eV,eW) = (eV :+ fraction(eW, eT, cK))
769+
770+ let eX = eR
771+ let eY = size(eX)
772+ let eZ = nil
773+ func fa (fb,fc) = if ((fc >= eY))
774+ then fb
775+ else eU(fb, eX[fc])
776+
777+ func fd (fb,fc) = if ((fc >= eY))
778+ then fb
777779 else throw("List size exceeds 6")
778780
779- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
780- }
781- }
782-
783-
784-func fd (eP) = {
785- let fe = split(value(getString(dx())), "_")
786- if ((size(fe) != aI))
781+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
782+ }
783+ }
784+
785+
786+func fe (eQ) = {
787+ let ff = split(value(getString(dy())), "_")
788+ if ((size(ff) != aI))
787789 then throw("Wrong proportions data")
788790 else {
789- let ff = [parseIntValue(fe[0]), parseIntValue(fe[1]), parseIntValue(fe[2]), parseIntValue(fe[3]), parseIntValue(fe[4]), parseIntValue(fe[5])]
790- eO(eP, ff)
791- }
792- }
793-
794-
795-func fg (fh,fi,fj) = {
796- let fk = fd(fj)
797- func fl (eU,dg) = {
798- let fm = (parseIntValue(fi[dg]) - fk[dg])
799- if ((0 > fm))
800- then throw(((((("Not enough material idx=" + toString(dg)) + ", you have ") + fi[dg]) + ", but need ") + toString(fk[dg])))
801- else (eU :+ toString(fm))
791+ let fg = [parseIntValue(ff[0]), parseIntValue(ff[1]), parseIntValue(ff[2]), parseIntValue(ff[3]), parseIntValue(ff[4]), parseIntValue(ff[5])]
792+ eP(eQ, fg)
793+ }
794+ }
795+
796+
797+func fh (fi,fj,fk) = {
798+ let fl = fe(fk)
799+ func fm (eV,dh) = {
800+ let fn = (parseIntValue(fj[dh]) - fl[dh])
801+ if ((0 > fn))
802+ then throw(((((("Not enough material idx=" + toString(dh)) + ", you have ") + fj[dh]) + ", but need ") + toString(fl[dh])))
803+ else (eV :+ toString(fn))
802804 }
803805
804- if (fh)
806+ if (fi)
805807 then {
806- let eW = cQ
807- let eX = size(eW)
808- let eY = nil
809- func eZ (fa,fb) = if ((fb >= eX))
810- then fa
811- else fl(fa, eW[fb])
812-
813- func fc (fa,fb) = if ((fb >= eX))
814- then fa
808+ let eX = cR
809+ let eY = size(eX)
810+ let eZ = nil
811+ func fa (fb,fc) = if ((fc >= eY))
812+ then fb
813+ else fm(fb, eX[fc])
814+
815+ func fd (fb,fc) = if ((fc >= eY))
816+ then fb
815817 else throw("List size exceeds 6")
816818
817- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
818- }
819- else fi
820- }
821-
822-
823-func fn (fo,fp) = if ((fp == ""))
824- then $Tuple2(fo, false)
819+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
820+ }
821+ else fj
822+ }
823+
824+
825+func fo (fp,fq) = if ((fq == ""))
826+ then $Tuple2(fp, false)
825827 else {
826- func fq (eU,fr) = {
827- let fs = split(fr, ",")
828- if ((size(fs) != 2))
828+ func fr (eV,fs) = {
829+ let ft = split(fs, ",")
830+ if ((size(ft) != 2))
829831 then throw("Incorrect format, should be index,amount")
830832 else {
831- let dg = parseIntValue(fs[0])
832- if (if ((0 > dg))
833+ let dh = parseIntValue(ft[0])
834+ if (if ((0 > dh))
833835 then true
834- else (dg >= size(aX)))
836+ else (dh >= size(aY)))
835837 then throw("Unknown product idx")
836838 else {
837- let ft = parseIntValue(fs[1])
838- let fu = split(eU._1, (fs[0] + ":"))
839- if ((size(fu) != 2))
840- then throw((("You don't have " + aT[dg]) + " equipped"))
839+ let fu = parseIntValue(ft[1])
840+ let fv = split(eV._1, (ft[0] + ":"))
841+ if ((size(fv) != 2))
842+ then throw((("You don't have " + aU[dh]) + " equipped"))
841843 else {
842- let fv = fu[1]
843- let fw = if (dM(take(drop(fv, 1), 1)))
844+ let fw = fv[1]
845+ let fx = if (dN(take(drop(fw, 1), 1)))
844846 then 2
845847 else 1
846- let fx = parseIntValue(take(fv, fw))
847- let fy = drop(fv, fw)
848- let fz = if ((fx >= ft))
849- then (fx - ft)
850- else throw(((((("You equipped " + toString(fx)) + " of ") + aT[dg]) + ", but tried to use ") + toString(ft)))
851- $Tuple2(((((fu[0] + fs[0]) + ":") + toString(fz)) + fy), if (eU._2)
848+ let fy = parseIntValue(take(fw, fx))
849+ let fz = drop(fw, fx)
850+ let fA = if ((fy >= fu))
851+ then (fy - fu)
852+ else throw(((((("You equipped " + toString(fy)) + " of ") + aU[dh]) + ", but tried to use ") + toString(fu)))
853+ $Tuple2(((((fv[0] + ft[0]) + ":") + toString(fA)) + fz), if (eV._2)
852854 then true
853- else if (if ((dg >= 6))
854- then (8 >= dg)
855+ else if (if ((dh >= 6))
856+ then (8 >= dh)
855857 else false)
856- then (fz == 0)
858+ then (fA == 0)
857859 else false)
858860 }
859861 }
860862 }
861863 }
862864
863- let eW = split(fp, "_")
864- let eX = size(eW)
865- let eY = $Tuple2(fo, false)
866- func eZ (fa,fb) = if ((fb >= eX))
867- then fa
868- else fq(fa, eW[fb])
869-
870- func fc (fa,fb) = if ((fb >= eX))
871- then fa
865+ let eX = split(fq, "_")
866+ let eY = size(eX)
867+ let eZ = $Tuple2(fp, false)
868+ func fa (fb,fc) = if ((fc >= eY))
869+ then fb
870+ else fr(fb, eX[fc])
871+
872+ func fd (fb,fc) = if ((fc >= eY))
873+ then fb
872874 else throw("List size exceeds 10")
873875
874- fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
876+ fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
875877 }
876878
877879
878-func fA (fB) = {
879- let fC = if ((fB == ""))
880+func fB (fC) = {
881+ let fD = if ((fC == ""))
880882 then nil
881- else split_4C(fB, "_")
882- func fD (eU,ct) = {
883- let fE = (size(eU) / 8)
884- let fx = if ((size(fC) > fE))
885- then parseIntValue(fC[fE])
883+ else split_4C(fC, "_")
884+ func fE (eV,cu) = {
885+ let fF = (size(eV) / 8)
886+ let fy = if ((size(fD) > fF))
887+ then parseIntValue(fD[fF])
886888 else 0
887- (eU + toBytes(fx))
889+ (eV + toBytes(fy))
888890 }
889891
890- let eW = aX
891- let eX = size(eW)
892- let eY = base58''
893- func eZ (fa,fb) = if ((fb >= eX))
894- then fa
895- else fD(fa, eW[fb])
896-
897- func fc (fa,fb) = if ((fb >= eX))
898- then fa
892+ let eX = aY
893+ let eY = size(eX)
894+ let eZ = base58''
895+ func fa (fb,fc) = if ((fc >= eY))
896+ then fb
897+ else fE(fb, eX[fc])
898+
899+ func fd (fb,fc) = if ((fc >= eY))
900+ then fb
899901 else throw("List size exceeds 50")
900902
901- fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 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)
902- }
903-
904-
905-func fF (fG) = {
906- func fH (eU,ct) = {
907- let fE = size(eU)
908- let fI = take(drop(fG, (8 * fE)), 8)
909- (eU :+ toString(toInt(fI)))
903+ fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 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)
904+ }
905+
906+
907+func fG (fH) = {
908+ func fI (eV,cu) = {
909+ let fF = size(eV)
910+ let fJ = take(drop(fH, (8 * fF)), 8)
911+ (eV :+ toString(toInt(fJ)))
910912 }
911913
912914 makeString_2C({
913- let eW = aX
914- let eX = size(eW)
915- let eY = nil
916- func eZ (fa,fb) = if ((fb >= eX))
917- then fa
918- else fH(fa, eW[fb])
919-
920- func fc (fa,fb) = if ((fb >= eX))
921- then fa
915+ let eX = aY
916+ let eY = size(eX)
917+ let eZ = nil
918+ func fa (fb,fc) = if ((fc >= eY))
919+ then fb
920+ else fI(fb, eX[fc])
921+
922+ func fd (fb,fc) = if ((fc >= eY))
923+ then fb
922924 else throw("List size exceeds 50")
923925
924- fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 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)
926+ fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 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)
925927 }, "_")
926928 }
927929
928930
929-func fJ (fK,fL) = {
930- func fM (eU,fE) = {
931- let fN = if ((size(fK) > (7 + fE)))
932- then fK[(7 + fE)]
931+func fK (fL,fM) = {
932+ func fN (eV,fF) = {
933+ let fO = if ((size(fL) > (7 + fF)))
934+ then fL[(7 + fF)]
933935 else 0
934- if ((parseIntValue(fL[fE]) > (fK[fE] + fN)))
935- then throw(("Requirement not satisfied: " + k[fE]))
936+ if ((parseIntValue(fM[fF]) > (fL[fF] + fO)))
937+ then throw(("Requirement not satisfied: " + k[fF]))
936938 else true
937939 }
938940
939- let eW = [0, 1, 2, 3, 4, 5, 6]
940- let eX = size(eW)
941- let eY = false
942- func eZ (fa,fb) = if ((fb >= eX))
943- then fa
944- else fM(fa, eW[fb])
945-
946- func fc (fa,fb) = if ((fb >= eX))
947- then fa
941+ let eX = [0, 1, 2, 3, 4, 5, 6]
942+ let eY = size(eX)
943+ let eZ = false
944+ func fa (fb,fc) = if ((fc >= eY))
945+ then fb
946+ else fN(fb, eX[fc])
947+
948+ func fd (fb,fc) = if ((fc >= eY))
949+ then fb
948950 else throw("List size exceeds 7")
949951
950- fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6), 7)
951- }
952-
953-
954-func fO (fP,fC,fQ,fK,fR,fS) = {
955- let fs = split(fP, ":")
956- if ((size(fs) != 2))
952+ fd(fa(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6), 7)
953+ }
954+
955+
956+func fP (fQ,fD,fR,fL,fS,fT) = {
957+ let ft = split(fQ, ":")
958+ if ((size(ft) != 2))
957959 then throw("Incorrect format, should be index:amount")
958- else if (if (!(fQ))
959- then (size(fs[0]) != 2)
960+ else if (if (!(fR))
961+ then (size(ft[0]) != 2)
960962 else false)
961963 then throw("Product idx should be 2 digits, zero padded")
962964 else {
963- let fT = parseIntValue(fs[0])
964- let fU = parseIntValue(fs[1])
965- if (!(containsElement(aW, fT)))
966- then throw((("Product '" + aT[fT]) + "' cannot be used for land defense"))
967- else if ((0 > fU))
965+ let fU = parseIntValue(ft[0])
966+ let fV = parseIntValue(ft[1])
967+ if (!(containsElement(aX, fU)))
968+ then throw((("Product '" + aU[fU]) + "' cannot be used for land defense"))
969+ else if ((0 > fV))
968970 then throw("Count can't be negative")
969- else if ((fU > u))
970- then throw(((("Can't put more than " + toString(u)) + " of ") + aT[fT]))
971- else if ((fU == 0))
972- then $Tuple3(fC, fR, fS)
971+ else if ((fV > u))
972+ then throw(((("Can't put more than " + toString(u)) + " of ") + aU[fU]))
973+ else if ((fV == 0))
974+ then $Tuple3(fD, fS, fT)
973975 else {
974- let fV = take(fC, (8 * fT))
975- let fx = toInt(take(drop(fC, (8 * fT)), 8))
976- let fy = drop(fC, (8 * (fT + 1)))
977- let ct = split(aX[fT], "_")
978- if (if (!(fQ))
979- then (fU > fx)
976+ let fW = take(fD, (8 * fU))
977+ let fy = toInt(take(drop(fD, (8 * fU)), 8))
978+ let fz = drop(fD, (8 * (fU + 1)))
979+ let cu = split(aY[fU], "_")
980+ if (if (!(fR))
981+ then (fV > fy)
980982 else false)
981- then throw(((((("You have " + toString(fx)) + " of ") + aT[fT]) + ", but tried to use ") + toString(fU)))
983+ then throw(((((("You have " + toString(fy)) + " of ") + aU[fU]) + ", but tried to use ") + toString(fV)))
982984 else {
983- let fz = if (if (!(fQ))
984- then fJ(fK, split(ct[ba], ","))
985+ let fA = if (if (!(fR))
986+ then fK(fL, split(cu[bb], ","))
985987 else false)
986- then (fx - fU)
987- else (fx + fU)
988- let fW = (eK(fz, bc) - eK(fx, bc))
989- $Tuple3(((fV + toBytes(fz)) + fy), (fR + fW), (fS - fW))
988+ then (fy - fV)
989+ else (fy + fV)
990+ let fX = (eL(fA, bd) - eL(fy, bd))
991+ $Tuple3(((fW + toBytes(fA)) + fz), (fS + fX), (fT - fX))
990992 }
991993 }
992994 }
993995 }
994996
995997
996-func fX (fP,fC,fQ,fY,fZ,ga,fK) = {
997- let fs = split(fP, ":")
998- if ((size(fs) != 2))
998+func fY (fQ,fD,fR,fZ,ga,gb,fL) = {
999+ let ft = split(fQ, ":")
1000+ if ((size(ft) != 2))
9991001 then throw("Incorrect format, should be index:amount")
1000- else if (if (!(fQ))
1001- then (size(fs[0]) != 2)
1002+ else if (if (!(fR))
1003+ then (size(ft[0]) != 2)
10021004 else false)
10031005 then throw("Product idx should be 2 digits, zero padded")
10041006 else {
1005- let fT = parseIntValue(fs[0])
1006- let fU = parseIntValue(fs[1])
1007- if (if ((0 > fT))
1007+ let fU = parseIntValue(ft[0])
1008+ let fV = parseIntValue(ft[1])
1009+ if (if ((0 > fU))
10081010 then true
1009- else (fT >= size(aX)))
1011+ else (fU >= size(aY)))
10101012 then throw("Unknown product idx")
1011- else if ((0 > fU))
1013+ else if ((0 > fV))
10121014 then throw("Count can't be negative")
1013- else if ((fU > u))
1014- then throw(((("Can't put more than " + toString(u)) + " of ") + aT[fT]))
1015- else if ((fU == 0))
1016- then $Tuple2(fC, false)
1015+ else if ((fV > u))
1016+ then throw(((("Can't put more than " + toString(u)) + " of ") + aU[fU]))
1017+ else if ((fV == 0))
1018+ then $Tuple2(fD, false)
10171019 else {
1018- let fV = take(fC, (8 * fT))
1019- let fx = toInt(take(drop(fC, (8 * fT)), 8))
1020- let fy = drop(fC, (8 * (fT + 1)))
1021- let ct = split(aX[fT], "_")
1022- if (if (!(fQ))
1023- then (fU > fx)
1020+ let fW = take(fD, (8 * fU))
1021+ let fy = toInt(take(drop(fD, (8 * fU)), 8))
1022+ let fz = drop(fD, (8 * (fU + 1)))
1023+ let cu = split(aY[fU], "_")
1024+ if (if (!(fR))
1025+ then (fV > fy)
10241026 else false)
1025- then throw(((((("You have " + toString(fx)) + " of ") + aT[fT]) + ", but tried to use ") + toString(fU)))
1027+ then throw(((((("You have " + toString(fy)) + " of ") + aU[fU]) + ", but tried to use ") + toString(fV)))
10261028 else {
1027- let gb = if (if (!(fQ))
1028- then fJ(fK, split(ct[ba], ","))
1029+ let gc = if (if (!(fR))
1030+ then fK(fL, split(cu[bb], ","))
10291031 else false)
10301032 then {
1031- let gc = ct[bb]
1032- if ((gc == ""))
1033+ let gd = cu[bc]
1034+ if ((gd == ""))
10331035 then throw("Item cannot be equipped")
10341036 else {
1035- let gd = parseIntValue(gc)
1036- let ge = (gd / 100)
1037- if ((fY != ge))
1037+ let ge = parseIntValue(gd)
1038+ let gf = (ge / 100)
1039+ if ((fZ != gf))
10381040 then throw("Segment incompatible")
10391041 else {
1040- let gf = ((gd % 100) / 10)
1041- if ((fZ != gf))
1042+ let gg = ((ge % 100) / 10)
1043+ if ((ga != gg))
10421044 then throw("Slot incompatible")
10431045 else {
1044- let gg = (gd % 10)
1045- if (if ((ga != 0))
1046- then (gg > 1)
1046+ let gh = (ge % 10)
1047+ if (if ((gb != 0))
1048+ then (gh > 1)
10471049 else false)
10481050 then throw("Big items should occupy slot 0")
1049- else (gg > 1)
1051+ else (gh > 1)
10501052 }
10511053 }
10521054 }
10531055 }
10541056 else false
1055- $Tuple2(((fV + toBytes((fx + (if (fQ)
1056- then fU
1057- else -(fU))))) + fy), gb)
1057+ $Tuple2(((fW + toBytes((fy + (if (fR)
1058+ then fV
1059+ else -(fV))))) + fz), gc)
10581060 }
10591061 }
10601062 }
10611063 }
10621064
10631065
1064-func gh (gi,gj,fQ,fY,fZ,gk) = if ((gi != ""))
1066+func gi (gj,gk,fR,fZ,ga,gl) = if ((gj != ""))
10651067 then {
1066- let gl = split(gi, ",")
1067- if ((size(gl) > t))
1068+ let gm = split(gj, ",")
1069+ if ((size(gm) > t))
10681070 then throw("Wrong slots format")
10691071 else {
1070- let gm = gl[0]
1071- let gn = if ((size(gl) > 1))
1072- then gl[1]
1072+ let gn = gm[0]
1073+ let go = if ((size(gm) > 1))
1074+ then gm[1]
10731075 else ""
1074- if (if ((gm == ""))
1075- then (gn == "")
1076+ if (if ((gn == ""))
1077+ then (go == "")
10761078 else false)
1077- then gj
1079+ then gk
10781080 else {
1079- let go = if ((gm != ""))
1080- then fX(gm, gj, fQ, fY, fZ, 0, gk)
1081- else $Tuple2(gj, false)
1082- if ((gn != ""))
1083- then if (go._2)
1081+ let gp = if ((gn != ""))
1082+ then fY(gn, gk, fR, fZ, ga, 0, gl)
1083+ else $Tuple2(gk, false)
1084+ if ((go != ""))
1085+ then if (gp._2)
10841086 then throw("Big item already occupies slot")
1085- else fX(gn, go._1, fQ, fY, fZ, 1, gk)._1
1086- else go._1
1087+ else fY(go, gp._1, fR, fZ, ga, 1, gl)._1
1088+ else gp._1
10871089 }
10881090 }
10891091 }
1090- else gj
1091-
1092-
1093-func gp (gq,gr,fQ,gk) = {
1094- func fY (eU,gs) = {
1095- let fE = eU._1
1096- let fZ = split(gs, ";")
1097- if ((size(fZ) != s))
1092+ else gk
1093+
1094+
1095+func gq (gr,gs,fR,gl) = {
1096+ func fZ (eV,gt) = {
1097+ let fF = eV._1
1098+ let ga = split(gt, ";")
1099+ if ((size(ga) != s))
10981100 then throw("Wrong segment format")
10991101 else {
1100- let gt = fZ[0]
1101- let gu = fZ[1]
1102- if (if ((gt == ""))
1103- then (gu == "")
1102+ let gu = ga[0]
1103+ let gv = ga[1]
1104+ if (if ((gu == ""))
1105+ then (gv == "")
11041106 else false)
1105- then $Tuple2((fE + 1), eU._2)
1107+ then $Tuple2((fF + 1), eV._2)
11061108 else {
1107- let gv = gh(gt, eU._2, fQ, fE, 0, gk)
1108- $Tuple2((fE + 1), gh(gu, gv, fQ, fE, 1, gk))
1109+ let gw = gi(gu, eV._2, fR, fF, 0, gl)
1110+ $Tuple2((fF + 1), gi(gv, gw, fR, fF, 1, gl))
11091111 }
11101112 }
11111113 }
11121114
1113-( let eW = gq
1114- let eX = size(eW)
1115- let eY = $Tuple2(0, gr)
1116- func eZ (fa,fb) = if ((fb >= eX))
1117- then fa
1118- else fY(fa, eW[fb])
1119-
1120- func fc (fa,fb) = if ((fb >= eX))
1121- then fa
1115+( let eX = gr
1116+ let eY = size(eX)
1117+ let eZ = $Tuple2(0, gs)
1118+ func fa (fb,fc) = if ((fc >= eY))
1119+ then fb
1120+ else fZ(fb, eX[fc])
1121+
1122+ func fd (fb,fc) = if ((fc >= eY))
1123+ then fb
11221124 else throw("List size exceeds 6")
11231125
1124- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6))._2
1125- }
1126-
1127-
1128-func gw (gq,gr,fR,fS,fQ,fK) = if ((3 > size(gq)))
1126+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6))._2
1127+ }
1128+
1129+
1130+func gx (gr,gs,fS,fT,fR,fL) = if ((3 > size(gr)))
11291131 then throw("At least duck, mines and traps parts are required")
11301132 else {
1131- func fY (eU,gs) = {
1132- let fE = eU._1
1133- if ((fE == 0))
1134- then $Tuple4((fE + 1), eU._2, eU._3, eU._4)
1133+ func fZ (eV,gt) = {
1134+ let fF = eV._1
1135+ if ((fF == 0))
1136+ then $Tuple4((fF + 1), eV._2, eV._3, eV._4)
11351137 else {
1136- let gx = fO(gs, eU._2, fQ, fK, eU._3, eU._4)
1137- $Tuple4((fE + 1), gx._1, gx._2, gx._3)
1138+ let gy = fP(gt, eV._2, fR, fL, eV._3, eV._4)
1139+ $Tuple4((fF + 1), gy._1, gy._2, gy._3)
11381140 }
11391141 }
11401142
1141- let gy = {
1142- let eW = gq
1143- let eX = size(eW)
1144- let eY = $Tuple4(0, gr, fR, fS)
1145- func eZ (fa,fb) = if ((fb >= eX))
1146- then fa
1147- else fY(fa, eW[fb])
1148-
1149- func fc (fa,fb) = if ((fb >= eX))
1150- then fa
1143+ let gz = {
1144+ let eX = gr
1145+ let eY = size(eX)
1146+ let eZ = $Tuple4(0, gs, fS, fT)
1147+ func fa (fb,fc) = if ((fc >= eY))
1148+ then fb
1149+ else fZ(fb, eX[fc])
1150+
1151+ func fd (fb,fc) = if ((fc >= eY))
1152+ then fb
11511153 else throw("List size exceeds 10")
11521154
1153- fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1154- }
1155- $Tuple3(gy._2, gy._3, gy._4)
1155+ fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1156+ }
1157+ $Tuple3(gz._2, gz._3, gz._4)
11561158 }
11571159
11581160
1159-func gz (B) = {
1160- let gA = G(B)
1161- let gB = split(valueOrElse(getString(gA), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1162- let gC = gp(gB, ed, true, nil)
1163- let gD = split(gB[q], ";")[1]
1164- let ar = if ((gD == ""))
1161+func gA (B) = {
1162+ let gB = G(B)
1163+ let gC = split(valueOrElse(getString(gB), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1164+ let gD = gq(gC, ee, true, nil)
1165+ let gE = split(gC[q], ";")[1]
1166+ let ar = if ((gE == ""))
11651167 then 0
11661168 else {
1167- let gE = split(gD, ",")[0]
1168- if ((gE == ""))
1169+ let gF = split(gE, ",")[0]
1170+ if ((gF == ""))
11691171 then 0
11701172 else {
1171- let fP = split(gE, ":")
1172- let dg = fP[0]
1173- let gF = fP[1]
1174- if (if (if (if (if ((dg == "06"))
1173+ let fQ = split(gF, ":")
1174+ let dh = fQ[0]
1175+ let gG = fQ[1]
1176+ if (if (if (if (if ((dh == "06"))
11751177 then true
1176- else (dg == "07"))
1178+ else (dh == "07"))
11771179 then true
1178- else (dg == "08"))
1179- then (gF != "")
1180+ else (dh == "08"))
1181+ then (gG != "")
11801182 else false)
1181- then (parseIntValue(gF) > 0)
1183+ then (parseIntValue(gG) > 0)
11821184 else false)
1183- then parseIntValue(split(aX[parseIntValue(dg)], "_")[aZ])
1185+ then parseIntValue(split(aY[parseIntValue(dh)], "_")[ba])
11841186 else 0
11851187 }
11861188 }
1187- let gk = ap(this, B, ar, true)
1188- let gG = gp(gB, gC, false, gk)
1189- (gG == gG)
1190- }
1191-
1192-
1193-func gH (gI,gJ,gK,gL) = if ((size(gI) != aI))
1189+ let gl = ap(this, B, ar, true)
1190+ let gH = gq(gC, gD, false, gl)
1191+ (gH == gH)
1192+ }
1193+
1194+
1195+func gI (gJ,gK,gL,gM) = if ((size(gJ) != aI))
11941196 then throw("Wrong proportions data")
11951197 else {
1196- func gM (eU,gN) = {
1197- let fm = (parseIntValue(gI[gN]) + ((gL * gJ[gN]) * gK))
1198- if ((0 > fm))
1199- then throw(((((((("Panic! Pieces of type=" + toString(gN)) + ", sign=") + toString(gL)) + ", terrainCounts[i]=") + toString(gJ[gN])) + ", landSizeIndex=") + toString(gK)))
1200- else (eU :+ toString(fm))
1201- }
1202-
1203- let eW = cQ
1204- let eX = size(eW)
1205- let eY = nil
1206- func eZ (fa,fb) = if ((fb >= eX))
1207- then fa
1208- else gM(fa, eW[fb])
1209-
1210- func fc (fa,fb) = if ((fb >= eX))
1211- then fa
1198+ func gN (eV,gO) = {
1199+ let fn = (parseIntValue(gJ[gO]) + ((gM * gK[gO]) * gL))
1200+ if ((0 > fn))
1201+ then throw(((((((("Panic! Pieces of type=" + toString(gO)) + ", sign=") + toString(gM)) + ", terrainCounts[i]=") + toString(gK[gO])) + ", landSizeIndex=") + toString(gL)))
1202+ else (eV :+ toString(fn))
1203+ }
1204+
1205+ let eX = cR
1206+ let eY = size(eX)
1207+ let eZ = nil
1208+ func fa (fb,fc) = if ((fc >= eY))
1209+ then fb
1210+ else gN(fb, eX[fc])
1211+
1212+ func fd (fb,fc) = if ((fc >= eY))
1213+ then fb
12121214 else throw("List size exceeds 6")
12131215
1214- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
1216+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
12151217 }
12161218
12171219
1218-func gO (gJ,gK,gL) = {
1219- let gI = split(valueOrElse(getString(dx()), "0_0_0_0_0_0"), "_")
1220- makeString(gH(gI, gJ, gK, gL), "_")
1221- }
1222-
1223-
1224-func gP (gQ) = [(size(split(gQ, "A")) - 1), (size(split(gQ, "B")) - 1), (size(split(gQ, "C")) - 1), (size(split(gQ, "D")) - 1), (size(split(gQ, "E")) - 1), (size(split(gQ, "F")) - 1)]
1225-
1226-
1227-func gR (gS,gJ,gT,gK,gU) = {
1228- func gV (eU,gN) = {
1229- let gW = ((fraction(gT, gU, a) * gJ[gN]) * gK)
1230- (eU :+ toString((parseIntValue(gS[gN]) + gW)))
1220+func gP (gK,gL,gM) = {
1221+ let gJ = split(valueOrElse(getString(dy()), "0_0_0_0_0_0"), "_")
1222+ makeString(gI(gJ, gK, gL, gM), "_")
1223+ }
1224+
1225+
1226+func gQ (gR) = [(size(split(gR, "A")) - 1), (size(split(gR, "B")) - 1), (size(split(gR, "C")) - 1), (size(split(gR, "D")) - 1), (size(split(gR, "E")) - 1), (size(split(gR, "F")) - 1)]
1227+
1228+
1229+func gS (gT,gK,gU,gL,gV) = {
1230+ func gW (eV,gO) = {
1231+ let gX = ((fraction(gU, gV, a) * gK[gO]) * gL)
1232+ (eV :+ toString((parseIntValue(gT[gO]) + gX)))
12311233 }
12321234
1233- let ff = {
1234- let eW = cQ
1235- let eX = size(eW)
1236- let eY = nil
1237- func eZ (fa,fb) = if ((fb >= eX))
1238- then fa
1239- else gV(fa, eW[fb])
1240-
1241- func fc (fa,fb) = if ((fb >= eX))
1242- then fa
1235+ let fg = {
1236+ let eX = cR
1237+ let eY = size(eX)
1238+ let eZ = nil
1239+ func fa (fb,fc) = if ((fc >= eY))
1240+ then fb
1241+ else gW(fb, eX[fc])
1242+
1243+ func fd (fb,fc) = if ((fc >= eY))
1244+ then fb
12431245 else throw("List size exceeds 6")
12441246
1245- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
1247+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
12461248 }
1247- makeString(ff, "_")
1248- }
1249-
1250-
1251-func gX (gJ,gT,gK,gU) = {
1252- func gV (eU,gN) = {
1253- let gW = ((fraction(gT, gU, a) * gJ[gN]) * gK)
1254- $Tuple2((eU._1 :+ gW), (eU._2 + gW))
1249+ makeString(fg, "_")
1250+ }
1251+
1252+
1253+func gY (gK,gU,gL,gV) = {
1254+ func gW (eV,gO) = {
1255+ let gX = ((fraction(gU, gV, a) * gK[gO]) * gL)
1256+ $Tuple2((eV._1 :+ gX), (eV._2 + gX))
12551257 }
12561258
1257- let eW = cQ
1258- let eX = size(eW)
1259- let eY = $Tuple2(nil, 0)
1260- func eZ (fa,fb) = if ((fb >= eX))
1261- then fa
1262- else gV(fa, eW[fb])
1263-
1264- func fc (fa,fb) = if ((fb >= eX))
1265- then fa
1259+ let eX = cR
1260+ let eY = size(eX)
1261+ let eZ = $Tuple2(nil, 0)
1262+ func fa (fb,fc) = if ((fc >= eY))
1263+ then fb
1264+ else gW(fb, eX[fc])
1265+
1266+ func fd (fb,fc) = if ((fc >= eY))
1267+ then fb
12661268 else throw("List size exceeds 6")
12671269
1268- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
1269- }
1270-
1271-
1272-func gY (gZ,ha,hb,hc) = {
1273- let hd = hb._1
1274- let he = hb._2
1275- if ((he == 0))
1276- then $Tuple2(makeString(gZ, "_"), makeString(ha, "_"))
1277- else if ((hc >= he))
1270+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
1271+ }
1272+
1273+
1274+func gZ (ha,hb,hc,hd) = {
1275+ let he = hc._1
1276+ let hf = hc._2
1277+ if ((hf == 0))
1278+ then $Tuple2(makeString(ha, "_"), makeString(hb, "_"))
1279+ else if ((hd >= hf))
12781280 then {
1279- func hf (eU,gN) = (eU :+ toString((parseIntValue(gZ[gN]) + hd[gN])))
1280-
1281- let ff = {
1282- let eW = cQ
1283- let eX = size(eW)
1284- let eY = nil
1285- func eZ (fa,fb) = if ((fb >= eX))
1286- then fa
1287- else hf(fa, eW[fb])
1288-
1289- func fc (fa,fb) = if ((fb >= eX))
1290- then fa
1281+ func hg (eV,gO) = (eV :+ toString((parseIntValue(ha[gO]) + he[gO])))
1282+
1283+ let fg = {
1284+ let eX = cR
1285+ let eY = size(eX)
1286+ let eZ = nil
1287+ func fa (fb,fc) = if ((fc >= eY))
1288+ then fb
1289+ else hg(fb, eX[fc])
1290+
1291+ func fd (fb,fc) = if ((fc >= eY))
1292+ then fb
12911293 else throw("List size exceeds 6")
12921294
1293- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
1295+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
12941296 }
1295- $Tuple2(makeString(ff, "_"), makeString(ha, "_"))
1297+ $Tuple2(makeString(fg, "_"), makeString(hb, "_"))
12961298 }
12971299 else {
1298- func hg (eU,gN) = {
1299- let hh = fraction(hd[gN], hc, he)
1300- $Tuple2((eU._1 :+ toString((parseIntValue(gZ[gN]) + hh))), (eU._2 :+ toString(((parseIntValue(ha[gN]) + hd[gN]) - hh))))
1300+ func hh (eV,gO) = {
1301+ let hi = fraction(he[gO], hd, hf)
1302+ $Tuple2((eV._1 :+ toString((parseIntValue(ha[gO]) + hi))), (eV._2 :+ toString(((parseIntValue(hb[gO]) + he[gO]) - hi))))
13011303 }
13021304
1303- let ff = {
1304- let eW = cQ
1305- let eX = size(eW)
1306- let eY = $Tuple2(nil, nil)
1307- func eZ (fa,fb) = if ((fb >= eX))
1308- then fa
1309- else hg(fa, eW[fb])
1310-
1311- func fc (fa,fb) = if ((fb >= eX))
1312- then fa
1305+ let fg = {
1306+ let eX = cR
1307+ let eY = size(eX)
1308+ let eZ = $Tuple2(nil, nil)
1309+ func fa (fb,fc) = if ((fc >= eY))
1310+ then fb
1311+ else hh(fb, eX[fc])
1312+
1313+ func fd (fb,fc) = if ((fc >= eY))
1314+ then fb
13131315 else throw("List size exceeds 6")
13141316
1315- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
1317+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
13161318 }
1317- $Tuple2(makeString(ff._1, "_"), makeString(ff._2, "_"))
1319+ $Tuple2(makeString(fg._1, "_"), makeString(fg._2, "_"))
13181320 }
13191321 }
13201322
13211323
1322-func hi (hj) = if ((hj >= toBigInt(0)))
1323- then hj
1324- else -(hj)
1325-
1326-
1327-let hk = [[35, 18, 30, 7, 6, 24], [29, 18, 29, 7, 8, 29], [6, 18, 29, 8, 30, 29], [6, 28, 6, 48, 26, 6], [24, 18, 6, 30, 30, 12]]
1328-
1329-let hl = [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]
1330-
1331-let hm = ["A", "B", "C", "D", "E", "F"]
1332-
1333-func hn (eU,ho) = (eU + parseIntValue(ho))
1334-
1335-
1336-func hp (hq,hr) = if ((hq == 0))
1324+func hj (hk) = if ((hk >= toBigInt(0)))
1325+ then hk
1326+ else -(hk)
1327+
1328+
1329+let hl = [[35, 18, 30, 7, 6, 24], [29, 18, 29, 7, 8, 29], [6, 18, 29, 8, 30, 29], [6, 28, 6, 48, 26, 6], [24, 18, 6, 30, 30, 12]]
1330+
1331+let hm = [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]
1332+
1333+let hn = ["A", "B", "C", "D", "E", "F"]
1334+
1335+let ho = 10
1336+
1337+func hp (eV,hq) = (eV + parseIntValue(hq))
1338+
1339+
1340+func hr (hs,ht) = if ((hs == 0))
13371341 then throw("maxRand should be non-zero")
13381342 else {
1339- let hs = toBigInt(hq)
1340- $Tuple2(toInt((hr % hs)), (hr / hs))
1343+ let hu = toBigInt(hs)
1344+ $Tuple2(toInt((ht % hu)), (ht / hu))
13411345 }
13421346
13431347
1344-func ht (hu,hv,hw) = {
1345- func hx (eU,ho) = if (eU._1)
1346- then eU
1348+func hv (hw,hx,hy) = {
1349+ func hz (eV,hq) = if (eV._1)
1350+ then eV
13471351 else {
1348- let hy = ((eU._3 - ho) - hw)
1349- if ((0 > hy))
1350- then $Tuple3(true, eU._2, 0)
1351- else $Tuple3(false, (eU._2 + 1), hy)
1352- }
1353-
1354- let ff = {
1355- let eW = hu
1356- let eX = size(eW)
1357- let eY = $Tuple3(false, 0, hv)
1358- func eZ (fa,fb) = if ((fb >= eX))
1359- then fa
1360- else hx(fa, eW[fb])
1361-
1362- func fc (fa,fb) = if ((fb >= eX))
1363- then fa
1352+ let hA = ((eV._3 - hq) - hy)
1353+ if ((0 > hA))
1354+ then $Tuple3(true, eV._2, 0)
1355+ else $Tuple3(false, (eV._2 + 1), hA)
1356+ }
1357+
1358+ let fg = {
1359+ let eX = hw
1360+ let eY = size(eX)
1361+ let eZ = $Tuple3(false, 0, hx)
1362+ func fa (fb,fc) = if ((fc >= eY))
1363+ then fb
1364+ else hz(fb, eX[fc])
1365+
1366+ func fd (fb,fc) = if ((fc >= eY))
1367+ then fb
13641368 else throw("List size exceeds 6")
13651369
1366- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
1370+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
13671371 }
1368- ff._2
1369- }
1370-
1371-
1372-func hz (hA,gK) = {
1373- func hB (hC,hD) = {
1374- let fx = split(valueOrElse(getString(dy(hD)), "0_0_0_0_0_0"), "_")
1375- let hE = {
1376- let eW = fx
1377- let eX = size(eW)
1378- let eY = 0
1379- func eZ (fa,fb) = if ((fb >= eX))
1380- then fa
1381- else hn(fa, eW[fb])
1382-
1383- func fc (fa,fb) = if ((fb >= eX))
1384- then fa
1372+ fg._2
1373+ }
1374+
1375+
1376+func hB (hC,gL,hD) = {
1377+ func hE (hF,hG) = {
1378+ let fy = split(valueOrElse(getString(dz(hG)), "0_0_0_0_0_0"), "_")
1379+ let hH = {
1380+ let eX = fy
1381+ let eY = size(eX)
1382+ let eZ = 0
1383+ func fa (fb,fc) = if ((fc >= eY))
1384+ then fb
1385+ else hp(fb, eX[fc])
1386+
1387+ func fd (fb,fc) = if ((fc >= eY))
1388+ then fb
13851389 else throw("List size exceeds 6")
13861390
1387- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
1388- }
1389- $Tuple2((hC._1 :+ hE), (hC._2 + hE))
1391+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
1392+ }
1393+ $Tuple2((hF._1 :+ hH), (hF._2 + hH))
13901394 }
13911395
1392- let hF = {
1393- let eW = aU
1394- let eX = size(eW)
1395- let eY = $Tuple2(nil, 0)
1396- func eZ (fa,fb) = if ((fb >= eX))
1397- then fa
1398- else hB(fa, eW[fb])
1399-
1400- func fc (fa,fb) = if ((fb >= eX))
1401- then fa
1396+ let hI = {
1397+ let eX = aV
1398+ let eY = size(eX)
1399+ let eZ = $Tuple2(nil, 0)
1400+ func fa (fb,fc) = if ((fc >= eY))
1401+ then fb
1402+ else hE(fb, eX[fc])
1403+
1404+ func fd (fb,fc) = if ((fc >= eY))
1405+ then fb
14021406 else throw("List size exceeds 5")
14031407
1404- fc(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5)
1408+ fd(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5)
14051409 }
1406- let hG = hF._1
1407- let eP = hF._2
1408- let hH = max(hG)
1409- let hI = ((hH * 5) - eP)
1410- let hJ = (hI / 50)
1411- let hK = if ((hI == 0))
1412- then hp(5, hA)
1413- else {
1414- let hL = hp((hI + (hJ * 5)), hA)
1415- let ff = hL._1
1416- let hM = hL._2
1417- func hN (eU,ho) = (eU :+ (hH - ho))
1418-
1419- let hO = {
1420- let eW = hG
1421- let eX = size(eW)
1422- let eY = nil
1423- func hP (fa,fb) = if ((fb >= eX))
1424- then fa
1425- else hN(fa, eW[fb])
1426-
1427- func hQ (fa,fb) = if ((fb >= eX))
1428- then fa
1429- else throw("List size exceeds 6")
1430-
1431- hQ(hP(hP(hP(hP(hP(hP(eY, 0), 1), 2), 3), 4), 5), 6)
1410+ let hJ = hI._1
1411+ let eQ = hI._2
1412+ let hK = max(hJ)
1413+ let hL = ((hK * aJ) - eQ)
1414+ let hM = (hL / (ho * aJ))
1415+ let hN = if (if ((hD >= 0))
1416+ then (aJ > hD)
1417+ else false)
1418+ then $Tuple2(hD, hC)
1419+ else if ((hL == 0))
1420+ then hr(aJ, hC)
1421+ else {
1422+ let hO = hr((hL + (hM * aJ)), hC)
1423+ let fg = hO._1
1424+ let hP = hO._2
1425+ func hQ (eV,hq) = (eV :+ (hK - hq))
1426+
1427+ let hR = {
1428+ let eX = hJ
1429+ let eY = size(eX)
1430+ let eZ = nil
1431+ func hS (fb,fc) = if ((fc >= eY))
1432+ then fb
1433+ else hQ(fb, eX[fc])
1434+
1435+ func hT (fb,fc) = if ((fc >= eY))
1436+ then fb
1437+ else throw("List size exceeds 6")
1438+
1439+ hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6)
1440+ }
1441+ $Tuple2(hv(hR, fg, hM), hP)
14321442 }
1433- $Tuple2(ht(hO, ff, hJ), hM)
1434- }
1435- let hR = hK._1
1436- let hS = hK._2
1437- let hT = hk[hR]
1438- let hU = split(valueOrElse(getString(dy(aU[hR])), "0_0_0_0_0_0"), "_")
1439- func hV (eU,ho) = (eU :+ parseIntValue(ho))
1440-
1441- let hW = {
1442- let eW = hU
1443- let eX = size(eW)
1444- let eY = nil
1445- func hP (fa,fb) = if ((fb >= eX))
1446- then fa
1447- else hV(fa, eW[fb])
1448-
1449- func hQ (fa,fb) = if ((fb >= eX))
1450- then fa
1443+ let hU = hN._1
1444+ let hV = hN._2
1445+ let hW = hl[hU]
1446+ let hX = split(valueOrElse(getString(dz(aV[hU])), "0_0_0_0_0_0"), "_")
1447+ func hY (eV,hq) = (eV :+ parseIntValue(hq))
1448+
1449+ let hZ = {
1450+ let eX = hX
1451+ let eY = size(eX)
1452+ let eZ = nil
1453+ func hS (fb,fc) = if ((fc >= eY))
1454+ then fb
1455+ else hY(fb, eX[fc])
1456+
1457+ func hT (fb,fc) = if ((fc >= eY))
1458+ then fb
14511459 else throw("List size exceeds 6")
14521460
1453- hQ(hP(hP(hP(hP(hP(hP(eY, 0), 1), 2), 3), 4), 5), 6)
1461+ hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6)
14541462 }
1455- let hX = hG[hR]
1456- func hY (hC,hZ) = {
1457- func ia (eU,fE) = (eU :+ ((hC._2[fE] * 120) - (hT[fE] * hC._3)))
1458-
1459- let ib = {
1460- let eW = cQ
1461- let eX = size(eW)
1462- let eY = nil
1463- func ic (fa,fb) = if ((fb >= eX))
1464- then fa
1465- else ia(fa, eW[fb])
1466-
1467- func id (fa,fb) = if ((fb >= eX))
1468- then fa
1463+ let ia = hJ[hU]
1464+ func ib (hF,ic) = {
1465+ func id (eV,fF) = (eV :+ ((hF._2[fF] * 120) - (hW[fF] * hF._3)))
1466+
1467+ let ie = {
1468+ let eX = cR
1469+ let eY = size(eX)
1470+ let eZ = nil
1471+ func if (fb,fc) = if ((fc >= eY))
1472+ then fb
1473+ else id(fb, eX[fc])
1474+
1475+ func ig (fb,fc) = if ((fc >= eY))
1476+ then fb
14691477 else throw("List size exceeds 6")
14701478
1471- id(ic(ic(ic(ic(ic(ic(eY, 0), 1), 2), 3), 4), 5), 6)
1472- }
1473- let ie = max(ib)
1474- func if (eU,ho) = {
1475- let dE = (ie - ho)
1476- $Tuple2((eU._1 :+ dE), (eU._2 + dE))
1477- }
1478-
1479- let ig = {
1480- let eW = ib
1481- let eX = size(eW)
1482- let eY = $Tuple2(nil, 0)
1483- func ih (fa,fb) = if ((fb >= eX))
1484- then fa
1485- else if(fa, eW[fb])
1486-
1487- func ii (fa,fb) = if ((fb >= eX))
1488- then fa
1479+ ig(if(if(if(if(if(if(eZ, 0), 1), 2), 3), 4), 5), 6)
1480+ }
1481+ let ih = max(ie)
1482+ func ii (eV,hq) = {
1483+ let dF = (ih - hq)
1484+ $Tuple2((eV._1 :+ dF), (eV._2 + dF))
1485+ }
1486+
1487+ let ij = {
1488+ let eX = ie
1489+ let eY = size(eX)
1490+ let eZ = $Tuple2(nil, 0)
1491+ func ik (fb,fc) = if ((fc >= eY))
1492+ then fb
1493+ else ii(fb, eX[fc])
1494+
1495+ func il (fb,fc) = if ((fc >= eY))
1496+ then fb
14891497 else throw("List size exceeds 6")
14901498
1491- ii(ih(ih(ih(ih(ih(ih(eY, 0), 1), 2), 3), 4), 5), 6)
1492- }
1493- let ij = ig._1
1494- let ik = ig._2
1495- let il = (ik / 60)
1496- let im = if ((ik == 0))
1497- then hp(6, hC._4)
1499+ il(ik(ik(ik(ik(ik(ik(eZ, 0), 1), 2), 3), 4), 5), 6)
1500+ }
1501+ let im = ij._1
1502+ let in = ij._2
1503+ let io = (in / (ho * aI))
1504+ let ip = if ((in == 0))
1505+ then hr(aI, hF._4)
14981506 else {
1499- let in = hp((ik + (il * 6)), hC._4)
1500- let ff = in._1
1501- let hM = in._2
1502- $Tuple2(ht(ij, ff, il), hM)
1507+ let iq = hr((in + (io * aI)), hF._4)
1508+ let fg = iq._1
1509+ let hP = iq._2
1510+ $Tuple2(hv(im, fg, io), hP)
15031511 }
1504- let dg = im._1
1505- let io = im._2
1506- func ip (eU,fE) = (eU :+ (hC._2[fE] + (if ((fE == dg))
1507- then gK
1512+ let dh = ip._1
1513+ let ir = ip._2
1514+ func is (eV,fF) = (eV :+ (hF._2[fF] + (if ((fF == dh))
1515+ then gL
15081516 else 0)))
15091517
1510- let iq = {
1511- let eW = cQ
1512- let eX = size(eW)
1513- let eY = nil
1514- func ir (fa,fb) = if ((fb >= eX))
1515- then fa
1516- else ip(fa, eW[fb])
1517-
1518- func is (fa,fb) = if ((fb >= eX))
1519- then fa
1518+ let it = {
1519+ let eX = cR
1520+ let eY = size(eX)
1521+ let eZ = nil
1522+ func iu (fb,fc) = if ((fc >= eY))
1523+ then fb
1524+ else is(fb, eX[fc])
1525+
1526+ func iv (fb,fc) = if ((fc >= eY))
1527+ then fb
15201528 else throw("List size exceeds 6")
15211529
1522- is(ir(ir(ir(ir(ir(ir(eY, 0), 1), 2), 3), 4), 5), 6)
1523- }
1524- $Tuple4((hC._1 :+ hm[dg]), iq, (hC._3 + gK), io)
1530+ iv(iu(iu(iu(iu(iu(iu(eZ, 0), 1), 2), 3), 4), 5), 6)
1531+ }
1532+ $Tuple4((hF._1 + hn[dh]), it, (hF._3 + gL), ir)
15251533 }
15261534
1527- let fm = {
1528- let eW = hl
1529- let eX = size(eW)
1530- let eY = $Tuple4(nil, hW, hX, hS)
1531- func ic (fa,fb) = if ((fb >= eX))
1532- then fa
1533- else hY(fa, eW[fb])
1534-
1535- func id (fa,fb) = if ((fb >= eX))
1536- then fa
1535+ let fn = {
1536+ let eX = hm
1537+ let eY = size(eX)
1538+ let eZ = $Tuple4("", hZ, ia, hV)
1539+ func if (fb,fc) = if ((fc >= eY))
1540+ then fb
1541+ else ib(fb, eX[fc])
1542+
1543+ func ig (fb,fc) = if ((fc >= eY))
1544+ then fb
15371545 else throw("List size exceeds 25")
15381546
1539- id(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(eY, 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)
1547+ ig(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(eZ, 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)
15401548 }
1541- func it (eU,fE) = (eU + fm._1[fE])
1542-
1543- $Tuple2(hR, {
1544- let eW = hl
1545- let eX = size(eW)
1546- let eY = ""
1547- func ih (fa,fb) = if ((fb >= eX))
1548- then fa
1549- else it(fa, eW[fb])
1550-
1551- func ii (fa,fb) = if ((fb >= eX))
1552- then fa
1553- else throw("List size exceeds 25")
1554-
1555- ii(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(ih(eY, 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)
1556- })
1557- }
1558-
1559-
1560-let iu = [[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]]
1561-
1562-func iv (dG,iw) = {
1563- let hy = toInt((dG % em))
1564- let ix = if ((iw[0] > hy))
1549+ $Tuple2(hU, fn._1)
1550+ }
1551+
1552+
1553+let iw = [[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]]
1554+
1555+func ix (dH,iy) = {
1556+ let hA = toInt((dH % en))
1557+ let iz = if ((iy[0] > hA))
15651558 then "A"
1566- else if ((iw[1] > hy))
1559+ else if ((iy[1] > hA))
15671560 then "B"
1568- else if ((iw[2] > hy))
1561+ else if ((iy[2] > hA))
15691562 then "C"
1570- else if ((iw[3] > hy))
1563+ else if ((iy[3] > hA))
15711564 then "D"
1572- else if ((iw[4] > hy))
1565+ else if ((iy[4] > hA))
15731566 then "E"
15741567 else "F"
1575- ix
1576- }
1577-
1578-
1579-func iy (iz,iA) = {
1580- let iB = iu[iA]
1581- func iC (eU,eV) = $Tuple2((((((eU._1 + iv(eU._2, iB)) + iv((eU._2 / em), iB)) + iv((eU._2 / en), iB)) + iv((eU._2 / eo), iB)) + iv((eU._2 / ep), iB)), (eU._2 / eq))
1582-
1583- let gy = {
1584- let eW = [1, 2, 3, 4, 5]
1585- let eX = size(eW)
1586- let eY = $Tuple2("", (iz / el))
1587- func eZ (fa,fb) = if ((fb >= eX))
1588- then fa
1589- else iC(fa, eW[fb])
1590-
1591- func fc (fa,fb) = if ((fb >= eX))
1592- then fa
1568+ iz
1569+ }
1570+
1571+
1572+func iA (iB,iC) = {
1573+ let iD = iw[iC]
1574+ func iE (eV,eW) = $Tuple2((((((eV._1 + ix(eV._2, iD)) + ix((eV._2 / en), iD)) + ix((eV._2 / eo), iD)) + ix((eV._2 / ep), iD)) + ix((eV._2 / eq), iD)), (eV._2 / er))
1575+
1576+ let gz = {
1577+ let eX = [1, 2, 3, 4, 5]
1578+ let eY = size(eX)
1579+ let eZ = $Tuple2("", (iB / em))
1580+ func fa (fb,fc) = if ((fc >= eY))
1581+ then fb
1582+ else iE(fb, eX[fc])
1583+
1584+ func fd (fb,fc) = if ((fc >= eY))
1585+ then fb
15931586 else throw("List size exceeds 5")
15941587
1595- fc(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5)
1588+ fd(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5)
15961589 }
1597- gy._1
1598- }
1599-
1600-
1601-func iD (iE,gK) = {
1602- func iF (eU,dE) = {
1603- let fE = eU._2
1604- let ho = parseIntValue(dE)
1605- let hj = if ((ho == 0))
1590+ gz._1
1591+ }
1592+
1593+
1594+func iF (iG,gL) = {
1595+ func iH (eV,dF) = {
1596+ let fF = eV._2
1597+ let hq = parseIntValue(dF)
1598+ let hk = if ((hq == 0))
16061599 then 0
1607- else if ((ho >= (4 * gK)))
1608- then (ho / gK)
1609- else if ((ho > (3 * gK)))
1600+ else if ((hq >= (4 * gL)))
1601+ then (hq / gL)
1602+ else if ((hq > (3 * gL)))
16101603 then 3
1611- else (((ho - 1) / gK) + 1)
1612- $Tuple3((eU._1 :+ hj), (eU._2 + 1), (eU._3 + hj))
1604+ else (((hq - 1) / gL) + 1)
1605+ $Tuple3((eV._1 :+ hk), (eV._2 + 1), (eV._3 + hk))
16131606 }
16141607
1615- let gy = {
1616- let eW = iE
1617- let eX = size(eW)
1618- let eY = $Tuple3(nil, 0, 0)
1619- func eZ (fa,fb) = if ((fb >= eX))
1620- then fa
1621- else iF(fa, eW[fb])
1622-
1623- func fc (fa,fb) = if ((fb >= eX))
1624- then fa
1608+ let gz = {
1609+ let eX = iG
1610+ let eY = size(eX)
1611+ let eZ = $Tuple3(nil, 0, 0)
1612+ func fa (fb,fc) = if ((fc >= eY))
1613+ then fb
1614+ else iH(fb, eX[fc])
1615+
1616+ func fd (fb,fc) = if ((fc >= eY))
1617+ then fb
16251618 else throw("List size exceeds 6")
16261619
1627- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
1620+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
16281621 }
1629- let hu = gy._1
1630- let iG = value(indexOf(hu, max(hu)))
1631- let hw = (gy._3 - 25)
1632- func iH (eU,dg) = {
1633- let dQ = (hu[dg] - (if ((dg == iG))
1634- then hw
1622+ let hw = gz._1
1623+ let iI = value(indexOf(hw, max(hw)))
1624+ let hy = (gz._3 - 25)
1625+ func iJ (eV,dh) = {
1626+ let dR = (hw[dh] - (if ((dh == iI))
1627+ then hy
16351628 else 0))
1636- let dU = if ((dQ == 0))
1629+ let dV = if ((dR == 0))
16371630 then nil
1638- else split(drop(toString(pow(10, 0, dQ, 0, 0, DOWN)), 1), "")
1639- let gd = hm[dg]
1640- func iI (hC,hZ) = (hC :+ gd)
1641-
1642- let iJ = {
1643- let eW = dU
1644- let eX = size(eW)
1645- let eY = nil
1646- func hP (fa,fb) = if ((fb >= eX))
1647- then fa
1648- else iI(fa, eW[fb])
1649-
1650- func hQ (fa,fb) = if ((fb >= eX))
1651- then fa
1631+ else split(drop(toString(pow(10, 0, dR, 0, 0, DOWN)), 1), "")
1632+ let ge = hn[dh]
1633+ func iK (hF,ic) = (hF :+ ge)
1634+
1635+ let iL = {
1636+ let eX = dV
1637+ let eY = size(eX)
1638+ let eZ = nil
1639+ func hS (fb,fc) = if ((fc >= eY))
1640+ then fb
1641+ else iK(fb, eX[fc])
1642+
1643+ func hT (fb,fc) = if ((fc >= eY))
1644+ then fb
16521645 else throw("List size exceeds 25")
16531646
1654- hQ(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(eY, 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)
1655- }
1656- (eU ++ iJ)
1647+ hT(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(eZ, 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)
1648+ }
1649+ (eV ++ iL)
16571650 }
16581651
1659- let ff = {
1660- let eW = cQ
1661- let eX = size(eW)
1662- let eY = nil
1663- func hP (fa,fb) = if ((fb >= eX))
1664- then fa
1665- else iH(fa, eW[fb])
1666-
1667- func hQ (fa,fb) = if ((fb >= eX))
1668- then fa
1652+ let fg = {
1653+ let eX = cR
1654+ let eY = size(eX)
1655+ let eZ = nil
1656+ func hS (fb,fc) = if ((fc >= eY))
1657+ then fb
1658+ else iJ(fb, eX[fc])
1659+
1660+ func hT (fb,fc) = if ((fc >= eY))
1661+ then fb
16691662 else throw("List size exceeds 6")
16701663
1671- hQ(hP(hP(hP(hP(hP(hP(eY, 0), 1), 2), 3), 4), 5), 6)
1664+ hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6)
16721665 }
1673- func it (eU,fE) = (eU + ff[fE])
1674-
1675- let eW = hl
1676- let eX = size(eW)
1677- let eY = ""
1678- func ic (fa,fb) = if ((fb >= eX))
1679- then fa
1680- else it(fa, eW[fb])
1681-
1682- func id (fa,fb) = if ((fb >= eX))
1683- then fa
1666+ func iM (eV,fF) = (eV + fg[fF])
1667+
1668+ let eX = hm
1669+ let eY = size(eX)
1670+ let eZ = ""
1671+ func if (fb,fc) = if ((fc >= eY))
1672+ then fb
1673+ else iM(fb, eX[fc])
1674+
1675+ func ig (fb,fc) = if ((fc >= eY))
1676+ then fb
16841677 else throw("List size exceeds 25")
16851678
1686- id(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(eY, 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)
1687- }
1688-
1689-
1690-func iK (iL) = {
1691- let gx = split(valueOrElse(getString(iL), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1692-[toString(valueOrElse(parseInt(gx[bm]), 0)), if ((size(split(gx[bn], "_")) == aI))
1693- then gx[bn]
1694- else "0_0_0_0_0_0", if ((size(split(gx[bo], "_")) == aI))
1695- then gx[bo]
1696- else "0_0_0_0_0_0", gx[bp]]
1697- }
1698-
1699-
1700-func iM (iN) = {
1701- let fs = split(iN, "_")
1702- ((aL * (parseIntValue(fs[1]) + 1)) * parseIntValue(fs[0]))
1703- }
1704-
1705-
1706-func iO (iP) = {
1707- let iQ = iP[bg]
1708- func iR (eU,iS) = (eU + parseIntValue(iS))
1709-
1710- func iT (eU,iS) = {
1711- let dg = eU._1
1712- let eN = (((parseIntValue(iS) + bc) - 1) / bc)
1713- $Tuple2((dg + 1), (eU._2 + (eN * cK)))
1679+ ig(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(eZ, 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)
1680+ }
1681+
1682+
1683+func iN (iO) = {
1684+ let gy = split(valueOrElse(getString(iO), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1685+[toString(valueOrElse(parseInt(gy[bn]), 0)), if ((size(split(gy[bo], "_")) == aI))
1686+ then gy[bo]
1687+ else "0_0_0_0_0_0", if ((size(split(gy[bp], "_")) == aI))
1688+ then gy[bp]
1689+ else "0_0_0_0_0_0", gy[bq]]
1690+ }
1691+
1692+
1693+func iP (iQ) = {
1694+ let ft = split(iQ, "_")
1695+ ((aM * (parseIntValue(ft[1]) + 1)) * parseIntValue(ft[0]))
1696+ }
1697+
1698+
1699+func iR (iS) = {
1700+ let iT = iS[bh]
1701+ func iU (eV,iV) = (eV + parseIntValue(iV))
1702+
1703+ func iW (eV,iV) = {
1704+ let dh = eV._1
1705+ let eO = (((parseIntValue(iV) + bd) - 1) / bd)
1706+ $Tuple2((dh + 1), (eV._2 + (eO * cL)))
17141707 }
17151708
1716- let iU = {
1717- let eW = split(iP[be], "_")
1718- let eX = size(eW)
1719- let eY = 0
1720- func eZ (fa,fb) = if ((fb >= eX))
1721- then fa
1722- else iR(fa, eW[fb])
1723-
1724- func fc (fa,fb) = if ((fb >= eX))
1725- then fa
1709+ let iX = {
1710+ let eX = split(iS[bf], "_")
1711+ let eY = size(eX)
1712+ let eZ = 0
1713+ func fa (fb,fc) = if ((fc >= eY))
1714+ then fb
1715+ else iU(fb, eX[fc])
1716+
1717+ func fd (fb,fc) = if ((fc >= eY))
1718+ then fb
17261719 else throw("List size exceeds 6")
17271720
1728- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
1721+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
17291722 }
1730- let iV = {
1731- let eW = split(iP[bf], "_")
1732- let eX = size(eW)
1733- let eY = 0
1734- func hP (fa,fb) = if ((fb >= eX))
1735- then fa
1736- else iR(fa, eW[fb])
1737-
1738- func hQ (fa,fb) = if ((fb >= eX))
1739- then fa
1723+ let iY = {
1724+ let eX = split(iS[bg], "_")
1725+ let eY = size(eX)
1726+ let eZ = 0
1727+ func hS (fb,fc) = if ((fc >= eY))
1728+ then fb
1729+ else iU(fb, eX[fc])
1730+
1731+ func hT (fb,fc) = if ((fc >= eY))
1732+ then fb
17401733 else throw("List size exceeds 6")
17411734
1742- hQ(hP(hP(hP(hP(hP(hP(eY, 0), 1), 2), 3), 4), 5), 6)
1735+ hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6)
17431736 }
1744- let iW = if ((iQ == ""))
1737+ let iZ = if ((iT == ""))
17451738 then 0
1746- else ( let eW = split_4C(iQ, "_")
1747- let eX = size(eW)
1748- let eY = $Tuple2(0, 0)
1749- func ic (fa,fb) = if ((fb >= eX))
1750- then fa
1751- else iT(fa, eW[fb])
1752-
1753- func id (fa,fb) = if ((fb >= eX))
1754- then fa
1739+ else ( let eX = split_4C(iT, "_")
1740+ let eY = size(eX)
1741+ let eZ = $Tuple2(0, 0)
1742+ func if (fb,fc) = if ((fc >= eY))
1743+ then fb
1744+ else iW(fb, eX[fc])
1745+
1746+ func ig (fb,fc) = if ((fc >= eY))
1747+ then fb
17551748 else throw("List size exceeds 50")
17561749
1757- id(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(eY, 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
1758- ((iU + iV) + iW)
1759- }
1760-
1761-
1762-func iX (iY,iZ,ja) = {
1763- let iN = ((toString(iZ) + "_") + toString(ja))
1764- let jb = iM(iN)
1765- let jc = valueOrElse(getString(iY), (iN + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1766- let jd = split_4C(jc, ":")
1767- let je = iO(jd)
1768- let jf = if ((5 > size(jd)))
1769- then makeString(["0", toString(je), toString((jb - je)), toString(jb)], "_")
1750+ ig(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(eZ, 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
1751+ ((iX + iY) + iZ)
1752+ }
1753+
1754+
1755+func ja (jb,jc,jd) = {
1756+ let iQ = ((toString(jc) + "_") + toString(jd))
1757+ let je = iP(iQ)
1758+ let jf = valueOrElse(getString(jb), (iQ + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1759+ let jg = split_4C(jf, ":")
1760+ let jh = iR(jg)
1761+ let ji = if ((5 > size(jg)))
1762+ then makeString(["0", toString(jh), toString((je - jh)), toString(je)], "_")
17701763 else {
1771- let jg = split(jd[bh], "_")
1772- let jh = parseIntValue(jg[bi])
1773- let ji = if ((size(jg) > 1))
1774- then parseIntValue(jg[bj])
1775- else je
1776- makeString([toString(jh), toString(ji), toString(((jb - jh) - ji)), toString(jb)], "_")
1777- }
1778-[jd[bd], if ((size(split(jd[be], "_")) == aI))
1779- then jd[be]
1780- else "0_0_0_0_0_0", if ((size(split(jd[bf], "_")) == aI))
1781- then jd[bf]
1782- else "0_0_0_0_0_0", jd[bg], jf]
1783- }
1784-
1785-
1786-func jj (iP) = {
1787- let jk = iO(iP)
1788- let jl = parseIntValue(split(iP[bh], "_")[bi])
1789- ((iM(iP[bd]) - jk) - jl)
1790- }
1791-
1792-
1793-func jm (jn,iP,jo) = if ((size(jn) != 3))
1764+ let jj = split(jg[bi], "_")
1765+ let jk = parseIntValue(jj[bj])
1766+ let jl = if ((size(jj) > 1))
1767+ then parseIntValue(jj[bk])
1768+ else jh
1769+ makeString([toString(jk), toString(jl), toString(((je - jk) - jl)), toString(je)], "_")
1770+ }
1771+[jg[be], if ((size(split(jg[bf], "_")) == aI))
1772+ then jg[bf]
1773+ else "0_0_0_0_0_0", if ((size(split(jg[bg], "_")) == aI))
1774+ then jg[bg]
1775+ else "0_0_0_0_0_0", jg[bh], ji]
1776+ }
1777+
1778+
1779+func jm (iS) = {
1780+ let jn = iR(iS)
1781+ let jo = parseIntValue(split(iS[bi], "_")[bj])
1782+ ((iP(iS[be]) - jn) - jo)
1783+ }
1784+
1785+
1786+func jp (jq,iS,jr) = if ((size(jq) != 3))
17941787 then throw("cargoListStr should contain exactly 2 ':' separators")
17951788 else {
1796- let jp = split(jn[0], "_")
1797- let jq = split(jn[1], "_")
1798- let jr = if ((jn[2] == ""))
1789+ let js = split(jq[0], "_")
1790+ let jt = split(jq[1], "_")
1791+ let ju = if ((jq[2] == ""))
17991792 then nil
1800- else split_4C(jn[2], "_")
1801- if ((size(jp) != aI))
1793+ else split_4C(jq[2], "_")
1794+ if ((size(js) != aI))
18021795 then throw("All 6 resources should be passed")
1803- else if ((size(jq) != aI))
1796+ else if ((size(jt) != aI))
18041797 then throw("All 6 materials should be passed")
18051798 else {
1806- let hc = jj(iP)
1807- let js = split(iP[be], "_")
1808- let jt = split(iP[bf], "_")
1809- let ju = if ((iP[bg] == ""))
1799+ let hd = jm(iS)
1800+ let jv = split(iS[bf], "_")
1801+ let jw = split(iS[bg], "_")
1802+ let jx = if ((iS[bh] == ""))
18101803 then nil
1811- else split_4C(iP[bg], "_")
1812- let ha = split(jo[bn], "_")
1813- let jv = split(jo[bo], "_")
1814- let jw = if ((jo[bp] == ""))
1804+ else split_4C(iS[bh], "_")
1805+ let hb = split(jr[bo], "_")
1806+ let jy = split(jr[bp], "_")
1807+ let jz = if ((jr[bq] == ""))
18151808 then nil
1816- else split_4C(jo[bp], "_")
1817- func jx (eU,iS) = {
1818- let gN = eU._1
1819- let jy = parseIntValue(iS)
1820- let jz = parseIntValue(js[gN])
1821- let jA = parseIntValue(ha[gN])
1822- if ((jy == 0))
1823- then $Tuple4((gN + 1), (eU._2 :+ js[gN]), (eU._3 :+ ha[gN]), eU._4)
1824- else if ((jy > 0))
1825- then if ((jy > jA))
1826- then throw((((("Attempt to take " + iS) + " from backpack, but only ") + toString(jA)) + " available"))
1827- else $Tuple4((gN + 1), (eU._2 :+ toString((jz + jy))), (eU._3 :+ toString((jA - jy))), (eU._4 + jy))
1828- else if ((-(jy) > jz))
1829- then throw((((("Attempt to take " + toString(-(jy))) + " from warehouse, but only ") + toString(jz)) + " available"))
1830- else $Tuple4((gN + 1), (eU._2 :+ toString((jz + jy))), (eU._3 :+ toString((jA - jy))), (eU._4 + jy))
1809+ else split_4C(jr[bq], "_")
1810+ func jA (eV,iV) = {
1811+ let gO = eV._1
1812+ let jB = parseIntValue(iV)
1813+ let jC = parseIntValue(jv[gO])
1814+ let jD = parseIntValue(hb[gO])
1815+ if ((jB == 0))
1816+ then $Tuple4((gO + 1), (eV._2 :+ jv[gO]), (eV._3 :+ hb[gO]), eV._4)
1817+ else if ((jB > 0))
1818+ then if ((jB > jD))
1819+ then throw((((("Attempt to take " + iV) + " from backpack, but only ") + toString(jD)) + " available"))
1820+ else $Tuple4((gO + 1), (eV._2 :+ toString((jC + jB))), (eV._3 :+ toString((jD - jB))), (eV._4 + jB))
1821+ else if ((-(jB) > jC))
1822+ then throw((((("Attempt to take " + toString(-(jB))) + " from warehouse, but only ") + toString(jC)) + " available"))
1823+ else $Tuple4((gO + 1), (eV._2 :+ toString((jC + jB))), (eV._3 :+ toString((jD - jB))), (eV._4 + jB))
18311824 }
18321825
1833- let ff = {
1834- let eW = jp
1835- let eX = size(eW)
1836- let eY = $Tuple4(0, nil, nil, 0)
1837- func eZ (fa,fb) = if ((fb >= eX))
1838- then fa
1839- else jx(fa, eW[fb])
1840-
1841- func fc (fa,fb) = if ((fb >= eX))
1842- then fa
1826+ let fg = {
1827+ let eX = js
1828+ let eY = size(eX)
1829+ let eZ = $Tuple4(0, nil, nil, 0)
1830+ func fa (fb,fc) = if ((fc >= eY))
1831+ then fb
1832+ else jA(fb, eX[fc])
1833+
1834+ func fd (fb,fc) = if ((fc >= eY))
1835+ then fb
18431836 else throw("List size exceeds 6")
18441837
1845- fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
1838+ fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
18461839 }
1847- func jB (eU,iS) = {
1848- let gN = eU._1
1849- let jy = parseIntValue(iS)
1850- let jC = parseIntValue(jt[gN])
1851- let jD = parseIntValue(jv[gN])
1852- if ((jy == 0))
1853- then $Tuple4((gN + 1), (eU._2 :+ jt[gN]), (eU._3 :+ jv[gN]), eU._4)
1854- else if ((jy > 0))
1855- then if ((jy > jD))
1856- then throw((((("Attempt to take " + iS) + " from backpack, but only ") + toString(jD)) + " available"))
1857- else $Tuple4((gN + 1), (eU._2 :+ toString((jC + jy))), (eU._3 :+ toString((jD - jy))), (eU._4 + jy))
1858- else if ((-(jy) > jC))
1859- then throw((((("Attempt to take " + toString(-(jy))) + " from warehouse, but only ") + toString(jC)) + " available"))
1860- else $Tuple4((gN + 1), (eU._2 :+ toString((jC + jy))), (eU._3 :+ toString((jD - jy))), (eU._4 + jy))
1840+ func jE (eV,iV) = {
1841+ let gO = eV._1
1842+ let jB = parseIntValue(iV)
1843+ let jF = parseIntValue(jw[gO])
1844+ let jG = parseIntValue(jy[gO])
1845+ if ((jB == 0))
1846+ then $Tuple4((gO + 1), (eV._2 :+ jw[gO]), (eV._3 :+ jy[gO]), eV._4)
1847+ else if ((jB > 0))
1848+ then if ((jB > jG))
1849+ then throw((((("Attempt to take " + iV) + " from backpack, but only ") + toString(jG)) + " available"))
1850+ else $Tuple4((gO + 1), (eV._2 :+ toString((jF + jB))), (eV._3 :+ toString((jG - jB))), (eV._4 + jB))
1851+ else if ((-(jB) > jF))
1852+ then throw((((("Attempt to take " + toString(-(jB))) + " from warehouse, but only ") + toString(jF)) + " available"))
1853+ else $Tuple4((gO + 1), (eV._2 :+ toString((jF + jB))), (eV._3 :+ toString((jG - jB))), (eV._4 + jB))
18611854 }
18621855
1863- let gt = {
1864- let eW = jq
1865- let eX = size(eW)
1866- let eY = $Tuple4(0, nil, nil, ff._4)
1867- func hP (fa,fb) = if ((fb >= eX))
1868- then fa
1869- else jB(fa, eW[fb])
1870-
1871- func hQ (fa,fb) = if ((fb >= eX))
1872- then fa
1856+ let gu = {
1857+ let eX = jt
1858+ let eY = size(eX)
1859+ let eZ = $Tuple4(0, nil, nil, fg._4)
1860+ func hS (fb,fc) = if ((fc >= eY))
1861+ then fb
1862+ else jE(fb, eX[fc])
1863+
1864+ func hT (fb,fc) = if ((fc >= eY))
1865+ then fb
18731866 else throw("List size exceeds 6")
18741867
1875- hQ(hP(hP(hP(hP(hP(hP(eY, 0), 1), 2), 3), 4), 5), 6)
1868+ hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6)
18761869 }
1877- func jE (eU,iS) = {
1878- let gN = eU._1
1879- let jy = parseIntValue(iS)
1880- let jF = if ((size(ju) > gN))
1881- then parseIntValue(ju[gN])
1870+ func jH (eV,iV) = {
1871+ let gO = eV._1
1872+ let jB = parseIntValue(iV)
1873+ let jI = if ((size(jx) > gO))
1874+ then parseIntValue(jx[gO])
18821875 else 0
1883- let jG = if ((size(jw) > gN))
1884- then parseIntValue(jw[gN])
1876+ let jJ = if ((size(jz) > gO))
1877+ then parseIntValue(jz[gO])
18851878 else 0
1886- if ((jy == 0))
1887- then $Tuple4((gN + 1), (eU._2 :+ toString(jF)), (eU._3 :+ toString(jG)), eU._4)
1888- else if ((jy > 0))
1889- then if ((jy > jG))
1890- then throw((((("Attempt to take " + iS) + " from backpack, but only ") + toString(jG)) + " available"))
1879+ if ((jB == 0))
1880+ then $Tuple4((gO + 1), (eV._2 :+ toString(jI)), (eV._3 :+ toString(jJ)), eV._4)
1881+ else if ((jB > 0))
1882+ then if ((jB > jJ))
1883+ then throw((((("Attempt to take " + iV) + " from backpack, but only ") + toString(jJ)) + " available"))
18911884 else {
1892- let fW = (eK((jF + jy), bc) - eK(jF, bc))
1893- $Tuple4((gN + 1), (eU._2 :+ toString((jF + jy))), (eU._3 :+ toString((jG - jy))), (eU._4 + fW))
1885+ let fX = (eL((jI + jB), bd) - eL(jI, bd))
1886+ $Tuple4((gO + 1), (eV._2 :+ toString((jI + jB))), (eV._3 :+ toString((jJ - jB))), (eV._4 + fX))
18941887 }
1895- else if ((-(jy) > jF))
1896- then throw((((("Attempt to take " + toString(-(jy))) + " from warehouse, but only ") + toString(jF)) + " available"))
1888+ else if ((-(jB) > jI))
1889+ then throw((((("Attempt to take " + toString(-(jB))) + " from warehouse, but only ") + toString(jI)) + " available"))
18971890 else {
1898- let fW = (eK((jF + jy), bc) - eK(jF, bc))
1899- $Tuple4((gN + 1), (eU._2 :+ toString((jF + jy))), (eU._3 :+ toString((jG - jy))), (eU._4 + fW))
1891+ let fX = (eL((jI + jB), bd) - eL(jI, bd))
1892+ $Tuple4((gO + 1), (eV._2 :+ toString((jI + jB))), (eV._3 :+ toString((jJ - jB))), (eV._4 + fX))
19001893 }
19011894 }
19021895
1903- let gx = if ((size(jr) != 0))
1896+ let gy = if ((size(ju) != 0))
19041897 then {
1905- let eW = jr
1906- let eX = size(eW)
1907- let eY = $Tuple4(0, nil, nil, gt._4)
1908- func ic (fa,fb) = if ((fb >= eX))
1909- then fa
1910- else jE(fa, eW[fb])
1911-
1912- func id (fa,fb) = if ((fb >= eX))
1913- then fa
1898+ let eX = ju
1899+ let eY = size(eX)
1900+ let eZ = $Tuple4(0, nil, nil, gu._4)
1901+ func if (fb,fc) = if ((fc >= eY))
1902+ then fb
1903+ else jH(fb, eX[fc])
1904+
1905+ func ig (fb,fc) = if ((fc >= eY))
1906+ then fb
19141907 else throw("List size exceeds 50")
19151908
1916- id(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(ic(eY, 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)
1909+ ig(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(eZ, 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)
19171910 }
1918- else $Tuple4(0, ju, jw, gt._4)
1919- let jH = gx._4
1920- if ((jH > hc))
1921- then throw((((("Attempt to put total " + toString(jH)) + " stuff, but only ") + toString(hc)) + " warehouse space left"))
1922- else $Tuple7(makeString(ff._2, "_"), makeString(gt._2, "_"), makeString_2C(gx._2, "_"), makeString(ff._3, "_"), makeString(gt._3, "_"), makeString_2C(gx._3, "_"), jH)
1911+ else $Tuple4(0, jx, jz, gu._4)
1912+ let jK = gy._4
1913+ if ((jK > hd))
1914+ then throw((((("Attempt to put total " + toString(jK)) + " stuff, but only ") + toString(hd)) + " warehouse space left"))
1915+ else $Tuple7(makeString(fg._2, "_"), makeString(gu._2, "_"), makeString_2C(gy._2, "_"), makeString(fg._3, "_"), makeString(gu._3, "_"), makeString_2C(gy._3, "_"), jK)
19231916 }
19241917 }
19251918
19261919
1927-func jI (jJ,jK) = {
1928- let bQ = toString(jJ)
1929- let jL = hi(toBigInt(jK))
1930- let jM = valueOrElse(getInteger(es()), (er + 1))
1931- let ew = toString(jM)
1932- let iA = toInt((jL % el))
1933- let gQ = iy(jL, iA)
1934- let dz = aU[iA]
1935- let jN = Issue(eJ(ew, "S"), makeString([ew, "S", gQ, dz], "_"), 1, 0, false)
1936- let bu = calculateAssetId(jN)
1937- let jO = toBase58String(bu)
1938- $Tuple2([IntegerEntry(es(), (jM + 1)), jN, StringEntry(ev(ew), jO), StringEntry(bt(jO), bQ), StringEntry(ey(ew), bQ), IntegerEntry(bD(jO), 0), IntegerEntry(ex(jO, bQ), 0), ScriptTransfer(jJ, 1, bu)], $Tuple2(jO, dz))
1939- }
1940-
1941-
1942-func jP (bQ,jQ,jR) = if (!(sigVerify_8Kb(jQ, jR, ec)))
1920+func jL (jM,jN) = {
1921+ let bR = toString(jM)
1922+ let jO = hj(toBigInt(jN))
1923+ let jP = valueOrElse(getInteger(et()), (es + 1))
1924+ let ex = toString(jP)
1925+ let iC = toInt((jO % em))
1926+ let gR = iA(jO, iC)
1927+ let dA = aV[iC]
1928+ let jQ = Issue(eK(ex, "S"), makeString([ex, "S", gR, dA], "_"), 1, 0, false)
1929+ let bv = calculateAssetId(jQ)
1930+ let jR = toBase58String(bv)
1931+ $Tuple2([IntegerEntry(et(), (jP + 1)), jQ, StringEntry(ew(ex), jR), StringEntry(bu(jR), bR), StringEntry(ez(ex), bR), IntegerEntry(bE(jR), 0), IntegerEntry(ey(jR, bR), 0), ScriptTransfer(jM, 1, bv)], $Tuple2(jR, dA))
1932+ }
1933+
1934+
1935+func jS (bR,jT,jU) = if (!(sigVerify_8Kb(jT, jU, ed)))
19431936 then throw("signature does not match")
19441937 else {
1945- let fs = split_4C(toUtf8String(jQ), ";")
1946- let jS = split_4C(fs[0], "|")
1947- let jT = split(jS[eF], "_")
1948- let jU = parseIntValue(jT[0])
1949- let jV = parseIntValue(jT[1])
1950- let jW = split(fs[1], ":")
1951- let jX = jW[0]
1952- let jY = parseIntValue(jS[eG])
1953- if (if ((jY > (lastBlock.timestamp + ee)))
1938+ let ft = split_4C(toUtf8String(jT), ";")
1939+ let jV = split_4C(ft[0], "|")
1940+ let jW = split(jV[eG], "_")
1941+ let jX = parseIntValue(jW[0])
1942+ let jY = parseIntValue(jW[1])
1943+ let jZ = split(ft[1], ":")
1944+ let ka = jZ[0]
1945+ let kb = parseIntValue(jV[eH])
1946+ if (if ((kb > (lastBlock.timestamp + ef)))
19541947 then true
1955- else ((lastBlock.timestamp - ee) > jY))
1956- then throw(((("signature outdated: logTime=" + toString(jY)) + ", bcTime=") + toString(lastBlock.timestamp)))
1948+ else ((lastBlock.timestamp - ef) > kb))
1949+ then throw(((("signature outdated: logTime=" + toString(kb)) + ", bcTime=") + toString(lastBlock.timestamp)))
19571950 else {
1958- let jZ = jW[1]
1959- let ka = valueOrElse(getString(dO(bQ)), "")
1960- if ((ka != jZ))
1961- then throw(((("Tx ids don't match! In state: " + ka) + ", in msg: ") + jZ))
1951+ let kc = jZ[1]
1952+ let kd = valueOrElse(getString(dP(bR)), "")
1953+ if ((kd != kc))
1954+ then throw(((("Tx ids don't match! In state: " + kd) + ", in msg: ") + kc))
19621955 else {
1963- let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked")
1964- let kb = A(B)
1965- let kc = aj(valueOrElse(getInteger(E(B)), 0))
1966- let kd = valueOrElse(getInteger(kb), kc)
1967- if ((kd != jU))
1968- then throw(((("oldHealth=" + toString(kd)) + " from state does not match one from flight log=") + toString(jU)))
1969- else if ((0 >= jU))
1956+ let B = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
1957+ let ke = A(B)
1958+ let kf = aj(valueOrElse(getInteger(E(B)), 0))
1959+ let kg = valueOrElse(getInteger(ke), kf)
1960+ if ((kg != jX))
1961+ then throw(((("oldHealth=" + toString(kg)) + " from state does not match one from flight log=") + toString(jX)))
1962+ else if ((0 >= jX))
19701963 then throw("You can't fly with zero health")
1971- else if (!(gz(B)))
1964+ else if (!(gA(B)))
19721965 then throw("Equipment incompatible")
19731966 else {
1974- let ke = if ((size(jS) > eH))
1975- then jS[eH]
1967+ let kh = if ((size(jV) > eI))
1968+ then jV[eI]
19761969 else ""
1977- let kf = if ((size(jS) > eI))
1978- then jS[eI]
1970+ let ki = if ((size(jV) > eJ))
1971+ then jV[eJ]
19791972 else ""
1980- let kg = if (if ((jV > 0))
1981- then (ke == "$")
1973+ let kj = if (if ((jY > 0))
1974+ then (kh == "$")
19821975 else false)
1983- then dF(invoke(dh, "sendUsdtPrize", [bQ], nil))
1976+ then dG(invoke(di, "sendUsdtPrize", [bR], nil))
19841977 else 0
1985- $Tuple5(jV, B, kg, jX, kf)
1978+ $Tuple5(jY, B, kj, ka, ki)
19861979 }
19871980 }
19881981 }
19891982 }
19901983
19911984
1992-func kh (Q,ki) = {
1993- let ja = valueOrElse(getInteger(bD(Q)), 0)
1994- let kj = valueOrElse(getInteger(bx(aH, Q)), 0)
1995- let kk = (ja / 6)
1996- let kl = (ja / 7)
1997- ((aK + fraction(aK, ((ja + kk) + (2 * kl)), 5)) + fraction(aK, kj, (ki * 5)))
1998- }
1999-
2000-
2001-func km (c,kn,ko) = {
2002- let kp = if ((kn == eC))
2003- then $Tuple2(ko, valueOrElse(getString(bM(c)), ""))
1985+func kk (Q,kl) = {
1986+ let jd = valueOrElse(getInteger(bE(Q)), 0)
1987+ let km = valueOrElse(getInteger(by(aH, Q)), 0)
1988+ let kn = (jd / 6)
1989+ let ko = (jd / 7)
1990+ ((aL + fraction(aL, ((jd + kn) + (2 * ko)), 5)) + fraction(aL, km, (kl * 5)))
1991+ }
1992+
1993+
1994+func kp (c,kq,kr) = {
1995+ let ks = if ((kq == eD))
1996+ then $Tuple2(kr, valueOrElse(getString(bN(c)), ""))
20041997 else {
2005- let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
2006- let kq = valueOrElse(getString(bO(B)), aM)
2007- let ck = split(value(kq), "_")
2008- if ((ck[br] != "L"))
2009- then throw((("Duck location type is " + ck[br]) + ", but should be L"))
2010- else $Tuple2(ck[bs], B)
2011- }
2012- let Q = kp._1
2013- let kr = kp._2
2014- let ks = value(assetInfo(fromBase58String(Q)))
2015- let kt = bw(Q)
2016- let ku = valueOrErrorMessage(getInteger(kt), (("Land " + ks.name) + " is not staked"))
2017- let kv = valueOrErrorMessage(getString(bt(Q)), (("NFT " + ks.name) + " is orphaned"))
2018- if ((kv != c))
1998+ let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
1999+ let kt = valueOrElse(getString(bP(B)), aN)
2000+ let cl = split(value(kt), "_")
2001+ if ((cl[bs] != "L"))
2002+ then throw((("Duck location type is " + cl[bs]) + ", but should be L"))
2003+ else $Tuple2(cl[bt], B)
2004+ }
2005+ let Q = ks._1
2006+ let ku = ks._2
2007+ let kv = value(assetInfo(fromBase58String(Q)))
2008+ let kw = bx(Q)
2009+ let kx = valueOrErrorMessage(getInteger(kw), (("Land " + kv.name) + " is not staked"))
2010+ let ky = valueOrErrorMessage(getString(bu(Q)), (("NFT " + kv.name) + " is orphaned"))
2011+ if ((ky != c))
20192012 then throw((aF + " is not yours"))
20202013 else {
2021- let kw = split(ks.description, "_")
2022- $Tuple4(kr, Q, kw, ku)
2023- }
2024- }
2025-
2026-
2027-func kx (c,eL,kn,ko) = if ((0 > eL))
2014+ let kz = split(kv.description, "_")
2015+ $Tuple4(ku, Q, kz, kx)
2016+ }
2017+ }
2018+
2019+
2020+func kA (c,eM,kq,kr) = if ((0 > eM))
20282021 then throw("Negative amount")
20292022 else {
2030- let gd = km(c, kn, ko)
2031- let dL = gd._3[do]
2032- let gJ = gP(gd._3[dp])
2033- let gT = (lastBlock.timestamp - gd._4)
2034- if ((0 > gT))
2035- then throw(((("Saved timestamp is in future, saved = " + toString(gd._4)) + ", current = ") + toString(lastBlock.timestamp)))
2023+ let ge = kp(c, kq, kr)
2024+ let dM = ge._3[dp]
2025+ let gK = gQ(ge._3[dq])
2026+ let gU = (lastBlock.timestamp - ge._4)
2027+ if ((0 > gU))
2028+ then throw(((("Saved timestamp is in future, saved = " + toString(ge._4)) + ", current = ") + toString(lastBlock.timestamp)))
20362029 else {
2037- let ki = dK(dL)
2038- let ky = kh(gd._2, ki)
2039- let kz = fraction(gT, (ky * ki), a)
2040- if ((eL > kz))
2041- then throw(((("Not enough resources, available = " + toString(kz)) + ", requested = ") + toString(eL)))
2030+ let kl = dL(dM)
2031+ let kB = kk(ge._2, kl)
2032+ let kC = fraction(gU, (kB * kl), a)
2033+ if ((eM > kC))
2034+ then throw(((("Not enough resources, available = " + toString(kC)) + ", requested = ") + toString(eM)))
20422035 else {
2043- let kA = fraction((kz - eL), a, (ky * ki))
2044- let kB = (lastBlock.timestamp - kA)
2045- let iZ = (ki / cL)
2046- let hb = gX(gJ, (gT - kA), iZ, ky)
2047- let iY = bC(gd._2)
2048- let ja = valueOrElse(getInteger(bD(gd._2)), 0)
2049- let iP = iX(iY, iZ, ja)
2050- let jg = split(iP[bh], "_")
2051- let hc = parseIntValue(jg[bk])
2052- if (if ((kn == eC))
2053- then (eL > hc)
2036+ let kD = fraction((kC - eM), a, (kB * kl))
2037+ let kE = (lastBlock.timestamp - kD)
2038+ let jc = (kl / cM)
2039+ let hc = gY(gK, (gU - kD), jc, kB)
2040+ let jb = bD(ge._2)
2041+ let jd = valueOrElse(getInteger(bE(ge._2)), 0)
2042+ let iS = ja(jb, jc, jd)
2043+ let jj = split(iS[bi], "_")
2044+ let hd = parseIntValue(jj[bl])
2045+ if (if ((kq == eD))
2046+ then (eM > hd)
20542047 else false)
2055- then throw((("Only " + toString(hc)) + " space left in warehouse"))
2048+ then throw((("Only " + toString(hd)) + " space left in warehouse"))
20562049 else {
2057- let iL = bN(gd._1)
2058- let jo = iK(iL)
2059- let ha = split(jo[bn], "_")
2060- let gZ = split(iP[be], "_")
2061- let kC = if ((kn == eC))
2062- then $Tuple4(gR(gZ, gJ, (gT - kA), iZ, ky), jo[bn], (parseIntValue(jg[bj]) + hb._2), (parseIntValue(jg[bk]) - hb._2))
2063- else if ((kn == eD))
2064- then $Tuple4(iP[be], gR(ha, gJ, (gT - kA), iZ, ky), parseIntValue(jg[bj]), parseIntValue(jg[bk]))
2050+ let iO = bO(ge._1)
2051+ let jr = iN(iO)
2052+ let hb = split(jr[bo], "_")
2053+ let ha = split(iS[bf], "_")
2054+ let kF = if ((kq == eD))
2055+ then $Tuple4(gS(ha, gK, (gU - kD), jc, kB), jr[bo], (parseIntValue(jj[bk]) + hc._2), (parseIntValue(jj[bl]) - hc._2))
2056+ else if ((kq == eE))
2057+ then $Tuple4(iS[bf], gS(hb, gK, (gU - kD), jc, kB), parseIntValue(jj[bk]), parseIntValue(jj[bl]))
20652058 else {
2066- let kD = gY(gZ, ha, hb, hc)
2067- let kE = min([parseIntValue(jg[bk]), hb._2])
2068- $Tuple4(kD._1, kD._2, (parseIntValue(jg[bj]) + kE), (parseIntValue(jg[bk]) - kE))
2059+ let kG = gZ(ha, hb, hc, hd)
2060+ let kH = min([parseIntValue(jj[bl]), hc._2])
2061+ $Tuple4(kG._1, kG._2, (parseIntValue(jj[bk]) + kH), (parseIntValue(jj[bl]) - kH))
20692062 }
2070- let kF = kC._1
2071- let kG = kC._2
2072- let kH = kC._3
2073- let kI = kC._4
2074- $Tuple5([IntegerEntry(bw(gd._2), kB), IntegerEntry(bz(aF, gd._2, c), kB)], iL, [jo[bm], kG, jo[bo], jo[bp]], iY, [iP[bd], kF, iP[bf], iP[bg], makeString([jg[bi], toString(kH), toString(kI), jg[bl]], "_")])
2063+ let kI = kF._1
2064+ let kJ = kF._2
2065+ let kK = kF._3
2066+ let kL = kF._4
2067+ $Tuple5([IntegerEntry(bx(ge._2), kE), IntegerEntry(bA(aF, ge._2, c), kE)], iO, [jr[bn], kJ, jr[bp], jr[bq]], jb, [iS[be], kI, iS[bg], iS[bh], makeString([jj[bj], toString(kK), toString(kL), jj[bm]], "_")])
20752068 }
20762069 }
20772070 }
20782071 }
20792072
20802073
2081-func kJ (c,Q,ki,kn) = {
2082- let kt = bw(Q)
2083- let ku = value(getInteger(kt))
2084- let kz = (fraction((lastBlock.timestamp - ku), kh(Q, ki), a) * ki)
2085- kx(c, kz, kn, Q)
2086- }
2087-
2088-
2089-func kK (fh,jJ,kL,Q) = {
2090- let c = toString(jJ)
2091- let gd = km(c, eE, Q)
2092- let ki = dK(gd._3[do])
2093- let kM = bD(gd._2)
2094- let kN = valueOrElse(getInteger(kM), 0)
2095- if (if (!(cz))
2096- then (kN >= 3)
2074+func kM (c,Q,kl,kq) = {
2075+ let kw = bx(Q)
2076+ let kx = value(getInteger(kw))
2077+ let kC = (fraction((lastBlock.timestamp - kx), kk(Q, kl), a) * kl)
2078+ kA(c, kC, kq, Q)
2079+ }
2080+
2081+
2082+func kN (fi,jM,kO,Q) = {
2083+ let c = toString(jM)
2084+ let ge = kp(c, eF, Q)
2085+ let kl = dL(ge._3[dp])
2086+ let kP = bE(ge._2)
2087+ let kQ = valueOrElse(getInteger(kP), 0)
2088+ if (if (!(cA))
2089+ then (kQ >= 3)
20972090 else false)
20982091 then throw("Currently max infrastructure level = 3")
20992092 else {
2100- let kO = ((sqrt(ki, 0, 0, DOWN) / 5) + 2)
2101- let ao = (kN + 1)
2102- if (if (cz)
2103- then (ao > kO)
2093+ let kR = ((sqrt(kl, 0, 0, DOWN) / 5) + 2)
2094+ let ao = (kQ + 1)
2095+ if (if (cA)
2096+ then (ao > kR)
21042097 else false)
2105- then throw(("Currently max infrastructure level = " + toString(kO)))
2098+ then throw(("Currently max infrastructure level = " + toString(kR)))
21062099 else {
2107- let kP = fraction(eh, (ki * ao), cL)
2108- if (if (!(fh))
2109- then (kL != kP)
2100+ let kS = fraction(ei, (kl * ao), cM)
2101+ if (if (!(fi))
2102+ then (kO != kS)
21102103 else false)
2111- then throw(("Payment attached should be " + toString(kP)))
2104+ then throw(("Payment attached should be " + toString(kS)))
21122105 else {
2113- let iL = bN(gd._1)
2114- let jo = iK(iL)
2115- let kQ = split(jo[bo], "_")
2116- let kR = fraction(cF, (ki * ao), cL)
2117- let kS = makeString(fg(fh, kQ, kR), "_")
2118- let kT = kJ(c, gd._2, ki, eE)
2119- let kU = kT._5
2120- let kV = iM(kU[bd])
2121- let kW = makeString([split(kU[bd], "_")[0], toString(ao)], "_")
2122- let kX = iM(kW)
2123- let jg = split(kU[bh], "_")
2124- let kY = makeString([jg[bi], jg[bj], toString(((parseIntValue(jg[bk]) + kX) - kV)), toString(kX)], "_")
2125- $Tuple3(([IntegerEntry(kM, ao), IntegerEntry(ex(gd._2, c), ao), StringEntry(iL, makeString([jo[bm], kT._3[bn], kS, jo[bp]], ":")), StringEntry(kT._4, makeString([kW, kU[be], kU[bf], kU[bg], kY], ":"))] ++ kT._1), ao, kR)
2106+ let iO = bO(ge._1)
2107+ let jr = iN(iO)
2108+ let kT = split(jr[bp], "_")
2109+ let kU = fraction(cG, (kl * ao), cM)
2110+ let kV = makeString(fh(fi, kT, kU), "_")
2111+ let kW = kM(c, ge._2, kl, eF)
2112+ let kX = kW._5
2113+ let kY = iP(kX[be])
2114+ let kZ = makeString([split(kX[be], "_")[0], toString(ao)], "_")
2115+ let la = iP(kZ)
2116+ let jj = split(kX[bi], "_")
2117+ let lb = makeString([jj[bj], jj[bk], toString(((parseIntValue(jj[bl]) + la) - kY)), toString(la)], "_")
2118+ $Tuple3(([IntegerEntry(kP, ao), IntegerEntry(ey(ge._2, c), ao), StringEntry(iO, makeString([jr[bn], kW._3[bo], kV, jr[bq]], ":")), StringEntry(kW._4, makeString([kZ, kX[bf], kX[bg], kX[bh], lb], ":"))] ++ kW._1), ao, kU)
21262119 }
21272120 }
21282121 }
21292122 }
21302123
21312124
2132-func kZ (la,lb,lc,ld) = {
2133- let ai = valueOrElse(getInteger(lb), 0)
2134- let an = (ai + ld)
2135- let le = al(valueOrElse(getInteger(la), 0), an)
2136- $Tuple2([IntegerEntry(la, le[0]), IntegerEntry(lb, an), IntegerEntry(lc, (valueOrElse(getInteger(lc), 0) + le[1]))], an)
2137- }
2138-
2139-
2140-func lf (B,ld) = kZ(E(B), D(B), F(B), ld)
2141-
2142-
2143-func lg (c,ld) = kZ(I(c), H(c), J(c), ld)
2144-
2145-
2146-func lh (c) = {
2147- let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
2148- let li = bH(c)
2149- let lj = getString(li)
2150- if (!(isDefined(lj)))
2125+func lc (ld,le,lf,lg) = {
2126+ let ai = valueOrElse(getInteger(le), 0)
2127+ let an = (ai + lg)
2128+ let lh = al(valueOrElse(getInteger(ld), 0), an)
2129+ $Tuple2([IntegerEntry(ld, lh[0]), IntegerEntry(le, an), IntegerEntry(lf, (valueOrElse(getInteger(lf), 0) + lh[1]))], an)
2130+ }
2131+
2132+
2133+func li (B,lg) = lc(E(B), D(B), F(B), lg)
2134+
2135+
2136+func lj (c,lg) = lc(I(c), H(c), J(c), lg)
2137+
2138+
2139+func lk (c) = {
2140+ let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
2141+ let ll = bI(c)
2142+ let lm = getString(ll)
2143+ if (!(isDefined(lm)))
21512144 then throw("You are not eligible for ONBOARD artifact")
21522145 else {
2153- let lk = bJ(c)
2154- let ll = getString(lk)
2155- if (isDefined(ll))
2156- then throw(("You already used your ONBOARD artifact on duck " + value(ll)))
2146+ let ln = bK(c)
2147+ let lo = getString(ln)
2148+ if (isDefined(lo))
2149+ then throw(("You already used your ONBOARD artifact on duck " + value(lo)))
21572150 else {
2158- let lm = bI(B)
2159- let ln = getString(lm)
2160- if (isDefined(ln))
2161- then throw(((("The duck " + B) + " already got points from ONBOARD artifact from user ") + value(ln)))
2162- else ([StringEntry(lk, B), StringEntry(lm, c)] ++ lf(B, af)._1)
2151+ let lp = bJ(B)
2152+ let lq = getString(lp)
2153+ if (isDefined(lq))
2154+ then throw(((("The duck " + B) + " already got points from ONBOARD artifact from user ") + value(lq)))
2155+ else ([StringEntry(ln, B), StringEntry(lp, c)] ++ li(B, af)._1)
21632156 }
21642157 }
21652158 }
21662159
21672160
2168-func lo (c,ko) = {
2169- let gd = km(c, eE, ko)
2170- let Q = gd._2
2171- let ki = dK(gd._3[do])
2172- let lp = bx(aH, Q)
2173- if ((valueOrElse(getInteger(lp), 0) > 0))
2161+func lr (c,kr) = {
2162+ let ge = kp(c, eF, kr)
2163+ let Q = ge._2
2164+ let kl = dL(ge._3[dp])
2165+ let ls = by(aH, Q)
2166+ if ((valueOrElse(getInteger(ls), 0) > 0))
21742167 then throw("Presale artifact is already activated")
2175- else if ((parseIntValue(gd._3[dn]) > er))
2168+ else if ((parseIntValue(ge._3[do]) > es))
21762169 then throw((((aF + " ") + Q) + " is not eligible for presale artifact"))
21772170 else {
2178- let kT = kJ(c, Q, ki, eE)
2179- (((kT._1 :+ IntegerEntry(lp, ki)) :+ StringEntry(kT._2, makeString(kT._3, ":"))) :+ StringEntry(kT._4, makeString(kT._5, ":")))
2171+ let kW = kM(c, Q, kl, eF)
2172+ (((kW._1 :+ IntegerEntry(ls, kl)) :+ StringEntry(kW._2, makeString(kW._3, ":"))) :+ StringEntry(kW._4, makeString(kW._5, ":")))
21802173 }
21812174 }
21822175
21832176
2184-func lq (B) = {
2185- let cj = valueOrElse(getInteger(dl, bU), 0)
2186- let kq = split(valueOrElse(getString(bO(B)), aM), "_")
2177+func lt (B) = {
2178+ let ck = valueOrElse(getInteger(dm, bV), 0)
2179+ let kt = split(valueOrElse(getString(bP(B)), aN), "_")
21872180 let aA = lastBlock.timestamp
2188- let cl = cd(dl, cj)
2189- let cf = cl[bZ]
2190- let cg = cl[ca]
2191- if ((kq[br] != "T"))
2181+ let cm = ce(dm, ck)
2182+ let cg = cm[ca]
2183+ let ch = cm[cb]
2184+ if ((kt[bs] != "T"))
21922185 then false
2193- else if (if (if ((parseIntValue(kq[bq]) == cj))
2194- then (cg[cc] == "INPROGRESS")
2186+ else if (if (if ((parseIntValue(kt[br]) == ck))
2187+ then (ch[cd] == "INPROGRESS")
21952188 else false)
2196- then (parseIntValue(cf[cb]) > aA)
2189+ then (parseIntValue(cg[cc]) > aA)
21972190 else false)
21982191 then throw("Your duck is taking part in the tournament")
2199- else dJ(invoke(this, "exitTournamentInternal", [B], nil))
2200- }
2201-
2202-
2203-func lr (B) = {
2204- let kq = split(valueOrElse(getString(bO(B)), aM), "_")
2192+ else dK(invoke(this, "exitTournamentInternal", [B], nil))
2193+ }
2194+
2195+
2196+func lu (B) = {
2197+ let kt = split(valueOrElse(getString(bP(B)), aN), "_")
22052198 let aA = lastBlock.timestamp
2206- if ((kq[br] != "D"))
2199+ if ((kt[bs] != "D"))
22072200 then false
22082201 else {
2209- let cn = parseIntValue(kq[bq])
2210- let co = parseIntValue(kq[bs])
2211- if (if (((cn + aQ) > aA))
2212- then (1 > co)
2202+ let co = parseIntValue(kt[br])
2203+ let cp = parseIntValue(kt[bt])
2204+ if (if (((co + aR) > aA))
2205+ then (1 > cp)
22132206 else false)
22142207 then throw("Your duck is on delivery mission")
2215- else dJ(invoke(this, "exitDeliveryInternal", [B], nil))
2216- }
2217- }
2218-
2219-
2220-func ls (B,fM,jV,lt) = {
2221- let kq = split(valueOrElse(getString(bO(B)), aM), "_")
2208+ else dK(invoke(this, "exitDeliveryInternal", [B], nil))
2209+ }
2210+ }
2211+
2212+
2213+func lv (B,fN,jY,lw) = {
2214+ let kt = split(valueOrElse(getString(bP(B)), aN), "_")
22222215 let aA = lastBlock.timestamp
2223- let cn = parseIntValue(kq[bq])
2224- let co = parseIntValue(kq[bs])
2225- let kv = valueOrErrorMessage(getString(bL(B)), "NFT duck is orphaned")
2226- let lu = A(B)
2227- let lv = getIntegerValue(lu)
2228- let lw = if (if ((co > 0))
2216+ let co = parseIntValue(kt[br])
2217+ let cp = parseIntValue(kt[bt])
2218+ let ky = valueOrErrorMessage(getString(bM(B)), "NFT duck is orphaned")
2219+ let lx = A(B)
2220+ let ly = getIntegerValue(lx)
2221+ let lz = if (if ((cp > 0))
22292222 then true
2230- else if (if (fM)
2231- then (lt > 0)
2223+ else if (if (fN)
2224+ then (lw > 0)
22322225 else false)
2233- then (jV > 0)
2226+ then (jY > 0)
22342227 else false)
22352228 then {
2236- let lx = invoke(di, "sendDeliveryReward", [kv], nil)
2237- if ((lx == lx))
2229+ let lA = invoke(dj, "sendDeliveryReward", [ky], nil)
2230+ if ((lA == lA))
22382231 then {
2239- let ly = V(kv)
2240-[IntegerEntry(ly, (valueOrElse(getInteger(ly), 0) + 1)), IntegerEntry(W(kv), (cn / a))]
2232+ let lB = V(ky)
2233+[IntegerEntry(lB, (valueOrElse(getInteger(lB), 0) + 1)), IntegerEntry(W(ky), (co / a))]
22412234 }
22422235 else throw("Strict value is not equal to itself.")
22432236 }
2244- else if (if (if (fM)
2245- then (jV > 0)
2237+ else if (if (if (fN)
2238+ then (jY > 0)
22462239 else false)
2247- then ((cn + aQ) > aA)
2240+ then ((co + aR) > aA)
22482241 else false)
22492242 then throw("Your duck is still on delivery mission")
22502243 else {
2251- let lz = valueOrElse(getInteger(di, bT), 0)
2252- let lA = invoke(di, "updateDeliveryLocked", [(lz - aP)], nil)
2253- if ((lA == lA))
2254- then if (if (if (fM)
2255- then (0 >= jV)
2244+ let lC = valueOrElse(getInteger(dj, bU), 0)
2245+ let lD = invoke(dj, "updateDeliveryLocked", [(lC - aQ)], nil)
2246+ if ((lD == lD))
2247+ then if (if (if (fN)
2248+ then (0 >= jY)
22562249 else false)
22572250 then true
2258- else (0 >= lv))
2251+ else (0 >= ly))
22592252 then nil
2260- else [IntegerEntry(U(B), (cn + cH))]
2253+ else [IntegerEntry(U(B), (co + cI))]
22612254 else throw("Strict value is not equal to itself.")
22622255 }
2263- let lB = getStringValue(L(B))
2264- $Tuple3(lw, [StringEntry(bO(B), lB)], lB)
2265- }
2266-
2267-
2268-func lC (lD,ao,lE,c,lF,lG) = {
2269- let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
2270- if (lq(B))
2256+ let lE = getStringValue(L(B))
2257+ $Tuple3(lz, [StringEntry(bP(B), lE)], lE)
2258+ }
2259+
2260+
2261+func lF (lG,ao,lH,c,lI,lJ) = {
2262+ let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
2263+ if (lt(B))
22712264 then throw("mergeInternal_checkTournament")
2272- else if (lr(B))
2265+ else if (lu(B))
22732266 then throw("mergeInternal_checkDelivery")
22742267 else {
2275- func lH (eU,Q) = {
2276- let ks = value(assetInfo(fromBase58String(Q)))
2277- let kt = bw(Q)
2278- let ku = valueOrErrorMessage(getInteger(kt), (("NFT " + ks.name) + " is not staked"))
2279- let kv = valueOrErrorMessage(getString(bt(Q)), (("NFT " + ks.name) + " is orphaned"))
2280- if ((kv != c))
2268+ func lK (eV,Q) = {
2269+ let kv = value(assetInfo(fromBase58String(Q)))
2270+ let kw = bx(Q)
2271+ let kx = valueOrErrorMessage(getInteger(kw), (("NFT " + kv.name) + " is not staked"))
2272+ let ky = valueOrErrorMessage(getString(bu(Q)), (("NFT " + kv.name) + " is orphaned"))
2273+ if ((ky != c))
22812274 then throw((aF + " is not yours"))
22822275 else {
2283- let kw = split(ks.description, "_")
2284- let dz = kw[dq]
2285- if (if ((eU._3 != ""))
2286- then (eU._3 != dz)
2276+ let kz = split(kv.description, "_")
2277+ let dA = kz[dr]
2278+ if (if ((eV._3 != ""))
2279+ then (eV._3 != dA)
22872280 else false)
22882281 then throw("Lands should be on the same continent to merge")
22892282 else {
2290- let dL = kw[do]
2291- let lI = eU._1
2292- let gN = valueOrErrorMessage(indexOf(lI, dL), "You haven't passed all the lands needed")
2293- let lJ = (take(lI, gN) + drop(lI, (gN + 1)))
2294- let ki = dK(dL)
2295- let lK = (eU._2 + valueOrElse(getInteger(bx(aH, Q)), 0))
2296- let ja = valueOrElse(getInteger(bD(Q)), 0)
2297- let lL = {
2298- let cD = dL
2299- if (("S" == cD))
2283+ let dM = kz[dp]
2284+ let lL = eV._1
2285+ let gO = valueOrErrorMessage(indexOf(lL, dM), "You haven't passed all the lands needed")
2286+ let lM = (take(lL, gO) + drop(lL, (gO + 1)))
2287+ let kl = dL(dM)
2288+ let lN = (eV._2 + valueOrElse(getInteger(by(aH, Q)), 0))
2289+ let jd = valueOrElse(getInteger(bE(Q)), 0)
2290+ let lO = {
2291+ let cE = dM
2292+ if (("S" == cE))
23002293 then 3
2301- else if (("M" == cD))
2294+ else if (("M" == cE))
23022295 then 4
2303- else if (("L" == cD))
2296+ else if (("L" == cE))
23042297 then 5
2305- else if (("XL" == cD))
2298+ else if (("XL" == cE))
23062299 then 6
23072300 else throw("Only S, M, L, XL can merge")
23082301 }
2309- if ((ja != lL))
2302+ if ((jd != lO))
23102303 then throw("All lands should be maxed to merge")
23112304 else {
2312- let ew = kw[dn]
2313- let gJ = gP(kw[dp])
2314- let gT = (lastBlock.timestamp - ku)
2315- if ((0 > gT))
2316- then throw(((("Saved timestamp is in future, saved = " + toString(ku)) + ", current = ") + toString(lastBlock.timestamp)))
2305+ let ex = kz[do]
2306+ let gK = gQ(kz[dq])
2307+ let gU = (lastBlock.timestamp - kx)
2308+ if ((0 > gU))
2309+ then throw(((("Saved timestamp is in future, saved = " + toString(kx)) + ", current = ") + toString(lastBlock.timestamp)))
23172310 else {
2318- let ky = kh(Q, ki)
2319- let iZ = (ki / cL)
2320- let kG = gR(split(eU._4, "_"), gJ, gT, iZ, ky)
2321- let fe = gH(eU._6, gJ, iZ, -1)
2322- let lM = gH(eU._10, gJ, iZ, -1)
2323- let iE = gH(eU._9, gJ, iZ, 1)
2324- let lN = eU._7
2325- let dg = indexOf(lN, Q)
2326- if (!(isDefined(dg)))
2311+ let kB = kk(Q, kl)
2312+ let jc = (kl / cM)
2313+ let kJ = gS(split(eV._4, "_"), gK, gU, jc, kB)
2314+ let ff = gI(eV._6, gK, jc, -1)
2315+ let lP = gI(eV._10, gK, jc, -1)
2316+ let iG = gI(eV._9, gK, jc, 1)
2317+ let lQ = eV._7
2318+ let dh = indexOf(lQ, Q)
2319+ if (!(isDefined(dh)))
23272320 then throw(("Your staked lands don't contain " + Q))
23282321 else {
2329- let lO = bv(Q)
2330- let lP = valueOrElse(getString(lO), "")
2331- $Tuple10(lJ, lK, dz, kG, ((((((((((((eU._5 :+ DeleteEntry(bw(Q))) :+ DeleteEntry(bz(aF, Q, c))) :+ DeleteEntry(ev(ew))) :+ DeleteEntry(bt(Q))) :+ DeleteEntry(bD(Q))) :+ DeleteEntry(ex(Q, c))) :+ DeleteEntry(bx(aH, Q))) :+ DeleteEntry(ey(ew))) :+ DeleteEntry(bC(Q))) :+ DeleteEntry(lO)) :+ Burn(fromBase58String(Q), 1)) ++ (if ((lP != ""))
2332- then [DeleteEntry(et(lP))]
2333- else nil)), fe, removeByIndex(lN, value(dg)), (eU._8 + ki), iE, lM)
2322+ let lR = bw(Q)
2323+ let lS = valueOrElse(getString(lR), "")
2324+ $Tuple10(lM, lN, dA, kJ, ((((((((((((eV._5 :+ DeleteEntry(bx(Q))) :+ DeleteEntry(bA(aF, Q, c))) :+ DeleteEntry(ew(ex))) :+ DeleteEntry(bu(Q))) :+ DeleteEntry(bE(Q))) :+ DeleteEntry(ey(Q, c))) :+ DeleteEntry(by(aH, Q))) :+ DeleteEntry(ez(ex))) :+ DeleteEntry(bD(Q))) :+ DeleteEntry(lR)) :+ Burn(fromBase58String(Q), 1)) ++ (if ((lS != ""))
2325+ then [DeleteEntry(eu(lS))]
2326+ else nil)), ff, removeByIndex(lQ, value(dh)), (eV._8 + kl), iG, lP)
23342327 }
23352328 }
23362329 }
23372330 }
23382331 }
23392332 }
23402333
2341- let iL = bN(B)
2342- let jo = iK(iL)
2343- let gI = split(valueOrElse(getString(dx()), "0_0_0_0_0_0"), "_")
2344- let lQ = dA(c)
2345- let lR = getString(lQ)
2346- let lS = if (isDefined(lR))
2347- then split_51C(value(lR), "_")
2334+ let iO = bO(B)
2335+ let jr = iN(iO)
2336+ let gJ = split(valueOrElse(getString(dy()), "0_0_0_0_0_0"), "_")
2337+ let lT = dB(c)
2338+ let lU = getString(lT)
2339+ let lV = if (isDefined(lU))
2340+ then split_51C(value(lU), "_")
23482341 else nil
2349- let lT = split(value(assetInfo(fromBase58String(lF[0]))).description, "_")[dq]
2350- let lU = split(valueOrElse(getString(dy(lT)), "0_0_0_0_0_0"), "_")
2351- let ff = {
2352- let eW = lF
2353- let eX = size(eW)
2354- let eY = $Tuple10(lE, 0, "", jo[bn], nil, gI, lS, 0, split("0_0_0_0_0_0", "_"), lU)
2355- func eZ (fa,fb) = if ((fb >= eX))
2356- then fa
2357- else lH(fa, eW[fb])
2358-
2359- func fc (fa,fb) = if ((fb >= eX))
2360- then fa
2342+ let lW = split(value(assetInfo(fromBase58String(lI[0]))).description, "_")[dr]
2343+ let lX = split(valueOrElse(getString(dz(lW)), "0_0_0_0_0_0"), "_")
2344+ let fg = {
2345+ let eX = lI
2346+ let eY = size(eX)
2347+ let eZ = $Tuple10(lH, 0, "", jr[bo], nil, gJ, lV, 0, split("0_0_0_0_0_0", "_"), lX)
2348+ func fa (fb,fc) = if ((fc >= eY))
2349+ then fb
2350+ else lK(fb, eX[fc])
2351+
2352+ func fd (fb,fc) = if ((fc >= eY))
2353+ then fb
23612354 else throw("List size exceeds 5")
23622355
2363- fc(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5)
2356+ fd(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5)
23642357 }
2365- let dz = ff._3
2366- let iA = valueOrErrorMessage(indexOf(aU, dz), ("Unknown continent: " + dz))
2367- let gQ = iD(ff._9, (dK(lD) / cL))
2368- let jM = valueOrElse(getInteger(es()), (er + 1))
2369- let lV = toString(jM)
2370- let jN = Issue(eJ(lV, lD), makeString([lV, lD, gQ, dz], "_"), 1, 0, false)
2371- let bu = calculateAssetId(jN)
2372- let lW = toBase58String(bu)
2373- let kS = makeString(fg((lG > 0), split(jo[bo], "_"), lG), "_")
2374- let lX = dB(c)
2375- let lY = valueOrElse(getInteger(lX), 0)
2376- $Tuple2((((((((((((((((ff._5 :+ (if ((size(ff._7) > 0))
2377- then StringEntry(lQ, makeString_11C(ff._7, "_"))
2378- else DeleteEntry(lQ))) :+ IntegerEntry(lX, if ((ff._8 > lY))
2358+ let dA = fg._3
2359+ let iC = valueOrErrorMessage(indexOf(aV, dA), ("Unknown continent: " + dA))
2360+ let gR = iF(fg._9, (dL(lG) / cM))
2361+ let jP = valueOrElse(getInteger(et()), (es + 1))
2362+ let lY = toString(jP)
2363+ let jQ = Issue(eK(lY, lG), makeString([lY, lG, gR, dA], "_"), 1, 0, false)
2364+ let bv = calculateAssetId(jQ)
2365+ let lZ = toBase58String(bv)
2366+ let kV = makeString(fh((lJ > 0), split(jr[bp], "_"), lJ), "_")
2367+ let ma = dC(c)
2368+ let mb = valueOrElse(getInteger(ma), 0)
2369+ $Tuple2((((((((((((((((fg._5 :+ (if ((size(fg._7) > 0))
2370+ then StringEntry(lT, makeString_11C(fg._7, "_"))
2371+ else DeleteEntry(lT))) :+ IntegerEntry(ma, if ((fg._8 > mb))
23792372 then 0
2380- else (lY - ff._8))) :+ IntegerEntry(es(), (jM + 1))) :+ jN) :+ StringEntry(ev(lV), lW)) :+ StringEntry(bt(lW), c)) :+ StringEntry(ey(lV), c)) :+ IntegerEntry(bx(aH, lW), ff._2)) :+ IntegerEntry(bD(lW), ao)) :+ IntegerEntry(ex(lW, c), ao)) :+ StringEntry(iL, makeString([jo[bm], ff._4, kS, jo[bp]], ":"))) :+ StringEntry(dx(), makeString(ff._6, "_"))) :+ StringEntry(dy(dz), makeString(ff._10, "_"))) :+ StringEntry(bO(B), makeString([dz, "L", lW], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bu)), lW)
2373+ else (mb - fg._8))) :+ IntegerEntry(et(), (jP + 1))) :+ jQ) :+ StringEntry(ew(lY), lZ)) :+ StringEntry(bu(lZ), c)) :+ StringEntry(ez(lY), c)) :+ IntegerEntry(by(aH, lZ), fg._2)) :+ IntegerEntry(bE(lZ), ao)) :+ IntegerEntry(ey(lZ, c), ao)) :+ StringEntry(iO, makeString([jr[bn], fg._4, kV, jr[bq]], ":"))) :+ StringEntry(dy(), makeString(fg._6, "_"))) :+ StringEntry(dz(dA), makeString(fg._10, "_"))) :+ StringEntry(bP(B), makeString([dA, "L", lZ], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bv)), lZ)
23812374 }
23822375 }
23832376
23842377
2385-func lZ (c,lF) = lC("M", 3, "SSSS", c, lF, 0)
2386-
2387-
2388-func ma (c,lF) = lC("L", 4, "SMM", c, lF, (cF * 4))
2389-
2390-
2391-func mb (c,lF) = lC("XL", 5, "SSSML", c, lF, (cF * 47))
2392-
2393-
2394-func mc (c,lF) = lC("XXL", 6, "LXL", c, lF, (cF * 54))
2395-
2396-
2397-func md (c,lF) = {
2398- let cD = size(lF)
2399- if ((4 == cD))
2400- then lZ(c, lF)
2401- else if ((3 == cD))
2402- then ma(c, lF)
2403- else if ((5 == cD))
2404- then mb(c, lF)
2405- else if ((2 == cD))
2406- then mc(c, lF)
2378+func mc (c,lI) = lF("M", 3, "SSSS", c, lI, 0)
2379+
2380+
2381+func md (c,lI) = lF("L", 4, "SMM", c, lI, (cG * 4))
2382+
2383+
2384+func me (c,lI) = lF("XL", 5, "SSSML", c, lI, (cG * 47))
2385+
2386+
2387+func mf (c,lI) = lF("XXL", 6, "LXL", c, lI, (cG * 54))
2388+
2389+
2390+func mg (c,lI) = {
2391+ let cE = size(lI)
2392+ if ((4 == cE))
2393+ then mc(c, lI)
2394+ else if ((3 == cE))
2395+ then md(c, lI)
2396+ else if ((5 == cE))
2397+ then me(c, lI)
2398+ else if ((2 == cE))
2399+ then mf(c, lI)
24072400 else throw("Unknown merge")
24082401 }
24092402
24102403
2411-func me (bQ) = {
2412- let mf = getString(bM(bQ))
2413- if (isDefined(mf))
2404+func mh (bR) = {
2405+ let mi = getString(bN(bR))
2406+ if (isDefined(mi))
24142407 then {
2415- let B = value(mf)
2416- let mg = bO(B)
2417- let ck = split(valueOrElse(getString(mg), aM), "_")
2418- let cn = parseIntValue(ck[bq])
2419- if (if ((ck[br] != "D"))
2408+ let B = value(mi)
2409+ let mj = bP(B)
2410+ let cl = split(valueOrElse(getString(mj), aN), "_")
2411+ let co = parseIntValue(cl[br])
2412+ if (if ((cl[bs] != "D"))
24202413 then true
2421- else ((cn + aQ) > lastBlock.timestamp))
2414+ else ((co + aR) > lastBlock.timestamp))
24222415 then nil
24232416 else {
2424- let lu = A(B)
2425- if ((parseIntValue(ck[bs]) > 0))
2417+ let lx = A(B)
2418+ if ((parseIntValue(cl[bt]) > 0))
24262419 then {
2427- let lx = invoke(di, "sendDeliveryReward", [bQ], nil)
2428- if ((lx == lx))
2420+ let lA = invoke(dj, "sendDeliveryReward", [bR], nil)
2421+ if ((lA == lA))
24292422 then nil
24302423 else throw("Strict value is not equal to itself.")
24312424 }
24322425 else (({
2433- let lz = valueOrElse(getInteger(di, bT), 0)
2434- let lA = invoke(di, "updateDeliveryLocked", [(lz - aP)], nil)
2435- if ((lA == lA))
2436- then if ((0 >= getIntegerValue(lu)))
2426+ let lC = valueOrElse(getInteger(dj, bU), 0)
2427+ let lD = invoke(dj, "updateDeliveryLocked", [(lC - aQ)], nil)
2428+ if ((lD == lD))
2429+ then if ((0 >= getIntegerValue(lx)))
24372430 then nil
24382431 else {
2439- let mh = invoke(this, "saveInteger", [U(B), (cn + cH)], nil)
2440- if ((mh == mh))
2432+ let mk = invoke(this, "saveInteger", [U(B), (co + cI)], nil)
2433+ if ((mk == mk))
24412434 then nil
24422435 else throw("Strict value is not equal to itself.")
24432436 }
24442437 else throw("Strict value is not equal to itself.")
2445- } :+ IntegerEntry(lu, getIntegerValue(K(B)))) :+ StringEntry(mg, getStringValue(L(B))))
2438+ } :+ IntegerEntry(lx, getIntegerValue(K(B)))) :+ StringEntry(mj, getStringValue(L(B))))
24462439 }
24472440 }
24482441 else nil
24492442 }
24502443
24512444
2452-func mi (gN) = if (if ((gN.originCaller != dh))
2453- then valueOrElse(getBoolean(dN()), false)
2445+func ml (gO) = if (if ((gO.originCaller != di))
2446+ then valueOrElse(getBoolean(dO()), false)
24542447 else false)
24552448 then throw("Contracts are under maintenance")
24562449 else {
2457- let bQ = toString(gN.originCaller)
2458- (me(bQ) :+ StringEntry(dO(bQ), toBase58String(gN.transactionId)))
2450+ let bR = toString(gO.originCaller)
2451+ (mh(bR) :+ StringEntry(dP(bR), toBase58String(gO.transactionId)))
24592452 }
24602453
24612454
2462-func mj (gN) = if (if ((gN.originCaller != dh))
2463- then valueOrElse(getBoolean(dN()), false)
2455+func mm (gO) = if (if ((gO.originCaller != di))
2456+ then valueOrElse(getBoolean(dO()), false)
24642457 else false)
24652458 then throw("Contracts are under maintenance")
2466- else [StringEntry(dO(toString(gN.originCaller)), toBase58String(gN.transactionId))]
2467-
2468-
2469-@Callable(gN)
2470-func constructorV1 (mk) = if ((gN.caller != this))
2459+ else [StringEntry(dP(toString(gO.originCaller)), toBase58String(gO.transactionId))]
2460+
2461+
2462+@Callable(gO)
2463+func constructorV1 (mn) = if ((gO.caller != this))
24712464 then throw("Permission denied")
2472- else [StringEntry(db(), mk)]
2473-
2474-
2475-
2476-@Callable(gN)
2477-func saveInteger (cT,eL) = if ((gN.caller != this))
2465+ else [StringEntry(dc(), mn)]
2466+
2467+
2468+
2469+@Callable(gO)
2470+func saveInteger (cU,eM) = if ((gO.caller != this))
24782471 then throw("saveInteger is not public method")
2479- else [IntegerEntry(cT, eL)]
2480-
2481-
2482-
2483-@Callable(gN)
2484-func setBlocked (ml) = if ((gN.caller != this))
2472+ else [IntegerEntry(cU, eM)]
2473+
2474+
2475+
2476+@Callable(gO)
2477+func setBlocked (mo) = if ((gO.caller != this))
24852478 then throw("permission denied")
2486- else [BooleanEntry(dN(), ml)]
2487-
2488-
2489-
2490-@Callable(gN)
2479+ else [BooleanEntry(dO(), mo)]
2480+
2481+
2482+
2483+@Callable(gO)
24912484 func stakeLand () = {
2492- let mm = mi(gN)
2493- if ((size(gN.payments) != 1))
2485+ let mp = ml(gO)
2486+ if ((size(gO.payments) != 1))
24942487 then throw("Exactly one payment required")
24952488 else {
2496- let mn = value(gN.payments[0])
2497- let bu = value(mn.assetId)
2498- let cS = toString(gN.caller)
2499- if ((mn.amount != 1))
2489+ let mq = value(gO.payments[0])
2490+ let bv = value(mq.assetId)
2491+ let cT = toString(gO.caller)
2492+ if ((mq.amount != 1))
25002493 then throw((("NFT " + aF) + " token should be attached as payment"))
25012494 else {
2502- let ks = value(assetInfo(bu))
2503- if ((ks.issuer != this))
2495+ let kv = value(assetInfo(bv))
2496+ if ((kv.issuer != this))
25042497 then throw("Unknown issuer of token")
2505- else if (!(contains(ks.name, aF)))
2498+ else if (!(contains(kv.name, aF)))
25062499 then throw((("Only NFT " + aF) + " tokens are accepted"))
25072500 else {
2508- let mo = drop(ks.name, 4)
2509- let ew = if (contains(mo, "XXL"))
2510- then dropRight(mo, 3)
2511- else if (contains(mo, "XL"))
2512- then dropRight(mo, 2)
2513- else dropRight(mo, 1)
2514- if (!(isDefined(parseInt(ew))))
2515- then throw(("Cannot parse land number from " + ks.name))
2501+ let mr = drop(kv.name, 4)
2502+ let ex = if (contains(mr, "XXL"))
2503+ then dropRight(mr, 3)
2504+ else if (contains(mr, "XL"))
2505+ then dropRight(mr, 2)
2506+ else dropRight(mr, 1)
2507+ if (!(isDefined(parseInt(ex))))
2508+ then throw(("Cannot parse land number from " + kv.name))
25162509 else {
2517- let Q = toBase58String(bu)
2518- let kt = bw(Q)
2519- if (isDefined(getInteger(kt)))
2520- then throw((("NFT " + ks.name) + " is already staked"))
2510+ let Q = toBase58String(bv)
2511+ let kw = bx(Q)
2512+ if (isDefined(getInteger(kw)))
2513+ then throw((("NFT " + kv.name) + " is already staked"))
25212514 else {
2522- let kw = split(ks.description, "_")
2523- let gJ = gP(kw[dp])
2524- let ki = dK(kw[do])
2525- let iZ = (ki / cL)
2526- let fe = gO(gJ, iZ, 1)
2527- let mp = dy(kw[dq])
2528- let lU = split(valueOrElse(getString(mp), "0_0_0_0_0_0"), "_")
2529- let mq = makeString(gH(lU, gJ, iZ, 1), "_")
2530- let lQ = dA(cS)
2531- let lR = getString(lQ)
2532- let lN = if (isDefined(lR))
2533- then split_51C(value(lR), "_")
2515+ let kz = split(kv.description, "_")
2516+ let gK = gQ(kz[dq])
2517+ let kl = dL(kz[dp])
2518+ let jc = (kl / cM)
2519+ let ff = gP(gK, jc, 1)
2520+ let ms = dz(kz[dr])
2521+ let lX = split(valueOrElse(getString(ms), "0_0_0_0_0_0"), "_")
2522+ let mt = makeString(gI(lX, gK, jc, 1), "_")
2523+ let lT = dB(cT)
2524+ let lU = getString(lT)
2525+ let lQ = if (isDefined(lU))
2526+ then split_51C(value(lU), "_")
25342527 else nil
2535- if (containsElement(lN, Q))
2528+ if (containsElement(lQ, Q))
25362529 then throw(("Your staked lands already contain " + Q))
2537- else if ((size(lN) >= aJ))
2538- then throw((("Your already staked max (" + toString(aJ)) + ") lands"))
2530+ else if ((size(lQ) >= aK))
2531+ then throw((("Your already staked max (" + toString(aK)) + ") lands"))
25392532 else {
2540- let ja = valueOrElse(getInteger(bD(Q)), 0)
2541- let lX = dB(cS)
2542- let mr = valueOrElse(getInteger(lX), 0)
2543- let ms = invoke(dk, "onStakeUnstakeLand", [cS], nil)
2544- $Tuple2(([IntegerEntry(kt, lastBlock.timestamp), IntegerEntry(bz(aF, Q, cS), lastBlock.timestamp), StringEntry(lQ, makeString_11C((lN :+ Q), "_")), IntegerEntry(lX, (mr + ki)), StringEntry(bt(Q), cS), StringEntry(ey(ew), cS), IntegerEntry(ex(Q, cS), ja), StringEntry(dx(), fe), StringEntry(mp, mq)] ++ mm), ms)
2533+ let jd = valueOrElse(getInteger(bE(Q)), 0)
2534+ let ma = dC(cT)
2535+ let mu = valueOrElse(getInteger(ma), 0)
2536+ let mv = invoke(dl, "onStakeUnstakeLand", [cT], nil)
2537+ $Tuple2(([IntegerEntry(kw, lastBlock.timestamp), IntegerEntry(bA(aF, Q, cT), lastBlock.timestamp), StringEntry(lT, makeString_11C((lQ :+ Q), "_")), IntegerEntry(ma, (mu + kl)), StringEntry(bu(Q), cT), StringEntry(ez(ex), cT), IntegerEntry(ey(Q, cT), jd), StringEntry(dy(), ff), StringEntry(ms, mt)] ++ mp), mv)
25452538 }
25462539 }
25472540 }
25482541 }
25492542 }
25502543 }
25512544 }
25522545
25532546
25542547
2555-@Callable(gN)
2556-func unstakeLand (ko) = {
2557- let mm = mi(gN)
2558- if ((size(gN.payments) != 0))
2548+@Callable(gO)
2549+func unstakeLand (kr) = {
2550+ let mp = ml(gO)
2551+ if ((size(gO.payments) != 0))
25592552 then throw("No payments required")
25602553 else {
2561- let c = toString(gN.caller)
2562- let gd = km(c, eD, ko)
2563- let Q = gd._2
2564- let kw = gd._3
2565- let lQ = dA(c)
2566- let gJ = gP(kw[dp])
2567- let ki = dK(kw[do])
2568- let iZ = (ki / cL)
2569- let fe = gO(gJ, iZ, -1)
2570- let mp = dy(kw[dq])
2571- let lU = split(valueOrElse(getString(mp), "0_0_0_0_0_0"), "_")
2572- let mq = makeString(gH(lU, gJ, iZ, -1), "_")
2573- let kT = kJ(c, Q, ki, eD)
2574- let lN = split_51C(valueOrElse(getString(lQ), ""), "_")
2575- let dg = indexOf(lN, Q)
2576- if (!(isDefined(dg)))
2554+ let c = toString(gO.caller)
2555+ let ge = kp(c, eE, kr)
2556+ let Q = ge._2
2557+ let kz = ge._3
2558+ let lT = dB(c)
2559+ let gK = gQ(kz[dq])
2560+ let kl = dL(kz[dp])
2561+ let jc = (kl / cM)
2562+ let ff = gP(gK, jc, -1)
2563+ let ms = dz(kz[dr])
2564+ let lX = split(valueOrElse(getString(ms), "0_0_0_0_0_0"), "_")
2565+ let mt = makeString(gI(lX, gK, jc, -1), "_")
2566+ let kW = kM(c, Q, kl, eE)
2567+ let lQ = split_51C(valueOrElse(getString(lT), ""), "_")
2568+ let dh = indexOf(lQ, Q)
2569+ if (!(isDefined(dh)))
25772570 then throw(("Your staked lands don't contain " + Q))
25782571 else {
25792572 let aA = lastBlock.timestamp
2580- let mt = valueOrElse(getInteger(dj, bP(c)), 0)
2581- if ((mt >= aA))
2582- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(mt)))
2573+ let mw = valueOrElse(getInteger(dk, bQ(c)), 0)
2574+ if ((mw >= aA))
2575+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(mw)))
25832576 else {
2584- let mu = (valueOrElse(getInteger(dk, b(c)), 0) + cG)
2585- if ((mu > aA))
2586- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(mu)))
2577+ let mx = (valueOrElse(getInteger(dl, b(c)), 0) + cH)
2578+ if ((mx > aA))
2579+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(mx)))
25872580 else {
2588- let lX = dB(c)
2589- let lY = valueOrElse(getInteger(lX), 0)
2590- let mv = if ((ki > lY))
2581+ let ma = dC(c)
2582+ let mb = valueOrElse(getInteger(ma), 0)
2583+ let my = if ((kl > mb))
25912584 then 0
2592- else (lY - ki)
2593- let ms = invoke(dk, "onStakeUnstakeLand", [c], nil)
2594- $Tuple2(([ScriptTransfer(gN.caller, 1, fromBase58String(Q)), DeleteEntry(bw(Q)), DeleteEntry(bz(aF, Q, c)), StringEntry(dx(), fe), StringEntry(mp, mq), StringEntry(kT._2, makeString(kT._3, ":")), if ((size(lN) > 1))
2595- then StringEntry(lQ, makeString_11C(removeByIndex(lN, value(dg)), "_"))
2596- else DeleteEntry(lQ), IntegerEntry(lX, mv)] ++ mm), ms)
2585+ else (mb - kl)
2586+ let mv = invoke(dl, "onStakeUnstakeLand", [c], nil)
2587+ $Tuple2(([ScriptTransfer(gO.caller, 1, fromBase58String(Q)), DeleteEntry(bx(Q)), DeleteEntry(bA(aF, Q, c)), StringEntry(dy(), ff), StringEntry(ms, mt), StringEntry(kW._2, makeString(kW._3, ":")), if ((size(lQ) > 1))
2588+ then StringEntry(lT, makeString_11C(removeByIndex(lQ, value(dh)), "_"))
2589+ else DeleteEntry(lT), IntegerEntry(ma, my)] ++ mp), mv)
25972590 }
25982591 }
25992592 }
26002593 }
26012594 }
26022595
26032596
26042597
2605-@Callable(gN)
2598+@Callable(gO)
26062599 func stakeDuck () = {
2607- let mm = mi(gN)
2608- if ((size(gN.payments) != 1))
2600+ let mp = ml(gO)
2601+ if ((size(gO.payments) != 1))
26092602 then throw("Exactly one payment required")
26102603 else {
2611- let mn = value(gN.payments[0])
2612- let bu = value(mn.assetId)
2613- let cS = toString(gN.caller)
2614- if ((mn.amount != 1))
2604+ let mq = value(gO.payments[0])
2605+ let bv = value(mq.assetId)
2606+ let cT = toString(gO.caller)
2607+ if ((mq.amount != 1))
26152608 then throw((("NFT " + aG) + " token should be attached as payment"))
26162609 else {
2617- let ks = value(assetInfo(bu))
2618- if (if ((ks.issuer != ea))
2619- then (ks.issuer != eb)
2610+ let kv = value(assetInfo(bv))
2611+ if (if ((kv.issuer != eb))
2612+ then (kv.issuer != ec)
26202613 else false)
26212614 then throw((("Unknown issuer of " + aG) + " token"))
2622- else if (!(contains(ks.name, aG)))
2615+ else if (!(contains(kv.name, aG)))
26232616 then throw((("Only NFT " + aG) + " tokens are accepted"))
26242617 else {
2625- let mw = toBase58String(bu)
2626- let kt = bw(mw)
2627- if (isDefined(getInteger(kt)))
2628- then throw((("NFT " + ks.name) + " is already staked"))
2629- else if (isDefined(getString(bM(cS))))
2630- then throw(("You already staked one duck: " + ks.name))
2618+ let mz = toBase58String(bv)
2619+ let kw = bx(mz)
2620+ if (isDefined(getInteger(kw)))
2621+ then throw((("NFT " + kv.name) + " is already staked"))
2622+ else if (isDefined(getString(bN(cT))))
2623+ then throw(("You already staked one duck: " + kv.name))
26312624 else {
2632- let mg = bO(mw)
2633- let ci = getString(mg)
2634- let iL = bN(mw)
2635- let mx = getString(iL)
2636- let kb = A(mw)
2637- let kc = aj(valueOrElse(getInteger(E(mw)), 0))
2638- let lv = valueOrElse(getInteger(kb), kc)
2639- ([IntegerEntry(kt, lastBlock.timestamp), IntegerEntry(bz(aG, toBase58String(bu), cS), lastBlock.timestamp), StringEntry(bL(mw), cS), StringEntry(bM(cS), mw)] ++ (if (isDefined(ci))
2625+ let mj = bP(mz)
2626+ let cj = getString(mj)
2627+ let iO = bO(mz)
2628+ let mA = getString(iO)
2629+ let ke = A(mz)
2630+ let kf = aj(valueOrElse(getInteger(E(mz)), 0))
2631+ let ly = valueOrElse(getInteger(ke), kf)
2632+ ([IntegerEntry(kw, lastBlock.timestamp), IntegerEntry(bA(aG, toBase58String(bv), cT), lastBlock.timestamp), StringEntry(bM(mz), cT), StringEntry(bN(cT), mz)] ++ (if (isDefined(cj))
26402633 then nil
2641- else ([StringEntry(mg, aM)] ++ (if (isDefined(mx))
2634+ else ([StringEntry(mj, aN)] ++ (if (isDefined(mA))
26422635 then nil
2643- else (([StringEntry(iL, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(kb, lv)) ++ mm)))))
2636+ else (([StringEntry(iO, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(ke, ly)) ++ mp)))))
26442637 }
26452638 }
26462639 }
26472640 }
26482641 }
26492642
26502643
26512644
2652-@Callable(gN)
2653-func unstakeDuck (mw) = {
2654- let mm = mi(gN)
2655- if ((size(gN.payments) != 0))
2645+@Callable(gO)
2646+func unstakeDuck (mz) = {
2647+ let mp = ml(gO)
2648+ if ((size(gO.payments) != 0))
26562649 then throw("No payments required")
26572650 else {
2658- let bu = fromBase58String(mw)
2659- let cS = toString(gN.caller)
2660- let ks = value(assetInfo(bu))
2661- let kt = bw(mw)
2662- if (!(isDefined(getInteger(kt))))
2663- then throw((("NFT " + ks.name) + " is not staked"))
2664- else if (!(isDefined(getString(bM(cS)))))
2665- then throw((("The duck " + ks.name) + " is not staked"))
2651+ let bv = fromBase58String(mz)
2652+ let cT = toString(gO.caller)
2653+ let kv = value(assetInfo(bv))
2654+ let kw = bx(mz)
2655+ if (!(isDefined(getInteger(kw))))
2656+ then throw((("NFT " + kv.name) + " is not staked"))
2657+ else if (!(isDefined(getString(bN(cT)))))
2658+ then throw((("The duck " + kv.name) + " is not staked"))
26662659 else {
2667- let kv = valueOrErrorMessage(getString(bL(mw)), (("NFT " + ks.name) + " is orphaned"))
2668- if ((kv != cS))
2660+ let ky = valueOrErrorMessage(getString(bM(mz)), (("NFT " + kv.name) + " is orphaned"))
2661+ if ((ky != cT))
26692662 then throw("Staked NFT is not yours")
2670- else if (lq(mw))
2663+ else if (lt(mz))
26712664 then throw("unstakeDuck_checkTournament")
2672- else if (lr(mw))
2665+ else if (lu(mz))
26732666 then throw("unstakeDuck_checkDelivery")
26742667 else {
2675- let kb = A(mw)
2676- let kc = aj(valueOrElse(getInteger(E(mw)), 0))
2677- let av = valueOrElse(getInteger(kb), kc)
2678- if ((kc > av))
2679- then throw((("Please heal your duck to " + toString(kc)) + "hp before unstaking"))
2680- else ([ScriptTransfer(gN.caller, 1, bu), DeleteEntry(kt), DeleteEntry(kb), DeleteEntry(bO(mw)), DeleteEntry(bL(mw)), DeleteEntry(bz(aG, mw, cS)), DeleteEntry(bM(cS))] ++ mm)
2668+ let ke = A(mz)
2669+ let kf = aj(valueOrElse(getInteger(E(mz)), 0))
2670+ let av = valueOrElse(getInteger(ke), kf)
2671+ if ((kf > av))
2672+ then throw((("Please heal your duck to " + toString(kf)) + "hp before unstaking"))
2673+ else ([ScriptTransfer(gO.caller, 1, bv), DeleteEntry(kw), DeleteEntry(ke), DeleteEntry(bP(mz)), DeleteEntry(bM(mz)), DeleteEntry(bA(aG, mz, cT)), DeleteEntry(bN(cT))] ++ mp)
26812674 }
26822675 }
26832676 }
26842677 }
26852678
26862679
26872680
2688-@Callable(gN)
2689-func claimRes (eL,my) = {
2690- let mm = mi(gN)
2691- if ((size(gN.payments) != 0))
2681+@Callable(gO)
2682+func claimRes (eM,mB) = {
2683+ let mp = ml(gO)
2684+ if ((size(gO.payments) != 0))
26922685 then throw("No payments required")
26932686 else {
2694- let c = toString(gN.originCaller)
2695- let fm = kx(c, eL, eD, my)
2696- let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
2697- $Tuple2(((((fm._1 ++ lf(B, fraction(X, eL, cK))._1) :+ StringEntry(fm._2, makeString(fm._3, ":"))) :+ StringEntry(fm._4, makeString(fm._5, ":"))) ++ mm), fm._3[bn])
2698- }
2699- }
2700-
2701-
2702-
2703-@Callable(gN)
2704-func claimResToWH (eL,my) = {
2705- let mm = mi(gN)
2706- if ((size(gN.payments) != 0))
2687+ let c = toString(gO.originCaller)
2688+ let fn = kA(c, eM, eE, mB)
2689+ let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
2690+ $Tuple2(((((fn._1 ++ li(B, fraction(X, eM, cL))._1) :+ StringEntry(fn._2, makeString(fn._3, ":"))) :+ StringEntry(fn._4, makeString(fn._5, ":"))) ++ mp), fn._3[bo])
2691+ }
2692+ }
2693+
2694+
2695+
2696+@Callable(gO)
2697+func claimResToWH (eM,mB) = {
2698+ let mp = ml(gO)
2699+ if ((size(gO.payments) != 0))
27072700 then throw("No payments required")
27082701 else {
2709- let c = toString(gN.originCaller)
2710- let fm = kx(c, eL, eC, my)
2711- $Tuple2(((((fm._1 ++ lg(c, fraction(X, eL, cK))._1) :+ StringEntry(fm._2, makeString(fm._3, ":"))) :+ StringEntry(fm._4, makeString(fm._5, ":"))) ++ mm), fm._5[be])
2712- }
2713- }
2714-
2715-
2716-
2717-@Callable(gN)
2718-func flight (jQ,jR) = {
2719- let mm = mj(gN)
2720- if ((size(gN.payments) != 0))
2702+ let c = toString(gO.originCaller)
2703+ let fn = kA(c, eM, eD, mB)
2704+ $Tuple2(((((fn._1 ++ lj(c, fraction(X, eM, cL))._1) :+ StringEntry(fn._2, makeString(fn._3, ":"))) :+ StringEntry(fn._4, makeString(fn._5, ":"))) ++ mp), fn._5[bf])
2705+ }
2706+ }
2707+
2708+
2709+
2710+@Callable(gO)
2711+func flight (jT,jU) = {
2712+ let mp = mm(gO)
2713+ if ((size(gO.payments) != 0))
27212714 then throw("No payments required")
27222715 else {
2723- let bQ = toString(gN.caller)
2724- let iB = jP(bQ, jQ, jR)
2725- let jV = iB._1
2726- let B = iB._2
2727- let mg = bO(B)
2728- let kq = valueOrElse(getString(mg), aM)
2729- let jX = iB._4
2730- if ((jX == kq))
2716+ let bR = toString(gO.caller)
2717+ let iD = jS(bR, jT, jU)
2718+ let jY = iD._1
2719+ let B = iD._2
2720+ let mj = bP(B)
2721+ let kt = valueOrElse(getString(mj), aN)
2722+ let ka = iD._4
2723+ if ((ka == kt))
27312724 then throw("You can't fly to the same location")
27322725 else {
2733- let cw = split(jX, "_")
2734- let mz = (cw[br] == "T")
2735- let mA = (cw[br] == "D")
2736- let gA = G(B)
2737- let mB = valueOrElse(getString(gA), ",;,_,;,_,;,_,;,_,;,_,;,")
2738- let mC = fn(mB, iB._5)
2739- let mD = mC._1
2740- let mE = mC._2
2741- let mF = if (!(cr(dl, kq)))
2742- then if (!(cp(jX)))
2743- then cu(kq, jX, 5)
2744- else if ((jV > 0))
2745- then $Tuple2(jX, jV)
2746- else $Tuple2(kq, 0)
2747- else if (ch(dl, kq))
2748- then if (!(ch(dl, jX)))
2726+ let cx = split(ka, "_")
2727+ let mC = (cx[bs] == "T")
2728+ let mD = (cx[bs] == "D")
2729+ let gB = G(B)
2730+ let mE = valueOrElse(getString(gB), ",;,_,;,_,;,_,;,_,;,_,;,")
2731+ let mF = fo(mE, iD._5)
2732+ let mG = mF._1
2733+ let mH = mF._2
2734+ let mI = if (!(cs(dm, kt)))
2735+ then if (!(cq(ka)))
2736+ then cv(kt, ka, 5)
2737+ else if ((jY > 0))
2738+ then $Tuple2(ka, jY)
2739+ else $Tuple2(kt, 0)
2740+ else if (ci(dm, kt))
2741+ then if (!(ci(dm, ka)))
27492742 then throw("Your duck is taking part in the tournament")
27502743 else {
2751- let lt = parseIntValue(cw[bs])
2752- let mG = split(kq, "_")
2753- let cj = valueOrElse(getInteger(dl, bU), 0)
2754- if ((lt != (parseIntValue(mG[bs]) + 1)))
2755- then cu(kq, jX, 7)
2756- else if ((jV > 0))
2744+ let lw = parseIntValue(cx[bt])
2745+ let mJ = split(kt, "_")
2746+ let ck = valueOrElse(getInteger(dm, bV), 0)
2747+ if ((lw != (parseIntValue(mJ[bt]) + 1)))
2748+ then cv(kt, ka, 7)
2749+ else if ((jY > 0))
27572750 then {
2758- let mH = valueOrElse(getInteger(dl, bY(cj, B)), 0)
2759- let mI = if ((lt > mH))
2760- then invoke(dl, "saveDuckResult", [B, lt], nil)
2751+ let mK = valueOrElse(getInteger(dm, bZ(ck, B)), 0)
2752+ let mL = if ((lw > mK))
2753+ then invoke(dm, "saveDuckResult", [B, lw], nil)
27612754 else unit
2762- if ((mI == mI))
2763- then $Tuple2(jX, jV)
2755+ if ((mL == mL))
2756+ then $Tuple2(ka, jY)
27642757 else throw("Strict value is not equal to itself.")
27652758 }
2766- else $Tuple2(kq, 0)
2759+ else $Tuple2(kt, 0)
27672760 }
2768- else if (!(cm(kq)))
2761+ else if (!(cn(kt)))
27692762 then {
2770- let mJ = dC(invoke(this, "autoExitDelivery", [B, jV, if (mA)
2763+ let mM = dD(invoke(this, "autoExitDelivery", [B, jY, if (mD)
27712764 then "10"
27722765 else "11", 0], nil))
2773- if ((mJ == mJ))
2774- then if (mA)
2775- then $Tuple2(mJ, jV)
2776- else if ((jV > 0))
2777- then $Tuple2(jX, jV)
2778- else $Tuple2(mJ, 0)
2766+ if ((mM == mM))
2767+ then if (mD)
2768+ then $Tuple2(mM, jY)
2769+ else if ((jY > 0))
2770+ then $Tuple2(ka, jY)
2771+ else $Tuple2(mM, 0)
27792772 else throw("Strict value is not equal to itself.")
27802773 }
2781- else if (!(mA))
2774+ else if (!(mD))
27822775 then throw("Your duck is taking part in delivery")
2783- else if (!(cm(jX)))
2784- then cu(kq, jX, 13)
2776+ else if (!(cn(ka)))
2777+ then cv(kt, ka, 13)
27852778 else {
2786- let lt = parseIntValue(cw[bs])
2787- let mG = split(kq, "_")
2788- if ((lt != (parseIntValue(mG[bs]) + 1)))
2789- then cu(kq, jX, 14)
2790- else if (if ((jV > 0))
2791- then (1 > lt)
2779+ let lw = parseIntValue(cx[bt])
2780+ let mJ = split(kt, "_")
2781+ if ((lw != (parseIntValue(mJ[bt]) + 1)))
2782+ then cv(kt, ka, 14)
2783+ else if (if ((jY > 0))
2784+ then (1 > lw)
27922785 else false)
2793- then $Tuple2(jX, jV)
2786+ then $Tuple2(ka, jY)
27942787 else {
2795- let mJ = dC(invoke(this, "autoExitDelivery", [B, jV, "15-17", lt], nil))
2796- if ((mJ == mJ))
2797- then $Tuple2(mJ, jV)
2788+ let mM = dD(invoke(this, "autoExitDelivery", [B, jY, "15-17", lw], nil))
2789+ if ((mM == mM))
2790+ then $Tuple2(mM, jY)
27982791 else throw("Strict value is not equal to itself.")
27992792 }
28002793 }
2801- let mK = mF._1
2802- let mL = mF._2
2803- $Tuple2(((([StringEntry(mg, mK), StringEntry(gA, mD), IntegerEntry(A(B), mL)] ++ mm) ++ (if (mE)
2794+ let mN = mI._1
2795+ let mO = mI._2
2796+ $Tuple2(((([StringEntry(mj, mN), StringEntry(gB, mG), IntegerEntry(A(B), mO)] ++ mp) ++ (if (mH)
28042797 then [StringEntry(M(B), "0_0_0_0_0")]
2805- else nil)) ++ lf(B, if ((jV > 0))
2798+ else nil)) ++ li(B, if ((jY > 0))
28062799 then Y
2807- else Z)._1), iB._3)
2800+ else Z)._1), iD._3)
28082801 }
28092802 }
28102803 }
28112804
28122805
28132806
2814-@Callable(gN)
2815-func heal (mM,mN,mO) = {
2816- let mm = mi(gN)
2817- if (if (if ((0 > mM))
2807+@Callable(gO)
2808+func heal (mP,mQ,mR) = {
2809+ let mp = ml(gO)
2810+ if (if (if ((0 > mP))
28182811 then true
2819- else (0 > mN))
2812+ else (0 > mQ))
28202813 then true
2821- else (0 > mO))
2814+ else (0 > mR))
28222815 then throw("Quantity cannot be negative")
28232816 else {
2824- let B = valueOrErrorMessage(getString(bM(toString(gN.caller))), "You don't have a duck staked")
2825- if (lq(B))
2817+ let B = valueOrErrorMessage(getString(bN(toString(gO.caller))), "You don't have a duck staked")
2818+ if (lt(B))
28262819 then throw("heal_checkTournament")
2827- else if (lr(B))
2820+ else if (lu(B))
28282821 then throw("heal_checkDelivery")
28292822 else {
2830- let mP = [mM, mN, mO]
2831- let kb = A(B)
2832- let kc = aj(valueOrElse(getInteger(E(B)), 0))
2833- let mQ = valueOrElse(getInteger(kb), kc)
2834- if ((mQ >= kc))
2835- then throw((("HP should be < " + toString(kc)) + " to heal"))
2823+ let mS = [mP, mQ, mR]
2824+ let ke = A(B)
2825+ let kf = aj(valueOrElse(getInteger(E(B)), 0))
2826+ let mT = valueOrElse(getInteger(ke), kf)
2827+ if ((mT >= kf))
2828+ then throw((("HP should be < " + toString(kf)) + " to heal"))
28362829 else {
2837- let iL = bN(B)
2838- let jo = iK(iL)
2839- let mR = if ((jo[bp] == ""))
2830+ let iO = bO(B)
2831+ let jr = iN(iO)
2832+ let mU = if ((jr[bq] == ""))
28402833 then nil
2841- else split_4C(jo[bp], "_")
2842- func mS (eU,ct) = {
2843- let dG = eU._2
2844- let hj = if ((size(mR) > dG))
2845- then parseIntValue(mR[dG])
2834+ else split_4C(jr[bq], "_")
2835+ func mV (eV,cu) = {
2836+ let dH = eV._2
2837+ let hk = if ((size(mU) > dH))
2838+ then parseIntValue(mU[dH])
28462839 else 0
2847- if ((3 > dG))
2840+ if ((3 > dH))
28482841 then {
2849- let mT = mP[dG]
2850- if ((mT > hj))
2851- then throw(((("You have only " + toString(hj)) + " of ") + aT[dG]))
2852- else $Tuple3((eU._1 :+ toString((hj - mT))), (dG + 1), (eU._3 + (parseIntValue(split(ct, "_")[aZ]) * mT)))
2842+ let mW = mS[dH]
2843+ if ((mW > hk))
2844+ then throw(((("You have only " + toString(hk)) + " of ") + aU[dH]))
2845+ else $Tuple3((eV._1 :+ toString((hk - mW))), (dH + 1), (eV._3 + (parseIntValue(split(cu, "_")[ba]) * mW)))
28532846 }
2854- else $Tuple3((eU._1 :+ toString(hj)), (dG + 1), eU._3)
2847+ else $Tuple3((eV._1 :+ toString(hk)), (dH + 1), eV._3)
28552848 }
28562849
2857- let fm = {
2858- let eW = aX
2859- let eX = size(eW)
2860- let eY = $Tuple3(nil, 0, 0)
2861- func eZ (fa,fb) = if ((fb >= eX))
2862- then fa
2863- else mS(fa, eW[fb])
2864-
2865- func fc (fa,fb) = if ((fb >= eX))
2866- then fa
2850+ let fn = {
2851+ let eX = aY
2852+ let eY = size(eX)
2853+ let eZ = $Tuple3(nil, 0, 0)
2854+ func fa (fb,fc) = if ((fc >= eY))
2855+ then fb
2856+ else mV(fb, eX[fc])
2857+
2858+ func fd (fb,fc) = if ((fc >= eY))
2859+ then fb
28672860 else throw("List size exceeds 50")
28682861
2869- fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 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)
2862+ fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 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)
28702863 }
2871- let mU = min([kc, (mQ + fm._3)])
2872- $Tuple2((([IntegerEntry(kb, mU), StringEntry(iL, makeString_2C([jo[bm], jo[bn], jo[bo], makeString(fm._1, "_")], ":"))] ++ mm) ++ lf(B, (ag * ((mM + mN) + mO)))._1), mU)
2864+ let mX = min([kf, (mT + fn._3)])
2865+ $Tuple2((([IntegerEntry(ke, mX), StringEntry(iO, makeString_2C([jr[bn], jr[bo], jr[bp], makeString(fn._1, "_")], ":"))] ++ mp) ++ li(B, (ag * ((mP + mQ) + mR)))._1), mX)
28732866 }
28742867 }
28752868 }
28762869 }
28772870
28782871
28792872
2880-@Callable(gN)
2873+@Callable(gO)
28812874 func healES () = {
2882- let mm = mi(gN)
2883- if ((size(gN.payments) != 1))
2875+ let mp = ml(gO)
2876+ if ((size(gO.payments) != 1))
28842877 then throw("Exactly one payment required")
28852878 else {
2886- let mn = value(gN.payments[0])
2887- if ((mn.assetId != cC))
2879+ let mq = value(gO.payments[0])
2880+ if ((mq.assetId != cD))
28882881 then throw("Allowed USDT payment only!")
28892882 else {
2890- let B = valueOrErrorMessage(getString(bM(toString(gN.caller))), "You don't have a duck staked")
2891- if (lq(B))
2883+ let B = valueOrErrorMessage(getString(bN(toString(gO.caller))), "You don't have a duck staked")
2884+ if (lt(B))
28922885 then throw("healES_checkTournament")
2893- else if (lr(B))
2886+ else if (lu(B))
28942887 then throw("healES_checkDelivery")
28952888 else {
2896- let kb = A(B)
2897- let kc = aj(valueOrElse(getInteger(E(B)), 0))
2898- let mQ = valueOrElse(getInteger(kb), kc)
2899- if ((mQ > 0))
2889+ let ke = A(B)
2890+ let kf = aj(valueOrElse(getInteger(E(B)), 0))
2891+ let mT = valueOrElse(getInteger(ke), kf)
2892+ if ((mT > 0))
29002893 then throw("HP should be 0 to call Emergency Service")
29012894 else {
2902- let iL = bN(B)
2903- let jo = iK(iL)
2904- let mR = if ((jo[bp] == ""))
2895+ let iO = bO(B)
2896+ let jr = iN(iO)
2897+ let mU = if ((jr[bq] == ""))
29052898 then nil
2906- else split_4C(jo[bp], "_")
2907- let mV = if ((size(mR) > 0))
2908- then parseIntValue(mR[0])
2899+ else split_4C(jr[bq], "_")
2900+ let mY = if ((size(mU) > 0))
2901+ then parseIntValue(mU[0])
29092902 else 0
2910- let mW = if ((size(mR) > 1))
2911- then parseIntValue(mR[1])
2903+ let mZ = if ((size(mU) > 1))
2904+ then parseIntValue(mU[1])
29122905 else 0
2913- let mX = if ((size(mR) > 2))
2914- then parseIntValue(mR[2])
2906+ let na = if ((size(mU) > 2))
2907+ then parseIntValue(mU[2])
29152908 else 0
2916- if (if (if ((mV > 0))
2909+ if (if (if ((mY > 0))
29172910 then true
2918- else (mW > 0))
2911+ else (mZ > 0))
29192912 then true
2920- else (mX > 0))
2913+ else (na > 0))
29212914 then throw("You have to use own Medical Kit")
29222915 else {
2923- let mY = getString(di, bR())
2924- let mZ = if (isDefined(mY))
2925- then split_4C(value(mY), "_")
2916+ let nb = getString(dj, bS())
2917+ let nc = if (isDefined(nb))
2918+ then split_4C(value(nb), "_")
29262919 else nil
2927- let na = if ((size(mZ) > 0))
2928- then parseIntValue(mZ[0])
2920+ let nd = if ((size(nc) > 0))
2921+ then parseIntValue(nc[0])
29292922 else 0
2930- if ((0 >= na))
2923+ if ((0 >= nd))
29312924 then throw("There are no Medical Kits L1 at Emergency Service storage")
29322925 else {
2933- let mU = (mQ + parseIntValue(split(aX[0], "_")[aZ]))
2934- let nb = makeString([toString((na - 1)), removeByIndex(mZ, 0)], "_")
2935- let ct = split(aX[0], "_")
2936- let nc = cs(ct)
2937- let nd = fraction((nc * aO), aN, (cK * bc))
2938- if ((mn.amount != nd))
2939- then throw(("Payment attached should be " + toString(nd)))
2926+ let mX = (mT + parseIntValue(split(aY[0], "_")[ba]))
2927+ let ne = makeString([toString((nd - 1)), removeByIndex(nc, 0)], "_")
2928+ let cu = split(aY[0], "_")
2929+ let nf = ct(cu)
2930+ let ng = fraction((nf * aP), aO, (cL * bd))
2931+ if ((mq.amount != ng))
2932+ then throw(("Payment attached should be " + toString(ng)))
29402933 else {
2941- let fm = dC(invoke(di, "updateEsStorage", [nb], [AttachedPayment(cC, nd)]))
2942- $Tuple2(((mm :+ IntegerEntry(kb, mU)) ++ lf(B, aa)._1), fm)
2934+ let fn = dD(invoke(dj, "updateEsStorage", [ne], [AttachedPayment(cD, ng)]))
2935+ $Tuple2(((mp :+ IntegerEntry(ke, mX)) ++ li(B, aa)._1), fn)
29432936 }
29442937 }
29452938 }
29462939 }
29472940 }
29482941 }
29492942 }
29502943 }
29512944
29522945
29532946
2954-@Callable(gN)
2955-func updateBackpack (B,ne) = if ((gN.caller != di))
2947+@Callable(gO)
2948+func updateBackpack (B,nh) = if ((gO.caller != dj))
29562949 then throw("permission denied")
2957- else $Tuple2([StringEntry(bN(B), ne)], ne)
2958-
2959-
2960-
2961-@Callable(gN)
2950+ else $Tuple2([StringEntry(bO(B), nh)], nh)
2951+
2952+
2953+
2954+@Callable(gO)
29622955 func commitForRandom () = {
2963- let mm = mi(gN)
2964- let nf = (height + dv)
2965- let c = toString(gN.caller)
2966- $Tuple2(([IntegerEntry(dw(c), nf)] ++ mm), nf)
2967- }
2968-
2969-
2970-
2971-@Callable(gN)
2956+ let mp = ml(gO)
2957+ let ni = (height + dw)
2958+ let c = toString(gO.caller)
2959+ $Tuple2(([IntegerEntry(dx(c), ni)] ++ mp), ni)
2960+ }
2961+
2962+
2963+
2964+@Callable(gO)
29722965 func buySLand () = {
2973- let mm = mi(gN)
2974- if ((size(gN.payments) != 1))
2966+ let mp = ml(gO)
2967+ if ((size(gO.payments) != 1))
29752968 then throw("Exactly one payment required")
29762969 else {
2977- let mn = value(gN.payments[0])
2978- if ((mn.assetId != cC))
2970+ let mq = value(gO.payments[0])
2971+ if ((mq.assetId != cD))
29792972 then throw("Allowed USDT payment only!")
2980- else if ((mn.amount != ej))
2981- then throw(("Payment attached should be " + toString(ej)))
2973+ else if ((mq.amount != ek))
2974+ then throw(("Payment attached should be " + toString(ek)))
29822975 else {
2983- let fm = jI(gN.caller, gN.transactionId)
2984- let ng = dF(invoke(dm, "burnAcres", [ek], nil))
2985- $Tuple2((((fm._1 :+ ScriptTransfer(di, mn.amount, cC)) ++ lg(toString(gN.caller), ac)._1) ++ mm), $Tuple2(fm._2._1, ng))
2976+ let fn = jL(gO.caller, gO.transactionId)
2977+ let nj = dG(invoke(dn, "burnAcres", [el], nil))
2978+ $Tuple2((((fn._1 :+ ScriptTransfer(dj, mq.amount, cD)) ++ lj(toString(gO.caller), ac)._1) ++ mp), $Tuple2(fn._2._1, nj))
29862979 }
29872980 }
29882981 }
29892982
29902983
29912984
2992-@Callable(gN)
2993-func expedition (jQ,jR) = {
2994- let mm = mi(gN)
2995- if ((size(gN.payments) != 0))
2985+@Callable(gO)
2986+func expedition (jT,jU) = {
2987+ let mp = ml(gO)
2988+ if ((size(gO.payments) != 0))
29962989 then throw("No payments required")
29972990 else {
2998- let bQ = toString(gN.caller)
2999- let iB = jP(bQ, jQ, jR)
3000- let B = iB._2
3001- let kb = A(B)
3002- let iL = bN(B)
3003- let jo = iK(iL)
3004- let kQ = split(jo[bo], "_")
3005- let kS = makeString(fg(true, kQ, ei), "_")
3006- let gA = G(B)
3007- let mB = valueOrElse(getString(gA), ",;,_,;,_,;,_,;,_,;,_,;,")
3008- let nh = fn(mB, iB._5)
3009- let mD = nh._1
3010- let mE = nh._2
3011- let ni = jI(gN.caller, gN.transactionId)
3012- let jO = ni._2._1
3013- let fm = if ((0 >= iB._1))
3014- then $Tuple3([IntegerEntry(kb, 0), StringEntry(gA, mD)], "", 0)
3015- else $Tuple3((ni._1 ++ (if (mE)
2991+ let bR = toString(gO.caller)
2992+ let iD = jS(bR, jT, jU)
2993+ let B = iD._2
2994+ let ke = A(B)
2995+ let iO = bO(B)
2996+ let jr = iN(iO)
2997+ let kT = split(jr[bp], "_")
2998+ let kV = makeString(fh(true, kT, ej), "_")
2999+ let gB = G(B)
3000+ let mE = valueOrElse(getString(gB), ",;,_,;,_,;,_,;,_,;,_,;,")
3001+ let nk = fo(mE, iD._5)
3002+ let mG = nk._1
3003+ let mH = nk._2
3004+ let nl = jL(gO.caller, gO.transactionId)
3005+ let jR = nl._2._1
3006+ let fn = if ((0 >= iD._1))
3007+ then $Tuple3([IntegerEntry(ke, 0), StringEntry(gB, mG)], "", 0)
3008+ else $Tuple3((nl._1 ++ (if (mH)
30163009 then [StringEntry(M(B), "0_0_0_0_0")]
3017- else ((((nil :+ StringEntry(bO(B), makeString([ni._2._2, "L", jO], "_"))) :+ IntegerEntry(kb, iB._1)) :+ StringEntry(gA, mD)) :+ StringEntry(iL, makeString([jo[bm], jo[bn], kS, jo[bp]], ":"))))), jO, iB._3)
3018- if (lq(B))
3010+ else ((((nil :+ StringEntry(bP(B), makeString([nl._2._2, "L", jR], "_"))) :+ IntegerEntry(ke, iD._1)) :+ StringEntry(gB, mG)) :+ StringEntry(iO, makeString([jr[bn], jr[bo], kV, jr[bq]], ":"))))), jR, iD._3)
3011+ if (lt(B))
30193012 then throw("expedition_checkTournament")
3020- else if (lr(B))
3013+ else if (lu(B))
30213014 then throw("expedition_checkDelivery")
30223015 else {
3023- let ng = dF(invoke(dm, "burnAcres", [ek], nil))
3024- $Tuple2(((fm._1 ++ lf(B, ac)._1) ++ mm), $Tuple3(fm._2, fm._3, ng))
3016+ let nj = dG(invoke(dn, "burnAcres", [el], nil))
3017+ $Tuple2(((fn._1 ++ li(B, ac)._1) ++ mp), $Tuple3(fn._2, fn._3, nj))
30253018 }
30263019 }
30273020 }
30283021
30293022
30303023
3031-@Callable(gN)
3024+@Callable(gO)
30323025 func buySLandForAcres () = {
3033- let mm = mi(gN)
3034- if ((size(gN.payments) != 1))
3026+ let mp = ml(gO)
3027+ if ((size(gO.payments) != 1))
30353028 then throw("exactly 1 payment must be attached")
30363029 else {
3037- let mn = gN.payments[0]
3038- let ft = mn.amount
3039- if (if (!(isDefined(mn.assetId)))
3030+ let mq = gO.payments[0]
3031+ let fu = mq.amount
3032+ if (if (!(isDefined(mq.assetId)))
30403033 then true
3041- else (value(mn.assetId) != du))
3034+ else (value(mq.assetId) != dv))
30423035 then throw("ACRES payments only!")
3043- else if ((ft != ek))
3044- then throw(("Payment attached should be " + toString(ek)))
3036+ else if ((fu != el))
3037+ then throw(("Payment attached should be " + toString(el)))
30453038 else {
3046- let fm = jI(gN.caller, gN.transactionId)
3047- let ng = dF(invoke(dm, "burnAcres", [ek], [AttachedPayment(du, ft)]))
3048- $Tuple2(((fm._1 ++ lg(toString(gN.caller), ac)._1) ++ mm), $Tuple2(fm._2._1, ng))
3039+ let fn = jL(gO.caller, gO.transactionId)
3040+ let nj = dG(invoke(dn, "burnAcres", [el], [AttachedPayment(dv, fu)]))
3041+ $Tuple2(((fn._1 ++ lj(toString(gO.caller), ac)._1) ++ mp), $Tuple2(fn._2._1, nj))
30493042 }
30503043 }
30513044 }
30523045
30533046
30543047
3055-@Callable(gN)
3048+@Callable(gO)
30563049 func upgradeInfra (Q) = {
3057- let mm = mi(gN)
3058- if ((size(gN.payments) != 0))
3050+ let mp = ml(gO)
3051+ if ((size(gO.payments) != 0))
30593052 then throw("No payments required")
30603053 else {
3061- let fm = kK(true, gN.caller, 0, Q)
3062- let B = valueOrErrorMessage(getString(bM(toString(gN.caller))), "You don't have a duck staked")
3063- $Tuple2(((fm._1 ++ mm) ++ lf(B, fraction(ad, fm._3, cK))._1), fm._2)
3064- }
3065- }
3066-
3067-
3068-
3069-@Callable(gN)
3070-func activateArtifact (nj,nk) = {
3071- let mm = mi(gN)
3072- if ((size(gN.payments) != 0))
3054+ let fn = kN(true, gO.caller, 0, Q)
3055+ let B = valueOrErrorMessage(getString(bN(toString(gO.caller))), "You don't have a duck staked")
3056+ $Tuple2(((fn._1 ++ mp) ++ li(B, fraction(ad, fn._3, cL))._1), fn._2)
3057+ }
3058+ }
3059+
3060+
3061+
3062+@Callable(gO)
3063+func activateArtifact (nm,nn) = {
3064+ let mp = ml(gO)
3065+ if ((size(gO.payments) != 0))
30733066 then throw("No payments required")
30743067 else {
3075- let c = toString(gN.caller)
3076- let fm = {
3077- let cD = nj
3078- if (("PRESALE" == cD))
3079- then lo(c, nk)
3080- else if (("ONBOARD" == cD))
3081- then lh(c)
3068+ let c = toString(gO.caller)
3069+ let fn = {
3070+ let cE = nm
3071+ if (("PRESALE" == cE))
3072+ then lr(c, nn)
3073+ else if (("ONBOARD" == cE))
3074+ then lk(c)
30823075 else throw("Unknown artifact")
30833076 }
3084- (fm ++ mm)
3085- }
3086- }
3087-
3088-
3089-
3090-@Callable(gN)
3091-func mergeLands (lF) = {
3092- let mm = mi(gN)
3093- if ((size(gN.payments) != 0))
3077+ (fn ++ mp)
3078+ }
3079+ }
3080+
3081+
3082+
3083+@Callable(gO)
3084+func mergeLands (lI) = {
3085+ let mp = ml(gO)
3086+ if ((size(gO.payments) != 0))
30943087 then throw("No payments required")
30953088 else {
3096- let fm = md(toString(gN.caller), lF)
3097- $Tuple2(((fm._1 ++ mm) ++ lg(toString(gN.caller), ae)._1), fm._2)
3098- }
3099- }
3100-
3101-
3102-
3103-@Callable(gN)
3104-func cargoExchange (nl,Q) = {
3105- let mm = mi(gN)
3106- if ((size(gN.payments) != 0))
3089+ let fn = mg(toString(gO.caller), lI)
3090+ $Tuple2(((fn._1 ++ mp) ++ lj(toString(gO.caller), ae)._1), fn._2)
3091+ }
3092+ }
3093+
3094+
3095+
3096+@Callable(gO)
3097+func cargoExchange (no,Q) = {
3098+ let mp = ml(gO)
3099+ if ((size(gO.payments) != 0))
31073100 then throw("No payments required")
31083101 else {
3109- let jn = split_4C(nl, ":")
3110- let c = toString(gN.originCaller)
3111- let ks = value(assetInfo(fromBase58String(Q)))
3112- let kt = bw(Q)
3113- if (!(isDefined(getInteger(kt))))
3114- then throw((ks.name + " is not staked"))
3102+ let jq = split_4C(no, ":")
3103+ let c = toString(gO.originCaller)
3104+ let kv = value(assetInfo(fromBase58String(Q)))
3105+ let kw = bx(Q)
3106+ if (!(isDefined(getInteger(kw))))
3107+ then throw((kv.name + " is not staked"))
31153108 else {
3116- let kv = valueOrErrorMessage(getString(bt(Q)), (("NFT " + ks.name) + " is orphaned"))
3117- if ((kv != c))
3109+ let ky = valueOrErrorMessage(getString(bu(Q)), (("NFT " + kv.name) + " is orphaned"))
3110+ if ((ky != c))
31183111 then throw((aF + " is not yours"))
31193112 else {
3120- let iZ = (dK(split(ks.description, "_")[do]) / cL)
3121- let ja = valueOrElse(getInteger(bD(Q)), 0)
3122- let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
3123- let kq = valueOrElse(getString(bO(B)), aM)
3124- let ck = split(value(kq), "_")
3125- if ((ck[br] != "L"))
3126- then throw((("Duck location type is " + ck[br]) + ", but should be L"))
3127- else if ((ck[bs] != Q))
3113+ let jc = (dL(split(kv.description, "_")[dp]) / cM)
3114+ let jd = valueOrElse(getInteger(bE(Q)), 0)
3115+ let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
3116+ let kt = valueOrElse(getString(bP(B)), aN)
3117+ let cl = split(value(kt), "_")
3118+ if ((cl[bs] != "L"))
3119+ then throw((("Duck location type is " + cl[bs]) + ", but should be L"))
3120+ else if ((cl[bt] != Q))
31283121 then throw(("Duck should be on the land " + Q))
31293122 else {
3130- let iY = bC(Q)
3131- let iP = iX(iY, iZ, ja)
3132- let iL = bN(B)
3133- let jo = iK(iL)
3134- let fm = jm(jn, iP, jo)
3135- let jg = split(iP[bh], "_")
3136- let kH = (parseIntValue(jg[bj]) + fm._7)
3137- let kI = (parseIntValue(jg[bk]) - fm._7)
3138- ([StringEntry(iL, makeString_2C([jo[bm], fm._4, fm._5, fm._6], ":")), StringEntry(iY, makeString_2C([iP[bd], fm._1, fm._2, fm._3, makeString([jg[bi], toString(kH), toString(kI), jg[bl]], "_")], ":"))] ++ mm)
3123+ let jb = bD(Q)
3124+ let iS = ja(jb, jc, jd)
3125+ let iO = bO(B)
3126+ let jr = iN(iO)
3127+ let fn = jp(jq, iS, jr)
3128+ let jj = split(iS[bi], "_")
3129+ let kK = (parseIntValue(jj[bk]) + fn._7)
3130+ let kL = (parseIntValue(jj[bl]) - fn._7)
3131+ ([StringEntry(iO, makeString_2C([jr[bn], fn._4, fn._5, fn._6], ":")), StringEntry(jb, makeString_2C([iS[be], fn._1, fn._2, fn._3, makeString([jj[bj], toString(kK), toString(kL), jj[bm]], "_")], ":"))] ++ mp)
31393132 }
31403133 }
31413134 }
31423135 }
31433136 }
31443137
31453138
31463139
3147-@Callable(gN)
3148-func saveWarehouse (jc,Q) = if ((gN.caller != di))
3140+@Callable(gO)
3141+func saveWarehouse (jf,Q) = if ((gO.caller != dj))
31493142 then throw("Access denied")
31503143 else {
3151- let iY = bC(Q)
3152- let jd = split_4C(jc, ":")
3153- if ((size(jd) != 5))
3144+ let jb = bD(Q)
3145+ let jg = split_4C(jf, ":")
3146+ if ((size(jg) != 5))
31543147 then throw("warehouse string should contain 4 ':' separators")
31553148 else {
3156- let nm = split(jd[bh], "_")[bi]
3157- let kH = iO(jd)
3158- let nn = iM(jd[bd])
3159- let kI = ((nn - parseIntValue(nm)) - kH)
3160- if ((0 > kI))
3149+ let np = split(jg[bi], "_")[bj]
3150+ let kK = iR(jg)
3151+ let nq = iP(jg[be])
3152+ let kL = ((nq - parseIntValue(np)) - kK)
3153+ if ((0 > kL))
31613154 then throw("Operation leads to negative free warehouse space")
31623155 else {
3163- let no = makeString_2C([jd[bd], jd[be], jd[bf], jd[bg], makeString([nm, toString(kH), toString(kI), toString(nn)], "_")], ":")
3164- $Tuple2([StringEntry(iY, no)], no)
3156+ let nr = makeString_2C([jg[be], jg[bf], jg[bg], jg[bh], makeString([np, toString(kK), toString(kL), toString(nq)], "_")], ":")
3157+ $Tuple2([StringEntry(jb, nr)], nr)
31653158 }
31663159 }
31673160 }
31683161
31693162
31703163
3171-@Callable(gN)
3172-func setCustomName (bu,lP,by) = {
3173- let mm = mi(gN)
3174- if ((size(gN.payments) != 1))
3164+@Callable(gO)
3165+func setCustomName (bv,lS,bz) = {
3166+ let mp = ml(gO)
3167+ if ((size(gO.payments) != 1))
31753168 then throw("Exactly one payment required")
31763169 else {
3177- let mn = value(gN.payments[0])
3178- if ((mn.assetId != cC))
3170+ let mq = value(gO.payments[0])
3171+ if ((mq.assetId != cD))
31793172 then throw("Allowed USDT payment only!")
3180- else if ((mn.amount != ef))
3181- then throw(("Payment should be " + toString(ef)))
3182- else if (contains(lP, "__"))
3183- then throw(("Name should not contain '__': " + lP))
3184- else if ((size(lP) > eg))
3185- then throw(("Name too long, maxLength=" + toString(eg)))
3173+ else if ((mq.amount != eg))
3174+ then throw(("Payment should be " + toString(eg)))
3175+ else if (contains(lS, "__"))
3176+ then throw(("Name should not contain '__': " + lS))
3177+ else if ((size(lS) > eh))
3178+ then throw(("Name too long, maxLength=" + toString(eh)))
31863179 else {
3187- let c = toString(gN.originCaller)
3188- let np = {
3189- let cD = by
3190- if (("ACCOUNT" == cD))
3180+ let c = toString(gO.originCaller)
3181+ let ns = {
3182+ let cE = bz
3183+ if (("ACCOUNT" == cE))
31913184 then {
3192- let nq = eA(lP)
3193- let nr = getString(nq)
3194- if (isDefined(nr))
3195- then throw(("Name already registered: " + lP))
3185+ let nt = eB(lS)
3186+ let nu = getString(nt)
3187+ if (isDefined(nu))
3188+ then throw(("Name already registered: " + lS))
31963189 else {
3197- let ns = bG(c)
3198- let nt = getString(ns)
3199- let nu = if (isDefined(nt))
3200- then [DeleteEntry(eA(value(nt)))]
3190+ let nv = bH(c)
3191+ let nw = getString(nv)
3192+ let nx = if (isDefined(nw))
3193+ then [DeleteEntry(eB(value(nw)))]
32013194 else nil
3202- (((nu :+ StringEntry(ns, lP)) :+ StringEntry(nq, c)) ++ lg(c, ab)._1)
3195+ (((nx :+ StringEntry(nv, lS)) :+ StringEntry(nt, c)) ++ lj(c, ab)._1)
32033196 }
32043197 }
3205- else if (("LAND" == cD))
3198+ else if (("LAND" == cE))
32063199 then {
3207- let ks = value(assetInfo(fromBase58String(bu)))
3208- let kt = bw(bu)
3209- if (!(isDefined(getInteger(kt))))
3210- then throw((ks.name + " is not staked"))
3200+ let kv = value(assetInfo(fromBase58String(bv)))
3201+ let kw = bx(bv)
3202+ if (!(isDefined(getInteger(kw))))
3203+ then throw((kv.name + " is not staked"))
32113204 else {
3212- let kv = valueOrErrorMessage(getString(bt(bu)), (("NFT " + ks.name) + " is orphaned"))
3213- if ((kv != c))
3205+ let ky = valueOrErrorMessage(getString(bu(bv)), (("NFT " + kv.name) + " is orphaned"))
3206+ if ((ky != c))
32143207 then throw((aF + " is not yours"))
32153208 else {
3216- let nq = et(lP)
3217- let nr = getString(nq)
3218- if (isDefined(nr))
3219- then throw(("Name already registered: " + lP))
3209+ let nt = eu(lS)
3210+ let nu = getString(nt)
3211+ if (isDefined(nu))
3212+ then throw(("Name already registered: " + lS))
32203213 else {
3221- let nv = bv(bu)
3222- let nt = getString(nv)
3223- let nu = if (isDefined(nt))
3224- then [DeleteEntry(et(value(nt)))]
3214+ let ny = bw(bv)
3215+ let nw = getString(ny)
3216+ let nx = if (isDefined(nw))
3217+ then [DeleteEntry(eu(value(nw)))]
32253218 else nil
3226- (((nu :+ StringEntry(nv, lP)) :+ StringEntry(nq, bu)) ++ lg(c, ab)._1)
3219+ (((nx :+ StringEntry(ny, lS)) :+ StringEntry(nt, bv)) ++ lj(c, ab)._1)
32273220 }
32283221 }
32293222 }
32303223 }
3231- else if (("DUCK" == cD))
3224+ else if (("DUCK" == cE))
32323225 then {
3233- let ks = value(assetInfo(fromBase58String(bu)))
3234- let kt = bw(bu)
3235- if (if (!(isDefined(getInteger(kt))))
3226+ let kv = value(assetInfo(fromBase58String(bv)))
3227+ let kw = bx(bv)
3228+ if (if (!(isDefined(getInteger(kw))))
32363229 then true
3237- else !(isDefined(getString(bM(c)))))
3238- then throw((ks.name + " is not staked"))
3230+ else !(isDefined(getString(bN(c)))))
3231+ then throw((kv.name + " is not staked"))
32393232 else {
3240- let kv = valueOrErrorMessage(getString(bL(bu)), (("NFT " + ks.name) + " is orphaned"))
3241- if ((kv != c))
3233+ let ky = valueOrErrorMessage(getString(bM(bv)), (("NFT " + kv.name) + " is orphaned"))
3234+ if ((ky != c))
32423235 then throw((aG + " is not yours"))
32433236 else {
3244- let nq = ez(lP)
3245- let nr = getString(nq)
3246- if (isDefined(nr))
3247- then throw(("Name already registered: " + lP))
3237+ let nt = eA(lS)
3238+ let nu = getString(nt)
3239+ if (isDefined(nu))
3240+ then throw(("Name already registered: " + lS))
32483241 else {
3249- let nv = bF(bu)
3250- let nt = getString(nv)
3251- let nu = if (isDefined(nt))
3252- then [DeleteEntry(ez(value(nt)))]
3242+ let ny = bG(bv)
3243+ let nw = getString(ny)
3244+ let nx = if (isDefined(nw))
3245+ then [DeleteEntry(eA(value(nw)))]
32533246 else nil
3254- (((nu :+ StringEntry(nv, lP)) :+ StringEntry(nq, bu)) ++ lf(bu, ab)._1)
3247+ (((nx :+ StringEntry(ny, lS)) :+ StringEntry(nt, bv)) ++ li(bv, ab)._1)
32553248 }
32563249 }
32573250 }
32583251 }
32593252 else throw("Unknown entity type")
32603253 }
3261- $Tuple2(((np :+ ScriptTransfer(di, mn.amount, cC)) ++ mm), 0)
3254+ $Tuple2(((ns :+ ScriptTransfer(dj, mq.amount, cD)) ++ mp), 0)
32623255 }
32633256 }
32643257 }
32653258
32663259
32673260
3268-@Callable(gN)
3269-func setReferrals (nw,nx) = if ((gN.callerPublicKey != ec))
3261+@Callable(gO)
3262+func setReferrals (nz,nA) = if ((gO.callerPublicKey != ed))
32703263 then throw("Permission denied")
32713264 else {
3272- let mm = mi(gN)
3273- if ((size(gN.payments) != 0))
3265+ let mp = ml(gO)
3266+ if ((size(gO.payments) != 0))
32743267 then throw("No payments required")
3275- else if (!(isDefined(addressFromString(nw))))
3276- then throw(("Invalid address: " + nw))
3277- else if (!(isDefined(addressFromString(nx))))
3278- then throw(("Invalid address: " + nx))
3268+ else if (!(isDefined(addressFromString(nz))))
3269+ then throw(("Invalid address: " + nz))
3270+ else if (!(isDefined(addressFromString(nA))))
3271+ then throw(("Invalid address: " + nA))
32793272 else {
3280- let ny = eB()
3281- let nz = getString(ny)
3282- let nA = if (isDefined(nz))
3283- then split_4C(value(nz), "_")
3273+ let nB = eC()
3274+ let nC = getString(nB)
3275+ let nD = if (isDefined(nC))
3276+ then split_4C(value(nC), "_")
32843277 else nil
3285- if (containsElement(nA, nx))
3286- then throw((nx + " is not newbie (already has referrals)"))
3278+ if (containsElement(nD, nA))
3279+ then throw((nA + " is not newbie (already has referrals)"))
32873280 else {
3288- let li = bH(nx)
3289- let lj = getString(li)
3290- if (if (isDefined(lj))
3291- then isDefined(addressFromString(value(lj)))
3281+ let ll = bI(nA)
3282+ let lm = getString(ll)
3283+ if (if (isDefined(lm))
3284+ then isDefined(addressFromString(value(lm)))
32923285 else false)
3293- then throw(((nx + " already has refBy: ") + value(lj)))
3286+ then throw(((nA + " already has refBy: ") + value(lm)))
32943287 else {
3295- let nB = bK(nw)
3296- let nC = getString(nB)
3297- let nD = if (isDefined(nC))
3298- then split_4C(value(nC), "_")
3288+ let nE = bL(nz)
3289+ let nF = getString(nE)
3290+ let nG = if (isDefined(nF))
3291+ then split_4C(value(nF), "_")
32993292 else nil
3300- if (containsElement(nD, nx))
3301- then throw((((nw + " already contains ") + nx) + " within referrals"))
3293+ if (containsElement(nG, nA))
3294+ then throw((((nz + " already contains ") + nA) + " within referrals"))
33023295 else {
3303- let nE = makeString_2C((nD :+ nx), "_")
3304- let nF = if (containsElement(nA, nw))
3305- then value(nz)
3306- else makeString_2C((nA :+ nw), "_")
3307- $Tuple2(([StringEntry(li, nw), StringEntry(nB, nE), StringEntry(ny, nF)] ++ mm), 0)
3296+ let nH = makeString_2C((nG :+ nA), "_")
3297+ let nI = if (containsElement(nD, nz))
3298+ then value(nC)
3299+ else makeString_2C((nD :+ nz), "_")
3300+ $Tuple2(([StringEntry(ll, nz), StringEntry(nE, nH), StringEntry(nB, nI)] ++ mp), 0)
33083301 }
33093302 }
33103303 }
33113304 }
33123305 }
33133306
33143307
33153308
3316-@Callable(gN)
3317-func distributePoints (nG,nH,nI,nJ,nK) = {
3318- let mm = mi(gN)
3319- if ((size(gN.payments) != 0))
3309+@Callable(gO)
3310+func distributePoints (nJ,nK,nL,nM,nN) = {
3311+ let mp = ml(gO)
3312+ if ((size(gO.payments) != 0))
33203313 then throw("No payments required")
33213314 else {
3322- let c = toString(gN.originCaller)
3323- let nL = dH(invoke(dk, "checkWlgXpREADONLY", [c], nil))
3324- let nM = dF(nL[1])
3325- let nN = if ((0 >= nM))
3315+ let c = toString(gO.originCaller)
3316+ let nO = dI(invoke(dl, "checkWlgXpREADONLY", [c], nil))
3317+ let nP = dG(nO[1])
3318+ let nQ = if ((0 >= nP))
33263319 then $Tuple2(0, nil)
33273320 else {
3328- let ld = dF(invoke(dk, "takeWlgXp", [c], nil))
3329- if ((ld == ld))
3330- then $Tuple2(nM, [IntegerEntry(I(c), dF(nL[0])), IntegerEntry(H(c), dF(nL[2]))])
3321+ let lg = dG(invoke(dl, "takeWlgXp", [c], nil))
3322+ if ((lg == lg))
3323+ then $Tuple2(nP, [IntegerEntry(I(c), dG(nO[0])), IntegerEntry(H(c), dG(nO[2]))])
33313324 else throw("Strict value is not equal to itself.")
33323325 }
3333- let nO = nN._1
3334- let nP = nN._2
3335- let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
3336- let nQ = J(c)
3337- let nR = (valueOrElse(getInteger(nQ), 0) + nO)
3338- let nS = F(B)
3339- let nT = valueOrElse(getInteger(nS), 0)
3340- let nU = (nR + nT)
3341- let nV = ((((nG + nH) + nI) + nJ) + nK)
3342- if ((nV > nU))
3343- then throw((("There are only " + toString(nU)) + " free points to distribute"))
3326+ let nR = nQ._1
3327+ let nS = nQ._2
3328+ let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
3329+ let nT = J(c)
3330+ let nU = (valueOrElse(getInteger(nT), 0) + nR)
3331+ let nV = F(B)
3332+ let nW = valueOrElse(getInteger(nV), 0)
3333+ let nX = (nU + nW)
3334+ let nY = ((((nJ + nK) + nL) + nM) + nN)
3335+ if ((nY > nX))
3336+ then throw((("There are only " + toString(nX)) + " free points to distribute"))
33443337 else {
3345- let nW = C(B)
3346- let at = split(valueOrElse(getString(nW), "0_0_0_0_0"), "_")
3347- let nX = (nR - nV)
3348- $Tuple2((([IntegerEntry(nQ, if ((0 > nX))
3338+ let nZ = C(B)
3339+ let at = split(valueOrElse(getString(nZ), "0_0_0_0_0"), "_")
3340+ let oa = (nU - nY)
3341+ $Tuple2((([IntegerEntry(nT, if ((0 > oa))
33493342 then 0
3350- else nX), IntegerEntry(nS, if ((0 > nX))
3351- then (nT + nX)
3352- else nT), StringEntry(nW, makeString([toString((parseIntValue(at[l]) + nG)), toString((parseIntValue(at[m]) + nH)), toString((parseIntValue(at[n]) + nI)), toString((parseIntValue(at[o]) + nJ)), toString((parseIntValue(at[p]) + nK))], "_"))] ++ mm) ++ nP), 0)
3343+ else oa), IntegerEntry(nV, if ((0 > oa))
3344+ then (nW + oa)
3345+ else nW), StringEntry(nZ, makeString([toString((parseIntValue(at[l]) + nJ)), toString((parseIntValue(at[m]) + nK)), toString((parseIntValue(at[n]) + nL)), toString((parseIntValue(at[o]) + nM)), toString((parseIntValue(at[p]) + nN))], "_"))] ++ mp) ++ nS), 0)
33533346 }
33543347 }
33553348 }
33563349
33573350
33583351
3359-@Callable(gN)
3360-func splitByGlobalWeightsREADONLY (eL) = $Tuple2(nil, fd(eL))
3361-
3362-
3363-
3364-@Callable(gN)
3365-func splitByGlobalAndLocalWeightsREADONLY (nY,nZ,gQ) = {
3366- let gJ = gP(gQ)
3367- $Tuple2(nil, $Tuple2(fd(nY), eO(nZ, gJ)))
3368- }
3369-
3370-
3371-
3372-@Callable(gN)
3373-func getBackpackREADONLY (B) = $Tuple2(nil, makeString(iK(bN(B)), ":"))
3374-
3375-
3376-
3377-@Callable(gN)
3352+@Callable(gO)
3353+func splitByGlobalWeightsREADONLY (eM) = $Tuple2(nil, fe(eM))
3354+
3355+
3356+
3357+@Callable(gO)
3358+func splitByGlobalAndLocalWeightsREADONLY (ob,oc,gR) = {
3359+ let gK = gQ(gR)
3360+ $Tuple2(nil, $Tuple2(fe(ob), eP(oc, gK)))
3361+ }
3362+
3363+
3364+
3365+@Callable(gO)
3366+func getBackpackREADONLY (B) = $Tuple2(nil, makeString(iN(bO(B)), ":"))
3367+
3368+
3369+
3370+@Callable(gO)
33783371 func getWarehouseREADONLY (Q) = {
3379- let ks = value(assetInfo(fromBase58String(Q)))
3380- let iZ = (dK(split(ks.description, "_")[do]) / cL)
3381- let ja = valueOrElse(getInteger(bD(Q)), 0)
3382- $Tuple2(nil, makeString_2C(iX(bC(Q), iZ, ja), ":"))
3383- }
3384-
3385-
3386-
3387-@Callable(gN)
3388-func saveLastTx () = if (!(containsElement([dk, di, dl, dm], gN.caller)))
3372+ let kv = value(assetInfo(fromBase58String(Q)))
3373+ let jc = (dL(split(kv.description, "_")[dp]) / cM)
3374+ let jd = valueOrElse(getInteger(bE(Q)), 0)
3375+ $Tuple2(nil, makeString_2C(ja(bD(Q), jc, jd), ":"))
3376+ }
3377+
3378+
3379+
3380+@Callable(gO)
3381+func saveLastTx () = if (!(containsElement([dl, dj, dm, dn], gO.caller)))
33893382 then throw("Access denied")
3390- else $Tuple2(mi(gN), 42)
3391-
3392-
3393-
3394-@Callable(gN)
3395-func updateDuckStats (B,ld) = if ((gN.caller != di))
3383+ else $Tuple2(ml(gO), 42)
3384+
3385+
3386+
3387+@Callable(gO)
3388+func updateDuckStats (B,lg) = if ((gO.caller != dj))
33963389 then throw("Access denied")
3397- else lf(B, ld)
3398-
3399-
3400-
3401-@Callable(gN)
3402-func updateAccStats (c,ld) = if (!(containsElement([dk, di, dm], gN.caller)))
3390+ else li(B, lg)
3391+
3392+
3393+
3394+@Callable(gO)
3395+func updateAccStats (c,lg) = if (!(containsElement([dl, dj, dn], gO.caller)))
34033396 then throw("Access denied")
3404- else lg(c, ld)
3405-
3406-
3407-
3408-@Callable(gN)
3409-func equipDuck (oa) = {
3410- let mm = mi(gN)
3411- if ((size(gN.payments) != 0))
3397+ else lj(c, lg)
3398+
3399+
3400+
3401+@Callable(gO)
3402+func equipDuck (od) = {
3403+ let mp = ml(gO)
3404+ if ((size(gO.payments) != 0))
34123405 then throw("No payments required")
34133406 else {
3414- let c = toString(gN.originCaller)
3415- let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
3416- if (lq(B))
3407+ let c = toString(gO.originCaller)
3408+ let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
3409+ if (lt(B))
34173410 then throw("equipDuck_checkTournament")
3418- else if (lr(B))
3411+ else if (lu(B))
34193412 then throw("equipDuck_checkDelivery")
34203413 else {
3421- let gA = G(B)
3422- let ob = split(valueOrElse(getString(gA), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3423- let iL = bN(B)
3424- let jo = iK(iL)
3425- let mD = split(oa, "_")
3426- if ((size(mD) != r))
3414+ let gB = G(B)
3415+ let oe = split(valueOrElse(getString(gB), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3416+ let iO = bO(B)
3417+ let jr = iN(iO)
3418+ let mG = split(od, "_")
3419+ if ((size(mG) != r))
34273420 then throw("Wrong equipment string")
34283421 else {
3429- let gC = gp(ob, fA(jo[bp]), true, nil)
3430- let gD = split(mD[q], ";")[1]
3431- let ar = if ((gD == ""))
3422+ let gD = gq(oe, fB(jr[bq]), true, nil)
3423+ let gE = split(mG[q], ";")[1]
3424+ let ar = if ((gE == ""))
34323425 then 0
34333426 else {
3434- let gE = split(gD, ",")[0]
3435- if ((gE == ""))
3427+ let gF = split(gE, ",")[0]
3428+ if ((gF == ""))
34363429 then 0
34373430 else {
3438- let fP = split(gE, ":")
3439- let dg = fP[0]
3440- let gF = fP[1]
3441- if (if (if (if (if ((dg == "06"))
3431+ let fQ = split(gF, ":")
3432+ let dh = fQ[0]
3433+ let gG = fQ[1]
3434+ if (if (if (if (if ((dh == "06"))
34423435 then true
3443- else (dg == "07"))
3436+ else (dh == "07"))
34443437 then true
3445- else (dg == "08"))
3446- then (gF != "")
3438+ else (dh == "08"))
3439+ then (gG != "")
34473440 else false)
3448- then (parseIntValue(gF) > 0)
3441+ then (parseIntValue(gG) > 0)
34493442 else false)
3450- then parseIntValue(split(aX[parseIntValue(dg)], "_")[aZ])
3443+ then parseIntValue(split(aY[parseIntValue(dh)], "_")[ba])
34513444 else 0
34523445 }
34533446 }
3454- let gk = ap(this, B, ar, true)
3455- let gG = gp(mD, gC, false, gk)
3456- let oc = fF(gG)
3457- $Tuple2(([StringEntry(gA, oa), StringEntry(iL, makeString_2C([jo[bm], jo[bn], jo[bo], oc], ":")), StringEntry(M(B), makeString([toString(gk[7]), toString(gk[8]), toString(gk[9]), toString(gk[10]), toString(gk[11])], "_"))] ++ mm), 0)
3447+ let gl = ap(this, B, ar, true)
3448+ let gH = gq(mG, gD, false, gl)
3449+ let of = fG(gH)
3450+ $Tuple2(([StringEntry(gB, od), StringEntry(iO, makeString_2C([jr[bn], jr[bo], jr[bp], of], ":")), StringEntry(M(B), makeString([toString(gl[7]), toString(gl[8]), toString(gl[9]), toString(gl[10]), toString(gl[11])], "_"))] ++ mp), 0)
34583451 }
34593452 }
34603453 }
34613454 }
34623455
34633456
34643457
3465-@Callable(gN)
3466-func fortificateLand (Q,od) = {
3467- let mm = mi(gN)
3468- if ((size(gN.payments) != 0))
3458+@Callable(gO)
3459+func fortificateLand (Q,og) = {
3460+ let mp = ml(gO)
3461+ if ((size(gO.payments) != 0))
34693462 then throw("No payments required")
34703463 else {
3471- let c = toString(gN.originCaller)
3472- let B = valueOrElse(getString(bM(c)), "")
3473- let fK = ap(this, B, 0, false)
3474- let oe = bE(Q)
3475- let of = split(valueOrElse(getString(oe), ":0_15:0_18:0"), "_")
3476- let ks = value(assetInfo(fromBase58String(Q)))
3477- let iZ = (dK(split(ks.description, "_")[do]) / cL)
3478- let ja = valueOrElse(getInteger(bD(Q)), 0)
3479- let iY = bC(Q)
3480- let jd = iX(iY, iZ, ja)
3481- let og = split(jd[bh], "_")
3482- let oh = parseIntValue(og[bj])
3483- let oi = parseIntValue(og[bk])
3484- let oj = split(od, "_")
3485- let ok = gw(of, fA(jd[bg]), oh, oi, true, nil)
3486- let gC = ok._1
3487- let ol = ok._2
3488- let om = ok._3
3489- let on = gw(oj, gC, ol, om, false, fK)
3490- let gG = on._1
3464+ let c = toString(gO.originCaller)
3465+ let B = valueOrElse(getString(bN(c)), "")
3466+ let fL = ap(this, B, 0, false)
3467+ let oh = bF(Q)
3468+ let oi = split(valueOrElse(getString(oh), ":0_15:0_18:0"), "_")
3469+ let kv = value(assetInfo(fromBase58String(Q)))
3470+ let jc = (dL(split(kv.description, "_")[dp]) / cM)
3471+ let jd = valueOrElse(getInteger(bE(Q)), 0)
3472+ let jb = bD(Q)
3473+ let jg = ja(jb, jc, jd)
3474+ let oj = split(jg[bi], "_")
3475+ let ok = parseIntValue(oj[bk])
3476+ let ol = parseIntValue(oj[bl])
3477+ let om = split(og, "_")
3478+ let on = gx(oi, fB(jg[bh]), ok, ol, true, nil)
3479+ let gD = on._1
34913480 let oo = on._2
34923481 let op = on._3
3493- let oc = fF(gG)
3494- let kY = makeString([og[bi], toString(oo), toString(op), og[bl]], "_")
3495- $Tuple2(([StringEntry(oe, od), StringEntry(iY, makeString_2C([jd[bd], jd[be], jd[bf], oc, kY], ":"))] ++ mm), 0)
3496- }
3497- }
3498-
3499-
3500-
3501-@Callable(gN)
3502-func initDuckTourAttempt (B) = if ((gN.caller != dl))
3482+ let oq = gx(om, gD, oo, op, false, fL)
3483+ let gH = oq._1
3484+ let or = oq._2
3485+ let os = oq._3
3486+ let of = fG(gH)
3487+ let lb = makeString([oj[bj], toString(or), toString(os), oj[bm]], "_")
3488+ $Tuple2(([StringEntry(oh, og), StringEntry(jb, makeString_2C([jg[be], jg[bf], jg[bg], of, lb], ":"))] ++ mp), 0)
3489+ }
3490+ }
3491+
3492+
3493+
3494+@Callable(gO)
3495+func initDuckTourAttempt (B) = if ((gO.caller != dm))
35033496 then throw("Access denied")
35043497 else {
3505- let kb = A(B)
3506- let kc = aj(valueOrElse(getInteger(E(B)), 0))
3507- let lv = valueOrElse(getInteger(kb), kc)
3508- let oq = bO(B)
3509- let kq = valueOrElse(getString(oq), aM)
3510- let cj = valueOrElse(getInteger(dl, bU), 0)
3511- let or = (toString(cj) + "_T_0")
3512- $Tuple2([IntegerEntry(K(B), lv), IntegerEntry(kb, kc), StringEntry(L(B), kq), StringEntry(oq, or)], or)
3498+ let ke = A(B)
3499+ let kf = aj(valueOrElse(getInteger(E(B)), 0))
3500+ let ly = valueOrElse(getInteger(ke), kf)
3501+ let ot = bP(B)
3502+ let kt = valueOrElse(getString(ot), aN)
3503+ let ck = valueOrElse(getInteger(dm, bV), 0)
3504+ let ou = (toString(ck) + "_T_0")
3505+ $Tuple2([IntegerEntry(K(B), ly), IntegerEntry(ke, kf), StringEntry(L(B), kt), StringEntry(ot, ou)], ou)
35133506 }
35143507
35153508
35163509
3517-@Callable(gN)
3510+@Callable(gO)
35183511 func breakAttempt () = {
3519- let mm = mi(gN)
3520- let B = valueOrErrorMessage(getString(bM(toString(gN.caller))), "You don't have a duck staked")
3521- let oq = bO(B)
3522- let kq = valueOrElse(getString(oq), aM)
3523- if ((split(kq, "_")[br] != "T"))
3512+ let mp = ml(gO)
3513+ let B = valueOrErrorMessage(getString(bN(toString(gO.caller))), "You don't have a duck staked")
3514+ let ot = bP(B)
3515+ let kt = valueOrElse(getString(ot), aN)
3516+ if ((split(kt, "_")[bs] != "T"))
35243517 then throw("Your duck is not in the tournament")
35253518 else {
3526- let os = getIntegerValue(K(B))
3527- let lB = getStringValue(L(B))
3528- $Tuple2(((mm :+ IntegerEntry(A(B), os)) :+ StringEntry(oq, lB)), kq)
3529- }
3530- }
3531-
3532-
3533-
3534-@Callable(gN)
3535-func exitTournamentInternal (B) = if ((gN.caller != this))
3519+ let ov = getIntegerValue(K(B))
3520+ let lE = getStringValue(L(B))
3521+ $Tuple2(((mp :+ IntegerEntry(A(B), ov)) :+ StringEntry(ot, lE)), kt)
3522+ }
3523+ }
3524+
3525+
3526+
3527+@Callable(gO)
3528+func exitTournamentInternal (B) = if ((gO.caller != this))
35363529 then throw("Access denied")
35373530 else {
3538- let os = getIntegerValue(K(B))
3539- let lB = getStringValue(L(B))
3540- $Tuple2([IntegerEntry(A(B), os), StringEntry(bO(B), lB)], false)
3531+ let ov = getIntegerValue(K(B))
3532+ let lE = getStringValue(L(B))
3533+ $Tuple2([IntegerEntry(A(B), ov), StringEntry(bP(B), lE)], false)
35413534 }
35423535
35433536
35443537
3545-@Callable(gN)
3546-func exitDeliveryInternal (B) = if ((gN.caller != this))
3538+@Callable(gO)
3539+func exitDeliveryInternal (B) = if ((gO.caller != this))
35473540 then throw("Access denied")
35483541 else {
3549- let ni = ls(B, false, 0, 0)
3550- $Tuple2((ni._1 ++ ni._2), false)
3542+ let nl = lv(B, false, 0, 0)
3543+ $Tuple2((nl._1 ++ nl._2), false)
35513544 }
35523545
35533546
35543547
3555-@Callable(gN)
3556-func autoExitDelivery (B,jV,ot,lt) = if ((gN.caller != this))
3548+@Callable(gO)
3549+func autoExitDelivery (B,jY,ow,lw) = if ((gO.caller != this))
35573550 then throw("Access denied")
35583551 else {
3559- let ni = ls(B, true, jV, lt)
3560- $Tuple2(ni._1, ni._3)
3552+ let nl = lv(B, true, jY, lw)
3553+ $Tuple2(nl._1, nl._3)
35613554 }
35623555
35633556
35643557
3565-@Callable(gN)
3566-func breakDelivery () = $Tuple2(mi(gN), "breakDelivery")
3567-
3568-
3569-
3570-@Callable(gN)
3571-func prepareRobbery (jQ,jR) = {
3572- let mm = mi(gN)
3573- if (!(sigVerify_8Kb(jQ, jR, ec)))
3558+@Callable(gO)
3559+func breakDelivery () = $Tuple2(ml(gO), "breakDelivery")
3560+
3561+
3562+
3563+@Callable(gO)
3564+func prepareRobbery (jT,jU) = {
3565+ let mp = ml(gO)
3566+ if (!(sigVerify_8Kb(jT, jU, ed)))
35743567 then throw("signature does not match")
3575- else if ((size(gN.payments) != 1))
3568+ else if ((size(gO.payments) != 1))
35763569 then throw("exactly 1 payment must be attached")
35773570 else {
3578- let mn = gN.payments[0]
3579- let ou = mn.amount
3580- if (if (!(isDefined(mn.assetId)))
3571+ let mq = gO.payments[0]
3572+ let ox = mq.amount
3573+ if (if (!(isDefined(mq.assetId)))
35813574 then true
3582- else (value(mn.assetId) != ds))
3575+ else (value(mq.assetId) != dt))
35833576 then throw("WLGOLD payments only!")
35843577 else {
3585- let fs = split(toUtf8String(jQ), "|")
3586- if ((size(fs) != 2))
3578+ let ft = split(toUtf8String(jT), "|")
3579+ if ((size(ft) != 2))
35873580 then throw("Wrong message format")
35883581 else {
3589- let B = fs[0]
3590- if (lq(B))
3582+ let B = ft[0]
3583+ if (lt(B))
35913584 then throw("prepareRobbery_checkTournament")
3592- else if (lr(B))
3585+ else if (lu(B))
35933586 then throw("prepareRobbery_checkDelivery")
35943587 else {
35953588 let aB = ax(this, B)._1
3596- if ((aB > ou))
3597- then throw(((("Payment " + toString(ou)) + " < required ") + toString(aB)))
3589+ if ((aB > ox))
3590+ then throw(((("Payment " + toString(ox)) + " < required ") + toString(aB)))
35983591 else {
3599- let ov = split(fs[1], "_")
3592+ let oy = split(ft[1], "_")
36003593 let aA = lastBlock.timestamp
36013594 let aC = valueOrElse(getInteger(S(B)), 0)
36023595 let aD = valueOrElse(getString(T(B)), "")
36033596 let aE = valueOrElse(getInteger(R(aD)), 0)
36043597 if (if ((aC != y))
36053598 then (aE > aA)
36063599 else false)
36073600 then throw(("You already started robbing, wait till " + toString(aE)))
36083601 else {
3609- func ow (eU,Q) = {
3610- let ox = valueOrElse(getInteger(P(Q)), 0)
3611- let oy = valueOrElse(getInteger(R(Q)), 0)
3612- if ((ox > size(v)))
3602+ func oz (eV,Q) = {
3603+ let oA = valueOrElse(getInteger(P(Q)), 0)
3604+ let oB = valueOrElse(getInteger(R(Q)), 0)
3605+ if ((oA > size(v)))
36133606 then throw("Invalid state")
3614- else if ((aA > oy))
3607+ else if ((aA > oB))
36153608 then {
3616- let oz = valueOrElse(getInteger(bw(Q)), 0)
3617- if ((0 >= oz))
3618- then eU
3609+ let oC = valueOrElse(getInteger(bx(Q)), 0)
3610+ if ((0 >= oC))
3611+ then eV
36193612 else {
3620- let gu = value(assetInfo(fromBase58String(Q)))
3621- let kw = split(gu.description, "_")
3622- let ki = dK(kw[do])
3623- let oA = kh(Q, ki)
3624- let gT = (aA - oz)
3625- let kz = fraction(gT, (oA * ki), a)
3626- if ((w > kz))
3627- then eU
3628- else (eU :+ Q)
3613+ let gv = value(assetInfo(fromBase58String(Q)))
3614+ let kz = split(gv.description, "_")
3615+ let kl = dL(kz[dp])
3616+ let oD = kk(Q, kl)
3617+ let gU = (aA - oC)
3618+ let kC = fraction(gU, (oD * kl), a)
3619+ if ((w > kC))
3620+ then eV
3621+ else (eV :+ Q)
36293622 }
36303623 }
3631- else eU
3624+ else eV
36323625 }
36333626
3634- let oB = {
3635- let eW = ov
3636- let eX = size(eW)
3637- let eY = nil
3638- func eZ (fa,fb) = if ((fb >= eX))
3639- then fa
3640- else ow(fa, eW[fb])
3641-
3642- func fc (fa,fb) = if ((fb >= eX))
3643- then fa
3627+ let oE = {
3628+ let eX = oy
3629+ let eY = size(eX)
3630+ let eZ = nil
3631+ func fa (fb,fc) = if ((fc >= eY))
3632+ then fb
3633+ else oz(fb, eX[fc])
3634+
3635+ func fd (fb,fc) = if ((fc >= eY))
3636+ then fb
36443637 else throw("List size exceeds 10")
36453638
3646- fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
3639+ fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
36473640 }
3648- if ((size(oB) == 0))
3641+ if ((size(oE) == 0))
36493642 then throw("No candidates for robbery")
36503643 else {
3651- let oC = dV(size(oB), jQ, jR)
3652- let Q = oB[oC]
3653- $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (aA + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ mm), Q)
3644+ let oF = dW(size(oE), jT, jU)
3645+ let Q = oE[oF]
3646+ $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (aA + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ mp), Q)
36543647 }
36553648 }
36563649 }
36573650 }
36583651 }
36593652 }
36603653 }
36613654 }
36623655
36633656
36643657
3665-@Callable(gN)
3666-func robLand (jQ,jR) = {
3667- let mm = mi(gN)
3668- if (!(sigVerify_8Kb(jQ, jR, ec)))
3658+@Callable(gO)
3659+func robLand (jT,jU) = {
3660+ let mp = ml(gO)
3661+ if (!(sigVerify_8Kb(jT, jU, ed)))
36693662 then throw("signature does not match")
36703663 else {
3671- let bQ = toString(gN.caller)
3672- let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked")
3664+ let bR = toString(gO.caller)
3665+ let B = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
36733666 let aA = lastBlock.timestamp
3674- $Tuple2((mm :+ IntegerEntry(N(B), aA)), 0)
3675- }
3676- }
3677-
3678-
3679-
3680-@Callable(gN)
3667+ $Tuple2((mp :+ IntegerEntry(N(B), aA)), 0)
3668+ }
3669+ }
3670+
3671+
3672+
3673+@Callable(gO)
36813674 func acceptDelivery () = {
3682- let mm = mi(gN)
3683- let bQ = toString(gN.caller)
3684- let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked")
3685- let oD = valueOrElse(getInteger(di, bS), 0)
3686- let lz = valueOrElse(getInteger(di, bT), 0)
3687- if ((aP > (oD - lz)))
3688- then throw(((("Delivery is not available, fund=" + dP(oD, 6)) + ", locked=") + dP(lz, 6)))
3675+ let mp = ml(gO)
3676+ let bR = toString(gO.caller)
3677+ let B = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
3678+ let oG = valueOrElse(getInteger(dj, bT), 0)
3679+ let lC = valueOrElse(getInteger(dj, bU), 0)
3680+ if ((aQ > (oG - lC)))
3681+ then throw(((("Delivery is not available, fund=" + dQ(oG, 6)) + ", locked=") + dQ(lC, 6)))
36893682 else {
36903683 let aA = lastBlock.timestamp
3691- let oE = valueOrElse(getInteger(U(B)), 0)
3692- if ((oE > aA))
3693- then throw(("Delivery is forbidden for your duck until " + toString(oE)))
3684+ let oH = valueOrElse(getInteger(U(B)), 0)
3685+ if ((oH > aA))
3686+ then throw(("Delivery is forbidden for your duck until " + toString(oH)))
36943687 else {
36953688 let av = getIntegerValue(A(B))
36963689 if ((0 >= av))
36973690 then throw("You cannot accept delivery with zero health")
36983691 else {
3699- let ly = V(bQ)
3700- let fU = valueOrElse(getInteger(ly), 0)
3701- let oF = valueOrElse(getInteger(W(bQ)), 0)
3702- let oG = (aA / a)
3703- let oH = valueOrElse(getInteger(dm, d(bQ)), 0)
3704- let oI = (aR + (oH / aS))
3705- if (if ((fU >= oI))
3706- then (oF == oG)
3692+ let lB = V(bR)
3693+ let fV = valueOrElse(getInteger(lB), 0)
3694+ let oI = valueOrElse(getInteger(W(bR)), 0)
3695+ let oJ = (aA / a)
3696+ let oK = valueOrElse(getInteger(dn, d(bR)), 0)
3697+ let oL = (aS + (oK / aT))
3698+ if (if ((fV >= oL))
3699+ then (oI == oJ)
37073700 else false)
3708- then throw((("You already used " + toString(oI)) + " delivery attempts for today"))
3709- else if (lq(B))
3701+ then throw((("You already used " + toString(oL)) + " delivery attempts for today"))
3702+ else if (lt(B))
37103703 then throw("acceptDelivery_checkTournament")
3711- else if (lr(B))
3704+ else if (lu(B))
37123705 then throw("acceptDelivery_checkDelivery")
37133706 else {
3714- let oJ = dF(invoke(di, "updateDeliveryLocked", [(lz + aP)], nil))
3715- let oq = bO(B)
3716- let kq = valueOrElse(getString(oq), aM)
3717- let oK = (toString(aA) + "_D_0")
3718- $Tuple2(([StringEntry(L(B), kq), StringEntry(oq, oK), IntegerEntry(ly, if ((oF != oG))
3707+ let oM = dG(invoke(dj, "updateDeliveryLocked", [(lC + aQ)], nil))
3708+ let ot = bP(B)
3709+ let kt = valueOrElse(getString(ot), aN)
3710+ let oN = (toString(aA) + "_D_0")
3711+ $Tuple2(([StringEntry(L(B), kt), StringEntry(ot, oN), IntegerEntry(lB, if ((oI != oJ))
37193712 then 0
3720- else fU)] ++ mm), $Tuple2(oK, oJ))
3713+ else fV)] ++ mp), $Tuple2(oN, oM))
37213714 }
37223715 }
37233716 }
37243717 }
37253718 }
37263719
37273720
37283721
3729-@Callable(gN)
3730-func checkDeliveryCallback (B) = if ((gN.caller != dl))
3722+@Callable(gO)
3723+func checkDeliveryCallback (B) = if ((gO.caller != dm))
37313724 then throw("Access denied")
3732- else $Tuple2(nil, lr(B))
3733-
3734-
3735-
3736-@Callable(gN)
3737-func genTestREADONLY (iz,gK) = {
3738- let oL = value(value(blockInfoByHeight(2827006)).vrf)
3739- let jL = hi(toBigInt((oL + sha256(toBytes(iz)))))
3740- $Tuple2(nil, hz(jL, gK))
3725+ else $Tuple2(nil, lu(B))
3726+
3727+
3728+
3729+@Callable(gO)
3730+func genTestREADONLY (iB,gL) = {
3731+ let oO = value(value(blockInfoByHeight(2827006)).vrf)
3732+ let jO = hj(toBigInt((oO + sha256(toBytes(iB)))))
3733+ $Tuple2(nil, hB(jO, gL, -1))
37413734 }
37423735
37433736

github/deemru/w8io/026f985 
1476.58 ms