tx · 6AqtrWE6JazehSYZUUTv94J4TEjXQCVArLLj4YdpPXRc 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm: -0.09800000 Waves 2023.09.19 14:33 [2762217] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves
{ "type": 13, "id": "6AqtrWE6JazehSYZUUTv94J4TEjXQCVArLLj4YdpPXRc", "fee": 9800000, "feeAssetId": null, "timestamp": 1695123267119, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "2iZmbsXREHba12JqhzRWbtabwWGSh7RxmkwgvF4sWr1HnRT58BQf9TLPYp4rSQB99vkwXbmBcu1oNa6TMWXNSCnE" ], "script": "base64:BgLYAQgCEgMKAQgSAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASAwoBCBIAEgQKAgICEgMKAQgSBAoCCAgSAwoBGBIECgIICBIECgIICBIDCgEIEgMKARgSAwoBCBIFCgMICAgSBAoCCAgSBwoFAQEBAQESAwoBARIFCgMBAQgSAwoBCBIDCgEIEgASBAoCCAESBAoCCAESAwoBCBIECgIICBIDCgEIEgASAwoBCBIECgICAhIECgICAhIECgICAocCARRrZXlMYXN0QXJiVGltZUJ5VXNlcgEEYWRkcgkArAICAhBsYXN0QXJiVGltZVVzZXJfBQRhZGRyAAZTQ0FMRTgAgMLXLwAMeHBMZXZlbFNjYWxlAIAZAA94cExldmVsUmVjaXBQb3cAoB8AEm51bVBvaW50c09uTGV2ZWxVcAADAA5yb2JiZXJ5Q29zdE1pbgCAwtcvABRyb2JiZXJ5Q29vbGRvd25Db2VmZgCQAwAMcmVxdWlyZW1lbnRzCQDMCAICCFN0cmVuZ3RoCQDMCAICCEFjY3VyYWN5CQDMCAICCUludGVsbGVjdAkAzAgCAglFbmR1cmFuY2UJAMwIAgIJRGV4dGVyaXR5CQDMCAICBUxldmVsCQDMCAICBkhlYWx0aAUDbmlsAAxjaGFyU3RyZW5ndGgAAAAMY2hhckFjY3VyYWN5AAEADWNoYXJJbnRlbGxlY3QAAgANY2hhckVuZHVyYW5jZQADAA1jaGFyRGV4dGVyaXR5AAQAC3NlZ0JhY2twYWNrAAAAC05VTVNFR01FTlRTAAYACk5VTU1BSU5BVVgAAgAITUFYU0xPVFMAAgANTUFYUFJPRElOU0xPVAAeABBsYW5kUm9iQ29vbGRvd25zCQDMCAIAAAkAzAgCAMDPJAkAzAgCAKD3NgkAzAgCAIDczBQJAMwIAgCArqYKBQNuaWwADk1JTl9SRVNfVE9fUk9CAIDaxAkADHJvYklkeExvY2tlZAABAAtkdWNrSWR4RnJlZQAAABBkdWNrSWR4UHJlcGFyaW5nAAEBDWtleUR1Y2tIZWFsdGgBC2R1Y2tBc3NldElkCQCsAgICC2R1Y2tIZWFsdGhfBQtkdWNrQXNzZXRJZAEMa2V5RHVja0NoYXJzAQtkdWNrQXNzZXRJZAkArAICAgpkdWNrQ2hhcnNfBQtkdWNrQXNzZXRJZAEJa2V5RHVja1hQAQtkdWNrQXNzZXRJZAkArAICAgdkdWNrWFBfBQtkdWNrQXNzZXRJZAEMa2V5RHVja0xldmVsAQtkdWNrQXNzZXRJZAkArAICAgpkdWNrTGV2ZWxfBQtkdWNrQXNzZXRJZAERa2V5RHVja0ZyZWVQb2ludHMBC2R1Y2tBc3NldElkCQCsAgICD2R1Y2tGcmVlUG9pbnRzXwULZHVja0Fzc2V0SWQBEGtleUR1Y2tFcXVpcG1lbnQBC2R1Y2tBc3NldElkCQCsAgICDmR1Y2tFcXVpcG1lbnRfBQtkdWNrQXNzZXRJZAEJa2V5VXNlclhQAQRhZGRyCQCsAgICB3VzZXJYUF8FBGFkZHIBDGtleVVzZXJMZXZlbAEEYWRkcgkArAICAgp1c2VyTGV2ZWxfBQRhZGRyARFrZXlVc2VyRnJlZVBvaW50cwEEYWRkcgkArAICAg91c2VyRnJlZVBvaW50c18FBGFkZHIBDmtleVNhdmVkSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgxzYXZlZEhlYWx0aF8FC2R1Y2tBc3NldElkARBrZXlTYXZlZExvY2F0aW9uAQtkdWNrQXNzZXRJZAkArAICAg5zYXZlZExvY2F0aW9uXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tCdWZmcwELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0J1ZmZzXwULZHVja0Fzc2V0SWQBGGtleUxhc3RSb2JiZXJ5VGltZUJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIQbGFzdFJvYmJlcnlUaW1lXwULZHVja0Fzc2V0SWQBGGtleUxhc3RSb2JiZXJ5Q29zdEJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIQbGFzdFJvYmJlcnlDb3N0XwULZHVja0Fzc2V0SWQBE2tleUxhbmRSb2JiZXJ5U3RhdGUBC2xhbmRBc3NldElkCQCsAgICEWxhbmRSb2JiZXJ5U3RhdGVfBQtsYW5kQXNzZXRJZAESa2V5TGFuZENvb2xkb3duRVRBAQtsYW5kQXNzZXRJZAkArAICAhBsYW5kQ29vbGRvd25FVEFfBQtsYW5kQXNzZXRJZAETa2V5RHVja1JvYmJlcnlTdGF0ZQELZHVja0Fzc2V0SWQJAKwCAgIRZHVja1JvYmJlcnlTdGF0ZV8FC2R1Y2tBc3NldElkARNrZXlMb2NrZWRMYW5kQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAhFsb2NrZWRMYW5kQnlEdWNrXwULZHVja0Fzc2V0SWQAB3hwQ2xhaW0AkE4AD3hwU3VjY2Vzc0ZsaWdodACQTgAMeHBGYWlsRmxpZ2h0ANAPAAh4cENhbGxFUwCgjQYADHhwQ3VzdG9tTmFtZQDAhD0ACnhwTmV3U0xhbmQAwJaxAgAOeHBVcGdyYWRlSW5mcmEAkE4AB3hwTWVyZ2UAwIQ9AAl4cE9uYm9hcmQAwIQ9AAZ4cEhlYWwAkE4BCWxldmVsQnlYUAECeHAJAGsDBQx4cExldmVsU2NhbGUJAGwGBQJ4cAAEBQ94cExldmVsUmVjaXBQb3cABAAEBQRET1dOBQZTQ0FMRTgBCW1heEhlYWx0aAEFbGV2ZWwJAGQCAGQFBWxldmVsAQdsZXZlbFVwAgljdXJyTGV2ZWwFbmV3WFAECG5ld0xldmVsCQEJbGV2ZWxCeVhQAQUFbmV3WFAJAMwIAgUIbmV3TGV2ZWwJAMwIAgkAaAIFEm51bVBvaW50c09uTGV2ZWxVcAkAZQIFCG5ld0xldmVsBQljdXJyTGV2ZWwFA25pbAEMZ2V0RHVja1N0YXRzBA9zdGFraW5nQ29udHJhY3QLZHVja0Fzc2V0SWQKYnVmZkVmZmVjdApmb3JjZUJ1ZmZzBAVjaGFycwkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tDaGFycwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzACAV8EA2x2bAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAZoZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkCQEJbWF4SGVhbHRoAQUDbHZsBApzdGF0ZUJ1ZmZzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAIBXwkAzggCCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhclN0cmVuZ3RoCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhckFjY3VyYWN5CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckludGVsbGVjdAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJFbmR1cmFuY2UJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRGV4dGVyaXR5CQDMCAIFA2x2bAkAzAgCBQZoZWFsdGgFA25pbAMFCmZvcmNlQnVmZnMJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0BQNuaWwJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDGNoYXJTdHJlbmd0aAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUMY2hhckFjY3VyYWN5CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQ1jaGFySW50ZWxsZWN0CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQ1jaGFyRW5kdXJhbmNlCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQ1jaGFyRGV4dGVyaXR5BQNuaWwBDmdldFJvYmJlcnlEYXRhAg9zdGFraW5nQ29udHJhY3QLZHVja0Fzc2V0SWQEC2xhc3RSb2JDb3N0CQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBGGtleUxhc3RSb2JiZXJ5Q29zdEJ5RHVjawEFC2R1Y2tBc3NldElkAAAEC2xhc3RSb2JUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBGGtleUxhc3RSb2JiZXJ5VGltZUJ5RHVjawEFC2R1Y2tBc3NldElkAAAEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEB3JvYkNvc3QJAJYDAQkAzAgCBQ5yb2JiZXJ5Q29zdE1pbgkAzAgCCQBlAgULbGFzdFJvYkNvc3QJAGgCBRRyb2JiZXJ5Q29vbGRvd25Db2VmZgkAZQIFA25vdwULbGFzdFJvYlRpbWUFA25pbAQJZHVja1N0YXRlCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAAABApsb2NrZWRMYW5kCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBE2tleUxvY2tlZExhbmRCeUR1Y2sBBQtkdWNrQXNzZXRJZAIABAdsYW5kRVRBCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBEmtleUxhbmRDb29sZG93bkVUQQEFCmxvY2tlZExhbmQAAAkAlwoFBQdyb2JDb3N0BQtsYXN0Um9iVGltZQUJZHVja1N0YXRlBQpsb2NrZWRMYW5kBQdsYW5kRVRBAApMQU5EUFJFRklYAgRMQU5EAApEVUNLUFJFRklYAgREVUNLAApBUlRQUkVTQUxFAgdQUkVTQUxFAAZOVU1SRVMABgAYTUFYX0xBTkRTX1NUQUtFRF9CWV9VU0VSABkAD0RBSUxZUkVTQllQSUVDRQCA+NIBAAlEQVlNSUxMSVMAgLiZKQAMV0hNVUxUSVBMSUVSAIDIr6AlAA9ERUZBVUxUTE9DQVRJT04CD0FmcmljYV9GX0FmcmljYQAQUkVTT1VSQ0VQUklDRU1JTgDVtQIACkVTU0VMTENPRUYACgAJcHJvZFR5cGVzCQDMCAICEEZpcnN0IEFpZCBLaXQgTDEJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMgkAzAgCAhBGaXJzdCBBaWQgS2l0IEwzCQDMCAICC0JhY2twYWNrIEwxCQDMCAICC0JhY2twYWNrIEwyCQDMCAICC0JhY2twYWNrIEwzCQDMCAICDkZvb2QgUmF0aW9uIEwxCQDMCAICDkZvb2QgUmF0aW9uIEwyCQDMCAICDkZvb2QgUmF0aW9uIEwzCQDMCAICC0pldCBQYWNrIEwxCQDMCAICC0pldCBQYWNrIEwyCQDMCAICC0pldCBQYWNrIEwzCQDMCAICCVNoaWVsZCBMMQkAzAgCAglTaGllbGQgTDIJAMwIAgIJU2hpZWxkIEwzCQDMCAICB01pbmUgTDEJAMwIAgIHTWluZSBMMgkAzAgCAgdNaW5lIEwzCQDMCAICB1RyYXAgTDEJAMwIAgIHVHJhcCBMMgkAzAgCAgdUcmFwIEwzBQNuaWwACmNvbnRpbmVudHMJAMwIAgIIQW1lcmljYXMJAMwIAgIGRXVyb3BlCQDMCAICBEFzaWEJAMwIAgIGQWZyaWNhCQDMCAICB09jZWFuaWEFA25pbAAJQ09FRkYyTUFUAICt4gQAEGZvcnRBbGxvd2VkUHJvZHMJAMwIAgAPCQDMCAIAEAkAzAgCABEJAMwIAgASCQDMCAIAEwkAzAgCABQFA25pbAAQcHJvZHVjdGlvbk1hdHJpeAkAzAgCAiU4XzhfOF8xN18xN180Ml8xMl8wXzMwXzAsMCwwLDAsMCwwLDBfCQDMCAICJThfOF84XzE3XzE3XzQyXzI0XzBfNjBfMCwwLDUsMiwwLDAsMF8JAMwIAgInOF84XzhfMTdfMTdfNDJfMzZfMF8xMjBfMCwwLDEwLDQsMCwwLDBfCQDMCAICKThfMTlfMTlfOF8yN18xOV8yNl8xXzIwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICKThfMTlfMTlfOF8yN18xOV81Ml8xXzQwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICKThfMTlfMTlfOF8yN18xOV83OF8xXzgwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICJThfOF84XzhfOF82MF8xM18yXzJfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzI2XzJfNF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAiU4XzhfOF84XzhfNjBfMzlfMl84XzAsMCwwLDAsMCwwLDBfMDExCQDMCAICKTMwXzMwXzNfMTdfMTdfM18zMF8zXzMwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKTMwXzMwXzNfMTdfMTdfM182MF8zXzUwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKTMwXzMwXzNfMTdfMTdfM185MF8zXzcwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzExXzRfMTBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMjJfNF8yMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8zM180XzMwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKjRfMTNfMjJfNF8zNV8yMl8yM18wXzUwLDEsMF8wLDAsMCwwLDAsMCwwXwkAzAgCAio0XzEzXzIyXzRfMzVfMjJfNDZfMF81MCwxLDFfMCwyLDUsMCwwLDAsMF8JAMwIAgIrNF8xM18yMl80XzM1XzIyXzY5XzBfNTAsMiwxXzAsNSwxMCwwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfMjBfMV8zMCwxLDFfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzQwXzFfMzAsMSwyXzIsMSwzLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV82MF8xXzMwLDEsM181LDIsOCwwLDAsMCwwXwUDbmlsAAlySWR4Q29lZmYABgAKcklkeEVmZmVjdAAIABBySWR4UmVxdWlyZW1lbnRzAAkACXJJZHhTbG90cwAKAA5QUk9EVUNUUEtHU0laRQAKAAt3aElkeExldmVscwAAAAh3aElkeFJlcwABAAh3aElkeE1hdAACAAl3aElkeFByb2QAAwAJd2hJZHhMT0ZUAAQACXZvbExvY2tlZAAAAAt2b2xPY2N1cGllZAABAAd2b2xGcmVlAAIACHZvbFRvdGFsAAMACmJwSWR4TGV2ZWwAAAAIYnBJZHhSZXMAAQAIYnBJZHhNYXQAAgAJYnBJZHhQcm9kAAMAD2xvY0lkeENvbnRpbmVudAAAAApsb2NJZHhUeXBlAAEACGxvY0lkeElkAAIBFWtleUxhbmRBc3NldElkVG9Pd25lcgEHYXNzZXRJZAkArAICAgNub18FB2Fzc2V0SWQBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQdhc3NldElkCQCsAgICBWxjbmFfBQdhc3NldElkARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQdhc3NldElkCQCsAgICA3N0XwUHYXNzZXRJZAEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBHR5cGUHYXNzZXRJZAkAuQkCCQDMCAICA2xhcwkAzAgCBQR0eXBlCQDMCAIFB2Fzc2V0SWQFA25pbAIBXwEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMHbmZ0VHlwZQdhc3NldElkCW93bmVyQWRkcgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBnN0dGFvXwUHbmZ0VHlwZQIBXwUHYXNzZXRJZAIBXwUJb3duZXJBZGRyARJrZXlXYXJlaG91c2VCeUxhbmQBC2xhbmRBc3NldElkCQCsAgICA3doXwULbGFuZEFzc2V0SWQBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBB2Fzc2V0SWQJAKwCAgILaW5mcmFMZXZlbF8FB2Fzc2V0SWQBF2tleUZvcnRpZmljYXRpb25zQnlMYW5kAQtsYW5kQXNzZXRJZAkArAICAg9mb3J0aWZpY2F0aW9uc18FC2xhbmRBc3NldElkARprZXlEdWNrQXNzZXRJZFRvQ3VzdG9tTmFtZQEHYXNzZXRJZAkArAICAhhkdWNrQ3VzdG9tTmFtZUJ5QXNzZXRJZF8FB2Fzc2V0SWQBFmtleUFkZHJlc3NUb0N1c3RvbU5hbWUBBGFkZHIJAKwCAgIYYWNjb3VudEN1c3RvbU5hbWVCeUFkZHJfBQRhZGRyAQ9rZXlBZGRyZXNzUmVmQnkBBGFkZHIJAKwCAgIJYWNjUmVmQnlfBQRhZGRyARxrZXlPbmJvYXJkQXJ0QWN0aXZhdGVkT25EdWNrAQtkdWNrQXNzZXRJZAkArAICAhpvbmJvYXJkQXJ0QWN0aXZhdGVkT25EdWNrXwULZHVja0Fzc2V0SWQBHGtleU9uYm9hcmRBcnREdWNrQWN0aXZhdGVkQnkBBGFkZHIJAKwCAgIab25ib2FyZEFydEFjdGl2YXRlZER1Y2tCeV8FBGFkZHIBE2tleUFkZHJlc3NSZWZlcnJhbHMBBGFkZHIJAKwCAgINYWNjUmVmZXJyYWxzXwUEYWRkcgEQa2V5RHVja0lkVG9Pd25lcgEHYXNzZXRJZAkArAICAgpkdWNrT3duZXJfBQdhc3NldElkARRrZXlTdGFrZWREdWNrQnlPd25lcgEJb3duZXJBZGRyCQCsAgICEnN0YWtlZER1Y2tCeU93bmVyXwUJb3duZXJBZGRyARFrZXlCYWNrcGFja0J5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIJYmFja1BhY2tfBQtkdWNrQXNzZXRJZAEPa2V5RHVja0xvY2F0aW9uAQtkdWNrQXNzZXRJZAkArAICAg1kdWNrTG9jYXRpb25fBQtkdWNrQXNzZXRJZAEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQh1c2VyQWRkcgkArAICAholcyVzX191c2VyR3dsUmVsZWFzZVRpbWVfXwUIdXNlckFkZHIBDmtleUVzV2FyZWhvdXNlAAIaZW1lcmdlbmN5V2FyZWhvdXNlUHJvZHVjdHMADWxhc3RUb3VySWRLZXkCDiVzX19sYXN0VG91cklkARVrZXlUb3VyU3RhdGljRGF0YUJ5SWQBA3RJZAkArAICAhYlcyVkX190b3VyU3RhdGljRGF0YV9fCQCkAwEFA3RJZAEWa2V5VG91ckR5bmFtaWNEYXRhQnlJZAEDdElkCQCsAgICFyVzJWRfX3RvdXJEeW5hbWljRGF0YV9fCQCkAwEFA3RJZAEaa2V5QmVzdFJlc3VsdEJ5VG91ckFuZER1Y2sCA3RJZAtkdWNrQXNzZXRJZAkAuQkCCQDMCAICHyVzJWQlc19fYmVzdFJlc3VsdEJ5VG91ckFuZER1Y2sJAMwIAgkApAMBBQN0SWQJAMwIAgULZHVja0Fzc2V0SWQFA25pbAICX18ACWlkeFN0YXRpYwAAAAppZHhEeW5hbWljAAEACnRTdGF0aWNFbmQABgAOdER5bmFtaWNTdGF0dXMAAQELZ2V0VG91ckRhdGECDHRvdXJDb250cmFjdAN0SWQEBnN0YXRpYwkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUMdG91ckNvbnRyYWN0CQEVa2V5VG91clN0YXRpY0RhdGFCeUlkAQUDdElkCQCsAgIJAKwCAgIZRXJyb3IgcmVhZGluZyB0b3VybmFtZW50IAkApAMBBQN0SWQCBSBkYXRhAgJfXwQHZHluYW1pYwkAvAkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUMdG91ckNvbnRyYWN0CQEWa2V5VG91ckR5bmFtaWNEYXRhQnlJZAEFA3RJZAkArAICCQCsAgICGUVycm9yIHJlYWRpbmcgdG91cm5hbWVudCAJAKQDAQUDdElkAgUgZGF0YQICX18JAMwIAgUGc3RhdGljCQDMCAIFB2R5bmFtaWMFA25pbAEOaXNJblRvdXJuYW1lbnQCDHRvdXJDb250cmFjdAhsb2NhdGlvbgQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFDHRvdXJDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABANsb2MJALUJAgUIbG9jYXRpb24CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBXREYXRhCQELZ2V0VG91ckRhdGECBQx0b3VyQ29udHJhY3QFBmxhc3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMDAwMJAAACCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBVAkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFD2xvY0lkeENvbnRpbmVudAUGbGFzdElkBwkAAAIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MHCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbm93BwESZ2V0UmVjaXBlTWF0ZXJpYWxzAQZyZWNpcGUJAGgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGcmVjaXBlBQlySWR4Q29lZmYFCUNPRUZGMk1BVAAWS1NfU0VQQVJBVEVfUFVCTElDX0tFWQcAGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQcAEUtTX0FMTE9XX0RFTElWRVJZBwAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEAC3VzZHRBc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQMJAAACAQFUBQckbWF0Y2gwASBVsdifcoeC7+XjW42sBatl3ppDoS8WuwXzGreHpfHFGAkAAgECDVVua25vd24gY2hhaW4AFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAIjM1BRQ3V2RmJ2aDRMa1BVbnJuVTF6M2puYkExcDltM1dOaHYDCQAAAgEBVAUHJG1hdGNoMAIjM011bWtHR3p0Q0tBWHBXRHF4a2Rkb2ZxWFNVYnFRa3ZTSnkJAAIBAg1Vbmtub3duIGNoYWluABFJbmZyYVVwZ3JhZGVDb3N0UwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAyK+gJQMJAAACAQFUBQckbWF0Y2gwAIDC1y8JAAIBAg1Vbmtub3duIGNoYWluAA5hcmJpdHJhZ2VEZWxheQQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAuJkpAwkAAAIBAVQFByRtYXRjaDAA4NQDCQACAQINVW5rbm93biBjaGFpbgADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAAVTU0laRQAZAAVNU0laRQBkAAVMU0laRQDhAQAGWExTSVpFAJADAAdYWExTSVpFAPEEAAVJVEVSNgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQUDbmlsAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAARSWR4Q2ZnU3Rha2luZ0RhcHAAAQARSWR4Q2ZnRWNvbm9teURhcHAAAgAUSWR4Q2ZnR292ZXJuYW5jZURhcHAAAwANSWR4Q2ZnV2xnRGFwcAAEABRJZHhDZmdUb3VybmFtZW50RGFwcAAHAQprZXlSZXN0Q2ZnAAIOJXNfX3Jlc3RDb25maWcBDmtleVJlc3RBZGRyZXNzAAIMJXNfX3Jlc3RBZGRyARFyZWFkUmVzdENmZ09yRmFpbAEEcmVzdAkAvAkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUEcmVzdAkBCmtleVJlc3RDZmcABQNTRVABGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIHcmVzdENmZwNpZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB3Jlc3RDZmcFA2lkeAkArAICAipSZXN0IGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAKQDAQUDaWR4AAxyZXN0Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBDmtleVJlc3RBZGRyZXNzAAUVZGVmYXVsdFJlc3RBZGRyZXNzU3RyAAdyZXN0Q2ZnCQERcmVhZFJlc3RDZmdPckZhaWwBBQxyZXN0Q29udHJhY3QAD3N0YWtpbmdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ1N0YWtpbmdEYXBwAA9lY29ub215Q29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdFY29ub215RGFwcAALZ292Q29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRRJZHhDZmdHb3Zlcm5hbmNlRGFwcAALd2xnQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBQ1JZHhDZmdXbGdEYXBwABJ0b3VybmFtZW50Q29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRRJZHhDZmdUb3VybmFtZW50RGFwcAAKcmVjTGFuZE51bQAAAAtyZWNMYW5kU2l6ZQABAAtyZWNUZXJyYWlucwACAAxyZWNDb250aW5lbnQAAwANd2xnQXNzZXRJZEtleQILd2xnX2Fzc2V0SWQACndsZ0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQt3bGdDb250cmFjdAUNd2xnQXNzZXRJZEtleQITTm90IGluaXRpYWxpemVkIHlldAALcmFuZG9tRGVsYXkAAgEJa2V5Q29tbWl0AQdhZGRyZXNzCQCsAgICE2ZpbmlzaEJsb2NrRm9yQWRkcl8FB2FkZHJlc3MBEWtleVJlc1Byb3BvcnRpb25zAAITcmVzVHlwZXNQcm9wb3J0aW9ucwEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJY29udGluZW50CQCsAgICFHJlc1R5cGVzQnlDb250aW5lbnRfBQljb250aW5lbnQBFWtleVN0YWtlZExhbmRzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICE3N0YWtlZExhbmRzQnlPd25lcl8FCW93bmVyQWRkcgEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICFHN0YWtlZFBpZWNlc0J5T3duZXJfBQlvd25lckFkZHIBCGFzU3RyaW5nAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgECGGZhaWwgdG8gY2FzdCBpbnRvIFN0cmluZwEFYXNJbnQBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIDSW50BAFuBQckbWF0Y2gwBQFuCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQlhc0Jvb2xlYW4BAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBcwUHJG1hdGNoMAUBcwkAAgECGWZhaWwgdG8gY2FzdCBpbnRvIEJvb2xlYW4BD251bVBpZWNlc0J5U2l6ZQEIbGFuZFNpemUEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAFBVNTSVpFAwkAAAICAU0FByRtYXRjaDAFBU1TSVpFAwkAAAICAUwFByRtYXRjaDAFBUxTSVpFAwkAAAICAlhMBQckbWF0Y2gwBQZYTFNJWkUDCQAAAgIDWFhMBQckbWF0Y2gwBQdYWExTSVpFCQACAQIRVW5rbm93biBsYW5kIHNpemUBB2lzRGlnaXQBAXMJAQlpc0RlZmluZWQBCQC2CQEFAXMBCmtleUJsb2NrZWQAAhBjb250cmFjdHNCbG9ja2VkARFrZXlMYXN0VHhJZEJ5VXNlcgEEYWRkcgkArAICAg9sYXN0VHhJZEJ5VXNlcl8FBGFkZHIBD2dldFJhbmRvbU51bWJlcgMIbWF4VmFsdWUMZmluaXNoSGVpZ2h0CmF1eEVudHJvcHkED3JhbmRvbVNlZWRCbG9j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Y2tCeUN1c3RvbU5hbWVfBQRuYW1lARZrZXlDdXN0b21OYW1lVG9BZGRyZXNzAQRuYW1lCQCsAgICFGFjY291bnRCeUN1c3RvbU5hbWVfBQRuYW1lAQlrZXlPbGRpZXMAAgpvbGRpZXNMaXN0AAtjbGFpbU1vZGVXaAAAAA1jbGFpbU1vZGVEdWNrAAEAE2NsYWltTW9kZVdoVGhlbkR1Y2sAAgAIZmxIZWFsdGgAAAALZmxUaW1lc3RhbXAABQAHZmxCb251cwAGAAtmbFByb2RzVXNlZAAHAQduZnROYW1lAgdsYW5kTnVtCGxhbmRTaXplCQCsAgIJAKwCAgUKTEFORFBSRUZJWAUHbGFuZE51bQUIbGFuZFNpemUBCHRvVm9sdW1lAgZhbW91bnQHcGtnU2l6ZQQEcGtncwMJAGcCBQZhbW91bnQAAAkAaQIJAGUCCQBkAgUGYW1vdW50BQdwa2dTaXplAAEFB3BrZ1NpemUJAQEtAQkAaQIJAGUCCQBkAgkBAS0BBQZhbW91bnQFB3BrZ1NpemUAAQUHcGtnU2l6ZQkAaAIFBHBrZ3MFBU1VTFQ4ARNkaXN0cmlidXRlQnlXZWlnaHRzAgV0b3RhbAd3ZWlnaHRzBANzdW0JAGQCCQBkAgkAZAIJAGQCCQBkAgkAkQMCBQd3ZWlnaHRzAAAJAJEDAgUHd2VpZ2h0cwABCQCRAwIFB3dlaWdodHMAAgkAkQMCBQd3ZWlnaHRzAAMJAJEDAgUHd2VpZ2h0cwAECQCRAwIFB3dlaWdodHMABQMJAGcCAAAFA3N1bQkAAgECEFplcm8gd2VpZ2h0cyBzdW0EBW5vcm02CQBrAwUFdG90YWwFBU1VTFQ2BQNzdW0KAQpub3JtYWxpemVyAgNhY2MEZWxlbQkAzQgCBQNhY2MJAGsDBQRlbGVtBQVub3JtNgUFTVVMVDYKAAIkbAUHd2VpZ2h0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKbm9ybWFsaXplcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgESZ2V0TmVlZGVkTWF0ZXJpYWxzAQV0b3RhbAQFcHJvcHMJALUJAgkBBXZhbHVlAQkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgFfAwkBAiE9AgkAkAMBBQVwcm9wcwUGTlVNUkVTCQACAQIWV3JvbmcgcHJvcG9ydGlvbnMgZGF0YQQBcgkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAgkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAwkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMABAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMABQUDbmlsCQETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFBXRvdGFsBQFyARFzdWJ0cmFjdE1hdGVyaWFscwMMc2hvdWxkVXNlTWF0A2hhcwl0b3RhbE5lZWQEBG5lZWQJARJnZXROZWVkZWRNYXRlcmlhbHMBBQl0b3RhbE5lZWQKAQpzdWJ0cmFjdG9yAgNhY2MDaWR4BAZyZXN1bHQJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDaGFzBQNpZHgJAJEDAgUEbmVlZAUDaWR4AwkAZgIAAAUGcmVzdWx0CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICGE5vdCBlbm91Z2ggbWF0ZXJpYWwgaWR4PQkApAMBBQNpZHgCCywgeW91IGhhdmUgCQCRAwIFA2hhcwUDaWR4AgssIGJ1dCBuZWVkIAkApAMBCQCRAwIFBG5lZWQFA2lkeAkAzQgCBQNhY2MJAKQDAQUGcmVzdWx0AwUMc2hvdWxkVXNlTWF0CgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpzdWJ0cmFjdG9yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGBQNoYXMBEXN1YnRyYWN0RXF1aXBtZW50AgVvbGRFcQVwVXNlZAMJAAACBQVwVXNlZAIACQCUCgIFBW9sZEVxBwoBB3N1YlVzZWQCA2FjYwZpZHhBbXQEBXBhcnRzCQC1CQIFBmlkeEFtdAIBLAMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleCxhbW91bnQEA2lkeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAADAwkAZgIAAAUDaWR4BgkAZwIFA2lkeAkAkAMBBRBwcm9kdWN0aW9uTWF0cml4CQACAQITVW5rbm93biBwcm9kdWN0IGlkeAQDYW10CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQQHZXFQYXJ0cwkAtQkCCAUDYWNjAl8xCQCsAgIJAJEDAgUFcGFydHMAAAIBOgMJAQIhPQIJAJADAQUHZXFQYXJ0cwACCQACAQkArAICCQCsAgICD1lvdSBkb24ndCBoYXZlIAkAkQMCBQlwcm9kVHlwZXMFA2lkeAIJIGVxdWlwcGVkBAN0bXAJAJEDAgUHZXFQYXJ0cwABBAZudW1MZW4DCQEHaXNEaWdpdAEJAK8CAgkAsAICBQN0bXAAAQABAAIAAQQEY3VycgkBDXBhcnNlSW50VmFsdWUBCQCvAgIFA3RtcAUGbnVtTGVuBAR0YWlsCQCwAgIFA3RtcAUGbnVtTGVuBAZuZXdBbXQDCQBnAgUEY3VycgUDYW10CQBlAgUEY3VycgUDYW10CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDVlvdSBlcXVpcHBlZCAJAKQDAQUEY3VycgIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFA2lkeAITLCBidXQgdHJpZWQgdG8gdXNlIAkApAMBBQNhbXQJAJQKAgkArAICCQCsAgIJAKwCAgkArAICCQCR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BgAHAQpwbGFjZVByb2RCBgZpZHhDbnQFcExpc3QKaXNQb3NpdGl2ZQlkdWNrU3RhdHMIb2NjdXBpZWQEZnJlZQQFcGFydHMJALUJAgUGaWR4Q250AgE6AwkBAiE9AgkAkAMBBQVwYXJ0cwACCQACAQIoSW5jb3JyZWN0IGZvcm1hdCwgc2hvdWxkIGJlIGluZGV4OmFtb3VudAMDCQEBIQEFCmlzUG9zaXRpdmUJAQIhPQIJALECAQkAkQMCBQVwYXJ0cwAAAAIHCQACAQIrUHJvZHVjdCBpZHggc2hvdWxkIGJlIDIgZGlnaXRzLCB6ZXJvIHBhZGRlZAQKcHJvZHVjdElkeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAAEBWNvdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIFEGZvcnRBbGxvd2VkUHJvZHMFCnByb2R1Y3RJZHgJAAIBCQCsAgIJAKwCAgIJUHJvZHVjdCAnCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAIhJyBjYW5ub3QgYmUgdXNlZCBmb3IgbGFuZCBkZWZlbnNlAwkAZgIAAAUFY291bnQJAAIBAhdDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZQMJAGYCBQVjb3VudAUNTUFYUFJPRElOU0xPVAkAAgEJAKwCAgkArAICCQCsAgICFENhbid0IHB1dCBtb3JlIHRoYW4gCQCkAwEFDU1BWFBST0RJTlNMT1QCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AwkAAAIFBWNvdW50AAAJAJUKAwUFcExpc3QFCG9jY3VwaWVkBQRmcmVlBARoZWFkCQDJAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4BARjdXJyCQCxCQEJAMkBAgkAygECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAAIBAR0YWlsCQDKAQIFBXBMaXN0CQBoAgAICQBkAgUKcHJvZHVjdElkeAABBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQpwcm9kdWN0SWR4AgFfAwMJAQEhAQUKaXNQb3NpdGl2ZQkAZgIFBWNvdW50BQRjdXJyBwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglZb3UgaGF2ZSAJAKQDAQUEY3VycgIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUFY291bnQEBm5ld0FtdAMDCQEBIQEFCmlzUG9zaXRpdmUJARVjaGVja1N0YXRSZXF1aXJlbWVudHMCBQlkdWNrU3RhdHMJALUJAgkAkQMCBQZyZWNpcGUFEHJJZHhSZXF1aXJlbWVudHMCASwHCQBlAgUEY3VycgUFY291bnQJAGQCBQRjdXJyBQVjb3VudAQIZGVsdGFWb2wJAGUCCQEIdG9Wb2x1bWUCBQZuZXdBbXQFDlBST0RVQ1RQS0dTSVpFCQEIdG9Wb2x1bWUCBQRjdXJyBQ5QUk9EVUNUUEtHU0laRQkAlQoDCQDLAQIJAMsBAgUEaGVhZAkAmgMBBQZuZXdBbXQFBHRhaWwJAGQCBQhvY2N1cGllZAUIZGVsdGFWb2wJAGUCBQRmcmVlBQhkZWx0YVZvbAEIYWRkUHJvZEIHBmlkeENudAVwTGlzdAppc1Bvc2l0aXZlB3NlZ21lbnQHbWFpbkF1eARzbG90CWR1Y2tTdGF0cwQFcGFydHMJALUJAgUGaWR4Q250AgE6AwkBAiE9AgkAkAMBBQVwYXJ0cwACCQACAQIoSW5jb3JyZWN0IGZvcm1hdCwgc2hvdWxkIGJlIGluZGV4OmFtb3VudAMDCQEBIQEFCmlzUG9zaXRpdmUJAQIhPQIJALECAQkAkQMCBQVwYXJ0cwAAAAIHCQACAQIrUHJvZHVjdCBpZHggc2hvdWxkIGJlIDIgZGlnaXRzLCB6ZXJvIHBhZGRlZAQKcHJvZHVjdElkeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAAEBWNvdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQMDCQBmAgAABQpwcm9kdWN0SWR4BgkAZwIFCnByb2R1Y3RJZHgJAJADAQUQcHJvZHVjdGlvbk1hdHJpeAkAAgECE1Vua25vd24gcHJvZHVjdCBpZHgDCQBmAgAABQVjb3VudAkAAgECF0NvdW50IGNhbid0IGJlIG5lZ2F0aXZlAwkAZgIFBWNvdW50BQ1NQVhQUk9ESU5TTE9UCQACAQkArAICCQCsAgIJAKwCAgIUQ2FuJ3QgcHV0IG1vcmUgdGhhbiAJAKQDAQUNTUFYUFJPRElOU0xPVAIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgDCQAAAgUFY291bnQAAAkAlAoCBQVwTGlzdAcEBGhlYWQJAMkBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgEBGN1cnIJALEJAQkAyQECCQDKAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4AAgEBHRhaWwJAMoBAgUFcExpc3QJAGgCAAgJAGQCBQpwcm9kdWN0SWR4AAEEBnJlY2lwZQkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgFCnByb2R1Y3RJZHgCAV8DAwkBASEBBQppc1Bvc2l0aXZlCQBmAgUFY291bnQFBGN1cnIHCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCVlvdSBoYXZlIAkApAMBBQRjdXJyAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAITLCBidXQgdHJpZWQgdG8gdXNlIAkApAMBBQVjb3VudAQJaXNCaWdJdGVtAwMJAQEhAQUKaXNQb3NpdGl2ZQkBFWNoZWNrU3RhdFJlcXVpcmVtZW50cwIFCWR1Y2tTdGF0cwkAtQkCCQCRAwIFBnJlY2lwZQUQcklkeFJlcXVpcmVtZW50cwIBLAcEBmNvbXBhdAkAkQMCBQZyZWNpcGUFCXJJZHhTbG90cwMJAAACBQZjb21wYXQCAAkAAgECF0l0ZW0gY2Fubm90IGJlIGVxdWlwcGVkBAFjCQENcGFyc2VJbnRWYWx1ZQEFBmNvbXBhdAQEY1NlZwkAaQIFAWMAZAMJAQIhPQIFB3NlZ21lbnQFBGNTZWcJAAIBAhRTZWdtZW50IGluY29tcGF0aWJsZQQIY01haW5BdXgJAGkCCQBqAgUBYwBkAAoDCQECIT0CBQdtYWluQXV4BQhjTWFpbkF1eAkAAgECEVNsb3QgaW5jb21wYXRpYmxlBAljTnVtU2xvdHMJAGoCBQFjAAoDAwkBAiE9AgUEc2xvdAAACQBmAgUJY051bVNsb3RzAAEHCQACAQIeQmlnIGl0ZW1zIHNob3VsZCBvY2N1cHkgc2xvdCAwCQBmAgUJY051bVNsb3RzAAEHCQCUCgIJAMsBAgkAywECBQRoZWFkCQCaAwEJAGQCBQRjdXJyAwUKaXNQb3NpdGl2ZQUFY291bnQJAQEtAQUFY291bnQFBHRhaWwFCWlzQmlnSXRlbQELc2xvdHNHcm91cEIGAWcEYnBJbgppc1Bvc2l0aXZlB3NlZ21lbnQHbWFpbkF1eAVzdGF0cwMJAQIhPQIFAWcCAAQFc2xvdHMJALUJAgUBZwIBLAMJAGYCCQCQAwEFBXNsb3RzBQhNQVhTTE9UUwkAAgECEldyb25nIHNsb3RzIGZvcm1hdAQCczAJAJEDAgUFc2xvdHMAAAQCczEDCQBmAgkAkAMBBQVzbG90cwABCQCRAwIFBXNsb3RzAAECAAMDCQAAAgUCczACAAkAAAIFAnMxAgAHBQRicEluBAV0bXBTMAMJAQIhPQIFAnMwAgAJAQhhZGRQcm9kQgcFAnMwBQRicEluBQppc1Bvc2l0aXZlBQdzZWdtZW50BQdtYWluQXV4AAAFBXN0YXRzCQCUCgIFBGJwSW4HAwkBAiE9AgUCczECAAMIBQV0bXBTMAJfMgkAAgECHkJpZyBpdGVtIGFscmVhZHkgb2NjdXBpZXMgc2xvdAgJAQhhZGRQcm9kQgcFAnMxCAUFdG1wUzACXzEFCmlzUG9zaXRpdmUFB3NlZ21lbnQFB21haW5BdXgAAQUFc3RhdHMCXzEIBQV0bXBTMAJfMQUEYnBJbgEGZHJlc3NCBAdzZWdMaXN0BnBCeXRlcwppc1Bvc2l0aXZlBXN0YXRzCgEHc2VnbWVudAIDYWNjA3NlZwQBaggFA2FjYwJfMQQHbWFpbkF1eAkAtQkCBQNzZWcCATsDCQECIT0CCQCQAwEFB21haW5BdXgFCk5VTU1BSU5BVVgJAAIBAhRXcm9uZyBzZWdtZW50IGZvcm1hdAQBbQkAkQMCBQdtYWluQXV4AAAEAWEJAJEDAgUHbWFpbkF1eAABAwMJAAACBQFtAgAJAAACBQFhAgAHCQCUCgIJAGQCBQFqAAEIBQNhY2MCXzIEBHRtcE0JAQtzbG90c0dyb3VwQgYFAW0IBQNhY2MCXzIFCmlzUG9zaXRpdmUFAWoAAAUFc3RhdHMJAJQKAgkAZAIFAWoAAQkBC3Nsb3RzR3JvdXBCBgUBYQUEdG1wTQUKaXNQb3NpdGl2ZQUBagABBQVzdGF0cwgKAAIkbAUHc2VnTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAABQZwQnl0ZXMKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3NlZ21lbnQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYCXzIBBWZvcnRCBgdzZWdMaXN0BnBCeXRlcwhvY2N1cGllZARmcmVlCmlzUG9zaXRpdmUJZHVja1N0YXRzAwkAZgIAAwkAkAMBBQdzZWdMaXN0CQACAQIxQXQgbGVhc3QgZHVjaywgbWluZXMgYW5kIHRyYXBzIHBhcnRzIGFyZSByZXF1aXJlZAoBB3NlZ21lbnQCA2FjYwNzZWcEAWoIBQNhY2MCXzEDCQAAAgUBagAACQCWCgQJAGQCBQFqAAEIBQNhY2MCXzIIBQNhY2MCXzMIBQNhY2MCXzQEAXAJAQpwbGFjZVByb2RCBgUDc2VnCAUDYWNjAl8yBQppc1Bvc2l0aXZlBQlkdWNrU3RhdHMIBQNhY2MCXzMIBQNhY2MCXzQJAJYKBAkAZAIFAWoAAQgFAXACXzEIBQFwAl8yCAUBcAJfMwQBdAoAAiRsBQdzZWdMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEAAAFBnBCeXRlcwUIb2NjdXBpZWQFBGZyZWUKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3NlZ21lbnQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoJAJUKAwgFAXQCXzIIBQF0Al8zCAUBdAJfNAEXY2FuV2VhckN1cnJlbnRFcXVpcG1lbnQBC2R1Y2tBc3NldElkBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQGY3VyckVxCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssAgFfBAl0ZW1wUHJvZEIJAQZkcmVzc0IEBQZjdXJyRXEFDEVNUFRZX1BST0Q1MAYFA25pbAQIc2VnQnBBdXgJAJEDAgkAtQkCCQCRAwIFBmN1cnJFcQULc2VnQmFja3BhY2sCATsAAQQKYnVmZkVmZmVjdAMJAAACBQhzZWdCcEF1eAIAAAAEBGF1eDAJAJEDAgkAtQkCBQhzZWdCcEF1eAIBLAAAAwkAAAIFBGF1eDACAAAABAZpZHhDbnQJALUJAgUEYXV4MAIBOgQDaWR4CQCRAwIFBmlkeENudAAABANjbnQJAJEDAgUGaWR4Q250AAEDAwMDAwkAAAIFA2lkeAICMDYGCQAAAgUDaWR4AgIwNwYJAAACBQNpZHgCAjA4CQECIT0CBQNjbnQCAAcJAGYCCQENcGFyc2VJbnRWYWx1ZQEFA2NudAAABwkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4CQENcGFyc2VJbnRWYWx1ZQEFA2lkeAIBXwUKcklkeEVmZmVjdAAABAVzdGF0cwkBDGdldER1Y2tTdGF0cwQFBHRoaXMFC2R1Y2tBc3NldElkBQpidWZmRWZmZWN0BgQIbmV3UHJvZEIJAQZkcmVzc0IEBQZjdXJyRXEFCXRlbXBQcm9kQgcFBXN0YXRzCQAAAgUIbmV3UHJvZEIFCG5ld1Byb2RCARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAhwcm9wTGlzdA10ZXJyYWluQ291bnRzDWxhbmRTaXplSW5kZXgEc2lnbgMJAQIhPQIJAJADAQUIcHJvcExpc3QFBk5VTVJFUwkAAgECFldyb25nIHByb3BvcnRpb25zIGRhdGEKAQd1cGRhdGVyAgNhY2MBaQQGcmVzdWx0CQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb3BMaXN0BQFpCQBoAgkAaAIFBHNpZ24JAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAMJAGYCAAAFBnJlc3VsdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIWUGFuaWMhIFBpZWNlcyBvZiB0eXBlPQkApAMBBQFpAgcsIHNpZ249CQCkAwEFBHNpZ24CEywgdGVycmFpbkNvdW50c1tpXT0JAKQDAQkAkQMCBQ10ZXJyYWluQ291bnRzBQFpAhAsIGxhbmRTaXplSW5kZXg9CQCkAwEFDWxhbmRTaXplSW5kZXgJAM0IAgUDYWNjCQCkAwEFBnJlc3VsdAoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHdXBkYXRlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgERdXBkYXRlUHJvcG9ydGlvbnMDDXRlcnJhaW5Db3VudHMNbGFuZFNpemVJbmRleARzaWduBAhwcm9wTGlzdAkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACCzBfMF8wXzBfMF8wAgFfCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUIcHJvcExpc3QFDXRlcnJhaW5Db3VudHMFDWxhbmRTaXplSW5kZXgFBHNpZ24CAV8BDWNvdW50VGVycmFpbnMBCHRlcnJhaW5zCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUEAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFCAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBQwABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUQAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFFAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBRgABBQNuaWwBBmFkZFJlcwUKY3VycmVudFJlcw10ZXJyYWluQ291bnRzCWRlbHRhVGltZQ1sYW5kU2l6ZUluZGV4F2RhaWx5QnlQaWVjZVdpdGhCb251c2VzCgEFYWRkZXICA2FjYwFpBAlyZXNPZlR5cGUJAGgCCQBoAgkAawMFCWRlbHRhVGltZQUXZGFpbHlCeVBpZWNlV2l0aEJvbnVzZXMFCURBWU1JTExJUwkAkQMCBQ10ZXJyYWluQ291bnRzBQFpBQ1sYW5kU2l6ZUluZGV4CQDNCAIFA2FjYwkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmN1cnJlbnRSZXMFAWkFCXJlc09mVHlwZQQBcgoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFYWRkZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYJALkJAgUBcgIBXwEJdmlydENsYWltBA10ZXJyYWluQ291bnRzCWRlbHRhVGltZQ1sYW5kU2l6ZUluZGV4F2RhaWx5QnlQaWVjZVdpdGhCb251c2VzCgEFYWRkZXICA2FjYwFpBAlyZXNPZlR5cGUJAGgCCQBoAgkAawMFCWRlbHRhVGltZQUXZGFpbHlCeVBpZWNlV2l0aEJvbnVzZXMFCURBWU1JTExJUwkAkQMCBQ10ZXJyYWluQ291bnRzBQFpBQ1sYW5kU2l6ZUluZGV4CQCUCgIJAM0IAggFA2FjYwJfMQUJcmVzT2ZUeXBlCQBkAggFA2FjYwJfMgUJcmVzT2ZUeXBlCgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwAAAoBBSRmMF8xAgIk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YWwFCndoT2NjdXBpZWQJAMwIAgkApAMBBQd3aFRvdGFsBQNuaWwCAV8EBGxvZnQJALUJAgkAkQMCBQJ3aAUJd2hJZHhMT0ZUAgFfBAh3aExvY2tlZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFCXZvbExvY2tlZAQDb2NjAwkAZgIJAJADAQUEbG9mdAABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQFCndoT2NjdXBpZWQJALkJAgkAzAgCCQCkAwEFCHdoTG9ja2VkCQDMCAIJAKQDAQUDb2NjCQDMCAIJAKQDAQkAZQIJAGUCBQd3aFRvdGFsBQh3aExvY2tlZAUDb2NjCQDMCAIJAKQDAQUHd2hUb3RhbAUDbmlsAgFfCQDMCAIJAJEDAgUCd2gFC3doSWR4TGV2ZWxzCQDMCAIDCQAAAgkAkAMBCQC1CQIJAJEDAgUCd2gFCHdoSWR4UmVzAgFfBQZOVU1SRVMJAJEDAgUCd2gFCHdoSWR4UmVzAgswXzBfMF8wXzBfMAkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAndoBQh3aElkeE1hdAIBXwUGTlVNUkVTCQCRAwIFAndoBQh3aElkeE1hdAILMF8wXzBfMF8wXzAJAMwIAgkAkQMCBQJ3aAUJd2hJZHhQcm9kCQDMCAIFBndoTG9mdAUDbmlsARVnZXRXYXJlaG91c2VTcGFjZUxlZnQBCWN1cnJlbnRXaAQLb2NjdXBpZWRWb2wJARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEFCWN1cnJlbnRXaAQPY3VycldoTG9ja2VkVm9sCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBQl2b2xMb2NrZWQJAGUCCQBlAgkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzBQtvY2N1cGllZFZvbAUPY3VycldoTG9ja2VkVm9sAQltb3ZlU3R1ZmYDCmNhcmdvUGFydHMJY3VycmVudFdoC2N1cnJlbnRQYWNrAwkBAiE9AgkAkAMBBQpjYXJnb1BhcnRzAAMJAAIBAjRjYXJnb0xpc3RTdHIgc2hvdWxkIGNvbnRhaW4gZXhhY3RseSAyICc6JyBzZXBhcmF0b3JzBAhyZXNQYXJ0cwkAtQkCCQCRAwIFCmNhcmdvUGFydHMAAAIBXwQIbWF0UGFydHMJALUJAgkAkQMCBQpjYXJnb1BhcnRzAAECAV8ECXByb2RQYXJ0cwMJAAACCQCRAwIFCmNhcmdvUGFydHMAAgIABQNuaWwJALwJAgkAkQMCBQpjYXJnb1BhcnRzAAICAV8DCQECIT0CCQCQAwEFCHJlc1BhcnRzBQZOVU1SRVMJAAIBAiBBbGwgNiByZXNvdXJjZXMgc2hvdWxkIGJlIHBhc3NlZAMJAQIhPQIJAJADAQUIbWF0UGFydHMFBk5VTVJFUwkAAgECIEFsbCA2IG1hdGVyaWFscyBzaG91bGQgYmUgcGFzc2VkBAt3aFNwYWNlTGVmdAkBFWdldFdhcmVob3VzZVNwYWNlTGVmdAEFCWN1cnJlbnRXaAQJY3VycldoUmVzCQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwIBXwQJY3VycldoTWF0CQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAIBXwQKY3VycldoUHJvZAMJAAACCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgFfBA5jdXJyZW50UGFja1JlcwkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwIBXwQOY3VycmVudFBhY2tNYXQJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8ED2N1cnJlbnRQYWNrUHJvZAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwoBA212UgIDYWNjBGl0ZW0EAWkIBQNhY2MCXzEEAmFtCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0EA3docgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWN1cnJXaFJlcwUBaQQDYnByCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOY3VycmVudFBhY2tSZXMFAWkDCQAAAgUCYW0AAAkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAJEDAgUJY3VycldoUmVzBQFpCQDNCAIIBQNhY2MCXzMJAJEDAgUOY3VycmVudFBhY2tSZXMFAWkIBQNhY2MCXzQDCQBmAgUCYW0AAAMJAGYCBQJhbQUDYnByCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgBQRpdGVtAhkgZnJvbSBiYWNrcGFjaywgYnV0IG9ubHkgCQCkAwEFA2JwcgIKIGF2YWlsYWJsZQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3docgUCYW0JAM0IAggFA2FjYwJfMwkApAMBCQBlAgUDYnByBQJhbQkAZAIIBQNhY2MCXzQFAmFtAwkAZgIJAQEtAQUCYW0FA3docgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAkApAMBCQEBLQEFAmFtAhogZnJvbSB3YXJlaG91c2UsIGJ1dCBvbmx5IAkApAMBBQN3aHICCiBhdmFpbGFibGUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHIFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcgUCYW0JAGQCCAUDYWNjAl80BQJhbQQBcgoAAiRsBQhyZXNQYXJ0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAAABQNuaWwFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQNtdlICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYKAQNtdk0CA2FjYwRpdGVtBAFpCAUDYWNjAl8xBAJhbQkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAN3aG0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQljdXJyV2hNYXQFAWkEA2JwbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmN1cnJlbnRQYWNrTWF0BQFpAwkAAAIFAmFtAAAJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCRAwIFCWN1cnJXaE1hdAUBaQkAzQgCCAUDYWNjAl8zCQCRAwIFDmN1cnJlbnRQYWNrTWF0BQFpCAUDYWNjAl80AwkAZgIFAmFtAAADCQBmAgUCYW0FA2JwbQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAUEaXRlbQIZIGZyb20gYmFja3BhY2ssIGJ1dCBvbmx5IAkApAMBBQNicG0CCiBhdmFpbGFibGUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aG0FAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwbQUCYW0JAGQCCAUDYWNjAl80BQJhbQMJAGYCCQEBLQEFAmFtBQN3aG0JAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAJAKQDAQkBAS0BBQJhbQIaIGZyb20gd2FyZWhvdXNlLCBidXQgb25seSAJAKQDAQUDd2htAgogYXZhaWxhYmxlCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2htBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicG0FAmFtCQBkAggFA2FjYwJfNAUCYW0EAW0KAAIkbAUIbWF0UGFydHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQAAAUDbmlsBQNuaWwIBQFyAl80CgEFJGYxXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQNtdk0CBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjFfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYKAQNtdlACA2FjYwRpdGVtBAFpCAUDYWNjAl8xBAJhbQkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAN3aHADCQBmAgkAkAMBBQpjdXJyV2hQcm9kBQFpCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKY3VycldoUHJvZAUBaQAABANicHADCQBmAgkAkAMBBQ9jdXJyZW50UGFja1Byb2QFAWkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ9jdXJyZW50UGFja1Byb2QFAWkAAAMJAAACBQJhbQAACQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBBQN3aHAJAM0IAggFA2FjYwJfMwkApAMBBQNicHAIBQNhY2MCXzQDCQBmAgUCYW0AAAMJAGYCBQJhbQUDYnBwCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgBQRpdGVtAhkgZnJvbSBiYWNrcGFjaywgYnV0IG9ubHkgCQCkAwEFA2JwcAIKIGF2YWlsYWJsZQQIZGVsdGFWb2wJAGUCCQEIdG9Wb2x1bWUCCQBkAgUDd2hwBQJhbQUOUFJPRFVDVFBLR1NJWkUJAQh0b1ZvbHVtZQIFA3docAUOUFJPRFVDVFBLR1NJWkUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHAFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcAUCYW0JAGQCCAUDYWNjAl80BQhkZWx0YVZvbAMJAGYCCQEBLQEFAmFtBQN3aHAJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAJAKQDAQkBAS0BBQJhbQIaIGZyb20gd2FyZWhvdXNlLCBidXQgb25seSAJAKQDAQUDd2hwAgogYXZhaWxhYmxlBAhkZWx0YVZvbAkAZQIJAQh0b1ZvbHVtZQIJAGQCBQN3aHAFAmFtBQ5QUk9EVUNUUEtHU0laRQkBCHRvVm9sdW1lAgUDd2hwBQ5QUk9EVUNUUEtHU0laRQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3docAUCYW0JAM0IAggFA2FjYwJfMwkApAMBCQBlAgUDYnBwBQJhbQkAZAIIBQNhY2MCXzQFCGRlbHRhVm9sBAFwAwkBAiE9AgkAkAMBBQlwcm9kUGFydHMAAAoAAiRsBQlwcm9kUGFydHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQAAAUDbmlsBQNuaWwIBQFtAl80CgEFJGYyXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQNtdlACBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjJfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDUwCQEFJGYyXzICCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgkAlgoEAAAFCmN1cnJXaFByb2QFD2N1cnJlbnRQYWNrUHJvZAgFAW0CXzQECHZvbFNhbGRvCAUBcAJfNAMJAGYCBQh2b2xTYWxkbwULd2hTcGFjZUxlZnQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICFUF0dGVtcHQgdG8gcHV0IHRvdGFsIAkApAMBBQh2b2xTYWxkbwIRIHN0dWZmLCBidXQgb25seSAJAKQDAQULd2hTcGFjZUxlZnQCFSB3YXJlaG91c2Ugc3BhY2UgbGVmdAkAmQoHCQC5CQIIBQFyAl8yAgFfCQC5CQIIBQFtAl8yAgFfCQC6CQIIBQFwAl8yAgFfCQC5CQIIBQFyAl8zAgFfCQC5CQIIBQFtAl8zAgFfCQC6CQIIBQFwAl8zAgFfBQh2b2xTYWxkbwESZXhwZWRpdGlvbkludGVybmFsAgZjYWxsZXIEdHhJZAQIdXNlckFkZHIJAKUIAQUGY2FsbGVyBAZiaWdOdW0JAQNhYnMBCQCeAwEFBHR4SWQEB2ZyZWVOdW0JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQ9QUkVTQUxFTlVNTEFORFMAAQQHbGFuZE51bQkApAMBBQdmcmVlTnVtBAxjb250aW5lbnRJZHgJAKADAQkAuwICBQZiaWdOdW0FBUZJVkVYBAh0ZXJyYWlucwkBC2dlblRlcnJhaW5zAgUGYmlnTnVtBQxjb250aW5lbnRJZHgECWNvbnRpbmVudAkAkQMCBQpjb250aW5lbnRzBQxjb250aW5lbnRJZHgEBWlzc3VlCQDCCAUJAQduZnROYW1lAgUHbGFuZE51bQIBUwkAuQkCCQDMCAIFB2xhbmROdW0JAMwIAgIBUwkAzAgCBQh0ZXJyYWlucwkAzAgCBQljb250aW5lbnQFA25pbAIBXwABAAAHBAdhc3NldElkCQC4CAEFBWlzc3VlBAJpZAkA2AQBBQdhc3NldElkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUHZnJlZU51bQABCQDMCAIFBWlzc3VlCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlMYW5kVG9Bc3NldElkAQUHbGFuZE51bQUCaWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFAmlkBQh1c2VyQWRkcgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5TGFuZE51bVRvT3duZXIBBQdsYW5kTnVtBQh1c2VyQWRkcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQJpZAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgUCaWQFCHVzZXJBZGRyAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyAAEFB2Fzc2V0SWQFA25pbAkAlAoCBQJpZAUJY29udGluZW50AQxmbGlnaHRDb21tb24DCHVzZXJBZGRyB21lc3NhZ2UDc2lnAwkBASEBCQDEEwMFB21lc3NhZ2UFA3NpZwUDcHViCQACAQIYc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoBAVwYXJ0cwkAvAkCCQCwCQEFB21lc3NhZ2UCATsECWZsaWdodExvZwkAvAkCCQCRAwIFBXBhcnRzAAACAXwEAmhwCQC1CQIJAJEDAgUJZmxpZ2h0TG9nBQhmbEhlYWx0aAIBXwQFY3VySFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAAABAVuZXdIUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmhwAAEEC25ld0xvY1R4VmVyCQC1CQIJAJEDAgUFcGFydHMAAQIBOgQLbmV3TG9jYXRpb24JAJEDAgULbmV3TG9jVHhWZXIAAAQEdGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWZsaWdodExvZwULZmxUaW1lc3RhbXADAwkAZgIFBHRpbWUJAGQCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMGCQBmAgkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBRFGSVZFTUlOVVRFU01JTExJUwUEdGltZQkAAgEJAKwCAgkArAICCQCsAgICHHNpZ25hdHVyZSBvdXRkYXRlZDogbG9nVGltZT0JAKQDAQUEdGltZQIJLCBiY1RpbWU9CQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAl0eEZyb21Nc2cJAJEDAgULbmV3TG9jVHhWZXIAAQQGbGFzdFR4CQELdmFsdWVPckVsc2UCCQCiCAEJARFrZXlMYXN0VHhJZEJ5VXNlcgEFCHVzZXJBZGRyAgADCQECIT0CBQZsYXN0VHgFCXR4RnJvbU1zZwkAAgEJAKwCAgkArAICCQCsAgICHlR4IGlkcyBkb24ndCBtYXRjaCEgSW4gc3RhdGU6IAUGbGFzdFR4AgosIGluIG1zZzogBQl0eEZyb21Nc2cEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUIdXNlckFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAxvbGRGcm9tU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAQIhPQIFDG9sZEZyb21TdGF0ZQUFY3VySFAJAAIBCQCsAgIJAKwCAgkArAICAgpvbGRIZWFsdGg9CQCkAwEFDG9sZEZyb21TdGF0ZQIvIGZyb20gc3RhdGUgZG9lcyBub3QgbWF0Y2ggb25lIGZyb20gZmxpZ2h0IGxvZz0JAKQDAQUFY3VySFADCQBnAgAABQVjdXJIUAkAAgECHllvdSBjYW4ndCBmbHkgd2l0aCB6ZXJvIGhlYWx0aAMJAQEhAQkBF2NhbldlYXJDdXJyZW50RXF1aXBtZW50AQULZHVja0Fzc2V0SWQJAAIBAhZFcXVpcG1lbnQgaW5jb21wYXRpYmxlBAVib251cwMJAGYCCQCQAwEFCWZsaWdodExvZwUHZmxCb251cwkAkQMCBQlmbGlnaHRMb2cFB2ZsQm9udXMCAAQIcHJvZFVzZWQDCQBmAgkAkAMBBQlmbGlnaHRMb2cFC2ZsUHJvZHNVc2VkCQCRAwIFCWZsaWdodExvZwULZmxQcm9kc1VzZWQCAAQKc2VudEFtb3VudAMDCQBmAgUFbmV3SFAAAAkAAAIFBWJvbnVzAgEkBwkBBWFzSW50AQkA/AcEBQxyZXN0Q29udHJhY3QCDXNlbmRVc2R0UHJpemUJAMwIAgUIdXNlckFkZHIFA25pbAUDbmlsAAAJAJcKBQUFbmV3SFAFC2R1Y2tBc3NldElkBQpzZW50QW1vdW50BQtuZXdMb2NhdGlvbgUIcHJvZFVzZWQBDGFwcGx5Qm9udXNlcwILbGFuZEFzc2V0SWQGcGllY2VzBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQJYXJ0UGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAAAEBGFkZDYJAGkCBQppbmZyYUxldmVsAAYEBGFkZDcJAGkCBQppbmZyYUxldmVsAAcJAGQCCQBkAgUPREFJTFlSRVNCWVBJRUNFCQBrAwUPREFJTFlSRVNCWVBJRUNFCQBkAgkAZAIFCmluZnJhTGV2ZWwFBGFkZDYJAGgCAAIFBGFkZDcABQkAawMFD0RBSUxZUkVTQllQSUVDRQUJYXJ0UGllY2VzCQBoAgUGcGllY2VzAAUBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwRhZGRyCWNsYWltTW9kZQ1sYW5kQXNzZXRJZEluBA0kdDAzMzcwNjM0MjQ1AwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAJQKAgUNbGFuZEFzc2V0SWRJbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAgAEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04EA2xvYwkAtQkCCQEFdmFsdWUBBQtjdXJMb2NhdGlvbgIBXwMJAQIhPQIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFMCQACAQkArAICCQCsAgICFkR1Y2sgbG9jYXRpb24gdHlwZSBpcyAJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAhEsIGJ1dCBzaG91bGQgYmUgTAkAlAoCCQCRAwIFA2xvYwUIbG9jSWR4SWQFC2R1Y2tBc3NldElkBAtsYW5kQXNzZXRJZAgFDSR0MDMzNzA2MzQyNDUCXzEEBmR1Y2tJZAgFDSR0MDMzNzA2MzQyNDUCXzIEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFB3RpbWVLZXkJAKwCAgkArAICAgVMYW5kIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8JAJYKBAUGZHVja0lkBQtsYW5kQXNzZXRJZAUBZAUJc2F2ZWRUaW1lARBjbGFpbVJlc0ludGVybmFsBARhZGRyBmFtb3VudAljbGFpbU1vZGUNbGFuZEFzc2V0SWRJbgMJAGYCAAAFBmFtb3VudAkAAgECD05lZ2F0aXZlIGFtb3VudAQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUJY2xhaW1Nb2RlBQ1sYW5kQXNzZXRJZEluBAhsYW5kU2l6ZQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCCAUBYwJfMwULcmVjVGVycmFpbnMECWRlbHRhVGltZQkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCAUBYwJfNAMJAGYCAAAFCWRlbHRhVGltZQkAAgEJAKwCAgkArAICCQCsAgICJlNhdmVkIHRpbWVzdGFtcCBpcyBpbiBmdXR1cmUsIHNhdmVkID0gCQCkAwEIBQFjAl80AgwsIGN1cnJlbnQgPSAJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEFCGxhbmRTaXplBBZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQEMYXBwbHlCb251c2VzAggFAWMCXzIFBnBpZWNlcwQIYXZhaWxSZXMJAGsDBQlkZWx0YVRpbWUJAGgCBRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBQZwaWVjZXMFCURBWU1JTExJUwMJAGYCBQZhbW91bnQFCGF2YWlsUmVzCQACAQkArAICCQCsAgIJAKwCAgIiTm90IGVub3VnaCByZXNvdXJjZXMsIGF2YWlsYWJsZSA9IAkApAMBBQhhdmFpbFJlcwIOLCByZXF1ZXN0ZWQgPSAJAKQDAQUGYW1vdW50BAxuZXdEZWx0YVRpbWUJAGsDCQBlAgUIYXZhaWxSZXMFBmFtb3VudAUJREFZTUlMTElTCQBoAgUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQUGcGllY2VzBAxuZXdUaW1lc3RhbXAJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUMbmV3RGVsdGFUaW1lBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBApyZXNUb0NsYWltCQEJdmlydENsYWltBAUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQgFAWMCXzIECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBCAUBYwJfMgAABAljdXJyZW50V2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBARsb2Z0CQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8EC3doU3BhY2VMZWZ0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQMDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAZgIFBmFtb3VudAULd2hTcGFjZUxlZnQHCQACAQkArAICCQCsAgICBU9ubHkgCQCkAwEFC3doU3BhY2VMZWZ0Ahggc3BhY2UgbGVmdCBpbiB3YXJlaG91c2UEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBCAUBYwJfMQQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BA5jdXJyZW50UGFja1JlcwkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwIBXwQMY3VycmVudFdoUmVzCQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwIBXwQNJHQwMzY2MTkzNzQ5MAMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQCWCgQJAQZhZGRSZXMFBQxjdXJyZW50V2hSZXMFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAgFCnJlc1RvQ2xhaW0CXzIJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQgFCnJlc1RvQ2xhaW0CXzIDCQAAAgUJY2xhaW1Nb2RlBQ1jbGFpbU1vZGVEdWNrCQCWCgQJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwkBBmFkZFJlcwUFDmN1cnJlbnRQYWNrUmVzBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQQFZGlzdHIJAQ1kaXN0cmlidXRlUmVzBAUMY3VycmVudFdoUmVzBQ5jdXJyZW50UGFja1JlcwUKcmVzVG9DbGFpbQULd2hTcGFjZUxlZnQEBHdoQW0JAJcDAQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQkAzAgCCAUKcmVzVG9DbGFpbQJfMgUDbmlsCQCWCgQIBQVkaXN0cgJfMQgFBWRpc3RyAl8yCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkBQR3aEFtCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUFBHdoQW0EBXdoUmVzCAUNJHQwMzY2MTkzNzQ5MAJfMQQFYnBSZXMIBQ0kdDAzNjYxOTM3NDkwAl8yBAVsb2Z0TwgFDSR0MDM2NjE5Mzc0OTACXzMEBWxvZnRGCAUNJHQwMzY2MTkzNzQ5MAJfNAkAlwoFCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEIBQFjAl8yBQxuZXdUaW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAgFAWMCXzIFBGFkZHIFDG5ld1RpbWVzdGFtcAUDbmlsBQVicEtleQkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIFBWJwUmVzCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsBQV3aEtleQkAzAgCCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMJAMwIAgUFd2hSZXMJAMwIAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0CQDMCAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCRAwIFBGxvZnQFCHZvbFRvdGFsBQNuaWwCAV8FA25pbAEIY2xhaW1BbGwEBGFkZHILbGFuZEFzc2V0SWQGcGllY2VzCWNsYWltTW9kZQQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQEFdmFsdWUBCQCfCAEFB3RpbWVLZXkECGF2YWlsUmVzCQBoAgkAawMJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUJc2F2ZWRUaW1lCQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwUJREFZTUlMTElTBQZwaWVjZXMJARBjbGFpbVJlc0ludGVybmFsBAUEYWRkcgUIYXZhaWxSZXMFCWNsYWltTW9kZQULbGFuZEFzc2V0SWQBDXVwSW5mcmFDb21tb24EDHNob3VsZFVzZU1hdAZjYWxsZXINcGF5bWVudEFtb3VudAtsYW5kQXNzZXRJZAQEYWRkcgkApQgBBQZjYWxsZXIEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFE2NsYWltTW9kZVdoVGhlbkR1Y2sFC2xhbmRBc3NldElkBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQIaW5mcmFLZXkJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQgFAWMCXzIECGN1ckxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEFCGluZnJhS2V5AAADAwkBASEBBRhLU19BTExPV19CSUdfSU5GUkFfTUVSR0UJAGcCBQhjdXJMZXZlbAADBwkAAgECJkN1cnJlbnRseSBtYXggaW5mcmFzdHJ1Y3R1cmUgbGV2ZWwgPSAzBAhtYXhJbmZyYQkAZAIJAGkCCQEEc3FydAQFBnBpZWNlcwAAAAAFBERPV04ABQACBAhuZXdMZXZlbAkAZAIFCGN1ckxldmVsAAEDAwUYS1NfQUxMT1dfQklHX0lORlJBX01FUkdFCQBmAgUIbmV3TGV2ZWwFCG1heEluZnJhBwkAAgEJAKwCAgIlQ3VycmVudGx5IG1heCBpbmZyYXN0cnVjdHVyZSBsZXZlbCA9IAkApAMBBQhtYXhJbmZyYQQEY29zdAkAawMFFUluZnJhVXBncmFkZUNvc3RTVXNkdAkAaAIFBnBpZWNlcwUIbmV3TGV2ZWwFBVNTSVpFAwMJAQEhAQUMc2hvdWxkVXNlTWF0CQECIT0CBQ1wYXltZW50QW1vdW50BQRjb3N0BwkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFBGNvc3QEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBCAUBYwJfMQQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVtTGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQHbWF0VXNlZAkAawMFEUluZnJhVXBncmFkZUNvc3RTCQBoAgUGcGllY2VzBQhuZXdMZXZlbAUFU1NJWkUEBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDBQxzaG91bGRVc2VNYXQFBW1MaXN0BQdtYXRVc2VkAgFfBAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcggFAWMCXzIFBnBpZWNlcwUTY2xhaW1Nb2RlV2hUaGVuRHVjawQGd2hEYXRhCAULY2xhaW1SZXN1bHQCXzUEBm9sZFZvbAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQZ3aERhdGEFC3doSWR4TGV2ZWxzBApuZXdWb2xEYXRhCQC5CQIJAMwIAgkAkQMCCQC1CQIJAJEDAgUGd2hEYXRhBQt3aElkeExldmVscwIBXwAACQDMCAIJAKQDAQUIbmV3TGV2ZWwFA25pbAIBXwQGbmV3Vm9sCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBBQpuZXdWb2xEYXRhBARsb2Z0CQC1CQIJAJEDAgUGd2hEYXRhBQl3aElkeExPRlQCAV8ECm5ld0xvZnRTdHIJALkJAgkAzAgCCQCRAwIFBGxvZnQFCXZvbExvY2tlZAkAzAgCCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCQDMCAIJAKQDAQkAZQIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQUGbmV3Vm9sBQZvbGRWb2wJAMwIAgkApAMBBQZuZXdWb2wFA25pbAIBXwkAlQoDCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCGluZnJhS2V5BQhuZXdMZXZlbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIIBQFjAl8yBQRhZGRyBQhuZXdMZXZlbAkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCCAULY2xhaW1SZXN1bHQCXzMFCGJwSWR4UmVzCQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgkAzAgCCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzQJALkJAgkAzAgCBQpuZXdWb2xEYXRhCQDMCAIJAJEDAgUGd2hEYXRhBQh3aElkeFJlcwkAzAgCCQCRAwIFBndoRGF0YQUId2hJZHhNYXQJAMwIAgkAkQMCBQZ3aERhdGEFCXdoSWR4UHJvZAkAzAgCBQpuZXdMb2Z0U3RyBQNuaWwCAToFA25pbAgFC2NsYWltUmVzdWx0Al8xBQhuZXdMZXZlbAUHbWF0VXNlZAEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCC2R1Y2tBc3NldElkB2RlbHRhWFAEBmx2bEtleQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkBAV4cEtleQkBCWtleUR1Y2tYUAEFC2R1Y2tBc3NldElkBAJ4cAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QFBXhwS2V5AAAEBW5ld1hQCQBkAgUCeHAFB2RlbHRhWFAECWx2bFBvaW50cwkBB2xldmVsVXACCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAUGbHZsS2V5AAAFBW5ld1hQBAlrZXlQb2ludHMJARFrZXlEdWNrRnJlZVBvaW50cwEFC2R1Y2tBc3NldElkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFBmx2bEtleQkAkQMCBQlsdmxQb2ludHMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUFeHBLZXkFBW5ld1hQCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlQb2ludHMJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleVBvaW50cwAACQCRAwIFCWx2bFBvaW50cwABBQNuaWwFBW5ld1hQARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgRhZGRyB2RlbHRhWFAEBmx2bEtleQkBDGtleVVzZXJMZXZlbAEFBGFkZHIEBXhwS2V5CQEJa2V5VXNlclhQAQUEYWRkcgQCeHAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0BQV4cEtleQAABAVuZXdYUAkAZAIFAnhwBQdkZWx0YVhQBAlsdmxQb2ludHMJAQdsZXZlbFVwAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QFBmx2bEtleQAABQVuZXdYUAQJa2V5UG9pbnRzCQERa2V5VXNlckZyZWVQb2ludHMBBQRhZGRyCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFBmx2bEtleQkAkQMCBQlsdmxQb2ludHMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUFeHBLZXkFBW5ld1hQCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlQb2ludHMJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleVBvaW50cwAACQCRAwIFCWx2bFBvaW50cwABBQNuaWwFBW5ld1hQARJhY3RpdmF0ZU9uYm9hcmRBcnQBBGFkZHIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQIcmVmQnlLZXkJAQ9rZXlBZGRyZXNzUmVmQnkBBQRhZGRyBAVyZWZCeQkAoggBBQhyZWZCeUtleQMJAQEhAQkBCWlzRGVmaW5lZAEFBXJlZkJ5CQACAQIpWW91IGFyZSBub3QgZWxpZ2libGUgZm9yIE9OQk9BUkQgYXJ0aWZhY3QEBmFydEtleQkBHGtleU9uYm9hcmRBcnREdWNrQWN0aXZhdGVkQnkBBQRhZGRyBAdhcnREdWNrCQCiCAEFBmFydEtleQMJAQlpc0RlZmluZWQBBQdhcnREdWNrCQACAQkArAICAi9Zb3UgYWxyZWFkeSB1c2VkIHlvdXIgT05CT0FSRCBhcnRpZmFjdCBvbiBkdWNrIAkBBXZhbHVlAQUHYXJ0RHVjawQQZHVja0FjdGl2YXRvcktleQkBHGtleU9uYm9hcmRBcnRBY3RpdmF0ZWRPbkR1Y2sBBQtkdWNrQXNzZXRJZAQNZHVja0FjdGl2YXRvcgkAoggBBRBkdWNrQWN0aXZhdG9yS2V5AwkBCWlzRGVmaW5lZAEFDWR1Y2tBY3RpdmF0b3IJAAIBCQCsAgIJAKwCAgkArAICAglUaGUgZHVjayAFC2R1Y2tBc3NldElkAjQgYWxyZWFkeSBnb3QgcG9pbnRzIGZyb20gT05CT0FSRCBhcnRpZmFjdCBmcm9tIHVzZXIgCQEFdmFsdWUBBQ1kdWNrQWN0aXZhdG9yCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGYXJ0S2V5BQtkdWNrQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCBRBkdWNrQWN0aXZhdG9yS2V5BQRhZGRyBQNuaWwICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUJeHBPbmJvYXJkAl8xARJhY3RpdmF0ZVByZXNhbGVBcnQCBGFkZHINbGFuZEFzc2V0SWRJbgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUTY2xhaW1Nb2RlV2hUaGVuRHVjawUNbGFuZEFzc2V0SWRJbgQLbGFuZEFzc2V0SWQIBQFjAl8yBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQNYWN0aXZhdGlvbktleQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQDCQBmAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ1hY3RpdmF0aW9uS2V5AAAAAAkAAgECJVByZXNhbGUgYXJ0aWZhY3QgaXMgYWxyZWFkeSBhY3RpdmF0ZWQDCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIIBQFjAl8zBQpyZWNMYW5kTnVtBQ9QUkVTQUxFTlVNTEFORFMJAAIBCQCsAgIJAKwCAgkArAICBQpMQU5EUFJFRklYAgEgBQtsYW5kQXNzZXRJZAIlIGlzIG5vdCBlbGlnaWJsZSBmb3IgcHJlc2FsZSBhcnRpZmFjdAQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIFC2xhbmRBc3NldElkBQZwaWVjZXMFE2NsYWltTW9kZVdoVGhlbkR1Y2sJAM0IAgkAzQgCCQDNCAIIBQtjbGFpbVJlc3VsdAJfMQkBDEludGVnZXJFbnRyeQIFDWFjdGl2YXRpb25LZXkFBnBpZWNlcwkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al8yCQC5CQIIBQtjbGFpbVJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al80CQC5CQIIBQtjbGFpbVJlc3VsdAJfNQIBOgEPY2hlY2tUb3VybmFtZW50AQtkdWNrQXNzZXRJZAQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUSdG91cm5hbWVudENvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBVAcDAwMJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FD2xvY0lkeENvbnRpbmVudAUGbGFzdElkCQAAAgkAkQMCBQdkeW5hbWljBQ50RHluYW1pY1N0YXR1cwIKSU5QUk9HUkVTUwcJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQNub3cHCQACAQIqWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIHRoZSB0b3VybmFtZW50CQEJYXNCb29sZWFuAQkA/AcEBQR0aGlzAhZleGl0VG91cm5hbWVudEludGVybmFsCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAENbWVyZ2VJbnRlcm5hbAYLbmV3TGFuZFNpemUIbmV3TGV2ZWwHZm9ybXVsYQRhZGRyDGxhbmRBc3NldElkcwduZWVkTWF0BAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh1tZXJnZUludGVybmFsX2NoZWNrVG91cm5hbWVudAoBCmNoZWNrTWVyZ2UCA2FjYwtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUHdGltZUtleQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBAljb250aW5lbnQJAJEDAgUBZAUMcmVjQ29udGluZW50AwMJAQIhPQIIBQNhY2MCXzMCAAkBAiE9AggFA2FjYwJfMwUJY29udGluZW50BwkAAgECLkxhbmRzIHNob3VsZCBiZSBvbiB0aGUgc2FtZSBjb250aW5lbnQgdG8gbWVyZ2UECGxhbmRTaXplCQCRAwIFAWQFC3JlY0xhbmRTaXplBAdzaXplc0luCAUDYWNjAl8xBAFpCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALMJAgUHc2l6ZXNJbgUIbGFuZFNpemUCJ1lvdSBoYXZlbid0IHBhc3NlZCBhbGwgdGhlIGxhbmRzIG5lZWRlZAQIc2l6ZXNPdXQJAKwCAgkArwICBQdzaXplc0luBQFpCQCwAgIFB3NpemVzSW4JAGQCBQFpAAEEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEFCGxhbmRTaXplBARhcnRzCQBkAggFA2FjYwJfMgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQIcmVxTGV2ZWwEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAAAwMJAAACAgFNBQckbWF0Y2gwAAQDCQAAAgIBTAUHJG1hdGNoMAAFAwkAAAICAlhMBQckbWF0Y2gwAAYJAAIBAhpPbmx5IFMsIE0sIEwsIFhMIGNhbiBtZXJnZQMJAQIhPQIFCmluZnJhTGV2ZWwFCHJlcUxldmVsCQACAQIiQWxsIGxhbmRzIHNob3VsZCBiZSBtYXhlZCB0byBtZXJnZQQHbGFuZE51bQkAkQMCBQFkBQpyZWNMYW5kTnVtBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMECWRlbHRhVGltZQkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQlzYXZlZFRpbWUDCQBmAgAABQlkZWx0YVRpbWUJAAIBCQCsAgIJAKwCAgkArAICAiZTYXZlZCB0aW1lc3RhbXAgaXMgaW4gZnV0dXJlLCBzYXZlZCA9IAkApAMBBQlzYXZlZFRpbWUCDCwgY3VycmVudCA9IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBWJwUmVzCQEGYWRkUmVzBQkAtQkCCAUDYWNjAl80AgFfBQ10ZXJyYWluQ291bnRzBQlkZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQQFcHJvcHMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwJfNgUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEBmNQcm9wcwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjA18xMAUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEC3N1bVRlcnJhaW5zCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MCXzkFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABBAVsYW5kcwgFA2FjYwJfNwQDaWR4CQDPCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEFA2lkeAkAAgEJAKwCAgIgWW91ciBzdGFrZWQgbGFuZHMgZG9uJ3QgY29udGFpbiAFC2xhbmRBc3NldElkBAljdXN0b21LZXkJARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEFC2xhbmRBc3NldElkBApjdXN0b21OYW1lCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1c3RvbUtleQIACQCcCgoFCHNpemVzT3V0BQRhcnRzBQljb250aW5lbnQFBWJwUmVzCQDOCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCAUDYWNjAl81CQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQRhZGRyCQELRGVsZXRlRW50cnkBCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0JAQtEZWxldGVFbnRyeQEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFC2xhbmRBc3NldElkBQRhZGRyCQELRGVsZXRlRW50cnkBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQkBC0RlbGV0ZUVudHJ5AQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBBQljdXN0b21LZXkJAQRCdXJuAgkA2QQBBQtsYW5kQXNzZXRJZAABAwkBAiE9AgUKY3VzdG9tTmFtZQIACQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUFA25pbAUDbmlsBQVwcm9wcwkA0QgCBQVsYW5kcwkBBXZhbHVlAQUDaWR4CQBkAggFA2FjYwJfOAUGcGllY2VzBQtzdW1UZXJyYWlucwUGY1Byb3BzBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvcExpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQRhZGRyBAhsYW5kc1N0cgkAoggBBQhsYW5kc0tleQQHbGFuZHNJbgMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsBAVjb250MAkAkQMCCQC1CQIICQEFdmFsdWUBCQDsBwEJANkEAQkAkQMCBQxsYW5kQXNzZXRJZHMAAAtkZXNjcmlwdGlvbgIBXwUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEFBWNvbnQwAgswXzBfMF8wXzBfMAIBXwQBcgoAAiRsBQxsYW5kQXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCcCgoFB2Zvcm11bGEAAAIACQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwUDbmlsBQhwcm9wTGlzdAUHbGFuZHNJbgAACQC1CQICCzBfMF8wXzBfMF8wAgFfBQljb250UHJvcHMKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCmNoZWNrTWVyZ2UCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFBAljb250aW5lbnQIBQFyAl8zBAxjb250aW5lbnRJZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAzwgCBQpjb250aW5lbnRzBQljb250aW5lbnQJAKwCAgITVW5rbm93biBjb250aW5lbnQ6IAUJY29udGluZW50BAh0ZXJyYWlucwkBE2dlblRlcnJhaW5zRm9yTWVyZ2UCCAUBcgJfOQkAaQIJAQ9udW1QaWVjZXNCeVNpemUBBQtuZXdMYW5kU2l6ZQUFU1NJWkUEB2ZyZWVOdW0JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQ9QUkVTQUxFTlVNTEFORFMAAQQKbmV3TGFuZE51bQkApAMBBQdmcmVlTnVtBAVpc3N1ZQkAwggFCQEHbmZ0TmFtZQIFCm5ld0xhbmROdW0FC25ld0xhbmRTaXplCQC5CQIJAMwIAgUKbmV3TGFuZE51bQkAzAgCBQtuZXdMYW5kU2l6ZQkAzAgCBQh0ZXJyYWlucwkAzAgCBQljb250aW5lbnQFA25pbAIBXwABAAAHBAdhc3NldElkCQC4CAEFBWlzc3VlBA5uZXdMYW5kQXNzZXRJZAkA2AQBBQdhc3NldElkBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwkAZgIFB25lZWRNYXQAAAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwUHbmVlZE1hdAIBXwQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAkAlAoCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCAUBcgJfNQMJAGYCCQCQAwEIBQFyAl83AAAJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIIBQFyAl83AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQMJAGYCCAUBcgJfOAUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMIBQFyAl84CQEMSW50ZWdlckVudHJ5AgkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQdmcmVlTnVtAAEFBWlzc3VlCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFCm5ld0xhbmROdW0FDm5ld0xhbmRBc3NldElkCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUObmV3TGFuZEFzc2V0SWQFBGFkZHIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFCm5ld0xhbmROdW0FBGFkZHIJAQxJbnRlZ2VyRW50cnkCCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQ5uZXdMYW5kQXNzZXRJZAgFAXICXzIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFDm5ld0xhbmRBc3NldElkBQhuZXdMZXZlbAkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQ5uZXdMYW5kQXNzZXRJZAUEYWRkcgUIbmV3TGV2ZWwJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCAUBcgJfNAkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAJALkJAggFAXICXzYCAV8JAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUJY29udGluZW50CQC5CQIIBQFyA18xMAIBXwkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAgUJY29udGluZW50CQDMCAICAUwJAMwIAgUObmV3TGFuZEFzc2V0SWQFA25pbAIBXwkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUEYWRkcgABBQdhc3NldElkBQ5uZXdMYW5kQXNzZXRJZAEDczJtAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgFNAAMCBFNTU1MFBGFkZHIFDGxhbmRBc3NldElkcwAAAQNtMmwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAUwABAIDU01NBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwAEAQRsMnhsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgJYTAAFAgVTU1NNTAUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMALwEGeGwyeHhsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgNYWEwABgIDTFhMBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwA2AQttZXJnZUNvbW1vbgIEYWRkcgxsYW5kQXNzZXRJZHMEByRtYXRjaDAJAJADAQUMbGFuZEFzc2V0SWRzAwkAAAIABAUHJG1hdGNoMAkBA3MybQIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAMFByRtYXRjaDAJAQNtMmwCBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgAFBQckbWF0Y2gwCQEEbDJ4bAIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAIFByRtYXRjaDAJAQZ4bDJ4eGwCBQRhZGRyBQxsYW5kQXNzZXRJZHMJAAIBAg1Vbmtub3duIG1lcmdlAQZwcm9sb2cBAWkDAwkBAiE9AggFAWkMb3JpZ2luQ2FsbGVyBQxyZXN0Q29udHJhY3QJAQt2YWx1ZU9yRWxzZQIJAKAIAQkBCmtleUJsb2NrZWQABwcJAAIBAh9Db250cmFjdHMgYXJlIHVuZGVyIG1haW50ZW5hbmNlCQELU3RyaW5nRW50cnkCCQERa2V5TGFzdFR4SWRCeVVzZXIBCQClCAEIBQFpDG9yaWdpbkNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkKgFpAQ1jb25zdHJ1Y3RvclYxAQhyZXN0QWRkcgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlSZXN0QWRkcmVzcwAFCHJlc3RBZGRyBQNuaWwBaQEKc2V0QmxvY2tlZAEJaXNCbG9ja2VkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRcGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQprZXlCbG9ja2VkAAUJaXNCbG9ja2VkBQNuaWwBaQEJc3Rha2VMYW5kAAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAdhc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyAwkBAiE9AggFA3BtdAZhbW91bnQAAQkAAgEJAKwCAgkArAICAgRORlQgBQpMQU5EUFJFRklYAiQgdG9rZW4gc2hvdWxkIGJlIGF0dGFjaGVkIGFzIHBheW1lbnQEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQDCQECIT0CCAUFYXNzZXQGaXNzdWVyBQR0aGlzCQACAQIXVW5rbm93biBpc3N1ZXIgb2YgdG9rZW4DCQEBIQEJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQpMQU5EUFJFRklYCQACAQkArAICCQCsAgICCU9ubHkgTkZUIAUKTEFORFBSRUZJWAIUIHRva2VucyBhcmUgYWNjZXB0ZWQEC2xhbmROdW1TaXplCQCwAgIIBQVhc3NldARuYW1lAAQEB2xhbmROdW0DCQEIY29udGFpbnMCBQtsYW5kTnVtU2l6ZQIDWFhMCQCzAgIFC2xhbmROdW1TaXplAAMDCQEIY29udGFpbnMCBQtsYW5kTnVtU2l6ZQICWEwJALMCAgULbGFuZE51bVNpemUAAgkAswICBQtsYW5kTnVtU2l6ZQABAwkBASEBCQEJaXNEZWZpbmVkAQkAtgkBBQdsYW5kTnVtCQACAQkArAICAh5DYW5ub3QgcGFyc2UgbGFuZCBudW1iZXIgZnJvbSAIBQVhc3NldARuYW1lBAtsYW5kQXNzZXRJZAkA2AQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAwkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQISIGlzIGFscmVhZHkgc3Rha2VkBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBAVwcm9wcwkBEXVwZGF0ZVByb3BvcnRpb25zAwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAEEDHJlc0J5Q29udEtleQkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBCQCRAwIFAWQFDHJlY0NvbnRpbmVudAQJY29udFByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUMcmVzQnlDb250S2V5AgswXzBfMF8wXzBfMAIBXwQQdXBkYXRlZENvbnRQcm9wcwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCWNvbnRQcm9wcwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAECAV8ECGxhbmRzS2V5CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUHYWRkcmVzcwQIbGFuZHNTdHIJAKIIAQUIbGFuZHNLZXkEBWxhbmRzAwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUFbGFuZHMFC2xhbmRBc3NldElkCQACAQkArAICAiJZb3VyIHN0YWtlZCBsYW5kcyBhbHJlYWR5IGNvbnRhaW4gBQtsYW5kQXNzZXRJZAMJAGcCCQCQAwEFBWxhbmRzBRhNQVhfTEFORFNfU1RBS0VEX0JZX1VTRVIJAAIBCQCsAgIJAKwCAgIZWW91ciBhbHJlYWR5IHN0YWtlZCBtYXggKAkApAMBBRhNQVhfTEFORFNfU1RBS0VEX0JZX1VTRVICBykgbGFuZHMECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUHYWRkcmVzcwQJb2xkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAABAl3bGdSZXN1bHQJAPwHBAULd2xnQ29udHJhY3QCEm9uU3Rha2VVbnN0YWtlTGFuZAkAzAgCBQdhZGRyZXNzBQNuaWwFA25pbAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd0aW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAgkAzQgCBQVsYW5kcwULbGFuZEFzc2V0SWQCAV8JAMwIAgkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQkAZAIFCW9sZFBpZWNlcwUGcGllY2VzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5TGFuZE51bVRvT3duZXIBBQdsYW5kTnVtBQdhZGRyZXNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgULbGFuZEFzc2V0SWQFB2FkZHJlc3MFCmluZnJhTGV2ZWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAUFcHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AgUMcmVzQnlDb250S2V5BRB1cGRhdGVkQ29udFByb3BzCQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsBQl3bGdSZXN1bHQBaQELdW5zdGFrZUxhbmQBDWxhbmRBc3NldElkSW4EDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQZjYWxsZXIEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFDWNsYWltTW9kZUR1Y2sFDWxhbmRBc3NldElkSW4EC2xhbmRBc3NldElkCAUBYwJfMgQBZAgFAWMCXzMECGxhbmRzS2V5CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUEYWRkcgQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBAVwcm9wcwkBEXVwZGF0ZVByb3BvcnRpb25zAwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEDHJlc0J5Q29udEtleQkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBCQCRAwIFAWQFDHJlY0NvbnRpbmVudAQJY29udFByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUMcmVzQnlDb250S2V5AgswXzBfMF8wXzBfMAIBXwQQdXBkYXRlZENvbnRQcm9wcwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCWNvbnRQcm9wcwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wECAV8EC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyBQtsYW5kQXNzZXRJZAUGcGllY2VzBQ1jbGFpbU1vZGVEdWNrBAVsYW5kcwkAvQkCCQELdmFsdWVPckVsc2UCCQCiCAEFCGxhbmRzS2V5AgACAV8EA2lkeAkAzwgCBQVsYW5kcwULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBBQNpZHgJAAIBCQCsAgICIFlvdXIgc3Rha2VkIGxhbmRzIGRvbid0IGNvbnRhaW4gBQtsYW5kQXNzZXRJZAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQOZ292UmVsZWFzZVRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgULZ292Q29udHJhY3QJARVrZXlVc2VyR3dsUmVsZWFzZVRpbWUBBQRhZGRyAAADCQBnAgUOZ292UmVsZWFzZVRpbWUFA25vdwkAAgEJAKwCAgI5WW91ciBnV0wgYXJlIHRha2luZyBwYXJ0IGluIHZvdGluZywgY2Fubm90IHVuc3Rha2UgdW50aWwgCQCkAwEFDmdvdlJlbGVhc2VUaW1lBA5hcmJSZWxlYXNlVGltZQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgULd2xnQ29udHJhY3QJARRrZXlMYXN0QXJiVGltZUJ5VXNlcgEFBGFkZHIAAAUOYXJiaXRyYWdlRGVsYXkDCQBmAgUOYXJiUmVsZWFzZVRpbWUFA25vdwkAAgEJAKwCAgI/WW91ciBzdGFrZWQgbGFuZHMgdG9vayBwYXJ0IGluIGFyYml0cmFnZSwgY2Fubm90IHVuc3Rha2UgdW50aWwgCQCkAwEFDmFyYlJlbGVhc2VUaW1lBAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUEYWRkcgQMc3Rha2VkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAABAluZXdQaWVjZXMDCQBmAgUGcGllY2VzBQxzdGFrZWRQaWVjZXMAAAkAZQIFDHN0YWtlZFBpZWNlcwUGcGllY2VzBAl3bGdSZXN1bHQJAPwHBAULd2xnQ29udHJhY3QCEm9uU3Rha2VVbnN0YWtlTGFuZAkAzAgCBQRhZGRyBQNuaWwFA25pbAkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMABQVwcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCBQxyZXNCeUNvbnRLZXkFEHVwZGF0ZWRDb250UHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al8yCQC5CQIIBQtjbGFpbVJlc3VsdAJfMwIBOgkAzAgCAwkAZgIJAJADAQUFbGFuZHMAAQkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAgkA0QgCBQVsYW5kcwkBBXZhbHVlAQUDaWR4AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5BQluZXdQaWVjZXMJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwFCXdsZ1Jlc3VsdAFpAQlzdGFrZUR1Y2sABAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkRVQ0tQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMDCQECIT0CCAUFYXNzZXQGaXNzdWVyBQ1pbmN1YmF0b3JBZGRyCQECIT0CCAUFYXNzZXQGaXNzdWVyBQticmVlZGVyQWRkcgcJAAIBCQCsAgIJAKwCAgISVW5rbm93biBpc3N1ZXIgb2YgBQpEVUNLUFJFRklYAgYgdG9rZW4DCQEBIQEJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQpEVUNLUFJFRklYCQACAQkArAICCQCsAgICCU9ubHkgTkZUIAUKRFVDS1BSRUZJWAIUIHRva2VucyBhcmUgYWNjZXB0ZWQECmFzc2V0SWRTdHIJANgEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQphc3NldElkU3RyAwkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQISIGlzIGFscmVhZHkgc3Rha2VkAwkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgIdWW91IGFscmVhZHkgc3Rha2VkIG9uZSBkdWNrOiAIBQVhc3NldARuYW1lAwkBD2NoZWNrVG91cm5hbWVudAEFCmFzc2V0SWRTdHIJAAIBAhlzdGFrZUR1Y2tfY2hlY2tUb3VybmFtZW50BAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQphc3NldElkU3RyBAhsb2NhdGlvbgkAoggBBQZsb2NLZXkEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQphc3NldElkU3RyBAhiYWNrcGFjawkAoggBBQVicEtleQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFCmFzc2V0SWRTdHIEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQUKYXNzZXRJZFN0cgAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd0aW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYCQDYBAEFB2Fzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlEdWNrSWRUb093bmVyAQUKYXNzZXRJZFN0cgUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzBQphc3NldElkU3RyBQNuaWwDCQEJaXNEZWZpbmVkAQUIbG9jYXRpb24FA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQUPREVGQVVMVExPQ0FUSU9OBQNuaWwDCQEJaXNEZWZpbmVkAQUIYmFja3BhY2sFA25pbAkAzQgCCQDNCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkCGjA6MF8wXzBfMF8wXzA6MF8wXzBfMF8wXzA6BQNuaWwJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFCWN1ckhlYWx0aAUMcHJvbG9nQWN0aW9uAWkBC3Vuc3Rha2VEdWNrAQphc3NldElkU3RyBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEB2Fzc2V0SWQJANkEAQUKYXNzZXRJZFN0cgQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUKYXNzZXRJZFN0cgMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAAIBCQCsAgIJAKwCAgIJVGhlIGR1Y2sgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQphc3NldElkU3RyCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQdhZGRyZXNzCQACAQIXU3Rha2VkIE5GVCBpcyBub3QgeW91cnMDCQEPY2hlY2tUb3VybmFtZW50AQUKYXNzZXRJZFN0cgkAAgECG3Vuc3Rha2VEdWNrX2NoZWNrVG91cm5hbWVudAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFCmFzc2V0SWRTdHIEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQUKYXNzZXRJZFN0cgAABAZoZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGYCBQVtYXhIUAUGaGVhbHRoCQACAQkArAICCQCsAgICGVBsZWFzZSBoZWFsIHlvdXIgZHVjayB0byAJAKQDAQUFbWF4SFACE2hwIGJlZm9yZSB1bnN0YWtpbmcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEFB2Fzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQUHdGltZUtleQkAzAgCCQELRGVsZXRlRW50cnkBBQlrZXlIZWFsdGgJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBD2tleUR1Y2tMb2NhdGlvbgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEGtleUR1Y2tJZFRvT3duZXIBBQphc3NldElkU3RyCQDMCAIJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKRFVDS1BSRUZJWAUKYXNzZXRJZFN0cgUHYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzCQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsAWkBCGNsYWltUmVzAgZhbW91bnQObGFuZEFzc2V0SWRTdHIEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBnJlc3VsdAkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQZhbW91bnQFDWNsYWltTW9kZUR1Y2sFDmxhbmRBc3NldElkU3RyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQJAJQKAgkAzQgCCQDNCAIJAM0IAgkAzggCCAUGcmVzdWx0Al8xCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGsDBQd4cENsYWltBQZhbW91bnQFBU1VTFQ4Al8xCQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al8yCQC5CQIIBQZyZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzQJALkJAggFBnJlc3VsdAJfNQIBOgUMcHJvbG9nQWN0aW9uCQCRAwIIBQZyZXN1bHQCXzMFCGJwSWR4UmVzAWkBDGNsYWltUmVzVG9XSAIGYW1vdW50DmxhbmRBc3NldElkU3RyBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAZyZXN1bHQJARBjbGFpbVJlc0ludGVybmFsBAUEYWRkcgUGYW1vdW50BQtjbGFpbU1vZGVXaAUObGFuZEFzc2V0SWRTdHIJAJQKAgkAzQgCCQDNCAIJAM0IAgkAzggCCAUGcmVzdWx0Al8xCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyCQBrAwUHeHBDbGFpbQUGYW1vdW50BQVNVUxUOAJfMQkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfMgkAuQkCCAUGcmVzdWx0Al8zAgE6CQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al80CQC5CQIIBQZyZXN1bHQCXzUCAToFDHByb2xvZ0FjdGlvbgkAkQMCCAUGcmVzdWx0Al81BQh3aElkeFJlcwFpAQZmbGlnaHQCB21lc3NhZ2UDc2lnBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQBZgkBDGZsaWdodENvbW1vbgMFCHVzZXJBZGRyBQdtZXNzYWdlBQNzaWcEBW5ld0hQCAUBZgJfMQQLZHVja0Fzc2V0SWQIBQFmAl8yBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04EC25ld0xvY2F0aW9uCAUBZgJfNAMJAAACBQtuZXdMb2NhdGlvbgULY3VyTG9jYXRpb24JAAIBAiJZb3UgY2FuJ3QgZmx5IHRvIHRoZSBzYW1lIGxvY2F0aW9uBAZuZXdMb2MJALUJAgULbmV3TG9jYXRpb24CAV8EBmlzVG91cgkAAAIJAJEDAgUGbmV3TG9jBQpsb2NJZHhUeXBlAgFUBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQJY3VycmVudEVxCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAQNJHQwNjU5ODE2NjA3OAkBEXN1YnRyYWN0RXF1aXBtZW50AgUJY3VycmVudEVxCAUBZgJfNQQFbmV3RXEIBQ0kdDA2NTk4MTY2MDc4Al8xBA9zaG91bGRaZXJvQnVmZnMIBQ0kdDA2NTk4MTY2MDc4Al8yBAlsb2NUb1NhdmUDCQEBIQEJAQ5pc0luVG91cm5hbWVudAIFEnRvdXJuYW1lbnRDb250cmFjdAULY3VyTG9jYXRpb24DBQZpc1RvdXIJAAIBCQCsAgIJAKwCAgkArAICAhZDaGVhdCBhdHRlbXB0OiBvbGRMb2M9BQtjdXJMb2NhdGlvbgIJLCBuZXdMb2M9BQtuZXdMb2NhdGlvbgMJAGYCBQVuZXdIUAAABQtuZXdMb2NhdGlvbgULY3VyTG9jYXRpb24DCQEBIQEJAQ5pc0luVG91cm5hbWVudAIFEnRvdXJuYW1lbnRDb250cmFjdAULbmV3TG9jYXRpb24JAAIBAipZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gdGhlIHRvdXJuYW1lbnQEBXNjb3JlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGbmV3TG9jBQhsb2NJZHhJZAQGY3VyTG9jCQC1CQIFC2N1ckxvY2F0aW9uAgFfBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAADCQECIT0CBQVzY29yZQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZjdXJMb2MFCGxvY0lkeElkAAEJAAIBCQCsAgIJAKwCAgkArAICAhZDaGVhdCBhdHRlbXB0OiBvbGRMb2M9BQtjdXJMb2NhdGlvbgIJLCBuZXdMb2M9BQtuZXdMb2NhdGlvbgMJAGYCBQVuZXdIUAAABAlsb2NhbEJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0CQEaa2V5QmVzdFJlc3VsdEJ5VG91ckFuZER1Y2sCBQZsYXN0SWQFC2R1Y2tBc3NldElkAAAECHVwZExvY2FsAwkAZgIFBXNjb3JlBQlsb2NhbEJlc3QJAPwHBAUSdG91cm5hbWVudENvbnRyYWN0Ag5zYXZlRHVja1Jlc3VsdAkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQVzY29yZQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUIdXBkTG9jYWwFCHVwZExvY2FsBQtuZXdMb2NhdGlvbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgULY3VyTG9jYXRpb24JAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQUJbG9jVG9TYXZlCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAUFbmV3SFAJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwDBQ9zaG91bGRaZXJvQnVmZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzAFA25pbAkAzggCBQNuaWwICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAMJAGYCBQVuZXdIUAAABQ94cFN1Y2Nlc3NGbGlnaHQFDHhwRmFpbEZsaWdodAJfMQgFAWYCXzMBaQEEaGVhbAMKcXVhbnRpdHlMMQpxdWFudGl0eUwyCnF1YW50aXR5TDMEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDAwMJAGYCAAAFCnF1YW50aXR5TDEGCQBmAgAABQpxdWFudGl0eUwyBgkAZgIAAAUKcXVhbnRpdHlMMwkAAgECG1F1YW50aXR5IGNhbm5vdCBiZSBuZWdhdGl2ZQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFGhlYWxfY2hlY2tUb3VybmFtZW50BANxdHMJAMwIAgUKcXVhbnRpdHlMMQkAzAgCBQpxdWFudGl0eUwyCQDMCAIFCnF1YW50aXR5TDMFA25pbAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAECW9sZEhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkAZwIFCW9sZEhlYWx0aAUFbWF4SFAJAAIBCQCsAgIJAKwCAgIPSFAgc2hvdWxkIGJlIDwg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Y3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhZoZWFsRVNfY2hlY2tUb3VybmFtZW50BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJb2xkSGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBmAgUJb2xkSGVhbHRoAAAJAAIBAihIUCBzaG91bGQgYmUgMCB0byBjYWxsIEVtZXJnZW5jeSBTZXJ2aWNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8EDW1lZEtpdEFtb3VudDEDCQBmAgkAkAMBBQhwcm9kTGlzdAAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAAAABA1tZWRLaXRBbW91bnQyAwkAZgIJAJADAQUIcHJvZExpc3QAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAEAAAQNbWVkS2l0QW1vdW50MwMJAGYCCQCQAwEFCHByb2RMaXN0AAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAACAAADAwMJAGYCBQ1tZWRLaXRBbW91bnQxAAAGCQBmAgUNbWVkS2l0QW1vdW50MgAABgkAZgIFDW1lZEtpdEFtb3VudDMAAAkAAgECH1lvdSBoYXZlIHRvIHVzZSBvd24gTWVkaWNhbCBLaXQECGV4aXN0U3RyCQCdCAIFD2Vjb25vbXlDb250cmFjdAkBDmtleUVzV2FyZWhvdXNlAAQMZXhpc3RBbW91bnRzAwkBCWlzRGVmaW5lZAEFCGV4aXN0U3RyCQC8CQIJAQV2YWx1ZQEFCGV4aXN0U3RyAgFfBQNuaWwEC2V4aXN0QW1vdW50AwkAZgIJAJADAQUMZXhpc3RBbW91bnRzAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQxleGlzdEFtb3VudHMAAAAAAwkAZwIAAAULZXhpc3RBbW91bnQJAAIBAjlUaGVyZSBhcmUgbm8gTWVkaWNhbCBLaXRzIEwxIGF0IEVtZXJnZW5jeSBTZXJ2aWNlIHN0b3JhZ2UECW5ld0hlYWx0aAkAZAIFCW9sZEhlYWx0aAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4AAACAV8FCnJJZHhFZmZlY3QEBW5ld0VTCQC5CQIJAMwIAgkApAMBCQBlAgULZXhpc3RBbW91bnQAAQkA0QgCBQxleGlzdEFtb3VudHMAAAIBXwQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAAAAgFfBAh0b3RhbE1hdAkBEmdldFJlY2lwZU1hdGVyaWFscwEFBnJlY2lwZQQJc2VsbFByaWNlCQBrAwkAaAIFCHRvdGFsTWF0BQpFU1NFTExDT0VGBRBSRVNPVVJDRVBSSUNFTUlOCQBoAgUFTVVMVDgFDlBST0RVQ1RQS0dTSVpFAwkBAiE9AggFA3BtdAZhbW91bnQFCXNlbGxQcmljZQkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFCXNlbGxQcmljZQQGcmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIPdXBkYXRlRXNTdG9yYWdlCQDMCAIFBW5ld0VTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3VzZHRBc3NldElkBQlzZWxsUHJpY2UFA25pbAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJbmV3SGVhbHRoCQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCHhwQ2FsbEVTAl8xBQZyZXN1bHQBaQEOdXBkYXRlQmFja3BhY2sCC2R1Y2tBc3NldElkB25ld1BhY2sDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQFB25ld1BhY2sFA25pbAUHbmV3UGFjawFpAQ9jb21taXRGb3JSYW5kb20ABAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpBAtmaW5pc2hCbG9jawkAZAIFBmhlaWdodAULcmFuZG9tRGVsYXkEBGFkZHIJAKUIAQgFAWkGY2FsbGVyCQCUCgIJAM0IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCWtleUNvbW1pdAEFBGFkZHIFC2ZpbmlzaEJsb2NrBQNuaWwFDHByb2xvZ0FjdGlvbgULZmluaXNoQmxvY2sBaQEKYXdhcmRTTGFuZAEHYWRkcmVzcwMJAQIhPQIIBQFpBmNhbGxlcgUSdG91cm5hbWVudENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJARJleHBlZGl0aW9uSW50ZXJuYWwCCQERQGV4dHJOYXRpdmUoMTA2MikBBQdhZGRyZXNzCAUBaQ10cmFuc2FjdGlvbklkCQCUCgIIBQZyZXN1bHQCXzEICAUGcmVzdWx0Al8yAl8xAWkBCGJ1eVNMYW5kAAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhAwkBAiE9AggFA3BtdAZhbW91bnQFB0VYUFVTRFQJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQdFWFBVU0RUBAZyZXN1bHQJARJleHBlZGl0aW9uSW50ZXJuYWwCCAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQJAJQKAgkAzQgCCQDOCAIJAM0IAggFBnJlc3VsdAJfMQkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQp4cE5ld1NMYW5kAl8xBQxwcm9sb2dBY3Rpb24ICAUGcmVzdWx0Al8yAl8xAWkBCmV4cGVkaXRpb24CB21lc3NhZ2UDc2lnBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQBZgkBDGZsaWdodENvbW1vbgMFCHVzZXJBZGRyBQdtZXNzYWdlBQNzaWcEC2R1Y2tBc3NldElkCAUBZgJfMgQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbUxpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDBgUFbUxpc3QFDEVYUE1BVEVSSUFMUwIBXwQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQECWN1cnJlbnRFcQkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywEDSR0MDc0NzM4NzQ4MzUJARFzdWJ0cmFjdEVxdWlwbWVudAIFCWN1cnJlbnRFcQgFAWYCXzUEBW5ld0VxCAUNJHQwNzQ3Mzg3NDgzNQJfMQQPc2hvdWxkWmVyb0J1ZmZzCAUNJHQwNzQ3Mzg3NDgzNQJfMgQBZQkBEmV4cGVkaXRpb25JbnRlcm5hbAIIBQFpBmNhbGxlcggFAWkNdHJhbnNhY3Rpb25JZAQCaWQICAUBZQJfMgJfMQQGcmVzdWx0AwkAZwIAAAgFAWYCXzEJAJUKAwkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxBQNuaWwCAAAACQCVCgMJAM4IAggFAWUCXzEDBQ9zaG91bGRaZXJvQnVmZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzAFA25pbAkAzQgCCQDNCAIJAM0IAgkAzQgCBQNuaWwJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIICAUBZQJfMgJfMgkAzAgCAgFMCQDMCAIFAmlkBQNuaWwCAV8JAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgIBQFmAl8xCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToFAmlkCAUBZgJfMwMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECGmV4cGVkaXRpb25fY2hlY2tUb3VybmFtZW50CQCUCgIJAM0IAgkAzggCCAUGcmVzdWx0Al8xCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCnhwTmV3U0xhbmQCXzEFDHByb2xvZ0FjdGlvbgkAlAoCCAUGcmVzdWx0Al8yCAUGcmVzdWx0Al8zAWkBDHVwZ3JhZGVJbmZyYQELbGFuZEFzc2V0SWQEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQGcmVzdWx0CQENdXBJbmZyYUNvbW1vbgQGCAUBaQZjYWxsZXIAAAULbGFuZEFzc2V0SWQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQJAJQKAgkAzggCCQDNCAIIBQZyZXN1bHQCXzEFDHByb2xvZ0FjdGlvbggJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkCQBrAwUOeHBVcGdyYWRlSW5mcmEIBQZyZXN1bHQCXzMFBU1VTFQ4Al8xCAUGcmVzdWx0Al8yAWkBEGFjdGl2YXRlQXJ0aWZhY3QCB2FydE5hbWUObGFuZEFzc2V0SWRPcHQEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQZjYWxsZXIEBnJlc3VsdAQHJG1hdGNoMAUHYXJ0TmFtZQMJAAACAgdQUkVTQUxFBQckbWF0Y2gwCQESYWN0aXZhdGVQcmVzYWxlQXJ0AgUEYWRkcgUObGFuZEFzc2V0SWRPcHQDCQAAAgIHT05CT0FSRAUHJG1hdGNoMAkBEmFjdGl2YXRlT25ib2FyZEFydAEFBGFkZHIJAAIBAhBVbmtub3duIGFydGlmYWN0CQDNCAIFBnJlc3VsdAUMcHJvbG9nQWN0aW9uAWkBCm1lcmdlTGFuZHMBDGxhbmRBc3NldElkcwQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQttZXJnZUNvbW1vbgIJAKUIAQgFAWkGY2FsbGVyBQxsYW5kQXNzZXRJZHMJAJQKAgkAzggCCQDNCAIIBQZyZXN1bHQCXzEFDHByb2xvZ0FjdGlvbggJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgkApQgBCAUBaQZjYWxsZXIFB3hwTWVyZ2UCXzEIBQZyZXN1bHQCXzIBaQENY2FyZ29FeGNoYW5nZQIMY2FyZ29MaXN0U3RyC2xhbmRBc3NldElkBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECmNhcmdvUGFydHMJALwJAgUMY2FyZ29MaXN0U3RyAgE6BARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04EA2xvYwkAtQkCCQEFdmFsdWUBBQtjdXJMb2NhdGlvbgIBXwMJAQIhPQIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFMCQACAQkArAICCQCsAgICFkR1Y2sgbG9jYXRpb24gdHlwZSBpcyAJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAhEsIGJ1dCBzaG91bGQgYmUgTAMJAQIhPQIJAJEDAgUDbG9jBQhsb2NJZHhJZAULbGFuZEFzc2V0SWQJAAIBCQCsAgICG0R1Y2sgc2hvdWxkIGJlIG9uIHRoZSBsYW5kIAULbGFuZEFzc2V0SWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQECWN1cnJlbnRXaAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAZyZXN1bHQJAQltb3ZlU3R1ZmYDBQpjYXJnb1BhcnRzBQljdXJyZW50V2gFC2N1cnJlbnRQYWNrBARsb2Z0CQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8EBWxvZnRPCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCAUGcmVzdWx0Al83BAVsb2Z0RgkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCAUGcmVzdWx0Al83CQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCAUGcmVzdWx0Al80CQDMCAIIBQZyZXN1bHQCXzUJAMwIAggFBnJlc3VsdAJfNgUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5CQC6CQIJAMwIAgkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzCQDMCAIIBQZyZXN1bHQCXzEJAMwIAggFBnJlc3VsdAJfMgkAzAgCCAUGcmVzdWx0Al8zCQDMCAIJALkJAgkAzAgCCQCRAwIFBGxvZnQFCXZvbExvY2tlZAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkAkQMCBQRsb2Z0BQh2b2xUb3RhbAUDbmlsAgFfBQNuaWwCAToJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwBaQENc2F2ZVdhcmVob3VzZQIFd2hTdHILbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEAndoCQC8CQIFBXdoU3RyAgE6AwkBAiE9AgkAkAMBBQJ3aAAFCQACAQIwd2FyZWhvdXNlIHN0cmluZyBzaG91bGQgY29udGFpbiA0ICc6JyBzZXBhcmF0b3JzBAVsb2Z0TAkAkQMCCQC1CQIJAJEDAgUCd2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkBAVsb2Z0TwkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBWxvZnRUCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFAndoBQt3aElkeExldmVscwQFbG9mdEYJAGUCCQBlAgUFbG9mdFQJAQ1wYXJzZUludFZhbHVlAQUFbG9mdEwFBWxvZnRPBAhuZXdXaFN0cgkAugkCCQDMCAIJAJEDAgUCd2gFC3doSWR4TGV2ZWxzCQDMCAIJAJEDAgUCd2gFCHdoSWR4UmVzCQDMCAIJAJEDAgUCd2gFCHdoSWR4TWF0CQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCCQC5CQIJAMwIAgUFbG9mdEwJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAKQDAQUFbG9mdFQFA25pbAIBXwUDbmlsAgE6CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkFCG5ld1doU3RyBQNuaWwFCG5ld1doU3RyAWkBEmZpeFdhcmVob3VzZUZvcm1hdAELbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAJ3aAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBWxvZnRMCQEFYXNJbnQBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIacmVjYWxjTG9ja2VkVm9sdW1lUkVBRE9OTFkJAMwIAgULbGFuZEFzc2V0SWQJAMwIAgUCd2gFA25pbAUDbmlsBAVsb2Z0TwkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBWxvZnRUCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFAndoBQt3aElkeExldmVscwQFbG9mdEYJAGUCCQBlAgUFbG9mdFQFBWxvZnRMBQVsb2Z0TwQIbmV3V2hTdHIJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIJAKQDAQUFbG9mdEwJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAKQDAQUFbG9mdFQFA25pbAIBXwUDbmlsAgE6CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkFCG5ld1doU3RyBQNuaWwFCG5ld1doU3RyAWkBF2ZpeENvbnRpbmVudFByb3BvcnRpb25zAQxsYW5kQXNzZXRJZHMDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQKAQhnZXRQcm9wcwIDYWNjBGNvbnQJAM0IAgUDYWNjCQELdmFsdWVPckVsc2UCCQCiCAEJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUEY29udAILMF8wXzBfMF8wXzAEAXAKAAIkbAUKY29udGluZW50cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZ2V0UHJvcHMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFCgEJcHJvY2Vzc29yAgNhY2MLbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQUFU1NJWkUEBGNvbnQJAJEDAgUBZAUMcmVjQ29udGluZW50BA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEDGNvbnRpbmVudElkeAkBBXZhbHVlAQkAzwgCBQpjb250aW5lbnRzBQRjb250BAljb250UHJvcHMJALUJAgkAkQMCBQNhY2MFDGNvbnRpbmVudElkeAIBXwQHdXBkYXRlZAkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCWNvbnRQcm9wcwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAECAV8EByRtYXRjaDAFBGNvbnQDCQAAAgIIQW1lcmljYXMFByRtYXRjaDAJAMwIAgUHdXBkYXRlZAkA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XgBfAGAAYQBiAGMAZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIIQW1lcmljYXMJAJEDAgUBcgAACQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIGRXVyb3BlCQCRAwIFAXIAAQkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECBEFzaWEJAJEDAgUBcgACCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIGQWZyaWNhCQCRAwIFAXIAAwkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECB09jZWFuaWEJAJEDAgUBcgAEBQNuaWwAAAFpAQ9maXhTdGFrZWRQaWVjZXMBB2FkZHJlc3MDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEDHN0YWtlZFBpZWNlcwMJAAACBQdhZGRyZXNzAgAAAAQIbGFuZHNTdHIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUHYWRkcmVzcwQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAoBB29uZUxhbmQCA2FjYwtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQIbGFuZFNpemUJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplCQBkAgUDYWNjCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUKAAIkbAUFbGFuZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB29uZUxhbmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUHYWRkcmVzcwUMc3Rha2VkUGllY2VzBQNuaWwFDHN0YWtlZFBpZWNlcwFpAQ1zZXRDdXN0b21OYW1lAwdhc3NldElkCmN1c3RvbU5hbWUEdHlwZQQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhAwkBAiE9AggFA3BtdAZhbW91bnQFDFJFTkFNSU5HQ09TVAkAAgEJAKwCAgISUGF5bWVudCBzaG91bGQgYmUgCQCkAwEFDFJFTkFNSU5HQ09TVAMJAQhjb250YWlucwIFCmN1c3RvbU5hbWUCAl9fCQACAQkArAICAh5OYW1lIHNob3VsZCBub3QgY29udGFpbiAnX18nOiAFCmN1c3RvbU5hbWUDCQBmAgkAsQIBBQpjdXN0b21OYW1lBQpNQVhOQU1FTEVOCQACAQkArAICAhlOYW1lIHRvbyBsb25nLCBtYXhMZW5ndGg9CQCkAwEFCk1BWE5BTUVMRU4EBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAdhY3Rpb25zBAckbWF0Y2gwBQR0eXBlAwkAAAICB0FDQ09VTlQFByRtYXRjaDAECnJldmVyc2VLZXkJARZrZXlDdXN0b21OYW1lVG9BZGRyZXNzAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA1hZGRyVG9OYW1lS2V5CQEWa2V5QWRkcmVzc1RvQ3VzdG9tTmFtZQEFBGFkZHIEB29sZE5hbWUJAKIIAQUNYWRkclRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlDdXN0b21OYW1lVG9BZGRyZXNzAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDWFkZHJUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFBGFkZHIICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFDHhwQ3VzdG9tTmFtZQJfMQMJAAACAgRMQU5EBQckbWF0Y2gwBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUHYXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQdhc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBApyZXZlcnNlS2V5CQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDmFzc2V0VG9OYW1lS2V5CQEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBBQdhc3NldElkBAdvbGROYW1lCQCiCAEFDmFzc2V0VG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDmFzc2V0VG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQdhc3NldElkCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQx4cEN1c3RvbU5hbWUCXzEDCQAAAgIERFVDSwUHJG1hdGNoMAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFB2Fzc2V0SWQDAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5BgkBASEBCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyCQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQdhc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpEVUNLUFJFRklYAg0gaXMgbm90IHlvdXJzBApyZXZlcnNlS2V5CQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDmFzc2V0VG9OYW1lS2V5CQEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBBQdhc3NldElkBAdvbGROYW1lCQCiCAEFDmFzc2V0VG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDmFzc2V0VG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQdhc3NldElkCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgUHYXNzZXRJZAUMeHBDdXN0b21OYW1lAl8xCQACAQITVW5rbm93biBlbnRpdHkgdHlwZQkAlAoCCQDNCAIJAM0IAgUHYWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQFDHByb2xvZ0FjdGlvbgAAAWkBDHNldFJlZmVycmFscwIJb2xkUGxheWVyCW5ld1BsYXllcgMJAQIhPQIIBQFpD2NhbGxlclB1YmxpY0tleQUDcHViCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUJb2xkUGxheWVyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJb2xkUGxheWVyAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBQluZXdQbGF5ZXIJAAIBCQCsAgICEUludmFsaWQgYWRkcmVzczogBQluZXdQbGF5ZXIEB29sZHNLZXkJAQlrZXlPbGRpZXMABARvbGRzCQCiCAEFB29sZHNLZXkEBm9sZGllcwMJAQlpc0RlZmluZWQBBQRvbGRzCQC8CQIJAQV2YWx1ZQEFBG9sZHMCAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQZvbGRpZXMFCW5ld1BsYXllcgkAAgEJAKwCAgUJbmV3UGxheWVyAiYgaXMgbm90IG5ld2JpZSAoYWxyZWFkeSBoYXMgcmVmZXJyYWxzKQQIcmVmQnlLZXkJAQ9rZXlBZGRyZXNzUmVmQnkBBQluZXdQbGF5ZXIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwMJAQlpc0RlZmluZWQBBQVyZWZCeQkBCWlzRGVmaW5lZAEJAKYIAQkBBXZhbHVlAQUFcmVmQnkHCQACAQkArAICCQCsAgIFCW5ld1BsYXllcgIUIGFscmVhZHkgaGFzIHJlZkJ5OiAJAQV2YWx1ZQEFBXJlZkJ5BAdyZWZzS2V5CQETa2V5QWRkcmVzc1JlZmVycmFscwEFCW9sZFBsYXllcgQEcmVmcwkAoggBBQdyZWZzS2V5BAlyZWZzQXJyYXkDCQEJaXNEZWZpbmVkAQUEcmVmcwkAvAkCCQEFdmFsdWUBBQRyZWZzAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUJcmVmc0FycmF5BQluZXdQbGF5ZXIJAAIBCQCsAgIJAKwCAgkArAICBQlvbGRQbGF5ZXICEiBhbHJlYWR5IGNvbnRhaW5zIAUJbmV3UGxheWVyAhEgd2l0aGluIHJlZmVycmFscwQHbmV3UmVmcwkAugkCCQDNCAIFCXJlZnNBcnJheQUJbmV3UGxheWVyAgFfBAduZXdPbGRzAwkBD2NvbnRhaW5zRWxlbWVudAIFBm9sZGllcwUJb2xkUGxheWVyCQEFdmFsdWUBBQRvbGRzCQC6CQIJAM0IAgUGb2xkaWVzBQlvbGRQbGF5ZXICAV8JAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQhyZWZCeUtleQUJb2xkUGxheWVyCQDMCAIJAQtTdHJpbmdFbnRyeQIFB3JlZnNLZXkFB25ld1JlZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgUHb2xkc0tleQUHbmV3T2xkcwkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAAAAWkBEGRpc3RyaWJ1dGVQb2ludHMFCHN0cmVuZ3RoCGFjY3VyYWN5CWludGVsbGVjdAllbmR1cmFuY2UJZGV4dGVyaXR5BAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECmZyZWVLZXlBY2MJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIEDWZyZWVQb2ludHNBY2MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0BQpmcmVlS2V5QWNjAAAEC2ZyZWVLZXlEdWNrCQERa2V5RHVja0ZyZWVQb2ludHMBBQtkdWNrQXNzZXRJZAQOZnJlZVBvaW50c0R1Y2sJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0BQtmcmVlS2V5RHVjawAABAdzdW1GcmVlCQBkAgUNZnJlZVBvaW50c0FjYwUOZnJlZVBvaW50c0R1Y2sED3N1bVRvRGlzdHJpYnV0ZQkAZAIJAGQCCQBkAgkAZAIFCHN0cmVuZ3RoBQhhY2N1cmFjeQUJaW50ZWxsZWN0BQllbmR1cmFuY2UFCWRleHRlcml0eQMJAGYCBQ9zdW1Ub0Rpc3RyaWJ1dGUFB3N1bUZyZWUJAAIBCQCsAgIJAKwCAgIPVGhlcmUgYXJlIG9ubHkgCQCkAwEFB3N1bUZyZWUCGiBmcmVlIHBvaW50cyB0byBkaXN0cmlidXRlBAhjaGFyc0tleQkBDGtleUR1Y2tDaGFycwEFC2R1Y2tBc3NldElkBAVjaGFycwkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAUIY2hhcnNLZXkCCTBfMF8wXzBfMAIBXwQGbmV3QWNjCQBlAgUNZnJlZVBvaW50c0FjYwUPc3VtVG9EaXN0cmlidXRlCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFCmZyZWVLZXlBY2MDCQBmAgAABQZuZXdBY2MAAAUGbmV3QWNjCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQtmcmVlS2V5RHVjawMJAGYCAAAFBm5ld0FjYwkAZAIFDmZyZWVQb2ludHNEdWNrBQZuZXdBY2MFDmZyZWVQb2ludHNEdWNrCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGNoYXJzS2V5CQC5CQIJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyU3RyZW5ndGgFCHN0cmVuZ3RoCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhckFjY3VyYWN5BQhhY2N1cmFjeQkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJJbnRlbGxlY3QFCWludGVsbGVjdAkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJFbmR1cmFuY2UFCWVuZHVyYW5jZQkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJEZXh0ZXJpdHkFCWRleHRlcml0eQUDbmlsAgFfCQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsAAABaQEcc3BsaXRCeUdsb2JhbFdlaWdodHNSRUFET05MWQEGYW1vdW50CQCUCgIFA25pbAkBEmdldE5lZWRlZE1hdGVyaWFscwEFBmFtb3VudAFpASRzcGxpdEJ5R2xvYmFsQW5kTG9jYWxXZWlnaHRzUkVBRE9OTFkDCW1hdEFtb3VudAlyZXNBbW91bnQIdGVycmFpbnMEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQUIdGVycmFpbnMJAJQKAgUDbmlsCQCUCgIJARJnZXROZWVkZWRNYXRlcmlhbHMBBQltYXRBbW91bnQJARNkaXN0cmlidXRlQnlXZWlnaHRzAgUJcmVzQW1vdW50BQ10ZXJyYWluQ291bnRzAWkBE2dldEJhY2twYWNrUkVBRE9OTFkBC2R1Y2tBc3NldElkCQCUCgIFA25pbAkAuQkCCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAIBOgFpARRnZXRXYXJlaG91c2VSRUFET05MWQELbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAACQCUCgIFA25pbAkAugkCCQEMZ2V0V2FyZWhvdXNlAwkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwCAToBaQEKc2F2ZUxhc3RUeAAEBmNhbGxlcggFAWkGY2FsbGVyAwMDCQECIT0CBQZjYWxsZXIFC3dsZ0NvbnRyYWN0CQECIT0CBQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAcJAQIhPQIFBmNhbGxlcgUSdG91cm5hbWVudENvbnRyYWN0BwkAAgECDUFjY2VzcyBkZW5pZWQJAJQKAgkAzAgCCQEGcHJvbG9nAQUBaQUDbmlsACoBaQEPdXBkYXRlRHVja1N0YXRzAgtkdWNrQXNzZXRJZAdkZWx0YVhQAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkCQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUHZGVsdGFYUAFpAQ51cGRhdGVBY2NTdGF0cwIEYWRkcgdkZWx0YVhQAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkCQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFB2RlbHRhWFABaQEJZXF1aXBEdWNrAQllcXVpcG1lbnQEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECGWVxdWlwRHVja19jaGVja1RvdXJuYW1lbnQEBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAtjdXJyZW50U2VncwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAIBXwQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW5ld0VxCQC1CQIFCWVxdWlwbWVudAIBXwMJAQIhPQIJAJADAQUFbmV3RXEFC05VTVNFR01FTlRTCQACAQIWV3JvbmcgZXF1aXBtZW50IHN0cmluZwQJdGVtcFByb2RCCQEGZHJlc3NCBAULY3VycmVudFNlZ3MJAQ5wcm9kU3RyVG9CeXRlcwEJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAYFA25pbAQIc2VnQnBBdXgJAJEDAgkAtQkCCQCRAwIFBW5ld0VxBQtzZWdCYWNrcGFjawIBOwABBApidWZmRWZmZWN0AwkAAAIFCHNlZ0JwQXV4AgAAAAQEYXV4MAkAkQMCCQC1CQIFCHNlZ0JwQXV4AgEsAAADCQAAAgUEYXV4MAIAAAAEBmlkeENudAkAtQkCBQRhdXgwAgE6BANpZHgJAJEDAgUGaWR4Q250AAAEA2NudAkAkQMCBQZpZHhDbnQAAQMDAwMDCQAAAgUDaWR4AgIwNgYJAAACBQNpZHgCAjA3BgkAAAIFA2lkeAICMDgJAQIhPQIFA2NudAIABwkAZgIJAQ1wYXJzZUludFZhbHVlAQUDY250AAAHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgJAQ1wYXJzZUludFZhbHVlAQUDaWR4AgFfBQpySWR4RWZmZWN0AAAEBXN0YXRzCQEMZ2V0RHVja1N0YXRzBAUEdGhpcwULZHVja0Fzc2V0SWQFCmJ1ZmZFZmZlY3QGBAhuZXdQcm9kQgkBBmRyZXNzQgQFBW5ld0VxBQl0ZW1wUHJvZEIHBQVzdGF0cwQKbmV3UHJvZFN0cgkBDmJ5dGVzVG9Qcm9kU3RyAQUIbmV3UHJvZEIJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUJZXF1aXBtZW50CQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCBQpuZXdQcm9kU3RyBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAcJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAgJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAkJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAoJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAsFA25pbAIBXwkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAAAAWkBD2ZvcnRpZmljYXRlTGFuZAILbGFuZEFzc2V0SWQEcGxhbgQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLZHVja0Fzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIABAlkdWNrU3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAAABwQHZm9ydEtleQkBF2tleUZvcnRpZmljYXRpb25zQnlMYW5kAQULbGFuZEFzc2V0SWQEDGN1cnJlbnRGb3J0cwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFB2ZvcnRLZXkCDDowXzE1OjBfMTg6MAIBXwQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEAndoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQHY3VyTG9mdAkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8EBGN1ck8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdjdXJMb2Z0BQt2b2xPY2N1cGllZAQEY3VyRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB2N1ckxvZnQFB3ZvbEZyZWUECG5ld0ZvcnRzCQC1CQIFBHBsYW4CAV8EDSR0MDk1ODUwOTU5NjUJAQVmb3J0QgYFDGN1cnJlbnRGb3J0cwkBDnByb2RTdHJUb0J5dGVzAQkAkQMCBQJ3aAUJd2hJZHhQcm9kBQRjdXJPBQRjdXJGBgUDbmlsBAl0ZW1wUHJvZEIIBQ0kdDA5NTg1MDk1OTY1Al8xBAV0ZW1wTwgFDSR0MDk1ODUwOTU5NjUCXzIEBXRlbXBGCAUNJHQwOTU4NTA5NTk2NQJfMwQNJHQwOTU5Njg5NjA2NAkBBWZvcnRCBgUIbmV3Rm9ydHMFCXRlbXBQcm9kQgUFdGVtcE8FBXRlbXBGBwUJZHVja1N0YXRzBAhuZXdQcm9kQggFDSR0MDk1OTY4OTYwNjQCXzEEBG5ld08IBQ0kdDA5NTk2ODk2MDY0Al8yBARuZXdGCAUNJHQwOTU5Njg5NjA2NAJfMwQKbmV3UHJvZFN0cgkBDmJ5dGVzVG9Qcm9kU3RyAQUIbmV3UHJvZEIECm5ld0xvZnRTdHIJALkJAgkAzAgCCQCRAwIFB2N1ckxvZnQFCXZvbExvY2tlZAkAzAgCCQCkAwEFBG5ld08JAMwIAgkApAMBBQRuZXdGCQDMCAIJAJEDAgUHY3VyTG9mdAUIdm9sVG90YWwFA25pbAIBXwkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFB2ZvcnRLZXkFBHBsYW4JAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCBQpuZXdQcm9kU3RyCQDMCAIFCm5ld0xvZnRTdHIFA25pbAIBOgkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAAAAWkBE2luaXREdWNrVG91ckF0dGVtcHQBC2R1Y2tBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBRJ0b3VybmFtZW50Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJY3VySGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFAECWN1ckxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXJMb2NLZXkFD0RFRkFVTFRMT0NBVElPTgQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABAx0b3VyTG9jYXRpb24JAKwCAgkApAMBBQZsYXN0SWQCBF9UXzAJAJQKAgkAzAgCBQxwcm9sb2dBY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBQljdXJIZWFsdGgJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUFbWF4SFAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAULY3VyTG9jYXRpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgUJY3VyTG9jS2V5BQx0b3VyTG9jYXRpb24FA25pbAUMdG91ckxvY2F0aW9uAWkBDGJyZWFrQXR0ZW1wdAAEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECWN1ckxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXJMb2NLZXkFD0RFRkFVTFRMT0NBVElPTgMJAQIhPQIJAJEDAgkAtQkCBQtjdXJMb2NhdGlvbgIBXwUKbG9jSWR4VHlwZQIBVAkAAgECIllvdXIgZHVjayBpcyBub3QgaW4gdGhlIHRvdXJuYW1lbnQEC3NhdmVkSGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAQNc2F2ZWRMb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAlAoCCQDMCAIFDHByb2xvZ0FjdGlvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAULc2F2ZWRIZWFsdGgJAMwIAgkBC1N0cmluZ0VudHJ5AgUJY3VyTG9jS2V5BQ1zYXZlZExvY2F0aW9uBQNuaWwFC2N1ckxvY2F0aW9uAWkBFmV4aXRUb3VybmFtZW50SW50ZXJuYWwBC2R1Y2tBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQINQWNjZXNzIGRlbmllZAQLc2F2ZWRIZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBA1zYXZlZExvY2F0aW9uCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFC3NhdmVkSGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUNc2F2ZWRMb2NhdGlvbgUDbmlsBwFpAQ5wcmVwYXJlUm9iYmVyeQIHbWVzc2FnZQNzaWcEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQGd2xnQW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFCndsZ0Fzc2V0SWQJAAIBAhVXTEdPTEQgcGF5bWVudHMgb25seSEEBXBhcnRzCQC1CQIJALAJAQUHbWVzc2FnZQIBfAMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECFFdyb25nIG1lc3NhZ2UgZm9ybWF0BAtkdWNrQXNzZXRJZAkAkQMCBQVwYXJ0cwAABAdyb2JDb3N0CAkBDmdldFJvYmJlcnlEYXRhAgUEdGhpcwULZHVja0Fzc2V0SWQCXzEDCQBmAgUHcm9iQ29zdAUGd2xnQW10CQACAQkArAICCQCsAgIJAKwCAgIIUGF5bWVudCAJAKQDAQUGd2xnQW10AgwgPCByZXF1aXJlZCAJAKQDAQUHcm9iQ29zdAQKY2FuZGlkYXRlcwkAtQkCCQCRAwIFBXBhcnRzAAECAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECWR1Y2tTdGF0ZQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQETa2V5RHVja1JvYmJlcnlTdGF0ZQEFC2R1Y2tBc3NldElkAAAECmxvY2tlZExhbmQJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBE2tleUxvY2tlZExhbmRCeUR1Y2sBBQtkdWNrQXNzZXRJZAIABAdsYW5kRVRBCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlMYW5kQ29vbGRvd25FVEEBBQpsb2NrZWRMYW5kAAADAwkBAiE9AgUJZHVja1N0YXRlBQtkdWNrSWR4RnJlZQkAZgIFB2xhbmRFVEEFA25vdwcJAAIBCQCsAgICJ1lvdSBhbHJlYWR5IHN0YXJ0ZWQgcm9iYmluZywgd2FpdCB0aWxsIAkApAMBBQdsYW5kRVRBCgEHY2hlY2tlcgIDYWNjC2xhbmRBc3NldElkBAVzdGF0ZQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQETa2V5TGFuZFJvYmJlcnlTdGF0ZQEFC2xhbmRBc3NldElkAAAEC2Nvb2xkb3duRVRBCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlMYW5kQ29vbGRvd25FVEEBBQtsYW5kQXNzZXRJZAAAAwkAZgIFBXN0YXRlCQCQAwEFEGxhbmRSb2JDb29sZG93bnMJAAIBAg1JbnZhbGlkIHN0YXRlAwkAZgIFA25vdwULY29vbGRvd25FVEEECnN0YWtlZFRpbWUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAAAwkAZwIAAAUKc3Rha2VkVGltZQUDYWNjBAFhCQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEAWQJALUJAggFAWELZGVzY3JpcHRpb24CAV8EBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUEDHByb2R1Y3Rpdml0eQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMECWRlbHRhVGltZQkAZQIFA25vdwUKc3Rha2VkVGltZQQIYXZhaWxSZXMJAGsDBQlkZWx0YVRpbWUJAGgCBQxwcm9kdWN0aXZpdHkFBnBpZWNlcwUJREFZTUlMTElTAwkAZgIFDk1JTl9SRVNfVE9fUk9CBQhhdmFpbFJlcwUDYWNjCQDNCAIFA2FjYwULbGFuZEFzc2V0SWQFA2FjYwQIZmlsdGVyZWQKAAIkbAUKY2FuZGlkYXRlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHY2hlY2tlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgMJAAACCQCQAwEFCGZpbHRlcmVkAAAJAAIBAhlObyBjYW5kaWRhdGVzIGZvciByb2JiZXJ5BAZybmRJZHgJAQ9nZXRSYW5kb21OdW1iZXIDCQCQAwEFCGZpbHRlcmVkBQZoZWlnaHQJAMsBAgUDc2lnCAUBaQ10cmFuc2FjdGlvbklkBAtsYW5kQXNzZXRJZAkAkQMCBQhmaWx0ZXJlZAUGcm5kSWR4CQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARNrZXlMYW5kUm9iYmVyeVN0YXRlAQULbGFuZEFzc2V0SWQFDHJvYklkeExvY2tlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleUxhbmRDb29sZG93bkVUQQEFC2xhbmRBc3NldElkCQBkAgUDbm93CQCRAwIFEGxhbmRSb2JDb29sZG93bnMFDHJvYklkeExvY2tlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAUQZHVja0lkeFByZXBhcmluZwkAzAgCCQELU3RyaW5nRW50cnkCCQETa2V5TG9ja2VkTGFuZEJ5RHVjawEFC2R1Y2tBc3NldElkBQtsYW5kQXNzZXRJZAkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAULbGFuZEFzc2V0SWQBaQEHcm9iTGFuZAIHbWVzc2FnZQNzaWcEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAlAoCCQDMCAIFDHByb2xvZ0FjdGlvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGGtleUxhc3RSb2JiZXJ5VGltZUJ5RHVjawEFC2R1Y2tBc3NldElkBQNub3cFA25pbAAAAWkBB2RlbGl2ZXICB21lc3NhZ2UDc2lnAwkBASEBBRFLU19BTExPV19ERUxJVkVSWQkAAgECH0RlbGl2ZXJ5IGZlYXR1cmUgaXMgdHVybmVkIG9mZiEEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gJAJQKAgkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAAAAJBuEjE=", "height": 2762217, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3RFBnWytRxXt3xbLSdvVWo9KxEcA3KJsVZwJwEqc1yt2 Next: HtbEAwFirdhETNzJKDa2ujMfb3udqtbRryyuY5Pv1bzR Diff:
Old | New | Differences | |
---|---|---|---|
341 | 341 | ||
342 | 342 | let cf = false | |
343 | 343 | ||
344 | - | let cg = take(drop(this.bytes, 1), 1) | |
345 | - | ||
346 | - | let ch = { | |
347 | - | let ci = cg | |
348 | - | if ((base58'2W' == ci)) | |
344 | + | let cg = false | |
345 | + | ||
346 | + | let ch = take(drop(this.bytes, 1), 1) | |
347 | + | ||
348 | + | let ci = { | |
349 | + | let cj = ch | |
350 | + | if ((base58'2W' == cj)) | |
349 | 351 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
350 | - | else if ((base58'2T' == | |
352 | + | else if ((base58'2T' == cj)) | |
351 | 353 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
352 | 354 | else throw("Unknown chain") | |
353 | 355 | } | |
354 | 356 | ||
355 | - | let | |
356 | - | let | |
357 | - | if ((base58'2W' == | |
357 | + | let ck = { | |
358 | + | let cj = ch | |
359 | + | if ((base58'2W' == cj)) | |
358 | 360 | then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv" | |
359 | - | else if ((base58'2T' == | |
361 | + | else if ((base58'2T' == cj)) | |
360 | 362 | then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy" | |
361 | 363 | else throw("Unknown chain") | |
362 | 364 | } | |
363 | 365 | ||
364 | - | let | |
365 | - | let | |
366 | - | if ((base58'2W' == | |
366 | + | let cl = { | |
367 | + | let cj = ch | |
368 | + | if ((base58'2W' == cj)) | |
367 | 369 | then 10000000000 | |
368 | - | else if ((base58'2T' == | |
370 | + | else if ((base58'2T' == cj)) | |
369 | 371 | then 100000000 | |
370 | 372 | else throw("Unknown chain") | |
371 | 373 | } | |
372 | 374 | ||
373 | - | let | |
374 | - | let | |
375 | - | if ((base58'2W' == | |
375 | + | let cm = { | |
376 | + | let cj = ch | |
377 | + | if ((base58'2W' == cj)) | |
376 | 378 | then 86400000 | |
377 | - | else if ((base58'2T' == | |
379 | + | else if ((base58'2T' == cj)) | |
378 | 380 | then 60000 | |
379 | 381 | else throw("Unknown chain") | |
380 | 382 | } | |
381 | 383 | ||
382 | - | let | |
383 | - | ||
384 | - | let | |
385 | - | ||
386 | - | let | |
387 | - | ||
388 | - | let | |
389 | - | ||
390 | - | let | |
391 | - | ||
392 | - | let | |
393 | - | ||
394 | - | let | |
395 | - | ||
396 | - | let | |
397 | - | ||
398 | - | let | |
399 | - | ||
400 | - | func | |
401 | - | ||
402 | - | ||
403 | - | let | |
404 | - | ||
405 | - | let | |
406 | - | ||
407 | - | let | |
408 | - | ||
409 | - | let | |
410 | - | ||
411 | - | let | |
412 | - | ||
413 | - | func | |
414 | - | ||
415 | - | ||
416 | - | func | |
417 | - | ||
418 | - | ||
419 | - | func | |
420 | - | ||
421 | - | ||
422 | - | func | |
423 | - | ||
424 | - | ||
425 | - | let | |
426 | - | ||
427 | - | let | |
428 | - | ||
429 | - | let al = | |
430 | - | ||
431 | - | let | |
432 | - | ||
433 | - | let | |
434 | - | ||
435 | - | let | |
436 | - | ||
437 | - | let | |
438 | - | ||
439 | - | let | |
440 | - | ||
441 | - | let | |
442 | - | ||
443 | - | let | |
444 | - | ||
445 | - | let | |
446 | - | ||
447 | - | let | |
448 | - | ||
449 | - | let | |
450 | - | ||
451 | - | let | |
452 | - | ||
453 | - | func | |
454 | - | ||
455 | - | ||
456 | - | func | |
457 | - | ||
458 | - | ||
459 | - | func | |
460 | - | ||
461 | - | ||
462 | - | func | |
463 | - | ||
464 | - | ||
465 | - | func | |
466 | - | ||
467 | - | ||
468 | - | func | |
469 | - | let | |
470 | - | if ($isInstanceOf( | |
384 | + | let cn = "__" | |
385 | + | ||
386 | + | let co = 1000000 | |
387 | + | ||
388 | + | let cp = 100000000 | |
389 | + | ||
390 | + | let cq = 25 | |
391 | + | ||
392 | + | let cr = 100 | |
393 | + | ||
394 | + | let cs = 225 | |
395 | + | ||
396 | + | let ct = 400 | |
397 | + | ||
398 | + | let cu = 625 | |
399 | + | ||
400 | + | let cv = [0, 1, 2, 3, 4, 5] | |
401 | + | ||
402 | + | func cw (cx,cy) = valueOrErrorMessage(getString(cx, cy), makeString(["mandatory ", toString(cx), ".", cy, " is not defined"], "")) | |
403 | + | ||
404 | + | ||
405 | + | let cz = 1 | |
406 | + | ||
407 | + | let cA = 2 | |
408 | + | ||
409 | + | let cB = 3 | |
410 | + | ||
411 | + | let cC = 4 | |
412 | + | ||
413 | + | let cD = 7 | |
414 | + | ||
415 | + | func cE () = "%s__restConfig" | |
416 | + | ||
417 | + | ||
418 | + | func cF () = "%s__restAddr" | |
419 | + | ||
420 | + | ||
421 | + | func cG (cH) = split_4C(cw(cH, cE()), cn) | |
422 | + | ||
423 | + | ||
424 | + | func cI (cJ,cK) = valueOrErrorMessage(addressFromString(cJ[cK]), ("Rest cfg doesn't contain address at index " + toString(cK))) | |
425 | + | ||
426 | + | ||
427 | + | let cL = addressFromStringValue(valueOrElse(getString(this, cF()), ck)) | |
428 | + | ||
429 | + | let cJ = cG(cL) | |
430 | + | ||
431 | + | let al = cI(cJ, cz) | |
432 | + | ||
433 | + | let cM = cI(cJ, cA) | |
434 | + | ||
435 | + | let cN = cI(cJ, cB) | |
436 | + | ||
437 | + | let cO = cI(cJ, cC) | |
438 | + | ||
439 | + | let cP = cI(cJ, cD) | |
440 | + | ||
441 | + | let cQ = 0 | |
442 | + | ||
443 | + | let cR = 1 | |
444 | + | ||
445 | + | let cS = 2 | |
446 | + | ||
447 | + | let cT = 3 | |
448 | + | ||
449 | + | let cU = "wlg_assetId" | |
450 | + | ||
451 | + | let cV = valueOrErrorMessage(getBinary(cO, cU), "Not initialized yet") | |
452 | + | ||
453 | + | let cW = 2 | |
454 | + | ||
455 | + | func cX (cx) = ("finishBlockForAddr_" + cx) | |
456 | + | ||
457 | + | ||
458 | + | func cY () = "resTypesProportions" | |
459 | + | ||
460 | + | ||
461 | + | func cZ (da) = ("resTypesByContinent_" + da) | |
462 | + | ||
463 | + | ||
464 | + | func db (bt) = ("stakedLandsByOwner_" + bt) | |
465 | + | ||
466 | + | ||
467 | + | func dc (bt) = ("stakedPiecesByOwner_" + bt) | |
468 | + | ||
469 | + | ||
470 | + | func dd (de) = { | |
471 | + | let cj = de | |
472 | + | if ($isInstanceOf(cj, "String")) | |
471 | 473 | then { | |
472 | - | let | |
473 | - | | |
474 | + | let df = cj | |
475 | + | df | |
474 | 476 | } | |
475 | 477 | else throw("fail to cast into String") | |
476 | 478 | } | |
477 | 479 | ||
478 | 480 | ||
479 | - | func | |
480 | - | let | |
481 | - | if ($isInstanceOf( | |
481 | + | func dg (de) = { | |
482 | + | let cj = de | |
483 | + | if ($isInstanceOf(cj, "Int")) | |
482 | 484 | then { | |
483 | - | let | |
484 | - | | |
485 | + | let dh = cj | |
486 | + | dh | |
485 | 487 | } | |
486 | 488 | else throw("fail to cast into Int") | |
487 | 489 | } | |
488 | 490 | ||
489 | 491 | ||
490 | - | func | |
491 | - | let | |
492 | - | if ($isInstanceOf( | |
492 | + | func di (de) = { | |
493 | + | let cj = de | |
494 | + | if ($isInstanceOf(cj, "Boolean")) | |
493 | 495 | then { | |
494 | - | let | |
495 | - | | |
496 | + | let df = cj | |
497 | + | df | |
496 | 498 | } | |
497 | 499 | else throw("fail to cast into Boolean") | |
498 | 500 | } | |
499 | 501 | ||
500 | 502 | ||
501 | - | func | |
502 | - | let | |
503 | - | if (("S" == | |
504 | - | then | |
505 | - | else if (("M" == | |
506 | - | then | |
507 | - | else if (("L" == | |
508 | - | then | |
509 | - | else if (("XL" == | |
510 | - | then | |
511 | - | else if (("XXL" == | |
512 | - | then | |
503 | + | func dj (dk) = { | |
504 | + | let cj = dk | |
505 | + | if (("S" == cj)) | |
506 | + | then cq | |
507 | + | else if (("M" == cj)) | |
508 | + | then cr | |
509 | + | else if (("L" == cj)) | |
510 | + | then cs | |
511 | + | else if (("XL" == cj)) | |
512 | + | then ct | |
513 | + | else if (("XXL" == cj)) | |
514 | + | then cu | |
513 | 515 | else throw("Unknown land size") | |
514 | 516 | } | |
515 | 517 | ||
516 | 518 | ||
517 | - | func | |
518 | - | ||
519 | - | ||
520 | - | func | |
521 | - | ||
522 | - | ||
523 | - | func | |
524 | - | ||
525 | - | ||
526 | - | func | |
527 | - | let | |
528 | - | let | |
529 | - | (toInt( | |
530 | - | } | |
531 | - | ||
532 | - | ||
533 | - | let | |
534 | - | let | |
535 | - | if ((base58'2W' == | |
519 | + | func dl (df) = isDefined(parseInt(df)) | |
520 | + | ||
521 | + | ||
522 | + | func dm () = "contractsBlocked" | |
523 | + | ||
524 | + | ||
525 | + | func dn (b) = ("lastTxIdByUser_" + b) | |
526 | + | ||
527 | + | ||
528 | + | func do (dp,dq,dr) = { | |
529 | + | let ds = value(blockInfoByHeight(dq)) | |
530 | + | let dt = sha256((value(ds.vrf) + dr)) | |
531 | + | (toInt(dt) % dp) | |
532 | + | } | |
533 | + | ||
534 | + | ||
535 | + | let du = { | |
536 | + | let cj = ch | |
537 | + | if ((base58'2W' == cj)) | |
536 | 538 | then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv") | |
537 | - | else if ((base58'2T' == | |
539 | + | else if ((base58'2T' == cj)) | |
538 | 540 | then this | |
539 | 541 | else throw("Unknown chain") | |
540 | 542 | } | |
541 | 543 | ||
542 | - | let | |
543 | - | let | |
544 | - | if ((base58'2W' == | |
544 | + | let dv = { | |
545 | + | let cj = ch | |
546 | + | if ((base58'2W' == cj)) | |
545 | 547 | then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb") | |
546 | - | else if ((base58'2T' == | |
548 | + | else if ((base58'2T' == cj)) | |
547 | 549 | then this | |
548 | 550 | else throw("Unknown chain") | |
549 | 551 | } | |
550 | 552 | ||
551 | - | let | |
552 | - | let | |
553 | - | if ((base58'2W' == | |
553 | + | let dw = { | |
554 | + | let cj = ch | |
555 | + | if ((base58'2W' == cj)) | |
554 | 556 | then if (ce) | |
555 | 557 | then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm' | |
556 | 558 | else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
557 | - | else if ((base58'2T' == | |
559 | + | else if ((base58'2T' == cj)) | |
558 | 560 | then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
559 | 561 | else throw("Unknown chain") | |
560 | 562 | } | |
561 | 563 | ||
562 | - | let | |
563 | - | ||
564 | - | let | |
565 | - | ||
566 | - | let | |
567 | - | ||
568 | - | let | |
569 | - | ||
570 | - | let | |
571 | - | ||
572 | - | let | |
573 | - | let | |
574 | - | if ((base58'2W' == | |
564 | + | let dx = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' | |
565 | + | ||
566 | + | let dy = 300000 | |
567 | + | ||
568 | + | let dz = 5000000 | |
569 | + | ||
570 | + | let dA = 50 | |
571 | + | ||
572 | + | let dB = 10000000 | |
573 | + | ||
574 | + | let dC = { | |
575 | + | let cj = ch | |
576 | + | if ((base58'2W' == cj)) | |
575 | 577 | then 252289527462 | |
576 | - | else if ((base58'2T' == | |
578 | + | else if ((base58'2T' == cj)) | |
577 | 579 | then 2522895274 | |
578 | 580 | else throw("Unknown chain") | |
579 | 581 | } | |
580 | 582 | ||
581 | - | let | |
582 | - | let | |
583 | - | if ((base58'2W' == | |
583 | + | let dD = { | |
584 | + | let cj = ch | |
585 | + | if ((base58'2W' == cj)) | |
584 | 586 | then 250000000 | |
585 | - | else if ((base58'2T' == | |
587 | + | else if ((base58'2T' == cj)) | |
586 | 588 | then 250000000 | |
587 | 589 | else throw("Unknown chain") | |
588 | 590 | } | |
589 | 591 | ||
590 | - | let | |
591 | - | ||
592 | - | let | |
593 | - | ||
594 | - | let | |
595 | - | ||
596 | - | let | |
597 | - | ||
598 | - | let | |
599 | - | ||
600 | - | let | |
601 | - | ||
602 | - | let | |
603 | - | ||
604 | - | func | |
605 | - | ||
606 | - | ||
607 | - | func | |
608 | - | ||
609 | - | ||
610 | - | func | |
611 | - | ||
612 | - | ||
613 | - | func | |
614 | - | ||
615 | - | ||
616 | - | func | |
617 | - | ||
618 | - | ||
619 | - | func | |
620 | - | ||
621 | - | ||
622 | - | func | |
623 | - | ||
624 | - | ||
625 | - | func | |
626 | - | ||
627 | - | ||
628 | - | let | |
629 | - | ||
630 | - | let | |
631 | - | ||
632 | - | let | |
633 | - | ||
634 | - | let | |
635 | - | ||
636 | - | let | |
637 | - | ||
638 | - | let | |
639 | - | ||
640 | - | let | |
641 | - | ||
642 | - | func | |
643 | - | ||
644 | - | ||
645 | - | func | |
646 | - | let | |
647 | - | then ((( | |
648 | - | else -((((-( | |
649 | - | ( | |
650 | - | } | |
651 | - | ||
652 | - | ||
653 | - | func | |
654 | - | let | |
655 | - | if ((0 >= | |
592 | + | let dE = toBigInt(5) | |
593 | + | ||
594 | + | let dF = toBigInt(20) | |
595 | + | ||
596 | + | let dG = toBigInt((20 * 20)) | |
597 | + | ||
598 | + | let dH = toBigInt(((20 * 20) * 20)) | |
599 | + | ||
600 | + | let dI = toBigInt((((20 * 20) * 20) * 20)) | |
601 | + | ||
602 | + | let dJ = toBigInt(((((20 * 20) * 20) * 20) * 20)) | |
603 | + | ||
604 | + | let dK = 500 | |
605 | + | ||
606 | + | func dL () = "nextLandNum" | |
607 | + | ||
608 | + | ||
609 | + | func dM (dN) = ("lcn_" + dN) | |
610 | + | ||
611 | + | ||
612 | + | func dO (dP) = ("la_" + dP) | |
613 | + | ||
614 | + | ||
615 | + | func dQ (bm,bt) = ((("ilao_" + bm) + "_") + bt) | |
616 | + | ||
617 | + | ||
618 | + | func dR (dP) = ("lo_" + dP) | |
619 | + | ||
620 | + | ||
621 | + | func dS (dN) = ("duckByCustomName_" + dN) | |
622 | + | ||
623 | + | ||
624 | + | func dT (dN) = ("accountByCustomName_" + dN) | |
625 | + | ||
626 | + | ||
627 | + | func dU () = "oldiesList" | |
628 | + | ||
629 | + | ||
630 | + | let dV = 0 | |
631 | + | ||
632 | + | let dW = 1 | |
633 | + | ||
634 | + | let dX = 2 | |
635 | + | ||
636 | + | let dY = 0 | |
637 | + | ||
638 | + | let dZ = 5 | |
639 | + | ||
640 | + | let ea = 6 | |
641 | + | ||
642 | + | let eb = 7 | |
643 | + | ||
644 | + | func ec (dP,dk) = ((aA + dP) + dk) | |
645 | + | ||
646 | + | ||
647 | + | func ed (ee,ef) = { | |
648 | + | let eg = if ((ee >= 0)) | |
649 | + | then (((ee + ef) - 1) / ef) | |
650 | + | else -((((-(ee) + ef) - 1) / ef)) | |
651 | + | (eg * cp) | |
652 | + | } | |
653 | + | ||
654 | + | ||
655 | + | func eh (ei,ej) = { | |
656 | + | let ek = (((((ej[0] + ej[1]) + ej[2]) + ej[3]) + ej[4]) + ej[5]) | |
657 | + | if ((0 >= ek)) | |
656 | 658 | then throw("Zero weights sum") | |
657 | 659 | else { | |
658 | - | let | |
659 | - | func | |
660 | - | ||
661 | - | let | |
662 | - | let | |
663 | - | let | |
664 | - | func | |
665 | - | then | |
666 | - | else | |
667 | - | ||
668 | - | func | |
669 | - | then | |
660 | + | let el = fraction(ei, co, ek) | |
661 | + | func em (en,eo) = (en :+ fraction(eo, el, co)) | |
662 | + | ||
663 | + | let ep = ej | |
664 | + | let eq = size(ep) | |
665 | + | let er = nil | |
666 | + | func es (et,eu) = if ((eu >= eq)) | |
667 | + | then et | |
668 | + | else em(et, ep[eu]) | |
669 | + | ||
670 | + | func ev (et,eu) = if ((eu >= eq)) | |
671 | + | then et | |
670 | 672 | else throw("List size exceeds 6") | |
671 | 673 | ||
672 | - | | |
673 | - | } | |
674 | - | } | |
675 | - | ||
676 | - | ||
677 | - | func | |
678 | - | let | |
679 | - | if ((size( | |
674 | + | ev(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6) | |
675 | + | } | |
676 | + | } | |
677 | + | ||
678 | + | ||
679 | + | func ew (ei) = { | |
680 | + | let ex = split(value(getString(cY())), "_") | |
681 | + | if ((size(ex) != aD)) | |
680 | 682 | then throw("Wrong proportions data") | |
681 | 683 | else { | |
682 | - | let | |
683 | - | | |
684 | - | } | |
685 | - | } | |
686 | - | ||
687 | - | ||
688 | - | func | |
689 | - | let | |
690 | - | func | |
691 | - | let | |
692 | - | if ((0 > | |
693 | - | then throw(((((("Not enough material idx=" + toString( | |
694 | - | else ( | |
684 | + | let ey = [parseIntValue(ex[0]), parseIntValue(ex[1]), parseIntValue(ex[2]), parseIntValue(ex[3]), parseIntValue(ex[4]), parseIntValue(ex[5])] | |
685 | + | eh(ei, ey) | |
686 | + | } | |
687 | + | } | |
688 | + | ||
689 | + | ||
690 | + | func ez (eA,eB,eC) = { | |
691 | + | let eD = ew(eC) | |
692 | + | func eE (en,cK) = { | |
693 | + | let eF = (parseIntValue(eB[cK]) - eD[cK]) | |
694 | + | if ((0 > eF)) | |
695 | + | then throw(((((("Not enough material idx=" + toString(cK)) + ", you have ") + eB[cK]) + ", but need ") + toString(eD[cK]))) | |
696 | + | else (en :+ toString(eF)) | |
695 | 697 | } | |
696 | 698 | ||
697 | - | if ( | |
699 | + | if (eA) | |
698 | 700 | then { | |
699 | - | let | |
700 | - | let | |
701 | - | let | |
702 | - | func | |
703 | - | then | |
704 | - | else | |
705 | - | ||
706 | - | func | |
707 | - | then | |
701 | + | let ep = cv | |
702 | + | let eq = size(ep) | |
703 | + | let er = nil | |
704 | + | func es (et,eu) = if ((eu >= eq)) | |
705 | + | then et | |
706 | + | else eE(et, ep[eu]) | |
707 | + | ||
708 | + | func ev (et,eu) = if ((eu >= eq)) | |
709 | + | then et | |
708 | 710 | else throw("List size exceeds 6") | |
709 | 711 | ||
710 | - | | |
711 | - | } | |
712 | - | else | |
713 | - | } | |
714 | - | ||
715 | - | ||
716 | - | func | |
717 | - | then $Tuple2( | |
712 | + | ev(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6) | |
713 | + | } | |
714 | + | else eB | |
715 | + | } | |
716 | + | ||
717 | + | ||
718 | + | func eG (eH,eI) = if ((eI == "")) | |
719 | + | then $Tuple2(eH, false) | |
718 | 720 | else { | |
719 | - | func | |
720 | - | let | |
721 | - | if ((size( | |
721 | + | func eJ (en,eK) = { | |
722 | + | let eL = split(eK, ",") | |
723 | + | if ((size(eL) != 2)) | |
722 | 724 | then throw("Incorrect format, should be index,amount") | |
723 | 725 | else { | |
724 | - | let | |
725 | - | if (if ((0 > | |
726 | + | let cK = parseIntValue(eL[0]) | |
727 | + | if (if ((0 > cK)) | |
726 | 728 | then true | |
727 | - | else ( | |
729 | + | else (cK >= size(aP))) | |
728 | 730 | then throw("Unknown product idx") | |
729 | 731 | else { | |
730 | - | let | |
731 | - | let | |
732 | - | if ((size( | |
733 | - | then throw((("You don't have " + aL[ | |
732 | + | let eM = parseIntValue(eL[1]) | |
733 | + | let eN = split(en._1, (eL[0] + ":")) | |
734 | + | if ((size(eN) != 2)) | |
735 | + | then throw((("You don't have " + aL[cK]) + " equipped")) | |
734 | 736 | else { | |
735 | - | let | |
736 | - | let | |
737 | + | let eO = eN[1] | |
738 | + | let eP = if (dl(take(drop(eO, 1), 1))) | |
737 | 739 | then 2 | |
738 | 740 | else 1 | |
739 | - | let | |
740 | - | let | |
741 | - | let | |
742 | - | then ( | |
743 | - | else throw(((((("You equipped " + toString( | |
744 | - | $Tuple2((((( | |
741 | + | let eQ = parseIntValue(take(eO, eP)) | |
742 | + | let eR = drop(eO, eP) | |
743 | + | let eS = if ((eQ >= eM)) | |
744 | + | then (eQ - eM) | |
745 | + | else throw(((((("You equipped " + toString(eQ)) + " of ") + aL[cK]) + ", but tried to use ") + toString(eM))) | |
746 | + | $Tuple2(((((eN[0] + eL[0]) + ":") + toString(eS)) + eR), if (en._2) | |
745 | 747 | then true | |
746 | - | else if (if (( | |
747 | - | then (8 >= | |
748 | + | else if (if ((cK >= 6)) | |
749 | + | then (8 >= cK) | |
748 | 750 | else false) | |
749 | - | then ( | |
751 | + | then (eS == 0) | |
750 | 752 | else false) | |
751 | 753 | } | |
752 | 754 | } | |
753 | 755 | } | |
754 | 756 | } | |
755 | 757 | ||
756 | - | let | |
757 | - | let | |
758 | - | let | |
759 | - | func | |
760 | - | then | |
761 | - | else | |
762 | - | ||
763 | - | func | |
764 | - | then | |
758 | + | let ep = split(eI, "_") | |
759 | + | let eq = size(ep) | |
760 | + | let er = $Tuple2(eH, false) | |
761 | + | func es (et,eu) = if ((eu >= eq)) | |
762 | + | then et | |
763 | + | else eJ(et, ep[eu]) | |
764 | + | ||
765 | + | func ev (et,eu) = if ((eu >= eq)) | |
766 | + | then et | |
765 | 767 | else throw("List size exceeds 10") | |
766 | 768 | ||
767 | - | | |
769 | + | ev(es(es(es(es(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
768 | 770 | } | |
769 | 771 | ||
770 | 772 | ||
771 | - | func | |
772 | - | let | |
773 | + | func eT (eU) = { | |
774 | + | let eV = if ((eU == "")) | |
773 | 775 | then nil | |
774 | - | else split_4C( | |
775 | - | func | |
776 | - | let | |
777 | - | let | |
778 | - | then parseIntValue( | |
776 | + | else split_4C(eU, "_") | |
777 | + | func eW (en,cd) = { | |
778 | + | let eX = (size(en) / 8) | |
779 | + | let eQ = if ((size(eV) > eX)) | |
780 | + | then parseIntValue(eV[eX]) | |
779 | 781 | else 0 | |
780 | - | ( | |
782 | + | (en + toBytes(eQ)) | |
781 | 783 | } | |
782 | 784 | ||
783 | - | let | |
784 | - | let | |
785 | - | let | |
786 | - | func | |
787 | - | then | |
788 | - | else | |
789 | - | ||
790 | - | func | |
791 | - | then | |
785 | + | let ep = aP | |
786 | + | let eq = size(ep) | |
787 | + | let er = base58'' | |
788 | + | func es (et,eu) = if ((eu >= eq)) | |
789 | + | then et | |
790 | + | else eW(et, ep[eu]) | |
791 | + | ||
792 | + | func ev (et,eu) = if ((eu >= eq)) | |
793 | + | then et | |
792 | 794 | else throw("List size exceeds 50") | |
793 | 795 | ||
794 | - | | |
795 | - | } | |
796 | - | ||
797 | - | ||
798 | - | func | |
799 | - | func | |
800 | - | let | |
801 | - | let | |
802 | - | ( | |
796 | + | ev(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(er, 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) | |
797 | + | } | |
798 | + | ||
799 | + | ||
800 | + | func eY (eZ) = { | |
801 | + | func fa (en,cd) = { | |
802 | + | let eX = size(en) | |
803 | + | let fb = take(drop(eZ, (8 * eX)), 8) | |
804 | + | (en :+ toString(toInt(fb))) | |
803 | 805 | } | |
804 | 806 | ||
805 | 807 | makeString_2C({ | |
806 | - | let | |
807 | - | let | |
808 | - | let | |
809 | - | func | |
810 | - | then | |
811 | - | else | |
812 | - | ||
813 | - | func | |
814 | - | then | |
808 | + | let ep = aP | |
809 | + | let eq = size(ep) | |
810 | + | let er = nil | |
811 | + | func es (et,eu) = if ((eu >= eq)) | |
812 | + | then et | |
813 | + | else fa(et, ep[eu]) | |
814 | + | ||
815 | + | func ev (et,eu) = if ((eu >= eq)) | |
816 | + | then et | |
815 | 817 | else throw("List size exceeds 50") | |
816 | 818 | ||
817 | - | | |
819 | + | ev(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(er, 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) | |
818 | 820 | }, "_") | |
819 | 821 | } | |
820 | 822 | ||
821 | 823 | ||
822 | - | func | |
823 | - | func | |
824 | - | let | |
825 | - | then | |
824 | + | func fc (fd,fe) = { | |
825 | + | func ff (en,eX) = { | |
826 | + | let fg = if ((size(fd) > (7 + eX))) | |
827 | + | then fd[(7 + eX)] | |
826 | 828 | else 0 | |
827 | - | if ((parseIntValue( | |
828 | - | then throw(("Requirement not satisfied: " + i[ | |
829 | + | if ((parseIntValue(fe[eX]) > (fd[eX] + fg))) | |
830 | + | then throw(("Requirement not satisfied: " + i[eX])) | |
829 | 831 | else true | |
830 | 832 | } | |
831 | 833 | ||
832 | - | let | |
833 | - | let | |
834 | - | let | |
835 | - | func | |
836 | - | then | |
837 | - | else | |
838 | - | ||
839 | - | func | |
840 | - | then | |
834 | + | let ep = [0, 1, 2, 3, 4, 5, 6] | |
835 | + | let eq = size(ep) | |
836 | + | let er = false | |
837 | + | func es (et,eu) = if ((eu >= eq)) | |
838 | + | then et | |
839 | + | else ff(et, ep[eu]) | |
840 | + | ||
841 | + | func ev (et,eu) = if ((eu >= eq)) | |
842 | + | then et | |
841 | 843 | else throw("List size exceeds 7") | |
842 | 844 | ||
843 | - | | |
844 | - | } | |
845 | - | ||
846 | - | ||
847 | - | func | |
848 | - | let | |
849 | - | if ((size( | |
845 | + | ev(es(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6), 7) | |
846 | + | } | |
847 | + | ||
848 | + | ||
849 | + | func fh (fi,eV,fj,fd,fk,fl) = { | |
850 | + | let eL = split(fi, ":") | |
851 | + | if ((size(eL) != 2)) | |
850 | 852 | then throw("Incorrect format, should be index:amount") | |
851 | - | else if (if (!( | |
852 | - | then (size( | |
853 | + | else if (if (!(fj)) | |
854 | + | then (size(eL[0]) != 2) | |
853 | 855 | else false) | |
854 | 856 | then throw("Product idx should be 2 digits, zero padded") | |
855 | 857 | else { | |
856 | - | let | |
857 | - | let | |
858 | - | if (!(containsElement(aO, | |
859 | - | then throw((("Product '" + aL[ | |
860 | - | else if ((0 > | |
858 | + | let fm = parseIntValue(eL[0]) | |
859 | + | let fn = parseIntValue(eL[1]) | |
860 | + | if (!(containsElement(aO, fm))) | |
861 | + | then throw((("Product '" + aL[fm]) + "' cannot be used for land defense")) | |
862 | + | else if ((0 > fn)) | |
861 | 863 | then throw("Count can't be negative") | |
862 | - | else if (( | |
863 | - | then throw(((("Can't put more than " + toString(s)) + " of ") + aL[ | |
864 | - | else if (( | |
865 | - | then $Tuple3( | |
864 | + | else if ((fn > s)) | |
865 | + | then throw(((("Can't put more than " + toString(s)) + " of ") + aL[fm])) | |
866 | + | else if ((fn == 0)) | |
867 | + | then $Tuple3(eV, fk, fl) | |
866 | 868 | else { | |
867 | - | let | |
868 | - | let | |
869 | - | let | |
870 | - | let cd = split(aP[ | |
871 | - | if (if (!( | |
872 | - | then ( | |
869 | + | let fo = take(eV, (8 * fm)) | |
870 | + | let eQ = toInt(take(drop(eV, (8 * fm)), 8)) | |
871 | + | let eR = drop(eV, (8 * (fm + 1))) | |
872 | + | let cd = split(aP[fm], "_") | |
873 | + | if (if (!(fj)) | |
874 | + | then (fn > eQ) | |
873 | 875 | else false) | |
874 | - | then throw(((((("You have " + toString( | |
876 | + | then throw(((((("You have " + toString(eQ)) + " of ") + aL[fm]) + ", but tried to use ") + toString(fn))) | |
875 | 877 | else { | |
876 | - | let | |
877 | - | then | |
878 | + | let eS = if (if (!(fj)) | |
879 | + | then fc(fd, split(cd[aS], ",")) | |
878 | 880 | else false) | |
879 | - | then ( | |
880 | - | else ( | |
881 | - | let | |
882 | - | $Tuple3((( | |
881 | + | then (eQ - fn) | |
882 | + | else (eQ + fn) | |
883 | + | let fp = (ed(eS, aU) - ed(eQ, aU)) | |
884 | + | $Tuple3(((fo + toBytes(eS)) + eR), (fk + fp), (fl - fp)) | |
883 | 885 | } | |
884 | 886 | } | |
885 | 887 | } | |
886 | 888 | } | |
887 | 889 | ||
888 | 890 | ||
889 | - | func | |
890 | - | let | |
891 | - | if ((size( | |
891 | + | func fq (fi,eV,fj,fr,fs,ft,fd) = { | |
892 | + | let eL = split(fi, ":") | |
893 | + | if ((size(eL) != 2)) | |
892 | 894 | then throw("Incorrect format, should be index:amount") | |
893 | - | else if (if (!( | |
894 | - | then (size( | |
895 | + | else if (if (!(fj)) | |
896 | + | then (size(eL[0]) != 2) | |
895 | 897 | else false) | |
896 | 898 | then throw("Product idx should be 2 digits, zero padded") | |
897 | 899 | else { | |
898 | - | let | |
899 | - | let | |
900 | - | if (if ((0 > | |
900 | + | let fm = parseIntValue(eL[0]) | |
901 | + | let fn = parseIntValue(eL[1]) | |
902 | + | if (if ((0 > fm)) | |
901 | 903 | then true | |
902 | - | else ( | |
904 | + | else (fm >= size(aP))) | |
903 | 905 | then throw("Unknown product idx") | |
904 | - | else if ((0 > | |
906 | + | else if ((0 > fn)) | |
905 | 907 | then throw("Count can't be negative") | |
906 | - | else if (( | |
907 | - | then throw(((("Can't put more than " + toString(s)) + " of ") + aL[ | |
908 | - | else if (( | |
909 | - | then $Tuple2( | |
908 | + | else if ((fn > s)) | |
909 | + | then throw(((("Can't put more than " + toString(s)) + " of ") + aL[fm])) | |
910 | + | else if ((fn == 0)) | |
911 | + | then $Tuple2(eV, false) | |
910 | 912 | else { | |
911 | - | let | |
912 | - | let | |
913 | - | let | |
914 | - | let cd = split(aP[ | |
915 | - | if (if (!( | |
916 | - | then ( | |
913 | + | let fo = take(eV, (8 * fm)) | |
914 | + | let eQ = toInt(take(drop(eV, (8 * fm)), 8)) | |
915 | + | let eR = drop(eV, (8 * (fm + 1))) | |
916 | + | let cd = split(aP[fm], "_") | |
917 | + | if (if (!(fj)) | |
918 | + | then (fn > eQ) | |
917 | 919 | else false) | |
918 | - | then throw(((((("You have " + toString( | |
920 | + | then throw(((((("You have " + toString(eQ)) + " of ") + aL[fm]) + ", but tried to use ") + toString(fn))) | |
919 | 921 | else { | |
920 | - | let | |
921 | - | then | |
922 | + | let fu = if (if (!(fj)) | |
923 | + | then fc(fd, split(cd[aS], ",")) | |
922 | 924 | else false) | |
923 | 925 | then { | |
924 | - | let | |
925 | - | if (( | |
926 | + | let fv = cd[aT] | |
927 | + | if ((fv == "")) | |
926 | 928 | then throw("Item cannot be equipped") | |
927 | 929 | else { | |
928 | - | let | |
929 | - | let | |
930 | - | if (( | |
930 | + | let fw = parseIntValue(fv) | |
931 | + | let fx = (fw / 100) | |
932 | + | if ((fr != fx)) | |
931 | 933 | then throw("Segment incompatible") | |
932 | 934 | else { | |
933 | - | let | |
934 | - | if (( | |
935 | + | let fy = ((fw % 100) / 10) | |
936 | + | if ((fs != fy)) | |
935 | 937 | then throw("Slot incompatible") | |
936 | 938 | else { | |
937 | - | let | |
938 | - | if (if (( | |
939 | - | then ( | |
939 | + | let fz = (fw % 10) | |
940 | + | if (if ((ft != 0)) | |
941 | + | then (fz > 1) | |
940 | 942 | else false) | |
941 | 943 | then throw("Big items should occupy slot 0") | |
942 | - | else ( | |
944 | + | else (fz > 1) | |
943 | 945 | } | |
944 | 946 | } | |
945 | 947 | } | |
946 | 948 | } | |
947 | 949 | else false | |
948 | - | $Tuple2((( | |
949 | - | then | |
950 | - | else -( | |
950 | + | $Tuple2(((fo + toBytes((eQ + (if (fj) | |
951 | + | then fn | |
952 | + | else -(fn))))) + eR), fu) | |
951 | 953 | } | |
952 | 954 | } | |
953 | 955 | } | |
954 | 956 | } | |
955 | 957 | ||
956 | 958 | ||
957 | - | func | |
959 | + | func fA (fB,fC,fj,fr,fs,fD) = if ((fB != "")) | |
958 | 960 | then { | |
959 | - | let | |
960 | - | if ((size( | |
961 | + | let fE = split(fB, ",") | |
962 | + | if ((size(fE) > r)) | |
961 | 963 | then throw("Wrong slots format") | |
962 | 964 | else { | |
963 | - | let | |
964 | - | let | |
965 | - | then | |
965 | + | let fF = fE[0] | |
966 | + | let fG = if ((size(fE) > 1)) | |
967 | + | then fE[1] | |
966 | 968 | else "" | |
967 | - | if (if (( | |
968 | - | then ( | |
969 | + | if (if ((fF == "")) | |
970 | + | then (fG == "") | |
969 | 971 | else false) | |
970 | - | then | |
972 | + | then fC | |
971 | 973 | else { | |
972 | - | let | |
973 | - | then | |
974 | - | else $Tuple2( | |
975 | - | if (( | |
976 | - | then if ( | |
974 | + | let fH = if ((fF != "")) | |
975 | + | then fq(fF, fC, fj, fr, fs, 0, fD) | |
976 | + | else $Tuple2(fC, false) | |
977 | + | if ((fG != "")) | |
978 | + | then if (fH._2) | |
977 | 979 | then throw("Big item already occupies slot") | |
978 | - | else | |
979 | - | else | |
980 | + | else fq(fG, fH._1, fj, fr, fs, 1, fD)._1 | |
981 | + | else fH._1 | |
980 | 982 | } | |
981 | 983 | } | |
982 | 984 | } | |
983 | - | else | |
984 | - | ||
985 | - | ||
986 | - | func | |
987 | - | func | |
988 | - | let | |
989 | - | let | |
990 | - | if ((size( | |
985 | + | else fC | |
986 | + | ||
987 | + | ||
988 | + | func fI (fJ,fK,fj,fD) = { | |
989 | + | func fr (en,fL) = { | |
990 | + | let eX = en._1 | |
991 | + | let fs = split(fL, ";") | |
992 | + | if ((size(fs) != q)) | |
991 | 993 | then throw("Wrong segment format") | |
992 | 994 | else { | |
993 | - | let | |
994 | - | let | |
995 | - | if (if (( | |
996 | - | then ( | |
995 | + | let fM = fs[0] | |
996 | + | let fN = fs[1] | |
997 | + | if (if ((fM == "")) | |
998 | + | then (fN == "") | |
997 | 999 | else false) | |
998 | - | then $Tuple2(( | |
1000 | + | then $Tuple2((eX + 1), en._2) | |
999 | 1001 | else { | |
1000 | - | let | |
1001 | - | $Tuple2(( | |
1002 | + | let fO = fA(fM, en._2, fj, eX, 0, fD) | |
1003 | + | $Tuple2((eX + 1), fA(fN, fO, fj, eX, 1, fD)) | |
1002 | 1004 | } | |
1003 | 1005 | } | |
1004 | 1006 | } | |
1005 | 1007 | ||
1006 | - | ( let | |
1007 | - | let | |
1008 | - | let | |
1009 | - | func | |
1010 | - | then | |
1011 | - | else | |
1012 | - | ||
1013 | - | func | |
1014 | - | then | |
1008 | + | ( let ep = fJ | |
1009 | + | let eq = size(ep) | |
1010 | + | let er = $Tuple2(0, fK) | |
1011 | + | func es (et,eu) = if ((eu >= eq)) | |
1012 | + | then et | |
1013 | + | else fr(et, ep[eu]) | |
1014 | + | ||
1015 | + | func ev (et,eu) = if ((eu >= eq)) | |
1016 | + | then et | |
1015 | 1017 | else throw("List size exceeds 6") | |
1016 | 1018 | ||
1017 | - | | |
1018 | - | } | |
1019 | - | ||
1020 | - | ||
1021 | - | func | |
1019 | + | ev(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6))._2 | |
1020 | + | } | |
1021 | + | ||
1022 | + | ||
1023 | + | func fP (fJ,fK,fk,fl,fj,fd) = if ((3 > size(fJ))) | |
1022 | 1024 | then throw("At least duck, mines and traps parts are required") | |
1023 | 1025 | else { | |
1024 | - | func | |
1025 | - | let | |
1026 | - | if (( | |
1027 | - | then $Tuple4(( | |
1026 | + | func fr (en,fL) = { | |
1027 | + | let eX = en._1 | |
1028 | + | if ((eX == 0)) | |
1029 | + | then $Tuple4((eX + 1), en._2, en._3, en._4) | |
1028 | 1030 | else { | |
1029 | - | let | |
1030 | - | $Tuple4(( | |
1031 | + | let fQ = fh(fL, en._2, fj, fd, en._3, en._4) | |
1032 | + | $Tuple4((eX + 1), fQ._1, fQ._2, fQ._3) | |
1031 | 1033 | } | |
1032 | 1034 | } | |
1033 | 1035 | ||
1034 | - | let | |
1035 | - | let | |
1036 | - | let | |
1037 | - | let | |
1038 | - | func | |
1039 | - | then | |
1040 | - | else | |
1041 | - | ||
1042 | - | func | |
1043 | - | then | |
1036 | + | let fR = { | |
1037 | + | let ep = fJ | |
1038 | + | let eq = size(ep) | |
1039 | + | let er = $Tuple4(0, fK, fk, fl) | |
1040 | + | func es (et,eu) = if ((eu >= eq)) | |
1041 | + | then et | |
1042 | + | else fr(et, ep[eu]) | |
1043 | + | ||
1044 | + | func ev (et,eu) = if ((eu >= eq)) | |
1045 | + | then et | |
1044 | 1046 | else throw("List size exceeds 10") | |
1045 | 1047 | ||
1046 | - | | |
1047 | - | } | |
1048 | - | $Tuple3( | |
1048 | + | ev(es(es(es(es(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1049 | + | } | |
1050 | + | $Tuple3(fR._2, fR._3, fR._4) | |
1049 | 1051 | } | |
1050 | 1052 | ||
1051 | 1053 | ||
1052 | - | func | |
1053 | - | let | |
1054 | - | let | |
1055 | - | let | |
1056 | - | let | |
1057 | - | let am = if (( | |
1054 | + | func fS (z) = { | |
1055 | + | let fT = E(z) | |
1056 | + | let fU = split(valueOrElse(getString(fT), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
1057 | + | let fV = fI(fU, dx, true, nil) | |
1058 | + | let fW = split(fU[o], ";")[1] | |
1059 | + | let am = if ((fW == "")) | |
1058 | 1060 | then 0 | |
1059 | 1061 | else { | |
1060 | - | let | |
1061 | - | if (( | |
1062 | + | let fX = split(fW, ",")[0] | |
1063 | + | if ((fX == "")) | |
1062 | 1064 | then 0 | |
1063 | 1065 | else { | |
1064 | - | let | |
1065 | - | let | |
1066 | - | let | |
1067 | - | if (if (if (if (if (( | |
1066 | + | let fi = split(fX, ":") | |
1067 | + | let cK = fi[0] | |
1068 | + | let fY = fi[1] | |
1069 | + | if (if (if (if (if ((cK == "06")) | |
1068 | 1070 | then true | |
1069 | - | else ( | |
1071 | + | else (cK == "07")) | |
1070 | 1072 | then true | |
1071 | - | else ( | |
1072 | - | then ( | |
1073 | + | else (cK == "08")) | |
1074 | + | then (fY != "") | |
1073 | 1075 | else false) | |
1074 | - | then (parseIntValue( | |
1076 | + | then (parseIntValue(fY) > 0) | |
1075 | 1077 | else false) | |
1076 | - | then parseIntValue(split(aP[parseIntValue( | |
1078 | + | then parseIntValue(split(aP[parseIntValue(cK)], "_")[aR]) | |
1077 | 1079 | else 0 | |
1078 | 1080 | } | |
1079 | 1081 | } | |
1080 | - | let | |
1081 | - | let | |
1082 | - | ( | |
1083 | - | } | |
1084 | - | ||
1085 | - | ||
1086 | - | func | |
1082 | + | let fD = ak(this, z, am, true) | |
1083 | + | let fZ = fI(fU, fV, false, fD) | |
1084 | + | (fZ == fZ) | |
1085 | + | } | |
1086 | + | ||
1087 | + | ||
1088 | + | func ga (gb,gc,gd,ge) = if ((size(gb) != aD)) | |
1087 | 1089 | then throw("Wrong proportions data") | |
1088 | 1090 | else { | |
1089 | - | func | |
1090 | - | let | |
1091 | - | if ((0 > | |
1092 | - | then throw(((((((("Panic! Pieces of type=" + toString( | |
1093 | - | else ( | |
1094 | - | } | |
1095 | - | ||
1096 | - | let | |
1097 | - | let | |
1098 | - | let | |
1099 | - | func | |
1100 | - | then | |
1101 | - | else | |
1102 | - | ||
1103 | - | func | |
1104 | - | then | |
1091 | + | func gf (en,gg) = { | |
1092 | + | let eF = (parseIntValue(gb[gg]) + ((ge * gc[gg]) * gd)) | |
1093 | + | if ((0 > eF)) | |
1094 | + | then throw(((((((("Panic! Pieces of type=" + toString(gg)) + ", sign=") + toString(ge)) + ", terrainCounts[i]=") + toString(gc[gg])) + ", landSizeIndex=") + toString(gd))) | |
1095 | + | else (en :+ toString(eF)) | |
1096 | + | } | |
1097 | + | ||
1098 | + | let ep = cv | |
1099 | + | let eq = size(ep) | |
1100 | + | let er = nil | |
1101 | + | func es (et,eu) = if ((eu >= eq)) | |
1102 | + | then et | |
1103 | + | else gf(et, ep[eu]) | |
1104 | + | ||
1105 | + | func ev (et,eu) = if ((eu >= eq)) | |
1106 | + | then et | |
1105 | 1107 | else throw("List size exceeds 6") | |
1106 | 1108 | ||
1107 | - | | |
1109 | + | ev(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6) | |
1108 | 1110 | } | |
1109 | 1111 | ||
1110 | 1112 | ||
1111 | - | func | |
1112 | - | let | |
1113 | - | makeString( | |
1114 | - | } | |
1115 | - | ||
1116 | - | ||
1117 | - | func | |
1118 | - | ||
1119 | - | ||
1120 | - | func | |
1121 | - | func | |
1122 | - | let | |
1123 | - | ( | |
1113 | + | func gh (gc,gd,ge) = { | |
1114 | + | let gb = split(valueOrElse(getString(cY()), "0_0_0_0_0_0"), "_") | |
1115 | + | makeString(ga(gb, gc, gd, ge), "_") | |
1116 | + | } | |
1117 | + | ||
1118 | + | ||
1119 | + | func gi (gj) = [(size(split(gj, "A")) - 1), (size(split(gj, "B")) - 1), (size(split(gj, "C")) - 1), (size(split(gj, "D")) - 1), (size(split(gj, "E")) - 1), (size(split(gj, "F")) - 1)] | |
1120 | + | ||
1121 | + | ||
1122 | + | func gk (gl,gc,gm,gd,gn) = { | |
1123 | + | func go (en,gg) = { | |
1124 | + | let gp = ((fraction(gm, gn, aG) * gc[gg]) * gd) | |
1125 | + | (en :+ toString((parseIntValue(gl[gg]) + gp))) | |
1124 | 1126 | } | |
1125 | 1127 | ||
1126 | - | let | |
1127 | - | let | |
1128 | - | let | |
1129 | - | let | |
1130 | - | func | |
1131 | - | then | |
1132 | - | else | |
1133 | - | ||
1134 | - | func | |
1135 | - | then | |
1128 | + | let ey = { | |
1129 | + | let ep = cv | |
1130 | + | let eq = size(ep) | |
1131 | + | let er = nil | |
1132 | + | func es (et,eu) = if ((eu >= eq)) | |
1133 | + | then et | |
1134 | + | else go(et, ep[eu]) | |
1135 | + | ||
1136 | + | func ev (et,eu) = if ((eu >= eq)) | |
1137 | + | then et | |
1136 | 1138 | else throw("List size exceeds 6") | |
1137 | 1139 | ||
1138 | - | | |
1140 | + | ev(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6) | |
1139 | 1141 | } | |
1140 | - | makeString( | |
1141 | - | } | |
1142 | - | ||
1143 | - | ||
1144 | - | func | |
1145 | - | func | |
1146 | - | let | |
1147 | - | $Tuple2(( | |
1142 | + | makeString(ey, "_") | |
1143 | + | } | |
1144 | + | ||
1145 | + | ||
1146 | + | func gq (gc,gm,gd,gn) = { | |
1147 | + | func go (en,gg) = { | |
1148 | + | let gp = ((fraction(gm, gn, aG) * gc[gg]) * gd) | |
1149 | + | $Tuple2((en._1 :+ gp), (en._2 + gp)) | |
1148 | 1150 | } | |
1149 | 1151 | ||
1150 | - | let | |
1151 | - | let | |
1152 | - | let | |
1153 | - | func | |
1154 | - | then | |
1155 | - | else | |
1156 | - | ||
1157 | - | func | |
1158 | - | then | |
1152 | + | let ep = cv | |
1153 | + | let eq = size(ep) | |
1154 | + | let er = $Tuple2(nil, 0) | |
1155 | + | func es (et,eu) = if ((eu >= eq)) | |
1156 | + | then et | |
1157 | + | else go(et, ep[eu]) | |
1158 | + | ||
1159 | + | func ev (et,eu) = if ((eu >= eq)) | |
1160 | + | then et | |
1159 | 1161 | else throw("List size exceeds 6") | |
1160 | 1162 | ||
1161 | - | | |
1162 | - | } | |
1163 | - | ||
1164 | - | ||
1165 | - | func | |
1166 | - | let | |
1167 | - | let | |
1168 | - | if (( | |
1169 | - | then $Tuple2(makeString( | |
1170 | - | else if (( | |
1163 | + | ev(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6) | |
1164 | + | } | |
1165 | + | ||
1166 | + | ||
1167 | + | func gr (gs,gt,gu,gv) = { | |
1168 | + | let gw = gu._1 | |
1169 | + | let gx = gu._2 | |
1170 | + | if ((gx == 0)) | |
1171 | + | then $Tuple2(makeString(gs, "_"), makeString(gt, "_")) | |
1172 | + | else if ((gv >= gx)) | |
1171 | 1173 | then { | |
1172 | - | func | |
1173 | - | ||
1174 | - | let | |
1175 | - | let | |
1176 | - | let | |
1177 | - | let | |
1178 | - | func | |
1179 | - | then | |
1180 | - | else | |
1181 | - | ||
1182 | - | func | |
1183 | - | then | |
1174 | + | func gy (en,gg) = (en :+ toString((parseIntValue(gs[gg]) + gw[gg]))) | |
1175 | + | ||
1176 | + | let ey = { | |
1177 | + | let ep = cv | |
1178 | + | let eq = size(ep) | |
1179 | + | let er = nil | |
1180 | + | func es (et,eu) = if ((eu >= eq)) | |
1181 | + | then et | |
1182 | + | else gy(et, ep[eu]) | |
1183 | + | ||
1184 | + | func ev (et,eu) = if ((eu >= eq)) | |
1185 | + | then et | |
1184 | 1186 | else throw("List size exceeds 6") | |
1185 | 1187 | ||
1186 | - | | |
1188 | + | ev(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6) | |
1187 | 1189 | } | |
1188 | - | $Tuple2(makeString( | |
1190 | + | $Tuple2(makeString(ey, "_"), makeString(gt, "_")) | |
1189 | 1191 | } | |
1190 | 1192 | else { | |
1191 | - | func | |
1192 | - | let | |
1193 | - | $Tuple2(( | |
1193 | + | func gz (en,gg) = { | |
1194 | + | let gA = fraction(gw[gg], gv, gx) | |
1195 | + | $Tuple2((en._1 :+ toString((parseIntValue(gs[gg]) + gA))), (en._2 :+ toString(((parseIntValue(gt[gg]) + gw[gg]) - gA)))) | |
1194 | 1196 | } | |
1195 | 1197 | ||
1196 | - | let | |
1197 | - | let | |
1198 | - | let | |
1199 | - | let | |
1200 | - | func | |
1201 | - | then | |
1202 | - | else | |
1203 | - | ||
1204 | - | func | |
1205 | - | then | |
1198 | + | let ey = { | |
1199 | + | let ep = cv | |
1200 | + | let eq = size(ep) | |
1201 | + | let er = $Tuple2(nil, nil) | |
1202 | + | func es (et,eu) = if ((eu >= eq)) | |
1203 | + | then et | |
1204 | + | else gz(et, ep[eu]) | |
1205 | + | ||
1206 | + | func ev (et,eu) = if ((eu >= eq)) | |
1207 | + | then et | |
1206 | 1208 | else throw("List size exceeds 6") | |
1207 | 1209 | ||
1208 | - | | |
1210 | + | ev(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6) | |
1209 | 1211 | } | |
1210 | - | $Tuple2(makeString( | |
1212 | + | $Tuple2(makeString(ey._1, "_"), makeString(ey._2, "_")) | |
1211 | 1213 | } | |
1212 | 1214 | } | |
1213 | 1215 | ||
1214 | 1216 | ||
1215 | - | func | |
1216 | - | then | |
1217 | - | else -( | |
1218 | - | ||
1219 | - | ||
1220 | - | let | |
1221 | - | ||
1222 | - | func | |
1223 | - | let | |
1224 | - | let | |
1217 | + | func gB (gC) = if ((gC >= toBigInt(0))) | |
1218 | + | then gC | |
1219 | + | else -(gC) | |
1220 | + | ||
1221 | + | ||
1222 | + | let gD = [[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]] | |
1223 | + | ||
1224 | + | func gE (dh,gF) = { | |
1225 | + | let gG = toInt((dh % dF)) | |
1226 | + | let gH = if ((gF[0] > gG)) | |
1225 | 1227 | then "A" | |
1226 | - | else if (( | |
1228 | + | else if ((gF[1] > gG)) | |
1227 | 1229 | then "B" | |
1228 | - | else if (( | |
1230 | + | else if ((gF[2] > gG)) | |
1229 | 1231 | then "C" | |
1230 | - | else if (( | |
1232 | + | else if ((gF[3] > gG)) | |
1231 | 1233 | then "D" | |
1232 | - | else if (( | |
1234 | + | else if ((gF[4] > gG)) | |
1233 | 1235 | then "E" | |
1234 | 1236 | else "F" | |
1235 | - | | |
1236 | - | } | |
1237 | - | ||
1238 | - | ||
1239 | - | func | |
1240 | - | let | |
1241 | - | func | |
1242 | - | ||
1243 | - | let | |
1244 | - | let | |
1245 | - | let | |
1246 | - | let | |
1247 | - | func | |
1248 | - | then | |
1249 | - | else | |
1250 | - | ||
1251 | - | func | |
1252 | - | then | |
1237 | + | gH | |
1238 | + | } | |
1239 | + | ||
1240 | + | ||
1241 | + | func gI (gJ,gK) = { | |
1242 | + | let gL = gD[gK] | |
1243 | + | func gM (en,eo) = $Tuple2((((((en._1 + gE(en._2, gL)) + gE((en._2 / dF), gL)) + gE((en._2 / dG), gL)) + gE((en._2 / dH), gL)) + gE((en._2 / dI), gL)), (en._2 / dJ)) | |
1244 | + | ||
1245 | + | let fR = { | |
1246 | + | let ep = [1, 2, 3, 4, 5] | |
1247 | + | let eq = size(ep) | |
1248 | + | let er = $Tuple2("", (gJ / dE)) | |
1249 | + | func es (et,eu) = if ((eu >= eq)) | |
1250 | + | then et | |
1251 | + | else gM(et, ep[eu]) | |
1252 | + | ||
1253 | + | func ev (et,eu) = if ((eu >= eq)) | |
1254 | + | then et | |
1253 | 1255 | else throw("List size exceeds 5") | |
1254 | 1256 | ||
1255 | - | | |
1257 | + | ev(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5) | |
1256 | 1258 | } | |
1257 | - | | |
1258 | - | } | |
1259 | - | ||
1260 | - | ||
1261 | - | let | |
1262 | - | ||
1263 | - | let | |
1264 | - | ||
1265 | - | func | |
1266 | - | func | |
1267 | - | let | |
1268 | - | let | |
1269 | - | let | |
1259 | + | fR._1 | |
1260 | + | } | |
1261 | + | ||
1262 | + | ||
1263 | + | let gN = [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] | |
1264 | + | ||
1265 | + | let gO = ["A", "B", "C", "D", "E", "F"] | |
1266 | + | ||
1267 | + | func gP (gQ,gd) = { | |
1268 | + | func gR (en,df) = { | |
1269 | + | let eX = en._2 | |
1270 | + | let gS = parseIntValue(df) | |
1271 | + | let gC = if ((gS == 0)) | |
1270 | 1272 | then 0 | |
1271 | - | else if (( | |
1272 | - | then ( | |
1273 | - | else if (( | |
1273 | + | else if ((gS >= (4 * gd))) | |
1274 | + | then (gS / gd) | |
1275 | + | else if ((gS > (3 * gd))) | |
1274 | 1276 | then 3 | |
1275 | - | else ((( | |
1276 | - | $Tuple3(( | |
1277 | + | else (((gS - 1) / gd) + 1) | |
1278 | + | $Tuple3((en._1 :+ gC), (en._2 + 1), (en._3 + gC)) | |
1277 | 1279 | } | |
1278 | 1280 | ||
1279 | - | let | |
1280 | - | let | |
1281 | - | let | |
1282 | - | let | |
1283 | - | func | |
1284 | - | then | |
1285 | - | else | |
1286 | - | ||
1287 | - | func | |
1288 | - | then | |
1281 | + | let fR = { | |
1282 | + | let ep = gQ | |
1283 | + | let eq = size(ep) | |
1284 | + | let er = $Tuple3(nil, 0, 0) | |
1285 | + | func es (et,eu) = if ((eu >= eq)) | |
1286 | + | then et | |
1287 | + | else gR(et, ep[eu]) | |
1288 | + | ||
1289 | + | func ev (et,eu) = if ((eu >= eq)) | |
1290 | + | then et | |
1289 | 1291 | else throw("List size exceeds 6") | |
1290 | 1292 | ||
1291 | - | | |
1293 | + | ev(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6) | |
1292 | 1294 | } | |
1293 | - | let | |
1294 | - | let | |
1295 | - | let | |
1296 | - | func | |
1297 | - | let | |
1298 | - | then ( | |
1299 | - | else | |
1300 | - | let | |
1295 | + | let gT = fR._1 | |
1296 | + | let gU = value(indexOf(gT, max(gT))) | |
1297 | + | let gV = (fR._3 - 25) | |
1298 | + | func gW (en,cK) = { | |
1299 | + | let gX = if ((cK == gU)) | |
1300 | + | then (gT[cK] - gV) | |
1301 | + | else gT[cK] | |
1302 | + | let gY = if ((gX == 0)) | |
1301 | 1303 | then nil | |
1302 | - | else split(drop(toString(pow(10, 0, | |
1303 | - | let | |
1304 | - | func | |
1305 | - | ||
1306 | - | let | |
1307 | - | let | |
1308 | - | let | |
1309 | - | let | |
1310 | - | func | |
1311 | - | then | |
1312 | - | else | |
1313 | - | ||
1314 | - | func | |
1315 | - | then | |
1304 | + | else split(drop(toString(pow(10, 0, gX, 0, 0, DOWN)), 1), "") | |
1305 | + | let fw = gO[cK] | |
1306 | + | func gZ (ha,hb) = (ha :+ fw) | |
1307 | + | ||
1308 | + | let hc = { | |
1309 | + | let ep = gY | |
1310 | + | let eq = size(ep) | |
1311 | + | let er = nil | |
1312 | + | func hd (et,eu) = if ((eu >= eq)) | |
1313 | + | then et | |
1314 | + | else gZ(et, ep[eu]) | |
1315 | + | ||
1316 | + | func he (et,eu) = if ((eu >= eq)) | |
1317 | + | then et | |
1316 | 1318 | else throw("List size exceeds 25") | |
1317 | 1319 | ||
1318 | - | hd( | |
1319 | - | } | |
1320 | - | ( | |
1320 | + | he(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(er, 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) | |
1321 | + | } | |
1322 | + | (en ++ hc) | |
1321 | 1323 | } | |
1322 | 1324 | ||
1323 | - | let | |
1324 | - | let | |
1325 | - | let | |
1326 | - | let | |
1327 | - | func | |
1328 | - | then | |
1329 | - | else | |
1330 | - | ||
1331 | - | func | |
1332 | - | then | |
1325 | + | let ey = { | |
1326 | + | let ep = cv | |
1327 | + | let eq = size(ep) | |
1328 | + | let er = nil | |
1329 | + | func hd (et,eu) = if ((eu >= eq)) | |
1330 | + | then et | |
1331 | + | else gW(et, ep[eu]) | |
1332 | + | ||
1333 | + | func he (et,eu) = if ((eu >= eq)) | |
1334 | + | then et | |
1333 | 1335 | else throw("List size exceeds 6") | |
1334 | 1336 | ||
1335 | - | hd( | |
1337 | + | he(hd(hd(hd(hd(hd(hd(er, 0), 1), 2), 3), 4), 5), 6) | |
1336 | 1338 | } | |
1337 | - | func | |
1338 | - | ||
1339 | - | let | |
1340 | - | let | |
1341 | - | let | |
1342 | - | func | |
1343 | - | then | |
1344 | - | else | |
1345 | - | ||
1346 | - | func | |
1347 | - | then | |
1339 | + | func hf (en,eX) = (en + ey[eX]) | |
1340 | + | ||
1341 | + | let ep = gN | |
1342 | + | let eq = size(ep) | |
1343 | + | let er = "" | |
1344 | + | func hg (et,eu) = if ((eu >= eq)) | |
1345 | + | then et | |
1346 | + | else hf(et, ep[eu]) | |
1347 | + | ||
1348 | + | func hh (et,eu) = if ((eu >= eq)) | |
1349 | + | then et | |
1348 | 1350 | else throw("List size exceeds 25") | |
1349 | 1351 | ||
1350 | - | hg( | |
1351 | - | } | |
1352 | - | ||
1353 | - | ||
1354 | - | func | |
1355 | - | let | |
1356 | - | [toString(valueOrElse(parseInt( | |
1357 | - | then | |
1358 | - | else "0_0_0_0_0_0", if ((size(split( | |
1359 | - | then | |
1360 | - | else "0_0_0_0_0_0", | |
1361 | - | } | |
1362 | - | ||
1363 | - | ||
1364 | - | func | |
1365 | - | let | |
1366 | - | ((aH * (parseIntValue( | |
1367 | - | } | |
1368 | - | ||
1369 | - | ||
1370 | - | func | |
1371 | - | let | |
1372 | - | func | |
1373 | - | ||
1374 | - | func | |
1375 | - | let | |
1376 | - | let | |
1377 | - | $Tuple2(( | |
1352 | + | hh(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(er, 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) | |
1353 | + | } | |
1354 | + | ||
1355 | + | ||
1356 | + | func hi (hj) = { | |
1357 | + | let fQ = split(valueOrElse(getString(hj), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":") | |
1358 | + | [toString(valueOrElse(parseInt(fQ[be]), 0)), if ((size(split(fQ[bf], "_")) == aD)) | |
1359 | + | then fQ[bf] | |
1360 | + | else "0_0_0_0_0_0", if ((size(split(fQ[bg], "_")) == aD)) | |
1361 | + | then fQ[bg] | |
1362 | + | else "0_0_0_0_0_0", fQ[bh]] | |
1363 | + | } | |
1364 | + | ||
1365 | + | ||
1366 | + | func hk (hl) = { | |
1367 | + | let eL = split(hl, "_") | |
1368 | + | ((aH * (parseIntValue(eL[1]) + 1)) * parseIntValue(eL[0])) | |
1369 | + | } | |
1370 | + | ||
1371 | + | ||
1372 | + | func hm (hn) = { | |
1373 | + | let ho = hn[aY] | |
1374 | + | func hp (en,hq) = (en + parseIntValue(hq)) | |
1375 | + | ||
1376 | + | func hr (en,hq) = { | |
1377 | + | let cK = en._1 | |
1378 | + | let eg = (((parseIntValue(hq) + aU) - 1) / aU) | |
1379 | + | $Tuple2((cK + 1), (en._2 + (eg * cp))) | |
1378 | 1380 | } | |
1379 | 1381 | ||
1380 | - | let | |
1381 | - | let | |
1382 | - | let | |
1383 | - | let | |
1384 | - | func | |
1385 | - | then | |
1386 | - | else | |
1387 | - | ||
1388 | - | func | |
1389 | - | then | |
1382 | + | let hs = { | |
1383 | + | let ep = split(hn[aW], "_") | |
1384 | + | let eq = size(ep) | |
1385 | + | let er = 0 | |
1386 | + | func es (et,eu) = if ((eu >= eq)) | |
1387 | + | then et | |
1388 | + | else hp(et, ep[eu]) | |
1389 | + | ||
1390 | + | func ev (et,eu) = if ((eu >= eq)) | |
1391 | + | then et | |
1390 | 1392 | else throw("List size exceeds 6") | |
1391 | 1393 | ||
1392 | - | | |
1394 | + | ev(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6) | |
1393 | 1395 | } | |
1394 | - | let | |
1395 | - | let | |
1396 | - | let | |
1397 | - | let | |
1398 | - | func | |
1399 | - | then | |
1400 | - | else | |
1401 | - | ||
1402 | - | func | |
1403 | - | then | |
1396 | + | let ht = { | |
1397 | + | let ep = split(hn[aX], "_") | |
1398 | + | let eq = size(ep) | |
1399 | + | let er = 0 | |
1400 | + | func hd (et,eu) = if ((eu >= eq)) | |
1401 | + | then et | |
1402 | + | else hp(et, ep[eu]) | |
1403 | + | ||
1404 | + | func he (et,eu) = if ((eu >= eq)) | |
1405 | + | then et | |
1404 | 1406 | else throw("List size exceeds 6") | |
1405 | 1407 | ||
1406 | - | hd( | |
1408 | + | he(hd(hd(hd(hd(hd(hd(er, 0), 1), 2), 3), 4), 5), 6) | |
1407 | 1409 | } | |
1408 | - | let | |
1410 | + | let hu = if ((ho == "")) | |
1409 | 1411 | then 0 | |
1410 | - | else ( let | |
1411 | - | let | |
1412 | - | let | |
1413 | - | func | |
1414 | - | then | |
1415 | - | else | |
1416 | - | ||
1417 | - | func | |
1418 | - | then | |
1412 | + | else ( let ep = split_4C(ho, "_") | |
1413 | + | let eq = size(ep) | |
1414 | + | let er = $Tuple2(0, 0) | |
1415 | + | func hg (et,eu) = if ((eu >= eq)) | |
1416 | + | then et | |
1417 | + | else hr(et, ep[eu]) | |
1418 | + | ||
1419 | + | func hh (et,eu) = if ((eu >= eq)) | |
1420 | + | then et | |
1419 | 1421 | else throw("List size exceeds 50") | |
1420 | 1422 | ||
1421 | - | hg( | |
1422 | - | (( | |
1423 | - | } | |
1424 | - | ||
1425 | - | ||
1426 | - | func | |
1427 | - | let | |
1428 | - | let | |
1429 | - | let | |
1430 | - | let | |
1431 | - | let | |
1432 | - | let | |
1433 | - | then makeString(["0", toString( | |
1423 | + | hh(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(er, 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 | |
1424 | + | ((hs + ht) + hu) | |
1425 | + | } | |
1426 | + | ||
1427 | + | ||
1428 | + | func hv (hw,hx,hy) = { | |
1429 | + | let hl = ((toString(hx) + "_") + toString(hy)) | |
1430 | + | let hz = hk(hl) | |
1431 | + | let hA = valueOrElse(getString(hw), (hl + ":0_0_0_0_0_0:0_0_0_0_0_0::0")) | |
1432 | + | let hB = split_4C(hA, ":") | |
1433 | + | let hC = hm(hB) | |
1434 | + | let hD = if ((5 > size(hB))) | |
1435 | + | then makeString(["0", toString(hC), toString((hz - hC)), toString(hz)], "_") | |
1434 | 1436 | else { | |
1435 | - | let | |
1436 | - | let | |
1437 | - | let | |
1438 | - | then parseIntValue( | |
1439 | - | else | |
1440 | - | makeString([toString( | |
1441 | - | } | |
1442 | - | [ | |
1443 | - | then | |
1444 | - | else "0_0_0_0_0_0", if ((size(split( | |
1445 | - | then | |
1446 | - | else "0_0_0_0_0_0", | |
1447 | - | } | |
1448 | - | ||
1449 | - | ||
1450 | - | func | |
1451 | - | let | |
1452 | - | let | |
1453 | - | (( | |
1454 | - | } | |
1455 | - | ||
1456 | - | ||
1457 | - | func | |
1437 | + | let hE = split(hB[aZ], "_") | |
1438 | + | let hF = parseIntValue(hE[ba]) | |
1439 | + | let hG = if ((size(hE) > 1)) | |
1440 | + | then parseIntValue(hE[bb]) | |
1441 | + | else hC | |
1442 | + | makeString([toString(hF), toString(hG), toString(((hz - hF) - hG)), toString(hz)], "_") | |
1443 | + | } | |
1444 | + | [hB[aV], if ((size(split(hB[aW], "_")) == aD)) | |
1445 | + | then hB[aW] | |
1446 | + | else "0_0_0_0_0_0", if ((size(split(hB[aX], "_")) == aD)) | |
1447 | + | then hB[aX] | |
1448 | + | else "0_0_0_0_0_0", hB[aY], hD] | |
1449 | + | } | |
1450 | + | ||
1451 | + | ||
1452 | + | func hH (hn) = { | |
1453 | + | let hI = hm(hn) | |
1454 | + | let hJ = parseIntValue(split(hn[aZ], "_")[ba]) | |
1455 | + | ((hk(hn[aV]) - hI) - hJ) | |
1456 | + | } | |
1457 | + | ||
1458 | + | ||
1459 | + | func hK (hL,hn,hM) = if ((size(hL) != 3)) | |
1458 | 1460 | then throw("cargoListStr should contain exactly 2 ':' separators") | |
1459 | 1461 | else { | |
1460 | - | let | |
1461 | - | let | |
1462 | - | let | |
1462 | + | let hN = split(hL[0], "_") | |
1463 | + | let hO = split(hL[1], "_") | |
1464 | + | let hP = if ((hL[2] == "")) | |
1463 | 1465 | then nil | |
1464 | - | else split_4C( | |
1465 | - | if ((size( | |
1466 | + | else split_4C(hL[2], "_") | |
1467 | + | if ((size(hN) != aD)) | |
1466 | 1468 | then throw("All 6 resources should be passed") | |
1467 | - | else if ((size( | |
1469 | + | else if ((size(hO) != aD)) | |
1468 | 1470 | then throw("All 6 materials should be passed") | |
1469 | 1471 | else { | |
1470 | - | let | |
1471 | - | let | |
1472 | - | let | |
1473 | - | let | |
1472 | + | let gv = hH(hn) | |
1473 | + | let hQ = split(hn[aW], "_") | |
1474 | + | let hR = split(hn[aX], "_") | |
1475 | + | let hS = if ((hn[aY] == "")) | |
1474 | 1476 | then nil | |
1475 | - | else split_4C( | |
1476 | - | let | |
1477 | - | let | |
1478 | - | let | |
1477 | + | else split_4C(hn[aY], "_") | |
1478 | + | let gt = split(hM[bf], "_") | |
1479 | + | let hT = split(hM[bg], "_") | |
1480 | + | let hU = if ((hM[bh] == "")) | |
1479 | 1481 | then nil | |
1480 | - | else split_4C( | |
1481 | - | func | |
1482 | - | let | |
1483 | - | let | |
1484 | - | let | |
1485 | - | let | |
1486 | - | if (( | |
1487 | - | then $Tuple4(( | |
1488 | - | else if (( | |
1489 | - | then if (( | |
1490 | - | then throw((((("Attempt to take " + | |
1491 | - | else $Tuple4(( | |
1492 | - | else if ((-( | |
1493 | - | then throw((((("Attempt to take " + toString(-( | |
1494 | - | else $Tuple4(( | |
1482 | + | else split_4C(hM[bh], "_") | |
1483 | + | func hV (en,hq) = { | |
1484 | + | let gg = en._1 | |
1485 | + | let hW = parseIntValue(hq) | |
1486 | + | let hX = parseIntValue(hQ[gg]) | |
1487 | + | let hY = parseIntValue(gt[gg]) | |
1488 | + | if ((hW == 0)) | |
1489 | + | then $Tuple4((gg + 1), (en._2 :+ hQ[gg]), (en._3 :+ gt[gg]), en._4) | |
1490 | + | else if ((hW > 0)) | |
1491 | + | then if ((hW > hY)) | |
1492 | + | then throw((((("Attempt to take " + hq) + " from backpack, but only ") + toString(hY)) + " available")) | |
1493 | + | else $Tuple4((gg + 1), (en._2 :+ toString((hX + hW))), (en._3 :+ toString((hY - hW))), (en._4 + hW)) | |
1494 | + | else if ((-(hW) > hX)) | |
1495 | + | then throw((((("Attempt to take " + toString(-(hW))) + " from warehouse, but only ") + toString(hX)) + " available")) | |
1496 | + | else $Tuple4((gg + 1), (en._2 :+ toString((hX + hW))), (en._3 :+ toString((hY - hW))), (en._4 + hW)) | |
1495 | 1497 | } | |
1496 | 1498 | ||
1497 | - | let | |
1498 | - | let | |
1499 | - | let | |
1500 | - | let | |
1501 | - | func | |
1502 | - | then | |
1503 | - | else | |
1504 | - | ||
1505 | - | func | |
1506 | - | then | |
1499 | + | let ey = { | |
1500 | + | let ep = hN | |
1501 | + | let eq = size(ep) | |
1502 | + | let er = $Tuple4(0, nil, nil, 0) | |
1503 | + | func es (et,eu) = if ((eu >= eq)) | |
1504 | + | then et | |
1505 | + | else hV(et, ep[eu]) | |
1506 | + | ||
1507 | + | func ev (et,eu) = if ((eu >= eq)) | |
1508 | + | then et | |
1507 | 1509 | else throw("List size exceeds 6") | |
1508 | 1510 | ||
1509 | - | | |
1511 | + | ev(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6) | |
1510 | 1512 | } | |
1511 | - | func | |
1512 | - | let | |
1513 | - | let | |
1514 | - | let | |
1515 | - | let | |
1516 | - | if (( | |
1517 | - | then $Tuple4(( | |
1518 | - | else if (( | |
1519 | - | then if (( | |
1520 | - | then throw((((("Attempt to take " + | |
1521 | - | else $Tuple4(( | |
1522 | - | else if ((-( | |
1523 | - | then throw((((("Attempt to take " + toString(-( | |
1524 | - | else $Tuple4(( | |
1513 | + | func hZ (en,hq) = { | |
1514 | + | let gg = en._1 | |
1515 | + | let hW = parseIntValue(hq) | |
1516 | + | let ia = parseIntValue(hR[gg]) | |
1517 | + | let ib = parseIntValue(hT[gg]) | |
1518 | + | if ((hW == 0)) | |
1519 | + | then $Tuple4((gg + 1), (en._2 :+ hR[gg]), (en._3 :+ hT[gg]), en._4) | |
1520 | + | else if ((hW > 0)) | |
1521 | + | then if ((hW > ib)) | |
1522 | + | then throw((((("Attempt to take " + hq) + " from backpack, but only ") + toString(ib)) + " available")) | |
1523 | + | else $Tuple4((gg + 1), (en._2 :+ toString((ia + hW))), (en._3 :+ toString((ib - hW))), (en._4 + hW)) | |
1524 | + | else if ((-(hW) > ia)) | |
1525 | + | then throw((((("Attempt to take " + toString(-(hW))) + " from warehouse, but only ") + toString(ia)) + " available")) | |
1526 | + | else $Tuple4((gg + 1), (en._2 :+ toString((ia + hW))), (en._3 :+ toString((ib - hW))), (en._4 + hW)) | |
1525 | 1527 | } | |
1526 | 1528 | ||
1527 | - | let | |
1528 | - | let | |
1529 | - | let | |
1530 | - | let | |
1531 | - | func | |
1532 | - | then | |
1533 | - | else | |
1534 | - | ||
1535 | - | func | |
1536 | - | then | |
1529 | + | let fM = { | |
1530 | + | let ep = hO | |
1531 | + | let eq = size(ep) | |
1532 | + | let er = $Tuple4(0, nil, nil, ey._4) | |
1533 | + | func hd (et,eu) = if ((eu >= eq)) | |
1534 | + | then et | |
1535 | + | else hZ(et, ep[eu]) | |
1536 | + | ||
1537 | + | func he (et,eu) = if ((eu >= eq)) | |
1538 | + | then et | |
1537 | 1539 | else throw("List size exceeds 6") | |
1538 | 1540 | ||
1539 | - | hd( | |
1541 | + | he(hd(hd(hd(hd(hd(hd(er, 0), 1), 2), 3), 4), 5), 6) | |
1540 | 1542 | } | |
1541 | - | func | |
1542 | - | let | |
1543 | - | let | |
1544 | - | let | |
1545 | - | then parseIntValue( | |
1543 | + | func ic (en,hq) = { | |
1544 | + | let gg = en._1 | |
1545 | + | let hW = parseIntValue(hq) | |
1546 | + | let id = if ((size(hS) > gg)) | |
1547 | + | then parseIntValue(hS[gg]) | |
1546 | 1548 | else 0 | |
1547 | - | let | |
1548 | - | then parseIntValue( | |
1549 | + | let ie = if ((size(hU) > gg)) | |
1550 | + | then parseIntValue(hU[gg]) | |
1549 | 1551 | else 0 | |
1550 | - | if (( | |
1551 | - | then $Tuple4(( | |
1552 | - | else if (( | |
1553 | - | then if (( | |
1554 | - | then throw((((("Attempt to take " + | |
1552 | + | if ((hW == 0)) | |
1553 | + | then $Tuple4((gg + 1), (en._2 :+ toString(id)), (en._3 :+ toString(ie)), en._4) | |
1554 | + | else if ((hW > 0)) | |
1555 | + | then if ((hW > ie)) | |
1556 | + | then throw((((("Attempt to take " + hq) + " from backpack, but only ") + toString(ie)) + " available")) | |
1555 | 1557 | else { | |
1556 | - | let | |
1557 | - | $Tuple4(( | |
1558 | + | let fp = (ed((id + hW), aU) - ed(id, aU)) | |
1559 | + | $Tuple4((gg + 1), (en._2 :+ toString((id + hW))), (en._3 :+ toString((ie - hW))), (en._4 + fp)) | |
1558 | 1560 | } | |
1559 | - | else if ((-( | |
1560 | - | then throw((((("Attempt to take " + toString(-( | |
1561 | + | else if ((-(hW) > id)) | |
1562 | + | then throw((((("Attempt to take " + toString(-(hW))) + " from warehouse, but only ") + toString(id)) + " available")) | |
1561 | 1563 | else { | |
1562 | - | let | |
1563 | - | $Tuple4(( | |
1564 | + | let fp = (ed((id + hW), aU) - ed(id, aU)) | |
1565 | + | $Tuple4((gg + 1), (en._2 :+ toString((id + hW))), (en._3 :+ toString((ie - hW))), (en._4 + fp)) | |
1564 | 1566 | } | |
1565 | 1567 | } | |
1566 | 1568 | ||
1567 | - | let | |
1569 | + | let fQ = if ((size(hP) != 0)) | |
1568 | 1570 | then { | |
1569 | - | let | |
1570 | - | let | |
1571 | - | let | |
1572 | - | func | |
1573 | - | then | |
1574 | - | else | |
1575 | - | ||
1576 | - | func | |
1577 | - | then | |
1571 | + | let ep = hP | |
1572 | + | let eq = size(ep) | |
1573 | + | let er = $Tuple4(0, nil, nil, fM._4) | |
1574 | + | func hg (et,eu) = if ((eu >= eq)) | |
1575 | + | then et | |
1576 | + | else ic(et, ep[eu]) | |
1577 | + | ||
1578 | + | func hh (et,eu) = if ((eu >= eq)) | |
1579 | + | then et | |
1578 | 1580 | else throw("List size exceeds 50") | |
1579 | 1581 | ||
1580 | - | hg( | |
1582 | + | hh(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(er, 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) | |
1581 | 1583 | } | |
1582 | - | else $Tuple4(0, | |
1583 | - | let | |
1584 | - | if (( | |
1585 | - | then throw((((("Attempt to put total " + toString( | |
1586 | - | else $Tuple7(makeString( | |
1584 | + | else $Tuple4(0, hS, hU, fM._4) | |
1585 | + | let if = fQ._4 | |
1586 | + | if ((if > gv)) | |
1587 | + | then throw((((("Attempt to put total " + toString(if)) + " stuff, but only ") + toString(gv)) + " warehouse space left")) | |
1588 | + | else $Tuple7(makeString(ey._2, "_"), makeString(fM._2, "_"), makeString_2C(fQ._2, "_"), makeString(ey._3, "_"), makeString(fM._3, "_"), makeString_2C(fQ._3, "_"), if) | |
1587 | 1589 | } | |
1588 | 1590 | } | |
1589 | 1591 | ||
1590 | 1592 | ||
1591 | - | func | |
1592 | - | let bI = toString( | |
1593 | - | let | |
1594 | - | let | |
1595 | - | let | |
1596 | - | let | |
1597 | - | let | |
1598 | - | let | |
1599 | - | let | |
1600 | - | let bm = calculateAssetId( | |
1601 | - | let | |
1602 | - | $Tuple2([IntegerEntry( | |
1603 | - | } | |
1604 | - | ||
1605 | - | ||
1606 | - | func | |
1593 | + | func ig (ih,ii) = { | |
1594 | + | let bI = toString(ih) | |
1595 | + | let ij = gB(toBigInt(ii)) | |
1596 | + | let ik = valueOrElse(getInteger(dL()), (dK + 1)) | |
1597 | + | let dP = toString(ik) | |
1598 | + | let gK = toInt((ij % dE)) | |
1599 | + | let gj = gI(ij, gK) | |
1600 | + | let da = aM[gK] | |
1601 | + | let il = Issue(ec(dP, "S"), makeString([dP, "S", gj, da], "_"), 1, 0, false) | |
1602 | + | let bm = calculateAssetId(il) | |
1603 | + | let im = toBase58String(bm) | |
1604 | + | $Tuple2([IntegerEntry(dL(), (ik + 1)), il, StringEntry(dO(dP), im), StringEntry(bl(im), bI), StringEntry(dR(dP), bI), IntegerEntry(bv(im), 0), IntegerEntry(dQ(im, bI), 0), ScriptTransfer(ih, 1, bm)], $Tuple2(im, da)) | |
1605 | + | } | |
1606 | + | ||
1607 | + | ||
1608 | + | func in (bI,io,ip) = if (!(sigVerify_8Kb(io, ip, dw))) | |
1607 | 1609 | then throw("signature does not match") | |
1608 | 1610 | else { | |
1609 | - | let | |
1610 | - | let | |
1611 | - | let | |
1612 | - | let | |
1613 | - | let | |
1614 | - | let | |
1615 | - | let | |
1616 | - | let | |
1617 | - | if (if (( | |
1611 | + | let eL = split_4C(toUtf8String(io), ";") | |
1612 | + | let iq = split_4C(eL[0], "|") | |
1613 | + | let ir = split(iq[dY], "_") | |
1614 | + | let is = parseIntValue(ir[0]) | |
1615 | + | let it = parseIntValue(ir[1]) | |
1616 | + | let iu = split(eL[1], ":") | |
1617 | + | let iv = iu[0] | |
1618 | + | let iw = parseIntValue(iq[dZ]) | |
1619 | + | if (if ((iw > (lastBlock.timestamp + dy))) | |
1618 | 1620 | then true | |
1619 | - | else ((lastBlock.timestamp - | |
1620 | - | then throw(((("signature outdated: logTime=" + toString( | |
1621 | + | else ((lastBlock.timestamp - dy) > iw)) | |
1622 | + | then throw(((("signature outdated: logTime=" + toString(iw)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
1621 | 1623 | else { | |
1622 | - | let | |
1623 | - | let | |
1624 | - | if (( | |
1625 | - | then throw(((("Tx ids don't match! In state: " + | |
1624 | + | let ix = iu[1] | |
1625 | + | let iy = valueOrElse(getString(dn(bI)), "") | |
1626 | + | if ((iy != ix)) | |
1627 | + | then throw(((("Tx ids don't match! In state: " + iy) + ", in msg: ") + ix)) | |
1626 | 1628 | else { | |
1627 | 1629 | let z = valueOrErrorMessage(getString(bE(bI)), "You don't have a duck staked") | |
1628 | - | let | |
1629 | - | let | |
1630 | - | let | |
1631 | - | if (( | |
1632 | - | then throw(((("oldHealth=" + toString( | |
1633 | - | else if ((0 >= | |
1630 | + | let iz = y(z) | |
1631 | + | let iA = ae(valueOrElse(getInteger(C(z)), 0)) | |
1632 | + | let iB = valueOrElse(getInteger(iz), iA) | |
1633 | + | if ((iB != is)) | |
1634 | + | then throw(((("oldHealth=" + toString(iB)) + " from state does not match one from flight log=") + toString(is))) | |
1635 | + | else if ((0 >= is)) | |
1634 | 1636 | then throw("You can't fly with zero health") | |
1635 | - | else if (!( | |
1637 | + | else if (!(fS(z))) | |
1636 | 1638 | then throw("Equipment incompatible") | |
1637 | 1639 | else { | |
1638 | - | let | |
1639 | - | then | |
1640 | + | let iC = if ((size(iq) > ea)) | |
1641 | + | then iq[ea] | |
1640 | 1642 | else "" | |
1641 | - | let | |
1642 | - | then | |
1643 | + | let iD = if ((size(iq) > eb)) | |
1644 | + | then iq[eb] | |
1643 | 1645 | else "" | |
1644 | - | let | |
1645 | - | then ( | |
1646 | + | let iE = if (if ((it > 0)) | |
1647 | + | then (iC == "$") | |
1646 | 1648 | else false) | |
1647 | - | then | |
1649 | + | then dg(invoke(cL, "sendUsdtPrize", [bI], nil)) | |
1648 | 1650 | else 0 | |
1649 | - | $Tuple5( | |
1651 | + | $Tuple5(it, z, iE, iv, iD) | |
1650 | 1652 | } | |
1651 | 1653 | } | |
1652 | 1654 | } | |
1653 | 1655 | } | |
1654 | 1656 | ||
1655 | 1657 | ||
1656 | - | func | |
1657 | - | let | |
1658 | - | let | |
1659 | - | let | |
1660 | - | let | |
1661 | - | ((aF + fraction(aF, (( | |
1662 | - | } | |
1663 | - | ||
1664 | - | ||
1665 | - | func | |
1666 | - | let | |
1667 | - | then $Tuple2( | |
1658 | + | func iF (O,iG) = { | |
1659 | + | let hy = valueOrElse(getInteger(bv(O)), 0) | |
1660 | + | let iH = valueOrElse(getInteger(bp(aC, O)), 0) | |
1661 | + | let iI = (hy / 6) | |
1662 | + | let iJ = (hy / 7) | |
1663 | + | ((aF + fraction(aF, ((hy + iI) + (2 * iJ)), 5)) + fraction(aF, iH, (iG * 5))) | |
1664 | + | } | |
1665 | + | ||
1666 | + | ||
1667 | + | func iK (b,iL,iM) = { | |
1668 | + | let iN = if ((iL == dV)) | |
1669 | + | then $Tuple2(iM, valueOrElse(getString(bE(b)), "")) | |
1668 | 1670 | else { | |
1669 | 1671 | let z = valueOrErrorMessage(getString(bE(b)), "You don't have a duck staked") | |
1670 | - | let | |
1671 | - | let ca = split(value( | |
1672 | + | let iO = valueOrElse(getString(bG(z)), aI) | |
1673 | + | let ca = split(value(iO), "_") | |
1672 | 1674 | if ((ca[bj] != "L")) | |
1673 | 1675 | then throw((("Duck location type is " + ca[bj]) + ", but should be L")) | |
1674 | 1676 | else $Tuple2(ca[bk], z) | |
1675 | 1677 | } | |
1676 | - | let O = | |
1677 | - | let | |
1678 | - | let | |
1679 | - | let | |
1680 | - | let | |
1681 | - | let | |
1682 | - | if (( | |
1678 | + | let O = iN._1 | |
1679 | + | let iP = iN._2 | |
1680 | + | let iQ = value(assetInfo(fromBase58String(O))) | |
1681 | + | let iR = bo(O) | |
1682 | + | let iS = valueOrErrorMessage(getInteger(iR), (("Land " + iQ.name) + " is not staked")) | |
1683 | + | let iT = valueOrErrorMessage(getString(bl(O)), (("NFT " + iQ.name) + " is orphaned")) | |
1684 | + | if ((iT != b)) | |
1683 | 1685 | then throw((aA + " is not yours")) | |
1684 | 1686 | else { | |
1685 | - | let | |
1686 | - | $Tuple4( | |
1687 | - | } | |
1688 | - | } | |
1689 | - | ||
1690 | - | ||
1691 | - | func | |
1687 | + | let iU = split(iQ.description, "_") | |
1688 | + | $Tuple4(iP, O, iU, iS) | |
1689 | + | } | |
1690 | + | } | |
1691 | + | ||
1692 | + | ||
1693 | + | func iV (b,ee,iL,iM) = if ((0 > ee)) | |
1692 | 1694 | then throw("Negative amount") | |
1693 | 1695 | else { | |
1694 | - | let | |
1695 | - | let | |
1696 | - | let | |
1697 | - | let | |
1698 | - | if ((0 > | |
1699 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1696 | + | let fw = iK(b, iL, iM) | |
1697 | + | let dk = fw._3[cR] | |
1698 | + | let gc = gi(fw._3[cS]) | |
1699 | + | let gm = (lastBlock.timestamp - fw._4) | |
1700 | + | if ((0 > gm)) | |
1701 | + | then throw(((("Saved timestamp is in future, saved = " + toString(fw._4)) + ", current = ") + toString(lastBlock.timestamp))) | |
1700 | 1702 | else { | |
1701 | - | let | |
1702 | - | let | |
1703 | - | let | |
1704 | - | if (( | |
1705 | - | then throw(((("Not enough resources, available = " + toString( | |
1703 | + | let iG = dj(dk) | |
1704 | + | let iW = iF(fw._2, iG) | |
1705 | + | let iX = fraction(gm, (iW * iG), aG) | |
1706 | + | if ((ee > iX)) | |
1707 | + | then throw(((("Not enough resources, available = " + toString(iX)) + ", requested = ") + toString(ee))) | |
1706 | 1708 | else { | |
1707 | - | let | |
1708 | - | let | |
1709 | - | let | |
1710 | - | let | |
1711 | - | let | |
1712 | - | let | |
1713 | - | let | |
1714 | - | let | |
1715 | - | let | |
1716 | - | if (if (( | |
1717 | - | then ( | |
1709 | + | let iY = fraction((iX - ee), aG, (iW * iG)) | |
1710 | + | let iZ = (lastBlock.timestamp - iY) | |
1711 | + | let hx = (iG / cq) | |
1712 | + | let gu = gq(gc, (gm - iY), hx, iW) | |
1713 | + | let hw = bu(fw._2) | |
1714 | + | let hy = valueOrElse(getInteger(bv(fw._2)), 0) | |
1715 | + | let hn = hv(hw, hx, hy) | |
1716 | + | let hE = split(hn[aZ], "_") | |
1717 | + | let gv = parseIntValue(hE[bc]) | |
1718 | + | if (if ((iL == dV)) | |
1719 | + | then (ee > gv) | |
1718 | 1720 | else false) | |
1719 | - | then throw((("Only " + toString( | |
1721 | + | then throw((("Only " + toString(gv)) + " space left in warehouse")) | |
1720 | 1722 | else { | |
1721 | - | let | |
1722 | - | let | |
1723 | - | let | |
1724 | - | let | |
1725 | - | let | |
1726 | - | then $Tuple4( | |
1727 | - | else if (( | |
1728 | - | then $Tuple4( | |
1723 | + | let hj = bF(fw._1) | |
1724 | + | let hM = hi(hj) | |
1725 | + | let gt = split(hM[bf], "_") | |
1726 | + | let gs = split(hn[aW], "_") | |
1727 | + | let ja = if ((iL == dV)) | |
1728 | + | then $Tuple4(gk(gs, gc, (gm - iY), hx, iW), hM[bf], (parseIntValue(hE[bb]) + gu._2), (parseIntValue(hE[bc]) - gu._2)) | |
1729 | + | else if ((iL == dW)) | |
1730 | + | then $Tuple4(hn[aW], gk(gt, gc, (gm - iY), hx, iW), parseIntValue(hE[bb]), parseIntValue(hE[bc])) | |
1729 | 1731 | else { | |
1730 | - | let | |
1731 | - | let | |
1732 | - | $Tuple4( | |
1732 | + | let jb = gr(gs, gt, gu, gv) | |
1733 | + | let jc = min([parseIntValue(hE[bc]), gu._2]) | |
1734 | + | $Tuple4(jb._1, jb._2, (parseIntValue(hE[bb]) + jc), (parseIntValue(hE[bc]) - jc)) | |
1733 | 1735 | } | |
1734 | - | let | |
1735 | - | let | |
1736 | - | let | |
1737 | - | let | |
1738 | - | $Tuple5([IntegerEntry(bo( | |
1736 | + | let jd = ja._1 | |
1737 | + | let je = ja._2 | |
1738 | + | let jf = ja._3 | |
1739 | + | let jg = ja._4 | |
1740 | + | $Tuple5([IntegerEntry(bo(fw._2), iZ), IntegerEntry(br(aA, fw._2, b), iZ)], hj, [hM[be], je, hM[bg], hM[bh]], hw, [hn[aV], jd, hn[aX], hn[aY], makeString([hE[ba], toString(jf), toString(jg), hE[bd]], "_")]) | |
1739 | 1741 | } | |
1740 | 1742 | } | |
1741 | 1743 | } | |
1742 | 1744 | } | |
1743 | 1745 | ||
1744 | 1746 | ||
1745 | - | func | |
1746 | - | let | |
1747 | - | let | |
1748 | - | let | |
1749 | - | | |
1750 | - | } | |
1751 | - | ||
1752 | - | ||
1753 | - | func | |
1754 | - | let b = toString( | |
1755 | - | let | |
1756 | - | let | |
1757 | - | let | |
1758 | - | let | |
1747 | + | func jh (b,O,iG,iL) = { | |
1748 | + | let iR = bo(O) | |
1749 | + | let iS = value(getInteger(iR)) | |
1750 | + | let iX = (fraction((lastBlock.timestamp - iS), iF(O, iG), aG) * iG) | |
1751 | + | iV(b, iX, iL, O) | |
1752 | + | } | |
1753 | + | ||
1754 | + | ||
1755 | + | func ji (eA,ih,jj,O) = { | |
1756 | + | let b = toString(ih) | |
1757 | + | let fw = iK(b, dX, O) | |
1758 | + | let iG = dj(fw._3[cR]) | |
1759 | + | let jk = bv(fw._2) | |
1760 | + | let jl = valueOrElse(getInteger(jk), 0) | |
1759 | 1761 | if (if (!(cf)) | |
1760 | - | then ( | |
1762 | + | then (jl >= 3) | |
1761 | 1763 | else false) | |
1762 | 1764 | then throw("Currently max infrastructure level = 3") | |
1763 | 1765 | else { | |
1764 | - | let | |
1765 | - | let aj = ( | |
1766 | + | let jm = ((sqrt(iG, 0, 0, DOWN) / 5) + 2) | |
1767 | + | let aj = (jl + 1) | |
1766 | 1768 | if (if (cf) | |
1767 | - | then (aj > | |
1769 | + | then (aj > jm) | |
1768 | 1770 | else false) | |
1769 | - | then throw(("Currently max infrastructure level = " + toString( | |
1771 | + | then throw(("Currently max infrastructure level = " + toString(jm))) | |
1770 | 1772 | else { | |
1771 | - | let | |
1772 | - | if (if (!( | |
1773 | - | then ( | |
1773 | + | let jn = fraction(dB, (iG * aj), cq) | |
1774 | + | if (if (!(eA)) | |
1775 | + | then (jj != jn) | |
1774 | 1776 | else false) | |
1775 | - | then throw(("Payment attached should be " + toString( | |
1777 | + | then throw(("Payment attached should be " + toString(jn))) | |
1776 | 1778 | else { | |
1777 | - | let | |
1778 | - | let | |
1779 | - | let | |
1780 | - | let | |
1781 | - | let | |
1782 | - | let | |
1783 | - | let | |
1784 | - | let | |
1785 | - | let | |
1786 | - | let | |
1787 | - | let | |
1788 | - | let | |
1789 | - | $Tuple3(([IntegerEntry( | |
1779 | + | let hj = bF(fw._1) | |
1780 | + | let hM = hi(hj) | |
1781 | + | let jo = split(hM[bg], "_") | |
1782 | + | let jp = fraction(cl, (iG * aj), cq) | |
1783 | + | let jq = makeString(ez(eA, jo, jp), "_") | |
1784 | + | let jr = jh(b, fw._2, iG, dX) | |
1785 | + | let js = jr._5 | |
1786 | + | let jt = hk(js[aV]) | |
1787 | + | let ju = makeString([split(js[aV], "_")[0], toString(aj)], "_") | |
1788 | + | let jv = hk(ju) | |
1789 | + | let hE = split(js[aZ], "_") | |
1790 | + | let jw = makeString([hE[ba], hE[bb], toString(((parseIntValue(hE[bc]) + jv) - jt)), toString(jv)], "_") | |
1791 | + | $Tuple3(([IntegerEntry(jk, aj), IntegerEntry(dQ(fw._2, b), aj), StringEntry(hj, makeString([hM[be], jr._3[bf], jq, hM[bh]], ":")), StringEntry(jr._4, makeString([ju, js[aW], js[aX], js[aY], jw], ":"))] ++ jr._1), aj, jp) | |
1790 | 1792 | } | |
1791 | 1793 | } | |
1792 | 1794 | } | |
1793 | 1795 | } | |
1794 | 1796 | ||
1795 | 1797 | ||
1796 | - | func | |
1797 | - | let | |
1798 | - | let | |
1799 | - | let ad = valueOrElse(getInteger(al, | |
1800 | - | let ai = (ad + | |
1801 | - | let | |
1802 | - | let | |
1803 | - | $Tuple2([IntegerEntry( | |
1804 | - | } | |
1805 | - | ||
1806 | - | ||
1807 | - | func | |
1808 | - | let | |
1809 | - | let | |
1810 | - | let ad = valueOrElse(getInteger(al, | |
1811 | - | let ai = (ad + | |
1812 | - | let | |
1813 | - | let | |
1814 | - | $Tuple2([IntegerEntry( | |
1815 | - | } | |
1816 | - | ||
1817 | - | ||
1818 | - | func | |
1798 | + | func jx (z,jy) = { | |
1799 | + | let jz = C(z) | |
1800 | + | let jA = B(z) | |
1801 | + | let ad = valueOrElse(getInteger(al, jA), 0) | |
1802 | + | let ai = (ad + jy) | |
1803 | + | let jB = ag(valueOrElse(getInteger(al, jz), 0), ai) | |
1804 | + | let jC = D(z) | |
1805 | + | $Tuple2([IntegerEntry(jz, jB[0]), IntegerEntry(jA, ai), IntegerEntry(jC, (valueOrElse(getInteger(jC), 0) + jB[1]))], ai) | |
1806 | + | } | |
1807 | + | ||
1808 | + | ||
1809 | + | func jD (b,jy) = { | |
1810 | + | let jz = G(b) | |
1811 | + | let jA = F(b) | |
1812 | + | let ad = valueOrElse(getInteger(al, jA), 0) | |
1813 | + | let ai = (ad + jy) | |
1814 | + | let jB = ag(valueOrElse(getInteger(al, jz), 0), ai) | |
1815 | + | let jC = H(b) | |
1816 | + | $Tuple2([IntegerEntry(jz, jB[0]), IntegerEntry(jA, ai), IntegerEntry(jC, (valueOrElse(getInteger(jC), 0) + jB[1]))], ai) | |
1817 | + | } | |
1818 | + | ||
1819 | + | ||
1820 | + | func jE (b) = { | |
1819 | 1821 | let z = valueOrErrorMessage(getString(bE(b)), "You don't have a duck staked") | |
1820 | - | let | |
1821 | - | let | |
1822 | - | if (!(isDefined( | |
1822 | + | let jF = bz(b) | |
1823 | + | let jG = getString(jF) | |
1824 | + | if (!(isDefined(jG))) | |
1823 | 1825 | then throw("You are not eligible for ONBOARD artifact") | |
1824 | 1826 | else { | |
1825 | - | let | |
1826 | - | let | |
1827 | - | if (isDefined( | |
1828 | - | then throw(("You already used your ONBOARD artifact on duck " + value( | |
1827 | + | let jH = bB(b) | |
1828 | + | let jI = getString(jH) | |
1829 | + | if (isDefined(jI)) | |
1830 | + | then throw(("You already used your ONBOARD artifact on duck " + value(jI))) | |
1829 | 1831 | else { | |
1830 | - | let | |
1831 | - | let | |
1832 | - | if (isDefined( | |
1833 | - | then throw(((("The duck " + z) + " already got points from ONBOARD artifact from user ") + value( | |
1834 | - | else ([StringEntry( | |
1832 | + | let jJ = bA(z) | |
1833 | + | let jK = getString(jJ) | |
1834 | + | if (isDefined(jK)) | |
1835 | + | then throw(((("The duck " + z) + " already got points from ONBOARD artifact from user ") + value(jK))) | |
1836 | + | else ([StringEntry(jH, z), StringEntry(jJ, b)] ++ jx(z, aa)._1) | |
1835 | 1837 | } | |
1836 | 1838 | } | |
1837 | 1839 | } | |
1838 | 1840 | ||
1839 | 1841 | ||
1840 | - | func | |
1841 | - | let | |
1842 | - | let O = | |
1843 | - | let | |
1844 | - | let | |
1845 | - | if ((valueOrElse(getInteger( | |
1842 | + | func jL (b,iM) = { | |
1843 | + | let fw = iK(b, dX, iM) | |
1844 | + | let O = fw._2 | |
1845 | + | let iG = dj(fw._3[cR]) | |
1846 | + | let jM = bp(aC, O) | |
1847 | + | if ((valueOrElse(getInteger(jM), 0) > 0)) | |
1846 | 1848 | then throw("Presale artifact is already activated") | |
1847 | - | else if ((parseIntValue( | |
1849 | + | else if ((parseIntValue(fw._3[cQ]) > dK)) | |
1848 | 1850 | then throw((((aA + " ") + O) + " is not eligible for presale artifact")) | |
1849 | 1851 | else { | |
1850 | - | let | |
1851 | - | ((( | |
1852 | + | let jr = jh(b, O, iG, dX) | |
1853 | + | (((jr._1 :+ IntegerEntry(jM, iG)) :+ StringEntry(jr._2, makeString(jr._3, ":"))) :+ StringEntry(jr._4, makeString(jr._5, ":"))) | |
1852 | 1854 | } | |
1853 | 1855 | } | |
1854 | 1856 | ||
1855 | 1857 | ||
1856 | - | func | |
1857 | - | let bZ = valueOrElse(getInteger( | |
1858 | - | let | |
1858 | + | func jN (z) = { | |
1859 | + | let bZ = valueOrElse(getInteger(cP, bK), 0) | |
1860 | + | let iO = split(valueOrElse(getString(bG(z)), aI), "_") | |
1859 | 1861 | let av = lastBlock.timestamp | |
1860 | - | let cb = bT( | |
1862 | + | let cb = bT(cP, bZ) | |
1861 | 1863 | let bV = cb[bP] | |
1862 | 1864 | let bW = cb[bQ] | |
1863 | - | if (( | |
1865 | + | if ((iO[bj] != "T")) | |
1864 | 1866 | then false | |
1865 | - | else if (if (if ((parseIntValue( | |
1867 | + | else if (if (if ((parseIntValue(iO[bi]) == bZ)) | |
1866 | 1868 | then (bW[bS] == "INPROGRESS") | |
1867 | 1869 | else false) | |
1868 | 1870 | then (parseIntValue(bV[bR]) > av) | |
1869 | 1871 | else false) | |
1870 | 1872 | then throw("Your duck is taking part in the tournament") | |
1871 | - | else | |
1872 | - | } | |
1873 | - | ||
1874 | - | ||
1875 | - | func | |
1873 | + | else di(invoke(this, "exitTournamentInternal", [z], nil)) | |
1874 | + | } | |
1875 | + | ||
1876 | + | ||
1877 | + | func jO (jP,aj,jQ,b,jR,jS) = { | |
1876 | 1878 | let z = valueOrErrorMessage(getString(bE(b)), "You don't have a duck staked") | |
1877 | - | if ( | |
1879 | + | if (jN(z)) | |
1878 | 1880 | then throw("mergeInternal_checkTournament") | |
1879 | 1881 | else { | |
1880 | - | func | |
1881 | - | let | |
1882 | - | let | |
1883 | - | let | |
1884 | - | let | |
1885 | - | if (( | |
1882 | + | func jT (en,O) = { | |
1883 | + | let iQ = value(assetInfo(fromBase58String(O))) | |
1884 | + | let iR = bo(O) | |
1885 | + | let iS = valueOrErrorMessage(getInteger(iR), (("NFT " + iQ.name) + " is not staked")) | |
1886 | + | let iT = valueOrErrorMessage(getString(bl(O)), (("NFT " + iQ.name) + " is orphaned")) | |
1887 | + | if ((iT != b)) | |
1886 | 1888 | then throw((aA + " is not yours")) | |
1887 | 1889 | else { | |
1888 | - | let | |
1889 | - | let | |
1890 | - | if (if (( | |
1891 | - | then ( | |
1890 | + | let iU = split(iQ.description, "_") | |
1891 | + | let da = iU[cT] | |
1892 | + | if (if ((en._3 != "")) | |
1893 | + | then (en._3 != da) | |
1892 | 1894 | else false) | |
1893 | 1895 | then throw("Lands should be on the same continent to merge") | |
1894 | 1896 | else { | |
1895 | - | let | |
1896 | - | let | |
1897 | - | let | |
1898 | - | let | |
1899 | - | let | |
1900 | - | let | |
1901 | - | let | |
1902 | - | let | |
1903 | - | let | |
1904 | - | if (("S" == | |
1897 | + | let dk = iU[cR] | |
1898 | + | let jU = en._1 | |
1899 | + | let gg = valueOrErrorMessage(indexOf(jU, dk), "You haven't passed all the lands needed") | |
1900 | + | let jV = (take(jU, gg) + drop(jU, (gg + 1))) | |
1901 | + | let iG = dj(dk) | |
1902 | + | let jW = (en._2 + valueOrElse(getInteger(bp(aC, O)), 0)) | |
1903 | + | let hy = valueOrElse(getInteger(bv(O)), 0) | |
1904 | + | let jX = { | |
1905 | + | let cj = dk | |
1906 | + | if (("S" == cj)) | |
1905 | 1907 | then 3 | |
1906 | - | else if (("M" == | |
1908 | + | else if (("M" == cj)) | |
1907 | 1909 | then 4 | |
1908 | - | else if (("L" == | |
1910 | + | else if (("L" == cj)) | |
1909 | 1911 | then 5 | |
1910 | - | else if (("XL" == | |
1912 | + | else if (("XL" == cj)) | |
1911 | 1913 | then 6 | |
1912 | 1914 | else throw("Only S, M, L, XL can merge") | |
1913 | 1915 | } | |
1914 | - | if (( | |
1916 | + | if ((hy != jX)) | |
1915 | 1917 | then throw("All lands should be maxed to merge") | |
1916 | 1918 | else { | |
1917 | - | let | |
1918 | - | let | |
1919 | - | let | |
1920 | - | if ((0 > | |
1921 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1919 | + | let dP = iU[cQ] | |
1920 | + | let gc = gi(iU[cS]) | |
1921 | + | let gm = (lastBlock.timestamp - iS) | |
1922 | + | if ((0 > gm)) | |
1923 | + | then throw(((("Saved timestamp is in future, saved = " + toString(iS)) + ", current = ") + toString(lastBlock.timestamp))) | |
1922 | 1924 | else { | |
1923 | - | let | |
1924 | - | let | |
1925 | - | let | |
1926 | - | let | |
1927 | - | let | |
1928 | - | let | |
1929 | - | let | |
1930 | - | let | |
1931 | - | if (!(isDefined( | |
1925 | + | let iW = iF(O, iG) | |
1926 | + | let hx = (iG / cq) | |
1927 | + | let je = gk(split(en._4, "_"), gc, gm, hx, iW) | |
1928 | + | let ex = ga(en._6, gc, hx, -1) | |
1929 | + | let jY = ga(en._10, gc, hx, -1) | |
1930 | + | let gQ = ga(en._9, gc, hx, 1) | |
1931 | + | let jZ = en._7 | |
1932 | + | let cK = indexOf(jZ, O) | |
1933 | + | if (!(isDefined(cK))) | |
1932 | 1934 | then throw(("Your staked lands don't contain " + O)) | |
1933 | 1935 | else { | |
1934 | - | let | |
1935 | - | let | |
1936 | - | $Tuple10( | |
1937 | - | then [DeleteEntry( | |
1938 | - | else nil)), | |
1936 | + | let ka = bn(O) | |
1937 | + | let kb = valueOrElse(getString(ka), "") | |
1938 | + | $Tuple10(jV, jW, da, je, ((((((((((((en._5 :+ DeleteEntry(bo(O))) :+ DeleteEntry(br(aA, O, b))) :+ DeleteEntry(dO(dP))) :+ DeleteEntry(bl(O))) :+ DeleteEntry(bv(O))) :+ DeleteEntry(dQ(O, b))) :+ DeleteEntry(bp(aC, O))) :+ DeleteEntry(dR(dP))) :+ DeleteEntry(bu(O))) :+ DeleteEntry(ka)) :+ Burn(fromBase58String(O), 1)) ++ (if ((kb != "")) | |
1939 | + | then [DeleteEntry(dM(kb))] | |
1940 | + | else nil)), ex, removeByIndex(jZ, value(cK)), (en._8 + iG), gQ, jY) | |
1939 | 1941 | } | |
1940 | 1942 | } | |
1941 | 1943 | } | |
1943 | 1945 | } | |
1944 | 1946 | } | |
1945 | 1947 | ||
1946 | - | let | |
1947 | - | let | |
1948 | - | let | |
1949 | - | let | |
1950 | - | let | |
1951 | - | let | |
1952 | - | then split_51C(value( | |
1948 | + | let hj = bF(z) | |
1949 | + | let hM = hi(hj) | |
1950 | + | let gb = split(valueOrElse(getString(cY()), "0_0_0_0_0_0"), "_") | |
1951 | + | let kc = db(b) | |
1952 | + | let kd = getString(kc) | |
1953 | + | let ke = if (isDefined(kd)) | |
1954 | + | then split_51C(value(kd), "_") | |
1953 | 1955 | else nil | |
1954 | - | let | |
1955 | - | let | |
1956 | - | let | |
1957 | - | let | |
1958 | - | let | |
1959 | - | let | |
1960 | - | func | |
1961 | - | then | |
1962 | - | else | |
1963 | - | ||
1964 | - | func | |
1965 | - | then | |
1956 | + | let kf = split(value(assetInfo(fromBase58String(jR[0]))).description, "_")[cT] | |
1957 | + | let kg = split(valueOrElse(getString(cZ(kf)), "0_0_0_0_0_0"), "_") | |
1958 | + | let ey = { | |
1959 | + | let ep = jR | |
1960 | + | let eq = size(ep) | |
1961 | + | let er = $Tuple10(jQ, 0, "", hM[bf], nil, gb, ke, 0, split("0_0_0_0_0_0", "_"), kg) | |
1962 | + | func es (et,eu) = if ((eu >= eq)) | |
1963 | + | then et | |
1964 | + | else jT(et, ep[eu]) | |
1965 | + | ||
1966 | + | func ev (et,eu) = if ((eu >= eq)) | |
1967 | + | then et | |
1966 | 1968 | else throw("List size exceeds 5") | |
1967 | 1969 | ||
1968 | - | | |
1970 | + | ev(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5) | |
1969 | 1971 | } | |
1970 | - | let | |
1971 | - | let | |
1972 | - | let | |
1973 | - | let | |
1974 | - | let | |
1975 | - | let | |
1976 | - | let bm = calculateAssetId( | |
1977 | - | let | |
1978 | - | let | |
1979 | - | let | |
1980 | - | let | |
1981 | - | $Tuple2(((((((((((((((( | |
1982 | - | then StringEntry( | |
1983 | - | else DeleteEntry( | |
1972 | + | let da = ey._3 | |
1973 | + | let gK = valueOrErrorMessage(indexOf(aM, da), ("Unknown continent: " + da)) | |
1974 | + | let gj = gP(ey._9, (dj(jP) / cq)) | |
1975 | + | let ik = valueOrElse(getInteger(dL()), (dK + 1)) | |
1976 | + | let kh = toString(ik) | |
1977 | + | let il = Issue(ec(kh, jP), makeString([kh, jP, gj, da], "_"), 1, 0, false) | |
1978 | + | let bm = calculateAssetId(il) | |
1979 | + | let ki = toBase58String(bm) | |
1980 | + | let jq = makeString(ez((jS > 0), split(hM[bg], "_"), jS), "_") | |
1981 | + | let kj = dc(b) | |
1982 | + | let kk = valueOrElse(getInteger(kj), 0) | |
1983 | + | $Tuple2((((((((((((((((ey._5 :+ (if ((size(ey._7) > 0)) | |
1984 | + | then StringEntry(kc, makeString_11C(ey._7, "_")) | |
1985 | + | else DeleteEntry(kc))) :+ IntegerEntry(kj, if ((ey._8 > kk)) | |
1984 | 1986 | then 0 | |
1985 | - | else ( | |
1986 | - | } | |
1987 | - | } | |
1988 | - | ||
1989 | - | ||
1990 | - | func | |
1991 | - | ||
1992 | - | ||
1993 | - | func | |
1994 | - | ||
1995 | - | ||
1996 | - | func | |
1997 | - | ||
1998 | - | ||
1999 | - | func | |
2000 | - | ||
2001 | - | ||
2002 | - | func | |
2003 | - | let | |
2004 | - | if ((4 == | |
2005 | - | then | |
2006 | - | else if ((3 == | |
2007 | - | then | |
2008 | - | else if ((5 == | |
2009 | - | then | |
2010 | - | else if ((2 == | |
2011 | - | then | |
1987 | + | else (kk - ey._8))) :+ IntegerEntry(dL(), (ik + 1))) :+ il) :+ StringEntry(dO(kh), ki)) :+ StringEntry(bl(ki), b)) :+ StringEntry(dR(kh), b)) :+ IntegerEntry(bp(aC, ki), ey._2)) :+ IntegerEntry(bv(ki), aj)) :+ IntegerEntry(dQ(ki, b), aj)) :+ StringEntry(hj, makeString([hM[be], ey._4, jq, hM[bh]], ":"))) :+ StringEntry(cY(), makeString(ey._6, "_"))) :+ StringEntry(cZ(da), makeString(ey._10, "_"))) :+ StringEntry(bG(z), makeString([da, "L", ki], "_"))) :+ ScriptTransfer(addressFromStringValue(b), 1, bm)), ki) | |
1988 | + | } | |
1989 | + | } | |
1990 | + | ||
1991 | + | ||
1992 | + | func kl (b,jR) = jO("M", 3, "SSSS", b, jR, 0) | |
1993 | + | ||
1994 | + | ||
1995 | + | func km (b,jR) = jO("L", 4, "SMM", b, jR, (cl * 4)) | |
1996 | + | ||
1997 | + | ||
1998 | + | func kn (b,jR) = jO("XL", 5, "SSSML", b, jR, (cl * 47)) | |
1999 | + | ||
2000 | + | ||
2001 | + | func ko (b,jR) = jO("XXL", 6, "LXL", b, jR, (cl * 54)) | |
2002 | + | ||
2003 | + | ||
2004 | + | func kp (b,jR) = { | |
2005 | + | let cj = size(jR) | |
2006 | + | if ((4 == cj)) | |
2007 | + | then kl(b, jR) | |
2008 | + | else if ((3 == cj)) | |
2009 | + | then km(b, jR) | |
2010 | + | else if ((5 == cj)) | |
2011 | + | then kn(b, jR) | |
2012 | + | else if ((2 == cj)) | |
2013 | + | then ko(b, jR) | |
2012 | 2014 | else throw("Unknown merge") | |
2013 | 2015 | } | |
2014 | 2016 | ||
2015 | 2017 | ||
2016 | - | func | |
2017 | - | then valueOrElse(getBoolean( | |
2018 | + | func kq (gg) = if (if ((gg.originCaller != cL)) | |
2019 | + | then valueOrElse(getBoolean(dm()), false) | |
2018 | 2020 | else false) | |
2019 | 2021 | then throw("Contracts are under maintenance") | |
2020 | - | else StringEntry( | |
2021 | - | ||
2022 | - | ||
2023 | - | @Callable( | |
2024 | - | func constructorV1 ( | |
2022 | + | else StringEntry(dn(toString(gg.originCaller)), toBase58String(gg.transactionId)) | |
2023 | + | ||
2024 | + | ||
2025 | + | @Callable(gg) | |
2026 | + | func constructorV1 (kr) = if ((gg.caller != this)) | |
2025 | 2027 | then throw("Permission denied") | |
2026 | - | else [StringEntry( | |
2027 | - | ||
2028 | - | ||
2029 | - | ||
2030 | - | @Callable( | |
2031 | - | func setBlocked ( | |
2028 | + | else [StringEntry(cF(), kr)] | |
2029 | + | ||
2030 | + | ||
2031 | + | ||
2032 | + | @Callable(gg) | |
2033 | + | func setBlocked (ks) = if ((gg.caller != this)) | |
2032 | 2034 | then throw("permission denied") | |
2033 | - | else [BooleanEntry( | |
2034 | - | ||
2035 | - | ||
2036 | - | ||
2037 | - | @Callable( | |
2035 | + | else [BooleanEntry(dm(), ks)] | |
2036 | + | ||
2037 | + | ||
2038 | + | ||
2039 | + | @Callable(gg) | |
2038 | 2040 | func stakeLand () = { | |
2039 | - | let | |
2040 | - | if ((size( | |
2041 | + | let kt = kq(gg) | |
2042 | + | if ((size(gg.payments) != 1)) | |
2041 | 2043 | then throw("Exactly one payment required") | |
2042 | 2044 | else { | |
2043 | - | let | |
2044 | - | let bm = value( | |
2045 | - | let | |
2046 | - | if (( | |
2045 | + | let ku = value(gg.payments[0]) | |
2046 | + | let bm = value(ku.assetId) | |
2047 | + | let cx = toString(gg.caller) | |
2048 | + | if ((ku.amount != 1)) | |
2047 | 2049 | then throw((("NFT " + aA) + " token should be attached as payment")) | |
2048 | 2050 | else { | |
2049 | - | let | |
2050 | - | if (( | |
2051 | + | let iQ = value(assetInfo(bm)) | |
2052 | + | if ((iQ.issuer != this)) | |
2051 | 2053 | then throw("Unknown issuer of token") | |
2052 | - | else if (!(contains( | |
2054 | + | else if (!(contains(iQ.name, aA))) | |
2053 | 2055 | then throw((("Only NFT " + aA) + " tokens are accepted")) | |
2054 | 2056 | else { | |
2055 | - | let | |
2056 | - | let | |
2057 | - | then dropRight( | |
2058 | - | else if (contains( | |
2059 | - | then dropRight( | |
2060 | - | else dropRight( | |
2061 | - | if (!(isDefined(parseInt( | |
2062 | - | then throw(("Cannot parse land number from " + | |
2057 | + | let kv = drop(iQ.name, 4) | |
2058 | + | let dP = if (contains(kv, "XXL")) | |
2059 | + | then dropRight(kv, 3) | |
2060 | + | else if (contains(kv, "XL")) | |
2061 | + | then dropRight(kv, 2) | |
2062 | + | else dropRight(kv, 1) | |
2063 | + | if (!(isDefined(parseInt(dP)))) | |
2064 | + | then throw(("Cannot parse land number from " + iQ.name)) | |
2063 | 2065 | else { | |
2064 | 2066 | let O = toBase58String(bm) | |
2065 | - | let | |
2066 | - | if (isDefined(getInteger( | |
2067 | - | then throw((("NFT " + | |
2067 | + | let iR = bo(O) | |
2068 | + | if (isDefined(getInteger(iR))) | |
2069 | + | then throw((("NFT " + iQ.name) + " is already staked")) | |
2068 | 2070 | else { | |
2069 | - | let | |
2070 | - | let | |
2071 | - | let | |
2072 | - | let | |
2073 | - | let | |
2074 | - | let | |
2075 | - | let | |
2076 | - | let | |
2077 | - | let | |
2078 | - | let | |
2079 | - | let | |
2080 | - | then split_51C(value( | |
2071 | + | let iU = split(iQ.description, "_") | |
2072 | + | let gc = gi(iU[cS]) | |
2073 | + | let iG = dj(iU[cR]) | |
2074 | + | let hx = (iG / cq) | |
2075 | + | let ex = gh(gc, hx, 1) | |
2076 | + | let kw = cZ(iU[cT]) | |
2077 | + | let kg = split(valueOrElse(getString(kw), "0_0_0_0_0_0"), "_") | |
2078 | + | let kx = makeString(ga(kg, gc, hx, 1), "_") | |
2079 | + | let kc = db(cx) | |
2080 | + | let kd = getString(kc) | |
2081 | + | let jZ = if (isDefined(kd)) | |
2082 | + | then split_51C(value(kd), "_") | |
2081 | 2083 | else nil | |
2082 | - | if (containsElement( | |
2084 | + | if (containsElement(jZ, O)) | |
2083 | 2085 | then throw(("Your staked lands already contain " + O)) | |
2084 | - | else if ((size( | |
2086 | + | else if ((size(jZ) >= aE)) | |
2085 | 2087 | then throw((("Your already staked max (" + toString(aE)) + ") lands")) | |
2086 | 2088 | else { | |
2087 | - | let | |
2088 | - | let | |
2089 | - | let | |
2090 | - | let | |
2091 | - | $Tuple2([IntegerEntry( | |
2089 | + | let hy = valueOrElse(getInteger(bv(O)), 0) | |
2090 | + | let kj = dc(cx) | |
2091 | + | let ky = valueOrElse(getInteger(kj), 0) | |
2092 | + | let kz = invoke(cO, "onStakeUnstakeLand", [cx], nil) | |
2093 | + | $Tuple2([IntegerEntry(iR, lastBlock.timestamp), IntegerEntry(br(aA, O, cx), lastBlock.timestamp), StringEntry(kc, makeString_11C((jZ :+ O), "_")), IntegerEntry(kj, (ky + iG)), StringEntry(bl(O), cx), StringEntry(dR(dP), cx), IntegerEntry(dQ(O, cx), hy), StringEntry(cY(), ex), StringEntry(kw, kx), kt], kz) | |
2092 | 2094 | } | |
2093 | 2095 | } | |
2094 | 2096 | } | |
2099 | 2101 | ||
2100 | 2102 | ||
2101 | 2103 | ||
2102 | - | @Callable( | |
2103 | - | func unstakeLand ( | |
2104 | - | let | |
2105 | - | if ((size( | |
2104 | + | @Callable(gg) | |
2105 | + | func unstakeLand (iM) = { | |
2106 | + | let kt = kq(gg) | |
2107 | + | if ((size(gg.payments) != 0)) | |
2106 | 2108 | then throw("No payments required") | |
2107 | 2109 | else { | |
2108 | - | let b = toString( | |
2109 | - | let | |
2110 | - | let O = | |
2111 | - | let | |
2112 | - | let | |
2113 | - | let | |
2114 | - | let | |
2115 | - | let | |
2116 | - | let | |
2117 | - | let | |
2118 | - | let | |
2119 | - | let | |
2120 | - | let | |
2121 | - | let | |
2122 | - | let | |
2123 | - | if (!(isDefined( | |
2110 | + | let b = toString(gg.caller) | |
2111 | + | let fw = iK(b, dW, iM) | |
2112 | + | let O = fw._2 | |
2113 | + | let iU = fw._3 | |
2114 | + | let kc = db(b) | |
2115 | + | let gc = gi(iU[cS]) | |
2116 | + | let iG = dj(iU[cR]) | |
2117 | + | let hx = (iG / cq) | |
2118 | + | let ex = gh(gc, hx, -1) | |
2119 | + | let kw = cZ(iU[cT]) | |
2120 | + | let kg = split(valueOrElse(getString(kw), "0_0_0_0_0_0"), "_") | |
2121 | + | let kx = makeString(ga(kg, gc, hx, -1), "_") | |
2122 | + | let jr = jh(b, O, iG, dW) | |
2123 | + | let jZ = split_51C(valueOrElse(getString(kc), ""), "_") | |
2124 | + | let cK = indexOf(jZ, O) | |
2125 | + | if (!(isDefined(cK))) | |
2124 | 2126 | then throw(("Your staked lands don't contain " + O)) | |
2125 | 2127 | else { | |
2126 | 2128 | let av = lastBlock.timestamp | |
2127 | - | let | |
2128 | - | if (( | |
2129 | - | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString( | |
2129 | + | let kA = valueOrElse(getInteger(cN, bH(b)), 0) | |
2130 | + | if ((kA >= av)) | |
2131 | + | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(kA))) | |
2130 | 2132 | else { | |
2131 | - | let | |
2132 | - | if (( | |
2133 | - | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString( | |
2133 | + | let kB = (valueOrElse(getInteger(cO, a(b)), 0) + cm) | |
2134 | + | if ((kB > av)) | |
2135 | + | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(kB))) | |
2134 | 2136 | else { | |
2135 | - | let | |
2136 | - | let | |
2137 | - | let | |
2137 | + | let kj = dc(b) | |
2138 | + | let kk = valueOrElse(getInteger(kj), 0) | |
2139 | + | let kC = if ((iG > kk)) | |
2138 | 2140 | then 0 | |
2139 | - | else ( | |
2140 | - | let | |
2141 | - | $Tuple2([ScriptTransfer( | |
2142 | - | then StringEntry( | |
2143 | - | else DeleteEntry( | |
2141 | + | else (kk - iG) | |
2142 | + | let kz = invoke(cO, "onStakeUnstakeLand", [b], nil) | |
2143 | + | $Tuple2([ScriptTransfer(gg.caller, 1, fromBase58String(O)), DeleteEntry(bo(O)), DeleteEntry(br(aA, O, b)), StringEntry(cY(), ex), StringEntry(kw, kx), StringEntry(jr._2, makeString(jr._3, ":")), if ((size(jZ) > 1)) | |
2144 | + | then StringEntry(kc, makeString_11C(removeByIndex(jZ, value(cK)), "_")) | |
2145 | + | else DeleteEntry(kc), IntegerEntry(kj, kC), kt], kz) | |
2144 | 2146 | } | |
2145 | 2147 | } | |
2146 | 2148 | } | |
2149 | 2151 | ||
2150 | 2152 | ||
2151 | 2153 | ||
2152 | - | @Callable( | |
2154 | + | @Callable(gg) | |
2153 | 2155 | func stakeDuck () = { | |
2154 | - | let | |
2155 | - | if ((size( | |
2156 | + | let kt = kq(gg) | |
2157 | + | if ((size(gg.payments) != 1)) | |
2156 | 2158 | then throw("Exactly one payment required") | |
2157 | 2159 | else { | |
2158 | - | let | |
2159 | - | let bm = value( | |
2160 | - | let | |
2161 | - | if (( | |
2160 | + | let ku = value(gg.payments[0]) | |
2161 | + | let bm = value(ku.assetId) | |
2162 | + | let cx = toString(gg.caller) | |
2163 | + | if ((ku.amount != 1)) | |
2162 | 2164 | then throw((("NFT " + aB) + " token should be attached as payment")) | |
2163 | 2165 | else { | |
2164 | - | let | |
2165 | - | if (if (( | |
2166 | - | then ( | |
2166 | + | let iQ = value(assetInfo(bm)) | |
2167 | + | if (if ((iQ.issuer != du)) | |
2168 | + | then (iQ.issuer != dv) | |
2167 | 2169 | else false) | |
2168 | 2170 | then throw((("Unknown issuer of " + aB) + " token")) | |
2169 | - | else if (!(contains( | |
2171 | + | else if (!(contains(iQ.name, aB))) | |
2170 | 2172 | then throw((("Only NFT " + aB) + " tokens are accepted")) | |
2171 | 2173 | else { | |
2172 | - | let | |
2173 | - | let | |
2174 | - | if (isDefined(getInteger( | |
2175 | - | then throw((("NFT " + | |
2176 | - | else if (isDefined(getString(bE( | |
2177 | - | then throw(("You already staked one duck: " + | |
2178 | - | else if ( | |
2174 | + | let kD = toBase58String(bm) | |
2175 | + | let iR = bo(kD) | |
2176 | + | if (isDefined(getInteger(iR))) | |
2177 | + | then throw((("NFT " + iQ.name) + " is already staked")) | |
2178 | + | else if (isDefined(getString(bE(cx)))) | |
2179 | + | then throw(("You already staked one duck: " + iQ.name)) | |
2180 | + | else if (jN(kD)) | |
2179 | 2181 | then throw("stakeDuck_checkTournament") | |
2180 | 2182 | else { | |
2181 | - | let | |
2182 | - | let bY = getString( | |
2183 | - | let | |
2184 | - | let | |
2185 | - | let | |
2186 | - | let | |
2187 | - | let | |
2188 | - | ([IntegerEntry( | |
2183 | + | let kE = bG(kD) | |
2184 | + | let bY = getString(kE) | |
2185 | + | let hj = bF(kD) | |
2186 | + | let kF = getString(hj) | |
2187 | + | let iz = y(kD) | |
2188 | + | let iA = ae(valueOrElse(getInteger(C(kD)), 0)) | |
2189 | + | let kG = valueOrElse(getInteger(iz), iA) | |
2190 | + | ([IntegerEntry(iR, lastBlock.timestamp), IntegerEntry(br(aB, toBase58String(bm), cx), lastBlock.timestamp), StringEntry(bD(kD), cx), StringEntry(bE(cx), kD)] ++ (if (isDefined(bY)) | |
2189 | 2191 | then nil | |
2190 | - | else ([StringEntry( | |
2192 | + | else ([StringEntry(kE, aI)] ++ (if (isDefined(kF)) | |
2191 | 2193 | then nil | |
2192 | - | else (([StringEntry( | |
2194 | + | else (([StringEntry(hj, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iz, kG)) :+ kt))))) | |
2193 | 2195 | } | |
2194 | 2196 | } | |
2195 | 2197 | } | |
2198 | 2200 | ||
2199 | 2201 | ||
2200 | 2202 | ||
2201 | - | @Callable( | |
2202 | - | func unstakeDuck ( | |
2203 | - | let | |
2204 | - | if ((size( | |
2203 | + | @Callable(gg) | |
2204 | + | func unstakeDuck (kD) = { | |
2205 | + | let kt = kq(gg) | |
2206 | + | if ((size(gg.payments) != 0)) | |
2205 | 2207 | then throw("No payments required") | |
2206 | 2208 | else { | |
2207 | - | let bm = fromBase58String( | |
2208 | - | let | |
2209 | - | let | |
2210 | - | let | |
2211 | - | if (!(isDefined(getInteger( | |
2212 | - | then throw((("NFT " + | |
2213 | - | else if (!(isDefined(getString(bE( | |
2214 | - | then throw((("The duck " + | |
2209 | + | let bm = fromBase58String(kD) | |
2210 | + | let cx = toString(gg.caller) | |
2211 | + | let iQ = value(assetInfo(bm)) | |
2212 | + | let iR = bo(kD) | |
2213 | + | if (!(isDefined(getInteger(iR)))) | |
2214 | + | then throw((("NFT " + iQ.name) + " is not staked")) | |
2215 | + | else if (!(isDefined(getString(bE(cx))))) | |
2216 | + | then throw((("The duck " + iQ.name) + " is not staked")) | |
2215 | 2217 | else { | |
2216 | - | let | |
2217 | - | if (( | |
2218 | + | let iT = valueOrErrorMessage(getString(bD(kD)), (("NFT " + iQ.name) + " is orphaned")) | |
2219 | + | if ((iT != cx)) | |
2218 | 2220 | then throw("Staked NFT is not yours") | |
2219 | - | else if ( | |
2221 | + | else if (jN(kD)) | |
2220 | 2222 | then throw("unstakeDuck_checkTournament") | |
2221 | 2223 | else { | |
2222 | - | let | |
2223 | - | let | |
2224 | - | let aq = valueOrElse(getInteger( | |
2225 | - | if (( | |
2226 | - | then throw((("Please heal your duck to " + toString( | |
2227 | - | else [ScriptTransfer( | |
2224 | + | let iz = y(kD) | |
2225 | + | let iA = ae(valueOrElse(getInteger(C(kD)), 0)) | |
2226 | + | let aq = valueOrElse(getInteger(iz), iA) | |
2227 | + | if ((iA > aq)) | |
2228 | + | then throw((("Please heal your duck to " + toString(iA)) + "hp before unstaking")) | |
2229 | + | else [ScriptTransfer(gg.caller, 1, bm), DeleteEntry(iR), DeleteEntry(iz), DeleteEntry(bG(kD)), DeleteEntry(bD(kD)), DeleteEntry(br(aB, kD, cx)), DeleteEntry(bE(cx)), kt] | |
2228 | 2230 | } | |
2229 | 2231 | } | |
2230 | 2232 | } | |
2232 | 2234 | ||
2233 | 2235 | ||
2234 | 2236 | ||
2235 | - | @Callable( | |
2236 | - | func claimRes ( | |
2237 | - | let | |
2238 | - | if ((size( | |
2237 | + | @Callable(gg) | |
2238 | + | func claimRes (ee,kH) = { | |
2239 | + | let kt = kq(gg) | |
2240 | + | if ((size(gg.payments) != 0)) | |
2239 | 2241 | then throw("No payments required") | |
2240 | 2242 | else { | |
2241 | - | let b = toString( | |
2242 | - | let | |
2243 | + | let b = toString(gg.originCaller) | |
2244 | + | let eF = iV(b, ee, dW, kH) | |
2243 | 2245 | let z = valueOrErrorMessage(getString(bE(b)), "You don't have a duck staked") | |
2244 | - | $Tuple2((((( | |
2245 | - | } | |
2246 | - | } | |
2247 | - | ||
2248 | - | ||
2249 | - | ||
2250 | - | @Callable( | |
2251 | - | func claimResToWH ( | |
2252 | - | let | |
2253 | - | if ((size( | |
2246 | + | $Tuple2(((((eF._1 ++ jx(z, fraction(S, ee, cp))._1) :+ StringEntry(eF._2, makeString(eF._3, ":"))) :+ StringEntry(eF._4, makeString(eF._5, ":"))) :+ kt), eF._3[bf]) | |
2247 | + | } | |
2248 | + | } | |
2249 | + | ||
2250 | + | ||
2251 | + | ||
2252 | + | @Callable(gg) | |
2253 | + | func claimResToWH (ee,kH) = { | |
2254 | + | let kt = kq(gg) | |
2255 | + | if ((size(gg.payments) != 0)) | |
2254 | 2256 | then throw("No payments required") | |
2255 | 2257 | else { | |
2256 | - | let b = toString( | |
2257 | - | let | |
2258 | - | $Tuple2((((( | |
2259 | - | } | |
2260 | - | } | |
2261 | - | ||
2262 | - | ||
2263 | - | ||
2264 | - | @Callable( | |
2265 | - | func flight ( | |
2266 | - | let | |
2267 | - | if ((size( | |
2258 | + | let b = toString(gg.originCaller) | |
2259 | + | let eF = iV(b, ee, dV, kH) | |
2260 | + | $Tuple2(((((eF._1 ++ jD(b, fraction(S, ee, cp))._1) :+ StringEntry(eF._2, makeString(eF._3, ":"))) :+ StringEntry(eF._4, makeString(eF._5, ":"))) :+ kt), eF._5[aW]) | |
2261 | + | } | |
2262 | + | } | |
2263 | + | ||
2264 | + | ||
2265 | + | ||
2266 | + | @Callable(gg) | |
2267 | + | func flight (io,ip) = { | |
2268 | + | let kt = kq(gg) | |
2269 | + | if ((size(gg.payments) != 0)) | |
2268 | 2270 | then throw("No payments required") | |
2269 | 2271 | else { | |
2270 | - | let bI = toString( | |
2271 | - | let | |
2272 | - | let | |
2273 | - | let z = | |
2274 | - | let | |
2275 | - | let | |
2276 | - | let | |
2277 | - | if (( | |
2272 | + | let bI = toString(gg.caller) | |
2273 | + | let gL = in(bI, io, ip) | |
2274 | + | let it = gL._1 | |
2275 | + | let z = gL._2 | |
2276 | + | let kE = bG(z) | |
2277 | + | let iO = valueOrElse(getString(kE), aI) | |
2278 | + | let iv = gL._4 | |
2279 | + | if ((iv == iO)) | |
2278 | 2280 | then throw("You can't fly to the same location") | |
2279 | 2281 | else { | |
2280 | - | let | |
2281 | - | let | |
2282 | - | let | |
2283 | - | let | |
2284 | - | let | |
2285 | - | let | |
2286 | - | let | |
2287 | - | let | |
2288 | - | then if ( | |
2289 | - | then throw(((("Cheat attempt: oldLoc=" + | |
2290 | - | else if (( | |
2291 | - | then | |
2292 | - | else | |
2293 | - | else if (!(bX( | |
2282 | + | let kI = split(iv, "_") | |
2283 | + | let kJ = (kI[bj] == "T") | |
2284 | + | let fT = E(z) | |
2285 | + | let kK = valueOrElse(getString(fT), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2286 | + | let kL = eG(kK, gL._5) | |
2287 | + | let kM = kL._1 | |
2288 | + | let kN = kL._2 | |
2289 | + | let kO = if (!(bX(cP, iO))) | |
2290 | + | then if (kJ) | |
2291 | + | then throw(((("Cheat attempt: oldLoc=" + iO) + ", newLoc=") + iv)) | |
2292 | + | else if ((it > 0)) | |
2293 | + | then iv | |
2294 | + | else iO | |
2295 | + | else if (!(bX(cP, iv))) | |
2294 | 2296 | then throw("Your duck is taking part in the tournament") | |
2295 | 2297 | else { | |
2296 | - | let | |
2297 | - | let | |
2298 | - | let bZ = valueOrElse(getInteger( | |
2299 | - | if (( | |
2300 | - | then throw(((("Cheat attempt: oldLoc=" + | |
2301 | - | else if (( | |
2298 | + | let kP = parseIntValue(kI[bk]) | |
2299 | + | let kQ = split(iO, "_") | |
2300 | + | let bZ = valueOrElse(getInteger(cP, bK), 0) | |
2301 | + | if ((kP != (parseIntValue(kQ[bk]) + 1))) | |
2302 | + | then throw(((("Cheat attempt: oldLoc=" + iO) + ", newLoc=") + iv)) | |
2303 | + | else if ((it > 0)) | |
2302 | 2304 | then { | |
2303 | - | let | |
2304 | - | let | |
2305 | - | then invoke( | |
2305 | + | let kR = valueOrElse(getInteger(cP, bO(bZ, z)), 0) | |
2306 | + | let kS = if ((kP > kR)) | |
2307 | + | then invoke(cP, "saveDuckResult", [z, kP], nil) | |
2306 | 2308 | else unit | |
2307 | - | if (( | |
2308 | - | then | |
2309 | + | if ((kS == kS)) | |
2310 | + | then iv | |
2309 | 2311 | else throw("Strict value is not equal to itself.") | |
2310 | 2312 | } | |
2311 | - | else | |
2313 | + | else iO | |
2312 | 2314 | } | |
2313 | - | $Tuple2(([StringEntry( | |
2315 | + | $Tuple2(([StringEntry(kE, kO), StringEntry(fT, kM), IntegerEntry(y(z), it), kt] ++ (if (kN) | |
2314 | 2316 | then [StringEntry(K(z), "0_0_0_0_0")] | |
2315 | - | else (nil ++ | |
2317 | + | else (nil ++ jx(z, if ((it > 0)) | |
2316 | 2318 | then T | |
2317 | - | else U)._1))), | |
2319 | + | else U)._1))), gL._3) | |
2318 | 2320 | } | |
2319 | 2321 | } | |
2320 | 2322 | } | |
2321 | 2323 | ||
2322 | 2324 | ||
2323 | 2325 | ||
2324 | - | @Callable(gf) | |
2325 | - | func heal (kS,kT,kU) = { | |
2326 | - | let ks = kp(gf) | |
2327 | - | if (if (if ((0 > kS)) | |
2328 | - | then true | |
2329 | - | else (0 > kT)) | |
2326 | + | @Callable(gg) | |
2327 | + | func heal (kT,kU,kV) = { | |
2328 | + | let kt = kq(gg) | |
2329 | + | if (if (if ((0 > kT)) | |
2330 | 2330 | then true | |
2331 | 2331 | else (0 > kU)) | |
2332 | + | then true | |
2333 | + | else (0 > kV)) | |
2332 | 2334 | then throw("Quantity cannot be negative") | |
2333 | 2335 | else { | |
2334 | - | let z = valueOrErrorMessage(getString(bE(toString( | |
2335 | - | if ( | |
2336 | + | let z = valueOrErrorMessage(getString(bE(toString(gg.caller))), "You don't have a duck staked") | |
2337 | + | if (jN(z)) | |
2336 | 2338 | then throw("heal_checkTournament") | |
2337 | 2339 | else { | |
2338 | - | let | |
2339 | - | let | |
2340 | - | let | |
2341 | - | let | |
2342 | - | if (( | |
2343 | - | then throw((("HP should be < " + toString( | |
2340 | + | let kW = [kT, kU, kV] | |
2341 | + | let iz = y(z) | |
2342 | + | let iA = ae(valueOrElse(getInteger(C(z)), 0)) | |
2343 | + | let kX = valueOrElse(getInteger(iz), iA) | |
2344 | + | if ((kX >= iA)) | |
2345 | + | then throw((("HP should be < " + toString(iA)) + " to heal")) | |
2344 | 2346 | else { | |
2345 | - | let | |
2346 | - | let | |
2347 | - | let | |
2347 | + | let hj = bF(z) | |
2348 | + | let hM = hi(hj) | |
2349 | + | let kY = if ((hM[bh] == "")) | |
2348 | 2350 | then nil | |
2349 | - | else split_4C( | |
2350 | - | func | |
2351 | - | let | |
2352 | - | let | |
2353 | - | then parseIntValue( | |
2351 | + | else split_4C(hM[bh], "_") | |
2352 | + | func kZ (en,cd) = { | |
2353 | + | let dh = en._2 | |
2354 | + | let gC = if ((size(kY) > dh)) | |
2355 | + | then parseIntValue(kY[dh]) | |
2354 | 2356 | else 0 | |
2355 | - | if ((3 > | |
2357 | + | if ((3 > dh)) | |
2356 | 2358 | then { | |
2357 | - | let | |
2358 | - | if (( | |
2359 | - | then throw(((("You have only " + toString( | |
2360 | - | else $Tuple3(( | |
2359 | + | let la = kW[dh] | |
2360 | + | if ((la > gC)) | |
2361 | + | then throw(((("You have only " + toString(gC)) + " of ") + aL[dh])) | |
2362 | + | else $Tuple3((en._1 :+ toString((gC - la))), (dh + 1), (en._3 + (parseIntValue(split(cd, "_")[aR]) * la))) | |
2361 | 2363 | } | |
2362 | - | else $Tuple3(( | |
2364 | + | else $Tuple3((en._1 :+ toString(gC)), (dh + 1), en._3) | |
2363 | 2365 | } | |
2364 | 2366 | ||
2365 | - | let | |
2366 | - | let | |
2367 | - | let | |
2368 | - | let | |
2369 | - | func | |
2370 | - | then | |
2371 | - | else | |
2372 | - | ||
2373 | - | func | |
2374 | - | then | |
2367 | + | let eF = { | |
2368 | + | let ep = aP | |
2369 | + | let eq = size(ep) | |
2370 | + | let er = $Tuple3(nil, 0, 0) | |
2371 | + | func es (et,eu) = if ((eu >= eq)) | |
2372 | + | then et | |
2373 | + | else kZ(et, ep[eu]) | |
2374 | + | ||
2375 | + | func ev (et,eu) = if ((eu >= eq)) | |
2376 | + | then et | |
2375 | 2377 | else throw("List size exceeds 50") | |
2376 | 2378 | ||
2377 | - | | |
2379 | + | ev(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(er, 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) | |
2378 | 2380 | } | |
2379 | - | let | |
2380 | - | $Tuple2(([IntegerEntry( | |
2381 | + | let lb = min([iA, (kX + eF._3)]) | |
2382 | + | $Tuple2(([IntegerEntry(iz, lb), StringEntry(hj, makeString_2C([hM[be], hM[bf], hM[bg], makeString(eF._1, "_")], ":")), kt] ++ jx(z, (ab * ((kT + kU) + kV)))._1), lb) | |
2381 | 2383 | } | |
2382 | 2384 | } | |
2383 | 2385 | } | |
2385 | 2387 | ||
2386 | 2388 | ||
2387 | 2389 | ||
2388 | - | @Callable( | |
2390 | + | @Callable(gg) | |
2389 | 2391 | func healES () = { | |
2390 | - | let | |
2391 | - | if ((size( | |
2392 | + | let kt = kq(gg) | |
2393 | + | if ((size(gg.payments) != 1)) | |
2392 | 2394 | then throw("Exactly one payment required") | |
2393 | 2395 | else { | |
2394 | - | let | |
2395 | - | if (( | |
2396 | + | let ku = value(gg.payments[0]) | |
2397 | + | if ((ku.assetId != ci)) | |
2396 | 2398 | then throw("Allowed USDT payment only!") | |
2397 | 2399 | else { | |
2398 | - | let z = valueOrErrorMessage(getString(bE(toString( | |
2399 | - | if ( | |
2400 | + | let z = valueOrErrorMessage(getString(bE(toString(gg.caller))), "You don't have a duck staked") | |
2401 | + | if (jN(z)) | |
2400 | 2402 | then throw("healES_checkTournament") | |
2401 | 2403 | else { | |
2402 | - | let | |
2403 | - | let | |
2404 | - | let | |
2405 | - | if (( | |
2404 | + | let iz = y(z) | |
2405 | + | let iA = ae(valueOrElse(getInteger(C(z)), 0)) | |
2406 | + | let kX = valueOrElse(getInteger(iz), iA) | |
2407 | + | if ((kX > 0)) | |
2406 | 2408 | then throw("HP should be 0 to call Emergency Service") | |
2407 | 2409 | else { | |
2408 | - | let | |
2409 | - | let | |
2410 | - | let | |
2410 | + | let hj = bF(z) | |
2411 | + | let hM = hi(hj) | |
2412 | + | let kY = if ((hM[bh] == "")) | |
2411 | 2413 | then nil | |
2412 | - | else split_4C( | |
2413 | - | let | |
2414 | - | then parseIntValue( | |
2414 | + | else split_4C(hM[bh], "_") | |
2415 | + | let lc = if ((size(kY) > 0)) | |
2416 | + | then parseIntValue(kY[0]) | |
2415 | 2417 | else 0 | |
2416 | - | let | |
2417 | - | then parseIntValue( | |
2418 | + | let ld = if ((size(kY) > 1)) | |
2419 | + | then parseIntValue(kY[1]) | |
2418 | 2420 | else 0 | |
2419 | - | let | |
2420 | - | then parseIntValue( | |
2421 | + | let le = if ((size(kY) > 2)) | |
2422 | + | then parseIntValue(kY[2]) | |
2421 | 2423 | else 0 | |
2422 | - | if (if (if ((lb > 0)) | |
2423 | - | then true | |
2424 | - | else (lc > 0)) | |
2424 | + | if (if (if ((lc > 0)) | |
2425 | 2425 | then true | |
2426 | 2426 | else (ld > 0)) | |
2427 | + | then true | |
2428 | + | else (le > 0)) | |
2427 | 2429 | then throw("You have to use own Medical Kit") | |
2428 | 2430 | else { | |
2429 | - | let | |
2430 | - | let | |
2431 | - | then split_4C(value( | |
2431 | + | let lf = getString(cM, bJ()) | |
2432 | + | let lg = if (isDefined(lf)) | |
2433 | + | then split_4C(value(lf), "_") | |
2432 | 2434 | else nil | |
2433 | - | let | |
2434 | - | then parseIntValue( | |
2435 | + | let lh = if ((size(lg) > 0)) | |
2436 | + | then parseIntValue(lg[0]) | |
2435 | 2437 | else 0 | |
2436 | - | if ((0 >= | |
2438 | + | if ((0 >= lh)) | |
2437 | 2439 | then throw("There are no Medical Kits L1 at Emergency Service storage") | |
2438 | 2440 | else { | |
2439 | - | let | |
2440 | - | let | |
2441 | + | let lb = (kX + parseIntValue(split(aP[0], "_")[aR])) | |
2442 | + | let li = makeString([toString((lh - 1)), removeByIndex(lg, 0)], "_") | |
2441 | 2443 | let cd = split(aP[0], "_") | |
2442 | - | let | |
2443 | - | let | |
2444 | - | if (( | |
2445 | - | then throw(("Payment attached should be " + toString( | |
2444 | + | let lj = cc(cd) | |
2445 | + | let lk = fraction((lj * aK), aJ, (cp * aU)) | |
2446 | + | if ((ku.amount != lk)) | |
2447 | + | then throw(("Payment attached should be " + toString(lk))) | |
2446 | 2448 | else { | |
2447 | - | let | |
2448 | - | $Tuple2(([IntegerEntry( | |
2449 | + | let eF = dd(invoke(cM, "updateEsStorage", [li], [AttachedPayment(ci, lk)])) | |
2450 | + | $Tuple2(([IntegerEntry(iz, lb), kt] ++ jx(z, V)._1), eF) | |
2449 | 2451 | } | |
2450 | 2452 | } | |
2451 | 2453 | } | |
2457 | 2459 | ||
2458 | 2460 | ||
2459 | 2461 | ||
2460 | - | @Callable( | |
2461 | - | func updateBackpack (z, | |
2462 | + | @Callable(gg) | |
2463 | + | func updateBackpack (z,ll) = if ((gg.caller != cM)) | |
2462 | 2464 | then throw("permission denied") | |
2463 | - | else $Tuple2([StringEntry(bF(z), | |
2464 | - | ||
2465 | - | ||
2466 | - | ||
2467 | - | @Callable( | |
2465 | + | else $Tuple2([StringEntry(bF(z), ll)], ll) | |
2466 | + | ||
2467 | + | ||
2468 | + | ||
2469 | + | @Callable(gg) | |
2468 | 2470 | func commitForRandom () = { | |
2469 | - | let | |
2470 | - | let | |
2471 | - | let b = toString( | |
2472 | - | $Tuple2(([IntegerEntry( | |
2473 | - | } | |
2474 | - | ||
2475 | - | ||
2476 | - | ||
2477 | - | @Callable( | |
2478 | - | func awardSLand ( | |
2471 | + | let kt = kq(gg) | |
2472 | + | let lm = (height + cW) | |
2473 | + | let b = toString(gg.caller) | |
2474 | + | $Tuple2(([IntegerEntry(cX(b), lm)] :+ kt), lm) | |
2475 | + | } | |
2476 | + | ||
2477 | + | ||
2478 | + | ||
2479 | + | @Callable(gg) | |
2480 | + | func awardSLand (cx) = if ((gg.caller != cP)) | |
2479 | 2481 | then throw("Access denied") | |
2480 | - | else if ((size( | |
2482 | + | else if ((size(gg.payments) != 0)) | |
2481 | 2483 | then throw("No payments required") | |
2482 | 2484 | else { | |
2483 | - | let | |
2484 | - | $Tuple2( | |
2485 | - | } | |
2486 | - | ||
2487 | - | ||
2488 | - | ||
2489 | - | @Callable( | |
2485 | + | let eF = ig(addressFromStringValue(cx), gg.transactionId) | |
2486 | + | $Tuple2(eF._1, eF._2._1) | |
2487 | + | } | |
2488 | + | ||
2489 | + | ||
2490 | + | ||
2491 | + | @Callable(gg) | |
2490 | 2492 | func buySLand () = { | |
2491 | - | let | |
2492 | - | if ((size( | |
2493 | + | let kt = kq(gg) | |
2494 | + | if ((size(gg.payments) != 1)) | |
2493 | 2495 | then throw("Exactly one payment required") | |
2494 | 2496 | else { | |
2495 | - | let | |
2496 | - | if (( | |
2497 | + | let ku = value(gg.payments[0]) | |
2498 | + | if ((ku.assetId != ci)) | |
2497 | 2499 | then throw("Allowed USDT payment only!") | |
2498 | - | else if (( | |
2499 | - | then throw(("Payment attached should be " + toString( | |
2500 | + | else if ((ku.amount != dD)) | |
2501 | + | then throw(("Payment attached should be " + toString(dD))) | |
2500 | 2502 | else { | |
2501 | - | let | |
2502 | - | $Tuple2(((( | |
2503 | + | let eF = ig(gg.caller, gg.transactionId) | |
2504 | + | $Tuple2((((eF._1 :+ ScriptTransfer(cM, ku.amount, ci)) ++ jD(toString(gg.caller), X)._1) :+ kt), eF._2._1) | |
2503 | 2505 | } | |
2504 | 2506 | } | |
2505 | 2507 | } | |
2506 | 2508 | ||
2507 | 2509 | ||
2508 | 2510 | ||
2509 | - | @Callable( | |
2510 | - | func expedition ( | |
2511 | - | let | |
2512 | - | if ((size( | |
2511 | + | @Callable(gg) | |
2512 | + | func expedition (io,ip) = { | |
2513 | + | let kt = kq(gg) | |
2514 | + | if ((size(gg.payments) != 0)) | |
2513 | 2515 | then throw("No payments required") | |
2514 | 2516 | else { | |
2515 | - | let bI = toString( | |
2516 | - | let | |
2517 | - | let z = | |
2518 | - | let | |
2519 | - | let | |
2520 | - | let | |
2521 | - | let | |
2522 | - | let | |
2523 | - | let | |
2524 | - | let | |
2525 | - | let | |
2526 | - | let | |
2527 | - | let | |
2528 | - | let | |
2529 | - | let | |
2530 | - | let | |
2531 | - | then $Tuple3([IntegerEntry( | |
2532 | - | else $Tuple3(( | |
2517 | + | let bI = toString(gg.caller) | |
2518 | + | let gL = in(bI, io, ip) | |
2519 | + | let z = gL._2 | |
2520 | + | let iz = y(z) | |
2521 | + | let hj = bF(z) | |
2522 | + | let hM = hi(hj) | |
2523 | + | let jo = split(hM[bg], "_") | |
2524 | + | let jq = makeString(ez(true, jo, dC), "_") | |
2525 | + | let fT = E(z) | |
2526 | + | let kK = valueOrElse(getString(fT), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2527 | + | let ln = eG(kK, gL._5) | |
2528 | + | let kM = ln._1 | |
2529 | + | let kN = ln._2 | |
2530 | + | let lo = ig(gg.caller, gg.transactionId) | |
2531 | + | let im = lo._2._1 | |
2532 | + | let eF = if ((0 >= gL._1)) | |
2533 | + | then $Tuple3([IntegerEntry(iz, 0), StringEntry(fT, kM)], "", 0) | |
2534 | + | else $Tuple3((lo._1 ++ (if (kN) | |
2533 | 2535 | then [StringEntry(K(z), "0_0_0_0_0")] | |
2534 | - | else ((((nil :+ StringEntry(bG(z), makeString([ | |
2535 | - | if ( | |
2536 | + | else ((((nil :+ StringEntry(bG(z), makeString([lo._2._2, "L", im], "_"))) :+ IntegerEntry(iz, gL._1)) :+ StringEntry(fT, kM)) :+ StringEntry(hj, makeString([hM[be], hM[bf], jq, hM[bh]], ":"))))), im, gL._3) | |
2537 | + | if (jN(z)) | |
2536 | 2538 | then throw("expedition_checkTournament") | |
2537 | - | else $Tuple2((( | |
2538 | - | } | |
2539 | - | } | |
2540 | - | ||
2541 | - | ||
2542 | - | ||
2543 | - | @Callable( | |
2539 | + | else $Tuple2(((eF._1 ++ jx(z, X)._1) :+ kt), $Tuple2(eF._2, eF._3)) | |
2540 | + | } | |
2541 | + | } | |
2542 | + | ||
2543 | + | ||
2544 | + | ||
2545 | + | @Callable(gg) | |
2544 | 2546 | func upgradeInfra (O) = { | |
2545 | - | let | |
2546 | - | if ((size( | |
2547 | + | let kt = kq(gg) | |
2548 | + | if ((size(gg.payments) != 0)) | |
2547 | 2549 | then throw("No payments required") | |
2548 | 2550 | else { | |
2549 | - | let | |
2550 | - | let z = valueOrErrorMessage(getString(bE(toString( | |
2551 | - | $Tuple2((( | |
2552 | - | } | |
2553 | - | } | |
2554 | - | ||
2555 | - | ||
2556 | - | ||
2557 | - | @Callable( | |
2558 | - | func activateArtifact ( | |
2559 | - | let | |
2560 | - | if ((size( | |
2551 | + | let eF = ji(true, gg.caller, 0, O) | |
2552 | + | let z = valueOrErrorMessage(getString(bE(toString(gg.caller))), "You don't have a duck staked") | |
2553 | + | $Tuple2(((eF._1 :+ kt) ++ jx(z, fraction(Y, eF._3, cp))._1), eF._2) | |
2554 | + | } | |
2555 | + | } | |
2556 | + | ||
2557 | + | ||
2558 | + | ||
2559 | + | @Callable(gg) | |
2560 | + | func activateArtifact (lp,lq) = { | |
2561 | + | let kt = kq(gg) | |
2562 | + | if ((size(gg.payments) != 0)) | |
2561 | 2563 | then throw("No payments required") | |
2562 | 2564 | else { | |
2563 | - | let b = toString( | |
2564 | - | let | |
2565 | - | let | |
2566 | - | if (("PRESALE" == | |
2567 | - | then | |
2568 | - | else if (("ONBOARD" == | |
2569 | - | then | |
2565 | + | let b = toString(gg.caller) | |
2566 | + | let eF = { | |
2567 | + | let cj = lp | |
2568 | + | if (("PRESALE" == cj)) | |
2569 | + | then jL(b, lq) | |
2570 | + | else if (("ONBOARD" == cj)) | |
2571 | + | then jE(b) | |
2570 | 2572 | else throw("Unknown artifact") | |
2571 | 2573 | } | |
2572 | - | ( | |
2573 | - | } | |
2574 | - | } | |
2575 | - | ||
2576 | - | ||
2577 | - | ||
2578 | - | @Callable( | |
2579 | - | func mergeLands ( | |
2580 | - | let | |
2581 | - | if ((size( | |
2574 | + | (eF :+ kt) | |
2575 | + | } | |
2576 | + | } | |
2577 | + | ||
2578 | + | ||
2579 | + | ||
2580 | + | @Callable(gg) | |
2581 | + | func mergeLands (jR) = { | |
2582 | + | let kt = kq(gg) | |
2583 | + | if ((size(gg.payments) != 0)) | |
2582 | 2584 | then throw("No payments required") | |
2583 | 2585 | else { | |
2584 | - | let | |
2585 | - | $Tuple2((( | |
2586 | - | } | |
2587 | - | } | |
2588 | - | ||
2589 | - | ||
2590 | - | ||
2591 | - | @Callable( | |
2592 | - | func cargoExchange ( | |
2593 | - | let | |
2594 | - | if ((size( | |
2586 | + | let eF = kp(toString(gg.caller), jR) | |
2587 | + | $Tuple2(((eF._1 :+ kt) ++ jD(toString(gg.caller), Z)._1), eF._2) | |
2588 | + | } | |
2589 | + | } | |
2590 | + | ||
2591 | + | ||
2592 | + | ||
2593 | + | @Callable(gg) | |
2594 | + | func cargoExchange (lr,O) = { | |
2595 | + | let kt = kq(gg) | |
2596 | + | if ((size(gg.payments) != 0)) | |
2595 | 2597 | then throw("No payments required") | |
2596 | 2598 | else { | |
2597 | - | let | |
2598 | - | let b = toString( | |
2599 | - | let | |
2600 | - | let | |
2601 | - | if (!(isDefined(getInteger( | |
2602 | - | then throw(( | |
2599 | + | let hL = split_4C(lr, ":") | |
2600 | + | let b = toString(gg.originCaller) | |
2601 | + | let iQ = value(assetInfo(fromBase58String(O))) | |
2602 | + | let iR = bo(O) | |
2603 | + | if (!(isDefined(getInteger(iR)))) | |
2604 | + | then throw((iQ.name + " is not staked")) | |
2603 | 2605 | else { | |
2604 | - | let | |
2605 | - | if (( | |
2606 | + | let iT = valueOrErrorMessage(getString(bl(O)), (("NFT " + iQ.name) + " is orphaned")) | |
2607 | + | if ((iT != b)) | |
2606 | 2608 | then throw((aA + " is not yours")) | |
2607 | 2609 | else { | |
2608 | - | let | |
2609 | - | let | |
2610 | + | let hx = (dj(split(iQ.description, "_")[cR]) / cq) | |
2611 | + | let hy = valueOrElse(getInteger(bv(O)), 0) | |
2610 | 2612 | let z = valueOrErrorMessage(getString(bE(b)), "You don't have a duck staked") | |
2611 | - | let | |
2612 | - | let ca = split(value( | |
2613 | + | let iO = valueOrElse(getString(bG(z)), aI) | |
2614 | + | let ca = split(value(iO), "_") | |
2613 | 2615 | if ((ca[bj] != "L")) | |
2614 | 2616 | then throw((("Duck location type is " + ca[bj]) + ", but should be L")) | |
2615 | 2617 | else if ((ca[bk] != O)) | |
2616 | 2618 | then throw(("Duck should be on the land " + O)) | |
2617 | 2619 | else { | |
2618 | - | let | |
2619 | - | let | |
2620 | - | let | |
2621 | - | let | |
2622 | - | let | |
2623 | - | let | |
2624 | - | let | |
2625 | - | let | |
2626 | - | [StringEntry( | |
2620 | + | let hw = bu(O) | |
2621 | + | let hn = hv(hw, hx, hy) | |
2622 | + | let hj = bF(z) | |
2623 | + | let hM = hi(hj) | |
2624 | + | let eF = hK(hL, hn, hM) | |
2625 | + | let hE = split(hn[aZ], "_") | |
2626 | + | let jf = (parseIntValue(hE[bb]) + eF._7) | |
2627 | + | let jg = (parseIntValue(hE[bc]) - eF._7) | |
2628 | + | [StringEntry(hj, makeString_2C([hM[be], eF._4, eF._5, eF._6], ":")), StringEntry(hw, makeString_2C([hn[aV], eF._1, eF._2, eF._3, makeString([hE[ba], toString(jf), toString(jg), hE[bd]], "_")], ":")), kt] | |
2627 | 2629 | } | |
2628 | 2630 | } | |
2629 | 2631 | } | |
2632 | 2634 | ||
2633 | 2635 | ||
2634 | 2636 | ||
2635 | - | @Callable( | |
2636 | - | func saveWarehouse ( | |
2637 | + | @Callable(gg) | |
2638 | + | func saveWarehouse (hA,O) = if ((gg.caller != cM)) | |
2637 | 2639 | then throw("Access denied") | |
2638 | 2640 | else { | |
2639 | - | let | |
2640 | - | let | |
2641 | - | if ((size( | |
2641 | + | let hw = bu(O) | |
2642 | + | let hB = split_4C(hA, ":") | |
2643 | + | if ((size(hB) != 5)) | |
2642 | 2644 | then throw("warehouse string should contain 4 ':' separators") | |
2643 | 2645 | else { | |
2644 | - | let | |
2645 | - | let | |
2646 | - | let | |
2647 | - | let | |
2648 | - | let | |
2649 | - | $Tuple2([StringEntry( | |
2646 | + | let ls = split(hB[aZ], "_")[ba] | |
2647 | + | let jf = hm(hB) | |
2648 | + | let lt = hk(hB[aV]) | |
2649 | + | let jg = ((lt - parseIntValue(ls)) - jf) | |
2650 | + | let lu = makeString_2C([hB[aV], hB[aW], hB[aX], hB[aY], makeString([ls, toString(jf), toString(jg), toString(lt)], "_")], ":") | |
2651 | + | $Tuple2([StringEntry(hw, lu)], lu) | |
2650 | 2652 | } | |
2651 | 2653 | } | |
2652 | 2654 | ||
2653 | 2655 | ||
2654 | 2656 | ||
2655 | - | @Callable( | |
2656 | - | func fixWarehouseFormat (O) = if (( | |
2657 | + | @Callable(gg) | |
2658 | + | func fixWarehouseFormat (O) = if ((gg.caller != cL)) | |
2657 | 2659 | then throw("Access denied") | |
2658 | 2660 | else { | |
2659 | - | let | |
2660 | - | let | |
2661 | - | let | |
2662 | - | let | |
2663 | - | let | |
2664 | - | let | |
2665 | - | let | |
2666 | - | let | |
2667 | - | let | |
2668 | - | let | |
2669 | - | $Tuple2([StringEntry( | |
2661 | + | let hw = bu(O) | |
2662 | + | let iQ = value(assetInfo(fromBase58String(O))) | |
2663 | + | let hx = (dj(split(iQ.description, "_")[cR]) / cq) | |
2664 | + | let hy = valueOrElse(getInteger(bv(O)), 0) | |
2665 | + | let hB = hv(hw, hx, hy) | |
2666 | + | let ls = dg(invoke(cM, "recalcLockedVolumeREADONLY", [O, hB], nil)) | |
2667 | + | let jf = hm(hB) | |
2668 | + | let lt = hk(hB[aV]) | |
2669 | + | let jg = ((lt - ls) - jf) | |
2670 | + | let lu = makeString_2C([hB[aV], hB[aW], hB[aX], hB[aY], makeString([toString(ls), toString(jf), toString(jg), toString(lt)], "_")], ":") | |
2671 | + | $Tuple2([StringEntry(hw, lu)], lu) | |
2670 | 2672 | } | |
2671 | 2673 | ||
2672 | 2674 | ||
2673 | 2675 | ||
2674 | - | @Callable( | |
2675 | - | func fixContinentProportions ( | |
2676 | + | @Callable(gg) | |
2677 | + | func fixContinentProportions (jR) = if ((gg.caller != cL)) | |
2676 | 2678 | then throw("Access denied") | |
2677 | 2679 | else { | |
2678 | - | func | |
2679 | - | ||
2680 | - | let | |
2681 | - | let | |
2682 | - | let | |
2683 | - | let | |
2684 | - | func | |
2685 | - | then | |
2686 | - | else | |
2687 | - | ||
2688 | - | func | |
2689 | - | then | |
2680 | + | func lv (en,lw) = (en :+ valueOrElse(getString(cZ(lw)), "0_0_0_0_0_0")) | |
2681 | + | ||
2682 | + | let fQ = { | |
2683 | + | let ep = aM | |
2684 | + | let eq = size(ep) | |
2685 | + | let er = nil | |
2686 | + | func es (et,eu) = if ((eu >= eq)) | |
2687 | + | then et | |
2688 | + | else lv(et, ep[eu]) | |
2689 | + | ||
2690 | + | func ev (et,eu) = if ((eu >= eq)) | |
2691 | + | then et | |
2690 | 2692 | else throw("List size exceeds 5") | |
2691 | 2693 | ||
2692 | - | | |
2693 | - | } | |
2694 | - | func | |
2695 | - | let | |
2696 | - | let | |
2697 | - | let | |
2698 | - | let | |
2699 | - | let | |
2700 | - | let | |
2701 | - | let | |
2702 | - | let | |
2703 | - | let | |
2704 | - | if (("Americas" == | |
2705 | - | then [ | |
2706 | - | else if (("Europe" == | |
2707 | - | then [ | |
2708 | - | else if (("Asia" == | |
2709 | - | then [ | |
2710 | - | else if (("Africa" == | |
2711 | - | then [ | |
2712 | - | else if (("Oceania" == | |
2713 | - | then [ | |
2694 | + | ev(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5) | |
2695 | + | } | |
2696 | + | func lx (en,O) = { | |
2697 | + | let iQ = value(assetInfo(fromBase58String(O))) | |
2698 | + | let iU = split(iQ.description, "_") | |
2699 | + | let hx = (dj(iU[cR]) / cq) | |
2700 | + | let lw = iU[cT] | |
2701 | + | let gc = gi(iU[cS]) | |
2702 | + | let gK = value(indexOf(aM, lw)) | |
2703 | + | let kg = split(en[gK], "_") | |
2704 | + | let ly = makeString(ga(kg, gc, hx, 1), "_") | |
2705 | + | let cj = lw | |
2706 | + | if (("Americas" == cj)) | |
2707 | + | then [ly, en[1], en[2], en[3], en[4]] | |
2708 | + | else if (("Europe" == cj)) | |
2709 | + | then [en[0], ly, en[2], en[3], en[4]] | |
2710 | + | else if (("Asia" == cj)) | |
2711 | + | then [en[0], en[1], ly, en[3], en[4]] | |
2712 | + | else if (("Africa" == cj)) | |
2713 | + | then [en[0], en[1], en[2], ly, en[4]] | |
2714 | + | else if (("Oceania" == cj)) | |
2715 | + | then [en[0], en[1], en[2], en[3], ly] | |
2714 | 2716 | else throw("wrong continent") | |
2715 | 2717 | } | |
2716 | 2718 | ||
2717 | - | let | |
2718 | - | let | |
2719 | - | let | |
2720 | - | let | |
2721 | - | func | |
2722 | - | then | |
2723 | - | else | |
2724 | - | ||
2725 | - | func | |
2726 | - | then | |
2719 | + | let ey = { | |
2720 | + | let ep = jR | |
2721 | + | let eq = size(ep) | |
2722 | + | let er = fQ | |
2723 | + | func hd (et,eu) = if ((eu >= eq)) | |
2724 | + | then et | |
2725 | + | else lx(et, ep[eu]) | |
2726 | + | ||
2727 | + | func he (et,eu) = if ((eu >= eq)) | |
2728 | + | then et | |
2727 | 2729 | else throw("List size exceeds 100") | |
2728 | 2730 | ||
2729 | - | hd( | |
2730 | - | } | |
2731 | - | $Tuple2([StringEntry( | |
2731 | + | he(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(er, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100) | |
2732 | + | } | |
2733 | + | $Tuple2([StringEntry(cZ("Americas"), ey[0]), StringEntry(cZ("Europe"), ey[1]), StringEntry(cZ("Asia"), ey[2]), StringEntry(cZ("Africa"), ey[3]), StringEntry(cZ("Oceania"), ey[4])], 0) | |
2732 | 2734 | } | |
2733 | 2735 | ||
2734 | 2736 | ||
2735 | 2737 | ||
2736 | - | @Callable( | |
2737 | - | func fixStakedPieces ( | |
2738 | + | @Callable(gg) | |
2739 | + | func fixStakedPieces (cx) = if ((gg.caller != cL)) | |
2738 | 2740 | then throw("Access denied") | |
2739 | 2741 | else { | |
2740 | - | let | |
2742 | + | let kk = if ((cx == "")) | |
2741 | 2743 | then 0 | |
2742 | 2744 | else { | |
2743 | - | let | |
2744 | - | let | |
2745 | - | then split_51C(value( | |
2745 | + | let kd = getString(al, db(cx)) | |
2746 | + | let jZ = if (isDefined(kd)) | |
2747 | + | then split_51C(value(kd), "_") | |
2746 | 2748 | else nil | |
2747 | - | func | |
2748 | - | let | |
2749 | - | let | |
2750 | - | ( | |
2749 | + | func lz (en,O) = { | |
2750 | + | let iQ = value(assetInfo(fromBase58String(O))) | |
2751 | + | let dk = split(iQ.description, "_")[cR] | |
2752 | + | (en + dj(dk)) | |
2751 | 2753 | } | |
2752 | 2754 | ||
2753 | - | let | |
2754 | - | let | |
2755 | - | let | |
2756 | - | func | |
2757 | - | then | |
2758 | - | else | |
2759 | - | ||
2760 | - | func | |
2761 | - | then | |
2755 | + | let ep = jZ | |
2756 | + | let eq = size(ep) | |
2757 | + | let er = 0 | |
2758 | + | func es (et,eu) = if ((eu >= eq)) | |
2759 | + | then et | |
2760 | + | else lz(et, ep[eu]) | |
2761 | + | ||
2762 | + | func ev (et,eu) = if ((eu >= eq)) | |
2763 | + | then et | |
2762 | 2764 | else throw("List size exceeds 100") | |
2763 | 2765 | ||
2764 | - | | |
2766 | + | ev(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100) | |
2765 | 2767 | } | |
2766 | - | $Tuple2([IntegerEntry( | |
2768 | + | $Tuple2([IntegerEntry(dc(cx), kk)], kk) | |
2767 | 2769 | } | |
2768 | 2770 | ||
2769 | 2771 | ||
2770 | 2772 | ||
2771 | - | @Callable( | |
2772 | - | func setCustomName (bm, | |
2773 | - | let | |
2774 | - | if ((size( | |
2773 | + | @Callable(gg) | |
2774 | + | func setCustomName (bm,kb,bq) = { | |
2775 | + | let kt = kq(gg) | |
2776 | + | if ((size(gg.payments) != 1)) | |
2775 | 2777 | then throw("Exactly one payment required") | |
2776 | 2778 | else { | |
2777 | - | let | |
2778 | - | if (( | |
2779 | + | let ku = value(gg.payments[0]) | |
2780 | + | if ((ku.assetId != ci)) | |
2779 | 2781 | then throw("Allowed USDT payment only!") | |
2780 | - | else if (( | |
2781 | - | then throw(("Payment should be " + toString( | |
2782 | - | else if (contains( | |
2783 | - | then throw(("Name should not contain '__': " + | |
2784 | - | else if ((size( | |
2785 | - | then throw(("Name too long, maxLength=" + toString( | |
2782 | + | else if ((ku.amount != dz)) | |
2783 | + | then throw(("Payment should be " + toString(dz))) | |
2784 | + | else if (contains(kb, "__")) | |
2785 | + | then throw(("Name should not contain '__': " + kb)) | |
2786 | + | else if ((size(kb) > dA)) | |
2787 | + | then throw(("Name too long, maxLength=" + toString(dA))) | |
2786 | 2788 | else { | |
2787 | - | let b = toString( | |
2788 | - | let | |
2789 | - | let | |
2790 | - | if (("ACCOUNT" == | |
2789 | + | let b = toString(gg.originCaller) | |
2790 | + | let lA = { | |
2791 | + | let cj = bq | |
2792 | + | if (("ACCOUNT" == cj)) | |
2791 | 2793 | then { | |
2792 | - | let | |
2793 | - | let | |
2794 | - | if (isDefined( | |
2795 | - | then throw(("Name already registered: " + | |
2794 | + | let lB = dT(kb) | |
2795 | + | let lC = getString(lB) | |
2796 | + | if (isDefined(lC)) | |
2797 | + | then throw(("Name already registered: " + kb)) | |
2796 | 2798 | else { | |
2797 | - | let | |
2798 | - | let | |
2799 | - | let | |
2800 | - | then [DeleteEntry( | |
2799 | + | let lD = by(b) | |
2800 | + | let lE = getString(lD) | |
2801 | + | let lF = if (isDefined(lE)) | |
2802 | + | then [DeleteEntry(dT(value(lE)))] | |
2801 | 2803 | else nil | |
2802 | - | ((( | |
2804 | + | (((lF :+ StringEntry(lD, kb)) :+ StringEntry(lB, b)) ++ jD(b, W)._1) | |
2803 | 2805 | } | |
2804 | 2806 | } | |
2805 | - | else if (("LAND" == | |
2807 | + | else if (("LAND" == cj)) | |
2806 | 2808 | then { | |
2807 | - | let | |
2808 | - | let | |
2809 | - | if (!(isDefined(getInteger( | |
2810 | - | then throw(( | |
2809 | + | let iQ = value(assetInfo(fromBase58String(bm))) | |
2810 | + | let iR = bo(bm) | |
2811 | + | if (!(isDefined(getInteger(iR)))) | |
2812 | + | then throw((iQ.name + " is not staked")) | |
2811 | 2813 | else { | |
2812 | - | let | |
2813 | - | if (( | |
2814 | + | let iT = valueOrErrorMessage(getString(bl(bm)), (("NFT " + iQ.name) + " is orphaned")) | |
2815 | + | if ((iT != b)) | |
2814 | 2816 | then throw((aA + " is not yours")) | |
2815 | 2817 | else { | |
2816 | - | let | |
2817 | - | let | |
2818 | - | if (isDefined( | |
2819 | - | then throw(("Name already registered: " + | |
2818 | + | let lB = dM(kb) | |
2819 | + | let lC = getString(lB) | |
2820 | + | if (isDefined(lC)) | |
2821 | + | then throw(("Name already registered: " + kb)) | |
2820 | 2822 | else { | |
2821 | - | let | |
2822 | - | let | |
2823 | - | let | |
2824 | - | then [DeleteEntry( | |
2823 | + | let lG = bn(bm) | |
2824 | + | let lE = getString(lG) | |
2825 | + | let lF = if (isDefined(lE)) | |
2826 | + | then [DeleteEntry(dM(value(lE)))] | |
2825 | 2827 | else nil | |
2826 | - | ((( | |
2828 | + | (((lF :+ StringEntry(lG, kb)) :+ StringEntry(lB, bm)) ++ jD(b, W)._1) | |
2827 | 2829 | } | |
2828 | 2830 | } | |
2829 | 2831 | } | |
2830 | 2832 | } | |
2831 | - | else if (("DUCK" == | |
2833 | + | else if (("DUCK" == cj)) | |
2832 | 2834 | then { | |
2833 | - | let | |
2834 | - | let | |
2835 | - | if (if (!(isDefined(getInteger( | |
2835 | + | let iQ = value(assetInfo(fromBase58String(bm))) | |
2836 | + | let iR = bo(bm) | |
2837 | + | if (if (!(isDefined(getInteger(iR)))) | |
2836 | 2838 | then true | |
2837 | 2839 | else !(isDefined(getString(bE(b))))) | |
2838 | - | then throw(( | |
2840 | + | then throw((iQ.name + " is not staked")) | |
2839 | 2841 | else { | |
2840 | - | let | |
2841 | - | if (( | |
2842 | + | let iT = valueOrErrorMessage(getString(bD(bm)), (("NFT " + iQ.name) + " is orphaned")) | |
2843 | + | if ((iT != b)) | |
2842 | 2844 | then throw((aB + " is not yours")) | |
2843 | 2845 | else { | |
2844 | - | let | |
2845 | - | let | |
2846 | - | if (isDefined( | |
2847 | - | then throw(("Name already registered: " + | |
2846 | + | let lB = dS(kb) | |
2847 | + | let lC = getString(lB) | |
2848 | + | if (isDefined(lC)) | |
2849 | + | then throw(("Name already registered: " + kb)) | |
2848 | 2850 | else { | |
2849 | - | let | |
2850 | - | let | |
2851 | - | let | |
2852 | - | then [DeleteEntry( | |
2851 | + | let lG = bx(bm) | |
2852 | + | let lE = getString(lG) | |
2853 | + | let lF = if (isDefined(lE)) | |
2854 | + | then [DeleteEntry(dS(value(lE)))] | |
2853 | 2855 | else nil | |
2854 | - | ((( | |
2856 | + | (((lF :+ StringEntry(lG, kb)) :+ StringEntry(lB, bm)) ++ jx(bm, W)._1) | |
2855 | 2857 | } | |
2856 | 2858 | } | |
2857 | 2859 | } | |
2858 | 2860 | } | |
2859 | 2861 | else throw("Unknown entity type") | |
2860 | 2862 | } | |
2861 | - | $Tuple2((( | |
2863 | + | $Tuple2(((lA :+ ScriptTransfer(cM, ku.amount, ci)) :+ kt), 0) | |
2862 | 2864 | } | |
2863 | 2865 | } | |
2864 | 2866 | } | |
2865 | 2867 | ||
2866 | 2868 | ||
2867 | 2869 | ||
2868 | - | @Callable( | |
2869 | - | func setReferrals ( | |
2870 | + | @Callable(gg) | |
2871 | + | func setReferrals (lH,lI) = if ((gg.callerPublicKey != dw)) | |
2870 | 2872 | then throw("Permission denied") | |
2871 | 2873 | else { | |
2872 | - | let | |
2873 | - | if ((size( | |
2874 | + | let kt = kq(gg) | |
2875 | + | if ((size(gg.payments) != 0)) | |
2874 | 2876 | then throw("No payments required") | |
2875 | - | else if (!(isDefined(addressFromString( | |
2876 | - | then throw(("Invalid address: " + | |
2877 | - | else if (!(isDefined(addressFromString( | |
2878 | - | then throw(("Invalid address: " + | |
2877 | + | else if (!(isDefined(addressFromString(lH)))) | |
2878 | + | then throw(("Invalid address: " + lH)) | |
2879 | + | else if (!(isDefined(addressFromString(lI)))) | |
2880 | + | then throw(("Invalid address: " + lI)) | |
2879 | 2881 | else { | |
2880 | - | let | |
2881 | - | let | |
2882 | - | let | |
2883 | - | then split_4C(value( | |
2882 | + | let lJ = dU() | |
2883 | + | let lK = getString(lJ) | |
2884 | + | let lL = if (isDefined(lK)) | |
2885 | + | then split_4C(value(lK), "_") | |
2884 | 2886 | else nil | |
2885 | - | if (containsElement( | |
2886 | - | then throw(( | |
2887 | + | if (containsElement(lL, lI)) | |
2888 | + | then throw((lI + " is not newbie (already has referrals)")) | |
2887 | 2889 | else { | |
2888 | - | let | |
2889 | - | let | |
2890 | - | if (if (isDefined( | |
2891 | - | then isDefined(addressFromString(value( | |
2890 | + | let jF = bz(lI) | |
2891 | + | let jG = getString(jF) | |
2892 | + | if (if (isDefined(jG)) | |
2893 | + | then isDefined(addressFromString(value(jG))) | |
2892 | 2894 | else false) | |
2893 | - | then throw((( | |
2895 | + | then throw(((lI + " already has refBy: ") + value(jG))) | |
2894 | 2896 | else { | |
2895 | - | let | |
2896 | - | let | |
2897 | - | let | |
2898 | - | then split_4C(value( | |
2897 | + | let lM = bC(lH) | |
2898 | + | let lN = getString(lM) | |
2899 | + | let lO = if (isDefined(lN)) | |
2900 | + | then split_4C(value(lN), "_") | |
2899 | 2901 | else nil | |
2900 | - | if (containsElement( | |
2901 | - | then throw(((( | |
2902 | + | if (containsElement(lO, lI)) | |
2903 | + | then throw((((lH + " already contains ") + lI) + " within referrals")) | |
2902 | 2904 | else { | |
2903 | - | let | |
2904 | - | let | |
2905 | - | then value( | |
2906 | - | else makeString_2C(( | |
2907 | - | $Tuple2([StringEntry( | |
2905 | + | let lP = makeString_2C((lO :+ lI), "_") | |
2906 | + | let lQ = if (containsElement(lL, lH)) | |
2907 | + | then value(lK) | |
2908 | + | else makeString_2C((lL :+ lH), "_") | |
2909 | + | $Tuple2([StringEntry(jF, lH), StringEntry(lM, lP), StringEntry(lJ, lQ), kt], 0) | |
2908 | 2910 | } | |
2909 | 2911 | } | |
2910 | 2912 | } | |
2913 | 2915 | ||
2914 | 2916 | ||
2915 | 2917 | ||
2916 | - | @Callable( | |
2917 | - | func distributePoints ( | |
2918 | - | let | |
2919 | - | if ((size( | |
2918 | + | @Callable(gg) | |
2919 | + | func distributePoints (lR,lS,lT,lU,lV) = { | |
2920 | + | let kt = kq(gg) | |
2921 | + | if ((size(gg.payments) != 0)) | |
2920 | 2922 | then throw("No payments required") | |
2921 | 2923 | else { | |
2922 | - | let b = toString( | |
2924 | + | let b = toString(gg.originCaller) | |
2923 | 2925 | let z = valueOrErrorMessage(getString(bE(b)), "You don't have a duck staked") | |
2924 | - | let | |
2925 | - | let | |
2926 | - | let | |
2927 | - | let | |
2928 | - | let | |
2929 | - | let | |
2930 | - | if (( | |
2931 | - | then throw((("There are only " + toString( | |
2926 | + | let lW = H(b) | |
2927 | + | let lX = valueOrElse(getInteger(al, lW), 0) | |
2928 | + | let lY = D(z) | |
2929 | + | let lZ = valueOrElse(getInteger(al, lY), 0) | |
2930 | + | let ma = (lX + lZ) | |
2931 | + | let mb = ((((lR + lS) + lT) + lU) + lV) | |
2932 | + | if ((mb > ma)) | |
2933 | + | then throw((("There are only " + toString(ma)) + " free points to distribute")) | |
2932 | 2934 | else { | |
2933 | - | let | |
2934 | - | let ao = split(valueOrElse(getString(al, | |
2935 | - | let | |
2936 | - | $Tuple2([IntegerEntry( | |
2935 | + | let mc = A(z) | |
2936 | + | let ao = split(valueOrElse(getString(al, mc), "0_0_0_0_0"), "_") | |
2937 | + | let md = (lX - mb) | |
2938 | + | $Tuple2([IntegerEntry(lW, if ((0 > md)) | |
2937 | 2939 | then 0 | |
2938 | - | else | |
2939 | - | then ( | |
2940 | - | else | |
2940 | + | else md), IntegerEntry(lY, if ((0 > md)) | |
2941 | + | then (lZ + md) | |
2942 | + | else lZ), StringEntry(mc, makeString([toString((parseIntValue(ao[j]) + lR)), toString((parseIntValue(ao[k]) + lS)), toString((parseIntValue(ao[l]) + lT)), toString((parseIntValue(ao[m]) + lU)), toString((parseIntValue(ao[n]) + lV))], "_")), kt], 0) | |
2941 | 2943 | } | |
2942 | 2944 | } | |
2943 | 2945 | } | |
2944 | 2946 | ||
2945 | 2947 | ||
2946 | 2948 | ||
2947 | - | @Callable( | |
2948 | - | func splitByGlobalWeightsREADONLY ( | |
2949 | - | ||
2950 | - | ||
2951 | - | ||
2952 | - | @Callable( | |
2953 | - | func splitByGlobalAndLocalWeightsREADONLY ( | |
2954 | - | let | |
2955 | - | $Tuple2(nil, $Tuple2( | |
2956 | - | } | |
2957 | - | ||
2958 | - | ||
2959 | - | ||
2960 | - | @Callable( | |
2961 | - | func getBackpackREADONLY (z) = $Tuple2(nil, makeString( | |
2962 | - | ||
2963 | - | ||
2964 | - | ||
2965 | - | @Callable( | |
2949 | + | @Callable(gg) | |
2950 | + | func splitByGlobalWeightsREADONLY (ee) = $Tuple2(nil, ew(ee)) | |
2951 | + | ||
2952 | + | ||
2953 | + | ||
2954 | + | @Callable(gg) | |
2955 | + | func splitByGlobalAndLocalWeightsREADONLY (me,mf,gj) = { | |
2956 | + | let gc = gi(gj) | |
2957 | + | $Tuple2(nil, $Tuple2(ew(me), eh(mf, gc))) | |
2958 | + | } | |
2959 | + | ||
2960 | + | ||
2961 | + | ||
2962 | + | @Callable(gg) | |
2963 | + | func getBackpackREADONLY (z) = $Tuple2(nil, makeString(hi(bF(z)), ":")) | |
2964 | + | ||
2965 | + | ||
2966 | + | ||
2967 | + | @Callable(gg) | |
2966 | 2968 | func getWarehouseREADONLY (O) = { | |
2967 | - | let | |
2968 | - | let | |
2969 | - | let | |
2970 | - | $Tuple2(nil, makeString_2C( | |
2971 | - | } | |
2972 | - | ||
2973 | - | ||
2974 | - | ||
2975 | - | @Callable( | |
2969 | + | let iQ = value(assetInfo(fromBase58String(O))) | |
2970 | + | let hx = (dj(split(iQ.description, "_")[cR]) / cq) | |
2971 | + | let hy = valueOrElse(getInteger(bv(O)), 0) | |
2972 | + | $Tuple2(nil, makeString_2C(hv(bu(O), hx, hy), ":")) | |
2973 | + | } | |
2974 | + | ||
2975 | + | ||
2976 | + | ||
2977 | + | @Callable(gg) | |
2976 | 2978 | func saveLastTx () = { | |
2977 | - | let | |
2978 | - | if (if (if (( | |
2979 | - | then ( | |
2979 | + | let ih = gg.caller | |
2980 | + | if (if (if ((ih != cO)) | |
2981 | + | then (ih != cM) | |
2980 | 2982 | else false) | |
2981 | - | then ( | |
2983 | + | then (ih != cP) | |
2982 | 2984 | else false) | |
2983 | 2985 | then throw("Access denied") | |
2984 | - | else $Tuple2([ | |
2985 | - | } | |
2986 | - | ||
2987 | - | ||
2988 | - | ||
2989 | - | @Callable( | |
2990 | - | func updateDuckStats (z, | |
2986 | + | else $Tuple2([kq(gg)], 42) | |
2987 | + | } | |
2988 | + | ||
2989 | + | ||
2990 | + | ||
2991 | + | @Callable(gg) | |
2992 | + | func updateDuckStats (z,jy) = if ((gg.caller != cM)) | |
2991 | 2993 | then throw("Access denied") | |
2992 | - | else | |
2993 | - | ||
2994 | - | ||
2995 | - | ||
2996 | - | @Callable( | |
2997 | - | func updateAccStats (b, | |
2994 | + | else jx(z, jy) | |
2995 | + | ||
2996 | + | ||
2997 | + | ||
2998 | + | @Callable(gg) | |
2999 | + | func updateAccStats (b,jy) = if ((gg.caller != cM)) | |
2998 | 3000 | then throw("Access denied") | |
2999 | - | else | |
3000 | - | ||
3001 | - | ||
3002 | - | ||
3003 | - | @Callable( | |
3004 | - | func equipDuck ( | |
3005 | - | let | |
3006 | - | if ((size( | |
3001 | + | else jD(b, jy) | |
3002 | + | ||
3003 | + | ||
3004 | + | ||
3005 | + | @Callable(gg) | |
3006 | + | func equipDuck (mg) = { | |
3007 | + | let kt = kq(gg) | |
3008 | + | if ((size(gg.payments) != 0)) | |
3007 | 3009 | then throw("No payments required") | |
3008 | 3010 | else { | |
3009 | - | let b = toString( | |
3011 | + | let b = toString(gg.originCaller) | |
3010 | 3012 | let z = valueOrErrorMessage(getString(bE(b)), "You don't have a duck staked") | |
3011 | - | if ( | |
3013 | + | if (jN(z)) | |
3012 | 3014 | then throw("equipDuck_checkTournament") | |
3013 | 3015 | else { | |
3014 | - | let | |
3015 | - | let | |
3016 | - | let | |
3017 | - | let | |
3018 | - | let | |
3019 | - | if ((size( | |
3016 | + | let fT = E(z) | |
3017 | + | let mh = split(valueOrElse(getString(fT), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
3018 | + | let hj = bF(z) | |
3019 | + | let hM = hi(hj) | |
3020 | + | let kM = split(mg, "_") | |
3021 | + | if ((size(kM) != p)) | |
3020 | 3022 | then throw("Wrong equipment string") | |
3021 | 3023 | else { | |
3022 | - | let | |
3023 | - | let | |
3024 | - | let am = if (( | |
3024 | + | let fV = fI(mh, eT(hM[bh]), true, nil) | |
3025 | + | let fW = split(kM[o], ";")[1] | |
3026 | + | let am = if ((fW == "")) | |
3025 | 3027 | then 0 | |
3026 | 3028 | else { | |
3027 | - | let | |
3028 | - | if (( | |
3029 | + | let fX = split(fW, ",")[0] | |
3030 | + | if ((fX == "")) | |
3029 | 3031 | then 0 | |
3030 | 3032 | else { | |
3031 | - | let | |
3032 | - | let | |
3033 | - | let | |
3034 | - | if (if (if (if (if (( | |
3033 | + | let fi = split(fX, ":") | |
3034 | + | let cK = fi[0] | |
3035 | + | let fY = fi[1] | |
3036 | + | if (if (if (if (if ((cK == "06")) | |
3035 | 3037 | then true | |
3036 | - | else ( | |
3038 | + | else (cK == "07")) | |
3037 | 3039 | then true | |
3038 | - | else ( | |
3039 | - | then ( | |
3040 | + | else (cK == "08")) | |
3041 | + | then (fY != "") | |
3040 | 3042 | else false) | |
3041 | - | then (parseIntValue( | |
3043 | + | then (parseIntValue(fY) > 0) | |
3042 | 3044 | else false) | |
3043 | - | then parseIntValue(split(aP[parseIntValue( | |
3045 | + | then parseIntValue(split(aP[parseIntValue(cK)], "_")[aR]) | |
3044 | 3046 | else 0 | |
3045 | 3047 | } | |
3046 | 3048 | } | |
3047 | - | let | |
3048 | - | let | |
3049 | - | let | |
3050 | - | $Tuple2([StringEntry( | |
3049 | + | let fD = ak(this, z, am, true) | |
3050 | + | let fZ = fI(kM, fV, false, fD) | |
3051 | + | let mi = eY(fZ) | |
3052 | + | $Tuple2([StringEntry(fT, mg), StringEntry(hj, makeString_2C([hM[be], hM[bf], hM[bg], mi], ":")), StringEntry(K(z), makeString([toString(fD[7]), toString(fD[8]), toString(fD[9]), toString(fD[10]), toString(fD[11])], "_")), kt], 0) | |
3051 | 3053 | } | |
3052 | 3054 | } | |
3053 | 3055 | } | |
3055 | 3057 | ||
3056 | 3058 | ||
3057 | 3059 | ||
3058 | - | @Callable( | |
3059 | - | func fortificateLand (O, | |
3060 | - | let | |
3061 | - | if ((size( | |
3060 | + | @Callable(gg) | |
3061 | + | func fortificateLand (O,mj) = { | |
3062 | + | let kt = kq(gg) | |
3063 | + | if ((size(gg.payments) != 0)) | |
3062 | 3064 | then throw("No payments required") | |
3063 | 3065 | else { | |
3064 | - | let b = toString( | |
3066 | + | let b = toString(gg.originCaller) | |
3065 | 3067 | let z = valueOrElse(getString(bE(b)), "") | |
3066 | - | let | |
3067 | - | let | |
3068 | - | let | |
3069 | - | let | |
3070 | - | let | |
3071 | - | let | |
3072 | - | let | |
3073 | - | let | |
3074 | - | let | |
3075 | - | let | |
3076 | - | let | |
3077 | - | let | |
3078 | - | let | |
3079 | - | let | |
3080 | - | let | |
3081 | - | let | |
3082 | - | let | |
3083 | - | let | |
3084 | - | let | |
3085 | - | let | |
3086 | - | let | |
3087 | - | let | |
3088 | - | $Tuple2([StringEntry( | |
3089 | - | } | |
3090 | - | } | |
3091 | - | ||
3092 | - | ||
3093 | - | ||
3094 | - | @Callable( | |
3095 | - | func initDuckTourAttempt (z) = if (( | |
3068 | + | let fd = ak(this, z, 0, false) | |
3069 | + | let mk = bw(O) | |
3070 | + | let ml = split(valueOrElse(getString(mk), ":0_15:0_18:0"), "_") | |
3071 | + | let iQ = value(assetInfo(fromBase58String(O))) | |
3072 | + | let hx = (dj(split(iQ.description, "_")[cR]) / cq) | |
3073 | + | let hy = valueOrElse(getInteger(bv(O)), 0) | |
3074 | + | let hw = bu(O) | |
3075 | + | let hB = hv(hw, hx, hy) | |
3076 | + | let mm = split(hB[aZ], "_") | |
3077 | + | let mn = parseIntValue(mm[bb]) | |
3078 | + | let mo = parseIntValue(mm[bc]) | |
3079 | + | let mp = split(mj, "_") | |
3080 | + | let mq = fP(ml, eT(hB[aY]), mn, mo, true, nil) | |
3081 | + | let fV = mq._1 | |
3082 | + | let mr = mq._2 | |
3083 | + | let ms = mq._3 | |
3084 | + | let mt = fP(mp, fV, mr, ms, false, fd) | |
3085 | + | let fZ = mt._1 | |
3086 | + | let mu = mt._2 | |
3087 | + | let mv = mt._3 | |
3088 | + | let mi = eY(fZ) | |
3089 | + | let jw = makeString([mm[ba], toString(mu), toString(mv), mm[bd]], "_") | |
3090 | + | $Tuple2([StringEntry(mk, mj), StringEntry(hw, makeString_2C([hB[aV], hB[aW], hB[aX], mi, jw], ":")), kt], 0) | |
3091 | + | } | |
3092 | + | } | |
3093 | + | ||
3094 | + | ||
3095 | + | ||
3096 | + | @Callable(gg) | |
3097 | + | func initDuckTourAttempt (z) = if ((gg.caller != cP)) | |
3096 | 3098 | then throw("Access denied") | |
3097 | 3099 | else { | |
3098 | - | let | |
3099 | - | let | |
3100 | - | let | |
3101 | - | let | |
3102 | - | let | |
3103 | - | let | |
3104 | - | let bZ = valueOrElse(getInteger( | |
3105 | - | let | |
3106 | - | $Tuple2([ | |
3100 | + | let kt = kq(gg) | |
3101 | + | let iz = y(z) | |
3102 | + | let iA = ae(valueOrElse(getInteger(C(z)), 0)) | |
3103 | + | let kG = valueOrElse(getInteger(iz), iA) | |
3104 | + | let mw = bG(z) | |
3105 | + | let iO = valueOrElse(getString(mw), aI) | |
3106 | + | let bZ = valueOrElse(getInteger(cP, bK), 0) | |
3107 | + | let mx = (toString(bZ) + "_T_0") | |
3108 | + | $Tuple2([kt, IntegerEntry(I(z), kG), IntegerEntry(iz, iA), StringEntry(J(z), iO), StringEntry(mw, mx)], mx) | |
3107 | 3109 | } | |
3108 | 3110 | ||
3109 | 3111 | ||
3110 | 3112 | ||
3111 | - | @Callable( | |
3113 | + | @Callable(gg) | |
3112 | 3114 | func breakAttempt () = { | |
3113 | - | let | |
3114 | - | let z = valueOrErrorMessage(getString(bE(toString( | |
3115 | - | let | |
3116 | - | let | |
3117 | - | if ((split( | |
3115 | + | let kt = kq(gg) | |
3116 | + | let z = valueOrErrorMessage(getString(bE(toString(gg.caller))), "You don't have a duck staked") | |
3117 | + | let mw = bG(z) | |
3118 | + | let iO = valueOrElse(getString(mw), aI) | |
3119 | + | if ((split(iO, "_")[bj] != "T")) | |
3118 | 3120 | then throw("Your duck is not in the tournament") | |
3119 | 3121 | else { | |
3120 | - | let | |
3121 | - | let | |
3122 | - | $Tuple2([ | |
3123 | - | } | |
3124 | - | } | |
3125 | - | ||
3126 | - | ||
3127 | - | ||
3128 | - | @Callable( | |
3129 | - | func exitTournamentInternal (z) = if (( | |
3122 | + | let my = getIntegerValue(I(z)) | |
3123 | + | let mz = getStringValue(J(z)) | |
3124 | + | $Tuple2([kt, IntegerEntry(y(z), my), StringEntry(mw, mz)], iO) | |
3125 | + | } | |
3126 | + | } | |
3127 | + | ||
3128 | + | ||
3129 | + | ||
3130 | + | @Callable(gg) | |
3131 | + | func exitTournamentInternal (z) = if ((gg.caller != this)) | |
3130 | 3132 | then throw("Access denied") | |
3131 | 3133 | else { | |
3132 | - | let | |
3133 | - | let | |
3134 | - | $Tuple2([IntegerEntry(y(z), | |
3134 | + | let my = getIntegerValue(I(z)) | |
3135 | + | let mz = getStringValue(J(z)) | |
3136 | + | $Tuple2([IntegerEntry(y(z), my), StringEntry(bG(z), mz)], false) | |
3135 | 3137 | } | |
3136 | 3138 | ||
3137 | 3139 | ||
3138 | 3140 | ||
3139 | - | @Callable( | |
3140 | - | func prepareRobbery ( | |
3141 | - | let | |
3142 | - | if (!(sigVerify_8Kb( | |
3141 | + | @Callable(gg) | |
3142 | + | func prepareRobbery (io,ip) = { | |
3143 | + | let kt = kq(gg) | |
3144 | + | if (!(sigVerify_8Kb(io, ip, dw))) | |
3143 | 3145 | then throw("signature does not match") | |
3144 | - | else if ((size( | |
3146 | + | else if ((size(gg.payments) != 1)) | |
3145 | 3147 | then throw("exactly 1 payment must be attached") | |
3146 | 3148 | else { | |
3147 | - | let | |
3148 | - | let | |
3149 | - | if (if (!(isDefined( | |
3149 | + | let ku = gg.payments[0] | |
3150 | + | let mA = ku.amount | |
3151 | + | if (if (!(isDefined(ku.assetId))) | |
3150 | 3152 | then true | |
3151 | - | else (value( | |
3153 | + | else (value(ku.assetId) != cV)) | |
3152 | 3154 | then throw("WLGOLD payments only!") | |
3153 | 3155 | else { | |
3154 | - | let | |
3155 | - | if ((size( | |
3156 | + | let eL = split(toUtf8String(io), "|") | |
3157 | + | if ((size(eL) != 2)) | |
3156 | 3158 | then throw("Wrong message format") | |
3157 | 3159 | else { | |
3158 | - | let z = | |
3160 | + | let z = eL[0] | |
3159 | 3161 | let aw = as(this, z)._1 | |
3160 | - | if ((aw > | |
3161 | - | then throw(((("Payment " + toString( | |
3162 | + | if ((aw > mA)) | |
3163 | + | then throw(((("Payment " + toString(mA)) + " < required ") + toString(aw))) | |
3162 | 3164 | else { | |
3163 | - | let | |
3165 | + | let mB = split(eL[1], "_") | |
3164 | 3166 | let av = lastBlock.timestamp | |
3165 | 3167 | let ax = valueOrElse(getInteger(Q(z)), 0) | |
3166 | 3168 | let ay = valueOrElse(getString(R(z)), "") | |
3170 | 3172 | else false) | |
3171 | 3173 | then throw(("You already started robbing, wait till " + toString(az))) | |
3172 | 3174 | else { | |
3173 | - | func | |
3174 | - | let | |
3175 | - | let | |
3176 | - | if (( | |
3175 | + | func mC (en,O) = { | |
3176 | + | let mD = valueOrElse(getInteger(N(O)), 0) | |
3177 | + | let mE = valueOrElse(getInteger(P(O)), 0) | |
3178 | + | if ((mD > size(t))) | |
3177 | 3179 | then throw("Invalid state") | |
3178 | - | else if ((av > | |
3180 | + | else if ((av > mE)) | |
3179 | 3181 | then { | |
3180 | - | let | |
3181 | - | if ((0 >= | |
3182 | - | then | |
3182 | + | let mF = valueOrElse(getInteger(bo(O)), 0) | |
3183 | + | if ((0 >= mF)) | |
3184 | + | then en | |
3183 | 3185 | else { | |
3184 | - | let | |
3185 | - | let | |
3186 | - | let | |
3187 | - | let | |
3188 | - | let | |
3189 | - | let | |
3190 | - | if ((u > | |
3191 | - | then | |
3192 | - | else ( | |
3186 | + | let fN = value(assetInfo(fromBase58String(O))) | |
3187 | + | let iU = split(fN.description, "_") | |
3188 | + | let iG = dj(iU[cR]) | |
3189 | + | let mG = iF(O, iG) | |
3190 | + | let gm = (av - mF) | |
3191 | + | let iX = fraction(gm, (mG * iG), aG) | |
3192 | + | if ((u > iX)) | |
3193 | + | then en | |
3194 | + | else (en :+ O) | |
3193 | 3195 | } | |
3194 | 3196 | } | |
3195 | - | else | |
3197 | + | else en | |
3196 | 3198 | } | |
3197 | 3199 | ||
3198 | - | let | |
3199 | - | let | |
3200 | - | let | |
3201 | - | let | |
3202 | - | func | |
3203 | - | then | |
3204 | - | else | |
3205 | - | ||
3206 | - | func | |
3207 | - | then | |
3200 | + | let mH = { | |
3201 | + | let ep = mB | |
3202 | + | let eq = size(ep) | |
3203 | + | let er = nil | |
3204 | + | func es (et,eu) = if ((eu >= eq)) | |
3205 | + | then et | |
3206 | + | else mC(et, ep[eu]) | |
3207 | + | ||
3208 | + | func ev (et,eu) = if ((eu >= eq)) | |
3209 | + | then et | |
3208 | 3210 | else throw("List size exceeds 10") | |
3209 | 3211 | ||
3210 | - | | |
3212 | + | ev(es(es(es(es(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
3211 | 3213 | } | |
3212 | - | if ((size( | |
3214 | + | if ((size(mH) == 0)) | |
3213 | 3215 | then throw("No candidates for robbery") | |
3214 | 3216 | else { | |
3215 | - | let | |
3216 | - | let O = | |
3217 | - | $Tuple2([IntegerEntry(N(O), v), IntegerEntry(P(O), (av + t[v])), IntegerEntry(Q(z), x), StringEntry(R(z), O), | |
3217 | + | let mI = do(size(mH), height, (ip + gg.transactionId)) | |
3218 | + | let O = mH[mI] | |
3219 | + | $Tuple2([IntegerEntry(N(O), v), IntegerEntry(P(O), (av + t[v])), IntegerEntry(Q(z), x), StringEntry(R(z), O), kt], O) | |
3218 | 3220 | } | |
3219 | 3221 | } | |
3220 | 3222 | } | |
3225 | 3227 | ||
3226 | 3228 | ||
3227 | 3229 | ||
3228 | - | @Callable( | |
3229 | - | func robLand ( | |
3230 | - | let | |
3231 | - | if (!(sigVerify_8Kb( | |
3230 | + | @Callable(gg) | |
3231 | + | func robLand (io,ip) = { | |
3232 | + | let kt = kq(gg) | |
3233 | + | if (!(sigVerify_8Kb(io, ip, dw))) | |
3232 | 3234 | then throw("signature does not match") | |
3233 | - | else $Tuple2([ks], 0) | |
3234 | - | } | |
3235 | + | else { | |
3236 | + | let bI = toString(gg.caller) | |
3237 | + | let z = valueOrErrorMessage(getString(bE(bI)), "You don't have a duck staked") | |
3238 | + | let av = lastBlock.timestamp | |
3239 | + | $Tuple2([kt, IntegerEntry(L(z), av)], 0) | |
3240 | + | } | |
3241 | + | } | |
3242 | + | ||
3243 | + | ||
3244 | + | ||
3245 | + | @Callable(gg) | |
3246 | + | func deliver (io,ip) = if (!(cg)) | |
3247 | + | then throw("Delivery feature is turned off!") | |
3248 | + | else { | |
3249 | + | let kt = kq(gg) | |
3250 | + | if (!(sigVerify_8Kb(io, ip, dw))) | |
3251 | + | then throw("signature does not match") | |
3252 | + | else $Tuple2([kt], 0) | |
3253 | + | } | |
3235 | 3254 | ||
3236 | 3255 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func a (b) = ("lastArbTimeUser_" + b) | |
5 | 5 | ||
6 | 6 | ||
7 | 7 | let c = 100000000 | |
8 | 8 | ||
9 | 9 | let d = 3200 | |
10 | 10 | ||
11 | 11 | let e = 4000 | |
12 | 12 | ||
13 | 13 | let f = 3 | |
14 | 14 | ||
15 | 15 | let g = 100000000 | |
16 | 16 | ||
17 | 17 | let h = 400 | |
18 | 18 | ||
19 | 19 | let i = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"] | |
20 | 20 | ||
21 | 21 | let j = 0 | |
22 | 22 | ||
23 | 23 | let k = 1 | |
24 | 24 | ||
25 | 25 | let l = 2 | |
26 | 26 | ||
27 | 27 | let m = 3 | |
28 | 28 | ||
29 | 29 | let n = 4 | |
30 | 30 | ||
31 | 31 | let o = 0 | |
32 | 32 | ||
33 | 33 | let p = 6 | |
34 | 34 | ||
35 | 35 | let q = 2 | |
36 | 36 | ||
37 | 37 | let r = 2 | |
38 | 38 | ||
39 | 39 | let s = 30 | |
40 | 40 | ||
41 | 41 | let t = [0, 600000, 900000, 43200000, 21600000] | |
42 | 42 | ||
43 | 43 | let u = 20000000 | |
44 | 44 | ||
45 | 45 | let v = 1 | |
46 | 46 | ||
47 | 47 | let w = 0 | |
48 | 48 | ||
49 | 49 | let x = 1 | |
50 | 50 | ||
51 | 51 | func y (z) = ("duckHealth_" + z) | |
52 | 52 | ||
53 | 53 | ||
54 | 54 | func A (z) = ("duckChars_" + z) | |
55 | 55 | ||
56 | 56 | ||
57 | 57 | func B (z) = ("duckXP_" + z) | |
58 | 58 | ||
59 | 59 | ||
60 | 60 | func C (z) = ("duckLevel_" + z) | |
61 | 61 | ||
62 | 62 | ||
63 | 63 | func D (z) = ("duckFreePoints_" + z) | |
64 | 64 | ||
65 | 65 | ||
66 | 66 | func E (z) = ("duckEquipment_" + z) | |
67 | 67 | ||
68 | 68 | ||
69 | 69 | func F (b) = ("userXP_" + b) | |
70 | 70 | ||
71 | 71 | ||
72 | 72 | func G (b) = ("userLevel_" + b) | |
73 | 73 | ||
74 | 74 | ||
75 | 75 | func H (b) = ("userFreePoints_" + b) | |
76 | 76 | ||
77 | 77 | ||
78 | 78 | func I (z) = ("savedHealth_" + z) | |
79 | 79 | ||
80 | 80 | ||
81 | 81 | func J (z) = ("savedLocation_" + z) | |
82 | 82 | ||
83 | 83 | ||
84 | 84 | func K (z) = ("duckBuffs_" + z) | |
85 | 85 | ||
86 | 86 | ||
87 | 87 | func L (z) = ("lastRobberyTime_" + z) | |
88 | 88 | ||
89 | 89 | ||
90 | 90 | func M (z) = ("lastRobberyCost_" + z) | |
91 | 91 | ||
92 | 92 | ||
93 | 93 | func N (O) = ("landRobberyState_" + O) | |
94 | 94 | ||
95 | 95 | ||
96 | 96 | func P (O) = ("landCooldownETA_" + O) | |
97 | 97 | ||
98 | 98 | ||
99 | 99 | func Q (z) = ("duckRobberyState_" + z) | |
100 | 100 | ||
101 | 101 | ||
102 | 102 | func R (z) = ("lockedLandByDuck_" + z) | |
103 | 103 | ||
104 | 104 | ||
105 | 105 | let S = 10000 | |
106 | 106 | ||
107 | 107 | let T = 10000 | |
108 | 108 | ||
109 | 109 | let U = 2000 | |
110 | 110 | ||
111 | 111 | let V = 100000 | |
112 | 112 | ||
113 | 113 | let W = 1000000 | |
114 | 114 | ||
115 | 115 | let X = 5000000 | |
116 | 116 | ||
117 | 117 | let Y = 10000 | |
118 | 118 | ||
119 | 119 | let Z = 1000000 | |
120 | 120 | ||
121 | 121 | let aa = 1000000 | |
122 | 122 | ||
123 | 123 | let ab = 10000 | |
124 | 124 | ||
125 | 125 | func ac (ad) = fraction(d, pow(ad, 4, e, 4, 4, DOWN), c) | |
126 | 126 | ||
127 | 127 | ||
128 | 128 | func ae (af) = (100 + af) | |
129 | 129 | ||
130 | 130 | ||
131 | 131 | func ag (ah,ai) = { | |
132 | 132 | let aj = ac(ai) | |
133 | 133 | [aj, (f * (aj - ah))] | |
134 | 134 | } | |
135 | 135 | ||
136 | 136 | ||
137 | 137 | func ak (al,z,am,an) = { | |
138 | 138 | let ao = split(valueOrElse(getString(al, A(z)), "0_0_0_0_0"), "_") | |
139 | 139 | let ap = valueOrElse(getInteger(al, C(z)), 0) | |
140 | 140 | let aq = valueOrElse(getInteger(al, y(z)), ae(ap)) | |
141 | 141 | let ar = split(valueOrElse(getString(al, K(z)), "0_0_0_0_0"), "_") | |
142 | 142 | ([parseIntValue(ao[j]), parseIntValue(ao[k]), parseIntValue(ao[l]), parseIntValue(ao[m]), parseIntValue(ao[n]), ap, aq] ++ (if (an) | |
143 | 143 | then [am, am, am, am, am] | |
144 | 144 | else [parseIntValue(ar[j]), parseIntValue(ar[k]), parseIntValue(ar[l]), parseIntValue(ar[m]), parseIntValue(ar[n])])) | |
145 | 145 | } | |
146 | 146 | ||
147 | 147 | ||
148 | 148 | func as (al,z) = { | |
149 | 149 | let at = valueOrElse(getInteger(al, M(z)), 0) | |
150 | 150 | let au = valueOrElse(getInteger(al, L(z)), 0) | |
151 | 151 | let av = lastBlock.timestamp | |
152 | 152 | let aw = max([g, (at - (h * (av - au)))]) | |
153 | 153 | let ax = valueOrElse(getInteger(al, Q(z)), 0) | |
154 | 154 | let ay = valueOrElse(getString(al, R(z)), "") | |
155 | 155 | let az = valueOrElse(getInteger(al, P(ay)), 0) | |
156 | 156 | $Tuple5(aw, au, ax, ay, az) | |
157 | 157 | } | |
158 | 158 | ||
159 | 159 | ||
160 | 160 | let aA = "LAND" | |
161 | 161 | ||
162 | 162 | let aB = "DUCK" | |
163 | 163 | ||
164 | 164 | let aC = "PRESALE" | |
165 | 165 | ||
166 | 166 | let aD = 6 | |
167 | 167 | ||
168 | 168 | let aE = 25 | |
169 | 169 | ||
170 | 170 | let aF = 3456000 | |
171 | 171 | ||
172 | 172 | let aG = 86400000 | |
173 | 173 | ||
174 | 174 | let aH = 10000000000 | |
175 | 175 | ||
176 | 176 | let aI = "Africa_F_Africa" | |
177 | 177 | ||
178 | 178 | let aJ = 39637 | |
179 | 179 | ||
180 | 180 | let aK = 10 | |
181 | 181 | ||
182 | 182 | let aL = ["First Aid Kit L1", "First Aid Kit L2", "First Aid Kit L3", "Backpack L1", "Backpack L2", "Backpack L3", "Food Ration L1", "Food Ration L2", "Food Ration L3", "Jet Pack L1", "Jet Pack L2", "Jet Pack L3", "Shield L1", "Shield L2", "Shield L3", "Mine L1", "Mine L2", "Mine L3", "Trap L1", "Trap L2", "Trap L3"] | |
183 | 183 | ||
184 | 184 | let aM = ["Americas", "Europe", "Asia", "Africa", "Oceania"] | |
185 | 185 | ||
186 | 186 | let aN = 10000000 | |
187 | 187 | ||
188 | 188 | let aO = [15, 16, 17, 18, 19, 20] | |
189 | 189 | ||
190 | 190 | let aP = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_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_"] | |
191 | 191 | ||
192 | 192 | let aQ = 6 | |
193 | 193 | ||
194 | 194 | let aR = 8 | |
195 | 195 | ||
196 | 196 | let aS = 9 | |
197 | 197 | ||
198 | 198 | let aT = 10 | |
199 | 199 | ||
200 | 200 | let aU = 10 | |
201 | 201 | ||
202 | 202 | let aV = 0 | |
203 | 203 | ||
204 | 204 | let aW = 1 | |
205 | 205 | ||
206 | 206 | let aX = 2 | |
207 | 207 | ||
208 | 208 | let aY = 3 | |
209 | 209 | ||
210 | 210 | let aZ = 4 | |
211 | 211 | ||
212 | 212 | let ba = 0 | |
213 | 213 | ||
214 | 214 | let bb = 1 | |
215 | 215 | ||
216 | 216 | let bc = 2 | |
217 | 217 | ||
218 | 218 | let bd = 3 | |
219 | 219 | ||
220 | 220 | let be = 0 | |
221 | 221 | ||
222 | 222 | let bf = 1 | |
223 | 223 | ||
224 | 224 | let bg = 2 | |
225 | 225 | ||
226 | 226 | let bh = 3 | |
227 | 227 | ||
228 | 228 | let bi = 0 | |
229 | 229 | ||
230 | 230 | let bj = 1 | |
231 | 231 | ||
232 | 232 | let bk = 2 | |
233 | 233 | ||
234 | 234 | func bl (bm) = ("no_" + bm) | |
235 | 235 | ||
236 | 236 | ||
237 | 237 | func bn (bm) = ("lcna_" + bm) | |
238 | 238 | ||
239 | 239 | ||
240 | 240 | func bo (bm) = ("st_" + bm) | |
241 | 241 | ||
242 | 242 | ||
243 | 243 | func bp (bq,bm) = makeString(["las", bq, bm], "_") | |
244 | 244 | ||
245 | 245 | ||
246 | 246 | func br (bs,bm,bt) = ((((("sttao_" + bs) + "_") + bm) + "_") + bt) | |
247 | 247 | ||
248 | 248 | ||
249 | 249 | func bu (O) = ("wh_" + O) | |
250 | 250 | ||
251 | 251 | ||
252 | 252 | func bv (bm) = ("infraLevel_" + bm) | |
253 | 253 | ||
254 | 254 | ||
255 | 255 | func bw (O) = ("fortifications_" + O) | |
256 | 256 | ||
257 | 257 | ||
258 | 258 | func bx (bm) = ("duckCustomNameByAssetId_" + bm) | |
259 | 259 | ||
260 | 260 | ||
261 | 261 | func by (b) = ("accountCustomNameByAddr_" + b) | |
262 | 262 | ||
263 | 263 | ||
264 | 264 | func bz (b) = ("accRefBy_" + b) | |
265 | 265 | ||
266 | 266 | ||
267 | 267 | func bA (z) = ("onboardArtActivatedOnDuck_" + z) | |
268 | 268 | ||
269 | 269 | ||
270 | 270 | func bB (b) = ("onboardArtActivatedDuckBy_" + b) | |
271 | 271 | ||
272 | 272 | ||
273 | 273 | func bC (b) = ("accReferrals_" + b) | |
274 | 274 | ||
275 | 275 | ||
276 | 276 | func bD (bm) = ("duckOwner_" + bm) | |
277 | 277 | ||
278 | 278 | ||
279 | 279 | func bE (bt) = ("stakedDuckByOwner_" + bt) | |
280 | 280 | ||
281 | 281 | ||
282 | 282 | func bF (z) = ("backPack_" + z) | |
283 | 283 | ||
284 | 284 | ||
285 | 285 | func bG (z) = ("duckLocation_" + z) | |
286 | 286 | ||
287 | 287 | ||
288 | 288 | func bH (bI) = ("%s%s__userGwlReleaseTime__" + bI) | |
289 | 289 | ||
290 | 290 | ||
291 | 291 | func bJ () = "emergencyWarehouseProducts" | |
292 | 292 | ||
293 | 293 | ||
294 | 294 | let bK = "%s__lastTourId" | |
295 | 295 | ||
296 | 296 | func bL (bM) = ("%s%d__tourStaticData__" + toString(bM)) | |
297 | 297 | ||
298 | 298 | ||
299 | 299 | func bN (bM) = ("%s%d__tourDynamicData__" + toString(bM)) | |
300 | 300 | ||
301 | 301 | ||
302 | 302 | func bO (bM,z) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bM), z], "__") | |
303 | 303 | ||
304 | 304 | ||
305 | 305 | let bP = 0 | |
306 | 306 | ||
307 | 307 | let bQ = 1 | |
308 | 308 | ||
309 | 309 | let bR = 6 | |
310 | 310 | ||
311 | 311 | let bS = 1 | |
312 | 312 | ||
313 | 313 | func bT (bU,bM) = { | |
314 | 314 | let bV = split(valueOrErrorMessage(getString(bU, bL(bM)), (("Error reading tournament " + toString(bM)) + " data")), "__") | |
315 | 315 | let bW = split_4C(valueOrErrorMessage(getString(bU, bN(bM)), (("Error reading tournament " + toString(bM)) + " data")), "__") | |
316 | 316 | [bV, bW] | |
317 | 317 | } | |
318 | 318 | ||
319 | 319 | ||
320 | 320 | func bX (bU,bY) = { | |
321 | 321 | let bZ = valueOrElse(getInteger(bU, bK), 0) | |
322 | 322 | let ca = split(bY, "_") | |
323 | 323 | let av = lastBlock.timestamp | |
324 | 324 | let cb = bT(bU, bZ) | |
325 | 325 | let bV = cb[bP] | |
326 | 326 | let bW = cb[bQ] | |
327 | 327 | if (if (if ((ca[bj] == "T")) | |
328 | 328 | then (parseIntValue(ca[bi]) == bZ) | |
329 | 329 | else false) | |
330 | 330 | then (bW[bS] == "INPROGRESS") | |
331 | 331 | else false) | |
332 | 332 | then (parseIntValue(bV[bR]) > av) | |
333 | 333 | else false | |
334 | 334 | } | |
335 | 335 | ||
336 | 336 | ||
337 | 337 | func cc (cd) = (parseIntValue(cd[aQ]) * aN) | |
338 | 338 | ||
339 | 339 | ||
340 | 340 | let ce = false | |
341 | 341 | ||
342 | 342 | let cf = false | |
343 | 343 | ||
344 | - | let cg = take(drop(this.bytes, 1), 1) | |
345 | - | ||
346 | - | let ch = { | |
347 | - | let ci = cg | |
348 | - | if ((base58'2W' == ci)) | |
344 | + | let cg = false | |
345 | + | ||
346 | + | let ch = take(drop(this.bytes, 1), 1) | |
347 | + | ||
348 | + | let ci = { | |
349 | + | let cj = ch | |
350 | + | if ((base58'2W' == cj)) | |
349 | 351 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
350 | - | else if ((base58'2T' == | |
352 | + | else if ((base58'2T' == cj)) | |
351 | 353 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
352 | 354 | else throw("Unknown chain") | |
353 | 355 | } | |
354 | 356 | ||
355 | - | let | |
356 | - | let | |
357 | - | if ((base58'2W' == | |
357 | + | let ck = { | |
358 | + | let cj = ch | |
359 | + | if ((base58'2W' == cj)) | |
358 | 360 | then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv" | |
359 | - | else if ((base58'2T' == | |
361 | + | else if ((base58'2T' == cj)) | |
360 | 362 | then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy" | |
361 | 363 | else throw("Unknown chain") | |
362 | 364 | } | |
363 | 365 | ||
364 | - | let | |
365 | - | let | |
366 | - | if ((base58'2W' == | |
366 | + | let cl = { | |
367 | + | let cj = ch | |
368 | + | if ((base58'2W' == cj)) | |
367 | 369 | then 10000000000 | |
368 | - | else if ((base58'2T' == | |
370 | + | else if ((base58'2T' == cj)) | |
369 | 371 | then 100000000 | |
370 | 372 | else throw("Unknown chain") | |
371 | 373 | } | |
372 | 374 | ||
373 | - | let | |
374 | - | let | |
375 | - | if ((base58'2W' == | |
375 | + | let cm = { | |
376 | + | let cj = ch | |
377 | + | if ((base58'2W' == cj)) | |
376 | 378 | then 86400000 | |
377 | - | else if ((base58'2T' == | |
379 | + | else if ((base58'2T' == cj)) | |
378 | 380 | then 60000 | |
379 | 381 | else throw("Unknown chain") | |
380 | 382 | } | |
381 | 383 | ||
382 | - | let | |
383 | - | ||
384 | - | let | |
385 | - | ||
386 | - | let | |
387 | - | ||
388 | - | let | |
389 | - | ||
390 | - | let | |
391 | - | ||
392 | - | let | |
393 | - | ||
394 | - | let | |
395 | - | ||
396 | - | let | |
397 | - | ||
398 | - | let | |
399 | - | ||
400 | - | func | |
401 | - | ||
402 | - | ||
403 | - | let | |
404 | - | ||
405 | - | let | |
406 | - | ||
407 | - | let | |
408 | - | ||
409 | - | let | |
410 | - | ||
411 | - | let | |
412 | - | ||
413 | - | func | |
414 | - | ||
415 | - | ||
416 | - | func | |
417 | - | ||
418 | - | ||
419 | - | func | |
420 | - | ||
421 | - | ||
422 | - | func | |
423 | - | ||
424 | - | ||
425 | - | let | |
426 | - | ||
427 | - | let | |
428 | - | ||
429 | - | let al = | |
430 | - | ||
431 | - | let | |
432 | - | ||
433 | - | let | |
434 | - | ||
435 | - | let | |
436 | - | ||
437 | - | let | |
438 | - | ||
439 | - | let | |
440 | - | ||
441 | - | let | |
442 | - | ||
443 | - | let | |
444 | - | ||
445 | - | let | |
446 | - | ||
447 | - | let | |
448 | - | ||
449 | - | let | |
450 | - | ||
451 | - | let | |
452 | - | ||
453 | - | func | |
454 | - | ||
455 | - | ||
456 | - | func | |
457 | - | ||
458 | - | ||
459 | - | func | |
460 | - | ||
461 | - | ||
462 | - | func | |
463 | - | ||
464 | - | ||
465 | - | func | |
466 | - | ||
467 | - | ||
468 | - | func | |
469 | - | let | |
470 | - | if ($isInstanceOf( | |
384 | + | let cn = "__" | |
385 | + | ||
386 | + | let co = 1000000 | |
387 | + | ||
388 | + | let cp = 100000000 | |
389 | + | ||
390 | + | let cq = 25 | |
391 | + | ||
392 | + | let cr = 100 | |
393 | + | ||
394 | + | let cs = 225 | |
395 | + | ||
396 | + | let ct = 400 | |
397 | + | ||
398 | + | let cu = 625 | |
399 | + | ||
400 | + | let cv = [0, 1, 2, 3, 4, 5] | |
401 | + | ||
402 | + | func cw (cx,cy) = valueOrErrorMessage(getString(cx, cy), makeString(["mandatory ", toString(cx), ".", cy, " is not defined"], "")) | |
403 | + | ||
404 | + | ||
405 | + | let cz = 1 | |
406 | + | ||
407 | + | let cA = 2 | |
408 | + | ||
409 | + | let cB = 3 | |
410 | + | ||
411 | + | let cC = 4 | |
412 | + | ||
413 | + | let cD = 7 | |
414 | + | ||
415 | + | func cE () = "%s__restConfig" | |
416 | + | ||
417 | + | ||
418 | + | func cF () = "%s__restAddr" | |
419 | + | ||
420 | + | ||
421 | + | func cG (cH) = split_4C(cw(cH, cE()), cn) | |
422 | + | ||
423 | + | ||
424 | + | func cI (cJ,cK) = valueOrErrorMessage(addressFromString(cJ[cK]), ("Rest cfg doesn't contain address at index " + toString(cK))) | |
425 | + | ||
426 | + | ||
427 | + | let cL = addressFromStringValue(valueOrElse(getString(this, cF()), ck)) | |
428 | + | ||
429 | + | let cJ = cG(cL) | |
430 | + | ||
431 | + | let al = cI(cJ, cz) | |
432 | + | ||
433 | + | let cM = cI(cJ, cA) | |
434 | + | ||
435 | + | let cN = cI(cJ, cB) | |
436 | + | ||
437 | + | let cO = cI(cJ, cC) | |
438 | + | ||
439 | + | let cP = cI(cJ, cD) | |
440 | + | ||
441 | + | let cQ = 0 | |
442 | + | ||
443 | + | let cR = 1 | |
444 | + | ||
445 | + | let cS = 2 | |
446 | + | ||
447 | + | let cT = 3 | |
448 | + | ||
449 | + | let cU = "wlg_assetId" | |
450 | + | ||
451 | + | let cV = valueOrErrorMessage(getBinary(cO, cU), "Not initialized yet") | |
452 | + | ||
453 | + | let cW = 2 | |
454 | + | ||
455 | + | func cX (cx) = ("finishBlockForAddr_" + cx) | |
456 | + | ||
457 | + | ||
458 | + | func cY () = "resTypesProportions" | |
459 | + | ||
460 | + | ||
461 | + | func cZ (da) = ("resTypesByContinent_" + da) | |
462 | + | ||
463 | + | ||
464 | + | func db (bt) = ("stakedLandsByOwner_" + bt) | |
465 | + | ||
466 | + | ||
467 | + | func dc (bt) = ("stakedPiecesByOwner_" + bt) | |
468 | + | ||
469 | + | ||
470 | + | func dd (de) = { | |
471 | + | let cj = de | |
472 | + | if ($isInstanceOf(cj, "String")) | |
471 | 473 | then { | |
472 | - | let | |
473 | - | | |
474 | + | let df = cj | |
475 | + | df | |
474 | 476 | } | |
475 | 477 | else throw("fail to cast into String") | |
476 | 478 | } | |
477 | 479 | ||
478 | 480 | ||
479 | - | func | |
480 | - | let | |
481 | - | if ($isInstanceOf( | |
481 | + | func dg (de) = { | |
482 | + | let cj = de | |
483 | + | if ($isInstanceOf(cj, "Int")) | |
482 | 484 | then { | |
483 | - | let | |
484 | - | | |
485 | + | let dh = cj | |
486 | + | dh | |
485 | 487 | } | |
486 | 488 | else throw("fail to cast into Int") | |
487 | 489 | } | |
488 | 490 | ||
489 | 491 | ||
490 | - | func | |
491 | - | let | |
492 | - | if ($isInstanceOf( | |
492 | + | func di (de) = { | |
493 | + | let cj = de | |
494 | + | if ($isInstanceOf(cj, "Boolean")) | |
493 | 495 | then { | |
494 | - | let | |
495 | - | | |
496 | + | let df = cj | |
497 | + | df | |
496 | 498 | } | |
497 | 499 | else throw("fail to cast into Boolean") | |
498 | 500 | } | |
499 | 501 | ||
500 | 502 | ||
501 | - | func | |
502 | - | let | |
503 | - | if (("S" == | |
504 | - | then | |
505 | - | else if (("M" == | |
506 | - | then | |
507 | - | else if (("L" == | |
508 | - | then | |
509 | - | else if (("XL" == | |
510 | - | then | |
511 | - | else if (("XXL" == | |
512 | - | then | |
503 | + | func dj (dk) = { | |
504 | + | let cj = dk | |
505 | + | if (("S" == cj)) | |
506 | + | then cq | |
507 | + | else if (("M" == cj)) | |
508 | + | then cr | |
509 | + | else if (("L" == cj)) | |
510 | + | then cs | |
511 | + | else if (("XL" == cj)) | |
512 | + | then ct | |
513 | + | else if (("XXL" == cj)) | |
514 | + | then cu | |
513 | 515 | else throw("Unknown land size") | |
514 | 516 | } | |
515 | 517 | ||
516 | 518 | ||
517 | - | func | |
518 | - | ||
519 | - | ||
520 | - | func | |
521 | - | ||
522 | - | ||
523 | - | func | |
524 | - | ||
525 | - | ||
526 | - | func | |
527 | - | let | |
528 | - | let | |
529 | - | (toInt( | |
530 | - | } | |
531 | - | ||
532 | - | ||
533 | - | let | |
534 | - | let | |
535 | - | if ((base58'2W' == | |
519 | + | func dl (df) = isDefined(parseInt(df)) | |
520 | + | ||
521 | + | ||
522 | + | func dm () = "contractsBlocked" | |
523 | + | ||
524 | + | ||
525 | + | func dn (b) = ("lastTxIdByUser_" + b) | |
526 | + | ||
527 | + | ||
528 | + | func do (dp,dq,dr) = { | |
529 | + | let ds = value(blockInfoByHeight(dq)) | |
530 | + | let dt = sha256((value(ds.vrf) + dr)) | |
531 | + | (toInt(dt) % dp) | |
532 | + | } | |
533 | + | ||
534 | + | ||
535 | + | let du = { | |
536 | + | let cj = ch | |
537 | + | if ((base58'2W' == cj)) | |
536 | 538 | then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv") | |
537 | - | else if ((base58'2T' == | |
539 | + | else if ((base58'2T' == cj)) | |
538 | 540 | then this | |
539 | 541 | else throw("Unknown chain") | |
540 | 542 | } | |
541 | 543 | ||
542 | - | let | |
543 | - | let | |
544 | - | if ((base58'2W' == | |
544 | + | let dv = { | |
545 | + | let cj = ch | |
546 | + | if ((base58'2W' == cj)) | |
545 | 547 | then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb") | |
546 | - | else if ((base58'2T' == | |
548 | + | else if ((base58'2T' == cj)) | |
547 | 549 | then this | |
548 | 550 | else throw("Unknown chain") | |
549 | 551 | } | |
550 | 552 | ||
551 | - | let | |
552 | - | let | |
553 | - | if ((base58'2W' == | |
553 | + | let dw = { | |
554 | + | let cj = ch | |
555 | + | if ((base58'2W' == cj)) | |
554 | 556 | then if (ce) | |
555 | 557 | then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm' | |
556 | 558 | else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
557 | - | else if ((base58'2T' == | |
559 | + | else if ((base58'2T' == cj)) | |
558 | 560 | then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
559 | 561 | else throw("Unknown chain") | |
560 | 562 | } | |
561 | 563 | ||
562 | - | let | |
563 | - | ||
564 | - | let | |
565 | - | ||
566 | - | let | |
567 | - | ||
568 | - | let | |
569 | - | ||
570 | - | let | |
571 | - | ||
572 | - | let | |
573 | - | let | |
574 | - | if ((base58'2W' == | |
564 | + | let dx = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' | |
565 | + | ||
566 | + | let dy = 300000 | |
567 | + | ||
568 | + | let dz = 5000000 | |
569 | + | ||
570 | + | let dA = 50 | |
571 | + | ||
572 | + | let dB = 10000000 | |
573 | + | ||
574 | + | let dC = { | |
575 | + | let cj = ch | |
576 | + | if ((base58'2W' == cj)) | |
575 | 577 | then 252289527462 | |
576 | - | else if ((base58'2T' == | |
578 | + | else if ((base58'2T' == cj)) | |
577 | 579 | then 2522895274 | |
578 | 580 | else throw("Unknown chain") | |
579 | 581 | } | |
580 | 582 | ||
581 | - | let | |
582 | - | let | |
583 | - | if ((base58'2W' == | |
583 | + | let dD = { | |
584 | + | let cj = ch | |
585 | + | if ((base58'2W' == cj)) | |
584 | 586 | then 250000000 | |
585 | - | else if ((base58'2T' == | |
587 | + | else if ((base58'2T' == cj)) | |
586 | 588 | then 250000000 | |
587 | 589 | else throw("Unknown chain") | |
588 | 590 | } | |
589 | 591 | ||
590 | - | let | |
591 | - | ||
592 | - | let | |
593 | - | ||
594 | - | let | |
595 | - | ||
596 | - | let | |
597 | - | ||
598 | - | let | |
599 | - | ||
600 | - | let | |
601 | - | ||
602 | - | let | |
603 | - | ||
604 | - | func | |
605 | - | ||
606 | - | ||
607 | - | func | |
608 | - | ||
609 | - | ||
610 | - | func | |
611 | - | ||
612 | - | ||
613 | - | func | |
614 | - | ||
615 | - | ||
616 | - | func | |
617 | - | ||
618 | - | ||
619 | - | func | |
620 | - | ||
621 | - | ||
622 | - | func | |
623 | - | ||
624 | - | ||
625 | - | func | |
626 | - | ||
627 | - | ||
628 | - | let | |
629 | - | ||
630 | - | let | |
631 | - | ||
632 | - | let | |
633 | - | ||
634 | - | let | |
635 | - | ||
636 | - | let | |
637 | - | ||
638 | - | let | |
639 | - | ||
640 | - | let | |
641 | - | ||
642 | - | func | |
643 | - | ||
644 | - | ||
645 | - | func | |
646 | - | let | |
647 | - | then ((( | |
648 | - | else -((((-( | |
649 | - | ( | |
650 | - | } | |
651 | - | ||
652 | - | ||
653 | - | func | |
654 | - | let | |
655 | - | if ((0 >= | |
592 | + | let dE = toBigInt(5) | |
593 | + | ||
594 | + | let dF = toBigInt(20) | |
595 | + | ||
596 | + | let dG = toBigInt((20 * 20)) | |
597 | + | ||
598 | + | let dH = toBigInt(((20 * 20) * 20)) | |
599 | + | ||
600 | + | let dI = toBigInt((((20 * 20) * 20) * 20)) | |
601 | + | ||
602 | + | let dJ = toBigInt(((((20 * 20) * 20) * 20) * 20)) | |
603 | + | ||
604 | + | let dK = 500 | |
605 | + | ||
606 | + | func dL () = "nextLandNum" | |
607 | + | ||
608 | + | ||
609 | + | func dM (dN) = ("lcn_" + dN) | |
610 | + | ||
611 | + | ||
612 | + | func dO (dP) = ("la_" + dP) | |
613 | + | ||
614 | + | ||
615 | + | func dQ (bm,bt) = ((("ilao_" + bm) + "_") + bt) | |
616 | + | ||
617 | + | ||
618 | + | func dR (dP) = ("lo_" + dP) | |
619 | + | ||
620 | + | ||
621 | + | func dS (dN) = ("duckByCustomName_" + dN) | |
622 | + | ||
623 | + | ||
624 | + | func dT (dN) = ("accountByCustomName_" + dN) | |
625 | + | ||
626 | + | ||
627 | + | func dU () = "oldiesList" | |
628 | + | ||
629 | + | ||
630 | + | let dV = 0 | |
631 | + | ||
632 | + | let dW = 1 | |
633 | + | ||
634 | + | let dX = 2 | |
635 | + | ||
636 | + | let dY = 0 | |
637 | + | ||
638 | + | let dZ = 5 | |
639 | + | ||
640 | + | let ea = 6 | |
641 | + | ||
642 | + | let eb = 7 | |
643 | + | ||
644 | + | func ec (dP,dk) = ((aA + dP) + dk) | |
645 | + | ||
646 | + | ||
647 | + | func ed (ee,ef) = { | |
648 | + | let eg = if ((ee >= 0)) | |
649 | + | then (((ee + ef) - 1) / ef) | |
650 | + | else -((((-(ee) + ef) - 1) / ef)) | |
651 | + | (eg * cp) | |
652 | + | } | |
653 | + | ||
654 | + | ||
655 | + | func eh (ei,ej) = { | |
656 | + | let ek = (((((ej[0] + ej[1]) + ej[2]) + ej[3]) + ej[4]) + ej[5]) | |
657 | + | if ((0 >= ek)) | |
656 | 658 | then throw("Zero weights sum") | |
657 | 659 | else { | |
658 | - | let | |
659 | - | func | |
660 | - | ||
661 | - | let | |
662 | - | let | |
663 | - | let | |
664 | - | func | |
665 | - | then | |
666 | - | else | |
667 | - | ||
668 | - | func | |
669 | - | then | |
660 | + | let el = fraction(ei, co, ek) | |
661 | + | func em (en,eo) = (en :+ fraction(eo, el, co)) | |
662 | + | ||
663 | + | let ep = ej | |
664 | + | let eq = size(ep) | |
665 | + | let er = nil | |
666 | + | func es (et,eu) = if ((eu >= eq)) | |
667 | + | then et | |
668 | + | else em(et, ep[eu]) | |
669 | + | ||
670 | + | func ev (et,eu) = if ((eu >= eq)) | |
671 | + | then et | |
670 | 672 | else throw("List size exceeds 6") | |
671 | 673 | ||
672 | - | | |
673 | - | } | |
674 | - | } | |
675 | - | ||
676 | - | ||
677 | - | func | |
678 | - | let | |
679 | - | if ((size( | |
674 | + | ev(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6) | |
675 | + | } | |
676 | + | } | |
677 | + | ||
678 | + | ||
679 | + | func ew (ei) = { | |
680 | + | let ex = split(value(getString(cY())), "_") | |
681 | + | if ((size(ex) != aD)) | |
680 | 682 | then throw("Wrong proportions data") | |
681 | 683 | else { | |
682 | - | let | |
683 | - | | |
684 | - | } | |
685 | - | } | |
686 | - | ||
687 | - | ||
688 | - | func | |
689 | - | let | |
690 | - | func | |
691 | - | let | |
692 | - | if ((0 > | |
693 | - | then throw(((((("Not enough material idx=" + toString( | |
694 | - | else ( | |
684 | + | let ey = [parseIntValue(ex[0]), parseIntValue(ex[1]), parseIntValue(ex[2]), parseIntValue(ex[3]), parseIntValue(ex[4]), parseIntValue(ex[5])] | |
685 | + | eh(ei, ey) | |
686 | + | } | |
687 | + | } | |
688 | + | ||
689 | + | ||
690 | + | func ez (eA,eB,eC) = { | |
691 | + | let eD = ew(eC) | |
692 | + | func eE (en,cK) = { | |
693 | + | let eF = (parseIntValue(eB[cK]) - eD[cK]) | |
694 | + | if ((0 > eF)) | |
695 | + | then throw(((((("Not enough material idx=" + toString(cK)) + ", you have ") + eB[cK]) + ", but need ") + toString(eD[cK]))) | |
696 | + | else (en :+ toString(eF)) | |
695 | 697 | } | |
696 | 698 | ||
697 | - | if ( | |
699 | + | if (eA) | |
698 | 700 | then { | |
699 | - | let | |
700 | - | let | |
701 | - | let | |
702 | - | func | |
703 | - | then | |
704 | - | else | |
705 | - | ||
706 | - | func | |
707 | - | then | |
701 | + | let ep = cv | |
702 | + | let eq = size(ep) | |
703 | + | let er = nil | |
704 | + | func es (et,eu) = if ((eu >= eq)) | |
705 | + | then et | |
706 | + | else eE(et, ep[eu]) | |
707 | + | ||
708 | + | func ev (et,eu) = if ((eu >= eq)) | |
709 | + | then et | |
708 | 710 | else throw("List size exceeds 6") | |
709 | 711 | ||
710 | - | | |
711 | - | } | |
712 | - | else | |
713 | - | } | |
714 | - | ||
715 | - | ||
716 | - | func | |
717 | - | then $Tuple2( | |
712 | + | ev(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6) | |
713 | + | } | |
714 | + | else eB | |
715 | + | } | |
716 | + | ||
717 | + | ||
718 | + | func eG (eH,eI) = if ((eI == "")) | |
719 | + | then $Tuple2(eH, false) | |
718 | 720 | else { | |
719 | - | func | |
720 | - | let | |
721 | - | if ((size( | |
721 | + | func eJ (en,eK) = { | |
722 | + | let eL = split(eK, ",") | |
723 | + | if ((size(eL) != 2)) | |
722 | 724 | then throw("Incorrect format, should be index,amount") | |
723 | 725 | else { | |
724 | - | let | |
725 | - | if (if ((0 > | |
726 | + | let cK = parseIntValue(eL[0]) | |
727 | + | if (if ((0 > cK)) | |
726 | 728 | then true | |
727 | - | else ( | |
729 | + | else (cK >= size(aP))) | |
728 | 730 | then throw("Unknown product idx") | |
729 | 731 | else { | |
730 | - | let | |
731 | - | let | |
732 | - | if ((size( | |
733 | - | then throw((("You don't have " + aL[ | |
732 | + | let eM = parseIntValue(eL[1]) | |
733 | + | let eN = split(en._1, (eL[0] + ":")) | |
734 | + | if ((size(eN) != 2)) | |
735 | + | then throw((("You don't have " + aL[cK]) + " equipped")) | |
734 | 736 | else { | |
735 | - | let | |
736 | - | let | |
737 | + | let eO = eN[1] | |
738 | + | let eP = if (dl(take(drop(eO, 1), 1))) | |
737 | 739 | then 2 | |
738 | 740 | else 1 | |
739 | - | let | |
740 | - | let | |
741 | - | let | |
742 | - | then ( | |
743 | - | else throw(((((("You equipped " + toString( | |
744 | - | $Tuple2((((( | |
741 | + | let eQ = parseIntValue(take(eO, eP)) | |
742 | + | let eR = drop(eO, eP) | |
743 | + | let eS = if ((eQ >= eM)) | |
744 | + | then (eQ - eM) | |
745 | + | else throw(((((("You equipped " + toString(eQ)) + " of ") + aL[cK]) + ", but tried to use ") + toString(eM))) | |
746 | + | $Tuple2(((((eN[0] + eL[0]) + ":") + toString(eS)) + eR), if (en._2) | |
745 | 747 | then true | |
746 | - | else if (if (( | |
747 | - | then (8 >= | |
748 | + | else if (if ((cK >= 6)) | |
749 | + | then (8 >= cK) | |
748 | 750 | else false) | |
749 | - | then ( | |
751 | + | then (eS == 0) | |
750 | 752 | else false) | |
751 | 753 | } | |
752 | 754 | } | |
753 | 755 | } | |
754 | 756 | } | |
755 | 757 | ||
756 | - | let | |
757 | - | let | |
758 | - | let | |
759 | - | func | |
760 | - | then | |
761 | - | else | |
762 | - | ||
763 | - | func | |
764 | - | then | |
758 | + | let ep = split(eI, "_") | |
759 | + | let eq = size(ep) | |
760 | + | let er = $Tuple2(eH, false) | |
761 | + | func es (et,eu) = if ((eu >= eq)) | |
762 | + | then et | |
763 | + | else eJ(et, ep[eu]) | |
764 | + | ||
765 | + | func ev (et,eu) = if ((eu >= eq)) | |
766 | + | then et | |
765 | 767 | else throw("List size exceeds 10") | |
766 | 768 | ||
767 | - | | |
769 | + | ev(es(es(es(es(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
768 | 770 | } | |
769 | 771 | ||
770 | 772 | ||
771 | - | func | |
772 | - | let | |
773 | + | func eT (eU) = { | |
774 | + | let eV = if ((eU == "")) | |
773 | 775 | then nil | |
774 | - | else split_4C( | |
775 | - | func | |
776 | - | let | |
777 | - | let | |
778 | - | then parseIntValue( | |
776 | + | else split_4C(eU, "_") | |
777 | + | func eW (en,cd) = { | |
778 | + | let eX = (size(en) / 8) | |
779 | + | let eQ = if ((size(eV) > eX)) | |
780 | + | then parseIntValue(eV[eX]) | |
779 | 781 | else 0 | |
780 | - | ( | |
782 | + | (en + toBytes(eQ)) | |
781 | 783 | } | |
782 | 784 | ||
783 | - | let | |
784 | - | let | |
785 | - | let | |
786 | - | func | |
787 | - | then | |
788 | - | else | |
789 | - | ||
790 | - | func | |
791 | - | then | |
785 | + | let ep = aP | |
786 | + | let eq = size(ep) | |
787 | + | let er = base58'' | |
788 | + | func es (et,eu) = if ((eu >= eq)) | |
789 | + | then et | |
790 | + | else eW(et, ep[eu]) | |
791 | + | ||
792 | + | func ev (et,eu) = if ((eu >= eq)) | |
793 | + | then et | |
792 | 794 | else throw("List size exceeds 50") | |
793 | 795 | ||
794 | - | | |
795 | - | } | |
796 | - | ||
797 | - | ||
798 | - | func | |
799 | - | func | |
800 | - | let | |
801 | - | let | |
802 | - | ( | |
796 | + | ev(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(er, 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) | |
797 | + | } | |
798 | + | ||
799 | + | ||
800 | + | func eY (eZ) = { | |
801 | + | func fa (en,cd) = { | |
802 | + | let eX = size(en) | |
803 | + | let fb = take(drop(eZ, (8 * eX)), 8) | |
804 | + | (en :+ toString(toInt(fb))) | |
803 | 805 | } | |
804 | 806 | ||
805 | 807 | makeString_2C({ | |
806 | - | let | |
807 | - | let | |
808 | - | let | |
809 | - | func | |
810 | - | then | |
811 | - | else | |
812 | - | ||
813 | - | func | |
814 | - | then | |
808 | + | let ep = aP | |
809 | + | let eq = size(ep) | |
810 | + | let er = nil | |
811 | + | func es (et,eu) = if ((eu >= eq)) | |
812 | + | then et | |
813 | + | else fa(et, ep[eu]) | |
814 | + | ||
815 | + | func ev (et,eu) = if ((eu >= eq)) | |
816 | + | then et | |
815 | 817 | else throw("List size exceeds 50") | |
816 | 818 | ||
817 | - | | |
819 | + | ev(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(er, 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) | |
818 | 820 | }, "_") | |
819 | 821 | } | |
820 | 822 | ||
821 | 823 | ||
822 | - | func | |
823 | - | func | |
824 | - | let | |
825 | - | then | |
824 | + | func fc (fd,fe) = { | |
825 | + | func ff (en,eX) = { | |
826 | + | let fg = if ((size(fd) > (7 + eX))) | |
827 | + | then fd[(7 + eX)] | |
826 | 828 | else 0 | |
827 | - | if ((parseIntValue( | |
828 | - | then throw(("Requirement not satisfied: " + i[ | |
829 | + | if ((parseIntValue(fe[eX]) > (fd[eX] + fg))) | |
830 | + | then throw(("Requirement not satisfied: " + i[eX])) | |
829 | 831 | else true | |
830 | 832 | } | |
831 | 833 | ||
832 | - | let | |
833 | - | let | |
834 | - | let | |
835 | - | func | |
836 | - | then | |
837 | - | else | |
838 | - | ||
839 | - | func | |
840 | - | then | |
834 | + | let ep = [0, 1, 2, 3, 4, 5, 6] | |
835 | + | let eq = size(ep) | |
836 | + | let er = false | |
837 | + | func es (et,eu) = if ((eu >= eq)) | |
838 | + | then et | |
839 | + | else ff(et, ep[eu]) | |
840 | + | ||
841 | + | func ev (et,eu) = if ((eu >= eq)) | |
842 | + | then et | |
841 | 843 | else throw("List size exceeds 7") | |
842 | 844 | ||
843 | - | | |
844 | - | } | |
845 | - | ||
846 | - | ||
847 | - | func | |
848 | - | let | |
849 | - | if ((size( | |
845 | + | ev(es(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6), 7) | |
846 | + | } | |
847 | + | ||
848 | + | ||
849 | + | func fh (fi,eV,fj,fd,fk,fl) = { | |
850 | + | let eL = split(fi, ":") | |
851 | + | if ((size(eL) != 2)) | |
850 | 852 | then throw("Incorrect format, should be index:amount") | |
851 | - | else if (if (!( | |
852 | - | then (size( | |
853 | + | else if (if (!(fj)) | |
854 | + | then (size(eL[0]) != 2) | |
853 | 855 | else false) | |
854 | 856 | then throw("Product idx should be 2 digits, zero padded") | |
855 | 857 | else { | |
856 | - | let | |
857 | - | let | |
858 | - | if (!(containsElement(aO, | |
859 | - | then throw((("Product '" + aL[ | |
860 | - | else if ((0 > | |
858 | + | let fm = parseIntValue(eL[0]) | |
859 | + | let fn = parseIntValue(eL[1]) | |
860 | + | if (!(containsElement(aO, fm))) | |
861 | + | then throw((("Product '" + aL[fm]) + "' cannot be used for land defense")) | |
862 | + | else if ((0 > fn)) | |
861 | 863 | then throw("Count can't be negative") | |
862 | - | else if (( | |
863 | - | then throw(((("Can't put more than " + toString(s)) + " of ") + aL[ | |
864 | - | else if (( | |
865 | - | then $Tuple3( | |
864 | + | else if ((fn > s)) | |
865 | + | then throw(((("Can't put more than " + toString(s)) + " of ") + aL[fm])) | |
866 | + | else if ((fn == 0)) | |
867 | + | then $Tuple3(eV, fk, fl) | |
866 | 868 | else { | |
867 | - | let | |
868 | - | let | |
869 | - | let | |
870 | - | let cd = split(aP[ | |
871 | - | if (if (!( | |
872 | - | then ( | |
869 | + | let fo = take(eV, (8 * fm)) | |
870 | + | let eQ = toInt(take(drop(eV, (8 * fm)), 8)) | |
871 | + | let eR = drop(eV, (8 * (fm + 1))) | |
872 | + | let cd = split(aP[fm], "_") | |
873 | + | if (if (!(fj)) | |
874 | + | then (fn > eQ) | |
873 | 875 | else false) | |
874 | - | then throw(((((("You have " + toString( | |
876 | + | then throw(((((("You have " + toString(eQ)) + " of ") + aL[fm]) + ", but tried to use ") + toString(fn))) | |
875 | 877 | else { | |
876 | - | let | |
877 | - | then | |
878 | + | let eS = if (if (!(fj)) | |
879 | + | then fc(fd, split(cd[aS], ",")) | |
878 | 880 | else false) | |
879 | - | then ( | |
880 | - | else ( | |
881 | - | let | |
882 | - | $Tuple3((( | |
881 | + | then (eQ - fn) | |
882 | + | else (eQ + fn) | |
883 | + | let fp = (ed(eS, aU) - ed(eQ, aU)) | |
884 | + | $Tuple3(((fo + toBytes(eS)) + eR), (fk + fp), (fl - fp)) | |
883 | 885 | } | |
884 | 886 | } | |
885 | 887 | } | |
886 | 888 | } | |
887 | 889 | ||
888 | 890 | ||
889 | - | func | |
890 | - | let | |
891 | - | if ((size( | |
891 | + | func fq (fi,eV,fj,fr,fs,ft,fd) = { | |
892 | + | let eL = split(fi, ":") | |
893 | + | if ((size(eL) != 2)) | |
892 | 894 | then throw("Incorrect format, should be index:amount") | |
893 | - | else if (if (!( | |
894 | - | then (size( | |
895 | + | else if (if (!(fj)) | |
896 | + | then (size(eL[0]) != 2) | |
895 | 897 | else false) | |
896 | 898 | then throw("Product idx should be 2 digits, zero padded") | |
897 | 899 | else { | |
898 | - | let | |
899 | - | let | |
900 | - | if (if ((0 > | |
900 | + | let fm = parseIntValue(eL[0]) | |
901 | + | let fn = parseIntValue(eL[1]) | |
902 | + | if (if ((0 > fm)) | |
901 | 903 | then true | |
902 | - | else ( | |
904 | + | else (fm >= size(aP))) | |
903 | 905 | then throw("Unknown product idx") | |
904 | - | else if ((0 > | |
906 | + | else if ((0 > fn)) | |
905 | 907 | then throw("Count can't be negative") | |
906 | - | else if (( | |
907 | - | then throw(((("Can't put more than " + toString(s)) + " of ") + aL[ | |
908 | - | else if (( | |
909 | - | then $Tuple2( | |
908 | + | else if ((fn > s)) | |
909 | + | then throw(((("Can't put more than " + toString(s)) + " of ") + aL[fm])) | |
910 | + | else if ((fn == 0)) | |
911 | + | then $Tuple2(eV, false) | |
910 | 912 | else { | |
911 | - | let | |
912 | - | let | |
913 | - | let | |
914 | - | let cd = split(aP[ | |
915 | - | if (if (!( | |
916 | - | then ( | |
913 | + | let fo = take(eV, (8 * fm)) | |
914 | + | let eQ = toInt(take(drop(eV, (8 * fm)), 8)) | |
915 | + | let eR = drop(eV, (8 * (fm + 1))) | |
916 | + | let cd = split(aP[fm], "_") | |
917 | + | if (if (!(fj)) | |
918 | + | then (fn > eQ) | |
917 | 919 | else false) | |
918 | - | then throw(((((("You have " + toString( | |
920 | + | then throw(((((("You have " + toString(eQ)) + " of ") + aL[fm]) + ", but tried to use ") + toString(fn))) | |
919 | 921 | else { | |
920 | - | let | |
921 | - | then | |
922 | + | let fu = if (if (!(fj)) | |
923 | + | then fc(fd, split(cd[aS], ",")) | |
922 | 924 | else false) | |
923 | 925 | then { | |
924 | - | let | |
925 | - | if (( | |
926 | + | let fv = cd[aT] | |
927 | + | if ((fv == "")) | |
926 | 928 | then throw("Item cannot be equipped") | |
927 | 929 | else { | |
928 | - | let | |
929 | - | let | |
930 | - | if (( | |
930 | + | let fw = parseIntValue(fv) | |
931 | + | let fx = (fw / 100) | |
932 | + | if ((fr != fx)) | |
931 | 933 | then throw("Segment incompatible") | |
932 | 934 | else { | |
933 | - | let | |
934 | - | if (( | |
935 | + | let fy = ((fw % 100) / 10) | |
936 | + | if ((fs != fy)) | |
935 | 937 | then throw("Slot incompatible") | |
936 | 938 | else { | |
937 | - | let | |
938 | - | if (if (( | |
939 | - | then ( | |
939 | + | let fz = (fw % 10) | |
940 | + | if (if ((ft != 0)) | |
941 | + | then (fz > 1) | |
940 | 942 | else false) | |
941 | 943 | then throw("Big items should occupy slot 0") | |
942 | - | else ( | |
944 | + | else (fz > 1) | |
943 | 945 | } | |
944 | 946 | } | |
945 | 947 | } | |
946 | 948 | } | |
947 | 949 | else false | |
948 | - | $Tuple2((( | |
949 | - | then | |
950 | - | else -( | |
950 | + | $Tuple2(((fo + toBytes((eQ + (if (fj) | |
951 | + | then fn | |
952 | + | else -(fn))))) + eR), fu) | |
951 | 953 | } | |
952 | 954 | } | |
953 | 955 | } | |
954 | 956 | } | |
955 | 957 | ||
956 | 958 | ||
957 | - | func | |
959 | + | func fA (fB,fC,fj,fr,fs,fD) = if ((fB != "")) | |
958 | 960 | then { | |
959 | - | let | |
960 | - | if ((size( | |
961 | + | let fE = split(fB, ",") | |
962 | + | if ((size(fE) > r)) | |
961 | 963 | then throw("Wrong slots format") | |
962 | 964 | else { | |
963 | - | let | |
964 | - | let | |
965 | - | then | |
965 | + | let fF = fE[0] | |
966 | + | let fG = if ((size(fE) > 1)) | |
967 | + | then fE[1] | |
966 | 968 | else "" | |
967 | - | if (if (( | |
968 | - | then ( | |
969 | + | if (if ((fF == "")) | |
970 | + | then (fG == "") | |
969 | 971 | else false) | |
970 | - | then | |
972 | + | then fC | |
971 | 973 | else { | |
972 | - | let | |
973 | - | then | |
974 | - | else $Tuple2( | |
975 | - | if (( | |
976 | - | then if ( | |
974 | + | let fH = if ((fF != "")) | |
975 | + | then fq(fF, fC, fj, fr, fs, 0, fD) | |
976 | + | else $Tuple2(fC, false) | |
977 | + | if ((fG != "")) | |
978 | + | then if (fH._2) | |
977 | 979 | then throw("Big item already occupies slot") | |
978 | - | else | |
979 | - | else | |
980 | + | else fq(fG, fH._1, fj, fr, fs, 1, fD)._1 | |
981 | + | else fH._1 | |
980 | 982 | } | |
981 | 983 | } | |
982 | 984 | } | |
983 | - | else | |
984 | - | ||
985 | - | ||
986 | - | func | |
987 | - | func | |
988 | - | let | |
989 | - | let | |
990 | - | if ((size( | |
985 | + | else fC | |
986 | + | ||
987 | + | ||
988 | + | func fI (fJ,fK,fj,fD) = { | |
989 | + | func fr (en,fL) = { | |
990 | + | let eX = en._1 | |
991 | + | let fs = split(fL, ";") | |
992 | + | if ((size(fs) != q)) | |
991 | 993 | then throw("Wrong segment format") | |
992 | 994 | else { | |
993 | - | let | |
994 | - | let | |
995 | - | if (if (( | |
996 | - | then ( | |
995 | + | let fM = fs[0] | |
996 | + | let fN = fs[1] | |
997 | + | if (if ((fM == "")) | |
998 | + | then (fN == "") | |
997 | 999 | else false) | |
998 | - | then $Tuple2(( | |
1000 | + | then $Tuple2((eX + 1), en._2) | |
999 | 1001 | else { | |
1000 | - | let | |
1001 | - | $Tuple2(( | |
1002 | + | let fO = fA(fM, en._2, fj, eX, 0, fD) | |
1003 | + | $Tuple2((eX + 1), fA(fN, fO, fj, eX, 1, fD)) | |
1002 | 1004 | } | |
1003 | 1005 | } | |
1004 | 1006 | } | |
1005 | 1007 | ||
1006 | - | ( let | |
1007 | - | let | |
1008 | - | let | |
1009 | - | func | |
1010 | - | then | |
1011 | - | else | |
1012 | - | ||
1013 | - | func | |
1014 | - | then | |
1008 | + | ( let ep = fJ | |
1009 | + | let eq = size(ep) | |
1010 | + | let er = $Tuple2(0, fK) | |
1011 | + | func es (et,eu) = if ((eu >= eq)) | |
1012 | + | then et | |
1013 | + | else fr(et, ep[eu]) | |
1014 | + | ||
1015 | + | func ev (et,eu) = if ((eu >= eq)) | |
1016 | + | then et | |
1015 | 1017 | else throw("List size exceeds 6") | |
1016 | 1018 | ||
1017 | - | | |
1018 | - | } | |
1019 | - | ||
1020 | - | ||
1021 | - | func | |
1019 | + | ev(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6))._2 | |
1020 | + | } | |
1021 | + | ||
1022 | + | ||
1023 | + | func fP (fJ,fK,fk,fl,fj,fd) = if ((3 > size(fJ))) | |
1022 | 1024 | then throw("At least duck, mines and traps parts are required") | |
1023 | 1025 | else { | |
1024 | - | func | |
1025 | - | let | |
1026 | - | if (( | |
1027 | - | then $Tuple4(( | |
1026 | + | func fr (en,fL) = { | |
1027 | + | let eX = en._1 | |
1028 | + | if ((eX == 0)) | |
1029 | + | then $Tuple4((eX + 1), en._2, en._3, en._4) | |
1028 | 1030 | else { | |
1029 | - | let | |
1030 | - | $Tuple4(( | |
1031 | + | let fQ = fh(fL, en._2, fj, fd, en._3, en._4) | |
1032 | + | $Tuple4((eX + 1), fQ._1, fQ._2, fQ._3) | |
1031 | 1033 | } | |
1032 | 1034 | } | |
1033 | 1035 | ||
1034 | - | let | |
1035 | - | let | |
1036 | - | let | |
1037 | - | let | |
1038 | - | func | |
1039 | - | then | |
1040 | - | else | |
1041 | - | ||
1042 | - | func | |
1043 | - | then | |
1036 | + | let fR = { | |
1037 | + | let ep = fJ | |
1038 | + | let eq = size(ep) | |
1039 | + | let er = $Tuple4(0, fK, fk, fl) | |
1040 | + | func es (et,eu) = if ((eu >= eq)) | |
1041 | + | then et | |
1042 | + | else fr(et, ep[eu]) | |
1043 | + | ||
1044 | + | func ev (et,eu) = if ((eu >= eq)) | |
1045 | + | then et | |
1044 | 1046 | else throw("List size exceeds 10") | |
1045 | 1047 | ||
1046 | - | | |
1047 | - | } | |
1048 | - | $Tuple3( | |
1048 | + | ev(es(es(es(es(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1049 | + | } | |
1050 | + | $Tuple3(fR._2, fR._3, fR._4) | |
1049 | 1051 | } | |
1050 | 1052 | ||
1051 | 1053 | ||
1052 | - | func | |
1053 | - | let | |
1054 | - | let | |
1055 | - | let | |
1056 | - | let | |
1057 | - | let am = if (( | |
1054 | + | func fS (z) = { | |
1055 | + | let fT = E(z) | |
1056 | + | let fU = split(valueOrElse(getString(fT), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
1057 | + | let fV = fI(fU, dx, true, nil) | |
1058 | + | let fW = split(fU[o], ";")[1] | |
1059 | + | let am = if ((fW == "")) | |
1058 | 1060 | then 0 | |
1059 | 1061 | else { | |
1060 | - | let | |
1061 | - | if (( | |
1062 | + | let fX = split(fW, ",")[0] | |
1063 | + | if ((fX == "")) | |
1062 | 1064 | then 0 | |
1063 | 1065 | else { | |
1064 | - | let | |
1065 | - | let | |
1066 | - | let | |
1067 | - | if (if (if (if (if (( | |
1066 | + | let fi = split(fX, ":") | |
1067 | + | let cK = fi[0] | |
1068 | + | let fY = fi[1] | |
1069 | + | if (if (if (if (if ((cK == "06")) | |
1068 | 1070 | then true | |
1069 | - | else ( | |
1071 | + | else (cK == "07")) | |
1070 | 1072 | then true | |
1071 | - | else ( | |
1072 | - | then ( | |
1073 | + | else (cK == "08")) | |
1074 | + | then (fY != "") | |
1073 | 1075 | else false) | |
1074 | - | then (parseIntValue( | |
1076 | + | then (parseIntValue(fY) > 0) | |
1075 | 1077 | else false) | |
1076 | - | then parseIntValue(split(aP[parseIntValue( | |
1078 | + | then parseIntValue(split(aP[parseIntValue(cK)], "_")[aR]) | |
1077 | 1079 | else 0 | |
1078 | 1080 | } | |
1079 | 1081 | } | |
1080 | - | let | |
1081 | - | let | |
1082 | - | ( | |
1083 | - | } | |
1084 | - | ||
1085 | - | ||
1086 | - | func | |
1082 | + | let fD = ak(this, z, am, true) | |
1083 | + | let fZ = fI(fU, fV, false, fD) | |
1084 | + | (fZ == fZ) | |
1085 | + | } | |
1086 | + | ||
1087 | + | ||
1088 | + | func ga (gb,gc,gd,ge) = if ((size(gb) != aD)) | |
1087 | 1089 | then throw("Wrong proportions data") | |
1088 | 1090 | else { | |
1089 | - | func | |
1090 | - | let | |
1091 | - | if ((0 > | |
1092 | - | then throw(((((((("Panic! Pieces of type=" + toString( | |
1093 | - | else ( | |
1094 | - | } | |
1095 | - | ||
1096 | - | let | |
1097 | - | let | |
1098 | - | let | |
1099 | - | func | |
1100 | - | then | |
1101 | - | else | |
1102 | - | ||
1103 | - | func | |
1104 | - | then | |
1091 | + | func gf (en,gg) = { | |
1092 | + | let eF = (parseIntValue(gb[gg]) + ((ge * gc[gg]) * gd)) | |
1093 | + | if ((0 > eF)) | |
1094 | + | then throw(((((((("Panic! Pieces of type=" + toString(gg)) + ", sign=") + toString(ge)) + ", terrainCounts[i]=") + toString(gc[gg])) + ", landSizeIndex=") + toString(gd))) | |
1095 | + | else (en :+ toString(eF)) | |
1096 | + | } | |
1097 | + | ||
1098 | + | let ep = cv | |
1099 | + | let eq = size(ep) | |
1100 | + | let er = nil | |
1101 | + | func es (et,eu) = if ((eu >= eq)) | |
1102 | + | then et | |
1103 | + | else gf(et, ep[eu]) | |
1104 | + | ||
1105 | + | func ev (et,eu) = if ((eu >= eq)) | |
1106 | + | then et | |
1105 | 1107 | else throw("List size exceeds 6") | |
1106 | 1108 | ||
1107 | - | | |
1109 | + | ev(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6) | |
1108 | 1110 | } | |
1109 | 1111 | ||
1110 | 1112 | ||
1111 | - | func | |
1112 | - | let | |
1113 | - | makeString( | |
1114 | - | } | |
1115 | - | ||
1116 | - | ||
1117 | - | func | |
1118 | - | ||
1119 | - | ||
1120 | - | func | |
1121 | - | func | |
1122 | - | let | |
1123 | - | ( | |
1113 | + | func gh (gc,gd,ge) = { | |
1114 | + | let gb = split(valueOrElse(getString(cY()), "0_0_0_0_0_0"), "_") | |
1115 | + | makeString(ga(gb, gc, gd, ge), "_") | |
1116 | + | } | |
1117 | + | ||
1118 | + | ||
1119 | + | func gi (gj) = [(size(split(gj, "A")) - 1), (size(split(gj, "B")) - 1), (size(split(gj, "C")) - 1), (size(split(gj, "D")) - 1), (size(split(gj, "E")) - 1), (size(split(gj, "F")) - 1)] | |
1120 | + | ||
1121 | + | ||
1122 | + | func gk (gl,gc,gm,gd,gn) = { | |
1123 | + | func go (en,gg) = { | |
1124 | + | let gp = ((fraction(gm, gn, aG) * gc[gg]) * gd) | |
1125 | + | (en :+ toString((parseIntValue(gl[gg]) + gp))) | |
1124 | 1126 | } | |
1125 | 1127 | ||
1126 | - | let | |
1127 | - | let | |
1128 | - | let | |
1129 | - | let | |
1130 | - | func | |
1131 | - | then | |
1132 | - | else | |
1133 | - | ||
1134 | - | func | |
1135 | - | then | |
1128 | + | let ey = { | |
1129 | + | let ep = cv | |
1130 | + | let eq = size(ep) | |
1131 | + | let er = nil | |
1132 | + | func es (et,eu) = if ((eu >= eq)) | |
1133 | + | then et | |
1134 | + | else go(et, ep[eu]) | |
1135 | + | ||
1136 | + | func ev (et,eu) = if ((eu >= eq)) | |
1137 | + | then et | |
1136 | 1138 | else throw("List size exceeds 6") | |
1137 | 1139 | ||
1138 | - | | |
1140 | + | ev(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6) | |
1139 | 1141 | } | |
1140 | - | makeString( | |
1141 | - | } | |
1142 | - | ||
1143 | - | ||
1144 | - | func | |
1145 | - | func | |
1146 | - | let | |
1147 | - | $Tuple2(( | |
1142 | + | makeString(ey, "_") | |
1143 | + | } | |
1144 | + | ||
1145 | + | ||
1146 | + | func gq (gc,gm,gd,gn) = { | |
1147 | + | func go (en,gg) = { | |
1148 | + | let gp = ((fraction(gm, gn, aG) * gc[gg]) * gd) | |
1149 | + | $Tuple2((en._1 :+ gp), (en._2 + gp)) | |
1148 | 1150 | } | |
1149 | 1151 | ||
1150 | - | let | |
1151 | - | let | |
1152 | - | let | |
1153 | - | func | |
1154 | - | then | |
1155 | - | else | |
1156 | - | ||
1157 | - | func | |
1158 | - | then | |
1152 | + | let ep = cv | |
1153 | + | let eq = size(ep) | |
1154 | + | let er = $Tuple2(nil, 0) | |
1155 | + | func es (et,eu) = if ((eu >= eq)) | |
1156 | + | then et | |
1157 | + | else go(et, ep[eu]) | |
1158 | + | ||
1159 | + | func ev (et,eu) = if ((eu >= eq)) | |
1160 | + | then et | |
1159 | 1161 | else throw("List size exceeds 6") | |
1160 | 1162 | ||
1161 | - | | |
1162 | - | } | |
1163 | - | ||
1164 | - | ||
1165 | - | func | |
1166 | - | let | |
1167 | - | let | |
1168 | - | if (( | |
1169 | - | then $Tuple2(makeString( | |
1170 | - | else if (( | |
1163 | + | ev(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6) | |
1164 | + | } | |
1165 | + | ||
1166 | + | ||
1167 | + | func gr (gs,gt,gu,gv) = { | |
1168 | + | let gw = gu._1 | |
1169 | + | let gx = gu._2 | |
1170 | + | if ((gx == 0)) | |
1171 | + | then $Tuple2(makeString(gs, "_"), makeString(gt, "_")) | |
1172 | + | else if ((gv >= gx)) | |
1171 | 1173 | then { | |
1172 | - | func | |
1173 | - | ||
1174 | - | let | |
1175 | - | let | |
1176 | - | let | |
1177 | - | let | |
1178 | - | func | |
1179 | - | then | |
1180 | - | else | |
1181 | - | ||
1182 | - | func | |
1183 | - | then | |
1174 | + | func gy (en,gg) = (en :+ toString((parseIntValue(gs[gg]) + gw[gg]))) | |
1175 | + | ||
1176 | + | let ey = { | |
1177 | + | let ep = cv | |
1178 | + | let eq = size(ep) | |
1179 | + | let er = nil | |
1180 | + | func es (et,eu) = if ((eu >= eq)) | |
1181 | + | then et | |
1182 | + | else gy(et, ep[eu]) | |
1183 | + | ||
1184 | + | func ev (et,eu) = if ((eu >= eq)) | |
1185 | + | then et | |
1184 | 1186 | else throw("List size exceeds 6") | |
1185 | 1187 | ||
1186 | - | | |
1188 | + | ev(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6) | |
1187 | 1189 | } | |
1188 | - | $Tuple2(makeString( | |
1190 | + | $Tuple2(makeString(ey, "_"), makeString(gt, "_")) | |
1189 | 1191 | } | |
1190 | 1192 | else { | |
1191 | - | func | |
1192 | - | let | |
1193 | - | $Tuple2(( | |
1193 | + | func gz (en,gg) = { | |
1194 | + | let gA = fraction(gw[gg], gv, gx) | |
1195 | + | $Tuple2((en._1 :+ toString((parseIntValue(gs[gg]) + gA))), (en._2 :+ toString(((parseIntValue(gt[gg]) + gw[gg]) - gA)))) | |
1194 | 1196 | } | |
1195 | 1197 | ||
1196 | - | let | |
1197 | - | let | |
1198 | - | let | |
1199 | - | let | |
1200 | - | func | |
1201 | - | then | |
1202 | - | else | |
1203 | - | ||
1204 | - | func | |
1205 | - | then | |
1198 | + | let ey = { | |
1199 | + | let ep = cv | |
1200 | + | let eq = size(ep) | |
1201 | + | let er = $Tuple2(nil, nil) | |
1202 | + | func es (et,eu) = if ((eu >= eq)) | |
1203 | + | then et | |
1204 | + | else gz(et, ep[eu]) | |
1205 | + | ||
1206 | + | func ev (et,eu) = if ((eu >= eq)) | |
1207 | + | then et | |
1206 | 1208 | else throw("List size exceeds 6") | |
1207 | 1209 | ||
1208 | - | | |
1210 | + | ev(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6) | |
1209 | 1211 | } | |
1210 | - | $Tuple2(makeString( | |
1212 | + | $Tuple2(makeString(ey._1, "_"), makeString(ey._2, "_")) | |
1211 | 1213 | } | |
1212 | 1214 | } | |
1213 | 1215 | ||
1214 | 1216 | ||
1215 | - | func | |
1216 | - | then | |
1217 | - | else -( | |
1218 | - | ||
1219 | - | ||
1220 | - | let | |
1221 | - | ||
1222 | - | func | |
1223 | - | let | |
1224 | - | let | |
1217 | + | func gB (gC) = if ((gC >= toBigInt(0))) | |
1218 | + | then gC | |
1219 | + | else -(gC) | |
1220 | + | ||
1221 | + | ||
1222 | + | let gD = [[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]] | |
1223 | + | ||
1224 | + | func gE (dh,gF) = { | |
1225 | + | let gG = toInt((dh % dF)) | |
1226 | + | let gH = if ((gF[0] > gG)) | |
1225 | 1227 | then "A" | |
1226 | - | else if (( | |
1228 | + | else if ((gF[1] > gG)) | |
1227 | 1229 | then "B" | |
1228 | - | else if (( | |
1230 | + | else if ((gF[2] > gG)) | |
1229 | 1231 | then "C" | |
1230 | - | else if (( | |
1232 | + | else if ((gF[3] > gG)) | |
1231 | 1233 | then "D" | |
1232 | - | else if (( | |
1234 | + | else if ((gF[4] > gG)) | |
1233 | 1235 | then "E" | |
1234 | 1236 | else "F" | |
1235 | - | | |
1236 | - | } | |
1237 | - | ||
1238 | - | ||
1239 | - | func | |
1240 | - | let | |
1241 | - | func | |
1242 | - | ||
1243 | - | let | |
1244 | - | let | |
1245 | - | let | |
1246 | - | let | |
1247 | - | func | |
1248 | - | then | |
1249 | - | else | |
1250 | - | ||
1251 | - | func | |
1252 | - | then | |
1237 | + | gH | |
1238 | + | } | |
1239 | + | ||
1240 | + | ||
1241 | + | func gI (gJ,gK) = { | |
1242 | + | let gL = gD[gK] | |
1243 | + | func gM (en,eo) = $Tuple2((((((en._1 + gE(en._2, gL)) + gE((en._2 / dF), gL)) + gE((en._2 / dG), gL)) + gE((en._2 / dH), gL)) + gE((en._2 / dI), gL)), (en._2 / dJ)) | |
1244 | + | ||
1245 | + | let fR = { | |
1246 | + | let ep = [1, 2, 3, 4, 5] | |
1247 | + | let eq = size(ep) | |
1248 | + | let er = $Tuple2("", (gJ / dE)) | |
1249 | + | func es (et,eu) = if ((eu >= eq)) | |
1250 | + | then et | |
1251 | + | else gM(et, ep[eu]) | |
1252 | + | ||
1253 | + | func ev (et,eu) = if ((eu >= eq)) | |
1254 | + | then et | |
1253 | 1255 | else throw("List size exceeds 5") | |
1254 | 1256 | ||
1255 | - | | |
1257 | + | ev(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5) | |
1256 | 1258 | } | |
1257 | - | | |
1258 | - | } | |
1259 | - | ||
1260 | - | ||
1261 | - | let | |
1262 | - | ||
1263 | - | let | |
1264 | - | ||
1265 | - | func | |
1266 | - | func | |
1267 | - | let | |
1268 | - | let | |
1269 | - | let | |
1259 | + | fR._1 | |
1260 | + | } | |
1261 | + | ||
1262 | + | ||
1263 | + | let gN = [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] | |
1264 | + | ||
1265 | + | let gO = ["A", "B", "C", "D", "E", "F"] | |
1266 | + | ||
1267 | + | func gP (gQ,gd) = { | |
1268 | + | func gR (en,df) = { | |
1269 | + | let eX = en._2 | |
1270 | + | let gS = parseIntValue(df) | |
1271 | + | let gC = if ((gS == 0)) | |
1270 | 1272 | then 0 | |
1271 | - | else if (( | |
1272 | - | then ( | |
1273 | - | else if (( | |
1273 | + | else if ((gS >= (4 * gd))) | |
1274 | + | then (gS / gd) | |
1275 | + | else if ((gS > (3 * gd))) | |
1274 | 1276 | then 3 | |
1275 | - | else ((( | |
1276 | - | $Tuple3(( | |
1277 | + | else (((gS - 1) / gd) + 1) | |
1278 | + | $Tuple3((en._1 :+ gC), (en._2 + 1), (en._3 + gC)) | |
1277 | 1279 | } | |
1278 | 1280 | ||
1279 | - | let | |
1280 | - | let | |
1281 | - | let | |
1282 | - | let | |
1283 | - | func | |
1284 | - | then | |
1285 | - | else | |
1286 | - | ||
1287 | - | func | |
1288 | - | then | |
1281 | + | let fR = { | |
1282 | + | let ep = gQ | |
1283 | + | let eq = size(ep) | |
1284 | + | let er = $Tuple3(nil, 0, 0) | |
1285 | + | func es (et,eu) = if ((eu >= eq)) | |
1286 | + | then et | |
1287 | + | else gR(et, ep[eu]) | |
1288 | + | ||
1289 | + | func ev (et,eu) = if ((eu >= eq)) | |
1290 | + | then et | |
1289 | 1291 | else throw("List size exceeds 6") | |
1290 | 1292 | ||
1291 | - | | |
1293 | + | ev(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6) | |
1292 | 1294 | } | |
1293 | - | let | |
1294 | - | let | |
1295 | - | let | |
1296 | - | func | |
1297 | - | let | |
1298 | - | then ( | |
1299 | - | else | |
1300 | - | let | |
1295 | + | let gT = fR._1 | |
1296 | + | let gU = value(indexOf(gT, max(gT))) | |
1297 | + | let gV = (fR._3 - 25) | |
1298 | + | func gW (en,cK) = { | |
1299 | + | let gX = if ((cK == gU)) | |
1300 | + | then (gT[cK] - gV) | |
1301 | + | else gT[cK] | |
1302 | + | let gY = if ((gX == 0)) | |
1301 | 1303 | then nil | |
1302 | - | else split(drop(toString(pow(10, 0, | |
1303 | - | let | |
1304 | - | func | |
1305 | - | ||
1306 | - | let | |
1307 | - | let | |
1308 | - | let | |
1309 | - | let | |
1310 | - | func | |
1311 | - | then | |
1312 | - | else | |
1313 | - | ||
1314 | - | func | |
1315 | - | then | |
1304 | + | else split(drop(toString(pow(10, 0, gX, 0, 0, DOWN)), 1), "") | |
1305 | + | let fw = gO[cK] | |
1306 | + | func gZ (ha,hb) = (ha :+ fw) | |
1307 | + | ||
1308 | + | let hc = { | |
1309 | + | let ep = gY | |
1310 | + | let eq = size(ep) | |
1311 | + | let er = nil | |
1312 | + | func hd (et,eu) = if ((eu >= eq)) | |
1313 | + | then et | |
1314 | + | else gZ(et, ep[eu]) | |
1315 | + | ||
1316 | + | func he (et,eu) = if ((eu >= eq)) | |
1317 | + | then et | |
1316 | 1318 | else throw("List size exceeds 25") | |
1317 | 1319 | ||
1318 | - | hd( | |
1319 | - | } | |
1320 | - | ( | |
1320 | + | he(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(er, 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) | |
1321 | + | } | |
1322 | + | (en ++ hc) | |
1321 | 1323 | } | |
1322 | 1324 | ||
1323 | - | let | |
1324 | - | let | |
1325 | - | let | |
1326 | - | let | |
1327 | - | func | |
1328 | - | then | |
1329 | - | else | |
1330 | - | ||
1331 | - | func | |
1332 | - | then | |
1325 | + | let ey = { | |
1326 | + | let ep = cv | |
1327 | + | let eq = size(ep) | |
1328 | + | let er = nil | |
1329 | + | func hd (et,eu) = if ((eu >= eq)) | |
1330 | + | then et | |
1331 | + | else gW(et, ep[eu]) | |
1332 | + | ||
1333 | + | func he (et,eu) = if ((eu >= eq)) | |
1334 | + | then et | |
1333 | 1335 | else throw("List size exceeds 6") | |
1334 | 1336 | ||
1335 | - | hd( | |
1337 | + | he(hd(hd(hd(hd(hd(hd(er, 0), 1), 2), 3), 4), 5), 6) | |
1336 | 1338 | } | |
1337 | - | func | |
1338 | - | ||
1339 | - | let | |
1340 | - | let | |
1341 | - | let | |
1342 | - | func | |
1343 | - | then | |
1344 | - | else | |
1345 | - | ||
1346 | - | func | |
1347 | - | then | |
1339 | + | func hf (en,eX) = (en + ey[eX]) | |
1340 | + | ||
1341 | + | let ep = gN | |
1342 | + | let eq = size(ep) | |
1343 | + | let er = "" | |
1344 | + | func hg (et,eu) = if ((eu >= eq)) | |
1345 | + | then et | |
1346 | + | else hf(et, ep[eu]) | |
1347 | + | ||
1348 | + | func hh (et,eu) = if ((eu >= eq)) | |
1349 | + | then et | |
1348 | 1350 | else throw("List size exceeds 25") | |
1349 | 1351 | ||
1350 | - | hg( | |
1351 | - | } | |
1352 | - | ||
1353 | - | ||
1354 | - | func | |
1355 | - | let | |
1356 | - | [toString(valueOrElse(parseInt( | |
1357 | - | then | |
1358 | - | else "0_0_0_0_0_0", if ((size(split( | |
1359 | - | then | |
1360 | - | else "0_0_0_0_0_0", | |
1361 | - | } | |
1362 | - | ||
1363 | - | ||
1364 | - | func | |
1365 | - | let | |
1366 | - | ((aH * (parseIntValue( | |
1367 | - | } | |
1368 | - | ||
1369 | - | ||
1370 | - | func | |
1371 | - | let | |
1372 | - | func | |
1373 | - | ||
1374 | - | func | |
1375 | - | let | |
1376 | - | let | |
1377 | - | $Tuple2(( | |
1352 | + | hh(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(er, 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) | |
1353 | + | } | |
1354 | + | ||
1355 | + | ||
1356 | + | func hi (hj) = { | |
1357 | + | let fQ = split(valueOrElse(getString(hj), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":") | |
1358 | + | [toString(valueOrElse(parseInt(fQ[be]), 0)), if ((size(split(fQ[bf], "_")) == aD)) | |
1359 | + | then fQ[bf] | |
1360 | + | else "0_0_0_0_0_0", if ((size(split(fQ[bg], "_")) == aD)) | |
1361 | + | then fQ[bg] | |
1362 | + | else "0_0_0_0_0_0", fQ[bh]] | |
1363 | + | } | |
1364 | + | ||
1365 | + | ||
1366 | + | func hk (hl) = { | |
1367 | + | let eL = split(hl, "_") | |
1368 | + | ((aH * (parseIntValue(eL[1]) + 1)) * parseIntValue(eL[0])) | |
1369 | + | } | |
1370 | + | ||
1371 | + | ||
1372 | + | func hm (hn) = { | |
1373 | + | let ho = hn[aY] | |
1374 | + | func hp (en,hq) = (en + parseIntValue(hq)) | |
1375 | + | ||
1376 | + | func hr (en,hq) = { | |
1377 | + | let cK = en._1 | |
1378 | + | let eg = (((parseIntValue(hq) + aU) - 1) / aU) | |
1379 | + | $Tuple2((cK + 1), (en._2 + (eg * cp))) | |
1378 | 1380 | } | |
1379 | 1381 | ||
1380 | - | let | |
1381 | - | let | |
1382 | - | let | |
1383 | - | let | |
1384 | - | func | |
1385 | - | then | |
1386 | - | else | |
1387 | - | ||
1388 | - | func | |
1389 | - | then | |
1382 | + | let hs = { | |
1383 | + | let ep = split(hn[aW], "_") | |
1384 | + | let eq = size(ep) | |
1385 | + | let er = 0 | |
1386 | + | func es (et,eu) = if ((eu >= eq)) | |
1387 | + | then et | |
1388 | + | else hp(et, ep[eu]) | |
1389 | + | ||
1390 | + | func ev (et,eu) = if ((eu >= eq)) | |
1391 | + | then et | |
1390 | 1392 | else throw("List size exceeds 6") | |
1391 | 1393 | ||
1392 | - | | |
1394 | + | ev(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6) | |
1393 | 1395 | } | |
1394 | - | let | |
1395 | - | let | |
1396 | - | let | |
1397 | - | let | |
1398 | - | func | |
1399 | - | then | |
1400 | - | else | |
1401 | - | ||
1402 | - | func | |
1403 | - | then | |
1396 | + | let ht = { | |
1397 | + | let ep = split(hn[aX], "_") | |
1398 | + | let eq = size(ep) | |
1399 | + | let er = 0 | |
1400 | + | func hd (et,eu) = if ((eu >= eq)) | |
1401 | + | then et | |
1402 | + | else hp(et, ep[eu]) | |
1403 | + | ||
1404 | + | func he (et,eu) = if ((eu >= eq)) | |
1405 | + | then et | |
1404 | 1406 | else throw("List size exceeds 6") | |
1405 | 1407 | ||
1406 | - | hd( | |
1408 | + | he(hd(hd(hd(hd(hd(hd(er, 0), 1), 2), 3), 4), 5), 6) | |
1407 | 1409 | } | |
1408 | - | let | |
1410 | + | let hu = if ((ho == "")) | |
1409 | 1411 | then 0 | |
1410 | - | else ( let | |
1411 | - | let | |
1412 | - | let | |
1413 | - | func | |
1414 | - | then | |
1415 | - | else | |
1416 | - | ||
1417 | - | func | |
1418 | - | then | |
1412 | + | else ( let ep = split_4C(ho, "_") | |
1413 | + | let eq = size(ep) | |
1414 | + | let er = $Tuple2(0, 0) | |
1415 | + | func hg (et,eu) = if ((eu >= eq)) | |
1416 | + | then et | |
1417 | + | else hr(et, ep[eu]) | |
1418 | + | ||
1419 | + | func hh (et,eu) = if ((eu >= eq)) | |
1420 | + | then et | |
1419 | 1421 | else throw("List size exceeds 50") | |
1420 | 1422 | ||
1421 | - | hg( | |
1422 | - | (( | |
1423 | - | } | |
1424 | - | ||
1425 | - | ||
1426 | - | func | |
1427 | - | let | |
1428 | - | let | |
1429 | - | let | |
1430 | - | let | |
1431 | - | let | |
1432 | - | let | |
1433 | - | then makeString(["0", toString( | |
1423 | + | hh(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(er, 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 | |
1424 | + | ((hs + ht) + hu) | |
1425 | + | } | |
1426 | + | ||
1427 | + | ||
1428 | + | func hv (hw,hx,hy) = { | |
1429 | + | let hl = ((toString(hx) + "_") + toString(hy)) | |
1430 | + | let hz = hk(hl) | |
1431 | + | let hA = valueOrElse(getString(hw), (hl + ":0_0_0_0_0_0:0_0_0_0_0_0::0")) | |
1432 | + | let hB = split_4C(hA, ":") | |
1433 | + | let hC = hm(hB) | |
1434 | + | let hD = if ((5 > size(hB))) | |
1435 | + | then makeString(["0", toString(hC), toString((hz - hC)), toString(hz)], "_") | |
1434 | 1436 | else { | |
1435 | - | let | |
1436 | - | let | |
1437 | - | let | |
1438 | - | then parseIntValue( | |
1439 | - | else | |
1440 | - | makeString([toString( | |
1441 | - | } | |
1442 | - | [ | |
1443 | - | then | |
1444 | - | else "0_0_0_0_0_0", if ((size(split( | |
1445 | - | then | |
1446 | - | else "0_0_0_0_0_0", | |
1447 | - | } | |
1448 | - | ||
1449 | - | ||
1450 | - | func | |
1451 | - | let | |
1452 | - | let | |
1453 | - | (( | |
1454 | - | } | |
1455 | - | ||
1456 | - | ||
1457 | - | func | |
1437 | + | let hE = split(hB[aZ], "_") | |
1438 | + | let hF = parseIntValue(hE[ba]) | |
1439 | + | let hG = if ((size(hE) > 1)) | |
1440 | + | then parseIntValue(hE[bb]) | |
1441 | + | else hC | |
1442 | + | makeString([toString(hF), toString(hG), toString(((hz - hF) - hG)), toString(hz)], "_") | |
1443 | + | } | |
1444 | + | [hB[aV], if ((size(split(hB[aW], "_")) == aD)) | |
1445 | + | then hB[aW] | |
1446 | + | else "0_0_0_0_0_0", if ((size(split(hB[aX], "_")) == aD)) | |
1447 | + | then hB[aX] | |
1448 | + | else "0_0_0_0_0_0", hB[aY], hD] | |
1449 | + | } | |
1450 | + | ||
1451 | + | ||
1452 | + | func hH (hn) = { | |
1453 | + | let hI = hm(hn) | |
1454 | + | let hJ = parseIntValue(split(hn[aZ], "_")[ba]) | |
1455 | + | ((hk(hn[aV]) - hI) - hJ) | |
1456 | + | } | |
1457 | + | ||
1458 | + | ||
1459 | + | func hK (hL,hn,hM) = if ((size(hL) != 3)) | |
1458 | 1460 | then throw("cargoListStr should contain exactly 2 ':' separators") | |
1459 | 1461 | else { | |
1460 | - | let | |
1461 | - | let | |
1462 | - | let | |
1462 | + | let hN = split(hL[0], "_") | |
1463 | + | let hO = split(hL[1], "_") | |
1464 | + | let hP = if ((hL[2] == "")) | |
1463 | 1465 | then nil | |
1464 | - | else split_4C( | |
1465 | - | if ((size( | |
1466 | + | else split_4C(hL[2], "_") | |
1467 | + | if ((size(hN) != aD)) | |
1466 | 1468 | then throw("All 6 resources should be passed") | |
1467 | - | else if ((size( | |
1469 | + | else if ((size(hO) != aD)) | |
1468 | 1470 | then throw("All 6 materials should be passed") | |
1469 | 1471 | else { | |
1470 | - | let | |
1471 | - | let | |
1472 | - | let | |
1473 | - | let | |
1472 | + | let gv = hH(hn) | |
1473 | + | let hQ = split(hn[aW], "_") | |
1474 | + | let hR = split(hn[aX], "_") | |
1475 | + | let hS = if ((hn[aY] == "")) | |
1474 | 1476 | then nil | |
1475 | - | else split_4C( | |
1476 | - | let | |
1477 | - | let | |
1478 | - | let | |
1477 | + | else split_4C(hn[aY], "_") | |
1478 | + | let gt = split(hM[bf], "_") | |
1479 | + | let hT = split(hM[bg], "_") | |
1480 | + | let hU = if ((hM[bh] == "")) | |
1479 | 1481 | then nil | |
1480 | - | else split_4C( | |
1481 | - | func | |
1482 | - | let | |
1483 | - | let | |
1484 | - | let | |
1485 | - | let | |
1486 | - | if (( | |
1487 | - | then $Tuple4(( | |
1488 | - | else if (( | |
1489 | - | then if (( | |
1490 | - | then throw((((("Attempt to take " + | |
1491 | - | else $Tuple4(( | |
1492 | - | else if ((-( | |
1493 | - | then throw((((("Attempt to take " + toString(-( | |
1494 | - | else $Tuple4(( | |
1482 | + | else split_4C(hM[bh], "_") | |
1483 | + | func hV (en,hq) = { | |
1484 | + | let gg = en._1 | |
1485 | + | let hW = parseIntValue(hq) | |
1486 | + | let hX = parseIntValue(hQ[gg]) | |
1487 | + | let hY = parseIntValue(gt[gg]) | |
1488 | + | if ((hW == 0)) | |
1489 | + | then $Tuple4((gg + 1), (en._2 :+ hQ[gg]), (en._3 :+ gt[gg]), en._4) | |
1490 | + | else if ((hW > 0)) | |
1491 | + | then if ((hW > hY)) | |
1492 | + | then throw((((("Attempt to take " + hq) + " from backpack, but only ") + toString(hY)) + " available")) | |
1493 | + | else $Tuple4((gg + 1), (en._2 :+ toString((hX + hW))), (en._3 :+ toString((hY - hW))), (en._4 + hW)) | |
1494 | + | else if ((-(hW) > hX)) | |
1495 | + | then throw((((("Attempt to take " + toString(-(hW))) + " from warehouse, but only ") + toString(hX)) + " available")) | |
1496 | + | else $Tuple4((gg + 1), (en._2 :+ toString((hX + hW))), (en._3 :+ toString((hY - hW))), (en._4 + hW)) | |
1495 | 1497 | } | |
1496 | 1498 | ||
1497 | - | let | |
1498 | - | let | |
1499 | - | let | |
1500 | - | let | |
1501 | - | func | |
1502 | - | then | |
1503 | - | else | |
1504 | - | ||
1505 | - | func | |
1506 | - | then | |
1499 | + | let ey = { | |
1500 | + | let ep = hN | |
1501 | + | let eq = size(ep) | |
1502 | + | let er = $Tuple4(0, nil, nil, 0) | |
1503 | + | func es (et,eu) = if ((eu >= eq)) | |
1504 | + | then et | |
1505 | + | else hV(et, ep[eu]) | |
1506 | + | ||
1507 | + | func ev (et,eu) = if ((eu >= eq)) | |
1508 | + | then et | |
1507 | 1509 | else throw("List size exceeds 6") | |
1508 | 1510 | ||
1509 | - | | |
1511 | + | ev(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6) | |
1510 | 1512 | } | |
1511 | - | func | |
1512 | - | let | |
1513 | - | let | |
1514 | - | let | |
1515 | - | let | |
1516 | - | if (( | |
1517 | - | then $Tuple4(( | |
1518 | - | else if (( | |
1519 | - | then if (( | |
1520 | - | then throw((((("Attempt to take " + | |
1521 | - | else $Tuple4(( | |
1522 | - | else if ((-( | |
1523 | - | then throw((((("Attempt to take " + toString(-( | |
1524 | - | else $Tuple4(( | |
1513 | + | func hZ (en,hq) = { | |
1514 | + | let gg = en._1 | |
1515 | + | let hW = parseIntValue(hq) | |
1516 | + | let ia = parseIntValue(hR[gg]) | |
1517 | + | let ib = parseIntValue(hT[gg]) | |
1518 | + | if ((hW == 0)) | |
1519 | + | then $Tuple4((gg + 1), (en._2 :+ hR[gg]), (en._3 :+ hT[gg]), en._4) | |
1520 | + | else if ((hW > 0)) | |
1521 | + | then if ((hW > ib)) | |
1522 | + | then throw((((("Attempt to take " + hq) + " from backpack, but only ") + toString(ib)) + " available")) | |
1523 | + | else $Tuple4((gg + 1), (en._2 :+ toString((ia + hW))), (en._3 :+ toString((ib - hW))), (en._4 + hW)) | |
1524 | + | else if ((-(hW) > ia)) | |
1525 | + | then throw((((("Attempt to take " + toString(-(hW))) + " from warehouse, but only ") + toString(ia)) + " available")) | |
1526 | + | else $Tuple4((gg + 1), (en._2 :+ toString((ia + hW))), (en._3 :+ toString((ib - hW))), (en._4 + hW)) | |
1525 | 1527 | } | |
1526 | 1528 | ||
1527 | - | let | |
1528 | - | let | |
1529 | - | let | |
1530 | - | let | |
1531 | - | func | |
1532 | - | then | |
1533 | - | else | |
1534 | - | ||
1535 | - | func | |
1536 | - | then | |
1529 | + | let fM = { | |
1530 | + | let ep = hO | |
1531 | + | let eq = size(ep) | |
1532 | + | let er = $Tuple4(0, nil, nil, ey._4) | |
1533 | + | func hd (et,eu) = if ((eu >= eq)) | |
1534 | + | then et | |
1535 | + | else hZ(et, ep[eu]) | |
1536 | + | ||
1537 | + | func he (et,eu) = if ((eu >= eq)) | |
1538 | + | then et | |
1537 | 1539 | else throw("List size exceeds 6") | |
1538 | 1540 | ||
1539 | - | hd( | |
1541 | + | he(hd(hd(hd(hd(hd(hd(er, 0), 1), 2), 3), 4), 5), 6) | |
1540 | 1542 | } | |
1541 | - | func | |
1542 | - | let | |
1543 | - | let | |
1544 | - | let | |
1545 | - | then parseIntValue( | |
1543 | + | func ic (en,hq) = { | |
1544 | + | let gg = en._1 | |
1545 | + | let hW = parseIntValue(hq) | |
1546 | + | let id = if ((size(hS) > gg)) | |
1547 | + | then parseIntValue(hS[gg]) | |
1546 | 1548 | else 0 | |
1547 | - | let | |
1548 | - | then parseIntValue( | |
1549 | + | let ie = if ((size(hU) > gg)) | |
1550 | + | then parseIntValue(hU[gg]) | |
1549 | 1551 | else 0 | |
1550 | - | if (( | |
1551 | - | then $Tuple4(( | |
1552 | - | else if (( | |
1553 | - | then if (( | |
1554 | - | then throw((((("Attempt to take " + | |
1552 | + | if ((hW == 0)) | |
1553 | + | then $Tuple4((gg + 1), (en._2 :+ toString(id)), (en._3 :+ toString(ie)), en._4) | |
1554 | + | else if ((hW > 0)) | |
1555 | + | then if ((hW > ie)) | |
1556 | + | then throw((((("Attempt to take " + hq) + " from backpack, but only ") + toString(ie)) + " available")) | |
1555 | 1557 | else { | |
1556 | - | let | |
1557 | - | $Tuple4(( | |
1558 | + | let fp = (ed((id + hW), aU) - ed(id, aU)) | |
1559 | + | $Tuple4((gg + 1), (en._2 :+ toString((id + hW))), (en._3 :+ toString((ie - hW))), (en._4 + fp)) | |
1558 | 1560 | } | |
1559 | - | else if ((-( | |
1560 | - | then throw((((("Attempt to take " + toString(-( | |
1561 | + | else if ((-(hW) > id)) | |
1562 | + | then throw((((("Attempt to take " + toString(-(hW))) + " from warehouse, but only ") + toString(id)) + " available")) | |
1561 | 1563 | else { | |
1562 | - | let | |
1563 | - | $Tuple4(( | |
1564 | + | let fp = (ed((id + hW), aU) - ed(id, aU)) | |
1565 | + | $Tuple4((gg + 1), (en._2 :+ toString((id + hW))), (en._3 :+ toString((ie - hW))), (en._4 + fp)) | |
1564 | 1566 | } | |
1565 | 1567 | } | |
1566 | 1568 | ||
1567 | - | let | |
1569 | + | let fQ = if ((size(hP) != 0)) | |
1568 | 1570 | then { | |
1569 | - | let | |
1570 | - | let | |
1571 | - | let | |
1572 | - | func | |
1573 | - | then | |
1574 | - | else | |
1575 | - | ||
1576 | - | func | |
1577 | - | then | |
1571 | + | let ep = hP | |
1572 | + | let eq = size(ep) | |
1573 | + | let er = $Tuple4(0, nil, nil, fM._4) | |
1574 | + | func hg (et,eu) = if ((eu >= eq)) | |
1575 | + | then et | |
1576 | + | else ic(et, ep[eu]) | |
1577 | + | ||
1578 | + | func hh (et,eu) = if ((eu >= eq)) | |
1579 | + | then et | |
1578 | 1580 | else throw("List size exceeds 50") | |
1579 | 1581 | ||
1580 | - | hg( | |
1582 | + | hh(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(hg(er, 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) | |
1581 | 1583 | } | |
1582 | - | else $Tuple4(0, | |
1583 | - | let | |
1584 | - | if (( | |
1585 | - | then throw((((("Attempt to put total " + toString( | |
1586 | - | else $Tuple7(makeString( | |
1584 | + | else $Tuple4(0, hS, hU, fM._4) | |
1585 | + | let if = fQ._4 | |
1586 | + | if ((if > gv)) | |
1587 | + | then throw((((("Attempt to put total " + toString(if)) + " stuff, but only ") + toString(gv)) + " warehouse space left")) | |
1588 | + | else $Tuple7(makeString(ey._2, "_"), makeString(fM._2, "_"), makeString_2C(fQ._2, "_"), makeString(ey._3, "_"), makeString(fM._3, "_"), makeString_2C(fQ._3, "_"), if) | |
1587 | 1589 | } | |
1588 | 1590 | } | |
1589 | 1591 | ||
1590 | 1592 | ||
1591 | - | func | |
1592 | - | let bI = toString( | |
1593 | - | let | |
1594 | - | let | |
1595 | - | let | |
1596 | - | let | |
1597 | - | let | |
1598 | - | let | |
1599 | - | let | |
1600 | - | let bm = calculateAssetId( | |
1601 | - | let | |
1602 | - | $Tuple2([IntegerEntry( | |
1603 | - | } | |
1604 | - | ||
1605 | - | ||
1606 | - | func | |
1593 | + | func ig (ih,ii) = { | |
1594 | + | let bI = toString(ih) | |
1595 | + | let ij = gB(toBigInt(ii)) | |
1596 | + | let ik = valueOrElse(getInteger(dL()), (dK + 1)) | |
1597 | + | let dP = toString(ik) | |
1598 | + | let gK = toInt((ij % dE)) | |
1599 | + | let gj = gI(ij, gK) | |
1600 | + | let da = aM[gK] | |
1601 | + | let il = Issue(ec(dP, "S"), makeString([dP, "S", gj, da], "_"), 1, 0, false) | |
1602 | + | let bm = calculateAssetId(il) | |
1603 | + | let im = toBase58String(bm) | |
1604 | + | $Tuple2([IntegerEntry(dL(), (ik + 1)), il, StringEntry(dO(dP), im), StringEntry(bl(im), bI), StringEntry(dR(dP), bI), IntegerEntry(bv(im), 0), IntegerEntry(dQ(im, bI), 0), ScriptTransfer(ih, 1, bm)], $Tuple2(im, da)) | |
1605 | + | } | |
1606 | + | ||
1607 | + | ||
1608 | + | func in (bI,io,ip) = if (!(sigVerify_8Kb(io, ip, dw))) | |
1607 | 1609 | then throw("signature does not match") | |
1608 | 1610 | else { | |
1609 | - | let | |
1610 | - | let | |
1611 | - | let | |
1612 | - | let | |
1613 | - | let | |
1614 | - | let | |
1615 | - | let | |
1616 | - | let | |
1617 | - | if (if (( | |
1611 | + | let eL = split_4C(toUtf8String(io), ";") | |
1612 | + | let iq = split_4C(eL[0], "|") | |
1613 | + | let ir = split(iq[dY], "_") | |
1614 | + | let is = parseIntValue(ir[0]) | |
1615 | + | let it = parseIntValue(ir[1]) | |
1616 | + | let iu = split(eL[1], ":") | |
1617 | + | let iv = iu[0] | |
1618 | + | let iw = parseIntValue(iq[dZ]) | |
1619 | + | if (if ((iw > (lastBlock.timestamp + dy))) | |
1618 | 1620 | then true | |
1619 | - | else ((lastBlock.timestamp - | |
1620 | - | then throw(((("signature outdated: logTime=" + toString( | |
1621 | + | else ((lastBlock.timestamp - dy) > iw)) | |
1622 | + | then throw(((("signature outdated: logTime=" + toString(iw)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
1621 | 1623 | else { | |
1622 | - | let | |
1623 | - | let | |
1624 | - | if (( | |
1625 | - | then throw(((("Tx ids don't match! In state: " + | |
1624 | + | let ix = iu[1] | |
1625 | + | let iy = valueOrElse(getString(dn(bI)), "") | |
1626 | + | if ((iy != ix)) | |
1627 | + | then throw(((("Tx ids don't match! In state: " + iy) + ", in msg: ") + ix)) | |
1626 | 1628 | else { | |
1627 | 1629 | let z = valueOrErrorMessage(getString(bE(bI)), "You don't have a duck staked") | |
1628 | - | let | |
1629 | - | let | |
1630 | - | let | |
1631 | - | if (( | |
1632 | - | then throw(((("oldHealth=" + toString( | |
1633 | - | else if ((0 >= | |
1630 | + | let iz = y(z) | |
1631 | + | let iA = ae(valueOrElse(getInteger(C(z)), 0)) | |
1632 | + | let iB = valueOrElse(getInteger(iz), iA) | |
1633 | + | if ((iB != is)) | |
1634 | + | then throw(((("oldHealth=" + toString(iB)) + " from state does not match one from flight log=") + toString(is))) | |
1635 | + | else if ((0 >= is)) | |
1634 | 1636 | then throw("You can't fly with zero health") | |
1635 | - | else if (!( | |
1637 | + | else if (!(fS(z))) | |
1636 | 1638 | then throw("Equipment incompatible") | |
1637 | 1639 | else { | |
1638 | - | let | |
1639 | - | then | |
1640 | + | let iC = if ((size(iq) > ea)) | |
1641 | + | then iq[ea] | |
1640 | 1642 | else "" | |
1641 | - | let | |
1642 | - | then | |
1643 | + | let iD = if ((size(iq) > eb)) | |
1644 | + | then iq[eb] | |
1643 | 1645 | else "" | |
1644 | - | let | |
1645 | - | then ( | |
1646 | + | let iE = if (if ((it > 0)) | |
1647 | + | then (iC == "$") | |
1646 | 1648 | else false) | |
1647 | - | then | |
1649 | + | then dg(invoke(cL, "sendUsdtPrize", [bI], nil)) | |
1648 | 1650 | else 0 | |
1649 | - | $Tuple5( | |
1651 | + | $Tuple5(it, z, iE, iv, iD) | |
1650 | 1652 | } | |
1651 | 1653 | } | |
1652 | 1654 | } | |
1653 | 1655 | } | |
1654 | 1656 | ||
1655 | 1657 | ||
1656 | - | func | |
1657 | - | let | |
1658 | - | let | |
1659 | - | let | |
1660 | - | let | |
1661 | - | ((aF + fraction(aF, (( | |
1662 | - | } | |
1663 | - | ||
1664 | - | ||
1665 | - | func | |
1666 | - | let | |
1667 | - | then $Tuple2( | |
1658 | + | func iF (O,iG) = { | |
1659 | + | let hy = valueOrElse(getInteger(bv(O)), 0) | |
1660 | + | let iH = valueOrElse(getInteger(bp(aC, O)), 0) | |
1661 | + | let iI = (hy / 6) | |
1662 | + | let iJ = (hy / 7) | |
1663 | + | ((aF + fraction(aF, ((hy + iI) + (2 * iJ)), 5)) + fraction(aF, iH, (iG * 5))) | |
1664 | + | } | |
1665 | + | ||
1666 | + | ||
1667 | + | func iK (b,iL,iM) = { | |
1668 | + | let iN = if ((iL == dV)) | |
1669 | + | then $Tuple2(iM, valueOrElse(getString(bE(b)), "")) | |
1668 | 1670 | else { | |
1669 | 1671 | let z = valueOrErrorMessage(getString(bE(b)), "You don't have a duck staked") | |
1670 | - | let | |
1671 | - | let ca = split(value( | |
1672 | + | let iO = valueOrElse(getString(bG(z)), aI) | |
1673 | + | let ca = split(value(iO), "_") | |
1672 | 1674 | if ((ca[bj] != "L")) | |
1673 | 1675 | then throw((("Duck location type is " + ca[bj]) + ", but should be L")) | |
1674 | 1676 | else $Tuple2(ca[bk], z) | |
1675 | 1677 | } | |
1676 | - | let O = | |
1677 | - | let | |
1678 | - | let | |
1679 | - | let | |
1680 | - | let | |
1681 | - | let | |
1682 | - | if (( | |
1678 | + | let O = iN._1 | |
1679 | + | let iP = iN._2 | |
1680 | + | let iQ = value(assetInfo(fromBase58String(O))) | |
1681 | + | let iR = bo(O) | |
1682 | + | let iS = valueOrErrorMessage(getInteger(iR), (("Land " + iQ.name) + " is not staked")) | |
1683 | + | let iT = valueOrErrorMessage(getString(bl(O)), (("NFT " + iQ.name) + " is orphaned")) | |
1684 | + | if ((iT != b)) | |
1683 | 1685 | then throw((aA + " is not yours")) | |
1684 | 1686 | else { | |
1685 | - | let | |
1686 | - | $Tuple4( | |
1687 | - | } | |
1688 | - | } | |
1689 | - | ||
1690 | - | ||
1691 | - | func | |
1687 | + | let iU = split(iQ.description, "_") | |
1688 | + | $Tuple4(iP, O, iU, iS) | |
1689 | + | } | |
1690 | + | } | |
1691 | + | ||
1692 | + | ||
1693 | + | func iV (b,ee,iL,iM) = if ((0 > ee)) | |
1692 | 1694 | then throw("Negative amount") | |
1693 | 1695 | else { | |
1694 | - | let | |
1695 | - | let | |
1696 | - | let | |
1697 | - | let | |
1698 | - | if ((0 > | |
1699 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1696 | + | let fw = iK(b, iL, iM) | |
1697 | + | let dk = fw._3[cR] | |
1698 | + | let gc = gi(fw._3[cS]) | |
1699 | + | let gm = (lastBlock.timestamp - fw._4) | |
1700 | + | if ((0 > gm)) | |
1701 | + | then throw(((("Saved timestamp is in future, saved = " + toString(fw._4)) + ", current = ") + toString(lastBlock.timestamp))) | |
1700 | 1702 | else { | |
1701 | - | let | |
1702 | - | let | |
1703 | - | let | |
1704 | - | if (( | |
1705 | - | then throw(((("Not enough resources, available = " + toString( | |
1703 | + | let iG = dj(dk) | |
1704 | + | let iW = iF(fw._2, iG) | |
1705 | + | let iX = fraction(gm, (iW * iG), aG) | |
1706 | + | if ((ee > iX)) | |
1707 | + | then throw(((("Not enough resources, available = " + toString(iX)) + ", requested = ") + toString(ee))) | |
1706 | 1708 | else { | |
1707 | - | let | |
1708 | - | let | |
1709 | - | let | |
1710 | - | let | |
1711 | - | let | |
1712 | - | let | |
1713 | - | let | |
1714 | - | let | |
1715 | - | let | |
1716 | - | if (if (( | |
1717 | - | then ( | |
1709 | + | let iY = fraction((iX - ee), aG, (iW * iG)) | |
1710 | + | let iZ = (lastBlock.timestamp - iY) | |
1711 | + | let hx = (iG / cq) | |
1712 | + | let gu = gq(gc, (gm - iY), hx, iW) | |
1713 | + | let hw = bu(fw._2) | |
1714 | + | let hy = valueOrElse(getInteger(bv(fw._2)), 0) | |
1715 | + | let hn = hv(hw, hx, hy) | |
1716 | + | let hE = split(hn[aZ], "_") | |
1717 | + | let gv = parseIntValue(hE[bc]) | |
1718 | + | if (if ((iL == dV)) | |
1719 | + | then (ee > gv) | |
1718 | 1720 | else false) | |
1719 | - | then throw((("Only " + toString( | |
1721 | + | then throw((("Only " + toString(gv)) + " space left in warehouse")) | |
1720 | 1722 | else { | |
1721 | - | let | |
1722 | - | let | |
1723 | - | let | |
1724 | - | let | |
1725 | - | let | |
1726 | - | then $Tuple4( | |
1727 | - | else if (( | |
1728 | - | then $Tuple4( | |
1723 | + | let hj = bF(fw._1) | |
1724 | + | let hM = hi(hj) | |
1725 | + | let gt = split(hM[bf], "_") | |
1726 | + | let gs = split(hn[aW], "_") | |
1727 | + | let ja = if ((iL == dV)) | |
1728 | + | then $Tuple4(gk(gs, gc, (gm - iY), hx, iW), hM[bf], (parseIntValue(hE[bb]) + gu._2), (parseIntValue(hE[bc]) - gu._2)) | |
1729 | + | else if ((iL == dW)) | |
1730 | + | then $Tuple4(hn[aW], gk(gt, gc, (gm - iY), hx, iW), parseIntValue(hE[bb]), parseIntValue(hE[bc])) | |
1729 | 1731 | else { | |
1730 | - | let | |
1731 | - | let | |
1732 | - | $Tuple4( | |
1732 | + | let jb = gr(gs, gt, gu, gv) | |
1733 | + | let jc = min([parseIntValue(hE[bc]), gu._2]) | |
1734 | + | $Tuple4(jb._1, jb._2, (parseIntValue(hE[bb]) + jc), (parseIntValue(hE[bc]) - jc)) | |
1733 | 1735 | } | |
1734 | - | let | |
1735 | - | let | |
1736 | - | let | |
1737 | - | let | |
1738 | - | $Tuple5([IntegerEntry(bo( | |
1736 | + | let jd = ja._1 | |
1737 | + | let je = ja._2 | |
1738 | + | let jf = ja._3 | |
1739 | + | let jg = ja._4 | |
1740 | + | $Tuple5([IntegerEntry(bo(fw._2), iZ), IntegerEntry(br(aA, fw._2, b), iZ)], hj, [hM[be], je, hM[bg], hM[bh]], hw, [hn[aV], jd, hn[aX], hn[aY], makeString([hE[ba], toString(jf), toString(jg), hE[bd]], "_")]) | |
1739 | 1741 | } | |
1740 | 1742 | } | |
1741 | 1743 | } | |
1742 | 1744 | } | |
1743 | 1745 | ||
1744 | 1746 | ||
1745 | - | func | |
1746 | - | let | |
1747 | - | let | |
1748 | - | let | |
1749 | - | | |
1750 | - | } | |
1751 | - | ||
1752 | - | ||
1753 | - | func | |
1754 | - | let b = toString( | |
1755 | - | let | |
1756 | - | let | |
1757 | - | let | |
1758 | - | let | |
1747 | + | func jh (b,O,iG,iL) = { | |
1748 | + | let iR = bo(O) | |
1749 | + | let iS = value(getInteger(iR)) | |
1750 | + | let iX = (fraction((lastBlock.timestamp - iS), iF(O, iG), aG) * iG) | |
1751 | + | iV(b, iX, iL, O) | |
1752 | + | } | |
1753 | + | ||
1754 | + | ||
1755 | + | func ji (eA,ih,jj,O) = { | |
1756 | + | let b = toString(ih) | |
1757 | + | let fw = iK(b, dX, O) | |
1758 | + | let iG = dj(fw._3[cR]) | |
1759 | + | let jk = bv(fw._2) | |
1760 | + | let jl = valueOrElse(getInteger(jk), 0) | |
1759 | 1761 | if (if (!(cf)) | |
1760 | - | then ( | |
1762 | + | then (jl >= 3) | |
1761 | 1763 | else false) | |
1762 | 1764 | then throw("Currently max infrastructure level = 3") | |
1763 | 1765 | else { | |
1764 | - | let | |
1765 | - | let aj = ( | |
1766 | + | let jm = ((sqrt(iG, 0, 0, DOWN) / 5) + 2) | |
1767 | + | let aj = (jl + 1) | |
1766 | 1768 | if (if (cf) | |
1767 | - | then (aj > | |
1769 | + | then (aj > jm) | |
1768 | 1770 | else false) | |
1769 | - | then throw(("Currently max infrastructure level = " + toString( | |
1771 | + | then throw(("Currently max infrastructure level = " + toString(jm))) | |
1770 | 1772 | else { | |
1771 | - | let | |
1772 | - | if (if (!( | |
1773 | - | then ( | |
1773 | + | let jn = fraction(dB, (iG * aj), cq) | |
1774 | + | if (if (!(eA)) | |
1775 | + | then (jj != jn) | |
1774 | 1776 | else false) | |
1775 | - | then throw(("Payment attached should be " + toString( | |
1777 | + | then throw(("Payment attached should be " + toString(jn))) | |
1776 | 1778 | else { | |
1777 | - | let | |
1778 | - | let | |
1779 | - | let | |
1780 | - | let | |
1781 | - | let | |
1782 | - | let | |
1783 | - | let | |
1784 | - | let | |
1785 | - | let | |
1786 | - | let | |
1787 | - | let | |
1788 | - | let | |
1789 | - | $Tuple3(([IntegerEntry( | |
1779 | + | let hj = bF(fw._1) | |
1780 | + | let hM = hi(hj) | |
1781 | + | let jo = split(hM[bg], "_") | |
1782 | + | let jp = fraction(cl, (iG * aj), cq) | |
1783 | + | let jq = makeString(ez(eA, jo, jp), "_") | |
1784 | + | let jr = jh(b, fw._2, iG, dX) | |
1785 | + | let js = jr._5 | |
1786 | + | let jt = hk(js[aV]) | |
1787 | + | let ju = makeString([split(js[aV], "_")[0], toString(aj)], "_") | |
1788 | + | let jv = hk(ju) | |
1789 | + | let hE = split(js[aZ], "_") | |
1790 | + | let jw = makeString([hE[ba], hE[bb], toString(((parseIntValue(hE[bc]) + jv) - jt)), toString(jv)], "_") | |
1791 | + | $Tuple3(([IntegerEntry(jk, aj), IntegerEntry(dQ(fw._2, b), aj), StringEntry(hj, makeString([hM[be], jr._3[bf], jq, hM[bh]], ":")), StringEntry(jr._4, makeString([ju, js[aW], js[aX], js[aY], jw], ":"))] ++ jr._1), aj, jp) | |
1790 | 1792 | } | |
1791 | 1793 | } | |
1792 | 1794 | } | |
1793 | 1795 | } | |
1794 | 1796 | ||
1795 | 1797 | ||
1796 | - | func | |
1797 | - | let | |
1798 | - | let | |
1799 | - | let ad = valueOrElse(getInteger(al, | |
1800 | - | let ai = (ad + | |
1801 | - | let | |
1802 | - | let | |
1803 | - | $Tuple2([IntegerEntry( | |
1804 | - | } | |
1805 | - | ||
1806 | - | ||
1807 | - | func | |
1808 | - | let | |
1809 | - | let | |
1810 | - | let ad = valueOrElse(getInteger(al, | |
1811 | - | let ai = (ad + | |
1812 | - | let | |
1813 | - | let | |
1814 | - | $Tuple2([IntegerEntry( | |
1815 | - | } | |
1816 | - | ||
1817 | - | ||
1818 | - | func | |
1798 | + | func jx (z,jy) = { | |
1799 | + | let jz = C(z) | |
1800 | + | let jA = B(z) | |
1801 | + | let ad = valueOrElse(getInteger(al, jA), 0) | |
1802 | + | let ai = (ad + jy) | |
1803 | + | let jB = ag(valueOrElse(getInteger(al, jz), 0), ai) | |
1804 | + | let jC = D(z) | |
1805 | + | $Tuple2([IntegerEntry(jz, jB[0]), IntegerEntry(jA, ai), IntegerEntry(jC, (valueOrElse(getInteger(jC), 0) + jB[1]))], ai) | |
1806 | + | } | |
1807 | + | ||
1808 | + | ||
1809 | + | func jD (b,jy) = { | |
1810 | + | let jz = G(b) | |
1811 | + | let jA = F(b) | |
1812 | + | let ad = valueOrElse(getInteger(al, jA), 0) | |
1813 | + | let ai = (ad + jy) | |
1814 | + | let jB = ag(valueOrElse(getInteger(al, jz), 0), ai) | |
1815 | + | let jC = H(b) | |
1816 | + | $Tuple2([IntegerEntry(jz, jB[0]), IntegerEntry(jA, ai), IntegerEntry(jC, (valueOrElse(getInteger(jC), 0) + jB[1]))], ai) | |
1817 | + | } | |
1818 | + | ||
1819 | + | ||
1820 | + | func jE (b) = { | |
1819 | 1821 | let z = valueOrErrorMessage(getString(bE(b)), "You don't have a duck staked") | |
1820 | - | let | |
1821 | - | let | |
1822 | - | if (!(isDefined( | |
1822 | + | let jF = bz(b) | |
1823 | + | let jG = getString(jF) | |
1824 | + | if (!(isDefined(jG))) | |
1823 | 1825 | then throw("You are not eligible for ONBOARD artifact") | |
1824 | 1826 | else { | |
1825 | - | let | |
1826 | - | let | |
1827 | - | if (isDefined( | |
1828 | - | then throw(("You already used your ONBOARD artifact on duck " + value( | |
1827 | + | let jH = bB(b) | |
1828 | + | let jI = getString(jH) | |
1829 | + | if (isDefined(jI)) | |
1830 | + | then throw(("You already used your ONBOARD artifact on duck " + value(jI))) | |
1829 | 1831 | else { | |
1830 | - | let | |
1831 | - | let | |
1832 | - | if (isDefined( | |
1833 | - | then throw(((("The duck " + z) + " already got points from ONBOARD artifact from user ") + value( | |
1834 | - | else ([StringEntry( | |
1832 | + | let jJ = bA(z) | |
1833 | + | let jK = getString(jJ) | |
1834 | + | if (isDefined(jK)) | |
1835 | + | then throw(((("The duck " + z) + " already got points from ONBOARD artifact from user ") + value(jK))) | |
1836 | + | else ([StringEntry(jH, z), StringEntry(jJ, b)] ++ jx(z, aa)._1) | |
1835 | 1837 | } | |
1836 | 1838 | } | |
1837 | 1839 | } | |
1838 | 1840 | ||
1839 | 1841 | ||
1840 | - | func | |
1841 | - | let | |
1842 | - | let O = | |
1843 | - | let | |
1844 | - | let | |
1845 | - | if ((valueOrElse(getInteger( | |
1842 | + | func jL (b,iM) = { | |
1843 | + | let fw = iK(b, dX, iM) | |
1844 | + | let O = fw._2 | |
1845 | + | let iG = dj(fw._3[cR]) | |
1846 | + | let jM = bp(aC, O) | |
1847 | + | if ((valueOrElse(getInteger(jM), 0) > 0)) | |
1846 | 1848 | then throw("Presale artifact is already activated") | |
1847 | - | else if ((parseIntValue( | |
1849 | + | else if ((parseIntValue(fw._3[cQ]) > dK)) | |
1848 | 1850 | then throw((((aA + " ") + O) + " is not eligible for presale artifact")) | |
1849 | 1851 | else { | |
1850 | - | let | |
1851 | - | ((( | |
1852 | + | let jr = jh(b, O, iG, dX) | |
1853 | + | (((jr._1 :+ IntegerEntry(jM, iG)) :+ StringEntry(jr._2, makeString(jr._3, ":"))) :+ StringEntry(jr._4, makeString(jr._5, ":"))) | |
1852 | 1854 | } | |
1853 | 1855 | } | |
1854 | 1856 | ||
1855 | 1857 | ||
1856 | - | func | |
1857 | - | let bZ = valueOrElse(getInteger( | |
1858 | - | let | |
1858 | + | func jN (z) = { | |
1859 | + | let bZ = valueOrElse(getInteger(cP, bK), 0) | |
1860 | + | let iO = split(valueOrElse(getString(bG(z)), aI), "_") | |
1859 | 1861 | let av = lastBlock.timestamp | |
1860 | - | let cb = bT( | |
1862 | + | let cb = bT(cP, bZ) | |
1861 | 1863 | let bV = cb[bP] | |
1862 | 1864 | let bW = cb[bQ] | |
1863 | - | if (( | |
1865 | + | if ((iO[bj] != "T")) | |
1864 | 1866 | then false | |
1865 | - | else if (if (if ((parseIntValue( | |
1867 | + | else if (if (if ((parseIntValue(iO[bi]) == bZ)) | |
1866 | 1868 | then (bW[bS] == "INPROGRESS") | |
1867 | 1869 | else false) | |
1868 | 1870 | then (parseIntValue(bV[bR]) > av) | |
1869 | 1871 | else false) | |
1870 | 1872 | then throw("Your duck is taking part in the tournament") | |
1871 | - | else | |
1872 | - | } | |
1873 | - | ||
1874 | - | ||
1875 | - | func | |
1873 | + | else di(invoke(this, "exitTournamentInternal", [z], nil)) | |
1874 | + | } | |
1875 | + | ||
1876 | + | ||
1877 | + | func jO (jP,aj,jQ,b,jR,jS) = { | |
1876 | 1878 | let z = valueOrErrorMessage(getString(bE(b)), "You don't have a duck staked") | |
1877 | - | if ( | |
1879 | + | if (jN(z)) | |
1878 | 1880 | then throw("mergeInternal_checkTournament") | |
1879 | 1881 | else { | |
1880 | - | func | |
1881 | - | let | |
1882 | - | let | |
1883 | - | let | |
1884 | - | let | |
1885 | - | if (( | |
1882 | + | func jT (en,O) = { | |
1883 | + | let iQ = value(assetInfo(fromBase58String(O))) | |
1884 | + | let iR = bo(O) | |
1885 | + | let iS = valueOrErrorMessage(getInteger(iR), (("NFT " + iQ.name) + " is not staked")) | |
1886 | + | let iT = valueOrErrorMessage(getString(bl(O)), (("NFT " + iQ.name) + " is orphaned")) | |
1887 | + | if ((iT != b)) | |
1886 | 1888 | then throw((aA + " is not yours")) | |
1887 | 1889 | else { | |
1888 | - | let | |
1889 | - | let | |
1890 | - | if (if (( | |
1891 | - | then ( | |
1890 | + | let iU = split(iQ.description, "_") | |
1891 | + | let da = iU[cT] | |
1892 | + | if (if ((en._3 != "")) | |
1893 | + | then (en._3 != da) | |
1892 | 1894 | else false) | |
1893 | 1895 | then throw("Lands should be on the same continent to merge") | |
1894 | 1896 | else { | |
1895 | - | let | |
1896 | - | let | |
1897 | - | let | |
1898 | - | let | |
1899 | - | let | |
1900 | - | let | |
1901 | - | let | |
1902 | - | let | |
1903 | - | let | |
1904 | - | if (("S" == | |
1897 | + | let dk = iU[cR] | |
1898 | + | let jU = en._1 | |
1899 | + | let gg = valueOrErrorMessage(indexOf(jU, dk), "You haven't passed all the lands needed") | |
1900 | + | let jV = (take(jU, gg) + drop(jU, (gg + 1))) | |
1901 | + | let iG = dj(dk) | |
1902 | + | let jW = (en._2 + valueOrElse(getInteger(bp(aC, O)), 0)) | |
1903 | + | let hy = valueOrElse(getInteger(bv(O)), 0) | |
1904 | + | let jX = { | |
1905 | + | let cj = dk | |
1906 | + | if (("S" == cj)) | |
1905 | 1907 | then 3 | |
1906 | - | else if (("M" == | |
1908 | + | else if (("M" == cj)) | |
1907 | 1909 | then 4 | |
1908 | - | else if (("L" == | |
1910 | + | else if (("L" == cj)) | |
1909 | 1911 | then 5 | |
1910 | - | else if (("XL" == | |
1912 | + | else if (("XL" == cj)) | |
1911 | 1913 | then 6 | |
1912 | 1914 | else throw("Only S, M, L, XL can merge") | |
1913 | 1915 | } | |
1914 | - | if (( | |
1916 | + | if ((hy != jX)) | |
1915 | 1917 | then throw("All lands should be maxed to merge") | |
1916 | 1918 | else { | |
1917 | - | let | |
1918 | - | let | |
1919 | - | let | |
1920 | - | if ((0 > | |
1921 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1919 | + | let dP = iU[cQ] | |
1920 | + | let gc = gi(iU[cS]) | |
1921 | + | let gm = (lastBlock.timestamp - iS) | |
1922 | + | if ((0 > gm)) | |
1923 | + | then throw(((("Saved timestamp is in future, saved = " + toString(iS)) + ", current = ") + toString(lastBlock.timestamp))) | |
1922 | 1924 | else { | |
1923 | - | let | |
1924 | - | let | |
1925 | - | let | |
1926 | - | let | |
1927 | - | let | |
1928 | - | let | |
1929 | - | let | |
1930 | - | let | |
1931 | - | if (!(isDefined( | |
1925 | + | let iW = iF(O, iG) | |
1926 | + | let hx = (iG / cq) | |
1927 | + | let je = gk(split(en._4, "_"), gc, gm, hx, iW) | |
1928 | + | let ex = ga(en._6, gc, hx, -1) | |
1929 | + | let jY = ga(en._10, gc, hx, -1) | |
1930 | + | let gQ = ga(en._9, gc, hx, 1) | |
1931 | + | let jZ = en._7 | |
1932 | + | let cK = indexOf(jZ, O) | |
1933 | + | if (!(isDefined(cK))) | |
1932 | 1934 | then throw(("Your staked lands don't contain " + O)) | |
1933 | 1935 | else { | |
1934 | - | let | |
1935 | - | let | |
1936 | - | $Tuple10( | |
1937 | - | then [DeleteEntry( | |
1938 | - | else nil)), | |
1936 | + | let ka = bn(O) | |
1937 | + | let kb = valueOrElse(getString(ka), "") | |
1938 | + | $Tuple10(jV, jW, da, je, ((((((((((((en._5 :+ DeleteEntry(bo(O))) :+ DeleteEntry(br(aA, O, b))) :+ DeleteEntry(dO(dP))) :+ DeleteEntry(bl(O))) :+ DeleteEntry(bv(O))) :+ DeleteEntry(dQ(O, b))) :+ DeleteEntry(bp(aC, O))) :+ DeleteEntry(dR(dP))) :+ DeleteEntry(bu(O))) :+ DeleteEntry(ka)) :+ Burn(fromBase58String(O), 1)) ++ (if ((kb != "")) | |
1939 | + | then [DeleteEntry(dM(kb))] | |
1940 | + | else nil)), ex, removeByIndex(jZ, value(cK)), (en._8 + iG), gQ, jY) | |
1939 | 1941 | } | |
1940 | 1942 | } | |
1941 | 1943 | } | |
1942 | 1944 | } | |
1943 | 1945 | } | |
1944 | 1946 | } | |
1945 | 1947 | ||
1946 | - | let | |
1947 | - | let | |
1948 | - | let | |
1949 | - | let | |
1950 | - | let | |
1951 | - | let | |
1952 | - | then split_51C(value( | |
1948 | + | let hj = bF(z) | |
1949 | + | let hM = hi(hj) | |
1950 | + | let gb = split(valueOrElse(getString(cY()), "0_0_0_0_0_0"), "_") | |
1951 | + | let kc = db(b) | |
1952 | + | let kd = getString(kc) | |
1953 | + | let ke = if (isDefined(kd)) | |
1954 | + | then split_51C(value(kd), "_") | |
1953 | 1955 | else nil | |
1954 | - | let | |
1955 | - | let | |
1956 | - | let | |
1957 | - | let | |
1958 | - | let | |
1959 | - | let | |
1960 | - | func | |
1961 | - | then | |
1962 | - | else | |
1963 | - | ||
1964 | - | func | |
1965 | - | then | |
1956 | + | let kf = split(value(assetInfo(fromBase58String(jR[0]))).description, "_")[cT] | |
1957 | + | let kg = split(valueOrElse(getString(cZ(kf)), "0_0_0_0_0_0"), "_") | |
1958 | + | let ey = { | |
1959 | + | let ep = jR | |
1960 | + | let eq = size(ep) | |
1961 | + | let er = $Tuple10(jQ, 0, "", hM[bf], nil, gb, ke, 0, split("0_0_0_0_0_0", "_"), kg) | |
1962 | + | func es (et,eu) = if ((eu >= eq)) | |
1963 | + | then et | |
1964 | + | else jT(et, ep[eu]) | |
1965 | + | ||
1966 | + | func ev (et,eu) = if ((eu >= eq)) | |
1967 | + | then et | |
1966 | 1968 | else throw("List size exceeds 5") | |
1967 | 1969 | ||
1968 | - | | |
1970 | + | ev(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5) | |
1969 | 1971 | } | |
1970 | - | let | |
1971 | - | let | |
1972 | - | let | |
1973 | - | let | |
1974 | - | let | |
1975 | - | let | |
1976 | - | let bm = calculateAssetId( | |
1977 | - | let | |
1978 | - | let | |
1979 | - | let | |
1980 | - | let | |
1981 | - | $Tuple2(((((((((((((((( | |
1982 | - | then StringEntry( | |
1983 | - | else DeleteEntry( | |
1972 | + | let da = ey._3 | |
1973 | + | let gK = valueOrErrorMessage(indexOf(aM, da), ("Unknown continent: " + da)) | |
1974 | + | let gj = gP(ey._9, (dj(jP) / cq)) | |
1975 | + | let ik = valueOrElse(getInteger(dL()), (dK + 1)) | |
1976 | + | let kh = toString(ik) | |
1977 | + | let il = Issue(ec(kh, jP), makeString([kh, jP, gj, da], "_"), 1, 0, false) | |
1978 | + | let bm = calculateAssetId(il) | |
1979 | + | let ki = toBase58String(bm) | |
1980 | + | let jq = makeString(ez((jS > 0), split(hM[bg], "_"), jS), "_") | |
1981 | + | let kj = dc(b) | |
1982 | + | let kk = valueOrElse(getInteger(kj), 0) | |
1983 | + | $Tuple2((((((((((((((((ey._5 :+ (if ((size(ey._7) > 0)) | |
1984 | + | then StringEntry(kc, makeString_11C(ey._7, "_")) | |
1985 | + | else DeleteEntry(kc))) :+ IntegerEntry(kj, if ((ey._8 > kk)) | |
1984 | 1986 | then 0 | |
1985 | - | else ( | |
1986 | - | } | |
1987 | - | } | |
1988 | - | ||
1989 | - | ||
1990 | - | func | |
1991 | - | ||
1992 | - | ||
1993 | - | func | |
1994 | - | ||
1995 | - | ||
1996 | - | func | |
1997 | - | ||
1998 | - | ||
1999 | - | func | |
2000 | - | ||
2001 | - | ||
2002 | - | func | |
2003 | - | let | |
2004 | - | if ((4 == | |
2005 | - | then | |
2006 | - | else if ((3 == | |
2007 | - | then | |
2008 | - | else if ((5 == | |
2009 | - | then | |
2010 | - | else if ((2 == | |
2011 | - | then | |
1987 | + | else (kk - ey._8))) :+ IntegerEntry(dL(), (ik + 1))) :+ il) :+ StringEntry(dO(kh), ki)) :+ StringEntry(bl(ki), b)) :+ StringEntry(dR(kh), b)) :+ IntegerEntry(bp(aC, ki), ey._2)) :+ IntegerEntry(bv(ki), aj)) :+ IntegerEntry(dQ(ki, b), aj)) :+ StringEntry(hj, makeString([hM[be], ey._4, jq, hM[bh]], ":"))) :+ StringEntry(cY(), makeString(ey._6, "_"))) :+ StringEntry(cZ(da), makeString(ey._10, "_"))) :+ StringEntry(bG(z), makeString([da, "L", ki], "_"))) :+ ScriptTransfer(addressFromStringValue(b), 1, bm)), ki) | |
1988 | + | } | |
1989 | + | } | |
1990 | + | ||
1991 | + | ||
1992 | + | func kl (b,jR) = jO("M", 3, "SSSS", b, jR, 0) | |
1993 | + | ||
1994 | + | ||
1995 | + | func km (b,jR) = jO("L", 4, "SMM", b, jR, (cl * 4)) | |
1996 | + | ||
1997 | + | ||
1998 | + | func kn (b,jR) = jO("XL", 5, "SSSML", b, jR, (cl * 47)) | |
1999 | + | ||
2000 | + | ||
2001 | + | func ko (b,jR) = jO("XXL", 6, "LXL", b, jR, (cl * 54)) | |
2002 | + | ||
2003 | + | ||
2004 | + | func kp (b,jR) = { | |
2005 | + | let cj = size(jR) | |
2006 | + | if ((4 == cj)) | |
2007 | + | then kl(b, jR) | |
2008 | + | else if ((3 == cj)) | |
2009 | + | then km(b, jR) | |
2010 | + | else if ((5 == cj)) | |
2011 | + | then kn(b, jR) | |
2012 | + | else if ((2 == cj)) | |
2013 | + | then ko(b, jR) | |
2012 | 2014 | else throw("Unknown merge") | |
2013 | 2015 | } | |
2014 | 2016 | ||
2015 | 2017 | ||
2016 | - | func | |
2017 | - | then valueOrElse(getBoolean( | |
2018 | + | func kq (gg) = if (if ((gg.originCaller != cL)) | |
2019 | + | then valueOrElse(getBoolean(dm()), false) | |
2018 | 2020 | else false) | |
2019 | 2021 | then throw("Contracts are under maintenance") | |
2020 | - | else StringEntry( | |
2021 | - | ||
2022 | - | ||
2023 | - | @Callable( | |
2024 | - | func constructorV1 ( | |
2022 | + | else StringEntry(dn(toString(gg.originCaller)), toBase58String(gg.transactionId)) | |
2023 | + | ||
2024 | + | ||
2025 | + | @Callable(gg) | |
2026 | + | func constructorV1 (kr) = if ((gg.caller != this)) | |
2025 | 2027 | then throw("Permission denied") | |
2026 | - | else [StringEntry( | |
2027 | - | ||
2028 | - | ||
2029 | - | ||
2030 | - | @Callable( | |
2031 | - | func setBlocked ( | |
2028 | + | else [StringEntry(cF(), kr)] | |
2029 | + | ||
2030 | + | ||
2031 | + | ||
2032 | + | @Callable(gg) | |
2033 | + | func setBlocked (ks) = if ((gg.caller != this)) | |
2032 | 2034 | then throw("permission denied") | |
2033 | - | else [BooleanEntry( | |
2034 | - | ||
2035 | - | ||
2036 | - | ||
2037 | - | @Callable( | |
2035 | + | else [BooleanEntry(dm(), ks)] | |
2036 | + | ||
2037 | + | ||
2038 | + | ||
2039 | + | @Callable(gg) | |
2038 | 2040 | func stakeLand () = { | |
2039 | - | let | |
2040 | - | if ((size( | |
2041 | + | let kt = kq(gg) | |
2042 | + | if ((size(gg.payments) != 1)) | |
2041 | 2043 | then throw("Exactly one payment required") | |
2042 | 2044 | else { | |
2043 | - | let | |
2044 | - | let bm = value( | |
2045 | - | let | |
2046 | - | if (( | |
2045 | + | let ku = value(gg.payments[0]) | |
2046 | + | let bm = value(ku.assetId) | |
2047 | + | let cx = toString(gg.caller) | |
2048 | + | if ((ku.amount != 1)) | |
2047 | 2049 | then throw((("NFT " + aA) + " token should be attached as payment")) | |
2048 | 2050 | else { | |
2049 | - | let | |
2050 | - | if (( | |
2051 | + | let iQ = value(assetInfo(bm)) | |
2052 | + | if ((iQ.issuer != this)) | |
2051 | 2053 | then throw("Unknown issuer of token") | |
2052 | - | else if (!(contains( | |
2054 | + | else if (!(contains(iQ.name, aA))) | |
2053 | 2055 | then throw((("Only NFT " + aA) + " tokens are accepted")) | |
2054 | 2056 | else { | |
2055 | - | let | |
2056 | - | let | |
2057 | - | then dropRight( | |
2058 | - | else if (contains( | |
2059 | - | then dropRight( | |
2060 | - | else dropRight( | |
2061 | - | if (!(isDefined(parseInt( | |
2062 | - | then throw(("Cannot parse land number from " + | |
2057 | + | let kv = drop(iQ.name, 4) | |
2058 | + | let dP = if (contains(kv, "XXL")) | |
2059 | + | then dropRight(kv, 3) | |
2060 | + | else if (contains(kv, "XL")) | |
2061 | + | then dropRight(kv, 2) | |
2062 | + | else dropRight(kv, 1) | |
2063 | + | if (!(isDefined(parseInt(dP)))) | |
2064 | + | then throw(("Cannot parse land number from " + iQ.name)) | |
2063 | 2065 | else { | |
2064 | 2066 | let O = toBase58String(bm) | |
2065 | - | let | |
2066 | - | if (isDefined(getInteger( | |
2067 | - | then throw((("NFT " + | |
2067 | + | let iR = bo(O) | |
2068 | + | if (isDefined(getInteger(iR))) | |
2069 | + | then throw((("NFT " + iQ.name) + " is already staked")) | |
2068 | 2070 | else { | |
2069 | - | let | |
2070 | - | let | |
2071 | - | let | |
2072 | - | let | |
2073 | - | let | |
2074 | - | let | |
2075 | - | let | |
2076 | - | let | |
2077 | - | let | |
2078 | - | let | |
2079 | - | let | |
2080 | - | then split_51C(value( | |
2071 | + | let iU = split(iQ.description, "_") | |
2072 | + | let gc = gi(iU[cS]) | |
2073 | + | let iG = dj(iU[cR]) | |
2074 | + | let hx = (iG / cq) | |
2075 | + | let ex = gh(gc, hx, 1) | |
2076 | + | let kw = cZ(iU[cT]) | |
2077 | + | let kg = split(valueOrElse(getString(kw), "0_0_0_0_0_0"), "_") | |
2078 | + | let kx = makeString(ga(kg, gc, hx, 1), "_") | |
2079 | + | let kc = db(cx) | |
2080 | + | let kd = getString(kc) | |
2081 | + | let jZ = if (isDefined(kd)) | |
2082 | + | then split_51C(value(kd), "_") | |
2081 | 2083 | else nil | |
2082 | - | if (containsElement( | |
2084 | + | if (containsElement(jZ, O)) | |
2083 | 2085 | then throw(("Your staked lands already contain " + O)) | |
2084 | - | else if ((size( | |
2086 | + | else if ((size(jZ) >= aE)) | |
2085 | 2087 | then throw((("Your already staked max (" + toString(aE)) + ") lands")) | |
2086 | 2088 | else { | |
2087 | - | let | |
2088 | - | let | |
2089 | - | let | |
2090 | - | let | |
2091 | - | $Tuple2([IntegerEntry( | |
2089 | + | let hy = valueOrElse(getInteger(bv(O)), 0) | |
2090 | + | let kj = dc(cx) | |
2091 | + | let ky = valueOrElse(getInteger(kj), 0) | |
2092 | + | let kz = invoke(cO, "onStakeUnstakeLand", [cx], nil) | |
2093 | + | $Tuple2([IntegerEntry(iR, lastBlock.timestamp), IntegerEntry(br(aA, O, cx), lastBlock.timestamp), StringEntry(kc, makeString_11C((jZ :+ O), "_")), IntegerEntry(kj, (ky + iG)), StringEntry(bl(O), cx), StringEntry(dR(dP), cx), IntegerEntry(dQ(O, cx), hy), StringEntry(cY(), ex), StringEntry(kw, kx), kt], kz) | |
2092 | 2094 | } | |
2093 | 2095 | } | |
2094 | 2096 | } | |
2095 | 2097 | } | |
2096 | 2098 | } | |
2097 | 2099 | } | |
2098 | 2100 | } | |
2099 | 2101 | ||
2100 | 2102 | ||
2101 | 2103 | ||
2102 | - | @Callable( | |
2103 | - | func unstakeLand ( | |
2104 | - | let | |
2105 | - | if ((size( | |
2104 | + | @Callable(gg) | |
2105 | + | func unstakeLand (iM) = { | |
2106 | + | let kt = kq(gg) | |
2107 | + | if ((size(gg.payments) != 0)) | |
2106 | 2108 | then throw("No payments required") | |
2107 | 2109 | else { | |
2108 | - | let b = toString( | |
2109 | - | let | |
2110 | - | let O = | |
2111 | - | let | |
2112 | - | let | |
2113 | - | let | |
2114 | - | let | |
2115 | - | let | |
2116 | - | let | |
2117 | - | let | |
2118 | - | let | |
2119 | - | let | |
2120 | - | let | |
2121 | - | let | |
2122 | - | let | |
2123 | - | if (!(isDefined( | |
2110 | + | let b = toString(gg.caller) | |
2111 | + | let fw = iK(b, dW, iM) | |
2112 | + | let O = fw._2 | |
2113 | + | let iU = fw._3 | |
2114 | + | let kc = db(b) | |
2115 | + | let gc = gi(iU[cS]) | |
2116 | + | let iG = dj(iU[cR]) | |
2117 | + | let hx = (iG / cq) | |
2118 | + | let ex = gh(gc, hx, -1) | |
2119 | + | let kw = cZ(iU[cT]) | |
2120 | + | let kg = split(valueOrElse(getString(kw), "0_0_0_0_0_0"), "_") | |
2121 | + | let kx = makeString(ga(kg, gc, hx, -1), "_") | |
2122 | + | let jr = jh(b, O, iG, dW) | |
2123 | + | let jZ = split_51C(valueOrElse(getString(kc), ""), "_") | |
2124 | + | let cK = indexOf(jZ, O) | |
2125 | + | if (!(isDefined(cK))) | |
2124 | 2126 | then throw(("Your staked lands don't contain " + O)) | |
2125 | 2127 | else { | |
2126 | 2128 | let av = lastBlock.timestamp | |
2127 | - | let | |
2128 | - | if (( | |
2129 | - | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString( | |
2129 | + | let kA = valueOrElse(getInteger(cN, bH(b)), 0) | |
2130 | + | if ((kA >= av)) | |
2131 | + | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(kA))) | |
2130 | 2132 | else { | |
2131 | - | let | |
2132 | - | if (( | |
2133 | - | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString( | |
2133 | + | let kB = (valueOrElse(getInteger(cO, a(b)), 0) + cm) | |
2134 | + | if ((kB > av)) | |
2135 | + | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(kB))) | |
2134 | 2136 | else { | |
2135 | - | let | |
2136 | - | let | |
2137 | - | let | |
2137 | + | let kj = dc(b) | |
2138 | + | let kk = valueOrElse(getInteger(kj), 0) | |
2139 | + | let kC = if ((iG > kk)) | |
2138 | 2140 | then 0 | |
2139 | - | else ( | |
2140 | - | let | |
2141 | - | $Tuple2([ScriptTransfer( | |
2142 | - | then StringEntry( | |
2143 | - | else DeleteEntry( | |
2141 | + | else (kk - iG) | |
2142 | + | let kz = invoke(cO, "onStakeUnstakeLand", [b], nil) | |
2143 | + | $Tuple2([ScriptTransfer(gg.caller, 1, fromBase58String(O)), DeleteEntry(bo(O)), DeleteEntry(br(aA, O, b)), StringEntry(cY(), ex), StringEntry(kw, kx), StringEntry(jr._2, makeString(jr._3, ":")), if ((size(jZ) > 1)) | |
2144 | + | then StringEntry(kc, makeString_11C(removeByIndex(jZ, value(cK)), "_")) | |
2145 | + | else DeleteEntry(kc), IntegerEntry(kj, kC), kt], kz) | |
2144 | 2146 | } | |
2145 | 2147 | } | |
2146 | 2148 | } | |
2147 | 2149 | } | |
2148 | 2150 | } | |
2149 | 2151 | ||
2150 | 2152 | ||
2151 | 2153 | ||
2152 | - | @Callable( | |
2154 | + | @Callable(gg) | |
2153 | 2155 | func stakeDuck () = { | |
2154 | - | let | |
2155 | - | if ((size( | |
2156 | + | let kt = kq(gg) | |
2157 | + | if ((size(gg.payments) != 1)) | |
2156 | 2158 | then throw("Exactly one payment required") | |
2157 | 2159 | else { | |
2158 | - | let | |
2159 | - | let bm = value( | |
2160 | - | let | |
2161 | - | if (( | |
2160 | + | let ku = value(gg.payments[0]) | |
2161 | + | let bm = value(ku.assetId) | |
2162 | + | let cx = toString(gg.caller) | |
2163 | + | if ((ku.amount != 1)) | |
2162 | 2164 | then throw((("NFT " + aB) + " token should be attached as payment")) | |
2163 | 2165 | else { | |
2164 | - | let | |
2165 | - | if (if (( | |
2166 | - | then ( | |
2166 | + | let iQ = value(assetInfo(bm)) | |
2167 | + | if (if ((iQ.issuer != du)) | |
2168 | + | then (iQ.issuer != dv) | |
2167 | 2169 | else false) | |
2168 | 2170 | then throw((("Unknown issuer of " + aB) + " token")) | |
2169 | - | else if (!(contains( | |
2171 | + | else if (!(contains(iQ.name, aB))) | |
2170 | 2172 | then throw((("Only NFT " + aB) + " tokens are accepted")) | |
2171 | 2173 | else { | |
2172 | - | let | |
2173 | - | let | |
2174 | - | if (isDefined(getInteger( | |
2175 | - | then throw((("NFT " + | |
2176 | - | else if (isDefined(getString(bE( | |
2177 | - | then throw(("You already staked one duck: " + | |
2178 | - | else if ( | |
2174 | + | let kD = toBase58String(bm) | |
2175 | + | let iR = bo(kD) | |
2176 | + | if (isDefined(getInteger(iR))) | |
2177 | + | then throw((("NFT " + iQ.name) + " is already staked")) | |
2178 | + | else if (isDefined(getString(bE(cx)))) | |
2179 | + | then throw(("You already staked one duck: " + iQ.name)) | |
2180 | + | else if (jN(kD)) | |
2179 | 2181 | then throw("stakeDuck_checkTournament") | |
2180 | 2182 | else { | |
2181 | - | let | |
2182 | - | let bY = getString( | |
2183 | - | let | |
2184 | - | let | |
2185 | - | let | |
2186 | - | let | |
2187 | - | let | |
2188 | - | ([IntegerEntry( | |
2183 | + | let kE = bG(kD) | |
2184 | + | let bY = getString(kE) | |
2185 | + | let hj = bF(kD) | |
2186 | + | let kF = getString(hj) | |
2187 | + | let iz = y(kD) | |
2188 | + | let iA = ae(valueOrElse(getInteger(C(kD)), 0)) | |
2189 | + | let kG = valueOrElse(getInteger(iz), iA) | |
2190 | + | ([IntegerEntry(iR, lastBlock.timestamp), IntegerEntry(br(aB, toBase58String(bm), cx), lastBlock.timestamp), StringEntry(bD(kD), cx), StringEntry(bE(cx), kD)] ++ (if (isDefined(bY)) | |
2189 | 2191 | then nil | |
2190 | - | else ([StringEntry( | |
2192 | + | else ([StringEntry(kE, aI)] ++ (if (isDefined(kF)) | |
2191 | 2193 | then nil | |
2192 | - | else (([StringEntry( | |
2194 | + | else (([StringEntry(hj, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iz, kG)) :+ kt))))) | |
2193 | 2195 | } | |
2194 | 2196 | } | |
2195 | 2197 | } | |
2196 | 2198 | } | |
2197 | 2199 | } | |
2198 | 2200 | ||
2199 | 2201 | ||
2200 | 2202 | ||
2201 | - | @Callable( | |
2202 | - | func unstakeDuck ( | |
2203 | - | let | |
2204 | - | if ((size( | |
2203 | + | @Callable(gg) | |
2204 | + | func unstakeDuck (kD) = { | |
2205 | + | let kt = kq(gg) | |
2206 | + | if ((size(gg.payments) != 0)) | |
2205 | 2207 | then throw("No payments required") | |
2206 | 2208 | else { | |
2207 | - | let bm = fromBase58String( | |
2208 | - | let | |
2209 | - | let | |
2210 | - | let | |
2211 | - | if (!(isDefined(getInteger( | |
2212 | - | then throw((("NFT " + | |
2213 | - | else if (!(isDefined(getString(bE( | |
2214 | - | then throw((("The duck " + | |
2209 | + | let bm = fromBase58String(kD) | |
2210 | + | let cx = toString(gg.caller) | |
2211 | + | let iQ = value(assetInfo(bm)) | |
2212 | + | let iR = bo(kD) | |
2213 | + | if (!(isDefined(getInteger(iR)))) | |
2214 | + | then throw((("NFT " + iQ.name) + " is not staked")) | |
2215 | + | else if (!(isDefined(getString(bE(cx))))) | |
2216 | + | then throw((("The duck " + iQ.name) + " is not staked")) | |
2215 | 2217 | else { | |
2216 | - | let | |
2217 | - | if (( | |
2218 | + | let iT = valueOrErrorMessage(getString(bD(kD)), (("NFT " + iQ.name) + " is orphaned")) | |
2219 | + | if ((iT != cx)) | |
2218 | 2220 | then throw("Staked NFT is not yours") | |
2219 | - | else if ( | |
2221 | + | else if (jN(kD)) | |
2220 | 2222 | then throw("unstakeDuck_checkTournament") | |
2221 | 2223 | else { | |
2222 | - | let | |
2223 | - | let | |
2224 | - | let aq = valueOrElse(getInteger( | |
2225 | - | if (( | |
2226 | - | then throw((("Please heal your duck to " + toString( | |
2227 | - | else [ScriptTransfer( | |
2224 | + | let iz = y(kD) | |
2225 | + | let iA = ae(valueOrElse(getInteger(C(kD)), 0)) | |
2226 | + | let aq = valueOrElse(getInteger(iz), iA) | |
2227 | + | if ((iA > aq)) | |
2228 | + | then throw((("Please heal your duck to " + toString(iA)) + "hp before unstaking")) | |
2229 | + | else [ScriptTransfer(gg.caller, 1, bm), DeleteEntry(iR), DeleteEntry(iz), DeleteEntry(bG(kD)), DeleteEntry(bD(kD)), DeleteEntry(br(aB, kD, cx)), DeleteEntry(bE(cx)), kt] | |
2228 | 2230 | } | |
2229 | 2231 | } | |
2230 | 2232 | } | |
2231 | 2233 | } | |
2232 | 2234 | ||
2233 | 2235 | ||
2234 | 2236 | ||
2235 | - | @Callable( | |
2236 | - | func claimRes ( | |
2237 | - | let | |
2238 | - | if ((size( | |
2237 | + | @Callable(gg) | |
2238 | + | func claimRes (ee,kH) = { | |
2239 | + | let kt = kq(gg) | |
2240 | + | if ((size(gg.payments) != 0)) | |
2239 | 2241 | then throw("No payments required") | |
2240 | 2242 | else { | |
2241 | - | let b = toString( | |
2242 | - | let | |
2243 | + | let b = toString(gg.originCaller) | |
2244 | + | let eF = iV(b, ee, dW, kH) | |
2243 | 2245 | let z = valueOrErrorMessage(getString(bE(b)), "You don't have a duck staked") | |
2244 | - | $Tuple2((((( | |
2245 | - | } | |
2246 | - | } | |
2247 | - | ||
2248 | - | ||
2249 | - | ||
2250 | - | @Callable( | |
2251 | - | func claimResToWH ( | |
2252 | - | let | |
2253 | - | if ((size( | |
2246 | + | $Tuple2(((((eF._1 ++ jx(z, fraction(S, ee, cp))._1) :+ StringEntry(eF._2, makeString(eF._3, ":"))) :+ StringEntry(eF._4, makeString(eF._5, ":"))) :+ kt), eF._3[bf]) | |
2247 | + | } | |
2248 | + | } | |
2249 | + | ||
2250 | + | ||
2251 | + | ||
2252 | + | @Callable(gg) | |
2253 | + | func claimResToWH (ee,kH) = { | |
2254 | + | let kt = kq(gg) | |
2255 | + | if ((size(gg.payments) != 0)) | |
2254 | 2256 | then throw("No payments required") | |
2255 | 2257 | else { | |
2256 | - | let b = toString( | |
2257 | - | let | |
2258 | - | $Tuple2((((( | |
2259 | - | } | |
2260 | - | } | |
2261 | - | ||
2262 | - | ||
2263 | - | ||
2264 | - | @Callable( | |
2265 | - | func flight ( | |
2266 | - | let | |
2267 | - | if ((size( | |
2258 | + | let b = toString(gg.originCaller) | |
2259 | + | let eF = iV(b, ee, dV, kH) | |
2260 | + | $Tuple2(((((eF._1 ++ jD(b, fraction(S, ee, cp))._1) :+ StringEntry(eF._2, makeString(eF._3, ":"))) :+ StringEntry(eF._4, makeString(eF._5, ":"))) :+ kt), eF._5[aW]) | |
2261 | + | } | |
2262 | + | } | |
2263 | + | ||
2264 | + | ||
2265 | + | ||
2266 | + | @Callable(gg) | |
2267 | + | func flight (io,ip) = { | |
2268 | + | let kt = kq(gg) | |
2269 | + | if ((size(gg.payments) != 0)) | |
2268 | 2270 | then throw("No payments required") | |
2269 | 2271 | else { | |
2270 | - | let bI = toString( | |
2271 | - | let | |
2272 | - | let | |
2273 | - | let z = | |
2274 | - | let | |
2275 | - | let | |
2276 | - | let | |
2277 | - | if (( | |
2272 | + | let bI = toString(gg.caller) | |
2273 | + | let gL = in(bI, io, ip) | |
2274 | + | let it = gL._1 | |
2275 | + | let z = gL._2 | |
2276 | + | let kE = bG(z) | |
2277 | + | let iO = valueOrElse(getString(kE), aI) | |
2278 | + | let iv = gL._4 | |
2279 | + | if ((iv == iO)) | |
2278 | 2280 | then throw("You can't fly to the same location") | |
2279 | 2281 | else { | |
2280 | - | let | |
2281 | - | let | |
2282 | - | let | |
2283 | - | let | |
2284 | - | let | |
2285 | - | let | |
2286 | - | let | |
2287 | - | let | |
2288 | - | then if ( | |
2289 | - | then throw(((("Cheat attempt: oldLoc=" + | |
2290 | - | else if (( | |
2291 | - | then | |
2292 | - | else | |
2293 | - | else if (!(bX( | |
2282 | + | let kI = split(iv, "_") | |
2283 | + | let kJ = (kI[bj] == "T") | |
2284 | + | let fT = E(z) | |
2285 | + | let kK = valueOrElse(getString(fT), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2286 | + | let kL = eG(kK, gL._5) | |
2287 | + | let kM = kL._1 | |
2288 | + | let kN = kL._2 | |
2289 | + | let kO = if (!(bX(cP, iO))) | |
2290 | + | then if (kJ) | |
2291 | + | then throw(((("Cheat attempt: oldLoc=" + iO) + ", newLoc=") + iv)) | |
2292 | + | else if ((it > 0)) | |
2293 | + | then iv | |
2294 | + | else iO | |
2295 | + | else if (!(bX(cP, iv))) | |
2294 | 2296 | then throw("Your duck is taking part in the tournament") | |
2295 | 2297 | else { | |
2296 | - | let | |
2297 | - | let | |
2298 | - | let bZ = valueOrElse(getInteger( | |
2299 | - | if (( | |
2300 | - | then throw(((("Cheat attempt: oldLoc=" + | |
2301 | - | else if (( | |
2298 | + | let kP = parseIntValue(kI[bk]) | |
2299 | + | let kQ = split(iO, "_") | |
2300 | + | let bZ = valueOrElse(getInteger(cP, bK), 0) | |
2301 | + | if ((kP != (parseIntValue(kQ[bk]) + 1))) | |
2302 | + | then throw(((("Cheat attempt: oldLoc=" + iO) + ", newLoc=") + iv)) | |
2303 | + | else if ((it > 0)) | |
2302 | 2304 | then { | |
2303 | - | let | |
2304 | - | let | |
2305 | - | then invoke( | |
2305 | + | let kR = valueOrElse(getInteger(cP, bO(bZ, z)), 0) | |
2306 | + | let kS = if ((kP > kR)) | |
2307 | + | then invoke(cP, "saveDuckResult", [z, kP], nil) | |
2306 | 2308 | else unit | |
2307 | - | if (( | |
2308 | - | then | |
2309 | + | if ((kS == kS)) | |
2310 | + | then iv | |
2309 | 2311 | else throw("Strict value is not equal to itself.") | |
2310 | 2312 | } | |
2311 | - | else | |
2313 | + | else iO | |
2312 | 2314 | } | |
2313 | - | $Tuple2(([StringEntry( | |
2315 | + | $Tuple2(([StringEntry(kE, kO), StringEntry(fT, kM), IntegerEntry(y(z), it), kt] ++ (if (kN) | |
2314 | 2316 | then [StringEntry(K(z), "0_0_0_0_0")] | |
2315 | - | else (nil ++ | |
2317 | + | else (nil ++ jx(z, if ((it > 0)) | |
2316 | 2318 | then T | |
2317 | - | else U)._1))), | |
2319 | + | else U)._1))), gL._3) | |
2318 | 2320 | } | |
2319 | 2321 | } | |
2320 | 2322 | } | |
2321 | 2323 | ||
2322 | 2324 | ||
2323 | 2325 | ||
2324 | - | @Callable(gf) | |
2325 | - | func heal (kS,kT,kU) = { | |
2326 | - | let ks = kp(gf) | |
2327 | - | if (if (if ((0 > kS)) | |
2328 | - | then true | |
2329 | - | else (0 > kT)) | |
2326 | + | @Callable(gg) | |
2327 | + | func heal (kT,kU,kV) = { | |
2328 | + | let kt = kq(gg) | |
2329 | + | if (if (if ((0 > kT)) | |
2330 | 2330 | then true | |
2331 | 2331 | else (0 > kU)) | |
2332 | + | then true | |
2333 | + | else (0 > kV)) | |
2332 | 2334 | then throw("Quantity cannot be negative") | |
2333 | 2335 | else { | |
2334 | - | let z = valueOrErrorMessage(getString(bE(toString( | |
2335 | - | if ( | |
2336 | + | let z = valueOrErrorMessage(getString(bE(toString(gg.caller))), "You don't have a duck staked") | |
2337 | + | if (jN(z)) | |
2336 | 2338 | then throw("heal_checkTournament") | |
2337 | 2339 | else { | |
2338 | - | let | |
2339 | - | let | |
2340 | - | let | |
2341 | - | let | |
2342 | - | if (( | |
2343 | - | then throw((("HP should be < " + toString( | |
2340 | + | let kW = [kT, kU, kV] | |
2341 | + | let iz = y(z) | |
2342 | + | let iA = ae(valueOrElse(getInteger(C(z)), 0)) | |
2343 | + | let kX = valueOrElse(getInteger(iz), iA) | |
2344 | + | if ((kX >= iA)) | |
2345 | + | then throw((("HP should be < " + toString(iA)) + " to heal")) | |
2344 | 2346 | else { | |
2345 | - | let | |
2346 | - | let | |
2347 | - | let | |
2347 | + | let hj = bF(z) | |
2348 | + | let hM = hi(hj) | |
2349 | + | let kY = if ((hM[bh] == "")) | |
2348 | 2350 | then nil | |
2349 | - | else split_4C( | |
2350 | - | func | |
2351 | - | let | |
2352 | - | let | |
2353 | - | then parseIntValue( | |
2351 | + | else split_4C(hM[bh], "_") | |
2352 | + | func kZ (en,cd) = { | |
2353 | + | let dh = en._2 | |
2354 | + | let gC = if ((size(kY) > dh)) | |
2355 | + | then parseIntValue(kY[dh]) | |
2354 | 2356 | else 0 | |
2355 | - | if ((3 > | |
2357 | + | if ((3 > dh)) | |
2356 | 2358 | then { | |
2357 | - | let | |
2358 | - | if (( | |
2359 | - | then throw(((("You have only " + toString( | |
2360 | - | else $Tuple3(( | |
2359 | + | let la = kW[dh] | |
2360 | + | if ((la > gC)) | |
2361 | + | then throw(((("You have only " + toString(gC)) + " of ") + aL[dh])) | |
2362 | + | else $Tuple3((en._1 :+ toString((gC - la))), (dh + 1), (en._3 + (parseIntValue(split(cd, "_")[aR]) * la))) | |
2361 | 2363 | } | |
2362 | - | else $Tuple3(( | |
2364 | + | else $Tuple3((en._1 :+ toString(gC)), (dh + 1), en._3) | |
2363 | 2365 | } | |
2364 | 2366 | ||
2365 | - | let | |
2366 | - | let | |
2367 | - | let | |
2368 | - | let | |
2369 | - | func | |
2370 | - | then | |
2371 | - | else | |
2372 | - | ||
2373 | - | func | |
2374 | - | then | |
2367 | + | let eF = { | |
2368 | + | let ep = aP | |
2369 | + | let eq = size(ep) | |
2370 | + | let er = $Tuple3(nil, 0, 0) | |
2371 | + | func es (et,eu) = if ((eu >= eq)) | |
2372 | + | then et | |
2373 | + | else kZ(et, ep[eu]) | |
2374 | + | ||
2375 | + | func ev (et,eu) = if ((eu >= eq)) | |
2376 | + | then et | |
2375 | 2377 | else throw("List size exceeds 50") | |
2376 | 2378 | ||
2377 | - | | |
2379 | + | ev(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(er, 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) | |
2378 | 2380 | } | |
2379 | - | let | |
2380 | - | $Tuple2(([IntegerEntry( | |
2381 | + | let lb = min([iA, (kX + eF._3)]) | |
2382 | + | $Tuple2(([IntegerEntry(iz, lb), StringEntry(hj, makeString_2C([hM[be], hM[bf], hM[bg], makeString(eF._1, "_")], ":")), kt] ++ jx(z, (ab * ((kT + kU) + kV)))._1), lb) | |
2381 | 2383 | } | |
2382 | 2384 | } | |
2383 | 2385 | } | |
2384 | 2386 | } | |
2385 | 2387 | ||
2386 | 2388 | ||
2387 | 2389 | ||
2388 | - | @Callable( | |
2390 | + | @Callable(gg) | |
2389 | 2391 | func healES () = { | |
2390 | - | let | |
2391 | - | if ((size( | |
2392 | + | let kt = kq(gg) | |
2393 | + | if ((size(gg.payments) != 1)) | |
2392 | 2394 | then throw("Exactly one payment required") | |
2393 | 2395 | else { | |
2394 | - | let | |
2395 | - | if (( | |
2396 | + | let ku = value(gg.payments[0]) | |
2397 | + | if ((ku.assetId != ci)) | |
2396 | 2398 | then throw("Allowed USDT payment only!") | |
2397 | 2399 | else { | |
2398 | - | let z = valueOrErrorMessage(getString(bE(toString( | |
2399 | - | if ( | |
2400 | + | let z = valueOrErrorMessage(getString(bE(toString(gg.caller))), "You don't have a duck staked") | |
2401 | + | if (jN(z)) | |
2400 | 2402 | then throw("healES_checkTournament") | |
2401 | 2403 | else { | |
2402 | - | let | |
2403 | - | let | |
2404 | - | let | |
2405 | - | if (( | |
2404 | + | let iz = y(z) | |
2405 | + | let iA = ae(valueOrElse(getInteger(C(z)), 0)) | |
2406 | + | let kX = valueOrElse(getInteger(iz), iA) | |
2407 | + | if ((kX > 0)) | |
2406 | 2408 | then throw("HP should be 0 to call Emergency Service") | |
2407 | 2409 | else { | |
2408 | - | let | |
2409 | - | let | |
2410 | - | let | |
2410 | + | let hj = bF(z) | |
2411 | + | let hM = hi(hj) | |
2412 | + | let kY = if ((hM[bh] == "")) | |
2411 | 2413 | then nil | |
2412 | - | else split_4C( | |
2413 | - | let | |
2414 | - | then parseIntValue( | |
2414 | + | else split_4C(hM[bh], "_") | |
2415 | + | let lc = if ((size(kY) > 0)) | |
2416 | + | then parseIntValue(kY[0]) | |
2415 | 2417 | else 0 | |
2416 | - | let | |
2417 | - | then parseIntValue( | |
2418 | + | let ld = if ((size(kY) > 1)) | |
2419 | + | then parseIntValue(kY[1]) | |
2418 | 2420 | else 0 | |
2419 | - | let | |
2420 | - | then parseIntValue( | |
2421 | + | let le = if ((size(kY) > 2)) | |
2422 | + | then parseIntValue(kY[2]) | |
2421 | 2423 | else 0 | |
2422 | - | if (if (if ((lb > 0)) | |
2423 | - | then true | |
2424 | - | else (lc > 0)) | |
2424 | + | if (if (if ((lc > 0)) | |
2425 | 2425 | then true | |
2426 | 2426 | else (ld > 0)) | |
2427 | + | then true | |
2428 | + | else (le > 0)) | |
2427 | 2429 | then throw("You have to use own Medical Kit") | |
2428 | 2430 | else { | |
2429 | - | let | |
2430 | - | let | |
2431 | - | then split_4C(value( | |
2431 | + | let lf = getString(cM, bJ()) | |
2432 | + | let lg = if (isDefined(lf)) | |
2433 | + | then split_4C(value(lf), "_") | |
2432 | 2434 | else nil | |
2433 | - | let | |
2434 | - | then parseIntValue( | |
2435 | + | let lh = if ((size(lg) > 0)) | |
2436 | + | then parseIntValue(lg[0]) | |
2435 | 2437 | else 0 | |
2436 | - | if ((0 >= | |
2438 | + | if ((0 >= lh)) | |
2437 | 2439 | then throw("There are no Medical Kits L1 at Emergency Service storage") | |
2438 | 2440 | else { | |
2439 | - | let | |
2440 | - | let | |
2441 | + | let lb = (kX + parseIntValue(split(aP[0], "_")[aR])) | |
2442 | + | let li = makeString([toString((lh - 1)), removeByIndex(lg, 0)], "_") | |
2441 | 2443 | let cd = split(aP[0], "_") | |
2442 | - | let | |
2443 | - | let | |
2444 | - | if (( | |
2445 | - | then throw(("Payment attached should be " + toString( | |
2444 | + | let lj = cc(cd) | |
2445 | + | let lk = fraction((lj * aK), aJ, (cp * aU)) | |
2446 | + | if ((ku.amount != lk)) | |
2447 | + | then throw(("Payment attached should be " + toString(lk))) | |
2446 | 2448 | else { | |
2447 | - | let | |
2448 | - | $Tuple2(([IntegerEntry( | |
2449 | + | let eF = dd(invoke(cM, "updateEsStorage", [li], [AttachedPayment(ci, lk)])) | |
2450 | + | $Tuple2(([IntegerEntry(iz, lb), kt] ++ jx(z, V)._1), eF) | |
2449 | 2451 | } | |
2450 | 2452 | } | |
2451 | 2453 | } | |
2452 | 2454 | } | |
2453 | 2455 | } | |
2454 | 2456 | } | |
2455 | 2457 | } | |
2456 | 2458 | } | |
2457 | 2459 | ||
2458 | 2460 | ||
2459 | 2461 | ||
2460 | - | @Callable( | |
2461 | - | func updateBackpack (z, | |
2462 | + | @Callable(gg) | |
2463 | + | func updateBackpack (z,ll) = if ((gg.caller != cM)) | |
2462 | 2464 | then throw("permission denied") | |
2463 | - | else $Tuple2([StringEntry(bF(z), | |
2464 | - | ||
2465 | - | ||
2466 | - | ||
2467 | - | @Callable( | |
2465 | + | else $Tuple2([StringEntry(bF(z), ll)], ll) | |
2466 | + | ||
2467 | + | ||
2468 | + | ||
2469 | + | @Callable(gg) | |
2468 | 2470 | func commitForRandom () = { | |
2469 | - | let | |
2470 | - | let | |
2471 | - | let b = toString( | |
2472 | - | $Tuple2(([IntegerEntry( | |
2473 | - | } | |
2474 | - | ||
2475 | - | ||
2476 | - | ||
2477 | - | @Callable( | |
2478 | - | func awardSLand ( | |
2471 | + | let kt = kq(gg) | |
2472 | + | let lm = (height + cW) | |
2473 | + | let b = toString(gg.caller) | |
2474 | + | $Tuple2(([IntegerEntry(cX(b), lm)] :+ kt), lm) | |
2475 | + | } | |
2476 | + | ||
2477 | + | ||
2478 | + | ||
2479 | + | @Callable(gg) | |
2480 | + | func awardSLand (cx) = if ((gg.caller != cP)) | |
2479 | 2481 | then throw("Access denied") | |
2480 | - | else if ((size( | |
2482 | + | else if ((size(gg.payments) != 0)) | |
2481 | 2483 | then throw("No payments required") | |
2482 | 2484 | else { | |
2483 | - | let | |
2484 | - | $Tuple2( | |
2485 | - | } | |
2486 | - | ||
2487 | - | ||
2488 | - | ||
2489 | - | @Callable( | |
2485 | + | let eF = ig(addressFromStringValue(cx), gg.transactionId) | |
2486 | + | $Tuple2(eF._1, eF._2._1) | |
2487 | + | } | |
2488 | + | ||
2489 | + | ||
2490 | + | ||
2491 | + | @Callable(gg) | |
2490 | 2492 | func buySLand () = { | |
2491 | - | let | |
2492 | - | if ((size( | |
2493 | + | let kt = kq(gg) | |
2494 | + | if ((size(gg.payments) != 1)) | |
2493 | 2495 | then throw("Exactly one payment required") | |
2494 | 2496 | else { | |
2495 | - | let | |
2496 | - | if (( | |
2497 | + | let ku = value(gg.payments[0]) | |
2498 | + | if ((ku.assetId != ci)) | |
2497 | 2499 | then throw("Allowed USDT payment only!") | |
2498 | - | else if (( | |
2499 | - | then throw(("Payment attached should be " + toString( | |
2500 | + | else if ((ku.amount != dD)) | |
2501 | + | then throw(("Payment attached should be " + toString(dD))) | |
2500 | 2502 | else { | |
2501 | - | let | |
2502 | - | $Tuple2(((( | |
2503 | + | let eF = ig(gg.caller, gg.transactionId) | |
2504 | + | $Tuple2((((eF._1 :+ ScriptTransfer(cM, ku.amount, ci)) ++ jD(toString(gg.caller), X)._1) :+ kt), eF._2._1) | |
2503 | 2505 | } | |
2504 | 2506 | } | |
2505 | 2507 | } | |
2506 | 2508 | ||
2507 | 2509 | ||
2508 | 2510 | ||
2509 | - | @Callable( | |
2510 | - | func expedition ( | |
2511 | - | let | |
2512 | - | if ((size( | |
2511 | + | @Callable(gg) | |
2512 | + | func expedition (io,ip) = { | |
2513 | + | let kt = kq(gg) | |
2514 | + | if ((size(gg.payments) != 0)) | |
2513 | 2515 | then throw("No payments required") | |
2514 | 2516 | else { | |
2515 | - | let bI = toString( | |
2516 | - | let | |
2517 | - | let z = | |
2518 | - | let | |
2519 | - | let | |
2520 | - | let | |
2521 | - | let | |
2522 | - | let | |
2523 | - | let | |
2524 | - | let | |
2525 | - | let | |
2526 | - | let | |
2527 | - | let | |
2528 | - | let | |
2529 | - | let | |
2530 | - | let | |
2531 | - | then $Tuple3([IntegerEntry( | |
2532 | - | else $Tuple3(( | |
2517 | + | let bI = toString(gg.caller) | |
2518 | + | let gL = in(bI, io, ip) | |
2519 | + | let z = gL._2 | |
2520 | + | let iz = y(z) | |
2521 | + | let hj = bF(z) | |
2522 | + | let hM = hi(hj) | |
2523 | + | let jo = split(hM[bg], "_") | |
2524 | + | let jq = makeString(ez(true, jo, dC), "_") | |
2525 | + | let fT = E(z) | |
2526 | + | let kK = valueOrElse(getString(fT), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2527 | + | let ln = eG(kK, gL._5) | |
2528 | + | let kM = ln._1 | |
2529 | + | let kN = ln._2 | |
2530 | + | let lo = ig(gg.caller, gg.transactionId) | |
2531 | + | let im = lo._2._1 | |
2532 | + | let eF = if ((0 >= gL._1)) | |
2533 | + | then $Tuple3([IntegerEntry(iz, 0), StringEntry(fT, kM)], "", 0) | |
2534 | + | else $Tuple3((lo._1 ++ (if (kN) | |
2533 | 2535 | then [StringEntry(K(z), "0_0_0_0_0")] | |
2534 | - | else ((((nil :+ StringEntry(bG(z), makeString([ | |
2535 | - | if ( | |
2536 | + | else ((((nil :+ StringEntry(bG(z), makeString([lo._2._2, "L", im], "_"))) :+ IntegerEntry(iz, gL._1)) :+ StringEntry(fT, kM)) :+ StringEntry(hj, makeString([hM[be], hM[bf], jq, hM[bh]], ":"))))), im, gL._3) | |
2537 | + | if (jN(z)) | |
2536 | 2538 | then throw("expedition_checkTournament") | |
2537 | - | else $Tuple2((( | |
2538 | - | } | |
2539 | - | } | |
2540 | - | ||
2541 | - | ||
2542 | - | ||
2543 | - | @Callable( | |
2539 | + | else $Tuple2(((eF._1 ++ jx(z, X)._1) :+ kt), $Tuple2(eF._2, eF._3)) | |
2540 | + | } | |
2541 | + | } | |
2542 | + | ||
2543 | + | ||
2544 | + | ||
2545 | + | @Callable(gg) | |
2544 | 2546 | func upgradeInfra (O) = { | |
2545 | - | let | |
2546 | - | if ((size( | |
2547 | + | let kt = kq(gg) | |
2548 | + | if ((size(gg.payments) != 0)) | |
2547 | 2549 | then throw("No payments required") | |
2548 | 2550 | else { | |
2549 | - | let | |
2550 | - | let z = valueOrErrorMessage(getString(bE(toString( | |
2551 | - | $Tuple2((( | |
2552 | - | } | |
2553 | - | } | |
2554 | - | ||
2555 | - | ||
2556 | - | ||
2557 | - | @Callable( | |
2558 | - | func activateArtifact ( | |
2559 | - | let | |
2560 | - | if ((size( | |
2551 | + | let eF = ji(true, gg.caller, 0, O) | |
2552 | + | let z = valueOrErrorMessage(getString(bE(toString(gg.caller))), "You don't have a duck staked") | |
2553 | + | $Tuple2(((eF._1 :+ kt) ++ jx(z, fraction(Y, eF._3, cp))._1), eF._2) | |
2554 | + | } | |
2555 | + | } | |
2556 | + | ||
2557 | + | ||
2558 | + | ||
2559 | + | @Callable(gg) | |
2560 | + | func activateArtifact (lp,lq) = { | |
2561 | + | let kt = kq(gg) | |
2562 | + | if ((size(gg.payments) != 0)) | |
2561 | 2563 | then throw("No payments required") | |
2562 | 2564 | else { | |
2563 | - | let b = toString( | |
2564 | - | let | |
2565 | - | let | |
2566 | - | if (("PRESALE" == | |
2567 | - | then | |
2568 | - | else if (("ONBOARD" == | |
2569 | - | then | |
2565 | + | let b = toString(gg.caller) | |
2566 | + | let eF = { | |
2567 | + | let cj = lp | |
2568 | + | if (("PRESALE" == cj)) | |
2569 | + | then jL(b, lq) | |
2570 | + | else if (("ONBOARD" == cj)) | |
2571 | + | then jE(b) | |
2570 | 2572 | else throw("Unknown artifact") | |
2571 | 2573 | } | |
2572 | - | ( | |
2573 | - | } | |
2574 | - | } | |
2575 | - | ||
2576 | - | ||
2577 | - | ||
2578 | - | @Callable( | |
2579 | - | func mergeLands ( | |
2580 | - | let | |
2581 | - | if ((size( | |
2574 | + | (eF :+ kt) | |
2575 | + | } | |
2576 | + | } | |
2577 | + | ||
2578 | + | ||
2579 | + | ||
2580 | + | @Callable(gg) | |
2581 | + | func mergeLands (jR) = { | |
2582 | + | let kt = kq(gg) | |
2583 | + | if ((size(gg.payments) != 0)) | |
2582 | 2584 | then throw("No payments required") | |
2583 | 2585 | else { | |
2584 | - | let | |
2585 | - | $Tuple2((( | |
2586 | - | } | |
2587 | - | } | |
2588 | - | ||
2589 | - | ||
2590 | - | ||
2591 | - | @Callable( | |
2592 | - | func cargoExchange ( | |
2593 | - | let | |
2594 | - | if ((size( | |
2586 | + | let eF = kp(toString(gg.caller), jR) | |
2587 | + | $Tuple2(((eF._1 :+ kt) ++ jD(toString(gg.caller), Z)._1), eF._2) | |
2588 | + | } | |
2589 | + | } | |
2590 | + | ||
2591 | + | ||
2592 | + | ||
2593 | + | @Callable(gg) | |
2594 | + | func cargoExchange (lr,O) = { | |
2595 | + | let kt = kq(gg) | |
2596 | + | if ((size(gg.payments) != 0)) | |
2595 | 2597 | then throw("No payments required") | |
2596 | 2598 | else { | |
2597 | - | let | |
2598 | - | let b = toString( | |
2599 | - | let | |
2600 | - | let | |
2601 | - | if (!(isDefined(getInteger( | |
2602 | - | then throw(( | |
2599 | + | let hL = split_4C(lr, ":") | |
2600 | + | let b = toString(gg.originCaller) | |
2601 | + | let iQ = value(assetInfo(fromBase58String(O))) | |
2602 | + | let iR = bo(O) | |
2603 | + | if (!(isDefined(getInteger(iR)))) | |
2604 | + | then throw((iQ.name + " is not staked")) | |
2603 | 2605 | else { | |
2604 | - | let | |
2605 | - | if (( | |
2606 | + | let iT = valueOrErrorMessage(getString(bl(O)), (("NFT " + iQ.name) + " is orphaned")) | |
2607 | + | if ((iT != b)) | |
2606 | 2608 | then throw((aA + " is not yours")) | |
2607 | 2609 | else { | |
2608 | - | let | |
2609 | - | let | |
2610 | + | let hx = (dj(split(iQ.description, "_")[cR]) / cq) | |
2611 | + | let hy = valueOrElse(getInteger(bv(O)), 0) | |
2610 | 2612 | let z = valueOrErrorMessage(getString(bE(b)), "You don't have a duck staked") | |
2611 | - | let | |
2612 | - | let ca = split(value( | |
2613 | + | let iO = valueOrElse(getString(bG(z)), aI) | |
2614 | + | let ca = split(value(iO), "_") | |
2613 | 2615 | if ((ca[bj] != "L")) | |
2614 | 2616 | then throw((("Duck location type is " + ca[bj]) + ", but should be L")) | |
2615 | 2617 | else if ((ca[bk] != O)) | |
2616 | 2618 | then throw(("Duck should be on the land " + O)) | |
2617 | 2619 | else { | |
2618 | - | let | |
2619 | - | let | |
2620 | - | let | |
2621 | - | let | |
2622 | - | let | |
2623 | - | let | |
2624 | - | let | |
2625 | - | let | |
2626 | - | [StringEntry( | |
2620 | + | let hw = bu(O) | |
2621 | + | let hn = hv(hw, hx, hy) | |
2622 | + | let hj = bF(z) | |
2623 | + | let hM = hi(hj) | |
2624 | + | let eF = hK(hL, hn, hM) | |
2625 | + | let hE = split(hn[aZ], "_") | |
2626 | + | let jf = (parseIntValue(hE[bb]) + eF._7) | |
2627 | + | let jg = (parseIntValue(hE[bc]) - eF._7) | |
2628 | + | [StringEntry(hj, makeString_2C([hM[be], eF._4, eF._5, eF._6], ":")), StringEntry(hw, makeString_2C([hn[aV], eF._1, eF._2, eF._3, makeString([hE[ba], toString(jf), toString(jg), hE[bd]], "_")], ":")), kt] | |
2627 | 2629 | } | |
2628 | 2630 | } | |
2629 | 2631 | } | |
2630 | 2632 | } | |
2631 | 2633 | } | |
2632 | 2634 | ||
2633 | 2635 | ||
2634 | 2636 | ||
2635 | - | @Callable( | |
2636 | - | func saveWarehouse ( | |
2637 | + | @Callable(gg) | |
2638 | + | func saveWarehouse (hA,O) = if ((gg.caller != cM)) | |
2637 | 2639 | then throw("Access denied") | |
2638 | 2640 | else { | |
2639 | - | let | |
2640 | - | let | |
2641 | - | if ((size( | |
2641 | + | let hw = bu(O) | |
2642 | + | let hB = split_4C(hA, ":") | |
2643 | + | if ((size(hB) != 5)) | |
2642 | 2644 | then throw("warehouse string should contain 4 ':' separators") | |
2643 | 2645 | else { | |
2644 | - | let | |
2645 | - | let | |
2646 | - | let | |
2647 | - | let | |
2648 | - | let | |
2649 | - | $Tuple2([StringEntry( | |
2646 | + | let ls = split(hB[aZ], "_")[ba] | |
2647 | + | let jf = hm(hB) | |
2648 | + | let lt = hk(hB[aV]) | |
2649 | + | let jg = ((lt - parseIntValue(ls)) - jf) | |
2650 | + | let lu = makeString_2C([hB[aV], hB[aW], hB[aX], hB[aY], makeString([ls, toString(jf), toString(jg), toString(lt)], "_")], ":") | |
2651 | + | $Tuple2([StringEntry(hw, lu)], lu) | |
2650 | 2652 | } | |
2651 | 2653 | } | |
2652 | 2654 | ||
2653 | 2655 | ||
2654 | 2656 | ||
2655 | - | @Callable( | |
2656 | - | func fixWarehouseFormat (O) = if (( | |
2657 | + | @Callable(gg) | |
2658 | + | func fixWarehouseFormat (O) = if ((gg.caller != cL)) | |
2657 | 2659 | then throw("Access denied") | |
2658 | 2660 | else { | |
2659 | - | let | |
2660 | - | let | |
2661 | - | let | |
2662 | - | let | |
2663 | - | let | |
2664 | - | let | |
2665 | - | let | |
2666 | - | let | |
2667 | - | let | |
2668 | - | let | |
2669 | - | $Tuple2([StringEntry( | |
2661 | + | let hw = bu(O) | |
2662 | + | let iQ = value(assetInfo(fromBase58String(O))) | |
2663 | + | let hx = (dj(split(iQ.description, "_")[cR]) / cq) | |
2664 | + | let hy = valueOrElse(getInteger(bv(O)), 0) | |
2665 | + | let hB = hv(hw, hx, hy) | |
2666 | + | let ls = dg(invoke(cM, "recalcLockedVolumeREADONLY", [O, hB], nil)) | |
2667 | + | let jf = hm(hB) | |
2668 | + | let lt = hk(hB[aV]) | |
2669 | + | let jg = ((lt - ls) - jf) | |
2670 | + | let lu = makeString_2C([hB[aV], hB[aW], hB[aX], hB[aY], makeString([toString(ls), toString(jf), toString(jg), toString(lt)], "_")], ":") | |
2671 | + | $Tuple2([StringEntry(hw, lu)], lu) | |
2670 | 2672 | } | |
2671 | 2673 | ||
2672 | 2674 | ||
2673 | 2675 | ||
2674 | - | @Callable( | |
2675 | - | func fixContinentProportions ( | |
2676 | + | @Callable(gg) | |
2677 | + | func fixContinentProportions (jR) = if ((gg.caller != cL)) | |
2676 | 2678 | then throw("Access denied") | |
2677 | 2679 | else { | |
2678 | - | func | |
2679 | - | ||
2680 | - | let | |
2681 | - | let | |
2682 | - | let | |
2683 | - | let | |
2684 | - | func | |
2685 | - | then | |
2686 | - | else | |
2687 | - | ||
2688 | - | func | |
2689 | - | then | |
2680 | + | func lv (en,lw) = (en :+ valueOrElse(getString(cZ(lw)), "0_0_0_0_0_0")) | |
2681 | + | ||
2682 | + | let fQ = { | |
2683 | + | let ep = aM | |
2684 | + | let eq = size(ep) | |
2685 | + | let er = nil | |
2686 | + | func es (et,eu) = if ((eu >= eq)) | |
2687 | + | then et | |
2688 | + | else lv(et, ep[eu]) | |
2689 | + | ||
2690 | + | func ev (et,eu) = if ((eu >= eq)) | |
2691 | + | then et | |
2690 | 2692 | else throw("List size exceeds 5") | |
2691 | 2693 | ||
2692 | - | | |
2693 | - | } | |
2694 | - | func | |
2695 | - | let | |
2696 | - | let | |
2697 | - | let | |
2698 | - | let | |
2699 | - | let | |
2700 | - | let | |
2701 | - | let | |
2702 | - | let | |
2703 | - | let | |
2704 | - | if (("Americas" == | |
2705 | - | then [ | |
2706 | - | else if (("Europe" == | |
2707 | - | then [ | |
2708 | - | else if (("Asia" == | |
2709 | - | then [ | |
2710 | - | else if (("Africa" == | |
2711 | - | then [ | |
2712 | - | else if (("Oceania" == | |
2713 | - | then [ | |
2694 | + | ev(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5) | |
2695 | + | } | |
2696 | + | func lx (en,O) = { | |
2697 | + | let iQ = value(assetInfo(fromBase58String(O))) | |
2698 | + | let iU = split(iQ.description, "_") | |
2699 | + | let hx = (dj(iU[cR]) / cq) | |
2700 | + | let lw = iU[cT] | |
2701 | + | let gc = gi(iU[cS]) | |
2702 | + | let gK = value(indexOf(aM, lw)) | |
2703 | + | let kg = split(en[gK], "_") | |
2704 | + | let ly = makeString(ga(kg, gc, hx, 1), "_") | |
2705 | + | let cj = lw | |
2706 | + | if (("Americas" == cj)) | |
2707 | + | then [ly, en[1], en[2], en[3], en[4]] | |
2708 | + | else if (("Europe" == cj)) | |
2709 | + | then [en[0], ly, en[2], en[3], en[4]] | |
2710 | + | else if (("Asia" == cj)) | |
2711 | + | then [en[0], en[1], ly, en[3], en[4]] | |
2712 | + | else if (("Africa" == cj)) | |
2713 | + | then [en[0], en[1], en[2], ly, en[4]] | |
2714 | + | else if (("Oceania" == cj)) | |
2715 | + | then [en[0], en[1], en[2], en[3], ly] | |
2714 | 2716 | else throw("wrong continent") | |
2715 | 2717 | } | |
2716 | 2718 | ||
2717 | - | let | |
2718 | - | let | |
2719 | - | let | |
2720 | - | let | |
2721 | - | func | |
2722 | - | then | |
2723 | - | else | |
2724 | - | ||
2725 | - | func | |
2726 | - | then | |
2719 | + | let ey = { | |
2720 | + | let ep = jR | |
2721 | + | let eq = size(ep) | |
2722 | + | let er = fQ | |
2723 | + | func hd (et,eu) = if ((eu >= eq)) | |
2724 | + | then et | |
2725 | + | else lx(et, ep[eu]) | |
2726 | + | ||
2727 | + | func he (et,eu) = if ((eu >= eq)) | |
2728 | + | then et | |
2727 | 2729 | else throw("List size exceeds 100") | |
2728 | 2730 | ||
2729 | - | hd( | |
2730 | - | } | |
2731 | - | $Tuple2([StringEntry( | |
2731 | + | he(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(hd(er, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100) | |
2732 | + | } | |
2733 | + | $Tuple2([StringEntry(cZ("Americas"), ey[0]), StringEntry(cZ("Europe"), ey[1]), StringEntry(cZ("Asia"), ey[2]), StringEntry(cZ("Africa"), ey[3]), StringEntry(cZ("Oceania"), ey[4])], 0) | |
2732 | 2734 | } | |
2733 | 2735 | ||
2734 | 2736 | ||
2735 | 2737 | ||
2736 | - | @Callable( | |
2737 | - | func fixStakedPieces ( | |
2738 | + | @Callable(gg) | |
2739 | + | func fixStakedPieces (cx) = if ((gg.caller != cL)) | |
2738 | 2740 | then throw("Access denied") | |
2739 | 2741 | else { | |
2740 | - | let | |
2742 | + | let kk = if ((cx == "")) | |
2741 | 2743 | then 0 | |
2742 | 2744 | else { | |
2743 | - | let | |
2744 | - | let | |
2745 | - | then split_51C(value( | |
2745 | + | let kd = getString(al, db(cx)) | |
2746 | + | let jZ = if (isDefined(kd)) | |
2747 | + | then split_51C(value(kd), "_") | |
2746 | 2748 | else nil | |
2747 | - | func | |
2748 | - | let | |
2749 | - | let | |
2750 | - | ( | |
2749 | + | func lz (en,O) = { | |
2750 | + | let iQ = value(assetInfo(fromBase58String(O))) | |
2751 | + | let dk = split(iQ.description, "_")[cR] | |
2752 | + | (en + dj(dk)) | |
2751 | 2753 | } | |
2752 | 2754 | ||
2753 | - | let | |
2754 | - | let | |
2755 | - | let | |
2756 | - | func | |
2757 | - | then | |
2758 | - | else | |
2759 | - | ||
2760 | - | func | |
2761 | - | then | |
2755 | + | let ep = jZ | |
2756 | + | let eq = size(ep) | |
2757 | + | let er = 0 | |
2758 | + | func es (et,eu) = if ((eu >= eq)) | |
2759 | + | then et | |
2760 | + | else lz(et, ep[eu]) | |
2761 | + | ||
2762 | + | func ev (et,eu) = if ((eu >= eq)) | |
2763 | + | then et | |
2762 | 2764 | else throw("List size exceeds 100") | |
2763 | 2765 | ||
2764 | - | | |
2766 | + | ev(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100) | |
2765 | 2767 | } | |
2766 | - | $Tuple2([IntegerEntry( | |
2768 | + | $Tuple2([IntegerEntry(dc(cx), kk)], kk) | |
2767 | 2769 | } | |
2768 | 2770 | ||
2769 | 2771 | ||
2770 | 2772 | ||
2771 | - | @Callable( | |
2772 | - | func setCustomName (bm, | |
2773 | - | let | |
2774 | - | if ((size( | |
2773 | + | @Callable(gg) | |
2774 | + | func setCustomName (bm,kb,bq) = { | |
2775 | + | let kt = kq(gg) | |
2776 | + | if ((size(gg.payments) != 1)) | |
2775 | 2777 | then throw("Exactly one payment required") | |
2776 | 2778 | else { | |
2777 | - | let | |
2778 | - | if (( | |
2779 | + | let ku = value(gg.payments[0]) | |
2780 | + | if ((ku.assetId != ci)) | |
2779 | 2781 | then throw("Allowed USDT payment only!") | |
2780 | - | else if (( | |
2781 | - | then throw(("Payment should be " + toString( | |
2782 | - | else if (contains( | |
2783 | - | then throw(("Name should not contain '__': " + | |
2784 | - | else if ((size( | |
2785 | - | then throw(("Name too long, maxLength=" + toString( | |
2782 | + | else if ((ku.amount != dz)) | |
2783 | + | then throw(("Payment should be " + toString(dz))) | |
2784 | + | else if (contains(kb, "__")) | |
2785 | + | then throw(("Name should not contain '__': " + kb)) | |
2786 | + | else if ((size(kb) > dA)) | |
2787 | + | then throw(("Name too long, maxLength=" + toString(dA))) | |
2786 | 2788 | else { | |
2787 | - | let b = toString( | |
2788 | - | let | |
2789 | - | let | |
2790 | - | if (("ACCOUNT" == | |
2789 | + | let b = toString(gg.originCaller) | |
2790 | + | let lA = { | |
2791 | + | let cj = bq | |
2792 | + | if (("ACCOUNT" == cj)) | |
2791 | 2793 | then { | |
2792 | - | let | |
2793 | - | let | |
2794 | - | if (isDefined( | |
2795 | - | then throw(("Name already registered: " + | |
2794 | + | let lB = dT(kb) | |
2795 | + | let lC = getString(lB) | |
2796 | + | if (isDefined(lC)) | |
2797 | + | then throw(("Name already registered: " + kb)) | |
2796 | 2798 | else { | |
2797 | - | let | |
2798 | - | let | |
2799 | - | let | |
2800 | - | then [DeleteEntry( | |
2799 | + | let lD = by(b) | |
2800 | + | let lE = getString(lD) | |
2801 | + | let lF = if (isDefined(lE)) | |
2802 | + | then [DeleteEntry(dT(value(lE)))] | |
2801 | 2803 | else nil | |
2802 | - | ((( | |
2804 | + | (((lF :+ StringEntry(lD, kb)) :+ StringEntry(lB, b)) ++ jD(b, W)._1) | |
2803 | 2805 | } | |
2804 | 2806 | } | |
2805 | - | else if (("LAND" == | |
2807 | + | else if (("LAND" == cj)) | |
2806 | 2808 | then { | |
2807 | - | let | |
2808 | - | let | |
2809 | - | if (!(isDefined(getInteger( | |
2810 | - | then throw(( | |
2809 | + | let iQ = value(assetInfo(fromBase58String(bm))) | |
2810 | + | let iR = bo(bm) | |
2811 | + | if (!(isDefined(getInteger(iR)))) | |
2812 | + | then throw((iQ.name + " is not staked")) | |
2811 | 2813 | else { | |
2812 | - | let | |
2813 | - | if (( | |
2814 | + | let iT = valueOrErrorMessage(getString(bl(bm)), (("NFT " + iQ.name) + " is orphaned")) | |
2815 | + | if ((iT != b)) | |
2814 | 2816 | then throw((aA + " is not yours")) | |
2815 | 2817 | else { | |
2816 | - | let | |
2817 | - | let | |
2818 | - | if (isDefined( | |
2819 | - | then throw(("Name already registered: " + | |
2818 | + | let lB = dM(kb) | |
2819 | + | let lC = getString(lB) | |
2820 | + | if (isDefined(lC)) | |
2821 | + | then throw(("Name already registered: " + kb)) | |
2820 | 2822 | else { | |
2821 | - | let | |
2822 | - | let | |
2823 | - | let | |
2824 | - | then [DeleteEntry( | |
2823 | + | let lG = bn(bm) | |
2824 | + | let lE = getString(lG) | |
2825 | + | let lF = if (isDefined(lE)) | |
2826 | + | then [DeleteEntry(dM(value(lE)))] | |
2825 | 2827 | else nil | |
2826 | - | ((( | |
2828 | + | (((lF :+ StringEntry(lG, kb)) :+ StringEntry(lB, bm)) ++ jD(b, W)._1) | |
2827 | 2829 | } | |
2828 | 2830 | } | |
2829 | 2831 | } | |
2830 | 2832 | } | |
2831 | - | else if (("DUCK" == | |
2833 | + | else if (("DUCK" == cj)) | |
2832 | 2834 | then { | |
2833 | - | let | |
2834 | - | let | |
2835 | - | if (if (!(isDefined(getInteger( | |
2835 | + | let iQ = value(assetInfo(fromBase58String(bm))) | |
2836 | + | let iR = bo(bm) | |
2837 | + | if (if (!(isDefined(getInteger(iR)))) | |
2836 | 2838 | then true | |
2837 | 2839 | else !(isDefined(getString(bE(b))))) | |
2838 | - | then throw(( | |
2840 | + | then throw((iQ.name + " is not staked")) | |
2839 | 2841 | else { | |
2840 | - | let | |
2841 | - | if (( | |
2842 | + | let iT = valueOrErrorMessage(getString(bD(bm)), (("NFT " + iQ.name) + " is orphaned")) | |
2843 | + | if ((iT != b)) | |
2842 | 2844 | then throw((aB + " is not yours")) | |
2843 | 2845 | else { | |
2844 | - | let | |
2845 | - | let | |
2846 | - | if (isDefined( | |
2847 | - | then throw(("Name already registered: " + | |
2846 | + | let lB = dS(kb) | |
2847 | + | let lC = getString(lB) | |
2848 | + | if (isDefined(lC)) | |
2849 | + | then throw(("Name already registered: " + kb)) | |
2848 | 2850 | else { | |
2849 | - | let | |
2850 | - | let | |
2851 | - | let | |
2852 | - | then [DeleteEntry( | |
2851 | + | let lG = bx(bm) | |
2852 | + | let lE = getString(lG) | |
2853 | + | let lF = if (isDefined(lE)) | |
2854 | + | then [DeleteEntry(dS(value(lE)))] | |
2853 | 2855 | else nil | |
2854 | - | ((( | |
2856 | + | (((lF :+ StringEntry(lG, kb)) :+ StringEntry(lB, bm)) ++ jx(bm, W)._1) | |
2855 | 2857 | } | |
2856 | 2858 | } | |
2857 | 2859 | } | |
2858 | 2860 | } | |
2859 | 2861 | else throw("Unknown entity type") | |
2860 | 2862 | } | |
2861 | - | $Tuple2((( | |
2863 | + | $Tuple2(((lA :+ ScriptTransfer(cM, ku.amount, ci)) :+ kt), 0) | |
2862 | 2864 | } | |
2863 | 2865 | } | |
2864 | 2866 | } | |
2865 | 2867 | ||
2866 | 2868 | ||
2867 | 2869 | ||
2868 | - | @Callable( | |
2869 | - | func setReferrals ( | |
2870 | + | @Callable(gg) | |
2871 | + | func setReferrals (lH,lI) = if ((gg.callerPublicKey != dw)) | |
2870 | 2872 | then throw("Permission denied") | |
2871 | 2873 | else { | |
2872 | - | let | |
2873 | - | if ((size( | |
2874 | + | let kt = kq(gg) | |
2875 | + | if ((size(gg.payments) != 0)) | |
2874 | 2876 | then throw("No payments required") | |
2875 | - | else if (!(isDefined(addressFromString( | |
2876 | - | then throw(("Invalid address: " + | |
2877 | - | else if (!(isDefined(addressFromString( | |
2878 | - | then throw(("Invalid address: " + | |
2877 | + | else if (!(isDefined(addressFromString(lH)))) | |
2878 | + | then throw(("Invalid address: " + lH)) | |
2879 | + | else if (!(isDefined(addressFromString(lI)))) | |
2880 | + | then throw(("Invalid address: " + lI)) | |
2879 | 2881 | else { | |
2880 | - | let | |
2881 | - | let | |
2882 | - | let | |
2883 | - | then split_4C(value( | |
2882 | + | let lJ = dU() | |
2883 | + | let lK = getString(lJ) | |
2884 | + | let lL = if (isDefined(lK)) | |
2885 | + | then split_4C(value(lK), "_") | |
2884 | 2886 | else nil | |
2885 | - | if (containsElement( | |
2886 | - | then throw(( | |
2887 | + | if (containsElement(lL, lI)) | |
2888 | + | then throw((lI + " is not newbie (already has referrals)")) | |
2887 | 2889 | else { | |
2888 | - | let | |
2889 | - | let | |
2890 | - | if (if (isDefined( | |
2891 | - | then isDefined(addressFromString(value( | |
2890 | + | let jF = bz(lI) | |
2891 | + | let jG = getString(jF) | |
2892 | + | if (if (isDefined(jG)) | |
2893 | + | then isDefined(addressFromString(value(jG))) | |
2892 | 2894 | else false) | |
2893 | - | then throw((( | |
2895 | + | then throw(((lI + " already has refBy: ") + value(jG))) | |
2894 | 2896 | else { | |
2895 | - | let | |
2896 | - | let | |
2897 | - | let | |
2898 | - | then split_4C(value( | |
2897 | + | let lM = bC(lH) | |
2898 | + | let lN = getString(lM) | |
2899 | + | let lO = if (isDefined(lN)) | |
2900 | + | then split_4C(value(lN), "_") | |
2899 | 2901 | else nil | |
2900 | - | if (containsElement( | |
2901 | - | then throw(((( | |
2902 | + | if (containsElement(lO, lI)) | |
2903 | + | then throw((((lH + " already contains ") + lI) + " within referrals")) | |
2902 | 2904 | else { | |
2903 | - | let | |
2904 | - | let | |
2905 | - | then value( | |
2906 | - | else makeString_2C(( | |
2907 | - | $Tuple2([StringEntry( | |
2905 | + | let lP = makeString_2C((lO :+ lI), "_") | |
2906 | + | let lQ = if (containsElement(lL, lH)) | |
2907 | + | then value(lK) | |
2908 | + | else makeString_2C((lL :+ lH), "_") | |
2909 | + | $Tuple2([StringEntry(jF, lH), StringEntry(lM, lP), StringEntry(lJ, lQ), kt], 0) | |
2908 | 2910 | } | |
2909 | 2911 | } | |
2910 | 2912 | } | |
2911 | 2913 | } | |
2912 | 2914 | } | |
2913 | 2915 | ||
2914 | 2916 | ||
2915 | 2917 | ||
2916 | - | @Callable( | |
2917 | - | func distributePoints ( | |
2918 | - | let | |
2919 | - | if ((size( | |
2918 | + | @Callable(gg) | |
2919 | + | func distributePoints (lR,lS,lT,lU,lV) = { | |
2920 | + | let kt = kq(gg) | |
2921 | + | if ((size(gg.payments) != 0)) | |
2920 | 2922 | then throw("No payments required") | |
2921 | 2923 | else { | |
2922 | - | let b = toString( | |
2924 | + | let b = toString(gg.originCaller) | |
2923 | 2925 | let z = valueOrErrorMessage(getString(bE(b)), "You don't have a duck staked") | |
2924 | - | let | |
2925 | - | let | |
2926 | - | let | |
2927 | - | let | |
2928 | - | let | |
2929 | - | let | |
2930 | - | if (( | |
2931 | - | then throw((("There are only " + toString( | |
2926 | + | let lW = H(b) | |
2927 | + | let lX = valueOrElse(getInteger(al, lW), 0) | |
2928 | + | let lY = D(z) | |
2929 | + | let lZ = valueOrElse(getInteger(al, lY), 0) | |
2930 | + | let ma = (lX + lZ) | |
2931 | + | let mb = ((((lR + lS) + lT) + lU) + lV) | |
2932 | + | if ((mb > ma)) | |
2933 | + | then throw((("There are only " + toString(ma)) + " free points to distribute")) | |
2932 | 2934 | else { | |
2933 | - | let | |
2934 | - | let ao = split(valueOrElse(getString(al, | |
2935 | - | let | |
2936 | - | $Tuple2([IntegerEntry( | |
2935 | + | let mc = A(z) | |
2936 | + | let ao = split(valueOrElse(getString(al, mc), "0_0_0_0_0"), "_") | |
2937 | + | let md = (lX - mb) | |
2938 | + | $Tuple2([IntegerEntry(lW, if ((0 > md)) | |
2937 | 2939 | then 0 | |
2938 | - | else | |
2939 | - | then ( | |
2940 | - | else | |
2940 | + | else md), IntegerEntry(lY, if ((0 > md)) | |
2941 | + | then (lZ + md) | |
2942 | + | else lZ), StringEntry(mc, makeString([toString((parseIntValue(ao[j]) + lR)), toString((parseIntValue(ao[k]) + lS)), toString((parseIntValue(ao[l]) + lT)), toString((parseIntValue(ao[m]) + lU)), toString((parseIntValue(ao[n]) + lV))], "_")), kt], 0) | |
2941 | 2943 | } | |
2942 | 2944 | } | |
2943 | 2945 | } | |
2944 | 2946 | ||
2945 | 2947 | ||
2946 | 2948 | ||
2947 | - | @Callable( | |
2948 | - | func splitByGlobalWeightsREADONLY ( | |
2949 | - | ||
2950 | - | ||
2951 | - | ||
2952 | - | @Callable( | |
2953 | - | func splitByGlobalAndLocalWeightsREADONLY ( | |
2954 | - | let | |
2955 | - | $Tuple2(nil, $Tuple2( | |
2956 | - | } | |
2957 | - | ||
2958 | - | ||
2959 | - | ||
2960 | - | @Callable( | |
2961 | - | func getBackpackREADONLY (z) = $Tuple2(nil, makeString( | |
2962 | - | ||
2963 | - | ||
2964 | - | ||
2965 | - | @Callable( | |
2949 | + | @Callable(gg) | |
2950 | + | func splitByGlobalWeightsREADONLY (ee) = $Tuple2(nil, ew(ee)) | |
2951 | + | ||
2952 | + | ||
2953 | + | ||
2954 | + | @Callable(gg) | |
2955 | + | func splitByGlobalAndLocalWeightsREADONLY (me,mf,gj) = { | |
2956 | + | let gc = gi(gj) | |
2957 | + | $Tuple2(nil, $Tuple2(ew(me), eh(mf, gc))) | |
2958 | + | } | |
2959 | + | ||
2960 | + | ||
2961 | + | ||
2962 | + | @Callable(gg) | |
2963 | + | func getBackpackREADONLY (z) = $Tuple2(nil, makeString(hi(bF(z)), ":")) | |
2964 | + | ||
2965 | + | ||
2966 | + | ||
2967 | + | @Callable(gg) | |
2966 | 2968 | func getWarehouseREADONLY (O) = { | |
2967 | - | let | |
2968 | - | let | |
2969 | - | let | |
2970 | - | $Tuple2(nil, makeString_2C( | |
2971 | - | } | |
2972 | - | ||
2973 | - | ||
2974 | - | ||
2975 | - | @Callable( | |
2969 | + | let iQ = value(assetInfo(fromBase58String(O))) | |
2970 | + | let hx = (dj(split(iQ.description, "_")[cR]) / cq) | |
2971 | + | let hy = valueOrElse(getInteger(bv(O)), 0) | |
2972 | + | $Tuple2(nil, makeString_2C(hv(bu(O), hx, hy), ":")) | |
2973 | + | } | |
2974 | + | ||
2975 | + | ||
2976 | + | ||
2977 | + | @Callable(gg) | |
2976 | 2978 | func saveLastTx () = { | |
2977 | - | let | |
2978 | - | if (if (if (( | |
2979 | - | then ( | |
2979 | + | let ih = gg.caller | |
2980 | + | if (if (if ((ih != cO)) | |
2981 | + | then (ih != cM) | |
2980 | 2982 | else false) | |
2981 | - | then ( | |
2983 | + | then (ih != cP) | |
2982 | 2984 | else false) | |
2983 | 2985 | then throw("Access denied") | |
2984 | - | else $Tuple2([ | |
2985 | - | } | |
2986 | - | ||
2987 | - | ||
2988 | - | ||
2989 | - | @Callable( | |
2990 | - | func updateDuckStats (z, | |
2986 | + | else $Tuple2([kq(gg)], 42) | |
2987 | + | } | |
2988 | + | ||
2989 | + | ||
2990 | + | ||
2991 | + | @Callable(gg) | |
2992 | + | func updateDuckStats (z,jy) = if ((gg.caller != cM)) | |
2991 | 2993 | then throw("Access denied") | |
2992 | - | else | |
2993 | - | ||
2994 | - | ||
2995 | - | ||
2996 | - | @Callable( | |
2997 | - | func updateAccStats (b, | |
2994 | + | else jx(z, jy) | |
2995 | + | ||
2996 | + | ||
2997 | + | ||
2998 | + | @Callable(gg) | |
2999 | + | func updateAccStats (b,jy) = if ((gg.caller != cM)) | |
2998 | 3000 | then throw("Access denied") | |
2999 | - | else | |
3000 | - | ||
3001 | - | ||
3002 | - | ||
3003 | - | @Callable( | |
3004 | - | func equipDuck ( | |
3005 | - | let | |
3006 | - | if ((size( | |
3001 | + | else jD(b, jy) | |
3002 | + | ||
3003 | + | ||
3004 | + | ||
3005 | + | @Callable(gg) | |
3006 | + | func equipDuck (mg) = { | |
3007 | + | let kt = kq(gg) | |
3008 | + | if ((size(gg.payments) != 0)) | |
3007 | 3009 | then throw("No payments required") | |
3008 | 3010 | else { | |
3009 | - | let b = toString( | |
3011 | + | let b = toString(gg.originCaller) | |
3010 | 3012 | let z = valueOrErrorMessage(getString(bE(b)), "You don't have a duck staked") | |
3011 | - | if ( | |
3013 | + | if (jN(z)) | |
3012 | 3014 | then throw("equipDuck_checkTournament") | |
3013 | 3015 | else { | |
3014 | - | let | |
3015 | - | let | |
3016 | - | let | |
3017 | - | let | |
3018 | - | let | |
3019 | - | if ((size( | |
3016 | + | let fT = E(z) | |
3017 | + | let mh = split(valueOrElse(getString(fT), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
3018 | + | let hj = bF(z) | |
3019 | + | let hM = hi(hj) | |
3020 | + | let kM = split(mg, "_") | |
3021 | + | if ((size(kM) != p)) | |
3020 | 3022 | then throw("Wrong equipment string") | |
3021 | 3023 | else { | |
3022 | - | let | |
3023 | - | let | |
3024 | - | let am = if (( | |
3024 | + | let fV = fI(mh, eT(hM[bh]), true, nil) | |
3025 | + | let fW = split(kM[o], ";")[1] | |
3026 | + | let am = if ((fW == "")) | |
3025 | 3027 | then 0 | |
3026 | 3028 | else { | |
3027 | - | let | |
3028 | - | if (( | |
3029 | + | let fX = split(fW, ",")[0] | |
3030 | + | if ((fX == "")) | |
3029 | 3031 | then 0 | |
3030 | 3032 | else { | |
3031 | - | let | |
3032 | - | let | |
3033 | - | let | |
3034 | - | if (if (if (if (if (( | |
3033 | + | let fi = split(fX, ":") | |
3034 | + | let cK = fi[0] | |
3035 | + | let fY = fi[1] | |
3036 | + | if (if (if (if (if ((cK == "06")) | |
3035 | 3037 | then true | |
3036 | - | else ( | |
3038 | + | else (cK == "07")) | |
3037 | 3039 | then true | |
3038 | - | else ( | |
3039 | - | then ( | |
3040 | + | else (cK == "08")) | |
3041 | + | then (fY != "") | |
3040 | 3042 | else false) | |
3041 | - | then (parseIntValue( | |
3043 | + | then (parseIntValue(fY) > 0) | |
3042 | 3044 | else false) | |
3043 | - | then parseIntValue(split(aP[parseIntValue( | |
3045 | + | then parseIntValue(split(aP[parseIntValue(cK)], "_")[aR]) | |
3044 | 3046 | else 0 | |
3045 | 3047 | } | |
3046 | 3048 | } | |
3047 | - | let | |
3048 | - | let | |
3049 | - | let | |
3050 | - | $Tuple2([StringEntry( | |
3049 | + | let fD = ak(this, z, am, true) | |
3050 | + | let fZ = fI(kM, fV, false, fD) | |
3051 | + | let mi = eY(fZ) | |
3052 | + | $Tuple2([StringEntry(fT, mg), StringEntry(hj, makeString_2C([hM[be], hM[bf], hM[bg], mi], ":")), StringEntry(K(z), makeString([toString(fD[7]), toString(fD[8]), toString(fD[9]), toString(fD[10]), toString(fD[11])], "_")), kt], 0) | |
3051 | 3053 | } | |
3052 | 3054 | } | |
3053 | 3055 | } | |
3054 | 3056 | } | |
3055 | 3057 | ||
3056 | 3058 | ||
3057 | 3059 | ||
3058 | - | @Callable( | |
3059 | - | func fortificateLand (O, | |
3060 | - | let | |
3061 | - | if ((size( | |
3060 | + | @Callable(gg) | |
3061 | + | func fortificateLand (O,mj) = { | |
3062 | + | let kt = kq(gg) | |
3063 | + | if ((size(gg.payments) != 0)) | |
3062 | 3064 | then throw("No payments required") | |
3063 | 3065 | else { | |
3064 | - | let b = toString( | |
3066 | + | let b = toString(gg.originCaller) | |
3065 | 3067 | let z = valueOrElse(getString(bE(b)), "") | |
3066 | - | let | |
3067 | - | let | |
3068 | - | let | |
3069 | - | let | |
3070 | - | let | |
3071 | - | let | |
3072 | - | let | |
3073 | - | let | |
3074 | - | let | |
3075 | - | let | |
3076 | - | let | |
3077 | - | let | |
3078 | - | let | |
3079 | - | let | |
3080 | - | let | |
3081 | - | let | |
3082 | - | let | |
3083 | - | let | |
3084 | - | let | |
3085 | - | let | |
3086 | - | let | |
3087 | - | let | |
3088 | - | $Tuple2([StringEntry( | |
3089 | - | } | |
3090 | - | } | |
3091 | - | ||
3092 | - | ||
3093 | - | ||
3094 | - | @Callable( | |
3095 | - | func initDuckTourAttempt (z) = if (( | |
3068 | + | let fd = ak(this, z, 0, false) | |
3069 | + | let mk = bw(O) | |
3070 | + | let ml = split(valueOrElse(getString(mk), ":0_15:0_18:0"), "_") | |
3071 | + | let iQ = value(assetInfo(fromBase58String(O))) | |
3072 | + | let hx = (dj(split(iQ.description, "_")[cR]) / cq) | |
3073 | + | let hy = valueOrElse(getInteger(bv(O)), 0) | |
3074 | + | let hw = bu(O) | |
3075 | + | let hB = hv(hw, hx, hy) | |
3076 | + | let mm = split(hB[aZ], "_") | |
3077 | + | let mn = parseIntValue(mm[bb]) | |
3078 | + | let mo = parseIntValue(mm[bc]) | |
3079 | + | let mp = split(mj, "_") | |
3080 | + | let mq = fP(ml, eT(hB[aY]), mn, mo, true, nil) | |
3081 | + | let fV = mq._1 | |
3082 | + | let mr = mq._2 | |
3083 | + | let ms = mq._3 | |
3084 | + | let mt = fP(mp, fV, mr, ms, false, fd) | |
3085 | + | let fZ = mt._1 | |
3086 | + | let mu = mt._2 | |
3087 | + | let mv = mt._3 | |
3088 | + | let mi = eY(fZ) | |
3089 | + | let jw = makeString([mm[ba], toString(mu), toString(mv), mm[bd]], "_") | |
3090 | + | $Tuple2([StringEntry(mk, mj), StringEntry(hw, makeString_2C([hB[aV], hB[aW], hB[aX], mi, jw], ":")), kt], 0) | |
3091 | + | } | |
3092 | + | } | |
3093 | + | ||
3094 | + | ||
3095 | + | ||
3096 | + | @Callable(gg) | |
3097 | + | func initDuckTourAttempt (z) = if ((gg.caller != cP)) | |
3096 | 3098 | then throw("Access denied") | |
3097 | 3099 | else { | |
3098 | - | let | |
3099 | - | let | |
3100 | - | let | |
3101 | - | let | |
3102 | - | let | |
3103 | - | let | |
3104 | - | let bZ = valueOrElse(getInteger( | |
3105 | - | let | |
3106 | - | $Tuple2([ | |
3100 | + | let kt = kq(gg) | |
3101 | + | let iz = y(z) | |
3102 | + | let iA = ae(valueOrElse(getInteger(C(z)), 0)) | |
3103 | + | let kG = valueOrElse(getInteger(iz), iA) | |
3104 | + | let mw = bG(z) | |
3105 | + | let iO = valueOrElse(getString(mw), aI) | |
3106 | + | let bZ = valueOrElse(getInteger(cP, bK), 0) | |
3107 | + | let mx = (toString(bZ) + "_T_0") | |
3108 | + | $Tuple2([kt, IntegerEntry(I(z), kG), IntegerEntry(iz, iA), StringEntry(J(z), iO), StringEntry(mw, mx)], mx) | |
3107 | 3109 | } | |
3108 | 3110 | ||
3109 | 3111 | ||
3110 | 3112 | ||
3111 | - | @Callable( | |
3113 | + | @Callable(gg) | |
3112 | 3114 | func breakAttempt () = { | |
3113 | - | let | |
3114 | - | let z = valueOrErrorMessage(getString(bE(toString( | |
3115 | - | let | |
3116 | - | let | |
3117 | - | if ((split( | |
3115 | + | let kt = kq(gg) | |
3116 | + | let z = valueOrErrorMessage(getString(bE(toString(gg.caller))), "You don't have a duck staked") | |
3117 | + | let mw = bG(z) | |
3118 | + | let iO = valueOrElse(getString(mw), aI) | |
3119 | + | if ((split(iO, "_")[bj] != "T")) | |
3118 | 3120 | then throw("Your duck is not in the tournament") | |
3119 | 3121 | else { | |
3120 | - | let | |
3121 | - | let | |
3122 | - | $Tuple2([ | |
3123 | - | } | |
3124 | - | } | |
3125 | - | ||
3126 | - | ||
3127 | - | ||
3128 | - | @Callable( | |
3129 | - | func exitTournamentInternal (z) = if (( | |
3122 | + | let my = getIntegerValue(I(z)) | |
3123 | + | let mz = getStringValue(J(z)) | |
3124 | + | $Tuple2([kt, IntegerEntry(y(z), my), StringEntry(mw, mz)], iO) | |
3125 | + | } | |
3126 | + | } | |
3127 | + | ||
3128 | + | ||
3129 | + | ||
3130 | + | @Callable(gg) | |
3131 | + | func exitTournamentInternal (z) = if ((gg.caller != this)) | |
3130 | 3132 | then throw("Access denied") | |
3131 | 3133 | else { | |
3132 | - | let | |
3133 | - | let | |
3134 | - | $Tuple2([IntegerEntry(y(z), | |
3134 | + | let my = getIntegerValue(I(z)) | |
3135 | + | let mz = getStringValue(J(z)) | |
3136 | + | $Tuple2([IntegerEntry(y(z), my), StringEntry(bG(z), mz)], false) | |
3135 | 3137 | } | |
3136 | 3138 | ||
3137 | 3139 | ||
3138 | 3140 | ||
3139 | - | @Callable( | |
3140 | - | func prepareRobbery ( | |
3141 | - | let | |
3142 | - | if (!(sigVerify_8Kb( | |
3141 | + | @Callable(gg) | |
3142 | + | func prepareRobbery (io,ip) = { | |
3143 | + | let kt = kq(gg) | |
3144 | + | if (!(sigVerify_8Kb(io, ip, dw))) | |
3143 | 3145 | then throw("signature does not match") | |
3144 | - | else if ((size( | |
3146 | + | else if ((size(gg.payments) != 1)) | |
3145 | 3147 | then throw("exactly 1 payment must be attached") | |
3146 | 3148 | else { | |
3147 | - | let | |
3148 | - | let | |
3149 | - | if (if (!(isDefined( | |
3149 | + | let ku = gg.payments[0] | |
3150 | + | let mA = ku.amount | |
3151 | + | if (if (!(isDefined(ku.assetId))) | |
3150 | 3152 | then true | |
3151 | - | else (value( | |
3153 | + | else (value(ku.assetId) != cV)) | |
3152 | 3154 | then throw("WLGOLD payments only!") | |
3153 | 3155 | else { | |
3154 | - | let | |
3155 | - | if ((size( | |
3156 | + | let eL = split(toUtf8String(io), "|") | |
3157 | + | if ((size(eL) != 2)) | |
3156 | 3158 | then throw("Wrong message format") | |
3157 | 3159 | else { | |
3158 | - | let z = | |
3160 | + | let z = eL[0] | |
3159 | 3161 | let aw = as(this, z)._1 | |
3160 | - | if ((aw > | |
3161 | - | then throw(((("Payment " + toString( | |
3162 | + | if ((aw > mA)) | |
3163 | + | then throw(((("Payment " + toString(mA)) + " < required ") + toString(aw))) | |
3162 | 3164 | else { | |
3163 | - | let | |
3165 | + | let mB = split(eL[1], "_") | |
3164 | 3166 | let av = lastBlock.timestamp | |
3165 | 3167 | let ax = valueOrElse(getInteger(Q(z)), 0) | |
3166 | 3168 | let ay = valueOrElse(getString(R(z)), "") | |
3167 | 3169 | let az = valueOrElse(getInteger(P(ay)), 0) | |
3168 | 3170 | if (if ((ax != w)) | |
3169 | 3171 | then (az > av) | |
3170 | 3172 | else false) | |
3171 | 3173 | then throw(("You already started robbing, wait till " + toString(az))) | |
3172 | 3174 | else { | |
3173 | - | func | |
3174 | - | let | |
3175 | - | let | |
3176 | - | if (( | |
3175 | + | func mC (en,O) = { | |
3176 | + | let mD = valueOrElse(getInteger(N(O)), 0) | |
3177 | + | let mE = valueOrElse(getInteger(P(O)), 0) | |
3178 | + | if ((mD > size(t))) | |
3177 | 3179 | then throw("Invalid state") | |
3178 | - | else if ((av > | |
3180 | + | else if ((av > mE)) | |
3179 | 3181 | then { | |
3180 | - | let | |
3181 | - | if ((0 >= | |
3182 | - | then | |
3182 | + | let mF = valueOrElse(getInteger(bo(O)), 0) | |
3183 | + | if ((0 >= mF)) | |
3184 | + | then en | |
3183 | 3185 | else { | |
3184 | - | let | |
3185 | - | let | |
3186 | - | let | |
3187 | - | let | |
3188 | - | let | |
3189 | - | let | |
3190 | - | if ((u > | |
3191 | - | then | |
3192 | - | else ( | |
3186 | + | let fN = value(assetInfo(fromBase58String(O))) | |
3187 | + | let iU = split(fN.description, "_") | |
3188 | + | let iG = dj(iU[cR]) | |
3189 | + | let mG = iF(O, iG) | |
3190 | + | let gm = (av - mF) | |
3191 | + | let iX = fraction(gm, (mG * iG), aG) | |
3192 | + | if ((u > iX)) | |
3193 | + | then en | |
3194 | + | else (en :+ O) | |
3193 | 3195 | } | |
3194 | 3196 | } | |
3195 | - | else | |
3197 | + | else en | |
3196 | 3198 | } | |
3197 | 3199 | ||
3198 | - | let | |
3199 | - | let | |
3200 | - | let | |
3201 | - | let | |
3202 | - | func | |
3203 | - | then | |
3204 | - | else | |
3205 | - | ||
3206 | - | func | |
3207 | - | then | |
3200 | + | let mH = { | |
3201 | + | let ep = mB | |
3202 | + | let eq = size(ep) | |
3203 | + | let er = nil | |
3204 | + | func es (et,eu) = if ((eu >= eq)) | |
3205 | + | then et | |
3206 | + | else mC(et, ep[eu]) | |
3207 | + | ||
3208 | + | func ev (et,eu) = if ((eu >= eq)) | |
3209 | + | then et | |
3208 | 3210 | else throw("List size exceeds 10") | |
3209 | 3211 | ||
3210 | - | | |
3212 | + | ev(es(es(es(es(es(es(es(es(es(es(er, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
3211 | 3213 | } | |
3212 | - | if ((size( | |
3214 | + | if ((size(mH) == 0)) | |
3213 | 3215 | then throw("No candidates for robbery") | |
3214 | 3216 | else { | |
3215 | - | let | |
3216 | - | let O = | |
3217 | - | $Tuple2([IntegerEntry(N(O), v), IntegerEntry(P(O), (av + t[v])), IntegerEntry(Q(z), x), StringEntry(R(z), O), | |
3217 | + | let mI = do(size(mH), height, (ip + gg.transactionId)) | |
3218 | + | let O = mH[mI] | |
3219 | + | $Tuple2([IntegerEntry(N(O), v), IntegerEntry(P(O), (av + t[v])), IntegerEntry(Q(z), x), StringEntry(R(z), O), kt], O) | |
3218 | 3220 | } | |
3219 | 3221 | } | |
3220 | 3222 | } | |
3221 | 3223 | } | |
3222 | 3224 | } | |
3223 | 3225 | } | |
3224 | 3226 | } | |
3225 | 3227 | ||
3226 | 3228 | ||
3227 | 3229 | ||
3228 | - | @Callable( | |
3229 | - | func robLand ( | |
3230 | - | let | |
3231 | - | if (!(sigVerify_8Kb( | |
3230 | + | @Callable(gg) | |
3231 | + | func robLand (io,ip) = { | |
3232 | + | let kt = kq(gg) | |
3233 | + | if (!(sigVerify_8Kb(io, ip, dw))) | |
3232 | 3234 | then throw("signature does not match") | |
3233 | - | else $Tuple2([ks], 0) | |
3234 | - | } | |
3235 | + | else { | |
3236 | + | let bI = toString(gg.caller) | |
3237 | + | let z = valueOrErrorMessage(getString(bE(bI)), "You don't have a duck staked") | |
3238 | + | let av = lastBlock.timestamp | |
3239 | + | $Tuple2([kt, IntegerEntry(L(z), av)], 0) | |
3240 | + | } | |
3241 | + | } | |
3242 | + | ||
3243 | + | ||
3244 | + | ||
3245 | + | @Callable(gg) | |
3246 | + | func deliver (io,ip) = if (!(cg)) | |
3247 | + | then throw("Delivery feature is turned off!") | |
3248 | + | else { | |
3249 | + | let kt = kq(gg) | |
3250 | + | if (!(sigVerify_8Kb(io, ip, dw))) | |
3251 | + | then throw("signature does not match") | |
3252 | + | else $Tuple2([kt], 0) | |
3253 | + | } | |
3235 | 3254 | ||
3236 | 3255 |
github/deemru/w8io/c3f4982 1677.00 ms ◑