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:
Old | New | Differences | |
---|---|---|---|
179 | 179 | ||
180 | 180 | let aI = 6 | |
181 | 181 | ||
182 | - | let aJ = | |
183 | - | ||
184 | - | let aK = | |
185 | - | ||
186 | - | let aL = | |
187 | - | ||
188 | - | let aM = | |
189 | - | ||
190 | - | let aN = | |
191 | - | ||
192 | - | let aO = | |
193 | - | ||
194 | - | let aP = | |
195 | - | ||
196 | - | let aQ = | |
197 | - | ||
198 | - | let aR = | |
199 | - | ||
200 | - | let aS = | |
201 | - | ||
202 | - | let aT = | |
203 | - | ||
204 | - | let aU = [" | |
205 | - | ||
206 | - | let aV = | |
207 | - | ||
208 | - | let aW = | |
209 | - | ||
210 | - | let aX = [ | |
211 | - | ||
212 | - | let aY = | |
213 | - | ||
214 | - | let aZ = | |
215 | - | ||
216 | - | let ba = | |
217 | - | ||
218 | - | let bb = | |
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 | |
219 | 219 | ||
220 | 220 | let bc = 10 | |
221 | 221 | ||
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, "_") | |
347 | 349 | let aA = lastBlock.timestamp | |
348 | - | let | |
349 | - | let | |
350 | - | let | |
351 | - | if (if (if (( | |
352 | - | then (parseIntValue( | |
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) | |
353 | 355 | else false) | |
354 | - | then ( | |
356 | + | then (ch[cd] == "INPROGRESS") | |
355 | 357 | else false) | |
356 | - | then (parseIntValue( | |
358 | + | then (parseIntValue(cg[cc]) > aA) | |
357 | 359 | else false | |
358 | 360 | } | |
359 | 361 | ||
360 | 362 | ||
361 | - | func | |
362 | - | let | |
363 | + | func cn (cj) = { | |
364 | + | let cl = split(cj, "_") | |
363 | 365 | let aA = lastBlock.timestamp | |
364 | - | let | |
365 | - | let | |
366 | - | if (if (( | |
367 | - | then (( | |
366 | + | let co = parseIntValue(cl[br]) | |
367 | + | let cp = parseIntValue(cl[bt]) | |
368 | + | if (if ((cl[bs] == "D")) | |
369 | + | then ((co + aR) > aA) | |
368 | 370 | else false) | |
369 | - | then (3 >= | |
371 | + | then (3 >= cp) | |
370 | 372 | else false | |
371 | 373 | } | |
372 | 374 | ||
373 | 375 | ||
374 | - | func | |
375 | - | let | |
376 | - | if (( | |
377 | - | then ( | |
376 | + | func cq (cj) = { | |
377 | + | let cr = split(cj, "_")[bs] | |
378 | + | if ((cr != "T")) | |
379 | + | then (cr != "D") | |
378 | 380 | else false | |
379 | 381 | } | |
380 | 382 | ||
381 | 383 | ||
382 | - | func | |
383 | - | let | |
384 | - | let | |
384 | + | func cs (cf,cj) = { | |
385 | + | let ck = valueOrElse(getInteger(cf, bV), 0) | |
386 | + | let cl = split(cj, "_") | |
385 | 387 | let aA = lastBlock.timestamp | |
386 | - | let | |
387 | - | let | |
388 | - | let | |
389 | - | let | |
390 | - | if (( | |
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")) | |
391 | 393 | then true | |
392 | - | else if (if (if (( | |
393 | - | then (parseIntValue( | |
394 | + | else if (if (if ((cl[bs] == "T")) | |
395 | + | then (parseIntValue(cl[br]) == ck) | |
394 | 396 | else false) | |
395 | - | then ( | |
397 | + | then (ch[cd] == "INPROGRESS") | |
396 | 398 | else false) | |
397 | - | then (parseIntValue( | |
399 | + | then (parseIntValue(cg[cc]) > aA) | |
398 | 400 | else false | |
399 | 401 | } | |
400 | 402 | ||
401 | 403 | ||
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 | + | ||
409 | 409 | ||
410 | 410 | let cz = false | |
411 | 411 | ||
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)) | |
419 | 421 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
420 | - | else if ((base58'2T' == | |
422 | + | else if ((base58'2T' == cE)) | |
421 | 423 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
422 | 424 | else throw("Unknown chain") | |
423 | 425 | } | |
424 | 426 | ||
425 | - | let | |
426 | - | let | |
427 | - | if ((base58'2W' == | |
427 | + | let cF = { | |
428 | + | let cE = cC | |
429 | + | if ((base58'2W' == cE)) | |
428 | 430 | then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv" | |
429 | - | else if ((base58'2T' == | |
431 | + | else if ((base58'2T' == cE)) | |
430 | 432 | then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy" | |
431 | 433 | else throw("Unknown chain") | |
432 | 434 | } | |
433 | 435 | ||
434 | - | let | |
435 | - | let | |
436 | - | if ((base58'2W' == | |
436 | + | let cG = { | |
437 | + | let cE = cC | |
438 | + | if ((base58'2W' == cE)) | |
437 | 439 | then 10000000000 | |
438 | - | else if ((base58'2T' == | |
440 | + | else if ((base58'2T' == cE)) | |
439 | 441 | then 100000000 | |
440 | 442 | else throw("Unknown chain") | |
441 | 443 | } | |
442 | 444 | ||
443 | - | let | |
444 | - | let | |
445 | - | if ((base58'2W' == | |
446 | - | then | |
447 | - | else if ((base58'2T' == | |
445 | + | let cH = { | |
446 | + | let cE = cC | |
447 | + | if ((base58'2W' == cE)) | |
448 | + | then cB | |
449 | + | else if ((base58'2T' == cE)) | |
448 | 450 | then 60000 | |
449 | 451 | else throw("Unknown chain") | |
450 | 452 | } | |
451 | 453 | ||
452 | - | let | |
453 | - | let | |
454 | - | if ((base58'2W' == | |
454 | + | let cI = { | |
455 | + | let cE = cC | |
456 | + | if ((base58'2W' == cE)) | |
455 | 457 | then 10800000 | |
456 | - | else if ((base58'2T' == | |
458 | + | else if ((base58'2T' == cE)) | |
457 | 459 | then 900000 | |
458 | 460 | else throw("Unknown chain") | |
459 | 461 | } | |
460 | 462 | ||
461 | - | let | |
462 | - | ||
463 | - | let | |
464 | - | ||
465 | - | let | |
466 | - | ||
467 | - | let | |
468 | - | ||
469 | - | let | |
470 | - | ||
471 | - | let | |
472 | - | ||
473 | - | let | |
474 | - | ||
475 | - | let | |
476 | - | ||
477 | - | let | |
478 | - | ||
479 | - | func | |
480 | - | ||
481 | - | ||
482 | - | let | |
483 | - | ||
484 | - | let | |
485 | - | ||
486 | - | let | |
487 | - | ||
488 | - | let | |
489 | - | ||
490 | - | let | |
491 | - | ||
492 | - | let | |
493 | - | ||
494 | - | func | |
495 | - | ||
496 | - | ||
497 | - | func | |
498 | - | ||
499 | - | ||
500 | - | func | |
501 | - | ||
502 | - | ||
503 | - | func | |
504 | - | ||
505 | - | ||
506 | - | let | |
507 | - | ||
508 | - | let | |
509 | - | ||
510 | - | let aq = | |
511 | - | ||
512 | - | let | |
513 | - | ||
514 | - | let | |
515 | - | ||
516 | - | let | |
517 | - | ||
518 | - | let | |
519 | - | ||
520 | - | let | |
521 | - | ||
522 | - | let | |
523 | - | ||
524 | - | let | |
525 | - | ||
526 | - | let | |
527 | - | ||
528 | - | let | |
529 | - | ||
530 | - | let | |
531 | - | ||
532 | - | let | |
533 | - | ||
534 | - | let | |
535 | - | ||
536 | - | let | |
537 | - | ||
538 | - | let | |
539 | - | ||
540 | - | func | |
541 | - | ||
542 | - | ||
543 | - | func | |
544 | - | ||
545 | - | ||
546 | - | func | |
547 | - | ||
548 | - | ||
549 | - | func | |
550 | - | ||
551 | - | ||
552 | - | func | |
553 | - | ||
554 | - | ||
555 | - | func | |
556 | - | let | |
557 | - | if ($isInstanceOf( | |
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")) | |
558 | 560 | then { | |
559 | - | let | |
560 | - | | |
561 | + | let dF = cE | |
562 | + | dF | |
561 | 563 | } | |
562 | 564 | else throw("fail to cast into String") | |
563 | 565 | } | |
564 | 566 | ||
565 | 567 | ||
566 | - | func | |
567 | - | let | |
568 | - | if ($isInstanceOf( | |
568 | + | func dG (dE) = { | |
569 | + | let cE = dE | |
570 | + | if ($isInstanceOf(cE, "Int")) | |
569 | 571 | then { | |
570 | - | let | |
571 | - | | |
572 | + | let dH = cE | |
573 | + | dH | |
572 | 574 | } | |
573 | 575 | else throw("fail to cast into Int") | |
574 | 576 | } | |
575 | 577 | ||
576 | 578 | ||
577 | - | func | |
578 | - | let | |
579 | - | if ($isInstanceOf( | |
579 | + | func dI (dE) = { | |
580 | + | let cE = dE | |
581 | + | if ($isInstanceOf(cE, "List[Any]")) | |
580 | 582 | then { | |
581 | - | let | |
582 | - | | |
583 | + | let dJ = cE | |
584 | + | dJ | |
583 | 585 | } | |
584 | 586 | else throw("fail to cast into List[Any]") | |
585 | 587 | } | |
586 | 588 | ||
587 | 589 | ||
588 | - | func | |
589 | - | let | |
590 | - | if ($isInstanceOf( | |
590 | + | func dK (dE) = { | |
591 | + | let cE = dE | |
592 | + | if ($isInstanceOf(cE, "Boolean")) | |
591 | 593 | then { | |
592 | - | let | |
593 | - | | |
594 | + | let dF = cE | |
595 | + | dF | |
594 | 596 | } | |
595 | 597 | else throw("fail to cast into Boolean") | |
596 | 598 | } | |
597 | 599 | ||
598 | 600 | ||
599 | - | func | |
600 | - | let | |
601 | - | if (("S" == | |
602 | - | then | |
603 | - | else if (("M" == | |
604 | - | then | |
605 | - | else if (("L" == | |
606 | - | then | |
607 | - | else if (("XL" == | |
608 | - | then | |
609 | - | else if (("XXL" == | |
610 | - | then | |
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 | |
611 | 613 | else throw("Unknown land size") | |
612 | 614 | } | |
613 | 615 | ||
614 | 616 | ||
615 | - | func | |
616 | - | ||
617 | - | ||
618 | - | func | |
619 | - | ||
620 | - | ||
621 | - | func | |
622 | - | ||
623 | - | ||
624 | - | func | |
625 | - | let | |
626 | - | let | |
627 | - | let | |
628 | - | (((toString(( | |
629 | - | } | |
630 | - | ||
631 | - | ||
632 | - | func | |
633 | - | let | |
634 | - | (toInt( | |
635 | - | } | |
636 | - | ||
637 | - | ||
638 | - | let | |
639 | - | let | |
640 | - | if ((base58'2W' == | |
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)) | |
641 | 643 | then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv") | |
642 | - | else if ((base58'2T' == | |
644 | + | else if ((base58'2T' == cE)) | |
643 | 645 | then this | |
644 | 646 | else throw("Unknown chain") | |
645 | 647 | } | |
646 | 648 | ||
647 | - | let | |
648 | - | let | |
649 | - | if ((base58'2W' == | |
649 | + | let ec = { | |
650 | + | let cE = cC | |
651 | + | if ((base58'2W' == cE)) | |
650 | 652 | then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb") | |
651 | - | else if ((base58'2T' == | |
653 | + | else if ((base58'2T' == cE)) | |
652 | 654 | then this | |
653 | 655 | else throw("Unknown chain") | |
654 | 656 | } | |
655 | 657 | ||
656 | - | let | |
657 | - | let | |
658 | - | if ((base58'2W' == | |
659 | - | then if ( | |
658 | + | let ed = { | |
659 | + | let cE = cC | |
660 | + | if ((base58'2W' == cE)) | |
661 | + | then if (cz) | |
660 | 662 | then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm' | |
661 | 663 | else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
662 | - | else if ((base58'2T' == | |
664 | + | else if ((base58'2T' == cE)) | |
663 | 665 | then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
664 | 666 | else throw("Unknown chain") | |
665 | 667 | } | |
666 | 668 | ||
667 | - | let | |
668 | - | ||
669 | - | let | |
670 | - | ||
671 | - | let | |
672 | - | ||
673 | - | let | |
674 | - | ||
675 | - | let | |
676 | - | ||
677 | - | let | |
678 | - | let | |
679 | - | if ((base58'2W' == | |
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)) | |
680 | 682 | then 252289527462 | |
681 | - | else if ((base58'2T' == | |
683 | + | else if ((base58'2T' == cE)) | |
682 | 684 | then 2522895274 | |
683 | 685 | else throw("Unknown chain") | |
684 | 686 | } | |
685 | 687 | ||
686 | - | let | |
687 | - | let | |
688 | - | if ((base58'2W' == | |
688 | + | let ek = { | |
689 | + | let cE = cC | |
690 | + | if ((base58'2W' == cE)) | |
689 | 691 | then 250000000 | |
690 | - | else if ((base58'2T' == | |
692 | + | else if ((base58'2T' == cE)) | |
691 | 693 | then 250000000 | |
692 | 694 | else throw("Unknown chain") | |
693 | 695 | } | |
694 | 696 | ||
695 | - | let | |
696 | - | ||
697 | - | let | |
698 | - | ||
699 | - | let | |
700 | - | ||
701 | - | let | |
702 | - | ||
703 | - | let | |
704 | - | ||
705 | - | let | |
706 | - | ||
707 | - | let | |
708 | - | ||
709 | - | let | |
710 | - | ||
711 | - | func | |
712 | - | ||
713 | - | ||
714 | - | func | |
715 | - | ||
716 | - | ||
717 | - | func | |
718 | - | ||
719 | - | ||
720 | - | func | |
721 | - | ||
722 | - | ||
723 | - | func | |
724 | - | ||
725 | - | ||
726 | - | func | |
727 | - | ||
728 | - | ||
729 | - | func | |
730 | - | ||
731 | - | ||
732 | - | func | |
733 | - | ||
734 | - | ||
735 | - | let | |
736 | - | ||
737 | - | let | |
738 | - | ||
739 | - | let | |
740 | - | ||
741 | - | let | |
742 | - | ||
743 | - | let | |
744 | - | ||
745 | - | let | |
746 | - | ||
747 | - | let | |
748 | - | ||
749 | - | func | |
750 | - | ||
751 | - | ||
752 | - | func | |
753 | - | let | |
754 | - | then ((( | |
755 | - | else -((((-( | |
756 | - | ( | |
757 | - | } | |
758 | - | ||
759 | - | ||
760 | - | func | |
761 | - | let | |
762 | - | if ((0 >= | |
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)) | |
763 | 765 | then throw("Zero weights sum") | |
764 | 766 | else { | |
765 | - | let | |
766 | - | func | |
767 | - | ||
768 | - | let | |
769 | - | let | |
770 | - | let | |
771 | - | func | |
772 | - | then | |
773 | - | else | |
774 | - | ||
775 | - | func | |
776 | - | then | |
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 | |
777 | 779 | else throw("List size exceeds 6") | |
778 | 780 | ||
779 | - | | |
780 | - | } | |
781 | - | } | |
782 | - | ||
783 | - | ||
784 | - | func | |
785 | - | let | |
786 | - | if ((size( | |
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)) | |
787 | 789 | then throw("Wrong proportions data") | |
788 | 790 | else { | |
789 | - | let | |
790 | - | | |
791 | - | } | |
792 | - | } | |
793 | - | ||
794 | - | ||
795 | - | func | |
796 | - | let | |
797 | - | func | |
798 | - | let | |
799 | - | if ((0 > | |
800 | - | then throw(((((("Not enough material idx=" + toString( | |
801 | - | else ( | |
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)) | |
802 | 804 | } | |
803 | 805 | ||
804 | - | if ( | |
806 | + | if (fi) | |
805 | 807 | then { | |
806 | - | let | |
807 | - | let | |
808 | - | let | |
809 | - | func | |
810 | - | then | |
811 | - | else | |
812 | - | ||
813 | - | func | |
814 | - | then | |
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 | |
815 | 817 | else throw("List size exceeds 6") | |
816 | 818 | ||
817 | - | | |
818 | - | } | |
819 | - | else | |
820 | - | } | |
821 | - | ||
822 | - | ||
823 | - | func | |
824 | - | then $Tuple2( | |
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) | |
825 | 827 | else { | |
826 | - | func | |
827 | - | let | |
828 | - | if ((size( | |
828 | + | func fr (eV,fs) = { | |
829 | + | let ft = split(fs, ",") | |
830 | + | if ((size(ft) != 2)) | |
829 | 831 | then throw("Incorrect format, should be index,amount") | |
830 | 832 | else { | |
831 | - | let | |
832 | - | if (if ((0 > | |
833 | + | let dh = parseIntValue(ft[0]) | |
834 | + | if (if ((0 > dh)) | |
833 | 835 | then true | |
834 | - | else ( | |
836 | + | else (dh >= size(aY))) | |
835 | 837 | then throw("Unknown product idx") | |
836 | 838 | else { | |
837 | - | let | |
838 | - | let | |
839 | - | if ((size( | |
840 | - | then throw((("You don't have " + | |
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")) | |
841 | 843 | else { | |
842 | - | let | |
843 | - | let | |
844 | + | let fw = fv[1] | |
845 | + | let fx = if (dN(take(drop(fw, 1), 1))) | |
844 | 846 | then 2 | |
845 | 847 | else 1 | |
846 | - | let | |
847 | - | let | |
848 | - | let | |
849 | - | then ( | |
850 | - | else throw(((((("You equipped " + toString( | |
851 | - | $Tuple2((((( | |
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) | |
852 | 854 | then true | |
853 | - | else if (if (( | |
854 | - | then (8 >= | |
855 | + | else if (if ((dh >= 6)) | |
856 | + | then (8 >= dh) | |
855 | 857 | else false) | |
856 | - | then ( | |
858 | + | then (fA == 0) | |
857 | 859 | else false) | |
858 | 860 | } | |
859 | 861 | } | |
860 | 862 | } | |
861 | 863 | } | |
862 | 864 | ||
863 | - | let | |
864 | - | let | |
865 | - | let | |
866 | - | func | |
867 | - | then | |
868 | - | else | |
869 | - | ||
870 | - | func | |
871 | - | then | |
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 | |
872 | 874 | else throw("List size exceeds 10") | |
873 | 875 | ||
874 | - | | |
876 | + | fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
875 | 877 | } | |
876 | 878 | ||
877 | 879 | ||
878 | - | func | |
879 | - | let | |
880 | + | func fB (fC) = { | |
881 | + | let fD = if ((fC == "")) | |
880 | 882 | then nil | |
881 | - | else split_4C( | |
882 | - | func | |
883 | - | let | |
884 | - | let | |
885 | - | then parseIntValue( | |
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]) | |
886 | 888 | else 0 | |
887 | - | ( | |
889 | + | (eV + toBytes(fy)) | |
888 | 890 | } | |
889 | 891 | ||
890 | - | let | |
891 | - | let | |
892 | - | let | |
893 | - | func | |
894 | - | then | |
895 | - | else | |
896 | - | ||
897 | - | func | |
898 | - | then | |
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 | |
899 | 901 | else throw("List size exceeds 50") | |
900 | 902 | ||
901 | - | | |
902 | - | } | |
903 | - | ||
904 | - | ||
905 | - | func | |
906 | - | func | |
907 | - | let | |
908 | - | let | |
909 | - | ( | |
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))) | |
910 | 912 | } | |
911 | 913 | ||
912 | 914 | makeString_2C({ | |
913 | - | let | |
914 | - | let | |
915 | - | let | |
916 | - | func | |
917 | - | then | |
918 | - | else | |
919 | - | ||
920 | - | func | |
921 | - | then | |
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 | |
922 | 924 | else throw("List size exceeds 50") | |
923 | 925 | ||
924 | - | | |
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) | |
925 | 927 | }, "_") | |
926 | 928 | } | |
927 | 929 | ||
928 | 930 | ||
929 | - | func | |
930 | - | func | |
931 | - | let | |
932 | - | then | |
931 | + | func fK (fL,fM) = { | |
932 | + | func fN (eV,fF) = { | |
933 | + | let fO = if ((size(fL) > (7 + fF))) | |
934 | + | then fL[(7 + fF)] | |
933 | 935 | else 0 | |
934 | - | if ((parseIntValue( | |
935 | - | then throw(("Requirement not satisfied: " + k[ | |
936 | + | if ((parseIntValue(fM[fF]) > (fL[fF] + fO))) | |
937 | + | then throw(("Requirement not satisfied: " + k[fF])) | |
936 | 938 | else true | |
937 | 939 | } | |
938 | 940 | ||
939 | - | let | |
940 | - | let | |
941 | - | let | |
942 | - | func | |
943 | - | then | |
944 | - | else | |
945 | - | ||
946 | - | func | |
947 | - | then | |
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 | |
948 | 950 | else throw("List size exceeds 7") | |
949 | 951 | ||
950 | - | | |
951 | - | } | |
952 | - | ||
953 | - | ||
954 | - | func | |
955 | - | let | |
956 | - | if ((size( | |
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)) | |
957 | 959 | then throw("Incorrect format, should be index:amount") | |
958 | - | else if (if (!( | |
959 | - | then (size( | |
960 | + | else if (if (!(fR)) | |
961 | + | then (size(ft[0]) != 2) | |
960 | 962 | else false) | |
961 | 963 | then throw("Product idx should be 2 digits, zero padded") | |
962 | 964 | else { | |
963 | - | let | |
964 | - | let | |
965 | - | if (!(containsElement( | |
966 | - | then throw((("Product '" + | |
967 | - | else if ((0 > | |
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)) | |
968 | 970 | then throw("Count can't be negative") | |
969 | - | else if (( | |
970 | - | then throw(((("Can't put more than " + toString(u)) + " of ") + | |
971 | - | else if (( | |
972 | - | then $Tuple3( | |
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) | |
973 | 975 | else { | |
974 | - | let | |
975 | - | let | |
976 | - | let | |
977 | - | let | |
978 | - | if (if (!( | |
979 | - | then ( | |
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) | |
980 | 982 | else false) | |
981 | - | then throw(((((("You have " + toString( | |
983 | + | then throw(((((("You have " + toString(fy)) + " of ") + aU[fU]) + ", but tried to use ") + toString(fV))) | |
982 | 984 | else { | |
983 | - | let | |
984 | - | then | |
985 | + | let fA = if (if (!(fR)) | |
986 | + | then fK(fL, split(cu[bb], ",")) | |
985 | 987 | else false) | |
986 | - | then ( | |
987 | - | else ( | |
988 | - | let | |
989 | - | $Tuple3((( | |
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)) | |
990 | 992 | } | |
991 | 993 | } | |
992 | 994 | } | |
993 | 995 | } | |
994 | 996 | ||
995 | 997 | ||
996 | - | func | |
997 | - | let | |
998 | - | if ((size( | |
998 | + | func fY (fQ,fD,fR,fZ,ga,gb,fL) = { | |
999 | + | let ft = split(fQ, ":") | |
1000 | + | if ((size(ft) != 2)) | |
999 | 1001 | then throw("Incorrect format, should be index:amount") | |
1000 | - | else if (if (!( | |
1001 | - | then (size( | |
1002 | + | else if (if (!(fR)) | |
1003 | + | then (size(ft[0]) != 2) | |
1002 | 1004 | else false) | |
1003 | 1005 | then throw("Product idx should be 2 digits, zero padded") | |
1004 | 1006 | else { | |
1005 | - | let | |
1006 | - | let | |
1007 | - | if (if ((0 > | |
1007 | + | let fU = parseIntValue(ft[0]) | |
1008 | + | let fV = parseIntValue(ft[1]) | |
1009 | + | if (if ((0 > fU)) | |
1008 | 1010 | then true | |
1009 | - | else ( | |
1011 | + | else (fU >= size(aY))) | |
1010 | 1012 | then throw("Unknown product idx") | |
1011 | - | else if ((0 > | |
1013 | + | else if ((0 > fV)) | |
1012 | 1014 | then throw("Count can't be negative") | |
1013 | - | else if (( | |
1014 | - | then throw(((("Can't put more than " + toString(u)) + " of ") + | |
1015 | - | else if (( | |
1016 | - | then $Tuple2( | |
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) | |
1017 | 1019 | else { | |
1018 | - | let | |
1019 | - | let | |
1020 | - | let | |
1021 | - | let | |
1022 | - | if (if (!( | |
1023 | - | then ( | |
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) | |
1024 | 1026 | else false) | |
1025 | - | then throw(((((("You have " + toString( | |
1027 | + | then throw(((((("You have " + toString(fy)) + " of ") + aU[fU]) + ", but tried to use ") + toString(fV))) | |
1026 | 1028 | else { | |
1027 | - | let | |
1028 | - | then | |
1029 | + | let gc = if (if (!(fR)) | |
1030 | + | then fK(fL, split(cu[bb], ",")) | |
1029 | 1031 | else false) | |
1030 | 1032 | then { | |
1031 | - | let | |
1032 | - | if (( | |
1033 | + | let gd = cu[bc] | |
1034 | + | if ((gd == "")) | |
1033 | 1035 | then throw("Item cannot be equipped") | |
1034 | 1036 | else { | |
1035 | - | let | |
1036 | - | let | |
1037 | - | if (( | |
1037 | + | let ge = parseIntValue(gd) | |
1038 | + | let gf = (ge / 100) | |
1039 | + | if ((fZ != gf)) | |
1038 | 1040 | then throw("Segment incompatible") | |
1039 | 1041 | else { | |
1040 | - | let | |
1041 | - | if (( | |
1042 | + | let gg = ((ge % 100) / 10) | |
1043 | + | if ((ga != gg)) | |
1042 | 1044 | then throw("Slot incompatible") | |
1043 | 1045 | else { | |
1044 | - | let | |
1045 | - | if (if (( | |
1046 | - | then ( | |
1046 | + | let gh = (ge % 10) | |
1047 | + | if (if ((gb != 0)) | |
1048 | + | then (gh > 1) | |
1047 | 1049 | else false) | |
1048 | 1050 | then throw("Big items should occupy slot 0") | |
1049 | - | else ( | |
1051 | + | else (gh > 1) | |
1050 | 1052 | } | |
1051 | 1053 | } | |
1052 | 1054 | } | |
1053 | 1055 | } | |
1054 | 1056 | else false | |
1055 | - | $Tuple2((( | |
1056 | - | then | |
1057 | - | else -( | |
1057 | + | $Tuple2(((fW + toBytes((fy + (if (fR) | |
1058 | + | then fV | |
1059 | + | else -(fV))))) + fz), gc) | |
1058 | 1060 | } | |
1059 | 1061 | } | |
1060 | 1062 | } | |
1061 | 1063 | } | |
1062 | 1064 | ||
1063 | 1065 | ||
1064 | - | func | |
1066 | + | func gi (gj,gk,fR,fZ,ga,gl) = if ((gj != "")) | |
1065 | 1067 | then { | |
1066 | - | let | |
1067 | - | if ((size( | |
1068 | + | let gm = split(gj, ",") | |
1069 | + | if ((size(gm) > t)) | |
1068 | 1070 | then throw("Wrong slots format") | |
1069 | 1071 | else { | |
1070 | - | let | |
1071 | - | let | |
1072 | - | then | |
1072 | + | let gn = gm[0] | |
1073 | + | let go = if ((size(gm) > 1)) | |
1074 | + | then gm[1] | |
1073 | 1075 | else "" | |
1074 | - | if (if (( | |
1075 | - | then ( | |
1076 | + | if (if ((gn == "")) | |
1077 | + | then (go == "") | |
1076 | 1078 | else false) | |
1077 | - | then | |
1079 | + | then gk | |
1078 | 1080 | else { | |
1079 | - | let | |
1080 | - | then | |
1081 | - | else $Tuple2( | |
1082 | - | if (( | |
1083 | - | then if ( | |
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) | |
1084 | 1086 | then throw("Big item already occupies slot") | |
1085 | - | else | |
1086 | - | else | |
1087 | + | else fY(go, gp._1, fR, fZ, ga, 1, gl)._1 | |
1088 | + | else gp._1 | |
1087 | 1089 | } | |
1088 | 1090 | } | |
1089 | 1091 | } | |
1090 | - | else | |
1091 | - | ||
1092 | - | ||
1093 | - | func | |
1094 | - | func | |
1095 | - | let | |
1096 | - | let | |
1097 | - | if ((size( | |
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)) | |
1098 | 1100 | then throw("Wrong segment format") | |
1099 | 1101 | else { | |
1100 | - | let | |
1101 | - | let | |
1102 | - | if (if (( | |
1103 | - | then ( | |
1102 | + | let gu = ga[0] | |
1103 | + | let gv = ga[1] | |
1104 | + | if (if ((gu == "")) | |
1105 | + | then (gv == "") | |
1104 | 1106 | else false) | |
1105 | - | then $Tuple2(( | |
1107 | + | then $Tuple2((fF + 1), eV._2) | |
1106 | 1108 | else { | |
1107 | - | let | |
1108 | - | $Tuple2(( | |
1109 | + | let gw = gi(gu, eV._2, fR, fF, 0, gl) | |
1110 | + | $Tuple2((fF + 1), gi(gv, gw, fR, fF, 1, gl)) | |
1109 | 1111 | } | |
1110 | 1112 | } | |
1111 | 1113 | } | |
1112 | 1114 | ||
1113 | - | ( let | |
1114 | - | let | |
1115 | - | let | |
1116 | - | func | |
1117 | - | then | |
1118 | - | else | |
1119 | - | ||
1120 | - | func | |
1121 | - | then | |
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 | |
1122 | 1124 | else throw("List size exceeds 6") | |
1123 | 1125 | ||
1124 | - | | |
1125 | - | } | |
1126 | - | ||
1127 | - | ||
1128 | - | func | |
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))) | |
1129 | 1131 | then throw("At least duck, mines and traps parts are required") | |
1130 | 1132 | else { | |
1131 | - | func | |
1132 | - | let | |
1133 | - | if (( | |
1134 | - | then $Tuple4(( | |
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) | |
1135 | 1137 | else { | |
1136 | - | let | |
1137 | - | $Tuple4(( | |
1138 | + | let gy = fP(gt, eV._2, fR, fL, eV._3, eV._4) | |
1139 | + | $Tuple4((fF + 1), gy._1, gy._2, gy._3) | |
1138 | 1140 | } | |
1139 | 1141 | } | |
1140 | 1142 | ||
1141 | - | let | |
1142 | - | let | |
1143 | - | let | |
1144 | - | let | |
1145 | - | func | |
1146 | - | then | |
1147 | - | else | |
1148 | - | ||
1149 | - | func | |
1150 | - | then | |
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 | |
1151 | 1153 | else throw("List size exceeds 10") | |
1152 | 1154 | ||
1153 | - | | |
1154 | - | } | |
1155 | - | $Tuple3( | |
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) | |
1156 | 1158 | } | |
1157 | 1159 | ||
1158 | 1160 | ||
1159 | - | func | |
1160 | - | let | |
1161 | - | let | |
1162 | - | let | |
1163 | - | let | |
1164 | - | let ar = if (( | |
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 == "")) | |
1165 | 1167 | then 0 | |
1166 | 1168 | else { | |
1167 | - | let | |
1168 | - | if (( | |
1169 | + | let gF = split(gE, ",")[0] | |
1170 | + | if ((gF == "")) | |
1169 | 1171 | then 0 | |
1170 | 1172 | else { | |
1171 | - | let | |
1172 | - | let | |
1173 | - | let | |
1174 | - | if (if (if (if (if (( | |
1173 | + | let fQ = split(gF, ":") | |
1174 | + | let dh = fQ[0] | |
1175 | + | let gG = fQ[1] | |
1176 | + | if (if (if (if (if ((dh == "06")) | |
1175 | 1177 | then true | |
1176 | - | else ( | |
1178 | + | else (dh == "07")) | |
1177 | 1179 | then true | |
1178 | - | else ( | |
1179 | - | then ( | |
1180 | + | else (dh == "08")) | |
1181 | + | then (gG != "") | |
1180 | 1182 | else false) | |
1181 | - | then (parseIntValue( | |
1183 | + | then (parseIntValue(gG) > 0) | |
1182 | 1184 | else false) | |
1183 | - | then parseIntValue(split( | |
1185 | + | then parseIntValue(split(aY[parseIntValue(dh)], "_")[ba]) | |
1184 | 1186 | else 0 | |
1185 | 1187 | } | |
1186 | 1188 | } | |
1187 | - | let | |
1188 | - | let | |
1189 | - | ( | |
1190 | - | } | |
1191 | - | ||
1192 | - | ||
1193 | - | func | |
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)) | |
1194 | 1196 | then throw("Wrong proportions data") | |
1195 | 1197 | else { | |
1196 | - | func | |
1197 | - | let | |
1198 | - | if ((0 > | |
1199 | - | then throw(((((((("Panic! Pieces of type=" + toString( | |
1200 | - | else ( | |
1201 | - | } | |
1202 | - | ||
1203 | - | let | |
1204 | - | let | |
1205 | - | let | |
1206 | - | func | |
1207 | - | then | |
1208 | - | else | |
1209 | - | ||
1210 | - | func | |
1211 | - | then | |
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 | |
1212 | 1214 | else throw("List size exceeds 6") | |
1213 | 1215 | ||
1214 | - | | |
1216 | + | fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1215 | 1217 | } | |
1216 | 1218 | ||
1217 | 1219 | ||
1218 | - | func | |
1219 | - | let | |
1220 | - | makeString( | |
1221 | - | } | |
1222 | - | ||
1223 | - | ||
1224 | - | func | |
1225 | - | ||
1226 | - | ||
1227 | - | func | |
1228 | - | func | |
1229 | - | let | |
1230 | - | ( | |
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))) | |
1231 | 1233 | } | |
1232 | 1234 | ||
1233 | - | let | |
1234 | - | let | |
1235 | - | let | |
1236 | - | let | |
1237 | - | func | |
1238 | - | then | |
1239 | - | else | |
1240 | - | ||
1241 | - | func | |
1242 | - | then | |
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 | |
1243 | 1245 | else throw("List size exceeds 6") | |
1244 | 1246 | ||
1245 | - | | |
1247 | + | fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1246 | 1248 | } | |
1247 | - | makeString( | |
1248 | - | } | |
1249 | - | ||
1250 | - | ||
1251 | - | func | |
1252 | - | func | |
1253 | - | let | |
1254 | - | $Tuple2(( | |
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)) | |
1255 | 1257 | } | |
1256 | 1258 | ||
1257 | - | let | |
1258 | - | let | |
1259 | - | let | |
1260 | - | func | |
1261 | - | then | |
1262 | - | else | |
1263 | - | ||
1264 | - | func | |
1265 | - | then | |
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 | |
1266 | 1268 | else throw("List size exceeds 6") | |
1267 | 1269 | ||
1268 | - | | |
1269 | - | } | |
1270 | - | ||
1271 | - | ||
1272 | - | func | |
1273 | - | let | |
1274 | - | let | |
1275 | - | if (( | |
1276 | - | then $Tuple2(makeString( | |
1277 | - | else if (( | |
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)) | |
1278 | 1280 | then { | |
1279 | - | func | |
1280 | - | ||
1281 | - | let | |
1282 | - | let | |
1283 | - | let | |
1284 | - | let | |
1285 | - | func | |
1286 | - | then | |
1287 | - | else | |
1288 | - | ||
1289 | - | func | |
1290 | - | then | |
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 | |
1291 | 1293 | else throw("List size exceeds 6") | |
1292 | 1294 | ||
1293 | - | | |
1295 | + | fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1294 | 1296 | } | |
1295 | - | $Tuple2(makeString( | |
1297 | + | $Tuple2(makeString(fg, "_"), makeString(hb, "_")) | |
1296 | 1298 | } | |
1297 | 1299 | else { | |
1298 | - | func | |
1299 | - | let | |
1300 | - | $Tuple2(( | |
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)))) | |
1301 | 1303 | } | |
1302 | 1304 | ||
1303 | - | let | |
1304 | - | let | |
1305 | - | let | |
1306 | - | let | |
1307 | - | func | |
1308 | - | then | |
1309 | - | else | |
1310 | - | ||
1311 | - | func | |
1312 | - | then | |
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 | |
1313 | 1315 | else throw("List size exceeds 6") | |
1314 | 1316 | ||
1315 | - | | |
1317 | + | fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1316 | 1318 | } | |
1317 | - | $Tuple2(makeString( | |
1319 | + | $Tuple2(makeString(fg._1, "_"), makeString(fg._2, "_")) | |
1318 | 1320 | } | |
1319 | 1321 | } | |
1320 | 1322 | ||
1321 | 1323 | ||
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)) | |
1337 | 1341 | then throw("maxRand should be non-zero") | |
1338 | 1342 | else { | |
1339 | - | let | |
1340 | - | $Tuple2(toInt(( | |
1343 | + | let hu = toBigInt(hs) | |
1344 | + | $Tuple2(toInt((ht % hu)), (ht / hu)) | |
1341 | 1345 | } | |
1342 | 1346 | ||
1343 | 1347 | ||
1344 | - | func | |
1345 | - | func | |
1346 | - | then | |
1348 | + | func hv (hw,hx,hy) = { | |
1349 | + | func hz (eV,hq) = if (eV._1) | |
1350 | + | then eV | |
1347 | 1351 | else { | |
1348 | - | let | |
1349 | - | if ((0 > | |
1350 | - | then $Tuple3(true, | |
1351 | - | else $Tuple3(false, ( | |
1352 | - | } | |
1353 | - | ||
1354 | - | let | |
1355 | - | let | |
1356 | - | let | |
1357 | - | let | |
1358 | - | func | |
1359 | - | then | |
1360 | - | else | |
1361 | - | ||
1362 | - | func | |
1363 | - | then | |
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 | |
1364 | 1368 | else throw("List size exceeds 6") | |
1365 | 1369 | ||
1366 | - | | |
1370 | + | fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1367 | 1371 | } | |
1368 | - | | |
1369 | - | } | |
1370 | - | ||
1371 | - | ||
1372 | - | func | |
1373 | - | func | |
1374 | - | let | |
1375 | - | let | |
1376 | - | let | |
1377 | - | let | |
1378 | - | let | |
1379 | - | func | |
1380 | - | then | |
1381 | - | else | |
1382 | - | ||
1383 | - | func | |
1384 | - | then | |
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 | |
1385 | 1389 | else throw("List size exceeds 6") | |
1386 | 1390 | ||
1387 | - | | |
1388 | - | } | |
1389 | - | $Tuple2(( | |
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)) | |
1390 | 1394 | } | |
1391 | 1395 | ||
1392 | - | let | |
1393 | - | let | |
1394 | - | let | |
1395 | - | let | |
1396 | - | func | |
1397 | - | then | |
1398 | - | else | |
1399 | - | ||
1400 | - | func | |
1401 | - | then | |
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 | |
1402 | 1406 | else throw("List size exceeds 5") | |
1403 | 1407 | ||
1404 | - | | |
1408 | + | fd(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5) | |
1405 | 1409 | } | |
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) | |
1432 | 1442 | } | |
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 | |
1451 | 1459 | else throw("List size exceeds 6") | |
1452 | 1460 | ||
1453 | - | | |
1461 | + | hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1454 | 1462 | } | |
1455 | - | let | |
1456 | - | func | |
1457 | - | func | |
1458 | - | ||
1459 | - | let | |
1460 | - | let | |
1461 | - | let | |
1462 | - | let | |
1463 | - | func | |
1464 | - | then | |
1465 | - | else | |
1466 | - | ||
1467 | - | func | |
1468 | - | then | |
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 | |
1469 | 1477 | else throw("List size exceeds 6") | |
1470 | 1478 | ||
1471 | - | | |
1472 | - | } | |
1473 | - | let | |
1474 | - | func | |
1475 | - | let | |
1476 | - | $Tuple2(( | |
1477 | - | } | |
1478 | - | ||
1479 | - | let | |
1480 | - | let | |
1481 | - | let | |
1482 | - | let | |
1483 | - | func | |
1484 | - | then | |
1485 | - | else | |
1486 | - | ||
1487 | - | func | |
1488 | - | then | |
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 | |
1489 | 1497 | else throw("List size exceeds 6") | |
1490 | 1498 | ||
1491 | - | | |
1492 | - | } | |
1493 | - | let | |
1494 | - | let | |
1495 | - | let | |
1496 | - | let | |
1497 | - | then | |
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) | |
1498 | 1506 | else { | |
1499 | - | let | |
1500 | - | let | |
1501 | - | let | |
1502 | - | $Tuple2( | |
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) | |
1503 | 1511 | } | |
1504 | - | let | |
1505 | - | let | |
1506 | - | func | |
1507 | - | then | |
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 | |
1508 | 1516 | else 0))) | |
1509 | 1517 | ||
1510 | - | let | |
1511 | - | let | |
1512 | - | let | |
1513 | - | let | |
1514 | - | func | |
1515 | - | then | |
1516 | - | else | |
1517 | - | ||
1518 | - | func | |
1519 | - | then | |
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 | |
1520 | 1528 | else throw("List size exceeds 6") | |
1521 | 1529 | ||
1522 | - | | |
1523 | - | } | |
1524 | - | $Tuple4(( | |
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) | |
1525 | 1533 | } | |
1526 | 1534 | ||
1527 | - | let | |
1528 | - | let | |
1529 | - | let | |
1530 | - | let | |
1531 | - | func | |
1532 | - | then | |
1533 | - | else | |
1534 | - | ||
1535 | - | func | |
1536 | - | then | |
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 | |
1537 | 1545 | else throw("List size exceeds 25") | |
1538 | 1546 | ||
1539 | - | | |
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) | |
1540 | 1548 | } | |
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)) | |
1565 | 1558 | then "A" | |
1566 | - | else if (( | |
1559 | + | else if ((iy[1] > hA)) | |
1567 | 1560 | then "B" | |
1568 | - | else if (( | |
1561 | + | else if ((iy[2] > hA)) | |
1569 | 1562 | then "C" | |
1570 | - | else if (( | |
1563 | + | else if ((iy[3] > hA)) | |
1571 | 1564 | then "D" | |
1572 | - | else if (( | |
1565 | + | else if ((iy[4] > hA)) | |
1573 | 1566 | then "E" | |
1574 | 1567 | else "F" | |
1575 | - | | |
1576 | - | } | |
1577 | - | ||
1578 | - | ||
1579 | - | func | |
1580 | - | let | |
1581 | - | func | |
1582 | - | ||
1583 | - | let | |
1584 | - | let | |
1585 | - | let | |
1586 | - | let | |
1587 | - | func | |
1588 | - | then | |
1589 | - | else | |
1590 | - | ||
1591 | - | func | |
1592 | - | then | |
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 | |
1593 | 1586 | else throw("List size exceeds 5") | |
1594 | 1587 | ||
1595 | - | | |
1588 | + | fd(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5) | |
1596 | 1589 | } | |
1597 | - | | |
1598 | - | } | |
1599 | - | ||
1600 | - | ||
1601 | - | func | |
1602 | - | func | |
1603 | - | let | |
1604 | - | let | |
1605 | - | let | |
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)) | |
1606 | 1599 | then 0 | |
1607 | - | else if (( | |
1608 | - | then ( | |
1609 | - | else if (( | |
1600 | + | else if ((hq >= (4 * gL))) | |
1601 | + | then (hq / gL) | |
1602 | + | else if ((hq > (3 * gL))) | |
1610 | 1603 | then 3 | |
1611 | - | else ((( | |
1612 | - | $Tuple3(( | |
1604 | + | else (((hq - 1) / gL) + 1) | |
1605 | + | $Tuple3((eV._1 :+ hk), (eV._2 + 1), (eV._3 + hk)) | |
1613 | 1606 | } | |
1614 | 1607 | ||
1615 | - | let | |
1616 | - | let | |
1617 | - | let | |
1618 | - | let | |
1619 | - | func | |
1620 | - | then | |
1621 | - | else | |
1622 | - | ||
1623 | - | func | |
1624 | - | then | |
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 | |
1625 | 1618 | else throw("List size exceeds 6") | |
1626 | 1619 | ||
1627 | - | | |
1620 | + | fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1628 | 1621 | } | |
1629 | - | let | |
1630 | - | let | |
1631 | - | let | |
1632 | - | func | |
1633 | - | let | |
1634 | - | then | |
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 | |
1635 | 1628 | else 0)) | |
1636 | - | let | |
1629 | + | let dV = if ((dR == 0)) | |
1637 | 1630 | then nil | |
1638 | - | else split(drop(toString(pow(10, 0, | |
1639 | - | let | |
1640 | - | func | |
1641 | - | ||
1642 | - | let | |
1643 | - | let | |
1644 | - | let | |
1645 | - | let | |
1646 | - | func | |
1647 | - | then | |
1648 | - | else | |
1649 | - | ||
1650 | - | func | |
1651 | - | then | |
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 | |
1652 | 1645 | else throw("List size exceeds 25") | |
1653 | 1646 | ||
1654 | - | | |
1655 | - | } | |
1656 | - | ( | |
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) | |
1657 | 1650 | } | |
1658 | 1651 | ||
1659 | - | let | |
1660 | - | let | |
1661 | - | let | |
1662 | - | let | |
1663 | - | func | |
1664 | - | then | |
1665 | - | else | |
1666 | - | ||
1667 | - | func | |
1668 | - | then | |
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 | |
1669 | 1662 | else throw("List size exceeds 6") | |
1670 | 1663 | ||
1671 | - | | |
1664 | + | hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1672 | 1665 | } | |
1673 | - | func | |
1674 | - | ||
1675 | - | let | |
1676 | - | let | |
1677 | - | let | |
1678 | - | func | |
1679 | - | then | |
1680 | - | else | |
1681 | - | ||
1682 | - | func | |
1683 | - | then | |
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 | |
1684 | 1677 | else throw("List size exceeds 25") | |
1685 | 1678 | ||
1686 | - | | |
1687 | - | } | |
1688 | - | ||
1689 | - | ||
1690 | - | func | |
1691 | - | let | |
1692 | - | [toString(valueOrElse(parseInt( | |
1693 | - | then | |
1694 | - | else "0_0_0_0_0_0", if ((size(split( | |
1695 | - | then | |
1696 | - | else "0_0_0_0_0_0", | |
1697 | - | } | |
1698 | - | ||
1699 | - | ||
1700 | - | func | |
1701 | - | let | |
1702 | - | (( | |
1703 | - | } | |
1704 | - | ||
1705 | - | ||
1706 | - | func | |
1707 | - | let | |
1708 | - | func | |
1709 | - | ||
1710 | - | func | |
1711 | - | let | |
1712 | - | let | |
1713 | - | $Tuple2(( | |
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))) | |
1714 | 1707 | } | |
1715 | 1708 | ||
1716 | - | let | |
1717 | - | let | |
1718 | - | let | |
1719 | - | let | |
1720 | - | func | |
1721 | - | then | |
1722 | - | else | |
1723 | - | ||
1724 | - | func | |
1725 | - | then | |
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 | |
1726 | 1719 | else throw("List size exceeds 6") | |
1727 | 1720 | ||
1728 | - | | |
1721 | + | fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1729 | 1722 | } | |
1730 | - | let | |
1731 | - | let | |
1732 | - | let | |
1733 | - | let | |
1734 | - | func | |
1735 | - | then | |
1736 | - | else | |
1737 | - | ||
1738 | - | func | |
1739 | - | then | |
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 | |
1740 | 1733 | else throw("List size exceeds 6") | |
1741 | 1734 | ||
1742 | - | | |
1735 | + | hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1743 | 1736 | } | |
1744 | - | let | |
1737 | + | let iZ = if ((iT == "")) | |
1745 | 1738 | then 0 | |
1746 | - | else ( let | |
1747 | - | let | |
1748 | - | let | |
1749 | - | func | |
1750 | - | then | |
1751 | - | else | |
1752 | - | ||
1753 | - | func | |
1754 | - | then | |
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 | |
1755 | 1748 | else throw("List size exceeds 50") | |
1756 | 1749 | ||
1757 | - | | |
1758 | - | (( | |
1759 | - | } | |
1760 | - | ||
1761 | - | ||
1762 | - | func | |
1763 | - | let | |
1764 | - | let | |
1765 | - | let | |
1766 | - | let | |
1767 | - | let | |
1768 | - | let | |
1769 | - | then makeString(["0", toString( | |
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)], "_") | |
1770 | 1763 | else { | |
1771 | - | let | |
1772 | - | let | |
1773 | - | let | |
1774 | - | then parseIntValue( | |
1775 | - | else | |
1776 | - | makeString([toString( | |
1777 | - | } | |
1778 | - | [ | |
1779 | - | then | |
1780 | - | else "0_0_0_0_0_0", if ((size(split( | |
1781 | - | then | |
1782 | - | else "0_0_0_0_0_0", | |
1783 | - | } | |
1784 | - | ||
1785 | - | ||
1786 | - | func | |
1787 | - | let | |
1788 | - | let | |
1789 | - | (( | |
1790 | - | } | |
1791 | - | ||
1792 | - | ||
1793 | - | func | |
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)) | |
1794 | 1787 | then throw("cargoListStr should contain exactly 2 ':' separators") | |
1795 | 1788 | else { | |
1796 | - | let | |
1797 | - | let | |
1798 | - | let | |
1789 | + | let js = split(jq[0], "_") | |
1790 | + | let jt = split(jq[1], "_") | |
1791 | + | let ju = if ((jq[2] == "")) | |
1799 | 1792 | then nil | |
1800 | - | else split_4C( | |
1801 | - | if ((size( | |
1793 | + | else split_4C(jq[2], "_") | |
1794 | + | if ((size(js) != aI)) | |
1802 | 1795 | then throw("All 6 resources should be passed") | |
1803 | - | else if ((size( | |
1796 | + | else if ((size(jt) != aI)) | |
1804 | 1797 | then throw("All 6 materials should be passed") | |
1805 | 1798 | else { | |
1806 | - | let | |
1807 | - | let | |
1808 | - | let | |
1809 | - | let | |
1799 | + | let hd = jm(iS) | |
1800 | + | let jv = split(iS[bf], "_") | |
1801 | + | let jw = split(iS[bg], "_") | |
1802 | + | let jx = if ((iS[bh] == "")) | |
1810 | 1803 | then nil | |
1811 | - | else split_4C( | |
1812 | - | let | |
1813 | - | let | |
1814 | - | let | |
1804 | + | else split_4C(iS[bh], "_") | |
1805 | + | let hb = split(jr[bo], "_") | |
1806 | + | let jy = split(jr[bp], "_") | |
1807 | + | let jz = if ((jr[bq] == "")) | |
1815 | 1808 | then nil | |
1816 | - | else split_4C( | |
1817 | - | func | |
1818 | - | let | |
1819 | - | let | |
1820 | - | let | |
1821 | - | let | |
1822 | - | if (( | |
1823 | - | then $Tuple4(( | |
1824 | - | else if (( | |
1825 | - | then if (( | |
1826 | - | then throw((((("Attempt to take " + | |
1827 | - | else $Tuple4(( | |
1828 | - | else if ((-( | |
1829 | - | then throw((((("Attempt to take " + toString(-( | |
1830 | - | else $Tuple4(( | |
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)) | |
1831 | 1824 | } | |
1832 | 1825 | ||
1833 | - | let | |
1834 | - | let | |
1835 | - | let | |
1836 | - | let | |
1837 | - | func | |
1838 | - | then | |
1839 | - | else | |
1840 | - | ||
1841 | - | func | |
1842 | - | then | |
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 | |
1843 | 1836 | else throw("List size exceeds 6") | |
1844 | 1837 | ||
1845 | - | | |
1838 | + | fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1846 | 1839 | } | |
1847 | - | func | |
1848 | - | let | |
1849 | - | let | |
1850 | - | let | |
1851 | - | let | |
1852 | - | if (( | |
1853 | - | then $Tuple4(( | |
1854 | - | else if (( | |
1855 | - | then if (( | |
1856 | - | then throw((((("Attempt to take " + | |
1857 | - | else $Tuple4(( | |
1858 | - | else if ((-( | |
1859 | - | then throw((((("Attempt to take " + toString(-( | |
1860 | - | else $Tuple4(( | |
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)) | |
1861 | 1854 | } | |
1862 | 1855 | ||
1863 | - | let | |
1864 | - | let | |
1865 | - | let | |
1866 | - | let | |
1867 | - | func | |
1868 | - | then | |
1869 | - | else | |
1870 | - | ||
1871 | - | func | |
1872 | - | then | |
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 | |
1873 | 1866 | else throw("List size exceeds 6") | |
1874 | 1867 | ||
1875 | - | | |
1868 | + | hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1876 | 1869 | } | |
1877 | - | func | |
1878 | - | let | |
1879 | - | let | |
1880 | - | let | |
1881 | - | then parseIntValue( | |
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]) | |
1882 | 1875 | else 0 | |
1883 | - | let | |
1884 | - | then parseIntValue( | |
1876 | + | let jJ = if ((size(jz) > gO)) | |
1877 | + | then parseIntValue(jz[gO]) | |
1885 | 1878 | else 0 | |
1886 | - | if (( | |
1887 | - | then $Tuple4(( | |
1888 | - | else if (( | |
1889 | - | then if (( | |
1890 | - | then throw((((("Attempt to take " + | |
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")) | |
1891 | 1884 | else { | |
1892 | - | let | |
1893 | - | $Tuple4(( | |
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)) | |
1894 | 1887 | } | |
1895 | - | else if ((-( | |
1896 | - | then throw((((("Attempt to take " + toString(-( | |
1888 | + | else if ((-(jB) > jI)) | |
1889 | + | then throw((((("Attempt to take " + toString(-(jB))) + " from warehouse, but only ") + toString(jI)) + " available")) | |
1897 | 1890 | else { | |
1898 | - | let | |
1899 | - | $Tuple4(( | |
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)) | |
1900 | 1893 | } | |
1901 | 1894 | } | |
1902 | 1895 | ||
1903 | - | let | |
1896 | + | let gy = if ((size(ju) != 0)) | |
1904 | 1897 | then { | |
1905 | - | let | |
1906 | - | let | |
1907 | - | let | |
1908 | - | func | |
1909 | - | then | |
1910 | - | else | |
1911 | - | ||
1912 | - | func | |
1913 | - | then | |
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 | |
1914 | 1907 | else throw("List size exceeds 50") | |
1915 | 1908 | ||
1916 | - | | |
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) | |
1917 | 1910 | } | |
1918 | - | else $Tuple4(0, | |
1919 | - | let | |
1920 | - | if (( | |
1921 | - | then throw((((("Attempt to put total " + toString( | |
1922 | - | else $Tuple7(makeString( | |
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) | |
1923 | 1916 | } | |
1924 | 1917 | } | |
1925 | 1918 | ||
1926 | 1919 | ||
1927 | - | func | |
1928 | - | let | |
1929 | - | let | |
1930 | - | let | |
1931 | - | let | |
1932 | - | let | |
1933 | - | let | |
1934 | - | let | |
1935 | - | let | |
1936 | - | let | |
1937 | - | let | |
1938 | - | $Tuple2([IntegerEntry( | |
1939 | - | } | |
1940 | - | ||
1941 | - | ||
1942 | - | func | |
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))) | |
1943 | 1936 | then throw("signature does not match") | |
1944 | 1937 | else { | |
1945 | - | let | |
1946 | - | let | |
1947 | - | let | |
1948 | - | let | |
1949 | - | let | |
1950 | - | let | |
1951 | - | let | |
1952 | - | let | |
1953 | - | if (if (( | |
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))) | |
1954 | 1947 | then true | |
1955 | - | else ((lastBlock.timestamp - | |
1956 | - | then throw(((("signature outdated: logTime=" + toString( | |
1948 | + | else ((lastBlock.timestamp - ef) > kb)) | |
1949 | + | then throw(((("signature outdated: logTime=" + toString(kb)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
1957 | 1950 | else { | |
1958 | - | let | |
1959 | - | let | |
1960 | - | if (( | |
1961 | - | then throw(((("Tx ids don't match! In state: " + | |
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)) | |
1962 | 1955 | else { | |
1963 | - | let B = valueOrErrorMessage(getString( | |
1964 | - | let | |
1965 | - | let | |
1966 | - | let | |
1967 | - | if (( | |
1968 | - | then throw(((("oldHealth=" + toString( | |
1969 | - | else if ((0 >= | |
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)) | |
1970 | 1963 | then throw("You can't fly with zero health") | |
1971 | - | else if (!( | |
1964 | + | else if (!(gA(B))) | |
1972 | 1965 | then throw("Equipment incompatible") | |
1973 | 1966 | else { | |
1974 | - | let | |
1975 | - | then | |
1967 | + | let kh = if ((size(jV) > eI)) | |
1968 | + | then jV[eI] | |
1976 | 1969 | else "" | |
1977 | - | let | |
1978 | - | then | |
1970 | + | let ki = if ((size(jV) > eJ)) | |
1971 | + | then jV[eJ] | |
1979 | 1972 | else "" | |
1980 | - | let | |
1981 | - | then ( | |
1973 | + | let kj = if (if ((jY > 0)) | |
1974 | + | then (kh == "$") | |
1982 | 1975 | else false) | |
1983 | - | then | |
1976 | + | then dG(invoke(di, "sendUsdtPrize", [bR], nil)) | |
1984 | 1977 | else 0 | |
1985 | - | $Tuple5( | |
1978 | + | $Tuple5(jY, B, kj, ka, ki) | |
1986 | 1979 | } | |
1987 | 1980 | } | |
1988 | 1981 | } | |
1989 | 1982 | } | |
1990 | 1983 | ||
1991 | 1984 | ||
1992 | - | func | |
1993 | - | let | |
1994 | - | let | |
1995 | - | let | |
1996 | - | let | |
1997 | - | (( | |
1998 | - | } | |
1999 | - | ||
2000 | - | ||
2001 | - | func | |
2002 | - | let | |
2003 | - | then $Tuple2( | |
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)), "")) | |
2004 | 1997 | else { | |
2005 | - | let B = valueOrErrorMessage(getString( | |
2006 | - | let | |
2007 | - | let | |
2008 | - | if (( | |
2009 | - | then throw((("Duck location type is " + | |
2010 | - | else $Tuple2( | |
2011 | - | } | |
2012 | - | let Q = | |
2013 | - | let | |
2014 | - | let | |
2015 | - | let | |
2016 | - | let | |
2017 | - | let | |
2018 | - | if (( | |
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)) | |
2019 | 2012 | then throw((aF + " is not yours")) | |
2020 | 2013 | else { | |
2021 | - | let | |
2022 | - | $Tuple4( | |
2023 | - | } | |
2024 | - | } | |
2025 | - | ||
2026 | - | ||
2027 | - | func | |
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)) | |
2028 | 2021 | then throw("Negative amount") | |
2029 | 2022 | else { | |
2030 | - | let | |
2031 | - | let | |
2032 | - | let | |
2033 | - | let | |
2034 | - | if ((0 > | |
2035 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
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))) | |
2036 | 2029 | else { | |
2037 | - | let | |
2038 | - | let | |
2039 | - | let | |
2040 | - | if (( | |
2041 | - | then throw(((("Not enough resources, available = " + toString( | |
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))) | |
2042 | 2035 | else { | |
2043 | - | let | |
2044 | - | let | |
2045 | - | let | |
2046 | - | let | |
2047 | - | let | |
2048 | - | let | |
2049 | - | let | |
2050 | - | let | |
2051 | - | let | |
2052 | - | if (if (( | |
2053 | - | then ( | |
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) | |
2054 | 2047 | else false) | |
2055 | - | then throw((("Only " + toString( | |
2048 | + | then throw((("Only " + toString(hd)) + " space left in warehouse")) | |
2056 | 2049 | else { | |
2057 | - | let | |
2058 | - | let | |
2059 | - | let | |
2060 | - | let | |
2061 | - | let | |
2062 | - | then $Tuple4( | |
2063 | - | else if (( | |
2064 | - | then $Tuple4( | |
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])) | |
2065 | 2058 | else { | |
2066 | - | let | |
2067 | - | let | |
2068 | - | $Tuple4( | |
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)) | |
2069 | 2062 | } | |
2070 | - | let | |
2071 | - | let | |
2072 | - | let | |
2073 | - | let | |
2074 | - | $Tuple5([IntegerEntry( | |
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]], "_")]) | |
2075 | 2068 | } | |
2076 | 2069 | } | |
2077 | 2070 | } | |
2078 | 2071 | } | |
2079 | 2072 | ||
2080 | 2073 | ||
2081 | - | func | |
2082 | - | let | |
2083 | - | let | |
2084 | - | let | |
2085 | - | | |
2086 | - | } | |
2087 | - | ||
2088 | - | ||
2089 | - | func | |
2090 | - | let c = toString( | |
2091 | - | let | |
2092 | - | let | |
2093 | - | let | |
2094 | - | let | |
2095 | - | if (if (!( | |
2096 | - | then ( | |
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) | |
2097 | 2090 | else false) | |
2098 | 2091 | then throw("Currently max infrastructure level = 3") | |
2099 | 2092 | else { | |
2100 | - | let | |
2101 | - | let ao = ( | |
2102 | - | if (if ( | |
2103 | - | then (ao > | |
2093 | + | let kR = ((sqrt(kl, 0, 0, DOWN) / 5) + 2) | |
2094 | + | let ao = (kQ + 1) | |
2095 | + | if (if (cA) | |
2096 | + | then (ao > kR) | |
2104 | 2097 | else false) | |
2105 | - | then throw(("Currently max infrastructure level = " + toString( | |
2098 | + | then throw(("Currently max infrastructure level = " + toString(kR))) | |
2106 | 2099 | else { | |
2107 | - | let | |
2108 | - | if (if (!( | |
2109 | - | then ( | |
2100 | + | let kS = fraction(ei, (kl * ao), cM) | |
2101 | + | if (if (!(fi)) | |
2102 | + | then (kO != kS) | |
2110 | 2103 | else false) | |
2111 | - | then throw(("Payment attached should be " + toString( | |
2104 | + | then throw(("Payment attached should be " + toString(kS))) | |
2112 | 2105 | else { | |
2113 | - | let | |
2114 | - | let | |
2115 | - | let | |
2116 | - | let | |
2117 | - | let | |
2118 | - | let | |
2119 | - | let | |
2120 | - | let | |
2121 | - | let | |
2122 | - | let | |
2123 | - | let | |
2124 | - | let | |
2125 | - | $Tuple3(([IntegerEntry( | |
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) | |
2126 | 2119 | } | |
2127 | 2120 | } | |
2128 | 2121 | } | |
2129 | 2122 | } | |
2130 | 2123 | ||
2131 | 2124 | ||
2132 | - | func | |
2133 | - | let ai = valueOrElse(getInteger( | |
2134 | - | let an = (ai + | |
2135 | - | let | |
2136 | - | $Tuple2([IntegerEntry( | |
2137 | - | } | |
2138 | - | ||
2139 | - | ||
2140 | - | func | |
2141 | - | ||
2142 | - | ||
2143 | - | func | |
2144 | - | ||
2145 | - | ||
2146 | - | func | |
2147 | - | let B = valueOrErrorMessage(getString( | |
2148 | - | let | |
2149 | - | let | |
2150 | - | if (!(isDefined( | |
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))) | |
2151 | 2144 | then throw("You are not eligible for ONBOARD artifact") | |
2152 | 2145 | else { | |
2153 | - | let | |
2154 | - | let | |
2155 | - | if (isDefined( | |
2156 | - | then throw(("You already used your ONBOARD artifact on duck " + value( | |
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))) | |
2157 | 2150 | else { | |
2158 | - | let | |
2159 | - | let | |
2160 | - | if (isDefined( | |
2161 | - | then throw(((("The duck " + B) + " already got points from ONBOARD artifact from user ") + value( | |
2162 | - | else ([StringEntry( | |
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) | |
2163 | 2156 | } | |
2164 | 2157 | } | |
2165 | 2158 | } | |
2166 | 2159 | ||
2167 | 2160 | ||
2168 | - | func | |
2169 | - | let | |
2170 | - | let Q = | |
2171 | - | let | |
2172 | - | let | |
2173 | - | if ((valueOrElse(getInteger( | |
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)) | |
2174 | 2167 | then throw("Presale artifact is already activated") | |
2175 | - | else if ((parseIntValue( | |
2168 | + | else if ((parseIntValue(ge._3[do]) > es)) | |
2176 | 2169 | then throw((((aF + " ") + Q) + " is not eligible for presale artifact")) | |
2177 | 2170 | else { | |
2178 | - | let | |
2179 | - | ((( | |
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, ":"))) | |
2180 | 2173 | } | |
2181 | 2174 | } | |
2182 | 2175 | ||
2183 | 2176 | ||
2184 | - | func | |
2185 | - | let | |
2186 | - | let | |
2177 | + | func lt (B) = { | |
2178 | + | let ck = valueOrElse(getInteger(dm, bV), 0) | |
2179 | + | let kt = split(valueOrElse(getString(bP(B)), aN), "_") | |
2187 | 2180 | let aA = lastBlock.timestamp | |
2188 | - | let | |
2189 | - | let | |
2190 | - | let | |
2191 | - | if (( | |
2181 | + | let cm = ce(dm, ck) | |
2182 | + | let cg = cm[ca] | |
2183 | + | let ch = cm[cb] | |
2184 | + | if ((kt[bs] != "T")) | |
2192 | 2185 | then false | |
2193 | - | else if (if (if ((parseIntValue( | |
2194 | - | then ( | |
2186 | + | else if (if (if ((parseIntValue(kt[br]) == ck)) | |
2187 | + | then (ch[cd] == "INPROGRESS") | |
2195 | 2188 | else false) | |
2196 | - | then (parseIntValue( | |
2189 | + | then (parseIntValue(cg[cc]) > aA) | |
2197 | 2190 | else false) | |
2198 | 2191 | then throw("Your duck is taking part in the tournament") | |
2199 | - | else | |
2200 | - | } | |
2201 | - | ||
2202 | - | ||
2203 | - | func | |
2204 | - | let | |
2192 | + | else dK(invoke(this, "exitTournamentInternal", [B], nil)) | |
2193 | + | } | |
2194 | + | ||
2195 | + | ||
2196 | + | func lu (B) = { | |
2197 | + | let kt = split(valueOrElse(getString(bP(B)), aN), "_") | |
2205 | 2198 | let aA = lastBlock.timestamp | |
2206 | - | if (( | |
2199 | + | if ((kt[bs] != "D")) | |
2207 | 2200 | then false | |
2208 | 2201 | else { | |
2209 | - | let | |
2210 | - | let | |
2211 | - | if (if ((( | |
2212 | - | then (1 > | |
2202 | + | let co = parseIntValue(kt[br]) | |
2203 | + | let cp = parseIntValue(kt[bt]) | |
2204 | + | if (if (((co + aR) > aA)) | |
2205 | + | then (1 > cp) | |
2213 | 2206 | else false) | |
2214 | 2207 | then throw("Your duck is on delivery mission") | |
2215 | - | else | |
2216 | - | } | |
2217 | - | } | |
2218 | - | ||
2219 | - | ||
2220 | - | func | |
2221 | - | let | |
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), "_") | |
2222 | 2215 | let aA = lastBlock.timestamp | |
2223 | - | let | |
2224 | - | let | |
2225 | - | let | |
2226 | - | let | |
2227 | - | let | |
2228 | - | let | |
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)) | |
2229 | 2222 | then true | |
2230 | - | else if (if ( | |
2231 | - | then ( | |
2223 | + | else if (if (fN) | |
2224 | + | then (lw > 0) | |
2232 | 2225 | else false) | |
2233 | - | then ( | |
2226 | + | then (jY > 0) | |
2234 | 2227 | else false) | |
2235 | 2228 | then { | |
2236 | - | let | |
2237 | - | if (( | |
2229 | + | let lA = invoke(dj, "sendDeliveryReward", [ky], nil) | |
2230 | + | if ((lA == lA)) | |
2238 | 2231 | then { | |
2239 | - | let | |
2240 | - | [IntegerEntry( | |
2232 | + | let lB = V(ky) | |
2233 | + | [IntegerEntry(lB, (valueOrElse(getInteger(lB), 0) + 1)), IntegerEntry(W(ky), (co / a))] | |
2241 | 2234 | } | |
2242 | 2235 | else throw("Strict value is not equal to itself.") | |
2243 | 2236 | } | |
2244 | - | else if (if (if ( | |
2245 | - | then ( | |
2237 | + | else if (if (if (fN) | |
2238 | + | then (jY > 0) | |
2246 | 2239 | else false) | |
2247 | - | then (( | |
2240 | + | then ((co + aR) > aA) | |
2248 | 2241 | else false) | |
2249 | 2242 | then throw("Your duck is still on delivery mission") | |
2250 | 2243 | else { | |
2251 | - | let | |
2252 | - | let | |
2253 | - | if (( | |
2254 | - | then if (if (if ( | |
2255 | - | then (0 >= | |
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) | |
2256 | 2249 | else false) | |
2257 | 2250 | then true | |
2258 | - | else (0 >= | |
2251 | + | else (0 >= ly)) | |
2259 | 2252 | then nil | |
2260 | - | else [IntegerEntry(U(B), ( | |
2253 | + | else [IntegerEntry(U(B), (co + cI))] | |
2261 | 2254 | else throw("Strict value is not equal to itself.") | |
2262 | 2255 | } | |
2263 | - | let | |
2264 | - | $Tuple3( | |
2265 | - | } | |
2266 | - | ||
2267 | - | ||
2268 | - | func | |
2269 | - | let B = valueOrErrorMessage(getString( | |
2270 | - | if ( | |
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)) | |
2271 | 2264 | then throw("mergeInternal_checkTournament") | |
2272 | - | else if ( | |
2265 | + | else if (lu(B)) | |
2273 | 2266 | then throw("mergeInternal_checkDelivery") | |
2274 | 2267 | else { | |
2275 | - | func | |
2276 | - | let | |
2277 | - | let | |
2278 | - | let | |
2279 | - | let | |
2280 | - | if (( | |
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)) | |
2281 | 2274 | then throw((aF + " is not yours")) | |
2282 | 2275 | else { | |
2283 | - | let | |
2284 | - | let | |
2285 | - | if (if (( | |
2286 | - | then ( | |
2276 | + | let kz = split(kv.description, "_") | |
2277 | + | let dA = kz[dr] | |
2278 | + | if (if ((eV._3 != "")) | |
2279 | + | then (eV._3 != dA) | |
2287 | 2280 | else false) | |
2288 | 2281 | then throw("Lands should be on the same continent to merge") | |
2289 | 2282 | else { | |
2290 | - | let | |
2291 | - | let | |
2292 | - | let | |
2293 | - | let | |
2294 | - | let | |
2295 | - | let | |
2296 | - | let | |
2297 | - | let | |
2298 | - | let | |
2299 | - | if (("S" == | |
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)) | |
2300 | 2293 | then 3 | |
2301 | - | else if (("M" == | |
2294 | + | else if (("M" == cE)) | |
2302 | 2295 | then 4 | |
2303 | - | else if (("L" == | |
2296 | + | else if (("L" == cE)) | |
2304 | 2297 | then 5 | |
2305 | - | else if (("XL" == | |
2298 | + | else if (("XL" == cE)) | |
2306 | 2299 | then 6 | |
2307 | 2300 | else throw("Only S, M, L, XL can merge") | |
2308 | 2301 | } | |
2309 | - | if (( | |
2302 | + | if ((jd != lO)) | |
2310 | 2303 | then throw("All lands should be maxed to merge") | |
2311 | 2304 | else { | |
2312 | - | let | |
2313 | - | let | |
2314 | - | let | |
2315 | - | if ((0 > | |
2316 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
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))) | |
2317 | 2310 | else { | |
2318 | - | let | |
2319 | - | let | |
2320 | - | let | |
2321 | - | let | |
2322 | - | let | |
2323 | - | let | |
2324 | - | let | |
2325 | - | let | |
2326 | - | if (!(isDefined( | |
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))) | |
2327 | 2320 | then throw(("Your staked lands don't contain " + Q)) | |
2328 | 2321 | else { | |
2329 | - | let | |
2330 | - | let | |
2331 | - | $Tuple10( | |
2332 | - | then [DeleteEntry( | |
2333 | - | else nil)), | |
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) | |
2334 | 2327 | } | |
2335 | 2328 | } | |
2336 | 2329 | } | |
2338 | 2331 | } | |
2339 | 2332 | } | |
2340 | 2333 | ||
2341 | - | let | |
2342 | - | let | |
2343 | - | let | |
2344 | - | let | |
2345 | - | let | |
2346 | - | let | |
2347 | - | then split_51C(value( | |
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), "_") | |
2348 | 2341 | else nil | |
2349 | - | let | |
2350 | - | let | |
2351 | - | let | |
2352 | - | let | |
2353 | - | let | |
2354 | - | let | |
2355 | - | func | |
2356 | - | then | |
2357 | - | else | |
2358 | - | ||
2359 | - | func | |
2360 | - | then | |
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 | |
2361 | 2354 | else throw("List size exceeds 5") | |
2362 | 2355 | ||
2363 | - | | |
2356 | + | fd(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5) | |
2364 | 2357 | } | |
2365 | - | let | |
2366 | - | let | |
2367 | - | let | |
2368 | - | let | |
2369 | - | let | |
2370 | - | let | |
2371 | - | let | |
2372 | - | let | |
2373 | - | let | |
2374 | - | let | |
2375 | - | let | |
2376 | - | $Tuple2(((((((((((((((( | |
2377 | - | then StringEntry( | |
2378 | - | else DeleteEntry( | |
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)) | |
2379 | 2372 | then 0 | |
2380 | - | else ( | |
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) | |
2381 | 2374 | } | |
2382 | 2375 | } | |
2383 | 2376 | ||
2384 | 2377 | ||
2385 | - | func | |
2386 | - | ||
2387 | - | ||
2388 | - | func | |
2389 | - | ||
2390 | - | ||
2391 | - | func | |
2392 | - | ||
2393 | - | ||
2394 | - | func | |
2395 | - | ||
2396 | - | ||
2397 | - | func | |
2398 | - | let | |
2399 | - | if ((4 == | |
2400 | - | then | |
2401 | - | else if ((3 == | |
2402 | - | then | |
2403 | - | else if ((5 == | |
2404 | - | then | |
2405 | - | else if ((2 == | |
2406 | - | then | |
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) | |
2407 | 2400 | else throw("Unknown merge") | |
2408 | 2401 | } | |
2409 | 2402 | ||
2410 | 2403 | ||
2411 | - | func | |
2412 | - | let | |
2413 | - | if (isDefined( | |
2404 | + | func mh (bR) = { | |
2405 | + | let mi = getString(bN(bR)) | |
2406 | + | if (isDefined(mi)) | |
2414 | 2407 | then { | |
2415 | - | let B = value( | |
2416 | - | let | |
2417 | - | let | |
2418 | - | let | |
2419 | - | if (if (( | |
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")) | |
2420 | 2413 | then true | |
2421 | - | else (( | |
2414 | + | else ((co + aR) > lastBlock.timestamp)) | |
2422 | 2415 | then nil | |
2423 | 2416 | else { | |
2424 | - | let | |
2425 | - | if ((parseIntValue( | |
2417 | + | let lx = A(B) | |
2418 | + | if ((parseIntValue(cl[bt]) > 0)) | |
2426 | 2419 | then { | |
2427 | - | let | |
2428 | - | if (( | |
2420 | + | let lA = invoke(dj, "sendDeliveryReward", [bR], nil) | |
2421 | + | if ((lA == lA)) | |
2429 | 2422 | then nil | |
2430 | 2423 | else throw("Strict value is not equal to itself.") | |
2431 | 2424 | } | |
2432 | 2425 | else (({ | |
2433 | - | let | |
2434 | - | let | |
2435 | - | if (( | |
2436 | - | then if ((0 >= getIntegerValue( | |
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))) | |
2437 | 2430 | then nil | |
2438 | 2431 | else { | |
2439 | - | let | |
2440 | - | if (( | |
2432 | + | let mk = invoke(this, "saveInteger", [U(B), (co + cI)], nil) | |
2433 | + | if ((mk == mk)) | |
2441 | 2434 | then nil | |
2442 | 2435 | else throw("Strict value is not equal to itself.") | |
2443 | 2436 | } | |
2444 | 2437 | else throw("Strict value is not equal to itself.") | |
2445 | - | } :+ IntegerEntry( | |
2438 | + | } :+ IntegerEntry(lx, getIntegerValue(K(B)))) :+ StringEntry(mj, getStringValue(L(B)))) | |
2446 | 2439 | } | |
2447 | 2440 | } | |
2448 | 2441 | else nil | |
2449 | 2442 | } | |
2450 | 2443 | ||
2451 | 2444 | ||
2452 | - | func | |
2453 | - | then valueOrElse(getBoolean( | |
2445 | + | func ml (gO) = if (if ((gO.originCaller != di)) | |
2446 | + | then valueOrElse(getBoolean(dO()), false) | |
2454 | 2447 | else false) | |
2455 | 2448 | then throw("Contracts are under maintenance") | |
2456 | 2449 | else { | |
2457 | - | let | |
2458 | - | ( | |
2450 | + | let bR = toString(gO.originCaller) | |
2451 | + | (mh(bR) :+ StringEntry(dP(bR), toBase58String(gO.transactionId))) | |
2459 | 2452 | } | |
2460 | 2453 | ||
2461 | 2454 | ||
2462 | - | func | |
2463 | - | then valueOrElse(getBoolean( | |
2455 | + | func mm (gO) = if (if ((gO.originCaller != di)) | |
2456 | + | then valueOrElse(getBoolean(dO()), false) | |
2464 | 2457 | else false) | |
2465 | 2458 | then throw("Contracts are under maintenance") | |
2466 | - | else [StringEntry( | |
2467 | - | ||
2468 | - | ||
2469 | - | @Callable( | |
2470 | - | func constructorV1 ( | |
2459 | + | else [StringEntry(dP(toString(gO.originCaller)), toBase58String(gO.transactionId))] | |
2460 | + | ||
2461 | + | ||
2462 | + | @Callable(gO) | |
2463 | + | func constructorV1 (mn) = if ((gO.caller != this)) | |
2471 | 2464 | then throw("Permission denied") | |
2472 | - | else [StringEntry( | |
2473 | - | ||
2474 | - | ||
2475 | - | ||
2476 | - | @Callable( | |
2477 | - | func saveInteger ( | |
2465 | + | else [StringEntry(dc(), mn)] | |
2466 | + | ||
2467 | + | ||
2468 | + | ||
2469 | + | @Callable(gO) | |
2470 | + | func saveInteger (cU,eM) = if ((gO.caller != this)) | |
2478 | 2471 | then throw("saveInteger is not public method") | |
2479 | - | else [IntegerEntry( | |
2480 | - | ||
2481 | - | ||
2482 | - | ||
2483 | - | @Callable( | |
2484 | - | func setBlocked ( | |
2472 | + | else [IntegerEntry(cU, eM)] | |
2473 | + | ||
2474 | + | ||
2475 | + | ||
2476 | + | @Callable(gO) | |
2477 | + | func setBlocked (mo) = if ((gO.caller != this)) | |
2485 | 2478 | then throw("permission denied") | |
2486 | - | else [BooleanEntry( | |
2487 | - | ||
2488 | - | ||
2489 | - | ||
2490 | - | @Callable( | |
2479 | + | else [BooleanEntry(dO(), mo)] | |
2480 | + | ||
2481 | + | ||
2482 | + | ||
2483 | + | @Callable(gO) | |
2491 | 2484 | func stakeLand () = { | |
2492 | - | let | |
2493 | - | if ((size( | |
2485 | + | let mp = ml(gO) | |
2486 | + | if ((size(gO.payments) != 1)) | |
2494 | 2487 | then throw("Exactly one payment required") | |
2495 | 2488 | else { | |
2496 | - | let | |
2497 | - | let | |
2498 | - | let | |
2499 | - | if (( | |
2489 | + | let mq = value(gO.payments[0]) | |
2490 | + | let bv = value(mq.assetId) | |
2491 | + | let cT = toString(gO.caller) | |
2492 | + | if ((mq.amount != 1)) | |
2500 | 2493 | then throw((("NFT " + aF) + " token should be attached as payment")) | |
2501 | 2494 | else { | |
2502 | - | let | |
2503 | - | if (( | |
2495 | + | let kv = value(assetInfo(bv)) | |
2496 | + | if ((kv.issuer != this)) | |
2504 | 2497 | then throw("Unknown issuer of token") | |
2505 | - | else if (!(contains( | |
2498 | + | else if (!(contains(kv.name, aF))) | |
2506 | 2499 | then throw((("Only NFT " + aF) + " tokens are accepted")) | |
2507 | 2500 | else { | |
2508 | - | let | |
2509 | - | let | |
2510 | - | then dropRight( | |
2511 | - | else if (contains( | |
2512 | - | then dropRight( | |
2513 | - | else dropRight( | |
2514 | - | if (!(isDefined(parseInt( | |
2515 | - | then throw(("Cannot parse land number from " + | |
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)) | |
2516 | 2509 | else { | |
2517 | - | let Q = toBase58String( | |
2518 | - | let | |
2519 | - | if (isDefined(getInteger( | |
2520 | - | then throw((("NFT " + | |
2510 | + | let Q = toBase58String(bv) | |
2511 | + | let kw = bx(Q) | |
2512 | + | if (isDefined(getInteger(kw))) | |
2513 | + | then throw((("NFT " + kv.name) + " is already staked")) | |
2521 | 2514 | else { | |
2522 | - | let | |
2523 | - | let | |
2524 | - | let | |
2525 | - | let | |
2526 | - | let | |
2527 | - | let | |
2528 | - | let | |
2529 | - | let | |
2530 | - | let | |
2531 | - | let | |
2532 | - | let | |
2533 | - | then split_51C(value( | |
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), "_") | |
2534 | 2527 | else nil | |
2535 | - | if (containsElement( | |
2528 | + | if (containsElement(lQ, Q)) | |
2536 | 2529 | then throw(("Your staked lands already contain " + Q)) | |
2537 | - | else if ((size( | |
2538 | - | then throw((("Your already staked max (" + toString( | |
2530 | + | else if ((size(lQ) >= aK)) | |
2531 | + | then throw((("Your already staked max (" + toString(aK)) + ") lands")) | |
2539 | 2532 | else { | |
2540 | - | let | |
2541 | - | let | |
2542 | - | let | |
2543 | - | let | |
2544 | - | $Tuple2(([IntegerEntry( | |
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) | |
2545 | 2538 | } | |
2546 | 2539 | } | |
2547 | 2540 | } | |
2552 | 2545 | ||
2553 | 2546 | ||
2554 | 2547 | ||
2555 | - | @Callable( | |
2556 | - | func unstakeLand ( | |
2557 | - | let | |
2558 | - | if ((size( | |
2548 | + | @Callable(gO) | |
2549 | + | func unstakeLand (kr) = { | |
2550 | + | let mp = ml(gO) | |
2551 | + | if ((size(gO.payments) != 0)) | |
2559 | 2552 | then throw("No payments required") | |
2560 | 2553 | else { | |
2561 | - | let c = toString( | |
2562 | - | let | |
2563 | - | let Q = | |
2564 | - | let | |
2565 | - | let | |
2566 | - | let | |
2567 | - | let | |
2568 | - | let | |
2569 | - | let | |
2570 | - | let | |
2571 | - | let | |
2572 | - | let | |
2573 | - | let | |
2574 | - | let | |
2575 | - | let | |
2576 | - | if (!(isDefined( | |
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))) | |
2577 | 2570 | then throw(("Your staked lands don't contain " + Q)) | |
2578 | 2571 | else { | |
2579 | 2572 | let aA = lastBlock.timestamp | |
2580 | - | let | |
2581 | - | if (( | |
2582 | - | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString( | |
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))) | |
2583 | 2576 | else { | |
2584 | - | let | |
2585 | - | if (( | |
2586 | - | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString( | |
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))) | |
2587 | 2580 | else { | |
2588 | - | let | |
2589 | - | let | |
2590 | - | let | |
2581 | + | let ma = dC(c) | |
2582 | + | let mb = valueOrElse(getInteger(ma), 0) | |
2583 | + | let my = if ((kl > mb)) | |
2591 | 2584 | then 0 | |
2592 | - | else ( | |
2593 | - | let | |
2594 | - | $Tuple2(([ScriptTransfer( | |
2595 | - | then StringEntry( | |
2596 | - | else DeleteEntry( | |
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) | |
2597 | 2590 | } | |
2598 | 2591 | } | |
2599 | 2592 | } | |
2602 | 2595 | ||
2603 | 2596 | ||
2604 | 2597 | ||
2605 | - | @Callable( | |
2598 | + | @Callable(gO) | |
2606 | 2599 | func stakeDuck () = { | |
2607 | - | let | |
2608 | - | if ((size( | |
2600 | + | let mp = ml(gO) | |
2601 | + | if ((size(gO.payments) != 1)) | |
2609 | 2602 | then throw("Exactly one payment required") | |
2610 | 2603 | else { | |
2611 | - | let | |
2612 | - | let | |
2613 | - | let | |
2614 | - | if (( | |
2604 | + | let mq = value(gO.payments[0]) | |
2605 | + | let bv = value(mq.assetId) | |
2606 | + | let cT = toString(gO.caller) | |
2607 | + | if ((mq.amount != 1)) | |
2615 | 2608 | then throw((("NFT " + aG) + " token should be attached as payment")) | |
2616 | 2609 | else { | |
2617 | - | let | |
2618 | - | if (if (( | |
2619 | - | then ( | |
2610 | + | let kv = value(assetInfo(bv)) | |
2611 | + | if (if ((kv.issuer != eb)) | |
2612 | + | then (kv.issuer != ec) | |
2620 | 2613 | else false) | |
2621 | 2614 | then throw((("Unknown issuer of " + aG) + " token")) | |
2622 | - | else if (!(contains( | |
2615 | + | else if (!(contains(kv.name, aG))) | |
2623 | 2616 | then throw((("Only NFT " + aG) + " tokens are accepted")) | |
2624 | 2617 | else { | |
2625 | - | let | |
2626 | - | let | |
2627 | - | if (isDefined(getInteger( | |
2628 | - | then throw((("NFT " + | |
2629 | - | else if (isDefined(getString( | |
2630 | - | then throw(("You already staked one duck: " + | |
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)) | |
2631 | 2624 | else { | |
2632 | - | let | |
2633 | - | let | |
2634 | - | let | |
2635 | - | let | |
2636 | - | let | |
2637 | - | let | |
2638 | - | let | |
2639 | - | ([IntegerEntry( | |
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)) | |
2640 | 2633 | then nil | |
2641 | - | else ([StringEntry( | |
2634 | + | else ([StringEntry(mj, aN)] ++ (if (isDefined(mA)) | |
2642 | 2635 | then nil | |
2643 | - | else (([StringEntry( | |
2636 | + | else (([StringEntry(iO, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(ke, ly)) ++ mp))))) | |
2644 | 2637 | } | |
2645 | 2638 | } | |
2646 | 2639 | } | |
2649 | 2642 | ||
2650 | 2643 | ||
2651 | 2644 | ||
2652 | - | @Callable( | |
2653 | - | func unstakeDuck ( | |
2654 | - | let | |
2655 | - | if ((size( | |
2645 | + | @Callable(gO) | |
2646 | + | func unstakeDuck (mz) = { | |
2647 | + | let mp = ml(gO) | |
2648 | + | if ((size(gO.payments) != 0)) | |
2656 | 2649 | then throw("No payments required") | |
2657 | 2650 | else { | |
2658 | - | let | |
2659 | - | let | |
2660 | - | let | |
2661 | - | let | |
2662 | - | if (!(isDefined(getInteger( | |
2663 | - | then throw((("NFT " + | |
2664 | - | else if (!(isDefined(getString( | |
2665 | - | then throw((("The duck " + | |
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")) | |
2666 | 2659 | else { | |
2667 | - | let | |
2668 | - | if (( | |
2660 | + | let ky = valueOrErrorMessage(getString(bM(mz)), (("NFT " + kv.name) + " is orphaned")) | |
2661 | + | if ((ky != cT)) | |
2669 | 2662 | then throw("Staked NFT is not yours") | |
2670 | - | else if ( | |
2663 | + | else if (lt(mz)) | |
2671 | 2664 | then throw("unstakeDuck_checkTournament") | |
2672 | - | else if ( | |
2665 | + | else if (lu(mz)) | |
2673 | 2666 | then throw("unstakeDuck_checkDelivery") | |
2674 | 2667 | else { | |
2675 | - | let | |
2676 | - | let | |
2677 | - | let av = valueOrElse(getInteger( | |
2678 | - | if (( | |
2679 | - | then throw((("Please heal your duck to " + toString( | |
2680 | - | else ([ScriptTransfer( | |
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) | |
2681 | 2674 | } | |
2682 | 2675 | } | |
2683 | 2676 | } | |
2685 | 2678 | ||
2686 | 2679 | ||
2687 | 2680 | ||
2688 | - | @Callable( | |
2689 | - | func claimRes ( | |
2690 | - | let | |
2691 | - | if ((size( | |
2681 | + | @Callable(gO) | |
2682 | + | func claimRes (eM,mB) = { | |
2683 | + | let mp = ml(gO) | |
2684 | + | if ((size(gO.payments) != 0)) | |
2692 | 2685 | then throw("No payments required") | |
2693 | 2686 | else { | |
2694 | - | let c = toString( | |
2695 | - | let | |
2696 | - | let B = valueOrErrorMessage(getString( | |
2697 | - | $Tuple2((((( | |
2698 | - | } | |
2699 | - | } | |
2700 | - | ||
2701 | - | ||
2702 | - | ||
2703 | - | @Callable( | |
2704 | - | func claimResToWH ( | |
2705 | - | let | |
2706 | - | if ((size( | |
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)) | |
2707 | 2700 | then throw("No payments required") | |
2708 | 2701 | else { | |
2709 | - | let c = toString( | |
2710 | - | let | |
2711 | - | $Tuple2((((( | |
2712 | - | } | |
2713 | - | } | |
2714 | - | ||
2715 | - | ||
2716 | - | ||
2717 | - | @Callable( | |
2718 | - | func flight ( | |
2719 | - | let | |
2720 | - | if ((size( | |
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)) | |
2721 | 2714 | then throw("No payments required") | |
2722 | 2715 | else { | |
2723 | - | let | |
2724 | - | let | |
2725 | - | let | |
2726 | - | let B = | |
2727 | - | let | |
2728 | - | let | |
2729 | - | let | |
2730 | - | if (( | |
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)) | |
2731 | 2724 | then throw("You can't fly to the same location") | |
2732 | 2725 | else { | |
2733 | - | let | |
2734 | - | let | |
2735 | - | let | |
2736 | - | let | |
2737 | - | let | |
2738 | - | let | |
2739 | - | let | |
2740 | - | let | |
2741 | - | let | |
2742 | - | then if (!( | |
2743 | - | then | |
2744 | - | else if (( | |
2745 | - | then $Tuple2( | |
2746 | - | else $Tuple2( | |
2747 | - | else if ( | |
2748 | - | then if (!( | |
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))) | |
2749 | 2742 | then throw("Your duck is taking part in the tournament") | |
2750 | 2743 | else { | |
2751 | - | let | |
2752 | - | let | |
2753 | - | let | |
2754 | - | if (( | |
2755 | - | then | |
2756 | - | else if (( | |
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)) | |
2757 | 2750 | then { | |
2758 | - | let | |
2759 | - | let | |
2760 | - | then invoke( | |
2751 | + | let mK = valueOrElse(getInteger(dm, bZ(ck, B)), 0) | |
2752 | + | let mL = if ((lw > mK)) | |
2753 | + | then invoke(dm, "saveDuckResult", [B, lw], nil) | |
2761 | 2754 | else unit | |
2762 | - | if (( | |
2763 | - | then $Tuple2( | |
2755 | + | if ((mL == mL)) | |
2756 | + | then $Tuple2(ka, jY) | |
2764 | 2757 | else throw("Strict value is not equal to itself.") | |
2765 | 2758 | } | |
2766 | - | else $Tuple2( | |
2759 | + | else $Tuple2(kt, 0) | |
2767 | 2760 | } | |
2768 | - | else if (!( | |
2761 | + | else if (!(cn(kt))) | |
2769 | 2762 | then { | |
2770 | - | let | |
2763 | + | let mM = dD(invoke(this, "autoExitDelivery", [B, jY, if (mD) | |
2771 | 2764 | then "10" | |
2772 | 2765 | else "11", 0], nil)) | |
2773 | - | if (( | |
2774 | - | then if ( | |
2775 | - | then $Tuple2( | |
2776 | - | else if (( | |
2777 | - | then $Tuple2( | |
2778 | - | else $Tuple2( | |
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) | |
2779 | 2772 | else throw("Strict value is not equal to itself.") | |
2780 | 2773 | } | |
2781 | - | else if (!( | |
2774 | + | else if (!(mD)) | |
2782 | 2775 | then throw("Your duck is taking part in delivery") | |
2783 | - | else if (!( | |
2784 | - | then | |
2776 | + | else if (!(cn(ka))) | |
2777 | + | then cv(kt, ka, 13) | |
2785 | 2778 | else { | |
2786 | - | let | |
2787 | - | let | |
2788 | - | if (( | |
2789 | - | then | |
2790 | - | else if (if (( | |
2791 | - | then (1 > | |
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) | |
2792 | 2785 | else false) | |
2793 | - | then $Tuple2( | |
2786 | + | then $Tuple2(ka, jY) | |
2794 | 2787 | else { | |
2795 | - | let | |
2796 | - | if (( | |
2797 | - | then $Tuple2( | |
2788 | + | let mM = dD(invoke(this, "autoExitDelivery", [B, jY, "15-17", lw], nil)) | |
2789 | + | if ((mM == mM)) | |
2790 | + | then $Tuple2(mM, jY) | |
2798 | 2791 | else throw("Strict value is not equal to itself.") | |
2799 | 2792 | } | |
2800 | 2793 | } | |
2801 | - | let | |
2802 | - | let | |
2803 | - | $Tuple2(((([StringEntry( | |
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) | |
2804 | 2797 | then [StringEntry(M(B), "0_0_0_0_0")] | |
2805 | - | else nil)) ++ | |
2798 | + | else nil)) ++ li(B, if ((jY > 0)) | |
2806 | 2799 | then Y | |
2807 | - | else Z)._1), | |
2800 | + | else Z)._1), iD._3) | |
2808 | 2801 | } | |
2809 | 2802 | } | |
2810 | 2803 | } | |
2811 | 2804 | ||
2812 | 2805 | ||
2813 | 2806 | ||
2814 | - | @Callable( | |
2815 | - | func heal ( | |
2816 | - | let | |
2817 | - | if (if (if ((0 > | |
2807 | + | @Callable(gO) | |
2808 | + | func heal (mP,mQ,mR) = { | |
2809 | + | let mp = ml(gO) | |
2810 | + | if (if (if ((0 > mP)) | |
2818 | 2811 | then true | |
2819 | - | else (0 > | |
2812 | + | else (0 > mQ)) | |
2820 | 2813 | then true | |
2821 | - | else (0 > | |
2814 | + | else (0 > mR)) | |
2822 | 2815 | then throw("Quantity cannot be negative") | |
2823 | 2816 | else { | |
2824 | - | let B = valueOrErrorMessage(getString( | |
2825 | - | if ( | |
2817 | + | let B = valueOrErrorMessage(getString(bN(toString(gO.caller))), "You don't have a duck staked") | |
2818 | + | if (lt(B)) | |
2826 | 2819 | then throw("heal_checkTournament") | |
2827 | - | else if ( | |
2820 | + | else if (lu(B)) | |
2828 | 2821 | then throw("heal_checkDelivery") | |
2829 | 2822 | else { | |
2830 | - | let | |
2831 | - | let | |
2832 | - | let | |
2833 | - | let | |
2834 | - | if (( | |
2835 | - | then throw((("HP should be < " + toString( | |
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")) | |
2836 | 2829 | else { | |
2837 | - | let | |
2838 | - | let | |
2839 | - | let | |
2830 | + | let iO = bO(B) | |
2831 | + | let jr = iN(iO) | |
2832 | + | let mU = if ((jr[bq] == "")) | |
2840 | 2833 | then nil | |
2841 | - | else split_4C( | |
2842 | - | func | |
2843 | - | let | |
2844 | - | let | |
2845 | - | then parseIntValue( | |
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]) | |
2846 | 2839 | else 0 | |
2847 | - | if ((3 > | |
2840 | + | if ((3 > dH)) | |
2848 | 2841 | then { | |
2849 | - | let | |
2850 | - | if (( | |
2851 | - | then throw(((("You have only " + toString( | |
2852 | - | else $Tuple3(( | |
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))) | |
2853 | 2846 | } | |
2854 | - | else $Tuple3(( | |
2847 | + | else $Tuple3((eV._1 :+ toString(hk)), (dH + 1), eV._3) | |
2855 | 2848 | } | |
2856 | 2849 | ||
2857 | - | let | |
2858 | - | let | |
2859 | - | let | |
2860 | - | let | |
2861 | - | func | |
2862 | - | then | |
2863 | - | else | |
2864 | - | ||
2865 | - | func | |
2866 | - | then | |
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 | |
2867 | 2860 | else throw("List size exceeds 50") | |
2868 | 2861 | ||
2869 | - | | |
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) | |
2870 | 2863 | } | |
2871 | - | let | |
2872 | - | $Tuple2((([IntegerEntry( | |
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) | |
2873 | 2866 | } | |
2874 | 2867 | } | |
2875 | 2868 | } | |
2877 | 2870 | ||
2878 | 2871 | ||
2879 | 2872 | ||
2880 | - | @Callable( | |
2873 | + | @Callable(gO) | |
2881 | 2874 | func healES () = { | |
2882 | - | let | |
2883 | - | if ((size( | |
2875 | + | let mp = ml(gO) | |
2876 | + | if ((size(gO.payments) != 1)) | |
2884 | 2877 | then throw("Exactly one payment required") | |
2885 | 2878 | else { | |
2886 | - | let | |
2887 | - | if (( | |
2879 | + | let mq = value(gO.payments[0]) | |
2880 | + | if ((mq.assetId != cD)) | |
2888 | 2881 | then throw("Allowed USDT payment only!") | |
2889 | 2882 | else { | |
2890 | - | let B = valueOrErrorMessage(getString( | |
2891 | - | if ( | |
2883 | + | let B = valueOrErrorMessage(getString(bN(toString(gO.caller))), "You don't have a duck staked") | |
2884 | + | if (lt(B)) | |
2892 | 2885 | then throw("healES_checkTournament") | |
2893 | - | else if ( | |
2886 | + | else if (lu(B)) | |
2894 | 2887 | then throw("healES_checkDelivery") | |
2895 | 2888 | else { | |
2896 | - | let | |
2897 | - | let | |
2898 | - | let | |
2899 | - | if (( | |
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)) | |
2900 | 2893 | then throw("HP should be 0 to call Emergency Service") | |
2901 | 2894 | else { | |
2902 | - | let | |
2903 | - | let | |
2904 | - | let | |
2895 | + | let iO = bO(B) | |
2896 | + | let jr = iN(iO) | |
2897 | + | let mU = if ((jr[bq] == "")) | |
2905 | 2898 | then nil | |
2906 | - | else split_4C( | |
2907 | - | let | |
2908 | - | then parseIntValue( | |
2899 | + | else split_4C(jr[bq], "_") | |
2900 | + | let mY = if ((size(mU) > 0)) | |
2901 | + | then parseIntValue(mU[0]) | |
2909 | 2902 | else 0 | |
2910 | - | let | |
2911 | - | then parseIntValue( | |
2903 | + | let mZ = if ((size(mU) > 1)) | |
2904 | + | then parseIntValue(mU[1]) | |
2912 | 2905 | else 0 | |
2913 | - | let | |
2914 | - | then parseIntValue( | |
2906 | + | let na = if ((size(mU) > 2)) | |
2907 | + | then parseIntValue(mU[2]) | |
2915 | 2908 | else 0 | |
2916 | - | if (if (if (( | |
2909 | + | if (if (if ((mY > 0)) | |
2917 | 2910 | then true | |
2918 | - | else ( | |
2911 | + | else (mZ > 0)) | |
2919 | 2912 | then true | |
2920 | - | else ( | |
2913 | + | else (na > 0)) | |
2921 | 2914 | then throw("You have to use own Medical Kit") | |
2922 | 2915 | else { | |
2923 | - | let | |
2924 | - | let | |
2925 | - | then split_4C(value( | |
2916 | + | let nb = getString(dj, bS()) | |
2917 | + | let nc = if (isDefined(nb)) | |
2918 | + | then split_4C(value(nb), "_") | |
2926 | 2919 | else nil | |
2927 | - | let | |
2928 | - | then parseIntValue( | |
2920 | + | let nd = if ((size(nc) > 0)) | |
2921 | + | then parseIntValue(nc[0]) | |
2929 | 2922 | else 0 | |
2930 | - | if ((0 >= | |
2923 | + | if ((0 >= nd)) | |
2931 | 2924 | then throw("There are no Medical Kits L1 at Emergency Service storage") | |
2932 | 2925 | else { | |
2933 | - | let | |
2934 | - | let | |
2935 | - | let | |
2936 | - | let | |
2937 | - | let | |
2938 | - | if (( | |
2939 | - | then throw(("Payment attached should be " + toString( | |
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))) | |
2940 | 2933 | else { | |
2941 | - | let | |
2942 | - | $Tuple2((( | |
2934 | + | let fn = dD(invoke(dj, "updateEsStorage", [ne], [AttachedPayment(cD, ng)])) | |
2935 | + | $Tuple2(((mp :+ IntegerEntry(ke, mX)) ++ li(B, aa)._1), fn) | |
2943 | 2936 | } | |
2944 | 2937 | } | |
2945 | 2938 | } | |
2951 | 2944 | ||
2952 | 2945 | ||
2953 | 2946 | ||
2954 | - | @Callable( | |
2955 | - | func updateBackpack (B, | |
2947 | + | @Callable(gO) | |
2948 | + | func updateBackpack (B,nh) = if ((gO.caller != dj)) | |
2956 | 2949 | then throw("permission denied") | |
2957 | - | else $Tuple2([StringEntry( | |
2958 | - | ||
2959 | - | ||
2960 | - | ||
2961 | - | @Callable( | |
2950 | + | else $Tuple2([StringEntry(bO(B), nh)], nh) | |
2951 | + | ||
2952 | + | ||
2953 | + | ||
2954 | + | @Callable(gO) | |
2962 | 2955 | func commitForRandom () = { | |
2963 | - | let | |
2964 | - | let | |
2965 | - | let c = toString( | |
2966 | - | $Tuple2(([IntegerEntry( | |
2967 | - | } | |
2968 | - | ||
2969 | - | ||
2970 | - | ||
2971 | - | @Callable( | |
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) | |
2972 | 2965 | func buySLand () = { | |
2973 | - | let | |
2974 | - | if ((size( | |
2966 | + | let mp = ml(gO) | |
2967 | + | if ((size(gO.payments) != 1)) | |
2975 | 2968 | then throw("Exactly one payment required") | |
2976 | 2969 | else { | |
2977 | - | let | |
2978 | - | if (( | |
2970 | + | let mq = value(gO.payments[0]) | |
2971 | + | if ((mq.assetId != cD)) | |
2979 | 2972 | then throw("Allowed USDT payment only!") | |
2980 | - | else if (( | |
2981 | - | then throw(("Payment attached should be " + toString( | |
2973 | + | else if ((mq.amount != ek)) | |
2974 | + | then throw(("Payment attached should be " + toString(ek))) | |
2982 | 2975 | else { | |
2983 | - | let | |
2984 | - | let | |
2985 | - | $Tuple2(((( | |
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)) | |
2986 | 2979 | } | |
2987 | 2980 | } | |
2988 | 2981 | } | |
2989 | 2982 | ||
2990 | 2983 | ||
2991 | 2984 | ||
2992 | - | @Callable( | |
2993 | - | func expedition ( | |
2994 | - | let | |
2995 | - | if ((size( | |
2985 | + | @Callable(gO) | |
2986 | + | func expedition (jT,jU) = { | |
2987 | + | let mp = ml(gO) | |
2988 | + | if ((size(gO.payments) != 0)) | |
2996 | 2989 | then throw("No payments required") | |
2997 | 2990 | else { | |
2998 | - | let | |
2999 | - | let | |
3000 | - | let B = | |
3001 | - | let | |
3002 | - | let | |
3003 | - | let | |
3004 | - | let | |
3005 | - | let | |
3006 | - | let | |
3007 | - | let | |
3008 | - | let | |
3009 | - | let | |
3010 | - | let | |
3011 | - | let | |
3012 | - | let | |
3013 | - | let | |
3014 | - | then $Tuple3([IntegerEntry( | |
3015 | - | else $Tuple3(( | |
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) | |
3016 | 3009 | then [StringEntry(M(B), "0_0_0_0_0")] | |
3017 | - | else ((((nil :+ StringEntry( | |
3018 | - | if ( | |
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)) | |
3019 | 3012 | then throw("expedition_checkTournament") | |
3020 | - | else if ( | |
3013 | + | else if (lu(B)) | |
3021 | 3014 | then throw("expedition_checkDelivery") | |
3022 | 3015 | else { | |
3023 | - | let | |
3024 | - | $Tuple2((( | |
3016 | + | let nj = dG(invoke(dn, "burnAcres", [el], nil)) | |
3017 | + | $Tuple2(((fn._1 ++ li(B, ac)._1) ++ mp), $Tuple3(fn._2, fn._3, nj)) | |
3025 | 3018 | } | |
3026 | 3019 | } | |
3027 | 3020 | } | |
3028 | 3021 | ||
3029 | 3022 | ||
3030 | 3023 | ||
3031 | - | @Callable( | |
3024 | + | @Callable(gO) | |
3032 | 3025 | func buySLandForAcres () = { | |
3033 | - | let | |
3034 | - | if ((size( | |
3026 | + | let mp = ml(gO) | |
3027 | + | if ((size(gO.payments) != 1)) | |
3035 | 3028 | then throw("exactly 1 payment must be attached") | |
3036 | 3029 | else { | |
3037 | - | let | |
3038 | - | let | |
3039 | - | if (if (!(isDefined( | |
3030 | + | let mq = gO.payments[0] | |
3031 | + | let fu = mq.amount | |
3032 | + | if (if (!(isDefined(mq.assetId))) | |
3040 | 3033 | then true | |
3041 | - | else (value( | |
3034 | + | else (value(mq.assetId) != dv)) | |
3042 | 3035 | then throw("ACRES payments only!") | |
3043 | - | else if (( | |
3044 | - | then throw(("Payment attached should be " + toString( | |
3036 | + | else if ((fu != el)) | |
3037 | + | then throw(("Payment attached should be " + toString(el))) | |
3045 | 3038 | else { | |
3046 | - | let | |
3047 | - | let | |
3048 | - | $Tuple2((( | |
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)) | |
3049 | 3042 | } | |
3050 | 3043 | } | |
3051 | 3044 | } | |
3052 | 3045 | ||
3053 | 3046 | ||
3054 | 3047 | ||
3055 | - | @Callable( | |
3048 | + | @Callable(gO) | |
3056 | 3049 | func upgradeInfra (Q) = { | |
3057 | - | let | |
3058 | - | if ((size( | |
3050 | + | let mp = ml(gO) | |
3051 | + | if ((size(gO.payments) != 0)) | |
3059 | 3052 | then throw("No payments required") | |
3060 | 3053 | else { | |
3061 | - | let | |
3062 | - | let B = valueOrErrorMessage(getString( | |
3063 | - | $Tuple2((( | |
3064 | - | } | |
3065 | - | } | |
3066 | - | ||
3067 | - | ||
3068 | - | ||
3069 | - | @Callable( | |
3070 | - | func activateArtifact ( | |
3071 | - | let | |
3072 | - | if ((size( | |
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)) | |
3073 | 3066 | then throw("No payments required") | |
3074 | 3067 | else { | |
3075 | - | let c = toString( | |
3076 | - | let | |
3077 | - | let | |
3078 | - | if (("PRESALE" == | |
3079 | - | then | |
3080 | - | else if (("ONBOARD" == | |
3081 | - | then | |
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) | |
3082 | 3075 | else throw("Unknown artifact") | |
3083 | 3076 | } | |
3084 | - | ( | |
3085 | - | } | |
3086 | - | } | |
3087 | - | ||
3088 | - | ||
3089 | - | ||
3090 | - | @Callable( | |
3091 | - | func mergeLands ( | |
3092 | - | let | |
3093 | - | if ((size( | |
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)) | |
3094 | 3087 | then throw("No payments required") | |
3095 | 3088 | else { | |
3096 | - | let | |
3097 | - | $Tuple2((( | |
3098 | - | } | |
3099 | - | } | |
3100 | - | ||
3101 | - | ||
3102 | - | ||
3103 | - | @Callable( | |
3104 | - | func cargoExchange ( | |
3105 | - | let | |
3106 | - | if ((size( | |
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)) | |
3107 | 3100 | then throw("No payments required") | |
3108 | 3101 | else { | |
3109 | - | let | |
3110 | - | let c = toString( | |
3111 | - | let | |
3112 | - | let | |
3113 | - | if (!(isDefined(getInteger( | |
3114 | - | then throw(( | |
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")) | |
3115 | 3108 | else { | |
3116 | - | let | |
3117 | - | if (( | |
3109 | + | let ky = valueOrErrorMessage(getString(bu(Q)), (("NFT " + kv.name) + " is orphaned")) | |
3110 | + | if ((ky != c)) | |
3118 | 3111 | then throw((aF + " is not yours")) | |
3119 | 3112 | else { | |
3120 | - | let | |
3121 | - | let | |
3122 | - | let B = valueOrErrorMessage(getString( | |
3123 | - | let | |
3124 | - | let | |
3125 | - | if (( | |
3126 | - | then throw((("Duck location type is " + | |
3127 | - | else if (( | |
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)) | |
3128 | 3121 | then throw(("Duck should be on the land " + Q)) | |
3129 | 3122 | else { | |
3130 | - | let | |
3131 | - | let | |
3132 | - | let | |
3133 | - | let | |
3134 | - | let | |
3135 | - | let | |
3136 | - | let | |
3137 | - | let | |
3138 | - | ([StringEntry( | |
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) | |
3139 | 3132 | } | |
3140 | 3133 | } | |
3141 | 3134 | } | |
3144 | 3137 | ||
3145 | 3138 | ||
3146 | 3139 | ||
3147 | - | @Callable( | |
3148 | - | func saveWarehouse ( | |
3140 | + | @Callable(gO) | |
3141 | + | func saveWarehouse (jf,Q) = if ((gO.caller != dj)) | |
3149 | 3142 | then throw("Access denied") | |
3150 | 3143 | else { | |
3151 | - | let | |
3152 | - | let | |
3153 | - | if ((size( | |
3144 | + | let jb = bD(Q) | |
3145 | + | let jg = split_4C(jf, ":") | |
3146 | + | if ((size(jg) != 5)) | |
3154 | 3147 | then throw("warehouse string should contain 4 ':' separators") | |
3155 | 3148 | else { | |
3156 | - | let | |
3157 | - | let | |
3158 | - | let | |
3159 | - | let | |
3160 | - | if ((0 > | |
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)) | |
3161 | 3154 | then throw("Operation leads to negative free warehouse space") | |
3162 | 3155 | else { | |
3163 | - | let | |
3164 | - | $Tuple2([StringEntry( | |
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) | |
3165 | 3158 | } | |
3166 | 3159 | } | |
3167 | 3160 | } | |
3168 | 3161 | ||
3169 | 3162 | ||
3170 | 3163 | ||
3171 | - | @Callable( | |
3172 | - | func setCustomName ( | |
3173 | - | let | |
3174 | - | if ((size( | |
3164 | + | @Callable(gO) | |
3165 | + | func setCustomName (bv,lS,bz) = { | |
3166 | + | let mp = ml(gO) | |
3167 | + | if ((size(gO.payments) != 1)) | |
3175 | 3168 | then throw("Exactly one payment required") | |
3176 | 3169 | else { | |
3177 | - | let | |
3178 | - | if (( | |
3170 | + | let mq = value(gO.payments[0]) | |
3171 | + | if ((mq.assetId != cD)) | |
3179 | 3172 | then throw("Allowed USDT payment only!") | |
3180 | - | else if (( | |
3181 | - | then throw(("Payment should be " + toString( | |
3182 | - | else if (contains( | |
3183 | - | then throw(("Name should not contain '__': " + | |
3184 | - | else if ((size( | |
3185 | - | then throw(("Name too long, maxLength=" + toString( | |
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))) | |
3186 | 3179 | else { | |
3187 | - | let c = toString( | |
3188 | - | let | |
3189 | - | let | |
3190 | - | if (("ACCOUNT" == | |
3180 | + | let c = toString(gO.originCaller) | |
3181 | + | let ns = { | |
3182 | + | let cE = bz | |
3183 | + | if (("ACCOUNT" == cE)) | |
3191 | 3184 | then { | |
3192 | - | let | |
3193 | - | let | |
3194 | - | if (isDefined( | |
3195 | - | then throw(("Name already registered: " + | |
3185 | + | let nt = eB(lS) | |
3186 | + | let nu = getString(nt) | |
3187 | + | if (isDefined(nu)) | |
3188 | + | then throw(("Name already registered: " + lS)) | |
3196 | 3189 | else { | |
3197 | - | let | |
3198 | - | let | |
3199 | - | let | |
3200 | - | then [DeleteEntry( | |
3190 | + | let nv = bH(c) | |
3191 | + | let nw = getString(nv) | |
3192 | + | let nx = if (isDefined(nw)) | |
3193 | + | then [DeleteEntry(eB(value(nw)))] | |
3201 | 3194 | else nil | |
3202 | - | ((( | |
3195 | + | (((nx :+ StringEntry(nv, lS)) :+ StringEntry(nt, c)) ++ lj(c, ab)._1) | |
3203 | 3196 | } | |
3204 | 3197 | } | |
3205 | - | else if (("LAND" == | |
3198 | + | else if (("LAND" == cE)) | |
3206 | 3199 | then { | |
3207 | - | let | |
3208 | - | let | |
3209 | - | if (!(isDefined(getInteger( | |
3210 | - | then throw(( | |
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")) | |
3211 | 3204 | else { | |
3212 | - | let | |
3213 | - | if (( | |
3205 | + | let ky = valueOrErrorMessage(getString(bu(bv)), (("NFT " + kv.name) + " is orphaned")) | |
3206 | + | if ((ky != c)) | |
3214 | 3207 | then throw((aF + " is not yours")) | |
3215 | 3208 | else { | |
3216 | - | let | |
3217 | - | let | |
3218 | - | if (isDefined( | |
3219 | - | then throw(("Name already registered: " + | |
3209 | + | let nt = eu(lS) | |
3210 | + | let nu = getString(nt) | |
3211 | + | if (isDefined(nu)) | |
3212 | + | then throw(("Name already registered: " + lS)) | |
3220 | 3213 | else { | |
3221 | - | let | |
3222 | - | let | |
3223 | - | let | |
3224 | - | then [DeleteEntry( | |
3214 | + | let ny = bw(bv) | |
3215 | + | let nw = getString(ny) | |
3216 | + | let nx = if (isDefined(nw)) | |
3217 | + | then [DeleteEntry(eu(value(nw)))] | |
3225 | 3218 | else nil | |
3226 | - | ((( | |
3219 | + | (((nx :+ StringEntry(ny, lS)) :+ StringEntry(nt, bv)) ++ lj(c, ab)._1) | |
3227 | 3220 | } | |
3228 | 3221 | } | |
3229 | 3222 | } | |
3230 | 3223 | } | |
3231 | - | else if (("DUCK" == | |
3224 | + | else if (("DUCK" == cE)) | |
3232 | 3225 | then { | |
3233 | - | let | |
3234 | - | let | |
3235 | - | if (if (!(isDefined(getInteger( | |
3226 | + | let kv = value(assetInfo(fromBase58String(bv))) | |
3227 | + | let kw = bx(bv) | |
3228 | + | if (if (!(isDefined(getInteger(kw)))) | |
3236 | 3229 | then true | |
3237 | - | else !(isDefined(getString( | |
3238 | - | then throw(( | |
3230 | + | else !(isDefined(getString(bN(c))))) | |
3231 | + | then throw((kv.name + " is not staked")) | |
3239 | 3232 | else { | |
3240 | - | let | |
3241 | - | if (( | |
3233 | + | let ky = valueOrErrorMessage(getString(bM(bv)), (("NFT " + kv.name) + " is orphaned")) | |
3234 | + | if ((ky != c)) | |
3242 | 3235 | then throw((aG + " is not yours")) | |
3243 | 3236 | else { | |
3244 | - | let | |
3245 | - | let | |
3246 | - | if (isDefined( | |
3247 | - | then throw(("Name already registered: " + | |
3237 | + | let nt = eA(lS) | |
3238 | + | let nu = getString(nt) | |
3239 | + | if (isDefined(nu)) | |
3240 | + | then throw(("Name already registered: " + lS)) | |
3248 | 3241 | else { | |
3249 | - | let | |
3250 | - | let | |
3251 | - | let | |
3252 | - | then [DeleteEntry( | |
3242 | + | let ny = bG(bv) | |
3243 | + | let nw = getString(ny) | |
3244 | + | let nx = if (isDefined(nw)) | |
3245 | + | then [DeleteEntry(eA(value(nw)))] | |
3253 | 3246 | else nil | |
3254 | - | ((( | |
3247 | + | (((nx :+ StringEntry(ny, lS)) :+ StringEntry(nt, bv)) ++ li(bv, ab)._1) | |
3255 | 3248 | } | |
3256 | 3249 | } | |
3257 | 3250 | } | |
3258 | 3251 | } | |
3259 | 3252 | else throw("Unknown entity type") | |
3260 | 3253 | } | |
3261 | - | $Tuple2((( | |
3254 | + | $Tuple2(((ns :+ ScriptTransfer(dj, mq.amount, cD)) ++ mp), 0) | |
3262 | 3255 | } | |
3263 | 3256 | } | |
3264 | 3257 | } | |
3265 | 3258 | ||
3266 | 3259 | ||
3267 | 3260 | ||
3268 | - | @Callable( | |
3269 | - | func setReferrals ( | |
3261 | + | @Callable(gO) | |
3262 | + | func setReferrals (nz,nA) = if ((gO.callerPublicKey != ed)) | |
3270 | 3263 | then throw("Permission denied") | |
3271 | 3264 | else { | |
3272 | - | let | |
3273 | - | if ((size( | |
3265 | + | let mp = ml(gO) | |
3266 | + | if ((size(gO.payments) != 0)) | |
3274 | 3267 | then throw("No payments required") | |
3275 | - | else if (!(isDefined(addressFromString( | |
3276 | - | then throw(("Invalid address: " + | |
3277 | - | else if (!(isDefined(addressFromString( | |
3278 | - | then throw(("Invalid address: " + | |
3268 | + | else if (!(isDefined(addressFromString(nz)))) | |
3269 | + | then throw(("Invalid address: " + nz)) | |
3270 | + | else if (!(isDefined(addressFromString(nA)))) | |
3271 | + | then throw(("Invalid address: " + nA)) | |
3279 | 3272 | else { | |
3280 | - | let | |
3281 | - | let | |
3282 | - | let | |
3283 | - | then split_4C(value( | |
3273 | + | let nB = eC() | |
3274 | + | let nC = getString(nB) | |
3275 | + | let nD = if (isDefined(nC)) | |
3276 | + | then split_4C(value(nC), "_") | |
3284 | 3277 | else nil | |
3285 | - | if (containsElement( | |
3286 | - | then throw(( | |
3278 | + | if (containsElement(nD, nA)) | |
3279 | + | then throw((nA + " is not newbie (already has referrals)")) | |
3287 | 3280 | else { | |
3288 | - | let | |
3289 | - | let | |
3290 | - | if (if (isDefined( | |
3291 | - | then isDefined(addressFromString(value( | |
3281 | + | let ll = bI(nA) | |
3282 | + | let lm = getString(ll) | |
3283 | + | if (if (isDefined(lm)) | |
3284 | + | then isDefined(addressFromString(value(lm))) | |
3292 | 3285 | else false) | |
3293 | - | then throw((( | |
3286 | + | then throw(((nA + " already has refBy: ") + value(lm))) | |
3294 | 3287 | else { | |
3295 | - | let | |
3296 | - | let | |
3297 | - | let | |
3298 | - | then split_4C(value( | |
3288 | + | let nE = bL(nz) | |
3289 | + | let nF = getString(nE) | |
3290 | + | let nG = if (isDefined(nF)) | |
3291 | + | then split_4C(value(nF), "_") | |
3299 | 3292 | else nil | |
3300 | - | if (containsElement( | |
3301 | - | then throw(((( | |
3293 | + | if (containsElement(nG, nA)) | |
3294 | + | then throw((((nz + " already contains ") + nA) + " within referrals")) | |
3302 | 3295 | else { | |
3303 | - | let | |
3304 | - | let | |
3305 | - | then value( | |
3306 | - | else makeString_2C(( | |
3307 | - | $Tuple2(([StringEntry( | |
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) | |
3308 | 3301 | } | |
3309 | 3302 | } | |
3310 | 3303 | } | |
3313 | 3306 | ||
3314 | 3307 | ||
3315 | 3308 | ||
3316 | - | @Callable( | |
3317 | - | func distributePoints ( | |
3318 | - | let | |
3319 | - | if ((size( | |
3309 | + | @Callable(gO) | |
3310 | + | func distributePoints (nJ,nK,nL,nM,nN) = { | |
3311 | + | let mp = ml(gO) | |
3312 | + | if ((size(gO.payments) != 0)) | |
3320 | 3313 | then throw("No payments required") | |
3321 | 3314 | else { | |
3322 | - | let c = toString( | |
3323 | - | let | |
3324 | - | let | |
3325 | - | let | |
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)) | |
3326 | 3319 | then $Tuple2(0, nil) | |
3327 | 3320 | else { | |
3328 | - | let | |
3329 | - | if (( | |
3330 | - | then $Tuple2( | |
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]))]) | |
3331 | 3324 | else throw("Strict value is not equal to itself.") | |
3332 | 3325 | } | |
3333 | - | let | |
3334 | - | let | |
3335 | - | let B = valueOrErrorMessage(getString( | |
3336 | - | let | |
3337 | - | let | |
3338 | - | let | |
3339 | - | let | |
3340 | - | let | |
3341 | - | let | |
3342 | - | if (( | |
3343 | - | then throw((("There are only " + toString( | |
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")) | |
3344 | 3337 | else { | |
3345 | - | let | |
3346 | - | let at = split(valueOrElse(getString( | |
3347 | - | let | |
3348 | - | $Tuple2((([IntegerEntry( | |
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)) | |
3349 | 3342 | then 0 | |
3350 | - | else | |
3351 | - | then ( | |
3352 | - | else | |
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) | |
3353 | 3346 | } | |
3354 | 3347 | } | |
3355 | 3348 | } | |
3356 | 3349 | ||
3357 | 3350 | ||
3358 | 3351 | ||
3359 | - | @Callable( | |
3360 | - | func splitByGlobalWeightsREADONLY ( | |
3361 | - | ||
3362 | - | ||
3363 | - | ||
3364 | - | @Callable( | |
3365 | - | func splitByGlobalAndLocalWeightsREADONLY ( | |
3366 | - | let | |
3367 | - | $Tuple2(nil, $Tuple2( | |
3368 | - | } | |
3369 | - | ||
3370 | - | ||
3371 | - | ||
3372 | - | @Callable( | |
3373 | - | func getBackpackREADONLY (B) = $Tuple2(nil, makeString( | |
3374 | - | ||
3375 | - | ||
3376 | - | ||
3377 | - | @Callable( | |
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) | |
3378 | 3371 | func getWarehouseREADONLY (Q) = { | |
3379 | - | let | |
3380 | - | let | |
3381 | - | let | |
3382 | - | $Tuple2(nil, makeString_2C( | |
3383 | - | } | |
3384 | - | ||
3385 | - | ||
3386 | - | ||
3387 | - | @Callable( | |
3388 | - | func saveLastTx () = if (!(containsElement([ | |
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))) | |
3389 | 3382 | then throw("Access denied") | |
3390 | - | else $Tuple2( | |
3391 | - | ||
3392 | - | ||
3393 | - | ||
3394 | - | @Callable( | |
3395 | - | func updateDuckStats (B, | |
3383 | + | else $Tuple2(ml(gO), 42) | |
3384 | + | ||
3385 | + | ||
3386 | + | ||
3387 | + | @Callable(gO) | |
3388 | + | func updateDuckStats (B,lg) = if ((gO.caller != dj)) | |
3396 | 3389 | then throw("Access denied") | |
3397 | - | else | |
3398 | - | ||
3399 | - | ||
3400 | - | ||
3401 | - | @Callable( | |
3402 | - | func updateAccStats (c, | |
3390 | + | else li(B, lg) | |
3391 | + | ||
3392 | + | ||
3393 | + | ||
3394 | + | @Callable(gO) | |
3395 | + | func updateAccStats (c,lg) = if (!(containsElement([dl, dj, dn], gO.caller))) | |
3403 | 3396 | then throw("Access denied") | |
3404 | - | else | |
3405 | - | ||
3406 | - | ||
3407 | - | ||
3408 | - | @Callable( | |
3409 | - | func equipDuck ( | |
3410 | - | let | |
3411 | - | if ((size( | |
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)) | |
3412 | 3405 | then throw("No payments required") | |
3413 | 3406 | else { | |
3414 | - | let c = toString( | |
3415 | - | let B = valueOrErrorMessage(getString( | |
3416 | - | if ( | |
3407 | + | let c = toString(gO.originCaller) | |
3408 | + | let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked") | |
3409 | + | if (lt(B)) | |
3417 | 3410 | then throw("equipDuck_checkTournament") | |
3418 | - | else if ( | |
3411 | + | else if (lu(B)) | |
3419 | 3412 | then throw("equipDuck_checkDelivery") | |
3420 | 3413 | else { | |
3421 | - | let | |
3422 | - | let | |
3423 | - | let | |
3424 | - | let | |
3425 | - | let | |
3426 | - | if ((size( | |
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)) | |
3427 | 3420 | then throw("Wrong equipment string") | |
3428 | 3421 | else { | |
3429 | - | let | |
3430 | - | let | |
3431 | - | let ar = if (( | |
3422 | + | let gD = gq(oe, fB(jr[bq]), true, nil) | |
3423 | + | let gE = split(mG[q], ";")[1] | |
3424 | + | let ar = if ((gE == "")) | |
3432 | 3425 | then 0 | |
3433 | 3426 | else { | |
3434 | - | let | |
3435 | - | if (( | |
3427 | + | let gF = split(gE, ",")[0] | |
3428 | + | if ((gF == "")) | |
3436 | 3429 | then 0 | |
3437 | 3430 | else { | |
3438 | - | let | |
3439 | - | let | |
3440 | - | let | |
3441 | - | if (if (if (if (if (( | |
3431 | + | let fQ = split(gF, ":") | |
3432 | + | let dh = fQ[0] | |
3433 | + | let gG = fQ[1] | |
3434 | + | if (if (if (if (if ((dh == "06")) | |
3442 | 3435 | then true | |
3443 | - | else ( | |
3436 | + | else (dh == "07")) | |
3444 | 3437 | then true | |
3445 | - | else ( | |
3446 | - | then ( | |
3438 | + | else (dh == "08")) | |
3439 | + | then (gG != "") | |
3447 | 3440 | else false) | |
3448 | - | then (parseIntValue( | |
3441 | + | then (parseIntValue(gG) > 0) | |
3449 | 3442 | else false) | |
3450 | - | then parseIntValue(split( | |
3443 | + | then parseIntValue(split(aY[parseIntValue(dh)], "_")[ba]) | |
3451 | 3444 | else 0 | |
3452 | 3445 | } | |
3453 | 3446 | } | |
3454 | - | let | |
3455 | - | let | |
3456 | - | let | |
3457 | - | $Tuple2(([StringEntry( | |
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) | |
3458 | 3451 | } | |
3459 | 3452 | } | |
3460 | 3453 | } | |
3462 | 3455 | ||
3463 | 3456 | ||
3464 | 3457 | ||
3465 | - | @Callable( | |
3466 | - | func fortificateLand (Q, | |
3467 | - | let | |
3468 | - | if ((size( | |
3458 | + | @Callable(gO) | |
3459 | + | func fortificateLand (Q,og) = { | |
3460 | + | let mp = ml(gO) | |
3461 | + | if ((size(gO.payments) != 0)) | |
3469 | 3462 | then throw("No payments required") | |
3470 | 3463 | 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 | |
3491 | 3480 | let oo = on._2 | |
3492 | 3481 | 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)) | |
3503 | 3496 | then throw("Access denied") | |
3504 | 3497 | else { | |
3505 | - | let | |
3506 | - | let | |
3507 | - | let | |
3508 | - | let | |
3509 | - | let | |
3510 | - | let | |
3511 | - | let | |
3512 | - | $Tuple2([IntegerEntry(K(B), | |
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) | |
3513 | 3506 | } | |
3514 | 3507 | ||
3515 | 3508 | ||
3516 | 3509 | ||
3517 | - | @Callable( | |
3510 | + | @Callable(gO) | |
3518 | 3511 | func breakAttempt () = { | |
3519 | - | let | |
3520 | - | let B = valueOrErrorMessage(getString( | |
3521 | - | let | |
3522 | - | let | |
3523 | - | if ((split( | |
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")) | |
3524 | 3517 | then throw("Your duck is not in the tournament") | |
3525 | 3518 | else { | |
3526 | - | let | |
3527 | - | let | |
3528 | - | $Tuple2((( | |
3529 | - | } | |
3530 | - | } | |
3531 | - | ||
3532 | - | ||
3533 | - | ||
3534 | - | @Callable( | |
3535 | - | func exitTournamentInternal (B) = if (( | |
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)) | |
3536 | 3529 | then throw("Access denied") | |
3537 | 3530 | else { | |
3538 | - | let | |
3539 | - | let | |
3540 | - | $Tuple2([IntegerEntry(A(B), | |
3531 | + | let ov = getIntegerValue(K(B)) | |
3532 | + | let lE = getStringValue(L(B)) | |
3533 | + | $Tuple2([IntegerEntry(A(B), ov), StringEntry(bP(B), lE)], false) | |
3541 | 3534 | } | |
3542 | 3535 | ||
3543 | 3536 | ||
3544 | 3537 | ||
3545 | - | @Callable( | |
3546 | - | func exitDeliveryInternal (B) = if (( | |
3538 | + | @Callable(gO) | |
3539 | + | func exitDeliveryInternal (B) = if ((gO.caller != this)) | |
3547 | 3540 | then throw("Access denied") | |
3548 | 3541 | else { | |
3549 | - | let | |
3550 | - | $Tuple2(( | |
3542 | + | let nl = lv(B, false, 0, 0) | |
3543 | + | $Tuple2((nl._1 ++ nl._2), false) | |
3551 | 3544 | } | |
3552 | 3545 | ||
3553 | 3546 | ||
3554 | 3547 | ||
3555 | - | @Callable( | |
3556 | - | func autoExitDelivery (B, | |
3548 | + | @Callable(gO) | |
3549 | + | func autoExitDelivery (B,jY,ow,lw) = if ((gO.caller != this)) | |
3557 | 3550 | then throw("Access denied") | |
3558 | 3551 | else { | |
3559 | - | let | |
3560 | - | $Tuple2( | |
3552 | + | let nl = lv(B, true, jY, lw) | |
3553 | + | $Tuple2(nl._1, nl._3) | |
3561 | 3554 | } | |
3562 | 3555 | ||
3563 | 3556 | ||
3564 | 3557 | ||
3565 | - | @Callable( | |
3566 | - | func breakDelivery () = $Tuple2( | |
3567 | - | ||
3568 | - | ||
3569 | - | ||
3570 | - | @Callable( | |
3571 | - | func prepareRobbery ( | |
3572 | - | let | |
3573 | - | if (!(sigVerify_8Kb( | |
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))) | |
3574 | 3567 | then throw("signature does not match") | |
3575 | - | else if ((size( | |
3568 | + | else if ((size(gO.payments) != 1)) | |
3576 | 3569 | then throw("exactly 1 payment must be attached") | |
3577 | 3570 | else { | |
3578 | - | let | |
3579 | - | let | |
3580 | - | if (if (!(isDefined( | |
3571 | + | let mq = gO.payments[0] | |
3572 | + | let ox = mq.amount | |
3573 | + | if (if (!(isDefined(mq.assetId))) | |
3581 | 3574 | then true | |
3582 | - | else (value( | |
3575 | + | else (value(mq.assetId) != dt)) | |
3583 | 3576 | then throw("WLGOLD payments only!") | |
3584 | 3577 | else { | |
3585 | - | let | |
3586 | - | if ((size( | |
3578 | + | let ft = split(toUtf8String(jT), "|") | |
3579 | + | if ((size(ft) != 2)) | |
3587 | 3580 | then throw("Wrong message format") | |
3588 | 3581 | else { | |
3589 | - | let B = | |
3590 | - | if ( | |
3582 | + | let B = ft[0] | |
3583 | + | if (lt(B)) | |
3591 | 3584 | then throw("prepareRobbery_checkTournament") | |
3592 | - | else if ( | |
3585 | + | else if (lu(B)) | |
3593 | 3586 | then throw("prepareRobbery_checkDelivery") | |
3594 | 3587 | else { | |
3595 | 3588 | let aB = ax(this, B)._1 | |
3596 | - | if ((aB > | |
3597 | - | then throw(((("Payment " + toString( | |
3589 | + | if ((aB > ox)) | |
3590 | + | then throw(((("Payment " + toString(ox)) + " < required ") + toString(aB))) | |
3598 | 3591 | else { | |
3599 | - | let | |
3592 | + | let oy = split(ft[1], "_") | |
3600 | 3593 | let aA = lastBlock.timestamp | |
3601 | 3594 | let aC = valueOrElse(getInteger(S(B)), 0) | |
3602 | 3595 | let aD = valueOrElse(getString(T(B)), "") | |
3606 | 3599 | else false) | |
3607 | 3600 | then throw(("You already started robbing, wait till " + toString(aE))) | |
3608 | 3601 | else { | |
3609 | - | func | |
3610 | - | let | |
3611 | - | let | |
3612 | - | if (( | |
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))) | |
3613 | 3606 | then throw("Invalid state") | |
3614 | - | else if ((aA > | |
3607 | + | else if ((aA > oB)) | |
3615 | 3608 | then { | |
3616 | - | let | |
3617 | - | if ((0 >= | |
3618 | - | then | |
3609 | + | let oC = valueOrElse(getInteger(bx(Q)), 0) | |
3610 | + | if ((0 >= oC)) | |
3611 | + | then eV | |
3619 | 3612 | else { | |
3620 | - | let | |
3621 | - | let | |
3622 | - | let | |
3623 | - | let | |
3624 | - | let | |
3625 | - | let | |
3626 | - | if ((w > | |
3627 | - | then | |
3628 | - | else ( | |
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) | |
3629 | 3622 | } | |
3630 | 3623 | } | |
3631 | - | else | |
3624 | + | else eV | |
3632 | 3625 | } | |
3633 | 3626 | ||
3634 | - | let | |
3635 | - | let | |
3636 | - | let | |
3637 | - | let | |
3638 | - | func | |
3639 | - | then | |
3640 | - | else | |
3641 | - | ||
3642 | - | func | |
3643 | - | then | |
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 | |
3644 | 3637 | else throw("List size exceeds 10") | |
3645 | 3638 | ||
3646 | - | | |
3639 | + | fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
3647 | 3640 | } | |
3648 | - | if ((size( | |
3641 | + | if ((size(oE) == 0)) | |
3649 | 3642 | then throw("No candidates for robbery") | |
3650 | 3643 | else { | |
3651 | - | let | |
3652 | - | let Q = | |
3653 | - | $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (aA + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), 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) | |
3654 | 3647 | } | |
3655 | 3648 | } | |
3656 | 3649 | } | |
3662 | 3655 | ||
3663 | 3656 | ||
3664 | 3657 | ||
3665 | - | @Callable( | |
3666 | - | func robLand ( | |
3667 | - | let | |
3668 | - | if (!(sigVerify_8Kb( | |
3658 | + | @Callable(gO) | |
3659 | + | func robLand (jT,jU) = { | |
3660 | + | let mp = ml(gO) | |
3661 | + | if (!(sigVerify_8Kb(jT, jU, ed))) | |
3669 | 3662 | then throw("signature does not match") | |
3670 | 3663 | else { | |
3671 | - | let | |
3672 | - | let B = valueOrErrorMessage(getString( | |
3664 | + | let bR = toString(gO.caller) | |
3665 | + | let B = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked") | |
3673 | 3666 | let aA = lastBlock.timestamp | |
3674 | - | $Tuple2(( | |
3675 | - | } | |
3676 | - | } | |
3677 | - | ||
3678 | - | ||
3679 | - | ||
3680 | - | @Callable( | |
3667 | + | $Tuple2((mp :+ IntegerEntry(N(B), aA)), 0) | |
3668 | + | } | |
3669 | + | } | |
3670 | + | ||
3671 | + | ||
3672 | + | ||
3673 | + | @Callable(gO) | |
3681 | 3674 | func acceptDelivery () = { | |
3682 | - | let | |
3683 | - | let | |
3684 | - | let B = valueOrErrorMessage(getString( | |
3685 | - | let | |
3686 | - | let | |
3687 | - | if (( | |
3688 | - | then throw(((("Delivery is not available, fund=" + | |
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))) | |
3689 | 3682 | else { | |
3690 | 3683 | let aA = lastBlock.timestamp | |
3691 | - | let | |
3692 | - | if (( | |
3693 | - | then throw(("Delivery is forbidden for your duck until " + toString( | |
3684 | + | let oH = valueOrElse(getInteger(U(B)), 0) | |
3685 | + | if ((oH > aA)) | |
3686 | + | then throw(("Delivery is forbidden for your duck until " + toString(oH))) | |
3694 | 3687 | else { | |
3695 | 3688 | let av = getIntegerValue(A(B)) | |
3696 | 3689 | if ((0 >= av)) | |
3697 | 3690 | then throw("You cannot accept delivery with zero health") | |
3698 | 3691 | else { | |
3699 | - | let | |
3700 | - | let | |
3701 | - | let | |
3702 | - | let | |
3703 | - | let | |
3704 | - | let | |
3705 | - | if (if (( | |
3706 | - | then ( | |
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) | |
3707 | 3700 | else false) | |
3708 | - | then throw((("You already used " + toString( | |
3709 | - | else if ( | |
3701 | + | then throw((("You already used " + toString(oL)) + " delivery attempts for today")) | |
3702 | + | else if (lt(B)) | |
3710 | 3703 | then throw("acceptDelivery_checkTournament") | |
3711 | - | else if ( | |
3704 | + | else if (lu(B)) | |
3712 | 3705 | then throw("acceptDelivery_checkDelivery") | |
3713 | 3706 | else { | |
3714 | - | let | |
3715 | - | let | |
3716 | - | let | |
3717 | - | let | |
3718 | - | $Tuple2(([StringEntry(L(B), | |
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)) | |
3719 | 3712 | then 0 | |
3720 | - | else | |
3713 | + | else fV)] ++ mp), $Tuple2(oN, oM)) | |
3721 | 3714 | } | |
3722 | 3715 | } | |
3723 | 3716 | } | |
3726 | 3719 | ||
3727 | 3720 | ||
3728 | 3721 | ||
3729 | - | @Callable( | |
3730 | - | func checkDeliveryCallback (B) = if (( | |
3722 | + | @Callable(gO) | |
3723 | + | func checkDeliveryCallback (B) = if ((gO.caller != dm)) | |
3731 | 3724 | then throw("Access denied") | |
3732 | - | else $Tuple2(nil, | |
3733 | - | ||
3734 | - | ||
3735 | - | ||
3736 | - | @Callable( | |
3737 | - | func genTestREADONLY ( | |
3738 | - | let | |
3739 | - | let | |
3740 | - | $Tuple2(nil, | |
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)) | |
3741 | 3734 | } | |
3742 | 3735 | ||
3743 | 3736 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = 86400000 | |
5 | 5 | ||
6 | 6 | func b (c) = ("lastArbTimeUser_" + c) | |
7 | 7 | ||
8 | 8 | ||
9 | 9 | func d (c) = ("acresStakedAmountByUser_" + c) | |
10 | 10 | ||
11 | 11 | ||
12 | 12 | let e = 100000000 | |
13 | 13 | ||
14 | 14 | let f = 3200 | |
15 | 15 | ||
16 | 16 | let g = 4000 | |
17 | 17 | ||
18 | 18 | let h = 3 | |
19 | 19 | ||
20 | 20 | let i = 100000000 | |
21 | 21 | ||
22 | 22 | let j = 400 | |
23 | 23 | ||
24 | 24 | let k = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"] | |
25 | 25 | ||
26 | 26 | let l = 0 | |
27 | 27 | ||
28 | 28 | let m = 1 | |
29 | 29 | ||
30 | 30 | let n = 2 | |
31 | 31 | ||
32 | 32 | let o = 3 | |
33 | 33 | ||
34 | 34 | let p = 4 | |
35 | 35 | ||
36 | 36 | let q = 0 | |
37 | 37 | ||
38 | 38 | let r = 6 | |
39 | 39 | ||
40 | 40 | let s = 2 | |
41 | 41 | ||
42 | 42 | let t = 2 | |
43 | 43 | ||
44 | 44 | let u = 30 | |
45 | 45 | ||
46 | 46 | let v = [0, 600000, 900000, 43200000, 21600000] | |
47 | 47 | ||
48 | 48 | let w = 20000000 | |
49 | 49 | ||
50 | 50 | let x = 1 | |
51 | 51 | ||
52 | 52 | let y = 0 | |
53 | 53 | ||
54 | 54 | let z = 1 | |
55 | 55 | ||
56 | 56 | func A (B) = ("duckHealth_" + B) | |
57 | 57 | ||
58 | 58 | ||
59 | 59 | func C (B) = ("duckChars_" + B) | |
60 | 60 | ||
61 | 61 | ||
62 | 62 | func D (B) = ("duckXP_" + B) | |
63 | 63 | ||
64 | 64 | ||
65 | 65 | func E (B) = ("duckLevel_" + B) | |
66 | 66 | ||
67 | 67 | ||
68 | 68 | func F (B) = ("duckFreePoints_" + B) | |
69 | 69 | ||
70 | 70 | ||
71 | 71 | func G (B) = ("duckEquipment_" + B) | |
72 | 72 | ||
73 | 73 | ||
74 | 74 | func H (c) = ("userXP_" + c) | |
75 | 75 | ||
76 | 76 | ||
77 | 77 | func I (c) = ("userLevel_" + c) | |
78 | 78 | ||
79 | 79 | ||
80 | 80 | func J (c) = ("userFreePoints_" + c) | |
81 | 81 | ||
82 | 82 | ||
83 | 83 | func K (B) = ("savedHealth_" + B) | |
84 | 84 | ||
85 | 85 | ||
86 | 86 | func L (B) = ("savedLocation_" + B) | |
87 | 87 | ||
88 | 88 | ||
89 | 89 | func M (B) = ("duckBuffs_" + B) | |
90 | 90 | ||
91 | 91 | ||
92 | 92 | func N (B) = ("lastRobberyTime_" + B) | |
93 | 93 | ||
94 | 94 | ||
95 | 95 | func O (B) = ("lastRobberyCost_" + B) | |
96 | 96 | ||
97 | 97 | ||
98 | 98 | func P (Q) = ("landRobberyState_" + Q) | |
99 | 99 | ||
100 | 100 | ||
101 | 101 | func R (Q) = ("landCooldownETA_" + Q) | |
102 | 102 | ||
103 | 103 | ||
104 | 104 | func S (B) = ("duckRobberyState_" + B) | |
105 | 105 | ||
106 | 106 | ||
107 | 107 | func T (B) = ("lockedLandByDuck_" + B) | |
108 | 108 | ||
109 | 109 | ||
110 | 110 | func U (B) = ("deliveryDelayByDuck_" + B) | |
111 | 111 | ||
112 | 112 | ||
113 | 113 | func V (c) = ("userDeliveryCount_" + c) | |
114 | 114 | ||
115 | 115 | ||
116 | 116 | func W (c) = ("userLastDeliveryDay_" + c) | |
117 | 117 | ||
118 | 118 | ||
119 | 119 | let X = 10000 | |
120 | 120 | ||
121 | 121 | let Y = 10000 | |
122 | 122 | ||
123 | 123 | let Z = 2000 | |
124 | 124 | ||
125 | 125 | let aa = 100000 | |
126 | 126 | ||
127 | 127 | let ab = 1000000 | |
128 | 128 | ||
129 | 129 | let ac = 5000000 | |
130 | 130 | ||
131 | 131 | let ad = 10000 | |
132 | 132 | ||
133 | 133 | let ae = 1000000 | |
134 | 134 | ||
135 | 135 | let af = 1000000 | |
136 | 136 | ||
137 | 137 | let ag = 10000 | |
138 | 138 | ||
139 | 139 | func ah (ai) = fraction(f, pow(ai, 4, g, 4, 4, DOWN), e) | |
140 | 140 | ||
141 | 141 | ||
142 | 142 | func aj (ak) = (100 + ak) | |
143 | 143 | ||
144 | 144 | ||
145 | 145 | func al (am,an) = { | |
146 | 146 | let ao = ah(an) | |
147 | 147 | [ao, (h * (ao - am))] | |
148 | 148 | } | |
149 | 149 | ||
150 | 150 | ||
151 | 151 | func ap (aq,B,ar,as) = { | |
152 | 152 | let at = split(valueOrElse(getString(aq, C(B)), "0_0_0_0_0"), "_") | |
153 | 153 | let au = valueOrElse(getInteger(aq, E(B)), 0) | |
154 | 154 | let av = valueOrElse(getInteger(aq, A(B)), aj(au)) | |
155 | 155 | let aw = split(valueOrElse(getString(aq, M(B)), "0_0_0_0_0"), "_") | |
156 | 156 | ([parseIntValue(at[l]), parseIntValue(at[m]), parseIntValue(at[n]), parseIntValue(at[o]), parseIntValue(at[p]), au, av] ++ (if (as) | |
157 | 157 | then [ar, ar, ar, ar, ar] | |
158 | 158 | else [parseIntValue(aw[l]), parseIntValue(aw[m]), parseIntValue(aw[n]), parseIntValue(aw[o]), parseIntValue(aw[p])])) | |
159 | 159 | } | |
160 | 160 | ||
161 | 161 | ||
162 | 162 | func ax (aq,B) = { | |
163 | 163 | let ay = valueOrElse(getInteger(aq, O(B)), 0) | |
164 | 164 | let az = valueOrElse(getInteger(aq, N(B)), 0) | |
165 | 165 | let aA = lastBlock.timestamp | |
166 | 166 | let aB = max([i, (ay - (j * (aA - az)))]) | |
167 | 167 | let aC = valueOrElse(getInteger(aq, S(B)), 0) | |
168 | 168 | let aD = valueOrElse(getString(aq, T(B)), "") | |
169 | 169 | let aE = valueOrElse(getInteger(aq, R(aD)), 0) | |
170 | 170 | $Tuple5(aB, az, aC, aD, aE) | |
171 | 171 | } | |
172 | 172 | ||
173 | 173 | ||
174 | 174 | let aF = "LAND" | |
175 | 175 | ||
176 | 176 | let aG = "DUCK" | |
177 | 177 | ||
178 | 178 | let aH = "PRESALE" | |
179 | 179 | ||
180 | 180 | let aI = 6 | |
181 | 181 | ||
182 | - | let aJ = | |
183 | - | ||
184 | - | let aK = | |
185 | - | ||
186 | - | let aL = | |
187 | - | ||
188 | - | let aM = | |
189 | - | ||
190 | - | let aN = | |
191 | - | ||
192 | - | let aO = | |
193 | - | ||
194 | - | let aP = | |
195 | - | ||
196 | - | let aQ = | |
197 | - | ||
198 | - | let aR = | |
199 | - | ||
200 | - | let aS = | |
201 | - | ||
202 | - | let aT = | |
203 | - | ||
204 | - | let aU = [" | |
205 | - | ||
206 | - | let aV = | |
207 | - | ||
208 | - | let aW = | |
209 | - | ||
210 | - | let aX = [ | |
211 | - | ||
212 | - | let aY = | |
213 | - | ||
214 | - | let aZ = | |
215 | - | ||
216 | - | let ba = | |
217 | - | ||
218 | - | let bb = | |
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 | |
219 | 219 | ||
220 | 220 | let bc = 10 | |
221 | 221 | ||
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, "_") | |
347 | 349 | let aA = lastBlock.timestamp | |
348 | - | let | |
349 | - | let | |
350 | - | let | |
351 | - | if (if (if (( | |
352 | - | then (parseIntValue( | |
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) | |
353 | 355 | else false) | |
354 | - | then ( | |
356 | + | then (ch[cd] == "INPROGRESS") | |
355 | 357 | else false) | |
356 | - | then (parseIntValue( | |
358 | + | then (parseIntValue(cg[cc]) > aA) | |
357 | 359 | else false | |
358 | 360 | } | |
359 | 361 | ||
360 | 362 | ||
361 | - | func | |
362 | - | let | |
363 | + | func cn (cj) = { | |
364 | + | let cl = split(cj, "_") | |
363 | 365 | let aA = lastBlock.timestamp | |
364 | - | let | |
365 | - | let | |
366 | - | if (if (( | |
367 | - | then (( | |
366 | + | let co = parseIntValue(cl[br]) | |
367 | + | let cp = parseIntValue(cl[bt]) | |
368 | + | if (if ((cl[bs] == "D")) | |
369 | + | then ((co + aR) > aA) | |
368 | 370 | else false) | |
369 | - | then (3 >= | |
371 | + | then (3 >= cp) | |
370 | 372 | else false | |
371 | 373 | } | |
372 | 374 | ||
373 | 375 | ||
374 | - | func | |
375 | - | let | |
376 | - | if (( | |
377 | - | then ( | |
376 | + | func cq (cj) = { | |
377 | + | let cr = split(cj, "_")[bs] | |
378 | + | if ((cr != "T")) | |
379 | + | then (cr != "D") | |
378 | 380 | else false | |
379 | 381 | } | |
380 | 382 | ||
381 | 383 | ||
382 | - | func | |
383 | - | let | |
384 | - | let | |
384 | + | func cs (cf,cj) = { | |
385 | + | let ck = valueOrElse(getInteger(cf, bV), 0) | |
386 | + | let cl = split(cj, "_") | |
385 | 387 | let aA = lastBlock.timestamp | |
386 | - | let | |
387 | - | let | |
388 | - | let | |
389 | - | let | |
390 | - | if (( | |
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")) | |
391 | 393 | then true | |
392 | - | else if (if (if (( | |
393 | - | then (parseIntValue( | |
394 | + | else if (if (if ((cl[bs] == "T")) | |
395 | + | then (parseIntValue(cl[br]) == ck) | |
394 | 396 | else false) | |
395 | - | then ( | |
397 | + | then (ch[cd] == "INPROGRESS") | |
396 | 398 | else false) | |
397 | - | then (parseIntValue( | |
399 | + | then (parseIntValue(cg[cc]) > aA) | |
398 | 400 | else false | |
399 | 401 | } | |
400 | 402 | ||
401 | 403 | ||
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 | + | ||
409 | 409 | ||
410 | 410 | let cz = false | |
411 | 411 | ||
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)) | |
419 | 421 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
420 | - | else if ((base58'2T' == | |
422 | + | else if ((base58'2T' == cE)) | |
421 | 423 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
422 | 424 | else throw("Unknown chain") | |
423 | 425 | } | |
424 | 426 | ||
425 | - | let | |
426 | - | let | |
427 | - | if ((base58'2W' == | |
427 | + | let cF = { | |
428 | + | let cE = cC | |
429 | + | if ((base58'2W' == cE)) | |
428 | 430 | then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv" | |
429 | - | else if ((base58'2T' == | |
431 | + | else if ((base58'2T' == cE)) | |
430 | 432 | then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy" | |
431 | 433 | else throw("Unknown chain") | |
432 | 434 | } | |
433 | 435 | ||
434 | - | let | |
435 | - | let | |
436 | - | if ((base58'2W' == | |
436 | + | let cG = { | |
437 | + | let cE = cC | |
438 | + | if ((base58'2W' == cE)) | |
437 | 439 | then 10000000000 | |
438 | - | else if ((base58'2T' == | |
440 | + | else if ((base58'2T' == cE)) | |
439 | 441 | then 100000000 | |
440 | 442 | else throw("Unknown chain") | |
441 | 443 | } | |
442 | 444 | ||
443 | - | let | |
444 | - | let | |
445 | - | if ((base58'2W' == | |
446 | - | then | |
447 | - | else if ((base58'2T' == | |
445 | + | let cH = { | |
446 | + | let cE = cC | |
447 | + | if ((base58'2W' == cE)) | |
448 | + | then cB | |
449 | + | else if ((base58'2T' == cE)) | |
448 | 450 | then 60000 | |
449 | 451 | else throw("Unknown chain") | |
450 | 452 | } | |
451 | 453 | ||
452 | - | let | |
453 | - | let | |
454 | - | if ((base58'2W' == | |
454 | + | let cI = { | |
455 | + | let cE = cC | |
456 | + | if ((base58'2W' == cE)) | |
455 | 457 | then 10800000 | |
456 | - | else if ((base58'2T' == | |
458 | + | else if ((base58'2T' == cE)) | |
457 | 459 | then 900000 | |
458 | 460 | else throw("Unknown chain") | |
459 | 461 | } | |
460 | 462 | ||
461 | - | let | |
462 | - | ||
463 | - | let | |
464 | - | ||
465 | - | let | |
466 | - | ||
467 | - | let | |
468 | - | ||
469 | - | let | |
470 | - | ||
471 | - | let | |
472 | - | ||
473 | - | let | |
474 | - | ||
475 | - | let | |
476 | - | ||
477 | - | let | |
478 | - | ||
479 | - | func | |
480 | - | ||
481 | - | ||
482 | - | let | |
483 | - | ||
484 | - | let | |
485 | - | ||
486 | - | let | |
487 | - | ||
488 | - | let | |
489 | - | ||
490 | - | let | |
491 | - | ||
492 | - | let | |
493 | - | ||
494 | - | func | |
495 | - | ||
496 | - | ||
497 | - | func | |
498 | - | ||
499 | - | ||
500 | - | func | |
501 | - | ||
502 | - | ||
503 | - | func | |
504 | - | ||
505 | - | ||
506 | - | let | |
507 | - | ||
508 | - | let | |
509 | - | ||
510 | - | let aq = | |
511 | - | ||
512 | - | let | |
513 | - | ||
514 | - | let | |
515 | - | ||
516 | - | let | |
517 | - | ||
518 | - | let | |
519 | - | ||
520 | - | let | |
521 | - | ||
522 | - | let | |
523 | - | ||
524 | - | let | |
525 | - | ||
526 | - | let | |
527 | - | ||
528 | - | let | |
529 | - | ||
530 | - | let | |
531 | - | ||
532 | - | let | |
533 | - | ||
534 | - | let | |
535 | - | ||
536 | - | let | |
537 | - | ||
538 | - | let | |
539 | - | ||
540 | - | func | |
541 | - | ||
542 | - | ||
543 | - | func | |
544 | - | ||
545 | - | ||
546 | - | func | |
547 | - | ||
548 | - | ||
549 | - | func | |
550 | - | ||
551 | - | ||
552 | - | func | |
553 | - | ||
554 | - | ||
555 | - | func | |
556 | - | let | |
557 | - | if ($isInstanceOf( | |
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")) | |
558 | 560 | then { | |
559 | - | let | |
560 | - | | |
561 | + | let dF = cE | |
562 | + | dF | |
561 | 563 | } | |
562 | 564 | else throw("fail to cast into String") | |
563 | 565 | } | |
564 | 566 | ||
565 | 567 | ||
566 | - | func | |
567 | - | let | |
568 | - | if ($isInstanceOf( | |
568 | + | func dG (dE) = { | |
569 | + | let cE = dE | |
570 | + | if ($isInstanceOf(cE, "Int")) | |
569 | 571 | then { | |
570 | - | let | |
571 | - | | |
572 | + | let dH = cE | |
573 | + | dH | |
572 | 574 | } | |
573 | 575 | else throw("fail to cast into Int") | |
574 | 576 | } | |
575 | 577 | ||
576 | 578 | ||
577 | - | func | |
578 | - | let | |
579 | - | if ($isInstanceOf( | |
579 | + | func dI (dE) = { | |
580 | + | let cE = dE | |
581 | + | if ($isInstanceOf(cE, "List[Any]")) | |
580 | 582 | then { | |
581 | - | let | |
582 | - | | |
583 | + | let dJ = cE | |
584 | + | dJ | |
583 | 585 | } | |
584 | 586 | else throw("fail to cast into List[Any]") | |
585 | 587 | } | |
586 | 588 | ||
587 | 589 | ||
588 | - | func | |
589 | - | let | |
590 | - | if ($isInstanceOf( | |
590 | + | func dK (dE) = { | |
591 | + | let cE = dE | |
592 | + | if ($isInstanceOf(cE, "Boolean")) | |
591 | 593 | then { | |
592 | - | let | |
593 | - | | |
594 | + | let dF = cE | |
595 | + | dF | |
594 | 596 | } | |
595 | 597 | else throw("fail to cast into Boolean") | |
596 | 598 | } | |
597 | 599 | ||
598 | 600 | ||
599 | - | func | |
600 | - | let | |
601 | - | if (("S" == | |
602 | - | then | |
603 | - | else if (("M" == | |
604 | - | then | |
605 | - | else if (("L" == | |
606 | - | then | |
607 | - | else if (("XL" == | |
608 | - | then | |
609 | - | else if (("XXL" == | |
610 | - | then | |
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 | |
611 | 613 | else throw("Unknown land size") | |
612 | 614 | } | |
613 | 615 | ||
614 | 616 | ||
615 | - | func | |
616 | - | ||
617 | - | ||
618 | - | func | |
619 | - | ||
620 | - | ||
621 | - | func | |
622 | - | ||
623 | - | ||
624 | - | func | |
625 | - | let | |
626 | - | let | |
627 | - | let | |
628 | - | (((toString(( | |
629 | - | } | |
630 | - | ||
631 | - | ||
632 | - | func | |
633 | - | let | |
634 | - | (toInt( | |
635 | - | } | |
636 | - | ||
637 | - | ||
638 | - | let | |
639 | - | let | |
640 | - | if ((base58'2W' == | |
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)) | |
641 | 643 | then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv") | |
642 | - | else if ((base58'2T' == | |
644 | + | else if ((base58'2T' == cE)) | |
643 | 645 | then this | |
644 | 646 | else throw("Unknown chain") | |
645 | 647 | } | |
646 | 648 | ||
647 | - | let | |
648 | - | let | |
649 | - | if ((base58'2W' == | |
649 | + | let ec = { | |
650 | + | let cE = cC | |
651 | + | if ((base58'2W' == cE)) | |
650 | 652 | then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb") | |
651 | - | else if ((base58'2T' == | |
653 | + | else if ((base58'2T' == cE)) | |
652 | 654 | then this | |
653 | 655 | else throw("Unknown chain") | |
654 | 656 | } | |
655 | 657 | ||
656 | - | let | |
657 | - | let | |
658 | - | if ((base58'2W' == | |
659 | - | then if ( | |
658 | + | let ed = { | |
659 | + | let cE = cC | |
660 | + | if ((base58'2W' == cE)) | |
661 | + | then if (cz) | |
660 | 662 | then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm' | |
661 | 663 | else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
662 | - | else if ((base58'2T' == | |
664 | + | else if ((base58'2T' == cE)) | |
663 | 665 | then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
664 | 666 | else throw("Unknown chain") | |
665 | 667 | } | |
666 | 668 | ||
667 | - | let | |
668 | - | ||
669 | - | let | |
670 | - | ||
671 | - | let | |
672 | - | ||
673 | - | let | |
674 | - | ||
675 | - | let | |
676 | - | ||
677 | - | let | |
678 | - | let | |
679 | - | if ((base58'2W' == | |
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)) | |
680 | 682 | then 252289527462 | |
681 | - | else if ((base58'2T' == | |
683 | + | else if ((base58'2T' == cE)) | |
682 | 684 | then 2522895274 | |
683 | 685 | else throw("Unknown chain") | |
684 | 686 | } | |
685 | 687 | ||
686 | - | let | |
687 | - | let | |
688 | - | if ((base58'2W' == | |
688 | + | let ek = { | |
689 | + | let cE = cC | |
690 | + | if ((base58'2W' == cE)) | |
689 | 691 | then 250000000 | |
690 | - | else if ((base58'2T' == | |
692 | + | else if ((base58'2T' == cE)) | |
691 | 693 | then 250000000 | |
692 | 694 | else throw("Unknown chain") | |
693 | 695 | } | |
694 | 696 | ||
695 | - | let | |
696 | - | ||
697 | - | let | |
698 | - | ||
699 | - | let | |
700 | - | ||
701 | - | let | |
702 | - | ||
703 | - | let | |
704 | - | ||
705 | - | let | |
706 | - | ||
707 | - | let | |
708 | - | ||
709 | - | let | |
710 | - | ||
711 | - | func | |
712 | - | ||
713 | - | ||
714 | - | func | |
715 | - | ||
716 | - | ||
717 | - | func | |
718 | - | ||
719 | - | ||
720 | - | func | |
721 | - | ||
722 | - | ||
723 | - | func | |
724 | - | ||
725 | - | ||
726 | - | func | |
727 | - | ||
728 | - | ||
729 | - | func | |
730 | - | ||
731 | - | ||
732 | - | func | |
733 | - | ||
734 | - | ||
735 | - | let | |
736 | - | ||
737 | - | let | |
738 | - | ||
739 | - | let | |
740 | - | ||
741 | - | let | |
742 | - | ||
743 | - | let | |
744 | - | ||
745 | - | let | |
746 | - | ||
747 | - | let | |
748 | - | ||
749 | - | func | |
750 | - | ||
751 | - | ||
752 | - | func | |
753 | - | let | |
754 | - | then ((( | |
755 | - | else -((((-( | |
756 | - | ( | |
757 | - | } | |
758 | - | ||
759 | - | ||
760 | - | func | |
761 | - | let | |
762 | - | if ((0 >= | |
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)) | |
763 | 765 | then throw("Zero weights sum") | |
764 | 766 | else { | |
765 | - | let | |
766 | - | func | |
767 | - | ||
768 | - | let | |
769 | - | let | |
770 | - | let | |
771 | - | func | |
772 | - | then | |
773 | - | else | |
774 | - | ||
775 | - | func | |
776 | - | then | |
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 | |
777 | 779 | else throw("List size exceeds 6") | |
778 | 780 | ||
779 | - | | |
780 | - | } | |
781 | - | } | |
782 | - | ||
783 | - | ||
784 | - | func | |
785 | - | let | |
786 | - | if ((size( | |
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)) | |
787 | 789 | then throw("Wrong proportions data") | |
788 | 790 | else { | |
789 | - | let | |
790 | - | | |
791 | - | } | |
792 | - | } | |
793 | - | ||
794 | - | ||
795 | - | func | |
796 | - | let | |
797 | - | func | |
798 | - | let | |
799 | - | if ((0 > | |
800 | - | then throw(((((("Not enough material idx=" + toString( | |
801 | - | else ( | |
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)) | |
802 | 804 | } | |
803 | 805 | ||
804 | - | if ( | |
806 | + | if (fi) | |
805 | 807 | then { | |
806 | - | let | |
807 | - | let | |
808 | - | let | |
809 | - | func | |
810 | - | then | |
811 | - | else | |
812 | - | ||
813 | - | func | |
814 | - | then | |
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 | |
815 | 817 | else throw("List size exceeds 6") | |
816 | 818 | ||
817 | - | | |
818 | - | } | |
819 | - | else | |
820 | - | } | |
821 | - | ||
822 | - | ||
823 | - | func | |
824 | - | then $Tuple2( | |
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) | |
825 | 827 | else { | |
826 | - | func | |
827 | - | let | |
828 | - | if ((size( | |
828 | + | func fr (eV,fs) = { | |
829 | + | let ft = split(fs, ",") | |
830 | + | if ((size(ft) != 2)) | |
829 | 831 | then throw("Incorrect format, should be index,amount") | |
830 | 832 | else { | |
831 | - | let | |
832 | - | if (if ((0 > | |
833 | + | let dh = parseIntValue(ft[0]) | |
834 | + | if (if ((0 > dh)) | |
833 | 835 | then true | |
834 | - | else ( | |
836 | + | else (dh >= size(aY))) | |
835 | 837 | then throw("Unknown product idx") | |
836 | 838 | else { | |
837 | - | let | |
838 | - | let | |
839 | - | if ((size( | |
840 | - | then throw((("You don't have " + | |
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")) | |
841 | 843 | else { | |
842 | - | let | |
843 | - | let | |
844 | + | let fw = fv[1] | |
845 | + | let fx = if (dN(take(drop(fw, 1), 1))) | |
844 | 846 | then 2 | |
845 | 847 | else 1 | |
846 | - | let | |
847 | - | let | |
848 | - | let | |
849 | - | then ( | |
850 | - | else throw(((((("You equipped " + toString( | |
851 | - | $Tuple2((((( | |
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) | |
852 | 854 | then true | |
853 | - | else if (if (( | |
854 | - | then (8 >= | |
855 | + | else if (if ((dh >= 6)) | |
856 | + | then (8 >= dh) | |
855 | 857 | else false) | |
856 | - | then ( | |
858 | + | then (fA == 0) | |
857 | 859 | else false) | |
858 | 860 | } | |
859 | 861 | } | |
860 | 862 | } | |
861 | 863 | } | |
862 | 864 | ||
863 | - | let | |
864 | - | let | |
865 | - | let | |
866 | - | func | |
867 | - | then | |
868 | - | else | |
869 | - | ||
870 | - | func | |
871 | - | then | |
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 | |
872 | 874 | else throw("List size exceeds 10") | |
873 | 875 | ||
874 | - | | |
876 | + | fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
875 | 877 | } | |
876 | 878 | ||
877 | 879 | ||
878 | - | func | |
879 | - | let | |
880 | + | func fB (fC) = { | |
881 | + | let fD = if ((fC == "")) | |
880 | 882 | then nil | |
881 | - | else split_4C( | |
882 | - | func | |
883 | - | let | |
884 | - | let | |
885 | - | then parseIntValue( | |
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]) | |
886 | 888 | else 0 | |
887 | - | ( | |
889 | + | (eV + toBytes(fy)) | |
888 | 890 | } | |
889 | 891 | ||
890 | - | let | |
891 | - | let | |
892 | - | let | |
893 | - | func | |
894 | - | then | |
895 | - | else | |
896 | - | ||
897 | - | func | |
898 | - | then | |
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 | |
899 | 901 | else throw("List size exceeds 50") | |
900 | 902 | ||
901 | - | | |
902 | - | } | |
903 | - | ||
904 | - | ||
905 | - | func | |
906 | - | func | |
907 | - | let | |
908 | - | let | |
909 | - | ( | |
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))) | |
910 | 912 | } | |
911 | 913 | ||
912 | 914 | makeString_2C({ | |
913 | - | let | |
914 | - | let | |
915 | - | let | |
916 | - | func | |
917 | - | then | |
918 | - | else | |
919 | - | ||
920 | - | func | |
921 | - | then | |
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 | |
922 | 924 | else throw("List size exceeds 50") | |
923 | 925 | ||
924 | - | | |
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) | |
925 | 927 | }, "_") | |
926 | 928 | } | |
927 | 929 | ||
928 | 930 | ||
929 | - | func | |
930 | - | func | |
931 | - | let | |
932 | - | then | |
931 | + | func fK (fL,fM) = { | |
932 | + | func fN (eV,fF) = { | |
933 | + | let fO = if ((size(fL) > (7 + fF))) | |
934 | + | then fL[(7 + fF)] | |
933 | 935 | else 0 | |
934 | - | if ((parseIntValue( | |
935 | - | then throw(("Requirement not satisfied: " + k[ | |
936 | + | if ((parseIntValue(fM[fF]) > (fL[fF] + fO))) | |
937 | + | then throw(("Requirement not satisfied: " + k[fF])) | |
936 | 938 | else true | |
937 | 939 | } | |
938 | 940 | ||
939 | - | let | |
940 | - | let | |
941 | - | let | |
942 | - | func | |
943 | - | then | |
944 | - | else | |
945 | - | ||
946 | - | func | |
947 | - | then | |
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 | |
948 | 950 | else throw("List size exceeds 7") | |
949 | 951 | ||
950 | - | | |
951 | - | } | |
952 | - | ||
953 | - | ||
954 | - | func | |
955 | - | let | |
956 | - | if ((size( | |
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)) | |
957 | 959 | then throw("Incorrect format, should be index:amount") | |
958 | - | else if (if (!( | |
959 | - | then (size( | |
960 | + | else if (if (!(fR)) | |
961 | + | then (size(ft[0]) != 2) | |
960 | 962 | else false) | |
961 | 963 | then throw("Product idx should be 2 digits, zero padded") | |
962 | 964 | else { | |
963 | - | let | |
964 | - | let | |
965 | - | if (!(containsElement( | |
966 | - | then throw((("Product '" + | |
967 | - | else if ((0 > | |
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)) | |
968 | 970 | then throw("Count can't be negative") | |
969 | - | else if (( | |
970 | - | then throw(((("Can't put more than " + toString(u)) + " of ") + | |
971 | - | else if (( | |
972 | - | then $Tuple3( | |
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) | |
973 | 975 | else { | |
974 | - | let | |
975 | - | let | |
976 | - | let | |
977 | - | let | |
978 | - | if (if (!( | |
979 | - | then ( | |
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) | |
980 | 982 | else false) | |
981 | - | then throw(((((("You have " + toString( | |
983 | + | then throw(((((("You have " + toString(fy)) + " of ") + aU[fU]) + ", but tried to use ") + toString(fV))) | |
982 | 984 | else { | |
983 | - | let | |
984 | - | then | |
985 | + | let fA = if (if (!(fR)) | |
986 | + | then fK(fL, split(cu[bb], ",")) | |
985 | 987 | else false) | |
986 | - | then ( | |
987 | - | else ( | |
988 | - | let | |
989 | - | $Tuple3((( | |
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)) | |
990 | 992 | } | |
991 | 993 | } | |
992 | 994 | } | |
993 | 995 | } | |
994 | 996 | ||
995 | 997 | ||
996 | - | func | |
997 | - | let | |
998 | - | if ((size( | |
998 | + | func fY (fQ,fD,fR,fZ,ga,gb,fL) = { | |
999 | + | let ft = split(fQ, ":") | |
1000 | + | if ((size(ft) != 2)) | |
999 | 1001 | then throw("Incorrect format, should be index:amount") | |
1000 | - | else if (if (!( | |
1001 | - | then (size( | |
1002 | + | else if (if (!(fR)) | |
1003 | + | then (size(ft[0]) != 2) | |
1002 | 1004 | else false) | |
1003 | 1005 | then throw("Product idx should be 2 digits, zero padded") | |
1004 | 1006 | else { | |
1005 | - | let | |
1006 | - | let | |
1007 | - | if (if ((0 > | |
1007 | + | let fU = parseIntValue(ft[0]) | |
1008 | + | let fV = parseIntValue(ft[1]) | |
1009 | + | if (if ((0 > fU)) | |
1008 | 1010 | then true | |
1009 | - | else ( | |
1011 | + | else (fU >= size(aY))) | |
1010 | 1012 | then throw("Unknown product idx") | |
1011 | - | else if ((0 > | |
1013 | + | else if ((0 > fV)) | |
1012 | 1014 | then throw("Count can't be negative") | |
1013 | - | else if (( | |
1014 | - | then throw(((("Can't put more than " + toString(u)) + " of ") + | |
1015 | - | else if (( | |
1016 | - | then $Tuple2( | |
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) | |
1017 | 1019 | else { | |
1018 | - | let | |
1019 | - | let | |
1020 | - | let | |
1021 | - | let | |
1022 | - | if (if (!( | |
1023 | - | then ( | |
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) | |
1024 | 1026 | else false) | |
1025 | - | then throw(((((("You have " + toString( | |
1027 | + | then throw(((((("You have " + toString(fy)) + " of ") + aU[fU]) + ", but tried to use ") + toString(fV))) | |
1026 | 1028 | else { | |
1027 | - | let | |
1028 | - | then | |
1029 | + | let gc = if (if (!(fR)) | |
1030 | + | then fK(fL, split(cu[bb], ",")) | |
1029 | 1031 | else false) | |
1030 | 1032 | then { | |
1031 | - | let | |
1032 | - | if (( | |
1033 | + | let gd = cu[bc] | |
1034 | + | if ((gd == "")) | |
1033 | 1035 | then throw("Item cannot be equipped") | |
1034 | 1036 | else { | |
1035 | - | let | |
1036 | - | let | |
1037 | - | if (( | |
1037 | + | let ge = parseIntValue(gd) | |
1038 | + | let gf = (ge / 100) | |
1039 | + | if ((fZ != gf)) | |
1038 | 1040 | then throw("Segment incompatible") | |
1039 | 1041 | else { | |
1040 | - | let | |
1041 | - | if (( | |
1042 | + | let gg = ((ge % 100) / 10) | |
1043 | + | if ((ga != gg)) | |
1042 | 1044 | then throw("Slot incompatible") | |
1043 | 1045 | else { | |
1044 | - | let | |
1045 | - | if (if (( | |
1046 | - | then ( | |
1046 | + | let gh = (ge % 10) | |
1047 | + | if (if ((gb != 0)) | |
1048 | + | then (gh > 1) | |
1047 | 1049 | else false) | |
1048 | 1050 | then throw("Big items should occupy slot 0") | |
1049 | - | else ( | |
1051 | + | else (gh > 1) | |
1050 | 1052 | } | |
1051 | 1053 | } | |
1052 | 1054 | } | |
1053 | 1055 | } | |
1054 | 1056 | else false | |
1055 | - | $Tuple2((( | |
1056 | - | then | |
1057 | - | else -( | |
1057 | + | $Tuple2(((fW + toBytes((fy + (if (fR) | |
1058 | + | then fV | |
1059 | + | else -(fV))))) + fz), gc) | |
1058 | 1060 | } | |
1059 | 1061 | } | |
1060 | 1062 | } | |
1061 | 1063 | } | |
1062 | 1064 | ||
1063 | 1065 | ||
1064 | - | func | |
1066 | + | func gi (gj,gk,fR,fZ,ga,gl) = if ((gj != "")) | |
1065 | 1067 | then { | |
1066 | - | let | |
1067 | - | if ((size( | |
1068 | + | let gm = split(gj, ",") | |
1069 | + | if ((size(gm) > t)) | |
1068 | 1070 | then throw("Wrong slots format") | |
1069 | 1071 | else { | |
1070 | - | let | |
1071 | - | let | |
1072 | - | then | |
1072 | + | let gn = gm[0] | |
1073 | + | let go = if ((size(gm) > 1)) | |
1074 | + | then gm[1] | |
1073 | 1075 | else "" | |
1074 | - | if (if (( | |
1075 | - | then ( | |
1076 | + | if (if ((gn == "")) | |
1077 | + | then (go == "") | |
1076 | 1078 | else false) | |
1077 | - | then | |
1079 | + | then gk | |
1078 | 1080 | else { | |
1079 | - | let | |
1080 | - | then | |
1081 | - | else $Tuple2( | |
1082 | - | if (( | |
1083 | - | then if ( | |
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) | |
1084 | 1086 | then throw("Big item already occupies slot") | |
1085 | - | else | |
1086 | - | else | |
1087 | + | else fY(go, gp._1, fR, fZ, ga, 1, gl)._1 | |
1088 | + | else gp._1 | |
1087 | 1089 | } | |
1088 | 1090 | } | |
1089 | 1091 | } | |
1090 | - | else | |
1091 | - | ||
1092 | - | ||
1093 | - | func | |
1094 | - | func | |
1095 | - | let | |
1096 | - | let | |
1097 | - | if ((size( | |
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)) | |
1098 | 1100 | then throw("Wrong segment format") | |
1099 | 1101 | else { | |
1100 | - | let | |
1101 | - | let | |
1102 | - | if (if (( | |
1103 | - | then ( | |
1102 | + | let gu = ga[0] | |
1103 | + | let gv = ga[1] | |
1104 | + | if (if ((gu == "")) | |
1105 | + | then (gv == "") | |
1104 | 1106 | else false) | |
1105 | - | then $Tuple2(( | |
1107 | + | then $Tuple2((fF + 1), eV._2) | |
1106 | 1108 | else { | |
1107 | - | let | |
1108 | - | $Tuple2(( | |
1109 | + | let gw = gi(gu, eV._2, fR, fF, 0, gl) | |
1110 | + | $Tuple2((fF + 1), gi(gv, gw, fR, fF, 1, gl)) | |
1109 | 1111 | } | |
1110 | 1112 | } | |
1111 | 1113 | } | |
1112 | 1114 | ||
1113 | - | ( let | |
1114 | - | let | |
1115 | - | let | |
1116 | - | func | |
1117 | - | then | |
1118 | - | else | |
1119 | - | ||
1120 | - | func | |
1121 | - | then | |
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 | |
1122 | 1124 | else throw("List size exceeds 6") | |
1123 | 1125 | ||
1124 | - | | |
1125 | - | } | |
1126 | - | ||
1127 | - | ||
1128 | - | func | |
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))) | |
1129 | 1131 | then throw("At least duck, mines and traps parts are required") | |
1130 | 1132 | else { | |
1131 | - | func | |
1132 | - | let | |
1133 | - | if (( | |
1134 | - | then $Tuple4(( | |
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) | |
1135 | 1137 | else { | |
1136 | - | let | |
1137 | - | $Tuple4(( | |
1138 | + | let gy = fP(gt, eV._2, fR, fL, eV._3, eV._4) | |
1139 | + | $Tuple4((fF + 1), gy._1, gy._2, gy._3) | |
1138 | 1140 | } | |
1139 | 1141 | } | |
1140 | 1142 | ||
1141 | - | let | |
1142 | - | let | |
1143 | - | let | |
1144 | - | let | |
1145 | - | func | |
1146 | - | then | |
1147 | - | else | |
1148 | - | ||
1149 | - | func | |
1150 | - | then | |
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 | |
1151 | 1153 | else throw("List size exceeds 10") | |
1152 | 1154 | ||
1153 | - | | |
1154 | - | } | |
1155 | - | $Tuple3( | |
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) | |
1156 | 1158 | } | |
1157 | 1159 | ||
1158 | 1160 | ||
1159 | - | func | |
1160 | - | let | |
1161 | - | let | |
1162 | - | let | |
1163 | - | let | |
1164 | - | let ar = if (( | |
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 == "")) | |
1165 | 1167 | then 0 | |
1166 | 1168 | else { | |
1167 | - | let | |
1168 | - | if (( | |
1169 | + | let gF = split(gE, ",")[0] | |
1170 | + | if ((gF == "")) | |
1169 | 1171 | then 0 | |
1170 | 1172 | else { | |
1171 | - | let | |
1172 | - | let | |
1173 | - | let | |
1174 | - | if (if (if (if (if (( | |
1173 | + | let fQ = split(gF, ":") | |
1174 | + | let dh = fQ[0] | |
1175 | + | let gG = fQ[1] | |
1176 | + | if (if (if (if (if ((dh == "06")) | |
1175 | 1177 | then true | |
1176 | - | else ( | |
1178 | + | else (dh == "07")) | |
1177 | 1179 | then true | |
1178 | - | else ( | |
1179 | - | then ( | |
1180 | + | else (dh == "08")) | |
1181 | + | then (gG != "") | |
1180 | 1182 | else false) | |
1181 | - | then (parseIntValue( | |
1183 | + | then (parseIntValue(gG) > 0) | |
1182 | 1184 | else false) | |
1183 | - | then parseIntValue(split( | |
1185 | + | then parseIntValue(split(aY[parseIntValue(dh)], "_")[ba]) | |
1184 | 1186 | else 0 | |
1185 | 1187 | } | |
1186 | 1188 | } | |
1187 | - | let | |
1188 | - | let | |
1189 | - | ( | |
1190 | - | } | |
1191 | - | ||
1192 | - | ||
1193 | - | func | |
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)) | |
1194 | 1196 | then throw("Wrong proportions data") | |
1195 | 1197 | else { | |
1196 | - | func | |
1197 | - | let | |
1198 | - | if ((0 > | |
1199 | - | then throw(((((((("Panic! Pieces of type=" + toString( | |
1200 | - | else ( | |
1201 | - | } | |
1202 | - | ||
1203 | - | let | |
1204 | - | let | |
1205 | - | let | |
1206 | - | func | |
1207 | - | then | |
1208 | - | else | |
1209 | - | ||
1210 | - | func | |
1211 | - | then | |
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 | |
1212 | 1214 | else throw("List size exceeds 6") | |
1213 | 1215 | ||
1214 | - | | |
1216 | + | fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1215 | 1217 | } | |
1216 | 1218 | ||
1217 | 1219 | ||
1218 | - | func | |
1219 | - | let | |
1220 | - | makeString( | |
1221 | - | } | |
1222 | - | ||
1223 | - | ||
1224 | - | func | |
1225 | - | ||
1226 | - | ||
1227 | - | func | |
1228 | - | func | |
1229 | - | let | |
1230 | - | ( | |
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))) | |
1231 | 1233 | } | |
1232 | 1234 | ||
1233 | - | let | |
1234 | - | let | |
1235 | - | let | |
1236 | - | let | |
1237 | - | func | |
1238 | - | then | |
1239 | - | else | |
1240 | - | ||
1241 | - | func | |
1242 | - | then | |
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 | |
1243 | 1245 | else throw("List size exceeds 6") | |
1244 | 1246 | ||
1245 | - | | |
1247 | + | fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1246 | 1248 | } | |
1247 | - | makeString( | |
1248 | - | } | |
1249 | - | ||
1250 | - | ||
1251 | - | func | |
1252 | - | func | |
1253 | - | let | |
1254 | - | $Tuple2(( | |
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)) | |
1255 | 1257 | } | |
1256 | 1258 | ||
1257 | - | let | |
1258 | - | let | |
1259 | - | let | |
1260 | - | func | |
1261 | - | then | |
1262 | - | else | |
1263 | - | ||
1264 | - | func | |
1265 | - | then | |
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 | |
1266 | 1268 | else throw("List size exceeds 6") | |
1267 | 1269 | ||
1268 | - | | |
1269 | - | } | |
1270 | - | ||
1271 | - | ||
1272 | - | func | |
1273 | - | let | |
1274 | - | let | |
1275 | - | if (( | |
1276 | - | then $Tuple2(makeString( | |
1277 | - | else if (( | |
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)) | |
1278 | 1280 | then { | |
1279 | - | func | |
1280 | - | ||
1281 | - | let | |
1282 | - | let | |
1283 | - | let | |
1284 | - | let | |
1285 | - | func | |
1286 | - | then | |
1287 | - | else | |
1288 | - | ||
1289 | - | func | |
1290 | - | then | |
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 | |
1291 | 1293 | else throw("List size exceeds 6") | |
1292 | 1294 | ||
1293 | - | | |
1295 | + | fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1294 | 1296 | } | |
1295 | - | $Tuple2(makeString( | |
1297 | + | $Tuple2(makeString(fg, "_"), makeString(hb, "_")) | |
1296 | 1298 | } | |
1297 | 1299 | else { | |
1298 | - | func | |
1299 | - | let | |
1300 | - | $Tuple2(( | |
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)))) | |
1301 | 1303 | } | |
1302 | 1304 | ||
1303 | - | let | |
1304 | - | let | |
1305 | - | let | |
1306 | - | let | |
1307 | - | func | |
1308 | - | then | |
1309 | - | else | |
1310 | - | ||
1311 | - | func | |
1312 | - | then | |
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 | |
1313 | 1315 | else throw("List size exceeds 6") | |
1314 | 1316 | ||
1315 | - | | |
1317 | + | fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1316 | 1318 | } | |
1317 | - | $Tuple2(makeString( | |
1319 | + | $Tuple2(makeString(fg._1, "_"), makeString(fg._2, "_")) | |
1318 | 1320 | } | |
1319 | 1321 | } | |
1320 | 1322 | ||
1321 | 1323 | ||
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)) | |
1337 | 1341 | then throw("maxRand should be non-zero") | |
1338 | 1342 | else { | |
1339 | - | let | |
1340 | - | $Tuple2(toInt(( | |
1343 | + | let hu = toBigInt(hs) | |
1344 | + | $Tuple2(toInt((ht % hu)), (ht / hu)) | |
1341 | 1345 | } | |
1342 | 1346 | ||
1343 | 1347 | ||
1344 | - | func | |
1345 | - | func | |
1346 | - | then | |
1348 | + | func hv (hw,hx,hy) = { | |
1349 | + | func hz (eV,hq) = if (eV._1) | |
1350 | + | then eV | |
1347 | 1351 | else { | |
1348 | - | let | |
1349 | - | if ((0 > | |
1350 | - | then $Tuple3(true, | |
1351 | - | else $Tuple3(false, ( | |
1352 | - | } | |
1353 | - | ||
1354 | - | let | |
1355 | - | let | |
1356 | - | let | |
1357 | - | let | |
1358 | - | func | |
1359 | - | then | |
1360 | - | else | |
1361 | - | ||
1362 | - | func | |
1363 | - | then | |
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 | |
1364 | 1368 | else throw("List size exceeds 6") | |
1365 | 1369 | ||
1366 | - | | |
1370 | + | fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1367 | 1371 | } | |
1368 | - | | |
1369 | - | } | |
1370 | - | ||
1371 | - | ||
1372 | - | func | |
1373 | - | func | |
1374 | - | let | |
1375 | - | let | |
1376 | - | let | |
1377 | - | let | |
1378 | - | let | |
1379 | - | func | |
1380 | - | then | |
1381 | - | else | |
1382 | - | ||
1383 | - | func | |
1384 | - | then | |
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 | |
1385 | 1389 | else throw("List size exceeds 6") | |
1386 | 1390 | ||
1387 | - | | |
1388 | - | } | |
1389 | - | $Tuple2(( | |
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)) | |
1390 | 1394 | } | |
1391 | 1395 | ||
1392 | - | let | |
1393 | - | let | |
1394 | - | let | |
1395 | - | let | |
1396 | - | func | |
1397 | - | then | |
1398 | - | else | |
1399 | - | ||
1400 | - | func | |
1401 | - | then | |
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 | |
1402 | 1406 | else throw("List size exceeds 5") | |
1403 | 1407 | ||
1404 | - | | |
1408 | + | fd(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5) | |
1405 | 1409 | } | |
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) | |
1432 | 1442 | } | |
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 | |
1451 | 1459 | else throw("List size exceeds 6") | |
1452 | 1460 | ||
1453 | - | | |
1461 | + | hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1454 | 1462 | } | |
1455 | - | let | |
1456 | - | func | |
1457 | - | func | |
1458 | - | ||
1459 | - | let | |
1460 | - | let | |
1461 | - | let | |
1462 | - | let | |
1463 | - | func | |
1464 | - | then | |
1465 | - | else | |
1466 | - | ||
1467 | - | func | |
1468 | - | then | |
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 | |
1469 | 1477 | else throw("List size exceeds 6") | |
1470 | 1478 | ||
1471 | - | | |
1472 | - | } | |
1473 | - | let | |
1474 | - | func | |
1475 | - | let | |
1476 | - | $Tuple2(( | |
1477 | - | } | |
1478 | - | ||
1479 | - | let | |
1480 | - | let | |
1481 | - | let | |
1482 | - | let | |
1483 | - | func | |
1484 | - | then | |
1485 | - | else | |
1486 | - | ||
1487 | - | func | |
1488 | - | then | |
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 | |
1489 | 1497 | else throw("List size exceeds 6") | |
1490 | 1498 | ||
1491 | - | | |
1492 | - | } | |
1493 | - | let | |
1494 | - | let | |
1495 | - | let | |
1496 | - | let | |
1497 | - | then | |
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) | |
1498 | 1506 | else { | |
1499 | - | let | |
1500 | - | let | |
1501 | - | let | |
1502 | - | $Tuple2( | |
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) | |
1503 | 1511 | } | |
1504 | - | let | |
1505 | - | let | |
1506 | - | func | |
1507 | - | then | |
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 | |
1508 | 1516 | else 0))) | |
1509 | 1517 | ||
1510 | - | let | |
1511 | - | let | |
1512 | - | let | |
1513 | - | let | |
1514 | - | func | |
1515 | - | then | |
1516 | - | else | |
1517 | - | ||
1518 | - | func | |
1519 | - | then | |
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 | |
1520 | 1528 | else throw("List size exceeds 6") | |
1521 | 1529 | ||
1522 | - | | |
1523 | - | } | |
1524 | - | $Tuple4(( | |
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) | |
1525 | 1533 | } | |
1526 | 1534 | ||
1527 | - | let | |
1528 | - | let | |
1529 | - | let | |
1530 | - | let | |
1531 | - | func | |
1532 | - | then | |
1533 | - | else | |
1534 | - | ||
1535 | - | func | |
1536 | - | then | |
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 | |
1537 | 1545 | else throw("List size exceeds 25") | |
1538 | 1546 | ||
1539 | - | | |
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) | |
1540 | 1548 | } | |
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)) | |
1565 | 1558 | then "A" | |
1566 | - | else if (( | |
1559 | + | else if ((iy[1] > hA)) | |
1567 | 1560 | then "B" | |
1568 | - | else if (( | |
1561 | + | else if ((iy[2] > hA)) | |
1569 | 1562 | then "C" | |
1570 | - | else if (( | |
1563 | + | else if ((iy[3] > hA)) | |
1571 | 1564 | then "D" | |
1572 | - | else if (( | |
1565 | + | else if ((iy[4] > hA)) | |
1573 | 1566 | then "E" | |
1574 | 1567 | else "F" | |
1575 | - | | |
1576 | - | } | |
1577 | - | ||
1578 | - | ||
1579 | - | func | |
1580 | - | let | |
1581 | - | func | |
1582 | - | ||
1583 | - | let | |
1584 | - | let | |
1585 | - | let | |
1586 | - | let | |
1587 | - | func | |
1588 | - | then | |
1589 | - | else | |
1590 | - | ||
1591 | - | func | |
1592 | - | then | |
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 | |
1593 | 1586 | else throw("List size exceeds 5") | |
1594 | 1587 | ||
1595 | - | | |
1588 | + | fd(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5) | |
1596 | 1589 | } | |
1597 | - | | |
1598 | - | } | |
1599 | - | ||
1600 | - | ||
1601 | - | func | |
1602 | - | func | |
1603 | - | let | |
1604 | - | let | |
1605 | - | let | |
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)) | |
1606 | 1599 | then 0 | |
1607 | - | else if (( | |
1608 | - | then ( | |
1609 | - | else if (( | |
1600 | + | else if ((hq >= (4 * gL))) | |
1601 | + | then (hq / gL) | |
1602 | + | else if ((hq > (3 * gL))) | |
1610 | 1603 | then 3 | |
1611 | - | else ((( | |
1612 | - | $Tuple3(( | |
1604 | + | else (((hq - 1) / gL) + 1) | |
1605 | + | $Tuple3((eV._1 :+ hk), (eV._2 + 1), (eV._3 + hk)) | |
1613 | 1606 | } | |
1614 | 1607 | ||
1615 | - | let | |
1616 | - | let | |
1617 | - | let | |
1618 | - | let | |
1619 | - | func | |
1620 | - | then | |
1621 | - | else | |
1622 | - | ||
1623 | - | func | |
1624 | - | then | |
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 | |
1625 | 1618 | else throw("List size exceeds 6") | |
1626 | 1619 | ||
1627 | - | | |
1620 | + | fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1628 | 1621 | } | |
1629 | - | let | |
1630 | - | let | |
1631 | - | let | |
1632 | - | func | |
1633 | - | let | |
1634 | - | then | |
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 | |
1635 | 1628 | else 0)) | |
1636 | - | let | |
1629 | + | let dV = if ((dR == 0)) | |
1637 | 1630 | then nil | |
1638 | - | else split(drop(toString(pow(10, 0, | |
1639 | - | let | |
1640 | - | func | |
1641 | - | ||
1642 | - | let | |
1643 | - | let | |
1644 | - | let | |
1645 | - | let | |
1646 | - | func | |
1647 | - | then | |
1648 | - | else | |
1649 | - | ||
1650 | - | func | |
1651 | - | then | |
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 | |
1652 | 1645 | else throw("List size exceeds 25") | |
1653 | 1646 | ||
1654 | - | | |
1655 | - | } | |
1656 | - | ( | |
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) | |
1657 | 1650 | } | |
1658 | 1651 | ||
1659 | - | let | |
1660 | - | let | |
1661 | - | let | |
1662 | - | let | |
1663 | - | func | |
1664 | - | then | |
1665 | - | else | |
1666 | - | ||
1667 | - | func | |
1668 | - | then | |
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 | |
1669 | 1662 | else throw("List size exceeds 6") | |
1670 | 1663 | ||
1671 | - | | |
1664 | + | hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1672 | 1665 | } | |
1673 | - | func | |
1674 | - | ||
1675 | - | let | |
1676 | - | let | |
1677 | - | let | |
1678 | - | func | |
1679 | - | then | |
1680 | - | else | |
1681 | - | ||
1682 | - | func | |
1683 | - | then | |
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 | |
1684 | 1677 | else throw("List size exceeds 25") | |
1685 | 1678 | ||
1686 | - | | |
1687 | - | } | |
1688 | - | ||
1689 | - | ||
1690 | - | func | |
1691 | - | let | |
1692 | - | [toString(valueOrElse(parseInt( | |
1693 | - | then | |
1694 | - | else "0_0_0_0_0_0", if ((size(split( | |
1695 | - | then | |
1696 | - | else "0_0_0_0_0_0", | |
1697 | - | } | |
1698 | - | ||
1699 | - | ||
1700 | - | func | |
1701 | - | let | |
1702 | - | (( | |
1703 | - | } | |
1704 | - | ||
1705 | - | ||
1706 | - | func | |
1707 | - | let | |
1708 | - | func | |
1709 | - | ||
1710 | - | func | |
1711 | - | let | |
1712 | - | let | |
1713 | - | $Tuple2(( | |
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))) | |
1714 | 1707 | } | |
1715 | 1708 | ||
1716 | - | let | |
1717 | - | let | |
1718 | - | let | |
1719 | - | let | |
1720 | - | func | |
1721 | - | then | |
1722 | - | else | |
1723 | - | ||
1724 | - | func | |
1725 | - | then | |
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 | |
1726 | 1719 | else throw("List size exceeds 6") | |
1727 | 1720 | ||
1728 | - | | |
1721 | + | fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1729 | 1722 | } | |
1730 | - | let | |
1731 | - | let | |
1732 | - | let | |
1733 | - | let | |
1734 | - | func | |
1735 | - | then | |
1736 | - | else | |
1737 | - | ||
1738 | - | func | |
1739 | - | then | |
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 | |
1740 | 1733 | else throw("List size exceeds 6") | |
1741 | 1734 | ||
1742 | - | | |
1735 | + | hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1743 | 1736 | } | |
1744 | - | let | |
1737 | + | let iZ = if ((iT == "")) | |
1745 | 1738 | then 0 | |
1746 | - | else ( let | |
1747 | - | let | |
1748 | - | let | |
1749 | - | func | |
1750 | - | then | |
1751 | - | else | |
1752 | - | ||
1753 | - | func | |
1754 | - | then | |
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 | |
1755 | 1748 | else throw("List size exceeds 50") | |
1756 | 1749 | ||
1757 | - | | |
1758 | - | (( | |
1759 | - | } | |
1760 | - | ||
1761 | - | ||
1762 | - | func | |
1763 | - | let | |
1764 | - | let | |
1765 | - | let | |
1766 | - | let | |
1767 | - | let | |
1768 | - | let | |
1769 | - | then makeString(["0", toString( | |
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)], "_") | |
1770 | 1763 | else { | |
1771 | - | let | |
1772 | - | let | |
1773 | - | let | |
1774 | - | then parseIntValue( | |
1775 | - | else | |
1776 | - | makeString([toString( | |
1777 | - | } | |
1778 | - | [ | |
1779 | - | then | |
1780 | - | else "0_0_0_0_0_0", if ((size(split( | |
1781 | - | then | |
1782 | - | else "0_0_0_0_0_0", | |
1783 | - | } | |
1784 | - | ||
1785 | - | ||
1786 | - | func | |
1787 | - | let | |
1788 | - | let | |
1789 | - | (( | |
1790 | - | } | |
1791 | - | ||
1792 | - | ||
1793 | - | func | |
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)) | |
1794 | 1787 | then throw("cargoListStr should contain exactly 2 ':' separators") | |
1795 | 1788 | else { | |
1796 | - | let | |
1797 | - | let | |
1798 | - | let | |
1789 | + | let js = split(jq[0], "_") | |
1790 | + | let jt = split(jq[1], "_") | |
1791 | + | let ju = if ((jq[2] == "")) | |
1799 | 1792 | then nil | |
1800 | - | else split_4C( | |
1801 | - | if ((size( | |
1793 | + | else split_4C(jq[2], "_") | |
1794 | + | if ((size(js) != aI)) | |
1802 | 1795 | then throw("All 6 resources should be passed") | |
1803 | - | else if ((size( | |
1796 | + | else if ((size(jt) != aI)) | |
1804 | 1797 | then throw("All 6 materials should be passed") | |
1805 | 1798 | else { | |
1806 | - | let | |
1807 | - | let | |
1808 | - | let | |
1809 | - | let | |
1799 | + | let hd = jm(iS) | |
1800 | + | let jv = split(iS[bf], "_") | |
1801 | + | let jw = split(iS[bg], "_") | |
1802 | + | let jx = if ((iS[bh] == "")) | |
1810 | 1803 | then nil | |
1811 | - | else split_4C( | |
1812 | - | let | |
1813 | - | let | |
1814 | - | let | |
1804 | + | else split_4C(iS[bh], "_") | |
1805 | + | let hb = split(jr[bo], "_") | |
1806 | + | let jy = split(jr[bp], "_") | |
1807 | + | let jz = if ((jr[bq] == "")) | |
1815 | 1808 | then nil | |
1816 | - | else split_4C( | |
1817 | - | func | |
1818 | - | let | |
1819 | - | let | |
1820 | - | let | |
1821 | - | let | |
1822 | - | if (( | |
1823 | - | then $Tuple4(( | |
1824 | - | else if (( | |
1825 | - | then if (( | |
1826 | - | then throw((((("Attempt to take " + | |
1827 | - | else $Tuple4(( | |
1828 | - | else if ((-( | |
1829 | - | then throw((((("Attempt to take " + toString(-( | |
1830 | - | else $Tuple4(( | |
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)) | |
1831 | 1824 | } | |
1832 | 1825 | ||
1833 | - | let | |
1834 | - | let | |
1835 | - | let | |
1836 | - | let | |
1837 | - | func | |
1838 | - | then | |
1839 | - | else | |
1840 | - | ||
1841 | - | func | |
1842 | - | then | |
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 | |
1843 | 1836 | else throw("List size exceeds 6") | |
1844 | 1837 | ||
1845 | - | | |
1838 | + | fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1846 | 1839 | } | |
1847 | - | func | |
1848 | - | let | |
1849 | - | let | |
1850 | - | let | |
1851 | - | let | |
1852 | - | if (( | |
1853 | - | then $Tuple4(( | |
1854 | - | else if (( | |
1855 | - | then if (( | |
1856 | - | then throw((((("Attempt to take " + | |
1857 | - | else $Tuple4(( | |
1858 | - | else if ((-( | |
1859 | - | then throw((((("Attempt to take " + toString(-( | |
1860 | - | else $Tuple4(( | |
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)) | |
1861 | 1854 | } | |
1862 | 1855 | ||
1863 | - | let | |
1864 | - | let | |
1865 | - | let | |
1866 | - | let | |
1867 | - | func | |
1868 | - | then | |
1869 | - | else | |
1870 | - | ||
1871 | - | func | |
1872 | - | then | |
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 | |
1873 | 1866 | else throw("List size exceeds 6") | |
1874 | 1867 | ||
1875 | - | | |
1868 | + | hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1876 | 1869 | } | |
1877 | - | func | |
1878 | - | let | |
1879 | - | let | |
1880 | - | let | |
1881 | - | then parseIntValue( | |
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]) | |
1882 | 1875 | else 0 | |
1883 | - | let | |
1884 | - | then parseIntValue( | |
1876 | + | let jJ = if ((size(jz) > gO)) | |
1877 | + | then parseIntValue(jz[gO]) | |
1885 | 1878 | else 0 | |
1886 | - | if (( | |
1887 | - | then $Tuple4(( | |
1888 | - | else if (( | |
1889 | - | then if (( | |
1890 | - | then throw((((("Attempt to take " + | |
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")) | |
1891 | 1884 | else { | |
1892 | - | let | |
1893 | - | $Tuple4(( | |
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)) | |
1894 | 1887 | } | |
1895 | - | else if ((-( | |
1896 | - | then throw((((("Attempt to take " + toString(-( | |
1888 | + | else if ((-(jB) > jI)) | |
1889 | + | then throw((((("Attempt to take " + toString(-(jB))) + " from warehouse, but only ") + toString(jI)) + " available")) | |
1897 | 1890 | else { | |
1898 | - | let | |
1899 | - | $Tuple4(( | |
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)) | |
1900 | 1893 | } | |
1901 | 1894 | } | |
1902 | 1895 | ||
1903 | - | let | |
1896 | + | let gy = if ((size(ju) != 0)) | |
1904 | 1897 | then { | |
1905 | - | let | |
1906 | - | let | |
1907 | - | let | |
1908 | - | func | |
1909 | - | then | |
1910 | - | else | |
1911 | - | ||
1912 | - | func | |
1913 | - | then | |
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 | |
1914 | 1907 | else throw("List size exceeds 50") | |
1915 | 1908 | ||
1916 | - | | |
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) | |
1917 | 1910 | } | |
1918 | - | else $Tuple4(0, | |
1919 | - | let | |
1920 | - | if (( | |
1921 | - | then throw((((("Attempt to put total " + toString( | |
1922 | - | else $Tuple7(makeString( | |
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) | |
1923 | 1916 | } | |
1924 | 1917 | } | |
1925 | 1918 | ||
1926 | 1919 | ||
1927 | - | func | |
1928 | - | let | |
1929 | - | let | |
1930 | - | let | |
1931 | - | let | |
1932 | - | let | |
1933 | - | let | |
1934 | - | let | |
1935 | - | let | |
1936 | - | let | |
1937 | - | let | |
1938 | - | $Tuple2([IntegerEntry( | |
1939 | - | } | |
1940 | - | ||
1941 | - | ||
1942 | - | func | |
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))) | |
1943 | 1936 | then throw("signature does not match") | |
1944 | 1937 | else { | |
1945 | - | let | |
1946 | - | let | |
1947 | - | let | |
1948 | - | let | |
1949 | - | let | |
1950 | - | let | |
1951 | - | let | |
1952 | - | let | |
1953 | - | if (if (( | |
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))) | |
1954 | 1947 | then true | |
1955 | - | else ((lastBlock.timestamp - | |
1956 | - | then throw(((("signature outdated: logTime=" + toString( | |
1948 | + | else ((lastBlock.timestamp - ef) > kb)) | |
1949 | + | then throw(((("signature outdated: logTime=" + toString(kb)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
1957 | 1950 | else { | |
1958 | - | let | |
1959 | - | let | |
1960 | - | if (( | |
1961 | - | then throw(((("Tx ids don't match! In state: " + | |
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)) | |
1962 | 1955 | else { | |
1963 | - | let B = valueOrErrorMessage(getString( | |
1964 | - | let | |
1965 | - | let | |
1966 | - | let | |
1967 | - | if (( | |
1968 | - | then throw(((("oldHealth=" + toString( | |
1969 | - | else if ((0 >= | |
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)) | |
1970 | 1963 | then throw("You can't fly with zero health") | |
1971 | - | else if (!( | |
1964 | + | else if (!(gA(B))) | |
1972 | 1965 | then throw("Equipment incompatible") | |
1973 | 1966 | else { | |
1974 | - | let | |
1975 | - | then | |
1967 | + | let kh = if ((size(jV) > eI)) | |
1968 | + | then jV[eI] | |
1976 | 1969 | else "" | |
1977 | - | let | |
1978 | - | then | |
1970 | + | let ki = if ((size(jV) > eJ)) | |
1971 | + | then jV[eJ] | |
1979 | 1972 | else "" | |
1980 | - | let | |
1981 | - | then ( | |
1973 | + | let kj = if (if ((jY > 0)) | |
1974 | + | then (kh == "$") | |
1982 | 1975 | else false) | |
1983 | - | then | |
1976 | + | then dG(invoke(di, "sendUsdtPrize", [bR], nil)) | |
1984 | 1977 | else 0 | |
1985 | - | $Tuple5( | |
1978 | + | $Tuple5(jY, B, kj, ka, ki) | |
1986 | 1979 | } | |
1987 | 1980 | } | |
1988 | 1981 | } | |
1989 | 1982 | } | |
1990 | 1983 | ||
1991 | 1984 | ||
1992 | - | func | |
1993 | - | let | |
1994 | - | let | |
1995 | - | let | |
1996 | - | let | |
1997 | - | (( | |
1998 | - | } | |
1999 | - | ||
2000 | - | ||
2001 | - | func | |
2002 | - | let | |
2003 | - | then $Tuple2( | |
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)), "")) | |
2004 | 1997 | else { | |
2005 | - | let B = valueOrErrorMessage(getString( | |
2006 | - | let | |
2007 | - | let | |
2008 | - | if (( | |
2009 | - | then throw((("Duck location type is " + | |
2010 | - | else $Tuple2( | |
2011 | - | } | |
2012 | - | let Q = | |
2013 | - | let | |
2014 | - | let | |
2015 | - | let | |
2016 | - | let | |
2017 | - | let | |
2018 | - | if (( | |
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)) | |
2019 | 2012 | then throw((aF + " is not yours")) | |
2020 | 2013 | else { | |
2021 | - | let | |
2022 | - | $Tuple4( | |
2023 | - | } | |
2024 | - | } | |
2025 | - | ||
2026 | - | ||
2027 | - | func | |
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)) | |
2028 | 2021 | then throw("Negative amount") | |
2029 | 2022 | else { | |
2030 | - | let | |
2031 | - | let | |
2032 | - | let | |
2033 | - | let | |
2034 | - | if ((0 > | |
2035 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
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))) | |
2036 | 2029 | else { | |
2037 | - | let | |
2038 | - | let | |
2039 | - | let | |
2040 | - | if (( | |
2041 | - | then throw(((("Not enough resources, available = " + toString( | |
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))) | |
2042 | 2035 | else { | |
2043 | - | let | |
2044 | - | let | |
2045 | - | let | |
2046 | - | let | |
2047 | - | let | |
2048 | - | let | |
2049 | - | let | |
2050 | - | let | |
2051 | - | let | |
2052 | - | if (if (( | |
2053 | - | then ( | |
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) | |
2054 | 2047 | else false) | |
2055 | - | then throw((("Only " + toString( | |
2048 | + | then throw((("Only " + toString(hd)) + " space left in warehouse")) | |
2056 | 2049 | else { | |
2057 | - | let | |
2058 | - | let | |
2059 | - | let | |
2060 | - | let | |
2061 | - | let | |
2062 | - | then $Tuple4( | |
2063 | - | else if (( | |
2064 | - | then $Tuple4( | |
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])) | |
2065 | 2058 | else { | |
2066 | - | let | |
2067 | - | let | |
2068 | - | $Tuple4( | |
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)) | |
2069 | 2062 | } | |
2070 | - | let | |
2071 | - | let | |
2072 | - | let | |
2073 | - | let | |
2074 | - | $Tuple5([IntegerEntry( | |
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]], "_")]) | |
2075 | 2068 | } | |
2076 | 2069 | } | |
2077 | 2070 | } | |
2078 | 2071 | } | |
2079 | 2072 | ||
2080 | 2073 | ||
2081 | - | func | |
2082 | - | let | |
2083 | - | let | |
2084 | - | let | |
2085 | - | | |
2086 | - | } | |
2087 | - | ||
2088 | - | ||
2089 | - | func | |
2090 | - | let c = toString( | |
2091 | - | let | |
2092 | - | let | |
2093 | - | let | |
2094 | - | let | |
2095 | - | if (if (!( | |
2096 | - | then ( | |
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) | |
2097 | 2090 | else false) | |
2098 | 2091 | then throw("Currently max infrastructure level = 3") | |
2099 | 2092 | else { | |
2100 | - | let | |
2101 | - | let ao = ( | |
2102 | - | if (if ( | |
2103 | - | then (ao > | |
2093 | + | let kR = ((sqrt(kl, 0, 0, DOWN) / 5) + 2) | |
2094 | + | let ao = (kQ + 1) | |
2095 | + | if (if (cA) | |
2096 | + | then (ao > kR) | |
2104 | 2097 | else false) | |
2105 | - | then throw(("Currently max infrastructure level = " + toString( | |
2098 | + | then throw(("Currently max infrastructure level = " + toString(kR))) | |
2106 | 2099 | else { | |
2107 | - | let | |
2108 | - | if (if (!( | |
2109 | - | then ( | |
2100 | + | let kS = fraction(ei, (kl * ao), cM) | |
2101 | + | if (if (!(fi)) | |
2102 | + | then (kO != kS) | |
2110 | 2103 | else false) | |
2111 | - | then throw(("Payment attached should be " + toString( | |
2104 | + | then throw(("Payment attached should be " + toString(kS))) | |
2112 | 2105 | else { | |
2113 | - | let | |
2114 | - | let | |
2115 | - | let | |
2116 | - | let | |
2117 | - | let | |
2118 | - | let | |
2119 | - | let | |
2120 | - | let | |
2121 | - | let | |
2122 | - | let | |
2123 | - | let | |
2124 | - | let | |
2125 | - | $Tuple3(([IntegerEntry( | |
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) | |
2126 | 2119 | } | |
2127 | 2120 | } | |
2128 | 2121 | } | |
2129 | 2122 | } | |
2130 | 2123 | ||
2131 | 2124 | ||
2132 | - | func | |
2133 | - | let ai = valueOrElse(getInteger( | |
2134 | - | let an = (ai + | |
2135 | - | let | |
2136 | - | $Tuple2([IntegerEntry( | |
2137 | - | } | |
2138 | - | ||
2139 | - | ||
2140 | - | func | |
2141 | - | ||
2142 | - | ||
2143 | - | func | |
2144 | - | ||
2145 | - | ||
2146 | - | func | |
2147 | - | let B = valueOrErrorMessage(getString( | |
2148 | - | let | |
2149 | - | let | |
2150 | - | if (!(isDefined( | |
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))) | |
2151 | 2144 | then throw("You are not eligible for ONBOARD artifact") | |
2152 | 2145 | else { | |
2153 | - | let | |
2154 | - | let | |
2155 | - | if (isDefined( | |
2156 | - | then throw(("You already used your ONBOARD artifact on duck " + value( | |
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))) | |
2157 | 2150 | else { | |
2158 | - | let | |
2159 | - | let | |
2160 | - | if (isDefined( | |
2161 | - | then throw(((("The duck " + B) + " already got points from ONBOARD artifact from user ") + value( | |
2162 | - | else ([StringEntry( | |
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) | |
2163 | 2156 | } | |
2164 | 2157 | } | |
2165 | 2158 | } | |
2166 | 2159 | ||
2167 | 2160 | ||
2168 | - | func | |
2169 | - | let | |
2170 | - | let Q = | |
2171 | - | let | |
2172 | - | let | |
2173 | - | if ((valueOrElse(getInteger( | |
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)) | |
2174 | 2167 | then throw("Presale artifact is already activated") | |
2175 | - | else if ((parseIntValue( | |
2168 | + | else if ((parseIntValue(ge._3[do]) > es)) | |
2176 | 2169 | then throw((((aF + " ") + Q) + " is not eligible for presale artifact")) | |
2177 | 2170 | else { | |
2178 | - | let | |
2179 | - | ((( | |
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, ":"))) | |
2180 | 2173 | } | |
2181 | 2174 | } | |
2182 | 2175 | ||
2183 | 2176 | ||
2184 | - | func | |
2185 | - | let | |
2186 | - | let | |
2177 | + | func lt (B) = { | |
2178 | + | let ck = valueOrElse(getInteger(dm, bV), 0) | |
2179 | + | let kt = split(valueOrElse(getString(bP(B)), aN), "_") | |
2187 | 2180 | let aA = lastBlock.timestamp | |
2188 | - | let | |
2189 | - | let | |
2190 | - | let | |
2191 | - | if (( | |
2181 | + | let cm = ce(dm, ck) | |
2182 | + | let cg = cm[ca] | |
2183 | + | let ch = cm[cb] | |
2184 | + | if ((kt[bs] != "T")) | |
2192 | 2185 | then false | |
2193 | - | else if (if (if ((parseIntValue( | |
2194 | - | then ( | |
2186 | + | else if (if (if ((parseIntValue(kt[br]) == ck)) | |
2187 | + | then (ch[cd] == "INPROGRESS") | |
2195 | 2188 | else false) | |
2196 | - | then (parseIntValue( | |
2189 | + | then (parseIntValue(cg[cc]) > aA) | |
2197 | 2190 | else false) | |
2198 | 2191 | then throw("Your duck is taking part in the tournament") | |
2199 | - | else | |
2200 | - | } | |
2201 | - | ||
2202 | - | ||
2203 | - | func | |
2204 | - | let | |
2192 | + | else dK(invoke(this, "exitTournamentInternal", [B], nil)) | |
2193 | + | } | |
2194 | + | ||
2195 | + | ||
2196 | + | func lu (B) = { | |
2197 | + | let kt = split(valueOrElse(getString(bP(B)), aN), "_") | |
2205 | 2198 | let aA = lastBlock.timestamp | |
2206 | - | if (( | |
2199 | + | if ((kt[bs] != "D")) | |
2207 | 2200 | then false | |
2208 | 2201 | else { | |
2209 | - | let | |
2210 | - | let | |
2211 | - | if (if ((( | |
2212 | - | then (1 > | |
2202 | + | let co = parseIntValue(kt[br]) | |
2203 | + | let cp = parseIntValue(kt[bt]) | |
2204 | + | if (if (((co + aR) > aA)) | |
2205 | + | then (1 > cp) | |
2213 | 2206 | else false) | |
2214 | 2207 | then throw("Your duck is on delivery mission") | |
2215 | - | else | |
2216 | - | } | |
2217 | - | } | |
2218 | - | ||
2219 | - | ||
2220 | - | func | |
2221 | - | let | |
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), "_") | |
2222 | 2215 | let aA = lastBlock.timestamp | |
2223 | - | let | |
2224 | - | let | |
2225 | - | let | |
2226 | - | let | |
2227 | - | let | |
2228 | - | let | |
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)) | |
2229 | 2222 | then true | |
2230 | - | else if (if ( | |
2231 | - | then ( | |
2223 | + | else if (if (fN) | |
2224 | + | then (lw > 0) | |
2232 | 2225 | else false) | |
2233 | - | then ( | |
2226 | + | then (jY > 0) | |
2234 | 2227 | else false) | |
2235 | 2228 | then { | |
2236 | - | let | |
2237 | - | if (( | |
2229 | + | let lA = invoke(dj, "sendDeliveryReward", [ky], nil) | |
2230 | + | if ((lA == lA)) | |
2238 | 2231 | then { | |
2239 | - | let | |
2240 | - | [IntegerEntry( | |
2232 | + | let lB = V(ky) | |
2233 | + | [IntegerEntry(lB, (valueOrElse(getInteger(lB), 0) + 1)), IntegerEntry(W(ky), (co / a))] | |
2241 | 2234 | } | |
2242 | 2235 | else throw("Strict value is not equal to itself.") | |
2243 | 2236 | } | |
2244 | - | else if (if (if ( | |
2245 | - | then ( | |
2237 | + | else if (if (if (fN) | |
2238 | + | then (jY > 0) | |
2246 | 2239 | else false) | |
2247 | - | then (( | |
2240 | + | then ((co + aR) > aA) | |
2248 | 2241 | else false) | |
2249 | 2242 | then throw("Your duck is still on delivery mission") | |
2250 | 2243 | else { | |
2251 | - | let | |
2252 | - | let | |
2253 | - | if (( | |
2254 | - | then if (if (if ( | |
2255 | - | then (0 >= | |
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) | |
2256 | 2249 | else false) | |
2257 | 2250 | then true | |
2258 | - | else (0 >= | |
2251 | + | else (0 >= ly)) | |
2259 | 2252 | then nil | |
2260 | - | else [IntegerEntry(U(B), ( | |
2253 | + | else [IntegerEntry(U(B), (co + cI))] | |
2261 | 2254 | else throw("Strict value is not equal to itself.") | |
2262 | 2255 | } | |
2263 | - | let | |
2264 | - | $Tuple3( | |
2265 | - | } | |
2266 | - | ||
2267 | - | ||
2268 | - | func | |
2269 | - | let B = valueOrErrorMessage(getString( | |
2270 | - | if ( | |
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)) | |
2271 | 2264 | then throw("mergeInternal_checkTournament") | |
2272 | - | else if ( | |
2265 | + | else if (lu(B)) | |
2273 | 2266 | then throw("mergeInternal_checkDelivery") | |
2274 | 2267 | else { | |
2275 | - | func | |
2276 | - | let | |
2277 | - | let | |
2278 | - | let | |
2279 | - | let | |
2280 | - | if (( | |
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)) | |
2281 | 2274 | then throw((aF + " is not yours")) | |
2282 | 2275 | else { | |
2283 | - | let | |
2284 | - | let | |
2285 | - | if (if (( | |
2286 | - | then ( | |
2276 | + | let kz = split(kv.description, "_") | |
2277 | + | let dA = kz[dr] | |
2278 | + | if (if ((eV._3 != "")) | |
2279 | + | then (eV._3 != dA) | |
2287 | 2280 | else false) | |
2288 | 2281 | then throw("Lands should be on the same continent to merge") | |
2289 | 2282 | else { | |
2290 | - | let | |
2291 | - | let | |
2292 | - | let | |
2293 | - | let | |
2294 | - | let | |
2295 | - | let | |
2296 | - | let | |
2297 | - | let | |
2298 | - | let | |
2299 | - | if (("S" == | |
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)) | |
2300 | 2293 | then 3 | |
2301 | - | else if (("M" == | |
2294 | + | else if (("M" == cE)) | |
2302 | 2295 | then 4 | |
2303 | - | else if (("L" == | |
2296 | + | else if (("L" == cE)) | |
2304 | 2297 | then 5 | |
2305 | - | else if (("XL" == | |
2298 | + | else if (("XL" == cE)) | |
2306 | 2299 | then 6 | |
2307 | 2300 | else throw("Only S, M, L, XL can merge") | |
2308 | 2301 | } | |
2309 | - | if (( | |
2302 | + | if ((jd != lO)) | |
2310 | 2303 | then throw("All lands should be maxed to merge") | |
2311 | 2304 | else { | |
2312 | - | let | |
2313 | - | let | |
2314 | - | let | |
2315 | - | if ((0 > | |
2316 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
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))) | |
2317 | 2310 | else { | |
2318 | - | let | |
2319 | - | let | |
2320 | - | let | |
2321 | - | let | |
2322 | - | let | |
2323 | - | let | |
2324 | - | let | |
2325 | - | let | |
2326 | - | if (!(isDefined( | |
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))) | |
2327 | 2320 | then throw(("Your staked lands don't contain " + Q)) | |
2328 | 2321 | else { | |
2329 | - | let | |
2330 | - | let | |
2331 | - | $Tuple10( | |
2332 | - | then [DeleteEntry( | |
2333 | - | else nil)), | |
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) | |
2334 | 2327 | } | |
2335 | 2328 | } | |
2336 | 2329 | } | |
2337 | 2330 | } | |
2338 | 2331 | } | |
2339 | 2332 | } | |
2340 | 2333 | ||
2341 | - | let | |
2342 | - | let | |
2343 | - | let | |
2344 | - | let | |
2345 | - | let | |
2346 | - | let | |
2347 | - | then split_51C(value( | |
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), "_") | |
2348 | 2341 | else nil | |
2349 | - | let | |
2350 | - | let | |
2351 | - | let | |
2352 | - | let | |
2353 | - | let | |
2354 | - | let | |
2355 | - | func | |
2356 | - | then | |
2357 | - | else | |
2358 | - | ||
2359 | - | func | |
2360 | - | then | |
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 | |
2361 | 2354 | else throw("List size exceeds 5") | |
2362 | 2355 | ||
2363 | - | | |
2356 | + | fd(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5) | |
2364 | 2357 | } | |
2365 | - | let | |
2366 | - | let | |
2367 | - | let | |
2368 | - | let | |
2369 | - | let | |
2370 | - | let | |
2371 | - | let | |
2372 | - | let | |
2373 | - | let | |
2374 | - | let | |
2375 | - | let | |
2376 | - | $Tuple2(((((((((((((((( | |
2377 | - | then StringEntry( | |
2378 | - | else DeleteEntry( | |
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)) | |
2379 | 2372 | then 0 | |
2380 | - | else ( | |
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) | |
2381 | 2374 | } | |
2382 | 2375 | } | |
2383 | 2376 | ||
2384 | 2377 | ||
2385 | - | func | |
2386 | - | ||
2387 | - | ||
2388 | - | func | |
2389 | - | ||
2390 | - | ||
2391 | - | func | |
2392 | - | ||
2393 | - | ||
2394 | - | func | |
2395 | - | ||
2396 | - | ||
2397 | - | func | |
2398 | - | let | |
2399 | - | if ((4 == | |
2400 | - | then | |
2401 | - | else if ((3 == | |
2402 | - | then | |
2403 | - | else if ((5 == | |
2404 | - | then | |
2405 | - | else if ((2 == | |
2406 | - | then | |
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) | |
2407 | 2400 | else throw("Unknown merge") | |
2408 | 2401 | } | |
2409 | 2402 | ||
2410 | 2403 | ||
2411 | - | func | |
2412 | - | let | |
2413 | - | if (isDefined( | |
2404 | + | func mh (bR) = { | |
2405 | + | let mi = getString(bN(bR)) | |
2406 | + | if (isDefined(mi)) | |
2414 | 2407 | then { | |
2415 | - | let B = value( | |
2416 | - | let | |
2417 | - | let | |
2418 | - | let | |
2419 | - | if (if (( | |
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")) | |
2420 | 2413 | then true | |
2421 | - | else (( | |
2414 | + | else ((co + aR) > lastBlock.timestamp)) | |
2422 | 2415 | then nil | |
2423 | 2416 | else { | |
2424 | - | let | |
2425 | - | if ((parseIntValue( | |
2417 | + | let lx = A(B) | |
2418 | + | if ((parseIntValue(cl[bt]) > 0)) | |
2426 | 2419 | then { | |
2427 | - | let | |
2428 | - | if (( | |
2420 | + | let lA = invoke(dj, "sendDeliveryReward", [bR], nil) | |
2421 | + | if ((lA == lA)) | |
2429 | 2422 | then nil | |
2430 | 2423 | else throw("Strict value is not equal to itself.") | |
2431 | 2424 | } | |
2432 | 2425 | else (({ | |
2433 | - | let | |
2434 | - | let | |
2435 | - | if (( | |
2436 | - | then if ((0 >= getIntegerValue( | |
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))) | |
2437 | 2430 | then nil | |
2438 | 2431 | else { | |
2439 | - | let | |
2440 | - | if (( | |
2432 | + | let mk = invoke(this, "saveInteger", [U(B), (co + cI)], nil) | |
2433 | + | if ((mk == mk)) | |
2441 | 2434 | then nil | |
2442 | 2435 | else throw("Strict value is not equal to itself.") | |
2443 | 2436 | } | |
2444 | 2437 | else throw("Strict value is not equal to itself.") | |
2445 | - | } :+ IntegerEntry( | |
2438 | + | } :+ IntegerEntry(lx, getIntegerValue(K(B)))) :+ StringEntry(mj, getStringValue(L(B)))) | |
2446 | 2439 | } | |
2447 | 2440 | } | |
2448 | 2441 | else nil | |
2449 | 2442 | } | |
2450 | 2443 | ||
2451 | 2444 | ||
2452 | - | func | |
2453 | - | then valueOrElse(getBoolean( | |
2445 | + | func ml (gO) = if (if ((gO.originCaller != di)) | |
2446 | + | then valueOrElse(getBoolean(dO()), false) | |
2454 | 2447 | else false) | |
2455 | 2448 | then throw("Contracts are under maintenance") | |
2456 | 2449 | else { | |
2457 | - | let | |
2458 | - | ( | |
2450 | + | let bR = toString(gO.originCaller) | |
2451 | + | (mh(bR) :+ StringEntry(dP(bR), toBase58String(gO.transactionId))) | |
2459 | 2452 | } | |
2460 | 2453 | ||
2461 | 2454 | ||
2462 | - | func | |
2463 | - | then valueOrElse(getBoolean( | |
2455 | + | func mm (gO) = if (if ((gO.originCaller != di)) | |
2456 | + | then valueOrElse(getBoolean(dO()), false) | |
2464 | 2457 | else false) | |
2465 | 2458 | then throw("Contracts are under maintenance") | |
2466 | - | else [StringEntry( | |
2467 | - | ||
2468 | - | ||
2469 | - | @Callable( | |
2470 | - | func constructorV1 ( | |
2459 | + | else [StringEntry(dP(toString(gO.originCaller)), toBase58String(gO.transactionId))] | |
2460 | + | ||
2461 | + | ||
2462 | + | @Callable(gO) | |
2463 | + | func constructorV1 (mn) = if ((gO.caller != this)) | |
2471 | 2464 | then throw("Permission denied") | |
2472 | - | else [StringEntry( | |
2473 | - | ||
2474 | - | ||
2475 | - | ||
2476 | - | @Callable( | |
2477 | - | func saveInteger ( | |
2465 | + | else [StringEntry(dc(), mn)] | |
2466 | + | ||
2467 | + | ||
2468 | + | ||
2469 | + | @Callable(gO) | |
2470 | + | func saveInteger (cU,eM) = if ((gO.caller != this)) | |
2478 | 2471 | then throw("saveInteger is not public method") | |
2479 | - | else [IntegerEntry( | |
2480 | - | ||
2481 | - | ||
2482 | - | ||
2483 | - | @Callable( | |
2484 | - | func setBlocked ( | |
2472 | + | else [IntegerEntry(cU, eM)] | |
2473 | + | ||
2474 | + | ||
2475 | + | ||
2476 | + | @Callable(gO) | |
2477 | + | func setBlocked (mo) = if ((gO.caller != this)) | |
2485 | 2478 | then throw("permission denied") | |
2486 | - | else [BooleanEntry( | |
2487 | - | ||
2488 | - | ||
2489 | - | ||
2490 | - | @Callable( | |
2479 | + | else [BooleanEntry(dO(), mo)] | |
2480 | + | ||
2481 | + | ||
2482 | + | ||
2483 | + | @Callable(gO) | |
2491 | 2484 | func stakeLand () = { | |
2492 | - | let | |
2493 | - | if ((size( | |
2485 | + | let mp = ml(gO) | |
2486 | + | if ((size(gO.payments) != 1)) | |
2494 | 2487 | then throw("Exactly one payment required") | |
2495 | 2488 | else { | |
2496 | - | let | |
2497 | - | let | |
2498 | - | let | |
2499 | - | if (( | |
2489 | + | let mq = value(gO.payments[0]) | |
2490 | + | let bv = value(mq.assetId) | |
2491 | + | let cT = toString(gO.caller) | |
2492 | + | if ((mq.amount != 1)) | |
2500 | 2493 | then throw((("NFT " + aF) + " token should be attached as payment")) | |
2501 | 2494 | else { | |
2502 | - | let | |
2503 | - | if (( | |
2495 | + | let kv = value(assetInfo(bv)) | |
2496 | + | if ((kv.issuer != this)) | |
2504 | 2497 | then throw("Unknown issuer of token") | |
2505 | - | else if (!(contains( | |
2498 | + | else if (!(contains(kv.name, aF))) | |
2506 | 2499 | then throw((("Only NFT " + aF) + " tokens are accepted")) | |
2507 | 2500 | else { | |
2508 | - | let | |
2509 | - | let | |
2510 | - | then dropRight( | |
2511 | - | else if (contains( | |
2512 | - | then dropRight( | |
2513 | - | else dropRight( | |
2514 | - | if (!(isDefined(parseInt( | |
2515 | - | then throw(("Cannot parse land number from " + | |
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)) | |
2516 | 2509 | else { | |
2517 | - | let Q = toBase58String( | |
2518 | - | let | |
2519 | - | if (isDefined(getInteger( | |
2520 | - | then throw((("NFT " + | |
2510 | + | let Q = toBase58String(bv) | |
2511 | + | let kw = bx(Q) | |
2512 | + | if (isDefined(getInteger(kw))) | |
2513 | + | then throw((("NFT " + kv.name) + " is already staked")) | |
2521 | 2514 | else { | |
2522 | - | let | |
2523 | - | let | |
2524 | - | let | |
2525 | - | let | |
2526 | - | let | |
2527 | - | let | |
2528 | - | let | |
2529 | - | let | |
2530 | - | let | |
2531 | - | let | |
2532 | - | let | |
2533 | - | then split_51C(value( | |
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), "_") | |
2534 | 2527 | else nil | |
2535 | - | if (containsElement( | |
2528 | + | if (containsElement(lQ, Q)) | |
2536 | 2529 | then throw(("Your staked lands already contain " + Q)) | |
2537 | - | else if ((size( | |
2538 | - | then throw((("Your already staked max (" + toString( | |
2530 | + | else if ((size(lQ) >= aK)) | |
2531 | + | then throw((("Your already staked max (" + toString(aK)) + ") lands")) | |
2539 | 2532 | else { | |
2540 | - | let | |
2541 | - | let | |
2542 | - | let | |
2543 | - | let | |
2544 | - | $Tuple2(([IntegerEntry( | |
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) | |
2545 | 2538 | } | |
2546 | 2539 | } | |
2547 | 2540 | } | |
2548 | 2541 | } | |
2549 | 2542 | } | |
2550 | 2543 | } | |
2551 | 2544 | } | |
2552 | 2545 | ||
2553 | 2546 | ||
2554 | 2547 | ||
2555 | - | @Callable( | |
2556 | - | func unstakeLand ( | |
2557 | - | let | |
2558 | - | if ((size( | |
2548 | + | @Callable(gO) | |
2549 | + | func unstakeLand (kr) = { | |
2550 | + | let mp = ml(gO) | |
2551 | + | if ((size(gO.payments) != 0)) | |
2559 | 2552 | then throw("No payments required") | |
2560 | 2553 | else { | |
2561 | - | let c = toString( | |
2562 | - | let | |
2563 | - | let Q = | |
2564 | - | let | |
2565 | - | let | |
2566 | - | let | |
2567 | - | let | |
2568 | - | let | |
2569 | - | let | |
2570 | - | let | |
2571 | - | let | |
2572 | - | let | |
2573 | - | let | |
2574 | - | let | |
2575 | - | let | |
2576 | - | if (!(isDefined( | |
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))) | |
2577 | 2570 | then throw(("Your staked lands don't contain " + Q)) | |
2578 | 2571 | else { | |
2579 | 2572 | let aA = lastBlock.timestamp | |
2580 | - | let | |
2581 | - | if (( | |
2582 | - | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString( | |
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))) | |
2583 | 2576 | else { | |
2584 | - | let | |
2585 | - | if (( | |
2586 | - | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString( | |
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))) | |
2587 | 2580 | else { | |
2588 | - | let | |
2589 | - | let | |
2590 | - | let | |
2581 | + | let ma = dC(c) | |
2582 | + | let mb = valueOrElse(getInteger(ma), 0) | |
2583 | + | let my = if ((kl > mb)) | |
2591 | 2584 | then 0 | |
2592 | - | else ( | |
2593 | - | let | |
2594 | - | $Tuple2(([ScriptTransfer( | |
2595 | - | then StringEntry( | |
2596 | - | else DeleteEntry( | |
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) | |
2597 | 2590 | } | |
2598 | 2591 | } | |
2599 | 2592 | } | |
2600 | 2593 | } | |
2601 | 2594 | } | |
2602 | 2595 | ||
2603 | 2596 | ||
2604 | 2597 | ||
2605 | - | @Callable( | |
2598 | + | @Callable(gO) | |
2606 | 2599 | func stakeDuck () = { | |
2607 | - | let | |
2608 | - | if ((size( | |
2600 | + | let mp = ml(gO) | |
2601 | + | if ((size(gO.payments) != 1)) | |
2609 | 2602 | then throw("Exactly one payment required") | |
2610 | 2603 | else { | |
2611 | - | let | |
2612 | - | let | |
2613 | - | let | |
2614 | - | if (( | |
2604 | + | let mq = value(gO.payments[0]) | |
2605 | + | let bv = value(mq.assetId) | |
2606 | + | let cT = toString(gO.caller) | |
2607 | + | if ((mq.amount != 1)) | |
2615 | 2608 | then throw((("NFT " + aG) + " token should be attached as payment")) | |
2616 | 2609 | else { | |
2617 | - | let | |
2618 | - | if (if (( | |
2619 | - | then ( | |
2610 | + | let kv = value(assetInfo(bv)) | |
2611 | + | if (if ((kv.issuer != eb)) | |
2612 | + | then (kv.issuer != ec) | |
2620 | 2613 | else false) | |
2621 | 2614 | then throw((("Unknown issuer of " + aG) + " token")) | |
2622 | - | else if (!(contains( | |
2615 | + | else if (!(contains(kv.name, aG))) | |
2623 | 2616 | then throw((("Only NFT " + aG) + " tokens are accepted")) | |
2624 | 2617 | else { | |
2625 | - | let | |
2626 | - | let | |
2627 | - | if (isDefined(getInteger( | |
2628 | - | then throw((("NFT " + | |
2629 | - | else if (isDefined(getString( | |
2630 | - | then throw(("You already staked one duck: " + | |
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)) | |
2631 | 2624 | else { | |
2632 | - | let | |
2633 | - | let | |
2634 | - | let | |
2635 | - | let | |
2636 | - | let | |
2637 | - | let | |
2638 | - | let | |
2639 | - | ([IntegerEntry( | |
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)) | |
2640 | 2633 | then nil | |
2641 | - | else ([StringEntry( | |
2634 | + | else ([StringEntry(mj, aN)] ++ (if (isDefined(mA)) | |
2642 | 2635 | then nil | |
2643 | - | else (([StringEntry( | |
2636 | + | else (([StringEntry(iO, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(ke, ly)) ++ mp))))) | |
2644 | 2637 | } | |
2645 | 2638 | } | |
2646 | 2639 | } | |
2647 | 2640 | } | |
2648 | 2641 | } | |
2649 | 2642 | ||
2650 | 2643 | ||
2651 | 2644 | ||
2652 | - | @Callable( | |
2653 | - | func unstakeDuck ( | |
2654 | - | let | |
2655 | - | if ((size( | |
2645 | + | @Callable(gO) | |
2646 | + | func unstakeDuck (mz) = { | |
2647 | + | let mp = ml(gO) | |
2648 | + | if ((size(gO.payments) != 0)) | |
2656 | 2649 | then throw("No payments required") | |
2657 | 2650 | else { | |
2658 | - | let | |
2659 | - | let | |
2660 | - | let | |
2661 | - | let | |
2662 | - | if (!(isDefined(getInteger( | |
2663 | - | then throw((("NFT " + | |
2664 | - | else if (!(isDefined(getString( | |
2665 | - | then throw((("The duck " + | |
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")) | |
2666 | 2659 | else { | |
2667 | - | let | |
2668 | - | if (( | |
2660 | + | let ky = valueOrErrorMessage(getString(bM(mz)), (("NFT " + kv.name) + " is orphaned")) | |
2661 | + | if ((ky != cT)) | |
2669 | 2662 | then throw("Staked NFT is not yours") | |
2670 | - | else if ( | |
2663 | + | else if (lt(mz)) | |
2671 | 2664 | then throw("unstakeDuck_checkTournament") | |
2672 | - | else if ( | |
2665 | + | else if (lu(mz)) | |
2673 | 2666 | then throw("unstakeDuck_checkDelivery") | |
2674 | 2667 | else { | |
2675 | - | let | |
2676 | - | let | |
2677 | - | let av = valueOrElse(getInteger( | |
2678 | - | if (( | |
2679 | - | then throw((("Please heal your duck to " + toString( | |
2680 | - | else ([ScriptTransfer( | |
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) | |
2681 | 2674 | } | |
2682 | 2675 | } | |
2683 | 2676 | } | |
2684 | 2677 | } | |
2685 | 2678 | ||
2686 | 2679 | ||
2687 | 2680 | ||
2688 | - | @Callable( | |
2689 | - | func claimRes ( | |
2690 | - | let | |
2691 | - | if ((size( | |
2681 | + | @Callable(gO) | |
2682 | + | func claimRes (eM,mB) = { | |
2683 | + | let mp = ml(gO) | |
2684 | + | if ((size(gO.payments) != 0)) | |
2692 | 2685 | then throw("No payments required") | |
2693 | 2686 | else { | |
2694 | - | let c = toString( | |
2695 | - | let | |
2696 | - | let B = valueOrErrorMessage(getString( | |
2697 | - | $Tuple2((((( | |
2698 | - | } | |
2699 | - | } | |
2700 | - | ||
2701 | - | ||
2702 | - | ||
2703 | - | @Callable( | |
2704 | - | func claimResToWH ( | |
2705 | - | let | |
2706 | - | if ((size( | |
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)) | |
2707 | 2700 | then throw("No payments required") | |
2708 | 2701 | else { | |
2709 | - | let c = toString( | |
2710 | - | let | |
2711 | - | $Tuple2((((( | |
2712 | - | } | |
2713 | - | } | |
2714 | - | ||
2715 | - | ||
2716 | - | ||
2717 | - | @Callable( | |
2718 | - | func flight ( | |
2719 | - | let | |
2720 | - | if ((size( | |
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)) | |
2721 | 2714 | then throw("No payments required") | |
2722 | 2715 | else { | |
2723 | - | let | |
2724 | - | let | |
2725 | - | let | |
2726 | - | let B = | |
2727 | - | let | |
2728 | - | let | |
2729 | - | let | |
2730 | - | if (( | |
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)) | |
2731 | 2724 | then throw("You can't fly to the same location") | |
2732 | 2725 | else { | |
2733 | - | let | |
2734 | - | let | |
2735 | - | let | |
2736 | - | let | |
2737 | - | let | |
2738 | - | let | |
2739 | - | let | |
2740 | - | let | |
2741 | - | let | |
2742 | - | then if (!( | |
2743 | - | then | |
2744 | - | else if (( | |
2745 | - | then $Tuple2( | |
2746 | - | else $Tuple2( | |
2747 | - | else if ( | |
2748 | - | then if (!( | |
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))) | |
2749 | 2742 | then throw("Your duck is taking part in the tournament") | |
2750 | 2743 | else { | |
2751 | - | let | |
2752 | - | let | |
2753 | - | let | |
2754 | - | if (( | |
2755 | - | then | |
2756 | - | else if (( | |
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)) | |
2757 | 2750 | then { | |
2758 | - | let | |
2759 | - | let | |
2760 | - | then invoke( | |
2751 | + | let mK = valueOrElse(getInteger(dm, bZ(ck, B)), 0) | |
2752 | + | let mL = if ((lw > mK)) | |
2753 | + | then invoke(dm, "saveDuckResult", [B, lw], nil) | |
2761 | 2754 | else unit | |
2762 | - | if (( | |
2763 | - | then $Tuple2( | |
2755 | + | if ((mL == mL)) | |
2756 | + | then $Tuple2(ka, jY) | |
2764 | 2757 | else throw("Strict value is not equal to itself.") | |
2765 | 2758 | } | |
2766 | - | else $Tuple2( | |
2759 | + | else $Tuple2(kt, 0) | |
2767 | 2760 | } | |
2768 | - | else if (!( | |
2761 | + | else if (!(cn(kt))) | |
2769 | 2762 | then { | |
2770 | - | let | |
2763 | + | let mM = dD(invoke(this, "autoExitDelivery", [B, jY, if (mD) | |
2771 | 2764 | then "10" | |
2772 | 2765 | else "11", 0], nil)) | |
2773 | - | if (( | |
2774 | - | then if ( | |
2775 | - | then $Tuple2( | |
2776 | - | else if (( | |
2777 | - | then $Tuple2( | |
2778 | - | else $Tuple2( | |
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) | |
2779 | 2772 | else throw("Strict value is not equal to itself.") | |
2780 | 2773 | } | |
2781 | - | else if (!( | |
2774 | + | else if (!(mD)) | |
2782 | 2775 | then throw("Your duck is taking part in delivery") | |
2783 | - | else if (!( | |
2784 | - | then | |
2776 | + | else if (!(cn(ka))) | |
2777 | + | then cv(kt, ka, 13) | |
2785 | 2778 | else { | |
2786 | - | let | |
2787 | - | let | |
2788 | - | if (( | |
2789 | - | then | |
2790 | - | else if (if (( | |
2791 | - | then (1 > | |
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) | |
2792 | 2785 | else false) | |
2793 | - | then $Tuple2( | |
2786 | + | then $Tuple2(ka, jY) | |
2794 | 2787 | else { | |
2795 | - | let | |
2796 | - | if (( | |
2797 | - | then $Tuple2( | |
2788 | + | let mM = dD(invoke(this, "autoExitDelivery", [B, jY, "15-17", lw], nil)) | |
2789 | + | if ((mM == mM)) | |
2790 | + | then $Tuple2(mM, jY) | |
2798 | 2791 | else throw("Strict value is not equal to itself.") | |
2799 | 2792 | } | |
2800 | 2793 | } | |
2801 | - | let | |
2802 | - | let | |
2803 | - | $Tuple2(((([StringEntry( | |
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) | |
2804 | 2797 | then [StringEntry(M(B), "0_0_0_0_0")] | |
2805 | - | else nil)) ++ | |
2798 | + | else nil)) ++ li(B, if ((jY > 0)) | |
2806 | 2799 | then Y | |
2807 | - | else Z)._1), | |
2800 | + | else Z)._1), iD._3) | |
2808 | 2801 | } | |
2809 | 2802 | } | |
2810 | 2803 | } | |
2811 | 2804 | ||
2812 | 2805 | ||
2813 | 2806 | ||
2814 | - | @Callable( | |
2815 | - | func heal ( | |
2816 | - | let | |
2817 | - | if (if (if ((0 > | |
2807 | + | @Callable(gO) | |
2808 | + | func heal (mP,mQ,mR) = { | |
2809 | + | let mp = ml(gO) | |
2810 | + | if (if (if ((0 > mP)) | |
2818 | 2811 | then true | |
2819 | - | else (0 > | |
2812 | + | else (0 > mQ)) | |
2820 | 2813 | then true | |
2821 | - | else (0 > | |
2814 | + | else (0 > mR)) | |
2822 | 2815 | then throw("Quantity cannot be negative") | |
2823 | 2816 | else { | |
2824 | - | let B = valueOrErrorMessage(getString( | |
2825 | - | if ( | |
2817 | + | let B = valueOrErrorMessage(getString(bN(toString(gO.caller))), "You don't have a duck staked") | |
2818 | + | if (lt(B)) | |
2826 | 2819 | then throw("heal_checkTournament") | |
2827 | - | else if ( | |
2820 | + | else if (lu(B)) | |
2828 | 2821 | then throw("heal_checkDelivery") | |
2829 | 2822 | else { | |
2830 | - | let | |
2831 | - | let | |
2832 | - | let | |
2833 | - | let | |
2834 | - | if (( | |
2835 | - | then throw((("HP should be < " + toString( | |
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")) | |
2836 | 2829 | else { | |
2837 | - | let | |
2838 | - | let | |
2839 | - | let | |
2830 | + | let iO = bO(B) | |
2831 | + | let jr = iN(iO) | |
2832 | + | let mU = if ((jr[bq] == "")) | |
2840 | 2833 | then nil | |
2841 | - | else split_4C( | |
2842 | - | func | |
2843 | - | let | |
2844 | - | let | |
2845 | - | then parseIntValue( | |
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]) | |
2846 | 2839 | else 0 | |
2847 | - | if ((3 > | |
2840 | + | if ((3 > dH)) | |
2848 | 2841 | then { | |
2849 | - | let | |
2850 | - | if (( | |
2851 | - | then throw(((("You have only " + toString( | |
2852 | - | else $Tuple3(( | |
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))) | |
2853 | 2846 | } | |
2854 | - | else $Tuple3(( | |
2847 | + | else $Tuple3((eV._1 :+ toString(hk)), (dH + 1), eV._3) | |
2855 | 2848 | } | |
2856 | 2849 | ||
2857 | - | let | |
2858 | - | let | |
2859 | - | let | |
2860 | - | let | |
2861 | - | func | |
2862 | - | then | |
2863 | - | else | |
2864 | - | ||
2865 | - | func | |
2866 | - | then | |
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 | |
2867 | 2860 | else throw("List size exceeds 50") | |
2868 | 2861 | ||
2869 | - | | |
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) | |
2870 | 2863 | } | |
2871 | - | let | |
2872 | - | $Tuple2((([IntegerEntry( | |
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) | |
2873 | 2866 | } | |
2874 | 2867 | } | |
2875 | 2868 | } | |
2876 | 2869 | } | |
2877 | 2870 | ||
2878 | 2871 | ||
2879 | 2872 | ||
2880 | - | @Callable( | |
2873 | + | @Callable(gO) | |
2881 | 2874 | func healES () = { | |
2882 | - | let | |
2883 | - | if ((size( | |
2875 | + | let mp = ml(gO) | |
2876 | + | if ((size(gO.payments) != 1)) | |
2884 | 2877 | then throw("Exactly one payment required") | |
2885 | 2878 | else { | |
2886 | - | let | |
2887 | - | if (( | |
2879 | + | let mq = value(gO.payments[0]) | |
2880 | + | if ((mq.assetId != cD)) | |
2888 | 2881 | then throw("Allowed USDT payment only!") | |
2889 | 2882 | else { | |
2890 | - | let B = valueOrErrorMessage(getString( | |
2891 | - | if ( | |
2883 | + | let B = valueOrErrorMessage(getString(bN(toString(gO.caller))), "You don't have a duck staked") | |
2884 | + | if (lt(B)) | |
2892 | 2885 | then throw("healES_checkTournament") | |
2893 | - | else if ( | |
2886 | + | else if (lu(B)) | |
2894 | 2887 | then throw("healES_checkDelivery") | |
2895 | 2888 | else { | |
2896 | - | let | |
2897 | - | let | |
2898 | - | let | |
2899 | - | if (( | |
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)) | |
2900 | 2893 | then throw("HP should be 0 to call Emergency Service") | |
2901 | 2894 | else { | |
2902 | - | let | |
2903 | - | let | |
2904 | - | let | |
2895 | + | let iO = bO(B) | |
2896 | + | let jr = iN(iO) | |
2897 | + | let mU = if ((jr[bq] == "")) | |
2905 | 2898 | then nil | |
2906 | - | else split_4C( | |
2907 | - | let | |
2908 | - | then parseIntValue( | |
2899 | + | else split_4C(jr[bq], "_") | |
2900 | + | let mY = if ((size(mU) > 0)) | |
2901 | + | then parseIntValue(mU[0]) | |
2909 | 2902 | else 0 | |
2910 | - | let | |
2911 | - | then parseIntValue( | |
2903 | + | let mZ = if ((size(mU) > 1)) | |
2904 | + | then parseIntValue(mU[1]) | |
2912 | 2905 | else 0 | |
2913 | - | let | |
2914 | - | then parseIntValue( | |
2906 | + | let na = if ((size(mU) > 2)) | |
2907 | + | then parseIntValue(mU[2]) | |
2915 | 2908 | else 0 | |
2916 | - | if (if (if (( | |
2909 | + | if (if (if ((mY > 0)) | |
2917 | 2910 | then true | |
2918 | - | else ( | |
2911 | + | else (mZ > 0)) | |
2919 | 2912 | then true | |
2920 | - | else ( | |
2913 | + | else (na > 0)) | |
2921 | 2914 | then throw("You have to use own Medical Kit") | |
2922 | 2915 | else { | |
2923 | - | let | |
2924 | - | let | |
2925 | - | then split_4C(value( | |
2916 | + | let nb = getString(dj, bS()) | |
2917 | + | let nc = if (isDefined(nb)) | |
2918 | + | then split_4C(value(nb), "_") | |
2926 | 2919 | else nil | |
2927 | - | let | |
2928 | - | then parseIntValue( | |
2920 | + | let nd = if ((size(nc) > 0)) | |
2921 | + | then parseIntValue(nc[0]) | |
2929 | 2922 | else 0 | |
2930 | - | if ((0 >= | |
2923 | + | if ((0 >= nd)) | |
2931 | 2924 | then throw("There are no Medical Kits L1 at Emergency Service storage") | |
2932 | 2925 | else { | |
2933 | - | let | |
2934 | - | let | |
2935 | - | let | |
2936 | - | let | |
2937 | - | let | |
2938 | - | if (( | |
2939 | - | then throw(("Payment attached should be " + toString( | |
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))) | |
2940 | 2933 | else { | |
2941 | - | let | |
2942 | - | $Tuple2((( | |
2934 | + | let fn = dD(invoke(dj, "updateEsStorage", [ne], [AttachedPayment(cD, ng)])) | |
2935 | + | $Tuple2(((mp :+ IntegerEntry(ke, mX)) ++ li(B, aa)._1), fn) | |
2943 | 2936 | } | |
2944 | 2937 | } | |
2945 | 2938 | } | |
2946 | 2939 | } | |
2947 | 2940 | } | |
2948 | 2941 | } | |
2949 | 2942 | } | |
2950 | 2943 | } | |
2951 | 2944 | ||
2952 | 2945 | ||
2953 | 2946 | ||
2954 | - | @Callable( | |
2955 | - | func updateBackpack (B, | |
2947 | + | @Callable(gO) | |
2948 | + | func updateBackpack (B,nh) = if ((gO.caller != dj)) | |
2956 | 2949 | then throw("permission denied") | |
2957 | - | else $Tuple2([StringEntry( | |
2958 | - | ||
2959 | - | ||
2960 | - | ||
2961 | - | @Callable( | |
2950 | + | else $Tuple2([StringEntry(bO(B), nh)], nh) | |
2951 | + | ||
2952 | + | ||
2953 | + | ||
2954 | + | @Callable(gO) | |
2962 | 2955 | func commitForRandom () = { | |
2963 | - | let | |
2964 | - | let | |
2965 | - | let c = toString( | |
2966 | - | $Tuple2(([IntegerEntry( | |
2967 | - | } | |
2968 | - | ||
2969 | - | ||
2970 | - | ||
2971 | - | @Callable( | |
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) | |
2972 | 2965 | func buySLand () = { | |
2973 | - | let | |
2974 | - | if ((size( | |
2966 | + | let mp = ml(gO) | |
2967 | + | if ((size(gO.payments) != 1)) | |
2975 | 2968 | then throw("Exactly one payment required") | |
2976 | 2969 | else { | |
2977 | - | let | |
2978 | - | if (( | |
2970 | + | let mq = value(gO.payments[0]) | |
2971 | + | if ((mq.assetId != cD)) | |
2979 | 2972 | then throw("Allowed USDT payment only!") | |
2980 | - | else if (( | |
2981 | - | then throw(("Payment attached should be " + toString( | |
2973 | + | else if ((mq.amount != ek)) | |
2974 | + | then throw(("Payment attached should be " + toString(ek))) | |
2982 | 2975 | else { | |
2983 | - | let | |
2984 | - | let | |
2985 | - | $Tuple2(((( | |
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)) | |
2986 | 2979 | } | |
2987 | 2980 | } | |
2988 | 2981 | } | |
2989 | 2982 | ||
2990 | 2983 | ||
2991 | 2984 | ||
2992 | - | @Callable( | |
2993 | - | func expedition ( | |
2994 | - | let | |
2995 | - | if ((size( | |
2985 | + | @Callable(gO) | |
2986 | + | func expedition (jT,jU) = { | |
2987 | + | let mp = ml(gO) | |
2988 | + | if ((size(gO.payments) != 0)) | |
2996 | 2989 | then throw("No payments required") | |
2997 | 2990 | else { | |
2998 | - | let | |
2999 | - | let | |
3000 | - | let B = | |
3001 | - | let | |
3002 | - | let | |
3003 | - | let | |
3004 | - | let | |
3005 | - | let | |
3006 | - | let | |
3007 | - | let | |
3008 | - | let | |
3009 | - | let | |
3010 | - | let | |
3011 | - | let | |
3012 | - | let | |
3013 | - | let | |
3014 | - | then $Tuple3([IntegerEntry( | |
3015 | - | else $Tuple3(( | |
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) | |
3016 | 3009 | then [StringEntry(M(B), "0_0_0_0_0")] | |
3017 | - | else ((((nil :+ StringEntry( | |
3018 | - | if ( | |
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)) | |
3019 | 3012 | then throw("expedition_checkTournament") | |
3020 | - | else if ( | |
3013 | + | else if (lu(B)) | |
3021 | 3014 | then throw("expedition_checkDelivery") | |
3022 | 3015 | else { | |
3023 | - | let | |
3024 | - | $Tuple2((( | |
3016 | + | let nj = dG(invoke(dn, "burnAcres", [el], nil)) | |
3017 | + | $Tuple2(((fn._1 ++ li(B, ac)._1) ++ mp), $Tuple3(fn._2, fn._3, nj)) | |
3025 | 3018 | } | |
3026 | 3019 | } | |
3027 | 3020 | } | |
3028 | 3021 | ||
3029 | 3022 | ||
3030 | 3023 | ||
3031 | - | @Callable( | |
3024 | + | @Callable(gO) | |
3032 | 3025 | func buySLandForAcres () = { | |
3033 | - | let | |
3034 | - | if ((size( | |
3026 | + | let mp = ml(gO) | |
3027 | + | if ((size(gO.payments) != 1)) | |
3035 | 3028 | then throw("exactly 1 payment must be attached") | |
3036 | 3029 | else { | |
3037 | - | let | |
3038 | - | let | |
3039 | - | if (if (!(isDefined( | |
3030 | + | let mq = gO.payments[0] | |
3031 | + | let fu = mq.amount | |
3032 | + | if (if (!(isDefined(mq.assetId))) | |
3040 | 3033 | then true | |
3041 | - | else (value( | |
3034 | + | else (value(mq.assetId) != dv)) | |
3042 | 3035 | then throw("ACRES payments only!") | |
3043 | - | else if (( | |
3044 | - | then throw(("Payment attached should be " + toString( | |
3036 | + | else if ((fu != el)) | |
3037 | + | then throw(("Payment attached should be " + toString(el))) | |
3045 | 3038 | else { | |
3046 | - | let | |
3047 | - | let | |
3048 | - | $Tuple2((( | |
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)) | |
3049 | 3042 | } | |
3050 | 3043 | } | |
3051 | 3044 | } | |
3052 | 3045 | ||
3053 | 3046 | ||
3054 | 3047 | ||
3055 | - | @Callable( | |
3048 | + | @Callable(gO) | |
3056 | 3049 | func upgradeInfra (Q) = { | |
3057 | - | let | |
3058 | - | if ((size( | |
3050 | + | let mp = ml(gO) | |
3051 | + | if ((size(gO.payments) != 0)) | |
3059 | 3052 | then throw("No payments required") | |
3060 | 3053 | else { | |
3061 | - | let | |
3062 | - | let B = valueOrErrorMessage(getString( | |
3063 | - | $Tuple2((( | |
3064 | - | } | |
3065 | - | } | |
3066 | - | ||
3067 | - | ||
3068 | - | ||
3069 | - | @Callable( | |
3070 | - | func activateArtifact ( | |
3071 | - | let | |
3072 | - | if ((size( | |
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)) | |
3073 | 3066 | then throw("No payments required") | |
3074 | 3067 | else { | |
3075 | - | let c = toString( | |
3076 | - | let | |
3077 | - | let | |
3078 | - | if (("PRESALE" == | |
3079 | - | then | |
3080 | - | else if (("ONBOARD" == | |
3081 | - | then | |
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) | |
3082 | 3075 | else throw("Unknown artifact") | |
3083 | 3076 | } | |
3084 | - | ( | |
3085 | - | } | |
3086 | - | } | |
3087 | - | ||
3088 | - | ||
3089 | - | ||
3090 | - | @Callable( | |
3091 | - | func mergeLands ( | |
3092 | - | let | |
3093 | - | if ((size( | |
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)) | |
3094 | 3087 | then throw("No payments required") | |
3095 | 3088 | else { | |
3096 | - | let | |
3097 | - | $Tuple2((( | |
3098 | - | } | |
3099 | - | } | |
3100 | - | ||
3101 | - | ||
3102 | - | ||
3103 | - | @Callable( | |
3104 | - | func cargoExchange ( | |
3105 | - | let | |
3106 | - | if ((size( | |
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)) | |
3107 | 3100 | then throw("No payments required") | |
3108 | 3101 | else { | |
3109 | - | let | |
3110 | - | let c = toString( | |
3111 | - | let | |
3112 | - | let | |
3113 | - | if (!(isDefined(getInteger( | |
3114 | - | then throw(( | |
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")) | |
3115 | 3108 | else { | |
3116 | - | let | |
3117 | - | if (( | |
3109 | + | let ky = valueOrErrorMessage(getString(bu(Q)), (("NFT " + kv.name) + " is orphaned")) | |
3110 | + | if ((ky != c)) | |
3118 | 3111 | then throw((aF + " is not yours")) | |
3119 | 3112 | else { | |
3120 | - | let | |
3121 | - | let | |
3122 | - | let B = valueOrErrorMessage(getString( | |
3123 | - | let | |
3124 | - | let | |
3125 | - | if (( | |
3126 | - | then throw((("Duck location type is " + | |
3127 | - | else if (( | |
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)) | |
3128 | 3121 | then throw(("Duck should be on the land " + Q)) | |
3129 | 3122 | else { | |
3130 | - | let | |
3131 | - | let | |
3132 | - | let | |
3133 | - | let | |
3134 | - | let | |
3135 | - | let | |
3136 | - | let | |
3137 | - | let | |
3138 | - | ([StringEntry( | |
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) | |
3139 | 3132 | } | |
3140 | 3133 | } | |
3141 | 3134 | } | |
3142 | 3135 | } | |
3143 | 3136 | } | |
3144 | 3137 | ||
3145 | 3138 | ||
3146 | 3139 | ||
3147 | - | @Callable( | |
3148 | - | func saveWarehouse ( | |
3140 | + | @Callable(gO) | |
3141 | + | func saveWarehouse (jf,Q) = if ((gO.caller != dj)) | |
3149 | 3142 | then throw("Access denied") | |
3150 | 3143 | else { | |
3151 | - | let | |
3152 | - | let | |
3153 | - | if ((size( | |
3144 | + | let jb = bD(Q) | |
3145 | + | let jg = split_4C(jf, ":") | |
3146 | + | if ((size(jg) != 5)) | |
3154 | 3147 | then throw("warehouse string should contain 4 ':' separators") | |
3155 | 3148 | else { | |
3156 | - | let | |
3157 | - | let | |
3158 | - | let | |
3159 | - | let | |
3160 | - | if ((0 > | |
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)) | |
3161 | 3154 | then throw("Operation leads to negative free warehouse space") | |
3162 | 3155 | else { | |
3163 | - | let | |
3164 | - | $Tuple2([StringEntry( | |
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) | |
3165 | 3158 | } | |
3166 | 3159 | } | |
3167 | 3160 | } | |
3168 | 3161 | ||
3169 | 3162 | ||
3170 | 3163 | ||
3171 | - | @Callable( | |
3172 | - | func setCustomName ( | |
3173 | - | let | |
3174 | - | if ((size( | |
3164 | + | @Callable(gO) | |
3165 | + | func setCustomName (bv,lS,bz) = { | |
3166 | + | let mp = ml(gO) | |
3167 | + | if ((size(gO.payments) != 1)) | |
3175 | 3168 | then throw("Exactly one payment required") | |
3176 | 3169 | else { | |
3177 | - | let | |
3178 | - | if (( | |
3170 | + | let mq = value(gO.payments[0]) | |
3171 | + | if ((mq.assetId != cD)) | |
3179 | 3172 | then throw("Allowed USDT payment only!") | |
3180 | - | else if (( | |
3181 | - | then throw(("Payment should be " + toString( | |
3182 | - | else if (contains( | |
3183 | - | then throw(("Name should not contain '__': " + | |
3184 | - | else if ((size( | |
3185 | - | then throw(("Name too long, maxLength=" + toString( | |
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))) | |
3186 | 3179 | else { | |
3187 | - | let c = toString( | |
3188 | - | let | |
3189 | - | let | |
3190 | - | if (("ACCOUNT" == | |
3180 | + | let c = toString(gO.originCaller) | |
3181 | + | let ns = { | |
3182 | + | let cE = bz | |
3183 | + | if (("ACCOUNT" == cE)) | |
3191 | 3184 | then { | |
3192 | - | let | |
3193 | - | let | |
3194 | - | if (isDefined( | |
3195 | - | then throw(("Name already registered: " + | |
3185 | + | let nt = eB(lS) | |
3186 | + | let nu = getString(nt) | |
3187 | + | if (isDefined(nu)) | |
3188 | + | then throw(("Name already registered: " + lS)) | |
3196 | 3189 | else { | |
3197 | - | let | |
3198 | - | let | |
3199 | - | let | |
3200 | - | then [DeleteEntry( | |
3190 | + | let nv = bH(c) | |
3191 | + | let nw = getString(nv) | |
3192 | + | let nx = if (isDefined(nw)) | |
3193 | + | then [DeleteEntry(eB(value(nw)))] | |
3201 | 3194 | else nil | |
3202 | - | ((( | |
3195 | + | (((nx :+ StringEntry(nv, lS)) :+ StringEntry(nt, c)) ++ lj(c, ab)._1) | |
3203 | 3196 | } | |
3204 | 3197 | } | |
3205 | - | else if (("LAND" == | |
3198 | + | else if (("LAND" == cE)) | |
3206 | 3199 | then { | |
3207 | - | let | |
3208 | - | let | |
3209 | - | if (!(isDefined(getInteger( | |
3210 | - | then throw(( | |
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")) | |
3211 | 3204 | else { | |
3212 | - | let | |
3213 | - | if (( | |
3205 | + | let ky = valueOrErrorMessage(getString(bu(bv)), (("NFT " + kv.name) + " is orphaned")) | |
3206 | + | if ((ky != c)) | |
3214 | 3207 | then throw((aF + " is not yours")) | |
3215 | 3208 | else { | |
3216 | - | let | |
3217 | - | let | |
3218 | - | if (isDefined( | |
3219 | - | then throw(("Name already registered: " + | |
3209 | + | let nt = eu(lS) | |
3210 | + | let nu = getString(nt) | |
3211 | + | if (isDefined(nu)) | |
3212 | + | then throw(("Name already registered: " + lS)) | |
3220 | 3213 | else { | |
3221 | - | let | |
3222 | - | let | |
3223 | - | let | |
3224 | - | then [DeleteEntry( | |
3214 | + | let ny = bw(bv) | |
3215 | + | let nw = getString(ny) | |
3216 | + | let nx = if (isDefined(nw)) | |
3217 | + | then [DeleteEntry(eu(value(nw)))] | |
3225 | 3218 | else nil | |
3226 | - | ((( | |
3219 | + | (((nx :+ StringEntry(ny, lS)) :+ StringEntry(nt, bv)) ++ lj(c, ab)._1) | |
3227 | 3220 | } | |
3228 | 3221 | } | |
3229 | 3222 | } | |
3230 | 3223 | } | |
3231 | - | else if (("DUCK" == | |
3224 | + | else if (("DUCK" == cE)) | |
3232 | 3225 | then { | |
3233 | - | let | |
3234 | - | let | |
3235 | - | if (if (!(isDefined(getInteger( | |
3226 | + | let kv = value(assetInfo(fromBase58String(bv))) | |
3227 | + | let kw = bx(bv) | |
3228 | + | if (if (!(isDefined(getInteger(kw)))) | |
3236 | 3229 | then true | |
3237 | - | else !(isDefined(getString( | |
3238 | - | then throw(( | |
3230 | + | else !(isDefined(getString(bN(c))))) | |
3231 | + | then throw((kv.name + " is not staked")) | |
3239 | 3232 | else { | |
3240 | - | let | |
3241 | - | if (( | |
3233 | + | let ky = valueOrErrorMessage(getString(bM(bv)), (("NFT " + kv.name) + " is orphaned")) | |
3234 | + | if ((ky != c)) | |
3242 | 3235 | then throw((aG + " is not yours")) | |
3243 | 3236 | else { | |
3244 | - | let | |
3245 | - | let | |
3246 | - | if (isDefined( | |
3247 | - | then throw(("Name already registered: " + | |
3237 | + | let nt = eA(lS) | |
3238 | + | let nu = getString(nt) | |
3239 | + | if (isDefined(nu)) | |
3240 | + | then throw(("Name already registered: " + lS)) | |
3248 | 3241 | else { | |
3249 | - | let | |
3250 | - | let | |
3251 | - | let | |
3252 | - | then [DeleteEntry( | |
3242 | + | let ny = bG(bv) | |
3243 | + | let nw = getString(ny) | |
3244 | + | let nx = if (isDefined(nw)) | |
3245 | + | then [DeleteEntry(eA(value(nw)))] | |
3253 | 3246 | else nil | |
3254 | - | ((( | |
3247 | + | (((nx :+ StringEntry(ny, lS)) :+ StringEntry(nt, bv)) ++ li(bv, ab)._1) | |
3255 | 3248 | } | |
3256 | 3249 | } | |
3257 | 3250 | } | |
3258 | 3251 | } | |
3259 | 3252 | else throw("Unknown entity type") | |
3260 | 3253 | } | |
3261 | - | $Tuple2((( | |
3254 | + | $Tuple2(((ns :+ ScriptTransfer(dj, mq.amount, cD)) ++ mp), 0) | |
3262 | 3255 | } | |
3263 | 3256 | } | |
3264 | 3257 | } | |
3265 | 3258 | ||
3266 | 3259 | ||
3267 | 3260 | ||
3268 | - | @Callable( | |
3269 | - | func setReferrals ( | |
3261 | + | @Callable(gO) | |
3262 | + | func setReferrals (nz,nA) = if ((gO.callerPublicKey != ed)) | |
3270 | 3263 | then throw("Permission denied") | |
3271 | 3264 | else { | |
3272 | - | let | |
3273 | - | if ((size( | |
3265 | + | let mp = ml(gO) | |
3266 | + | if ((size(gO.payments) != 0)) | |
3274 | 3267 | then throw("No payments required") | |
3275 | - | else if (!(isDefined(addressFromString( | |
3276 | - | then throw(("Invalid address: " + | |
3277 | - | else if (!(isDefined(addressFromString( | |
3278 | - | then throw(("Invalid address: " + | |
3268 | + | else if (!(isDefined(addressFromString(nz)))) | |
3269 | + | then throw(("Invalid address: " + nz)) | |
3270 | + | else if (!(isDefined(addressFromString(nA)))) | |
3271 | + | then throw(("Invalid address: " + nA)) | |
3279 | 3272 | else { | |
3280 | - | let | |
3281 | - | let | |
3282 | - | let | |
3283 | - | then split_4C(value( | |
3273 | + | let nB = eC() | |
3274 | + | let nC = getString(nB) | |
3275 | + | let nD = if (isDefined(nC)) | |
3276 | + | then split_4C(value(nC), "_") | |
3284 | 3277 | else nil | |
3285 | - | if (containsElement( | |
3286 | - | then throw(( | |
3278 | + | if (containsElement(nD, nA)) | |
3279 | + | then throw((nA + " is not newbie (already has referrals)")) | |
3287 | 3280 | else { | |
3288 | - | let | |
3289 | - | let | |
3290 | - | if (if (isDefined( | |
3291 | - | then isDefined(addressFromString(value( | |
3281 | + | let ll = bI(nA) | |
3282 | + | let lm = getString(ll) | |
3283 | + | if (if (isDefined(lm)) | |
3284 | + | then isDefined(addressFromString(value(lm))) | |
3292 | 3285 | else false) | |
3293 | - | then throw((( | |
3286 | + | then throw(((nA + " already has refBy: ") + value(lm))) | |
3294 | 3287 | else { | |
3295 | - | let | |
3296 | - | let | |
3297 | - | let | |
3298 | - | then split_4C(value( | |
3288 | + | let nE = bL(nz) | |
3289 | + | let nF = getString(nE) | |
3290 | + | let nG = if (isDefined(nF)) | |
3291 | + | then split_4C(value(nF), "_") | |
3299 | 3292 | else nil | |
3300 | - | if (containsElement( | |
3301 | - | then throw(((( | |
3293 | + | if (containsElement(nG, nA)) | |
3294 | + | then throw((((nz + " already contains ") + nA) + " within referrals")) | |
3302 | 3295 | else { | |
3303 | - | let | |
3304 | - | let | |
3305 | - | then value( | |
3306 | - | else makeString_2C(( | |
3307 | - | $Tuple2(([StringEntry( | |
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) | |
3308 | 3301 | } | |
3309 | 3302 | } | |
3310 | 3303 | } | |
3311 | 3304 | } | |
3312 | 3305 | } | |
3313 | 3306 | ||
3314 | 3307 | ||
3315 | 3308 | ||
3316 | - | @Callable( | |
3317 | - | func distributePoints ( | |
3318 | - | let | |
3319 | - | if ((size( | |
3309 | + | @Callable(gO) | |
3310 | + | func distributePoints (nJ,nK,nL,nM,nN) = { | |
3311 | + | let mp = ml(gO) | |
3312 | + | if ((size(gO.payments) != 0)) | |
3320 | 3313 | then throw("No payments required") | |
3321 | 3314 | else { | |
3322 | - | let c = toString( | |
3323 | - | let | |
3324 | - | let | |
3325 | - | let | |
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)) | |
3326 | 3319 | then $Tuple2(0, nil) | |
3327 | 3320 | else { | |
3328 | - | let | |
3329 | - | if (( | |
3330 | - | then $Tuple2( | |
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]))]) | |
3331 | 3324 | else throw("Strict value is not equal to itself.") | |
3332 | 3325 | } | |
3333 | - | let | |
3334 | - | let | |
3335 | - | let B = valueOrErrorMessage(getString( | |
3336 | - | let | |
3337 | - | let | |
3338 | - | let | |
3339 | - | let | |
3340 | - | let | |
3341 | - | let | |
3342 | - | if (( | |
3343 | - | then throw((("There are only " + toString( | |
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")) | |
3344 | 3337 | else { | |
3345 | - | let | |
3346 | - | let at = split(valueOrElse(getString( | |
3347 | - | let | |
3348 | - | $Tuple2((([IntegerEntry( | |
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)) | |
3349 | 3342 | then 0 | |
3350 | - | else | |
3351 | - | then ( | |
3352 | - | else | |
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) | |
3353 | 3346 | } | |
3354 | 3347 | } | |
3355 | 3348 | } | |
3356 | 3349 | ||
3357 | 3350 | ||
3358 | 3351 | ||
3359 | - | @Callable( | |
3360 | - | func splitByGlobalWeightsREADONLY ( | |
3361 | - | ||
3362 | - | ||
3363 | - | ||
3364 | - | @Callable( | |
3365 | - | func splitByGlobalAndLocalWeightsREADONLY ( | |
3366 | - | let | |
3367 | - | $Tuple2(nil, $Tuple2( | |
3368 | - | } | |
3369 | - | ||
3370 | - | ||
3371 | - | ||
3372 | - | @Callable( | |
3373 | - | func getBackpackREADONLY (B) = $Tuple2(nil, makeString( | |
3374 | - | ||
3375 | - | ||
3376 | - | ||
3377 | - | @Callable( | |
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) | |
3378 | 3371 | func getWarehouseREADONLY (Q) = { | |
3379 | - | let | |
3380 | - | let | |
3381 | - | let | |
3382 | - | $Tuple2(nil, makeString_2C( | |
3383 | - | } | |
3384 | - | ||
3385 | - | ||
3386 | - | ||
3387 | - | @Callable( | |
3388 | - | func saveLastTx () = if (!(containsElement([ | |
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))) | |
3389 | 3382 | then throw("Access denied") | |
3390 | - | else $Tuple2( | |
3391 | - | ||
3392 | - | ||
3393 | - | ||
3394 | - | @Callable( | |
3395 | - | func updateDuckStats (B, | |
3383 | + | else $Tuple2(ml(gO), 42) | |
3384 | + | ||
3385 | + | ||
3386 | + | ||
3387 | + | @Callable(gO) | |
3388 | + | func updateDuckStats (B,lg) = if ((gO.caller != dj)) | |
3396 | 3389 | then throw("Access denied") | |
3397 | - | else | |
3398 | - | ||
3399 | - | ||
3400 | - | ||
3401 | - | @Callable( | |
3402 | - | func updateAccStats (c, | |
3390 | + | else li(B, lg) | |
3391 | + | ||
3392 | + | ||
3393 | + | ||
3394 | + | @Callable(gO) | |
3395 | + | func updateAccStats (c,lg) = if (!(containsElement([dl, dj, dn], gO.caller))) | |
3403 | 3396 | then throw("Access denied") | |
3404 | - | else | |
3405 | - | ||
3406 | - | ||
3407 | - | ||
3408 | - | @Callable( | |
3409 | - | func equipDuck ( | |
3410 | - | let | |
3411 | - | if ((size( | |
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)) | |
3412 | 3405 | then throw("No payments required") | |
3413 | 3406 | else { | |
3414 | - | let c = toString( | |
3415 | - | let B = valueOrErrorMessage(getString( | |
3416 | - | if ( | |
3407 | + | let c = toString(gO.originCaller) | |
3408 | + | let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked") | |
3409 | + | if (lt(B)) | |
3417 | 3410 | then throw("equipDuck_checkTournament") | |
3418 | - | else if ( | |
3411 | + | else if (lu(B)) | |
3419 | 3412 | then throw("equipDuck_checkDelivery") | |
3420 | 3413 | else { | |
3421 | - | let | |
3422 | - | let | |
3423 | - | let | |
3424 | - | let | |
3425 | - | let | |
3426 | - | if ((size( | |
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)) | |
3427 | 3420 | then throw("Wrong equipment string") | |
3428 | 3421 | else { | |
3429 | - | let | |
3430 | - | let | |
3431 | - | let ar = if (( | |
3422 | + | let gD = gq(oe, fB(jr[bq]), true, nil) | |
3423 | + | let gE = split(mG[q], ";")[1] | |
3424 | + | let ar = if ((gE == "")) | |
3432 | 3425 | then 0 | |
3433 | 3426 | else { | |
3434 | - | let | |
3435 | - | if (( | |
3427 | + | let gF = split(gE, ",")[0] | |
3428 | + | if ((gF == "")) | |
3436 | 3429 | then 0 | |
3437 | 3430 | else { | |
3438 | - | let | |
3439 | - | let | |
3440 | - | let | |
3441 | - | if (if (if (if (if (( | |
3431 | + | let fQ = split(gF, ":") | |
3432 | + | let dh = fQ[0] | |
3433 | + | let gG = fQ[1] | |
3434 | + | if (if (if (if (if ((dh == "06")) | |
3442 | 3435 | then true | |
3443 | - | else ( | |
3436 | + | else (dh == "07")) | |
3444 | 3437 | then true | |
3445 | - | else ( | |
3446 | - | then ( | |
3438 | + | else (dh == "08")) | |
3439 | + | then (gG != "") | |
3447 | 3440 | else false) | |
3448 | - | then (parseIntValue( | |
3441 | + | then (parseIntValue(gG) > 0) | |
3449 | 3442 | else false) | |
3450 | - | then parseIntValue(split( | |
3443 | + | then parseIntValue(split(aY[parseIntValue(dh)], "_")[ba]) | |
3451 | 3444 | else 0 | |
3452 | 3445 | } | |
3453 | 3446 | } | |
3454 | - | let | |
3455 | - | let | |
3456 | - | let | |
3457 | - | $Tuple2(([StringEntry( | |
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) | |
3458 | 3451 | } | |
3459 | 3452 | } | |
3460 | 3453 | } | |
3461 | 3454 | } | |
3462 | 3455 | ||
3463 | 3456 | ||
3464 | 3457 | ||
3465 | - | @Callable( | |
3466 | - | func fortificateLand (Q, | |
3467 | - | let | |
3468 | - | if ((size( | |
3458 | + | @Callable(gO) | |
3459 | + | func fortificateLand (Q,og) = { | |
3460 | + | let mp = ml(gO) | |
3461 | + | if ((size(gO.payments) != 0)) | |
3469 | 3462 | then throw("No payments required") | |
3470 | 3463 | 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 | |
3491 | 3480 | let oo = on._2 | |
3492 | 3481 | 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)) | |
3503 | 3496 | then throw("Access denied") | |
3504 | 3497 | else { | |
3505 | - | let | |
3506 | - | let | |
3507 | - | let | |
3508 | - | let | |
3509 | - | let | |
3510 | - | let | |
3511 | - | let | |
3512 | - | $Tuple2([IntegerEntry(K(B), | |
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) | |
3513 | 3506 | } | |
3514 | 3507 | ||
3515 | 3508 | ||
3516 | 3509 | ||
3517 | - | @Callable( | |
3510 | + | @Callable(gO) | |
3518 | 3511 | func breakAttempt () = { | |
3519 | - | let | |
3520 | - | let B = valueOrErrorMessage(getString( | |
3521 | - | let | |
3522 | - | let | |
3523 | - | if ((split( | |
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")) | |
3524 | 3517 | then throw("Your duck is not in the tournament") | |
3525 | 3518 | else { | |
3526 | - | let | |
3527 | - | let | |
3528 | - | $Tuple2((( | |
3529 | - | } | |
3530 | - | } | |
3531 | - | ||
3532 | - | ||
3533 | - | ||
3534 | - | @Callable( | |
3535 | - | func exitTournamentInternal (B) = if (( | |
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)) | |
3536 | 3529 | then throw("Access denied") | |
3537 | 3530 | else { | |
3538 | - | let | |
3539 | - | let | |
3540 | - | $Tuple2([IntegerEntry(A(B), | |
3531 | + | let ov = getIntegerValue(K(B)) | |
3532 | + | let lE = getStringValue(L(B)) | |
3533 | + | $Tuple2([IntegerEntry(A(B), ov), StringEntry(bP(B), lE)], false) | |
3541 | 3534 | } | |
3542 | 3535 | ||
3543 | 3536 | ||
3544 | 3537 | ||
3545 | - | @Callable( | |
3546 | - | func exitDeliveryInternal (B) = if (( | |
3538 | + | @Callable(gO) | |
3539 | + | func exitDeliveryInternal (B) = if ((gO.caller != this)) | |
3547 | 3540 | then throw("Access denied") | |
3548 | 3541 | else { | |
3549 | - | let | |
3550 | - | $Tuple2(( | |
3542 | + | let nl = lv(B, false, 0, 0) | |
3543 | + | $Tuple2((nl._1 ++ nl._2), false) | |
3551 | 3544 | } | |
3552 | 3545 | ||
3553 | 3546 | ||
3554 | 3547 | ||
3555 | - | @Callable( | |
3556 | - | func autoExitDelivery (B, | |
3548 | + | @Callable(gO) | |
3549 | + | func autoExitDelivery (B,jY,ow,lw) = if ((gO.caller != this)) | |
3557 | 3550 | then throw("Access denied") | |
3558 | 3551 | else { | |
3559 | - | let | |
3560 | - | $Tuple2( | |
3552 | + | let nl = lv(B, true, jY, lw) | |
3553 | + | $Tuple2(nl._1, nl._3) | |
3561 | 3554 | } | |
3562 | 3555 | ||
3563 | 3556 | ||
3564 | 3557 | ||
3565 | - | @Callable( | |
3566 | - | func breakDelivery () = $Tuple2( | |
3567 | - | ||
3568 | - | ||
3569 | - | ||
3570 | - | @Callable( | |
3571 | - | func prepareRobbery ( | |
3572 | - | let | |
3573 | - | if (!(sigVerify_8Kb( | |
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))) | |
3574 | 3567 | then throw("signature does not match") | |
3575 | - | else if ((size( | |
3568 | + | else if ((size(gO.payments) != 1)) | |
3576 | 3569 | then throw("exactly 1 payment must be attached") | |
3577 | 3570 | else { | |
3578 | - | let | |
3579 | - | let | |
3580 | - | if (if (!(isDefined( | |
3571 | + | let mq = gO.payments[0] | |
3572 | + | let ox = mq.amount | |
3573 | + | if (if (!(isDefined(mq.assetId))) | |
3581 | 3574 | then true | |
3582 | - | else (value( | |
3575 | + | else (value(mq.assetId) != dt)) | |
3583 | 3576 | then throw("WLGOLD payments only!") | |
3584 | 3577 | else { | |
3585 | - | let | |
3586 | - | if ((size( | |
3578 | + | let ft = split(toUtf8String(jT), "|") | |
3579 | + | if ((size(ft) != 2)) | |
3587 | 3580 | then throw("Wrong message format") | |
3588 | 3581 | else { | |
3589 | - | let B = | |
3590 | - | if ( | |
3582 | + | let B = ft[0] | |
3583 | + | if (lt(B)) | |
3591 | 3584 | then throw("prepareRobbery_checkTournament") | |
3592 | - | else if ( | |
3585 | + | else if (lu(B)) | |
3593 | 3586 | then throw("prepareRobbery_checkDelivery") | |
3594 | 3587 | else { | |
3595 | 3588 | let aB = ax(this, B)._1 | |
3596 | - | if ((aB > | |
3597 | - | then throw(((("Payment " + toString( | |
3589 | + | if ((aB > ox)) | |
3590 | + | then throw(((("Payment " + toString(ox)) + " < required ") + toString(aB))) | |
3598 | 3591 | else { | |
3599 | - | let | |
3592 | + | let oy = split(ft[1], "_") | |
3600 | 3593 | let aA = lastBlock.timestamp | |
3601 | 3594 | let aC = valueOrElse(getInteger(S(B)), 0) | |
3602 | 3595 | let aD = valueOrElse(getString(T(B)), "") | |
3603 | 3596 | let aE = valueOrElse(getInteger(R(aD)), 0) | |
3604 | 3597 | if (if ((aC != y)) | |
3605 | 3598 | then (aE > aA) | |
3606 | 3599 | else false) | |
3607 | 3600 | then throw(("You already started robbing, wait till " + toString(aE))) | |
3608 | 3601 | else { | |
3609 | - | func | |
3610 | - | let | |
3611 | - | let | |
3612 | - | if (( | |
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))) | |
3613 | 3606 | then throw("Invalid state") | |
3614 | - | else if ((aA > | |
3607 | + | else if ((aA > oB)) | |
3615 | 3608 | then { | |
3616 | - | let | |
3617 | - | if ((0 >= | |
3618 | - | then | |
3609 | + | let oC = valueOrElse(getInteger(bx(Q)), 0) | |
3610 | + | if ((0 >= oC)) | |
3611 | + | then eV | |
3619 | 3612 | else { | |
3620 | - | let | |
3621 | - | let | |
3622 | - | let | |
3623 | - | let | |
3624 | - | let | |
3625 | - | let | |
3626 | - | if ((w > | |
3627 | - | then | |
3628 | - | else ( | |
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) | |
3629 | 3622 | } | |
3630 | 3623 | } | |
3631 | - | else | |
3624 | + | else eV | |
3632 | 3625 | } | |
3633 | 3626 | ||
3634 | - | let | |
3635 | - | let | |
3636 | - | let | |
3637 | - | let | |
3638 | - | func | |
3639 | - | then | |
3640 | - | else | |
3641 | - | ||
3642 | - | func | |
3643 | - | then | |
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 | |
3644 | 3637 | else throw("List size exceeds 10") | |
3645 | 3638 | ||
3646 | - | | |
3639 | + | fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
3647 | 3640 | } | |
3648 | - | if ((size( | |
3641 | + | if ((size(oE) == 0)) | |
3649 | 3642 | then throw("No candidates for robbery") | |
3650 | 3643 | else { | |
3651 | - | let | |
3652 | - | let Q = | |
3653 | - | $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (aA + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), 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) | |
3654 | 3647 | } | |
3655 | 3648 | } | |
3656 | 3649 | } | |
3657 | 3650 | } | |
3658 | 3651 | } | |
3659 | 3652 | } | |
3660 | 3653 | } | |
3661 | 3654 | } | |
3662 | 3655 | ||
3663 | 3656 | ||
3664 | 3657 | ||
3665 | - | @Callable( | |
3666 | - | func robLand ( | |
3667 | - | let | |
3668 | - | if (!(sigVerify_8Kb( | |
3658 | + | @Callable(gO) | |
3659 | + | func robLand (jT,jU) = { | |
3660 | + | let mp = ml(gO) | |
3661 | + | if (!(sigVerify_8Kb(jT, jU, ed))) | |
3669 | 3662 | then throw("signature does not match") | |
3670 | 3663 | else { | |
3671 | - | let | |
3672 | - | let B = valueOrErrorMessage(getString( | |
3664 | + | let bR = toString(gO.caller) | |
3665 | + | let B = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked") | |
3673 | 3666 | let aA = lastBlock.timestamp | |
3674 | - | $Tuple2(( | |
3675 | - | } | |
3676 | - | } | |
3677 | - | ||
3678 | - | ||
3679 | - | ||
3680 | - | @Callable( | |
3667 | + | $Tuple2((mp :+ IntegerEntry(N(B), aA)), 0) | |
3668 | + | } | |
3669 | + | } | |
3670 | + | ||
3671 | + | ||
3672 | + | ||
3673 | + | @Callable(gO) | |
3681 | 3674 | func acceptDelivery () = { | |
3682 | - | let | |
3683 | - | let | |
3684 | - | let B = valueOrErrorMessage(getString( | |
3685 | - | let | |
3686 | - | let | |
3687 | - | if (( | |
3688 | - | then throw(((("Delivery is not available, fund=" + | |
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))) | |
3689 | 3682 | else { | |
3690 | 3683 | let aA = lastBlock.timestamp | |
3691 | - | let | |
3692 | - | if (( | |
3693 | - | then throw(("Delivery is forbidden for your duck until " + toString( | |
3684 | + | let oH = valueOrElse(getInteger(U(B)), 0) | |
3685 | + | if ((oH > aA)) | |
3686 | + | then throw(("Delivery is forbidden for your duck until " + toString(oH))) | |
3694 | 3687 | else { | |
3695 | 3688 | let av = getIntegerValue(A(B)) | |
3696 | 3689 | if ((0 >= av)) | |
3697 | 3690 | then throw("You cannot accept delivery with zero health") | |
3698 | 3691 | else { | |
3699 | - | let | |
3700 | - | let | |
3701 | - | let | |
3702 | - | let | |
3703 | - | let | |
3704 | - | let | |
3705 | - | if (if (( | |
3706 | - | then ( | |
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) | |
3707 | 3700 | else false) | |
3708 | - | then throw((("You already used " + toString( | |
3709 | - | else if ( | |
3701 | + | then throw((("You already used " + toString(oL)) + " delivery attempts for today")) | |
3702 | + | else if (lt(B)) | |
3710 | 3703 | then throw("acceptDelivery_checkTournament") | |
3711 | - | else if ( | |
3704 | + | else if (lu(B)) | |
3712 | 3705 | then throw("acceptDelivery_checkDelivery") | |
3713 | 3706 | else { | |
3714 | - | let | |
3715 | - | let | |
3716 | - | let | |
3717 | - | let | |
3718 | - | $Tuple2(([StringEntry(L(B), | |
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)) | |
3719 | 3712 | then 0 | |
3720 | - | else | |
3713 | + | else fV)] ++ mp), $Tuple2(oN, oM)) | |
3721 | 3714 | } | |
3722 | 3715 | } | |
3723 | 3716 | } | |
3724 | 3717 | } | |
3725 | 3718 | } | |
3726 | 3719 | ||
3727 | 3720 | ||
3728 | 3721 | ||
3729 | - | @Callable( | |
3730 | - | func checkDeliveryCallback (B) = if (( | |
3722 | + | @Callable(gO) | |
3723 | + | func checkDeliveryCallback (B) = if ((gO.caller != dm)) | |
3731 | 3724 | then throw("Access denied") | |
3732 | - | else $Tuple2(nil, | |
3733 | - | ||
3734 | - | ||
3735 | - | ||
3736 | - | @Callable( | |
3737 | - | func genTestREADONLY ( | |
3738 | - | let | |
3739 | - | let | |
3740 | - | $Tuple2(nil, | |
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)) | |
3741 | 3734 | } | |
3742 | 3735 | ||
3743 | 3736 |
github/deemru/w8io/026f985 1476.58 ms ◑