tx · GpW6EFDpGAaQEzuU1vKeeLRo4VvLQ7F1aPWj2XBMKgek

3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm:  -0.10700000 Waves

2023.10.09 17:55 [2791239] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves

{ "type": 13, "id": "GpW6EFDpGAaQEzuU1vKeeLRo4VvLQ7F1aPWj2XBMKgek", "fee": 10700000, "feeAssetId": null, "timestamp": 1696863375723, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "3Adbi4WNjpD4yCxkebxcBmSkBHxjm6H3rEG8aHHrkkTXWjXRbAqtvQXUvpHZz7ywnKJMZVPn2BiGfEqTQ25SD6WM" ], "script": "base64:BgLhAQgCEgMKAQgSBAoCCAESAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASABIECgICAhIAEgMKAQgSBAoCCAgSAwoBGBIECgIICBIECgIICBIDCgEIEgMKARgSAwoBCBIFCgMICAgSBAoCCAgSBwoFAQEBAQESAwoBARIFCgMBAQgSAwoBCBIDCgEIEgASBAoCCAESBAoCCAESAwoBCBIECgIICBIDCgEIEgASAwoBCBIDCgEIEgMKAQgSBAoCAgISBAoCAgISAJwCAAlEQVlNSUxMSVMAgLiZKQEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBGFkZHIJAKwCAgIQbGFzdEFyYlRpbWVVc2VyXwUEYWRkcgAGU0NBTEU4AIDC1y8ADHhwTGV2ZWxTY2FsZQCAGQAPeHBMZXZlbFJlY2lwUG93AKAfABJudW1Qb2ludHNPbkxldmVsVXAAAwAOcm9iYmVyeUNvc3RNaW4AgMLXLwAUcm9iYmVyeUNvb2xkb3duQ29lZmYAkAMADHJlcXVpcmVtZW50cwkAzAgCAghTdHJlbmd0aAkAzAgCAghBY2N1cmFjeQkAzAgCAglJbnRlbGxlY3QJAMwIAgIJRW5kdXJhbmNlCQDMCAICCURleHRlcml0eQkAzAgCAgVMZXZlbAkAzAgCAgZIZWFsdGgFA25pbAAMY2hhclN0cmVuZ3RoAAAADGNoYXJBY2N1cmFjeQABAA1jaGFySW50ZWxsZWN0AAIADWNoYXJFbmR1cmFuY2UAAwANY2hhckRleHRlcml0eQAEAAtzZWdCYWNrcGFjawAAAAtOVU1TRUdNRU5UUwAGAApOVU1NQUlOQVVYAAIACE1BWFNMT1RTAAIADU1BWFBST0RJTlNMT1QAHgAQbGFuZFJvYkNvb2xkb3ducwkAzAgCAAAJAMwIAgDAzyQJAMwIAgCg9zYJAMwIAgCA3MwUCQDMCAIAgK6mCgUDbmlsAA5NSU5fUkVTX1RPX1JPQgCA2sQJAAxyb2JJZHhMb2NrZWQAAQALZHVja0lkeEZyZWUAAAAQZHVja0lkeFByZXBhcmluZwABAQ1rZXlEdWNrSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgtkdWNrSGVhbHRoXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tDaGFycwELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0NoYXJzXwULZHVja0Fzc2V0SWQBCWtleUR1Y2tYUAELZHVja0Fzc2V0SWQJAKwCAgIHZHVja1hQXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tMZXZlbAELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0xldmVsXwULZHVja0Fzc2V0SWQBEWtleUR1Y2tGcmVlUG9pbnRzAQtkdWNrQXNzZXRJZAkArAICAg9kdWNrRnJlZVBvaW50c18FC2R1Y2tBc3NldElkARBrZXlEdWNrRXF1aXBtZW50AQtkdWNrQXNzZXRJZAkArAICAg5kdWNrRXF1aXBtZW50XwULZHVja0Fzc2V0SWQBCWtleVVzZXJYUAEEYWRkcgkArAICAgd1c2VyWFBfBQRhZGRyAQxrZXlVc2VyTGV2ZWwBBGFkZHIJAKwCAgIKdXNlckxldmVsXwUEYWRkcgERa2V5VXNlckZyZWVQb2ludHMBBGFkZHIJAKwCAgIPdXNlckZyZWVQb2ludHNfBQRhZGRyAQ5rZXlTYXZlZEhlYWx0aAELZHVja0Fzc2V0SWQJAKwCAgIMc2F2ZWRIZWFsdGhfBQtkdWNrQXNzZXRJZAEQa2V5U2F2ZWRMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgIOc2F2ZWRMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQxrZXlEdWNrQnVmZnMBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tCdWZmc18FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5VGltZV8FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeUNvc3RCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5Q29zdF8FC2R1Y2tBc3NldElkARNrZXlMYW5kUm9iYmVyeVN0YXRlAQtsYW5kQXNzZXRJZAkArAICAhFsYW5kUm9iYmVyeVN0YXRlXwULbGFuZEFzc2V0SWQBEmtleUxhbmRDb29sZG93bkVUQQELbGFuZEFzc2V0SWQJAKwCAgIQbGFuZENvb2xkb3duRVRBXwULbGFuZEFzc2V0SWQBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBC2R1Y2tBc3NldElkCQCsAgICEWR1Y2tSb2JiZXJ5U3RhdGVfBQtkdWNrQXNzZXRJZAETa2V5TG9ja2VkTGFuZEJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIRbG9ja2VkTGFuZEJ5RHVja18FC2R1Y2tBc3NldElkARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAhRkZWxpdmVyeURlbGF5QnlEdWNrXwULZHVja0Fzc2V0SWQAB3hwQ2xhaW0AkE4AD3hwU3VjY2Vzc0ZsaWdodACQTgAMeHBGYWlsRmxpZ2h0ANAPAAh4cENhbGxFUwCgjQYADHhwQ3VzdG9tTmFtZQDAhD0ACnhwTmV3U0xhbmQAwJaxAgAOeHBVcGdyYWRlSW5mcmEAkE4AB3hwTWVyZ2UAwIQ9AAl4cE9uYm9hcmQAwIQ9AAZ4cEhlYWwAkE4BCWxldmVsQnlYUAECeHAJAGsDBQx4cExldmVsU2NhbGUJAGwGBQJ4cAAEBQ94cExldmVsUmVjaXBQb3cABAAEBQRET1dOBQZTQ0FMRTgBCW1heEhlYWx0aAEFbGV2ZWwJAGQCAGQFBWxldmVsAQdsZXZlbFVwAgljdXJyTGV2ZWwFbmV3WFAECG5ld0xldmVsCQEJbGV2ZWxCeVhQAQUFbmV3WFAJAMwIAgUIbmV3TGV2ZWwJAMwIAgkAaAIFEm51bVBvaW50c09uTGV2ZWxVcAkAZQIFCG5ld0xldmVsBQljdXJyTGV2ZWwFA25pbAEMZ2V0RHVja1N0YXRzBA9zdGFraW5nQ29udHJhY3QLZHVja0Fzc2V0SWQKYnVmZkVmZmVjdApmb3JjZUJ1ZmZzBAVjaGFycwkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tDaGFycwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzACAV8EA2x2bAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAZoZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkCQEJbWF4SGVhbHRoAQUDbHZsBApzdGF0ZUJ1ZmZzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAIBXwkAzggCCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhclN0cmVuZ3RoCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhckFjY3VyYWN5CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckludGVsbGVjdAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJFbmR1cmFuY2UJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRGV4dGVyaXR5CQDMCAIFA2x2bAkAzAgCBQZoZWFsdGgFA25pbAMFCmZvcmNlQnVmZnMJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0BQNuaWwJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDGNoYXJTdHJlbmd0aAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUMY2hhckFjY3VyYWN5CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQ1jaGFySW50ZWxsZWN0CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQ1jaGFyRW5kdXJhbmNlCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQ1jaGFyRGV4dGVyaXR5BQNuaWwBDmdldFJvYmJlcnlEYXRhAg9zdGFraW5nQ29udHJhY3QLZHVja0Fzc2V0SWQEC2xhc3RSb2JDb3N0CQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBGGtleUxhc3RSb2JiZXJ5Q29zdEJ5RHVjawEFC2R1Y2tBc3NldElkAAAEC2xhc3RSb2JUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBGGtleUxhc3RSb2JiZXJ5VGltZUJ5RHVjawEFC2R1Y2tBc3NldElkAAAEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEB3JvYkNvc3QJAJYDAQkAzAgCBQ5yb2JiZXJ5Q29zdE1pbgkAzAgCCQBlAgULbGFzdFJvYkNvc3QJAGgCBRRyb2JiZXJ5Q29vbGRvd25Db2VmZgkAZQIFA25vdwULbGFzdFJvYlRpbWUFA25pbAQJZHVja1N0YXRlCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAAABApsb2NrZWRMYW5kCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBE2tleUxvY2tlZExhbmRCeUR1Y2sBBQtkdWNrQXNzZXRJZAIABAdsYW5kRVRBCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBEmtleUxhbmRDb29sZG93bkVUQQEFCmxvY2tlZExhbmQAAAkAlwoFBQdyb2JDb3N0BQtsYXN0Um9iVGltZQUJZHVja1N0YXRlBQpsb2NrZWRMYW5kBQdsYW5kRVRBAApMQU5EUFJFRklYAgRMQU5EAApEVUNLUFJFRklYAgREVUNLAApBUlRQUkVTQUxFAgdQUkVTQUxFAAZOVU1SRVMABgAYTUFYX0xBTkRTX1NUQUtFRF9CWV9VU0VSABkAD0RBSUxZUkVTQllQSUVDRQCA+NIBAAxXSE1VTFRJUExJRVIAgMivoCUAD0RFRkFVTFRMT0NBVElPTgIPQWZyaWNhX0ZfQWZyaWNhABBSRVNPVVJDRVBSSUNFTUlOANW1AgAKRVNTRUxMQ09FRgAKABVNSU5fVVNEVF9GRUVfREVMSVZFUlkA0IYDABJURU5fTUlOVVRFU19NSUxMSVMAwM8kAAlwcm9kVHlwZXMJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMQkAzAgCAhBGaXJzdCBBaWQgS2l0IEwyCQDMCAICEEZpcnN0IEFpZCBLaXQgTDMJAMwIAgILQmFja3BhY2sgTDEJAMwIAgILQmFja3BhY2sgTDIJAMwIAgILQmFja3BhY2sgTDMJAMwIAgIORm9vZCBSYXRpb24gTDEJAMwIAgIORm9vZCBSYXRpb24gTDIJAMwIAgIORm9vZCBSYXRpb24gTDMJAMwIAgILSmV0IFBhY2sgTDEJAMwIAgILSmV0IFBhY2sgTDIJAMwIAgILSmV0IFBhY2sgTDMJAMwIAgIJU2hpZWxkIEwxCQDMCAICCVNoaWVsZCBMMgkAzAgCAglTaGllbGQgTDMJAMwIAgIHTWluZSBMMQkAzAgCAgdNaW5lIEwyCQDMCAICB01pbmUgTDMJAMwIAgIHVHJhcCBMMQkAzAgCAgdUcmFwIEwyCQDMCAICB1RyYXAgTDMFA25pbAAKY29udGluZW50cwkAzAgCAghBbWVyaWNhcwkAzAgCAgZFdXJvcGUJAMwIAgIEQXNpYQkAzAgCAgZBZnJpY2EJAMwIAgIHT2NlYW5pYQUDbmlsAAlDT0VGRjJNQVQAgK3iBAAQZm9ydEFsbG93ZWRQcm9kcwkAzAgCAA8JAMwIAgAQCQDMCAIAEQkAzAgCABIJAMwIAgATCQDMCAIAFAUDbmlsABBwcm9kdWN0aW9uTWF0cml4CQDMCAICJThfOF84XzE3XzE3XzQyXzEyXzBfMzBfMCwwLDAsMCwwLDAsMF8JAMwIAgIlOF84XzhfMTdfMTdfNDJfMjRfMF82MF8wLDAsNSwyLDAsMCwwXwkAzAgCAic4XzhfOF8xN18xN180Ml8zNl8wXzEyMF8wLDAsMTAsNCwwLDAsMF8JAMwIAgIpOF8xOV8xOV84XzI3XzE5XzI2XzFfMjBfMCwwLDAsMCwwLDAsMF8wMDEJAMwIAgIpOF8xOV8xOV84XzI3XzE5XzUyXzFfNDBfMCwwLDAsMCwwLDAsMF8wMDEJAMwIAgIpOF8xOV8xOV84XzI3XzE5Xzc4XzFfODBfMCwwLDAsMCwwLDAsMF8wMDEJAMwIAgIlOF84XzhfOF84XzYwXzEzXzJfMl8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAiU4XzhfOF84XzhfNjBfMjZfMl80XzAsMCwwLDAsMCwwLDBfMDExCQDMCAICJThfOF84XzhfOF82MF8zOV8yXzhfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIpMzBfMzBfM18xN18xN18zXzMwXzNfMzBfMCwwLDAsMCwwLDAsMF8xMTEJAMwIAgIpMzBfMzBfM18xN18xN18zXzYwXzNfNTBfMCwwLDAsMCwwLDAsMF8xMTEJAMwIAgIpMzBfMzBfM18xN18xN18zXzkwXzNfNzBfMCwwLDAsMCwwLDAsMF8xMTEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMTFfNF8xMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8yMl80XzIwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzMzXzRfMzBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIqNF8xM18yMl80XzM1XzIyXzIzXzBfNTAsMSwwXzAsMCwwLDAsMCwwLDBfCQDMCAICKjRfMTNfMjJfNF8zNV8yMl80Nl8wXzUwLDEsMV8wLDIsNSwwLDAsMCwwXwkAzAgCAis0XzEzXzIyXzRfMzVfMjJfNjlfMF81MCwyLDFfMCw1LDEwLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV8yMF8xXzMwLDEsMV8wLDAsMCwwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfNDBfMV8zMCwxLDJfMiwxLDMsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzYwXzFfMzAsMSwzXzUsMiw4LDAsMCwwLDBfBQNuaWwACXJJZHhDb2VmZgAGAApySWR4RWZmZWN0AAgAEHJJZHhSZXF1aXJlbWVudHMACQAJcklkeFNsb3RzAAoADlBST0RVQ1RQS0dTSVpFAAoAC3doSWR4TGV2ZWxzAAAACHdoSWR4UmVzAAEACHdoSWR4TWF0AAIACXdoSWR4UHJvZAADAAl3aElkeExPRlQABAAJdm9sTG9ja2VkAAAAC3ZvbE9jY3VwaWVkAAEAB3ZvbEZyZWUAAgAIdm9sVG90YWwAAwAKYnBJZHhMZXZlbAAAAAhicElkeFJlcwABAAhicElkeE1hdAACAAlicElkeFByb2QAAwAPbG9jSWR4Q29udGluZW50AAAACmxvY0lkeFR5cGUAAQAIbG9jSWR4SWQAAgEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQdhc3NldElkCQCsAgICA25vXwUHYXNzZXRJZAEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIFbGNuYV8FB2Fzc2V0SWQBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBB2Fzc2V0SWQJAKwCAgIDc3RfBQdhc3NldElkASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIEdHlwZQdhc3NldElkCQC5CQIJAMwIAgIDbGFzCQDMCAIFBHR5cGUJAMwIAgUHYXNzZXRJZAUDbmlsAgFfASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwduZnRUeXBlB2Fzc2V0SWQJb3duZXJBZGRyCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIGc3R0YW9fBQduZnRUeXBlAgFfBQdhc3NldElkAgFfBQlvd25lckFkZHIBEmtleVdhcmVob3VzZUJ5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIDd2hfBQtsYW5kQXNzZXRJZAEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgtpbmZyYUxldmVsXwUHYXNzZXRJZAEXa2V5Rm9ydGlmaWNhdGlvbnNCeUxhbmQBC2xhbmRBc3NldElkCQCsAgICD2ZvcnRpZmljYXRpb25zXwULbGFuZEFzc2V0SWQBGmtleUR1Y2tBc3NldElkVG9DdXN0b21OYW1lAQdhc3NldElkCQCsAgICGGR1Y2tDdXN0b21OYW1lQnlBc3NldElkXwUHYXNzZXRJZAEWa2V5QWRkcmVzc1RvQ3VzdG9tTmFtZQEEYWRkcgkArAICAhhhY2NvdW50Q3VzdG9tTmFtZUJ5QWRkcl8FBGFkZHIBD2tleUFkZHJlc3NSZWZCeQEEYWRkcgkArAICAglhY2NSZWZCeV8FBGFkZHIBHGtleU9uYm9hcmRBcnRBY3RpdmF0ZWRPbkR1Y2sBC2R1Y2tBc3NldElkCQCsAgICGm9uYm9hcmRBcnRBY3RpdmF0ZWRPbkR1Y2tfBQtkdWNrQXNzZXRJZAEca2V5T25ib2FyZEFydER1Y2tBY3RpdmF0ZWRCeQEEYWRkcgkArAICAhpvbmJvYXJkQXJ0QWN0aXZhdGVkRHVja0J5XwUEYWRkcgETa2V5QWRkcmVzc1JlZmVycmFscwEEYWRkcgkArAICAg1hY2NSZWZlcnJhbHNfBQRhZGRyARBrZXlEdWNrSWRUb093bmVyAQdhc3NldElkCQCsAgICCmR1Y2tPd25lcl8FB2Fzc2V0SWQBFGtleVN0YWtlZER1Y2tCeU93bmVyAQlvd25lckFkZHIJAKwCAgISc3Rha2VkRHVja0J5T3duZXJfBQlvd25lckFkZHIBEWtleUJhY2twYWNrQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAgliYWNrUGFja18FC2R1Y2tBc3NldElkAQ9rZXlEdWNrTG9jYXRpb24BC2R1Y2tBc3NldElkCQCsAgICDWR1Y2tMb2NhdGlvbl8FC2R1Y2tBc3NldElkARVrZXlVc2VyR3dsUmVsZWFzZVRpbWUBCHVzZXJBZGRyCQCsAgICGiVzJXNfX3VzZXJHd2xSZWxlYXNlVGltZV9fBQh1c2VyQWRkcgEOa2V5RXNXYXJlaG91c2UAAhplbWVyZ2VuY3lXYXJlaG91c2VQcm9kdWN0cwAPZGVsaXZlcnlGdW5kS2V5AgxkZWxpdmVyeUZ1bmQAEWRlbGl2ZXJ5TG9ja2VkS2V5Ag5kZWxpdmVyeUxvY2tlZAANbGFzdFRvdXJJZEtleQIOJXNfX2xhc3RUb3VySWQBFWtleVRvdXJTdGF0aWNEYXRhQnlJZAEDdElkCQCsAgICFiVzJWRfX3RvdXJTdGF0aWNEYXRhX18JAKQDAQUDdElkARZrZXlUb3VyRHluYW1pY0RhdGFCeUlkAQN0SWQJAKwCAgIXJXMlZF9fdG91ckR5bmFtaWNEYXRhX18JAKQDAQUDdElkARprZXlCZXN0UmVzdWx0QnlUb3VyQW5kRHVjawIDdElkC2R1Y2tBc3NldElkCQC5CQIJAMwIAgIfJXMlZCVzX19iZXN0UmVzdWx0QnlUb3VyQW5kRHVjawkAzAgCCQCkAwEFA3RJZAkAzAgCBQtkdWNrQXNzZXRJZAUDbmlsAgJfXwAJaWR4U3RhdGljAAAACmlkeER5bmFtaWMAAQAKdFN0YXRpY0VuZAAGAA50RHluYW1pY1N0YXR1cwABAQtnZXRUb3VyRGF0YQIMdG91ckNvbnRyYWN0A3RJZAQGc3RhdGljCQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQx0b3VyQ29udHJhY3QJARVrZXlUb3VyU3RhdGljRGF0YUJ5SWQBBQN0SWQJAKwCAgkArAICAhlFcnJvciByZWFkaW5nIHRvdXJuYW1lbnQgCQCkAwEFA3RJZAIFIGRhdGECAl9fBAdkeW5hbWljCQC8CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQx0b3VyQ29udHJhY3QJARZrZXlUb3VyRHluYW1pY0RhdGFCeUlkAQUDdElkCQCsAgIJAKwCAgIZRXJyb3IgcmVhZGluZyB0b3VybmFtZW50IAkApAMBBQN0SWQCBSBkYXRhAgJfXwkAzAgCBQZzdGF0aWMJAMwIAgUHZHluYW1pYwUDbmlsAQ5pc0luVG91cm5hbWVudAIMdG91ckNvbnRyYWN0CGxvY2F0aW9uBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMdG91ckNvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFDHRvdXJDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwMDAwkAAAIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFUCQAAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUPbG9jSWR4Q29udGluZW50BQZsYXN0SWQHCQAAAgkAkQMCBQdkeW5hbWljBQ50RHluYW1pY1N0YXR1cwIKSU5QUk9HUkVTUwcJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQNub3cHAQxpc0luRGVsaXZlcnkBCGxvY2F0aW9uBANsb2MJALUJAgUIbG9jYXRpb24CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUPbG9jSWR4Q29udGluZW50BAhkaXN0YW5jZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUIbG9jSWR4SWQDAwkAAAIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFECQBmAgUDbm93CQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMHCQBnAgADBQhkaXN0YW5jZQcBD2lzVXN1YWxMb2NhdGlvbgEIbG9jYXRpb24EB2xvY1R5cGUJAJEDAgkAtQkCBQhsb2NhdGlvbgIBXwUKbG9jSWR4VHlwZQMJAQIhPQIFB2xvY1R5cGUCAVQJAQIhPQIFB2xvY1R5cGUCAUQHAQxub3RPbk1pc3Npb24CDHRvdXJDb250cmFjdAhsb2NhdGlvbgQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFDHRvdXJDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABANsb2MJALUJAgUIbG9jYXRpb24CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBXREYXRhCQELZ2V0VG91ckRhdGECBQx0b3VyQ29udHJhY3QFBmxhc3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMEB2xvY1R5cGUJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAwMJAQIhPQIFB2xvY1R5cGUCAVQJAQIhPQIFB2xvY1R5cGUCAUQHBgkBASEBAwMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAVQJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAcJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcBEmdldFJlY2lwZU1hdGVyaWFscwEGcmVjaXBlCQBoAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnJlY2lwZQUJcklkeENvZWZmBQlDT0VGRjJNQVQBDGNoZWF0QXR0ZW1wdAMGb2xkTG9jBm5ld0xvYwljaGVhdENhc2UJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIWQ2hlYXQgYXR0ZW1wdDogb2xkTG9jPQUGb2xkTG9jAgksIG5ld0xvYz0FBm5ld0xvYwIHLCBjYXNlPQkApAMBBQljaGVhdENhc2UAFktTX1NFUEFSQVRFX1BVQkxJQ19LRVkHABhLU19BTExPV19CSUdfSU5GUkFfTUVSR0UHABFLU19BTExPV19ERUxJVkVSWQYABWNoYWluCQDJAQIJAMoBAggFBHRoaXMFYnl0ZXMAAQABAAt1c2R0QXNzZXRJZAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAEghNp6sggDP07Ru8qO7ouTvMmC3Qtd+geWqNQj+agP/7kDCQAAAgEBVAUHJG1hdGNoMAEgVbHYn3KHgu/l41uNrAWrZd6aQ6EvFrsF8xq3h6XxxRgJAAIBAg1Vbmtub3duIGNoYWluABVkZWZhdWx0UmVzdEFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQUUN1dkZidmg0TGtQVW5yblUxejNqbmJBMXA5bTNXTmh2AwkAAAIBAVQFByRtYXRjaDACIzNNdW1rR0d6dENLQVhwV0RxeGtkZG9mcVhTVWJxUWt2U0p5CQACAQINVW5rbm93biBjaGFpbgARSW5mcmFVcGdyYWRlQ29zdFMEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAgMivoCUDCQAAAgEBVAUHJG1hdGNoMACAwtcvCQACAQINVW5rbm93biBjaGFpbgAOYXJiaXRyYWdlRGVsYXkEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAgLiZKQMJAAACAQFUBQckbWF0Y2gwAODUAwkAAgECDVVua25vd24gY2hhaW4AA1NFUAICX18ABU1VTFQ2AMCEPQAFTVVMVDgAgMLXLwAFU1NJWkUAGQAFTVNJWkUAZAAFTFNJWkUA4QEABlhMU0laRQCQAwAHWFhMU0laRQDxBAAFSVRFUjYJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUFA25pbAEPZ2V0U3RyaW5nT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgAAEUlkeENmZ1N0YWtpbmdEYXBwAAEAEUlkeENmZ0Vjb25vbXlEYXBwAAIAFElkeENmZ0dvdmVybmFuY2VEYXBwAAMADUlkeENmZ1dsZ0RhcHAABAAUSWR4Q2ZnVG91cm5hbWVudERhcHAABwAPSWR4Q2ZnQWNyZXNEYXBwAAgBCmtleVJlc3RDZmcAAg4lc19fcmVzdENvbmZpZwEOa2V5UmVzdEFkZHJlc3MAAgwlc19fcmVzdEFkZHIBEXJlYWRSZXN0Q2ZnT3JGYWlsAQRyZXN0CQC8CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQRyZXN0CQEKa2V5UmVzdENmZwAFA1NFUAEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgdyZXN0Q2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHcmVzdENmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgADHJlc3RDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5UmVzdEFkZHJlc3MABRVkZWZhdWx0UmVzdEFkZHJlc3NTdHIAB3Jlc3RDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDHJlc3RDb250cmFjdAAPc3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnU3Rha2luZ0RhcHAAD2Vjb25vbXlDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ0Vjb25vbXlEYXBwAAtnb3ZDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ0dvdmVybmFuY2VEYXBwAAt3bGdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFDUlkeENmZ1dsZ0RhcHAAEnRvdXJuYW1lbnRDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ1RvdXJuYW1lbnREYXBwAA1hY3Jlc0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUPSWR4Q2ZnQWNyZXNEYXBwAApyZWNMYW5kTnVtAAAAC3JlY0xhbmRTaXplAAEAC3JlY1RlcnJhaW5zAAIADHJlY0NvbnRpbmVudAADAA13bGdBc3NldElkS2V5Agt3bGdfYXNzZXRJZAAKd2xnQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFC3dsZ0NvbnRyYWN0BQ13bGdBc3NldElkS2V5AhhXTEdPTEQgaXMgbm90IGlzc3VlZCB5ZXQAD2FjcmVzQXNzZXRJZEtleQIMYWNyZXNBc3NldElkAAxhY3Jlc0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQ1hY3Jlc0NvbnRyYWN0BQ9hY3Jlc0Fzc2V0SWRLZXkCF0FDUkVTIGlzIG5vdCBpc3N1ZWQgeWV0AAtyYW5kb21EZWxheQACAQlrZXlDb21taXQBB2FkZHJlc3MJAKwCAgITZmluaXNoQmxvY2tGb3JBZGRyXwUHYWRkcmVzcwERa2V5UmVzUHJvcG9ydGlvbnMAAhNyZXNUeXBlc1Byb3BvcnRpb25zARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQljb250aW5lbnQJAKwCAgIUcmVzVHlwZXNCeUNvbnRpbmVudF8FCWNvbnRpbmVudAEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQlvd25lckFkZHIJAKwCAgITc3Rha2VkTGFuZHNCeU93bmVyXwUJb3duZXJBZGRyARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQlvd25lckFkZHIJAKwCAgIUc3Rha2VkUGllY2VzQnlPd25lcl8FCW93bmVyQWRkcgEIYXNTdHJpbmcBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIYZmFpbCB0byBjYXN0IGludG8gU3RyaW5nAQVhc0ludAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgNJbnQEAW4FByRtYXRjaDAFAW4JAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBCWFzQW55TGlzdAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAglMaXN0W0FueV0EAWwFByRtYXRjaDAFAWwJAAIBAhtmYWlsIHRvIGNhc3QgaW50byBMaXN0W0FueV0BCWFzQm9vbGVhbgEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAFzBQckbWF0Y2gwBQFzCQACAQIZZmFpbCB0byBjYXN0IGludG8gQm9vbGVhbgEQYXNTdHJpbmdJbnRUdXBsZQEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAINKFN0cmluZywgSW50KQQCdDIFByRtYXRjaDAFAnQyCQACAQIfZmFpbCB0byBjYXN0IGludG8gKFN0cmluZywgSW50KQEPbnVtUGllY2VzQnlTaXplAQhsYW5kU2l6ZQQHJG1hdGNoMAUIbGFuZFNpemUDCQAAAgIBUwUHJG1hdGNoMAUFU1NJWkUDCQAAAgIBTQUHJG1hdGNoMAUFTVNJWkUDCQAAAgIBTAUHJG1hdGNoMAUFTFNJWkUDCQAAAgICWEwFByRtYXRjaDAFBlhMU0laRQMJAAACAgNYWEwFByRtYXRjaDAFB1hYTFNJWkUJAAIBAhFVbmtub3duIGxhbmQgc2l6ZQEHaXNEaWdpdAEBcwkBCWlzRGVmaW5lZAEJALYJAQUBcwEKa2V5QmxvY2tlZAACEGNvbnRyYWN0c0Jsb2NrZWQBEWtleUxhc3RUeElkQnlVc2VyAQRhZGRyCQCsAgICD2xhc3RUeElkQnlVc2VyXwUEYWRkcgEKZml4ZWRQb2ludAIDdmFsCGRlY2ltYWxzBAZ0ZW5Qb3cJAGwGAAoAAAUIZGVjaW1hbHMAAAAABQRET1dOBAdsb3dQYXJ0CQCkAwEJAGoCBQN2YWwFBnRlblBvdwQGemVyb2VzCQCwAgIJAKQDAQUGdGVuUG93CQBkAgABCQCxAgEFB2xvd1BhcnQJAKwCAgkArAICCQCsAgIJAKQDAQkAaQIFA3ZhbAUGdGVuUG93AgEuBQZ6ZXJvZXMFB2xvd1BhcnQBD2dldFJhbmRvbU51bWJlcgMIbWF4VmFsdWUMZmluaXNoSGVpZ2h0CmF1eEVudHJvcHkED3JhbmRvbVNlZWRCbG9jawkBBXZhbHVlAQkA7QcBBQxmaW5pc2hIZWlnaHQECnJhbmRvbUhhc2gJAPcDAQkAywECCQEFdmFsdWUBCAUPcmFuZG9tU2VlZEJsb2NrA3ZyZgUKYXV4RW50cm9weQkAagIJALEJAQUKcmFuZG9tSGFzaAUIbWF4VmFsdWUADWluY3ViYXRvckFkZHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQRWt0VnV4MlJoY2hTTjYzRHNEbzRiNG16NFFxektTZUR2AwkAAAIBAVQFByRtYXRjaDAFBHRoaXMJAAIBAg1Vbmtub3duIGNoYWluAAticmVlZGVyQWRkcgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BEVnVVNDVIN0VoNWRtdE5iblJOUlN0R3dVTEE3Tlk2SGIDCQAAAgEBVAUHJG1hdGNoMAUEdGhpcwkAAgECDVVua25vd24gY2hhaW4AA3B1YgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAMFFktTX1NFUEFSQVRFX1BVQkxJQ19LRVkBIKsXV48VZ+NZVEGw1nLrZpvEo9NmXtWZhlDfmDcfsgkIASBPU+IaP1So1p1SThMdRidVvbNT8yx7yVRUsP9DwbQUKAMJAAACAQFUBQckbWF0Y2gwASBPU+IaP1So1p1SThMdRidVvbNT8yx7yVRUsP9DwbQUKAkAAgECDVVua25vd24gY2hhaW4ADEVNUFRZX1BST0Q1MAGQAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEUZJVkVNSU5VVEVTTUlMTElTAOCnEgAMUkVOQU1JTkdDT1NUAMCWsQIACk1BWE5BTUVMRU4AMgAVSW5mcmFVcGdyYWRlQ29zdFNVc2R0AICt4gQADEVYUE1BVEVSSUFMUwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACm3YLtqwcDCQAAAgEBVAUHJG1hdGNoMACqp4GzCQkAAgECDVVua25vd24gY2hhaW4AB0VYUFVTRFQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAgOWadwMJAAACAQFUBQckbWF0Y2gwAIDlmncJAAIBAg1Vbmtub3duIGNoYWluAAxTX0NPU1RfQUNSRVMAgPKLqAkABUZJVkVYCQC2AgEABQAHVFdFTlRZWAkAtgIBABQACFRXRU5UWTJYCQC2AgEJAGgCABQAFAAIVFdFTlRZM1gJALYCAQkAaAIJAGgCABQAFAAUAAhUV0VOVFk0WAkAtgIBCQBoAgkAaAIJAGgCABQAFAAUABQACFRXRU5UWTVYCQC2AgEJAGgCCQBoAgkAaAIJAGgCABQAFAAUABQAFAAPUFJFU0FMRU5VTUxBTkRTAPQDARJrZXlOZXh0RnJlZUxhbmROdW0AAgtuZXh0TGFuZE51bQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBG5hbWUJAKwCAgIEbGNuXwUEbmFtZQEQa2V5TGFuZFRvQXNzZXRJZAEHbGFuZE51bQkArAICAgNsYV8FB2xhbmROdW0BHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgICBWlsYW9fBQdhc3NldElkAgFfBQlvd25lckFkZHIBEWtleUxhbmROdW1Ub093bmVyAQdsYW5kTnVtCQCsAgICA2xvXwUHbGFuZE51bQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBBG5hbWUJAKwCAgIRZHVja0J5Q3VzdG9tTmFtZV8FBG5hbWUBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBBG5hbWUJAKwCAgIUYWNjb3VudEJ5Q3VzdG9tTmFtZV8FBG5hbWUBCWtleU9sZGllcwACCm9sZGllc0xpc3QAC2NsYWltTW9kZVdoAAAADWNsYWltTW9kZUR1Y2sAAQATY2xhaW1Nb2RlV2hUaGVuRHVjawACAAhmbEhlYWx0aAAAAAtmbFRpbWVzdGFtcAAFAAdmbEJvbnVzAAYAC2ZsUHJvZHNVc2VkAAcBB25mdE5hbWUCB2xhbmROdW0IbGFuZFNpemUJAKwCAgkArAICBQpMQU5EUFJFRklYBQdsYW5kTnVtBQhsYW5kU2l6ZQEIdG9Wb2x1bWUCBmFtb3VudAdwa2dTaXplBARwa2dzAwkAZwIFBmFtb3VudAAACQBpAgkAZQIJAGQCBQZhbW91bnQFB3BrZ1NpemUAAQUHcGtnU2l6ZQkBAS0BCQBpAgkAZQIJAGQCCQEBLQEFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQBoAgUEcGtncwUFTVVMVDgBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBXRvdGFsB3dlaWdodHMEA3N1bQkAZAIJAGQCCQBkAgkAZAIJAGQCCQCRAwIFB3dlaWdodHMAAAkAkQMCBQd3ZWlnaHRzAAEJAJEDAgUHd2VpZ2h0cwACCQCRAwIFB3dlaWdodHMAAwkAkQMCBQd3ZWlnaHRzAAQJAJEDAgUHd2VpZ2h0cwAFAwkAZwIAAAUDc3VtCQACAQIQWmVybyB3ZWlnaHRzIHN1bQQFbm9ybTYJAGsDBQV0b3RhbAUFTVVMVDYFA3N1bQoBCm5vcm1hbGl6ZXICA2FjYwRlbGVtCQDNCAIFA2FjYwkAawMFBGVsZW0FBW5vcm02BQVNVUxUNgoAAiRsBQd3ZWlnaHRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpub3JtYWxpemVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGARJnZXROZWVkZWRNYXRlcmlhbHMBBXRvdGFsBAVwcm9wcwkAtQkCCQEFdmFsdWUBCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACAV8DCQECIT0CCQCQAwEFBXByb3BzBQZOVU1SRVMJAAIBAhZXcm9uZyBwcm9wb3J0aW9ucyBkYXRhBAFyCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAACQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwABCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwACCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwADCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAECQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAFBQNuaWwJARNkaXN0cmlidXRlQnlXZWlnaHRzAgUFdG90YWwFAXIBEXN1YnRyYWN0TWF0ZXJpYWxzAwxzaG91bGRVc2VNYXQDaGFzCXRvdGFsTmVlZAQEbmVlZAkBEmdldE5lZWRlZE1hdGVyaWFscwEFCXRvdGFsTmVlZAoBCnN1YnRyYWN0b3ICA2FjYwNpZHgEBnJlc3VsdAkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNoYXMFA2lkeAkAkQMCBQRuZWVkBQNpZHgDCQBmAgAABQZyZXN1bHQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIYTm90IGVub3VnaCBtYXRlcmlhbCBpZHg9CQCkAwEFA2lkeAILLCB5b3UgaGF2ZSAJAJEDAgUDaGFzBQNpZHgCCywgYnV0IG5lZWQgCQCkAwEJAJEDAgUEbmVlZAUDaWR4CQDNCAIFA2FjYwkApAMBBQZyZXN1bHQDBQxzaG91bGRVc2VNYXQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCnN1YnRyYWN0b3ICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYFA2hhcwERc3VidHJhY3RFcXVpcG1lbnQCBW9sZEVxBXBVc2VkAwkAAAIFBXBVc2VkAgAJAJQKAgUFb2xkRXEHCgEHc3ViVXNlZAIDYWNjBmlkeEFtdAQFcGFydHMJALUJAgUGaWR4QW10AgEsAwkBAiE9AgkAkAMBBQVwYXJ0cwACCQACAQIoSW5jb3JyZWN0IGZvcm1hdCwgc2hvdWxkIGJlIGluZGV4LGFtb3VudAQDaWR4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAAMDCQBmAgAABQNpZHgGCQBnAgUDaWR4CQCQAwEFEHByb2R1Y3Rpb25NYXRyaXgJAAIBAhNVbmtub3duIHByb2R1Y3QgaWR4BANhbXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwABBAdlcVBhcnRzCQC1CQIIBQNhY2MCXzEJAKwCAgkAkQMCBQVwYXJ0cwAAAgE6AwkBAiE9AgkAkAMBBQdlcVBhcnRzAAIJAAIBCQCsAgIJAKwCAgIPWW91IGRvbid0IGhhdmUgCQCRAwIFCXByb2RUeXBlcwUDaWR4AgkgZXF1aXBwZWQEA3RtcAkAkQMCBQdlcVBhcnRzAAEEBm51bUxlbgMJAQdpc0RpZ2l0AQkArwICCQCwAgIFA3RtcAABAAEAAgABBARjdXJyCQENcGFyc2VJbnRWYWx1ZQEJAK8CAgUDdG1wBQZudW1MZW4EBHRhaWwJALACAgUDdG1wBQZudW1MZW4EBm5ld0FtdAMJAGcCBQRjdXJyBQNhbXQJAGUCBQRjdXJyBQNhbXQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgINWW91IGVxdWlwcGVkIAkApAMBBQRjdXJyAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUDaWR4AhMsIGJ1dCB0cmllZCB0byB1c2UgCQCkAwEFA2FtdAkAlAoCCQCsAgIJAKwCAgkArAICCQCsAgIJAJEDAgUHZXFQYXJ0cwAACQCRAwIFBXBhcnRzAAACAToJAKQDAQUGbmV3QW10BQR0YWlsAwgFA2FjYwJfMgYDAwkAZwIFA2lkeAAGCQBnAgAIBQNpZHgHCQAAAgUGbmV3QW10AAAHCgACJGwJALUJAgUFcFVzZWQCAV8KAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFBW9sZEVxBwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHc3ViVXNlZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgEOcHJvZFN0clRvQnl0ZXMBB3Byb2RTdHIEBXBMaXN0AwkAAAIFB3Byb2RTdHICAAUDbmlsCQC8CQIFB3Byb2RTdHICAV8KAQR0b0JWAgNhY2MGcmVjaXBlBAFqCQBpAgkAyAEBBQNhY2MACAQEY3VycgMJAGYCCQCQAwEFBXBMaXN0BQFqCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcExpc3QFAWoAAAkAywECBQNhY2MJAJoDAQUEY3VycgoAAiRsBRBwcm9kdWN0aW9uTWF0cml4CgACJHMJAJADAQUCJGwKAAUkYWNjMAEACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQR0b0JWAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIBDmJ5dGVzVG9Qcm9kU3RyAQJidgoBBmZyb21CVgIDYWNjBnJlY2lwZQQBagkAkAMBBQNhY2MEAWIJAMkBAgkAygECBQJidgkAaAIACAUBagAICQDNCAIFA2FjYwkApAMBCQCxCQEFAWIJALoJAgoAAiRsBRBwcm9kdWN0aW9uTWF0cml4CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQZmcm9tQlYCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDUwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgIBXwEVY2hlY2tTdGF0UmVxdWlyZW1lbnRzAglkdWNrU3RhdHMEcmVxcwoBBWNoZWNrAgNhY2MBagQEYnVmZgMJAGYCCQCQAwEFCWR1Y2tTdGF0cwkAZAIABwUBagkAkQMCBQlkdWNrU3RhdHMJAGQCAAcFAWoAAAMJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEcmVxcwUBagkAZAIJAJEDAgUJZHVja1N0YXRzBQFqBQRidWZmCQACAQkArAICAhtSZXF1aXJlbWVudCBub3Qgc2F0aXNmaWVkOiAJAJEDAgUMcmVxdWlyZW1lbnRzBQFqBgoAAiRsCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgUDbmlsCgACJHMJAJADAQUCJGwKAAUkYWNjMAcKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWNoZWNrAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA3CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcBCnBsYWNlUHJvZEIGBmlkeENudAVwTGlzdAppc1Bvc2l0aXZlCWR1Y2tTdGF0cwhvY2N1cGllZARmcmVlBAVwYXJ0cwkAtQkCBQZpZHhDbnQCAToDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAihJbmNvcnJlY3QgZm9ybWF0LCBzaG91bGQgYmUgaW5kZXg6YW1vdW50AwMJAQEhAQUKaXNQb3NpdGl2ZQkBAiE9AgkAsQIBCQCRAwIFBXBhcnRzAAAAAgcJAAIBAitQcm9kdWN0IGlkeCBzaG91bGQgYmUgMiBkaWdpdHMsIHplcm8gcGFkZGVkBApwcm9kdWN0SWR4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAAQFY291bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwABAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgUQZm9ydEFsbG93ZWRQcm9kcwUKcHJvZHVjdElkeAkAAgEJAKwCAgkArAICAglQcm9kdWN0ICcJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AiEnIGNhbm5vdCBiZSB1c2VkIGZvciBsYW5kIGRlZmVuc2UDCQBmAgAABQVjb3VudAkAAgECF0NvdW50IGNhbid0IGJlIG5lZ2F0aXZlAwkAZgIFBWNvdW50BQ1NQVhQUk9ESU5TTE9UCQACAQkArAICCQCsAgIJAKwCAgIUQ2FuJ3QgcHV0IG1vcmUgdGhhbiAJAKQDAQUNTUFYUFJPRElOU0xPVAIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgDCQAAAgUFY291bnQAAAkAlQoDBQVwTGlzdAUIb2NjdXBpZWQFBGZyZWUEBGhlYWQJAMkBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgEBGN1cnIJALEJAQkAyQECCQDKAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4AAgEBHRhaWwJAMoBAgUFcExpc3QJAGgCAAgJAGQCBQpwcm9kdWN0SWR4AAEEBnJlY2lwZQkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgFCnByb2R1Y3RJZHgCAV8DAwkBASEBBQppc1Bvc2l0aXZlCQBmAgUFY291bnQFBGN1cnIHCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCVlvdSBoYXZlIAkApAMBBQRjdXJyAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAITLCBidXQgdHJpZWQgdG8gdXNlIAkApAMBBQVjb3VudAQGbmV3QW10AwMJAQEhAQUKaXNQb3NpdGl2ZQkBFWNoZWNrU3RhdFJlcXVpcmVtZW50cwIFCWR1Y2tTdGF0cwkAtQkCCQCRAwIFBnJlY2lwZQUQcklkeFJlcXVpcmVtZW50cwIBLAcJAGUCBQRjdXJyBQVjb3VudAkAZAIFBGN1cnIFBWNvdW50BAhkZWx0YVZvbAkAZQIJAQh0b1ZvbHVtZQIFBm5ld0FtdAUOUFJPRFVDVFBLR1NJWkUJAQh0b1ZvbHVtZQIFBGN1cnIFDlBST0RVQ1RQS0dTSVpFCQCVCgMJAMsBAgkAywECBQRoZWFkCQCaAwEFBm5ld0FtdAUEdGFpbAkAZAIFCG9jY3VwaWVkBQhkZWx0YVZvbAkAZQIFBGZyZWUFCGRlbHRhVm9sAQhhZGRQcm9kQgcGaWR4Q250BXBMaXN0CmlzUG9zaXRpdmUHc2VnbWVudAdtYWluQXV4BHNsb3QJZHVja1N0YXRzBAVwYXJ0cwkAtQkCBQZpZHhDbnQCAToDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAihJbmNvcnJlY3QgZm9ybWF0LCBzaG91bGQgYmUgaW5kZXg6YW1vdW50AwMJAQEhAQUKaXNQb3NpdGl2ZQkBAiE9AgkAsQIBCQCRAwIFBXBhcnRzAAAAAgcJAAIBAitQcm9kdWN0IGlkeCBzaG91bGQgYmUgMiBkaWdpdHMsIHplcm8gcGFkZGVkBApwcm9kdWN0SWR4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAAQFY291bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwABAwMJAGYCAAAFCnByb2R1Y3RJZHgGCQBnAgUKcHJvZHVjdElkeAkAkAMBBRBwcm9kdWN0aW9uTWF0cml4CQACAQITVW5rbm93biBwcm9kdWN0IGlkeAMJAGYCAAAFBWNvdW50CQACAQIXQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmUDCQBmAgUFY291bnQFDU1BWFBST0RJTlNMT1QJAAIBCQCsAgIJAKwCAgkArAICAhRDYW4ndCBwdXQgbW9yZSB0aGFuIAkApAMBBQ1NQVhQUk9ESU5TTE9UAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAMJAAACBQVjb3VudAAACQCUCgIFBXBMaXN0BwQEaGVhZAkAyQECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAQEY3VycgkAsQkBCQDJAQIJAMoBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgACAQEdGFpbAkAygECBQVwTGlzdAkAaAIACAkAZAIFCnByb2R1Y3RJZHgAAQQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAUKcHJvZHVjdElkeAIBXwMDCQEBIQEFCmlzUG9zaXRpdmUJAGYCBQVjb3VudAUEY3VycgcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJWW91IGhhdmUgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AhMsIGJ1dCB0cmllZCB0byB1c2UgCQCkAwEFBWNvdW50BAlpc0JpZ0l0ZW0DAwkBASEBBQppc1Bvc2l0aXZlCQEVY2hlY2tTdGF0UmVxdWlyZW1lbnRzAgUJZHVja1N0YXRzCQC1CQIJAJEDAgUGcmVjaXBlBRBySWR4UmVxdWlyZW1lbnRzAgEsBwQGY29tcGF0CQCRAwIFBnJlY2lwZQUJcklkeFNsb3RzAwkAAAIFBmNvbXBhdAIACQACAQIXSXRlbSBjYW5ub3QgYmUgZXF1aXBwZWQEAWMJAQ1wYXJzZUludFZhbHVlAQUGY29tcGF0BARjU2VnCQBpAgUBYwBkAwkBAiE9AgUHc2VnbWVudAUEY1NlZwkAAgECFFNlZ21lbnQgaW5jb21wYXRpYmxlBAhjTWFpbkF1eAkAaQIJAGoCBQFjAGQACgMJAQIhPQIFB21haW5BdXgFCGNNYWluQXV4CQACAQIRU2xvdCBpbmNvbXBhdGlibGUECWNOdW1TbG90cwkAagIFAWMACgMDCQECIT0CBQRzbG90AAAJAGYCBQljTnVtU2xvdHMAAQcJAAIBAh5CaWcgaXRlbXMgc2hvdWxkIG9jY3VweSBzbG90IDAJAGYCBQljTnVtU2xvdHMAAQcJAJQKAgkAywECCQDLAQIFBGhlYWQJAJoDAQkAZAIFBGN1cnIDBQppc1Bvc2l0aXZlBQVjb3VudAkBAS0BBQVjb3VudAUEdGFpbAUJaXNCaWdJdGVtAQtzbG90c0dyb3VwQgYBZwRicEluCmlzUG9zaXRpdmUHc2VnbWVudAdtYWluQXV4BXN0YXRzAwkBAiE9AgUBZwIABAVzbG90cwkAtQkCBQFnAgEsAwkAZgIJAJADAQUFc2xvdHMFCE1BWFNMT1RTCQACAQISV3Jvbmcgc2xvdHMgZm9ybWF0BAJzMAkAkQMCBQVzbG90cwAABAJzMQMJAGYCCQCQAwEFBXNsb3RzAAEJAJEDAgUFc2xvdHMAAQIAAwMJAAACBQJzMAIACQAAAgUCczECAAcFBGJwSW4EBXRtcFMwAwkBAiE9AgUCczACAAkBCGFkZFByb2RCBwUCczAFBGJwSW4FCmlzUG9zaXRpdmUFB3NlZ21lbnQFB21haW5BdXgAAAUFc3RhdHMJAJQKAgUEYnBJbgcDCQECIT0CBQJzMQIAAwgFBXRtcFMwAl8yCQACAQIeQmlnIGl0ZW0gYWxyZWFkeSBvY2N1cGllcyBzbG90CAkBCGFkZFByb2RCBwUCczEIBQV0bXBTMAJfMQUKaXNQb3NpdGl2ZQUHc2VnbWVudAUHbWFpbkF1eAABBQVzdGF0cwJfMQgFBXRtcFMwAl8xBQRicEluAQZkcmVzc0IEB3NlZ0xpc3QGcEJ5dGVzCmlzUG9zaXRpdmUFc3RhdHMKAQdzZWdtZW50AgNhY2MDc2VnBAFqCAUDYWNjAl8xBAdtYWluQXV4CQC1CQIFA3NlZwIBOwMJAQIhPQIJAJADAQUHbWFpbkF1eAUKTlVNTUFJTkFVWAkAAgECFFdyb25nIHNlZ21lbnQgZm9ybWF0BAFtCQCRAwIFB21haW5BdXgAAAQBYQkAkQMCBQdtYWluQXV4AAEDAwkAAAIFAW0CAAkAAAIFAWECAAcJAJQKAgkAZAIFAWoAAQgFA2FjYwJfMgQEdG1wTQkBC3Nsb3RzR3JvdXBCBgUBbQgFA2FjYwJfMgUKaXNQb3NpdGl2ZQUBagAABQVzdGF0cwkAlAoCCQBkAgUBagABCQELc2xvdHNHcm91cEIGBQFhBQR0bXBNBQppc1Bvc2l0aXZlBQFqAAEFBXN0YXRzCAoAAiRsBQdzZWdMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCAAAFBnBCeXRlcwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHc2VnbWVudAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgJfMgEFZm9ydEIGB3NlZ0xpc3QGcEJ5dGVzCG9jY3VwaWVkBGZyZWUKaXNQb3NpdGl2ZQlkdWNrU3RhdHMDCQBmAgADCQCQAwEFB3NlZ0xpc3QJAAIBAjFBdCBsZWFzdCBkdWNrLCBtaW5lcyBhbmQgdHJhcHMgcGFydHMgYXJlIHJlcXVpcmVkCgEHc2VnbWVudAIDYWNjA3NlZwQBaggFA2FjYwJfMQMJAAACBQFqAAAJAJYKBAkAZAIFAWoAAQgFA2FjYwJfMggFA2FjYwJfMwgFA2FjYwJfNAQBcAkBCnBsYWNlUHJvZEIGBQNzZWcIBQNhY2MCXzIFCmlzUG9zaXRpdmUFCWR1Y2tTdGF0cwgFA2FjYwJfMwgFA2FjYwJfNAkAlgoECQBkAgUBagABCAUBcAJfMQgFAXACXzIIBQFwAl8zBAF0CgACJGwFB3NlZ0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQAAAUGcEJ5dGVzBQhvY2N1cGllZAUEZnJlZQoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHc2VnbWVudAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgkAlQoDCAUBdAJfMggFAXQCXzMIBQF0Al80ARdjYW5XZWFyQ3VycmVudEVxdWlwbWVudAELZHVja0Fzc2V0SWQEBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAZjdXJyRXEJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywCAV8ECXRlbXBQcm9kQgkBBmRyZXNzQgQFBmN1cnJFcQUMRU1QVFlfUFJPRDUwBgUDbmlsBAhzZWdCcEF1eAkAkQMCCQC1CQIJAJEDAgUGY3VyckVxBQtzZWdCYWNrcGFjawIBOwABBApidWZmRWZmZWN0AwkAAAIFCHNlZ0JwQXV4AgAAAAQEYXV4MAkAkQMCCQC1CQIFCHNlZ0JwQXV4AgEsAAADCQAAAgUEYXV4MAIAAAAEBmlkeENudAkAtQkCBQRhdXgwAgE6BANpZHgJAJEDAgUGaWR4Q250AAAEA2NudAkAkQMCBQZpZHhDbnQAAQMDAwMDCQAAAgUDaWR4AgIwNgYJAAACBQNpZHgCAjA3BgkAAAIFA2lkeAICMDgJAQIhPQIFA2NudAIABwkAZgIJAQ1wYXJzZUludFZhbHVlAQUDY250AAAHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgJAQ1wYXJzZUludFZhbHVlAQUDaWR4AgFfBQpySWR4RWZmZWN0AAAEBXN0YXRzCQEMZ2V0RHVja1N0YXRzBAUEdGhpcwULZHVja0Fzc2V0SWQFCmJ1ZmZFZmZlY3QGBAhuZXdQcm9kQgkBBmRyZXNzQgQFBmN1cnJFcQUJdGVtcFByb2RCBwUFc3RhdHMJAAACBQhuZXdQcm9kQgUIbmV3UHJvZEIBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECHByb3BMaXN0DXRlcnJhaW5Db3VudHMNbGFuZFNpemVJbmRleARzaWduAwkB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aG91c2VPY2N1cGllZFZvbAEFAndoBAZ3aExvZnQDCQBmAgAFCQCQAwEFAndoCQC5CQIJAMwIAgIBMAkAzAgCCQCkAwEFCndoT2NjdXBpZWQJAMwIAgkApAMBCQBlAgUHd2hUb3RhbAUKd2hPY2N1cGllZAkAzAgCCQCkAwEFB3doVG90YWwFA25pbAIBXwQEbG9mdAkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8ECHdoTG9ja2VkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUJdm9sTG9ja2VkBANvY2MDCQBmAgkAkAMBBQRsb2Z0AAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAUKd2hPY2N1cGllZAkAuQkCCQDMCAIJAKQDAQUId2hMb2NrZWQJAMwIAgkApAMBBQNvY2MJAMwIAgkApAMBCQBlAgkAZQIFB3doVG90YWwFCHdoTG9ja2VkBQNvY2MJAMwIAgkApAMBBQd3aFRvdGFsBQNuaWwCAV8JAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhSZXMCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhSZXMCCzBfMF8wXzBfMF8wCQDMCAIDCQAAAgkAkAMBCQC1CQIJAJEDAgUCd2gFCHdoSWR4TWF0AgFfBQZOVU1SRVMJAJEDAgUCd2gFCHdoSWR4TWF0AgswXzBfMF8wXzBfMAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgUGd2hMb2Z0BQNuaWwBFWdldFdhcmVob3VzZVNwYWNlTGVmdAEJY3VycmVudFdoBAtvY2N1cGllZFZvbAkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUJY3VycmVudFdoBA9jdXJyV2hMb2NrZWRWb2wJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8FCXZvbExvY2tlZAkAZQIJAGUCCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMFC29jY3VwaWVkVm9sBQ9jdXJyV2hMb2NrZWRWb2wBCW1vdmVTdHVmZgMKY2FyZ29QYXJ0cwljdXJyZW50V2gLY3VycmVudFBhY2sDCQECIT0CCQCQAwEFCmNhcmdvUGFydHMAAwkAAgECNGNhcmdvTGlzdFN0ciBzaG91bGQgY29udGFpbiBleGFjdGx5IDIgJzonIHNlcGFyYXRvcnMECHJlc1BhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwAAAgFfBAhtYXRQYXJ0cwkAtQkCCQCRAwIFCmNhcmdvUGFydHMAAQIBXwQJcHJvZFBhcnRzAwkAAAIJAJEDAgUKY2FyZ29QYXJ0cwACAgAFA25pbAkAvAkCCQCRAwIFCmNhcmdvUGFydHMAAgIBXwMJAQIhPQIJAJADAQUIcmVzUGFydHMFBk5VTVJFUwkAAgECIEFsbCA2IHJlc291cmNlcyBzaG91bGQgYmUgcGFzc2VkAwkBAiE9AgkAkAMBBQhtYXRQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgbWF0ZXJpYWxzIHNob3VsZCBiZSBwYXNzZWQEC3doU3BhY2VMZWZ0CQEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQUJY3VycmVudFdoBAljdXJyV2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBAljdXJyV2hNYXQJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0AgFfBApjdXJyV2hQcm9kAwkAAAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAV8EDmN1cnJlbnRQYWNrUmVzCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBA5jdXJyZW50UGFja01hdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQPY3VycmVudFBhY2tQcm9kAwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfCgEDbXZSAgNhY2MEaXRlbQQBaQgFA2FjYwJfMQQCYW0JAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQDd2hy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MV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgoBA212UAIDYWNjBGl0ZW0EAWkIBQNhY2MCXzEEAmFtCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0EA3docAMJAGYCCQCQAwEFCmN1cnJXaFByb2QFAWkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpjdXJyV2hQcm9kBQFpAAAEA2JwcAMJAGYCCQCQAwEFD2N1cnJlbnRQYWNrUHJvZAUBaQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFD2N1cnJlbnRQYWNrUHJvZAUBaQAAAwkAAAIFAmFtAAAJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEFA3docAkAzQgCCAUDYWNjAl8zCQCkAwEFA2JwcAgFA2FjYwJfNAMJAGYCBQJhbQAAAwkAZgIFAmFtBQNicHAJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAFBGl0ZW0CGSBmcm9tIGJhY2twYWNrLCBidXQgb25seSAJAKQDAQUDYnBwAgogYXZhaWxhYmxlBAhkZWx0YVZvbAkAZQIJAQh0b1ZvbHVtZQIJAGQCBQN3aHAFAmFtBQ5QUk9EVUNUUEtHU0laRQkBCHRvVm9sdW1lAgUDd2hwBQ5QUk9EVUNUUEtHU0laRQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3docAUCYW0JAM0IAggFA2FjYwJfMwkApAMBCQBlAgUDYnBwBQJhbQkAZAIIBQNhY2MCXzQFCGRlbHRhVm9sAwkAZgIJAQEtAQUCYW0FA3docAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAkApAMBCQEBLQEFAmFtAhogZnJvbSB3YXJlaG91c2UsIGJ1dCBvbmx5IAkApAMBBQN3aHACCiBhdmFpbGFibGUECGRlbHRhVm9sCQBlAgkBCHRvVm9sdW1lAgkAZAIFA3docAUCYW0FDlBST0RVQ1RQS0dTSVpFCQEIdG9Wb2x1bWUCBQN3aHAFDlBST0RVQ1RQS0dTSVpFCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hwBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicHAFAmFtCQBkAggFA2FjYwJfNAUIZGVsdGFWb2wEAXADCQECIT0CCQCQAwEFCXByb2RQYXJ0cwAACgACJGwFCXByb2RQYXJ0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAAABQNuaWwFA25pbAgFAW0CXzQKAQUkZjJfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBA212UAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMl8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjJfMgIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyCQCWCgQAAAUKY3VycldoUHJvZAUPY3VycmVudFBhY2tQcm9kCAUBbQJfNAQIdm9sU2FsZG8IBQFwAl80AwkAZgIFCHZvbFNhbGRvBQt3aFNwYWNlTGVmdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIVQXR0ZW1wdCB0byBwdXQgdG90YWwgCQCkAwEFCHZvbFNhbGRvAhEgc3R1ZmYsIGJ1dCBvbmx5IAkApAMBBQt3aFNwYWNlTGVmdAIVIHdhcmVob3VzZSBzcGFjZSBsZWZ0CQCZCgcJALkJAggFAXICXzICAV8JALkJAggFAW0CXzICAV8JALoJAggFAXACXzICAV8JALkJAggFAXICXzMCAV8JALkJAggFAW0CXzMCAV8JALoJAggFAXACXzMCAV8FCHZvbFNhbGRvARJleHBlZGl0aW9uSW50ZXJuYWwCBmNhbGxlcgR0eElkBAh1c2VyQWRkcgkApQgBBQZjYWxsZXIEBmJpZ051bQkBA2FicwEJAJ4DAQUEdHhJZAQHZnJlZU51bQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFD1BSRVNBTEVOVU1MQU5EUwABBAdsYW5kTnVtCQCkAwEFB2ZyZWVOdW0EDGNvbnRpbmVudElkeAkAoAMBCQC7AgIFBmJpZ051bQUFRklWRVgECHRlcnJhaW5zCQELZ2VuVGVycmFpbnMCBQZiaWdOdW0FDGNvbnRpbmVudElkeAQJY29udGluZW50CQCRAwIFCmNvbnRpbmVudHMFDGNvbnRpbmVudElkeAQFaXNzdWUJAMIIBQkBB25mdE5hbWUCBQdsYW5kTnVtAgFTCQC5CQIJAMwIAgUHbGFuZE51bQkAzAgCAgFTCQDMCAIFCHRlcnJhaW5zCQDMCAIFCWNvbnRpbmVudAUDbmlsAgFfAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUEAmlkCQDYBAEFB2Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQdmcmVlTnVtAAEJAMwIAgUFaXNzdWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleUxhbmRUb0Fzc2V0SWQBBQdsYW5kTnVtBQJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUCaWQFCHVzZXJBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0FCHVzZXJBZGRyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFAmlkAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQJpZAUIdXNlckFkZHIAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIAAQUHYXNzZXRJZAUDbmlsCQCUCgIFAmlkBQljb250aW5lbnQBDGZsaWdodENvbW1vbgMIdXNlckFkZHIHbWVzc2FnZQNzaWcDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gEBXBhcnRzCQC8CQIJALAJAQUHbWVzc2FnZQIBOwQJZmxpZ2h0TG9nCQC8CQIJAJEDAgUFcGFydHMAAAIBfAQCaHAJALUJAgkAkQMCBQlmbGlnaHRMb2cFCGZsSGVhbHRoAgFfBAVjdXJIUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmhwAAAEBW5ld0hQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAQQLbmV3TG9jVHhWZXIJALUJAgkAkQMCBQVwYXJ0cwABAgE6BAtuZXdMb2NhdGlvbgkAkQMCBQtuZXdMb2NUeFZlcgAABAR0aW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJZmxpZ2h0TG9nBQtmbFRpbWVzdGFtcAMDCQBmAgUEdGltZQkAZAIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBRFGSVZFTUlOVVRFU01JTExJUwYJAGYCCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBQR0aW1lCQACAQkArAICCQCsAgIJAKwCAgIcc2lnbmF0dXJlIG91dGRhdGVkOiBsb2dUaW1lPQkApAMBBQR0aW1lAgksIGJjVGltZT0JAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAECXR4RnJvbU1zZwkAkQMCBQtuZXdMb2NUeFZlcgABBAZsYXN0VHgJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleUxhc3RUeElkQnlVc2VyAQUIdXNlckFkZHICAAMJAQIhPQIFBmxhc3RUeAUJdHhGcm9tTXNnCQACAQkArAICCQCsAgIJAKwCAgIeVHggaWRzIGRvbid0IG1hdGNoISBJbiBzdGF0ZTogBQZsYXN0VHgCCiwgaW4gbXNnOiAFCXR4RnJvbU1zZwQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAEDG9sZEZyb21TdGF0ZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkBAiE9AgUMb2xkRnJvbVN0YXRlBQVjdXJIUAkAAgEJAKwCAgkArAICCQCsAgICCm9sZEhlYWx0aD0JAKQDAQUMb2xkRnJvbVN0YXRlAi8gZnJvbSBzdGF0ZSBkb2VzIG5vdCBtYXRjaCBvbmUgZnJvbSBmbGlnaHQgbG9nPQkApAMBBQVjdXJIUAMJAGcCAAAFBWN1ckhQCQACAQIeWW91IGNhbid0IGZseSB3aXRoIHplcm8gaGVhbHRoAwkBASEBCQEXY2FuV2VhckN1cnJlbnRFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFkVxdWlwbWVudCBpbmNvbXBhdGlibGUEBWJvbnVzAwkAZgIJAJADAQUJZmxpZ2h0TG9nBQdmbEJvbnVzCQCRAwIFCWZsaWdodExvZwUHZmxCb251cwIABAhwcm9kVXNlZAMJAGYCCQCQAwEFCWZsaWdodExvZwULZmxQcm9kc1VzZWQJAJEDAgUJZmxpZ2h0TG9nBQtmbFByb2RzVXNlZAIABApzZW50QW1vdW50AwMJAGYCBQVuZXdIUAAACQAAAgUFYm9udXMCASQHCQEFYXNJbnQBCQD8BwQFDHJlc3RDb250cmFjdAINc2VuZFVzZHRQcml6ZQkAzAgCBQh1c2VyQWRkcgUDbmlsBQNuaWwAAAkAlwoFBQVuZXdIUAULZHVja0Fzc2V0SWQFCnNlbnRBbW91bnQFC25ld0xvY2F0aW9uBQhwcm9kVXNlZAEMYXBwbHlCb251c2VzAgtsYW5kQXNzZXRJZAZwaWVjZXMECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAlhcnRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQAAAQEYWRkNgkAaQIFCmluZnJhTGV2ZWwABgQEYWRkNwkAaQIFCmluZnJhTGV2ZWwABwkAZAIJAGQCBQ9EQUlMWVJFU0JZUElFQ0UJAGsDBQ9EQUlMWVJFU0JZUElFQ0UJAGQCCQBkAgUKaW5mcmFMZXZlbAUEYWRkNgkAaAIAAgUEYWRkNwAFCQBrAwUPREFJTFlSRVNCWVBJRUNFBQlhcnRQaWVjZXMJAGgCBQZwaWVjZXMABQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBGFkZHIJY2xhaW1Nb2RlDWxhbmRBc3NldElkSW4EDSR0MDMzNzM4MzQyNzcDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAlAoCBQ1sYW5kQXNzZXRJZEluCQELdmFsdWVPckVsc2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMCQCUCgIJAJEDAgUDbG9jBQhsb2NJZHhJZAULZHVja0Fzc2V0SWQEC2xhbmRBc3NldElkCAUNJHQwMzM3MzgzNDI3NwJfMQQGZHVja0lkCAUNJHQwMzM3MzgzNDI3NwJfMgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUHdGltZUtleQkArAICCQCsAgICBUxhbmQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwkAlgoEBQZkdWNrSWQFC2xhbmRBc3NldElkBQFkBQlzYXZlZFRpbWUBEGNsYWltUmVzSW50ZXJuYWwEBGFkZHIGYW1vdW50CWNsYWltTW9kZQ1sYW5kQXNzZXRJZEluAwkAZgIAAAUGYW1vdW50CQACAQIPTmVnYXRpdmUgYW1vdW50BAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQljbGFpbU1vZGUFDWxhbmRBc3NldElkSW4ECGxhbmRTaXplCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIIBQFjAl8zBQtyZWNUZXJyYWlucwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAIBQFjAl80AwkAZgIAAAUJZGVsdGFUaW1lCQACAQkArAICCQCsAgIJAKwCAgImU2F2ZWQgdGltZXN0YW1wIGlzIGluIGZ1dHVyZSwgc2F2ZWQgPSAJAKQDAQgFAWMCXzQCDCwgY3VycmVudCA9IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUEFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQxhcHBseUJvbnVzZXMCCAUBYwJfMgUGcGllY2VzBAhhdmFpbFJlcwkAawMFCWRlbHRhVGltZQkAaAIFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UFBnBpZWNlcwUJREFZTUlMTElTAwkAZgIFBmFtb3VudAUIYXZhaWxSZXMJAAIBCQCsAgIJAKwCAgkArAICAiJOb3QgZW5vdWdoIHJlc291cmNlcywgYXZhaWxhYmxlID0gCQCkAwEFCGF2YWlsUmVzAg4sIHJlcXVlc3RlZCA9IAkApAMBBQZhbW91bnQEDG5ld0RlbHRhVGltZQkAawMJAGUCBQhhdmFpbFJlcwUGYW1vdW50BQlEQVlNSUxMSVMJAGgCBRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBQZwaWVjZXMEDG5ld1RpbWVzdGFtcAkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQxuZXdEZWx0YVRpbWUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUECnJlc1RvQ2xhaW0JAQl2aXJ0Q2xhaW0EBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBCAUBYwJfMgQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEIBQFjAl8yAAAECWN1cnJlbnRXaAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQLd2hTcGFjZUxlZnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlAwMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQBmAgUGYW1vdW50BQt3aFNwYWNlTGVmdAcJAAIBCQCsAgIJAKwCAgIFT25seSAJAKQDAQULd2hTcGFjZUxlZnQCGCBzcGFjZSBsZWZ0IGluIHdhcmVob3VzZQQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFjAl8xBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEDmN1cnJlbnRQYWNrUmVzCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBAxjdXJyZW50V2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBA0kdDAzNjY1MTM3NTIyAwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAJYKBAkBBmFkZFJlcwUFDGN1cnJlbnRXaFJlcwUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCAUKcmVzVG9DbGFpbQJfMgkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCAUKcmVzVG9DbGFpbQJfMgMJAAACBQljbGFpbU1vZGUFDWNsYWltTW9kZUR1Y2sJAJYKBAkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzCQEGYWRkUmVzBQUOY3VycmVudFBhY2tSZXMFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBAVkaXN0cgkBDWRpc3RyaWJ1dGVSZXMEBQxjdXJyZW50V2hSZXMFDmN1cnJlbnRQYWNrUmVzBQpyZXNUb0NsYWltBQt3aFNwYWNlTGVmdAQEd2hBbQkAlwMBCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCQDMCAIIBQpyZXNUb0NsYWltAl8yBQNuaWwJAJYKBAgFBWRpc3RyAl8xCAUFZGlzdHICXzIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQFBHdoQW0JAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQUEd2hBbQQFd2hSZXMIBQ0kdDAzNjY1MTM3NTIyAl8xBAVicFJlcwgFDSR0MDM2NjUxMzc1MjICXzIEBWxvZnRPCAUNJHQwMzY2NTEzNzUyMgJfMwQFbG9mdEYIBQ0kdDAzNjY1MTM3NTIyAl80CQCXCgUJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQgFAWMCXzIFDG5ld1RpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYCAUBYwJfMgUEYWRkcgUMbmV3VGltZXN0YW1wBQNuaWwFBWJwS2V5CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgUFYnBSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwFBXdoS2V5CQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCBQV3aFJlcwkAzAgCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQJAMwIAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAQhjbGFpbUFsbAQEYWRkcgtsYW5kQXNzZXRJZAZwaWVjZXMJY2xhaW1Nb2RlBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJAQV2YWx1ZQEJAJ8IAQUHdGltZUtleQQIYXZhaWxSZXMJAGgCCQBrAwkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQlzYXZlZFRpbWUJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBQlEQVlNSUxMSVMFBnBpZWNlcwkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQhhdmFpbFJlcwUJY2xhaW1Nb2RlBQtsYW5kQXNzZXRJZAENdXBJbmZyYUNvbW1vbgQMc2hvdWxkVXNlTWF0BmNhbGxlcg1wYXltZW50QW1vdW50C2xhbmRBc3NldElkBARhZGRyCQClCAEFBmNhbGxlcgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUTY2xhaW1Nb2RlV2hUaGVuRHVjawULbGFuZEFzc2V0SWQEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBAhpbmZyYUtleQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBCAUBYwJfMgQIY3VyTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUIaW5mcmFLZXkAAAMDCQEBIQEFGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQkAZwIFCGN1ckxldmVsAAMHCQACAQImQ3VycmVudGx5IG1heCBpbmZyYXN0cnVjdHVyZSBsZXZlbCA9IDMECG1heEluZnJhCQBkAgkAaQIJAQRzcXJ0BAUGcGllY2VzAAAAAAUERE9XTgAFAAIECG5ld0xldmVsCQBkAgUIY3VyTGV2ZWwAAQMDBRhLU19BTExPV19CSUdfSU5GUkFfTUVSR0UJAGYCBQhuZXdMZXZlbAUIbWF4SW5mcmEHCQACAQkArAICAiVDdXJyZW50bHkgbWF4IGluZnJhc3RydWN0dXJlIGxldmVsID0gCQCkAwEFCG1heEluZnJhBARjb3N0CQBrAwUVSW5mcmFVcGdyYWRlQ29zdFNVc2R0CQBoAgUGcGllY2VzBQhuZXdMZXZlbAUFU1NJWkUDAwkBASEBBQxzaG91bGRVc2VNYXQJAQIhPQIFDXBheW1lbnRBbW91bnQFBGNvc3QHCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUEY29zdAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFjAl8xBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW1MaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBAdtYXRVc2VkCQBrAwURSW5mcmFVcGdyYWRlQ29zdFMJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMFDHNob3VsZFVzZU1hdAUFbUxpc3QFB21hdFVzZWQCAV8EC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyCAUBYwJfMgUGcGllY2VzBRNjbGFpbU1vZGVXaFRoZW5EdWNrBAZ3aERhdGEIBQtjbGFpbVJlc3VsdAJfNQQGb2xkVm9sCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFBndoRGF0YQULd2hJZHhMZXZlbHMECm5ld1ZvbERhdGEJALkJAgkAzAgCCQCRAwIJALUJAgkAkQMCBQZ3aERhdGEFC3doSWR4TGV2ZWxzAgFfAAAJAMwIAgkApAMBBQhuZXdMZXZlbAUDbmlsAgFfBAZuZXdWb2wJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEFCm5ld1ZvbERhdGEEBGxvZnQJALUJAgkAkQMCBQZ3aERhdGEFCXdoSWR4TE9GVAIBXwQKbmV3TG9mdFN0cgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQJAMwIAgkApAMBCQBlAgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBQZuZXdWb2wFBm9sZFZvbAkAzAgCCQCkAwEFBm5ld1ZvbAUDbmlsAgFfCQCVCgMJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUIaW5mcmFLZXkFCG5ld0xldmVsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAggFAWMCXzIFBGFkZHIFCG5ld0xldmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIIBQtjbGFpbVJlc3VsdAJfMwUIYnBJZHhSZXMJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfNAkAuQkCCQDMCAIFCm5ld1ZvbERhdGEJAMwIAgkAkQMCBQZ3aERhdGEFCHdoSWR4UmVzCQDMCAIJAJEDAgUGd2hEYXRhBQh3aElkeE1hdAkAzAgCCQCRAwIFBndoRGF0YQUJd2hJZHhQcm9kCQDMCAIFCm5ld0xvZnRTdHIFA25pbAIBOgUDbmlsCAULY2xhaW1SZXN1bHQCXzEFCG5ld0xldmVsBQdtYXRVc2VkARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAILZHVja0Fzc2V0SWQHZGVsdGFYUAQGbHZsS2V5CQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQEBXhwS2V5CQEJa2V5RHVja1hQAQULZHVja0Fzc2V0SWQEAnhwCQELdmFsdWVPckVsc2UCCQCfCAEFBXhwS2V5AAAEBW5ld1hQCQBkAgUCeHAFB2RlbHRhWFAECWx2bFBvaW50cwkBB2xldmVsVXACCQELdmFsdWVPckVsc2UCCQCfCAEFBmx2bEtleQAABQVuZXdYUAQJa2V5UG9pbnRzCQERa2V5RHVja0ZyZWVQb2ludHMBBQtkdWNrQXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZsdmxLZXkJAJEDAgUJbHZsUG9pbnRzAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFBXhwS2V5BQVuZXdYUAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5UG9pbnRzCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlQb2ludHMAAAkAkQMCBQlsdmxQb2ludHMAAQUDbmlsBQVuZXdYUAEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIEYWRkcgdkZWx0YVhQBAZsdmxLZXkJAQxrZXlVc2VyTGV2ZWwBBQRhZGRyBAV4cEtleQkBCWtleVVzZXJYUAEFBGFkZHIEAnhwCQELdmFsdWVPckVsc2UCCQCfCAEFBXhwS2V5AAAEBW5ld1hQCQBkAgUCeHAFB2RlbHRhWFAECWx2bFBvaW50cwkBB2xldmVsVXACCQELdmFsdWVPckVsc2UCCQCfCAEFBmx2bEtleQAABQVuZXdYUAQJa2V5UG9pbnRzCQERa2V5VXNlckZyZWVQb2ludHMBBQRhZGRyCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFBmx2bEtleQkAkQMCBQlsdmxQb2ludHMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUFeHBLZXkFBW5ld1hQCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlQb2ludHMJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleVBvaW50cwAACQCRAwIFCWx2bFBvaW50cwABBQNuaWwFBW5ld1hQARJhY3RpdmF0ZU9uYm9hcmRBcnQBBGFkZHIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQIcmVmQnlLZXkJAQ9rZXlBZGRyZXNzUmVmQnkBBQRhZGRyBAVyZWZCeQkAoggBBQhyZWZCeUtleQMJAQEhAQkBCWlzRGVmaW5lZAEFBXJlZkJ5CQACAQIpWW91IGFyZSBub3QgZWxpZ2libGUgZm9yIE9OQk9BUkQgYXJ0aWZhY3QEBmFydEtleQkBHGtleU9uYm9hcmRBcnREdWNrQWN0aXZhdGVkQnkBBQRhZGRyBAdhcnREdWNrCQCiCAEFBmFydEtleQMJAQlpc0RlZmluZWQBBQdhcnREdWNrCQACAQkArAICAi9Zb3UgYWxyZWFkeSB1c2VkIHlvdXIgT05CT0FSRCBhcnRpZmFjdCBvbiBkdWNrIAkBBXZhbHVlAQUHYXJ0RHVjawQQZHVja0FjdGl2YXRvcktleQkBHGtleU9uYm9hcmRBcnRBY3RpdmF0ZWRPbkR1Y2sBBQtkdWNrQXNzZXRJZAQNZHVja0FjdGl2YXRvcgkAoggBBRBkdWNrQWN0aXZhdG9yS2V5AwkBCWlzRGVmaW5lZAEFDWR1Y2tBY3RpdmF0b3IJAAIBCQCsAgIJAKwCAgkArAICAglUaGUgZHVjayAFC2R1Y2tBc3NldElkAjQgYWxyZWFkeSBnb3QgcG9pbnRzIGZyb20gT05CT0FSRCBhcnRpZmFjdCBmcm9tIHVzZXIgCQEFdmFsdWUBBQ1kdWNrQWN0aXZhdG9yCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGYXJ0S2V5BQtkdWNrQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCBRBkdWNrQWN0aXZhdG9yS2V5BQRhZGRyBQNuaWwICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUJeHBPbmJvYXJkAl8xARJhY3RpdmF0ZVByZXNhbGVBcnQCBGFkZHINbGFuZEFzc2V0SWRJbgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUTY2xhaW1Nb2RlV2hUaGVuRHVjawUNbGFuZEFzc2V0SWRJbgQLbGFuZEFzc2V0SWQIBQFjAl8yBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQNYWN0aXZhdGlvbktleQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQDCQBmAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ1hY3RpdmF0aW9uS2V5AAAAAAkAAgECJVByZXNhbGUgYXJ0aWZhY3QgaXMgYWxyZWFkeSBhY3RpdmF0ZWQDCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIIBQFjAl8zBQpyZWNMYW5kTnVtBQ9QUkVTQUxFTlVNTEFORFMJAAIBCQCsAgIJAKwCAgkArAICBQpMQU5EUFJFRklYAgEgBQtsYW5kQXNzZXRJZAIlIGlzIG5vdCBlbGlnaWJsZSBmb3IgcHJlc2FsZSBhcnRpZmFjdAQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIFC2xhbmRBc3NldElkBQZwaWVjZXMFE2NsYWltTW9kZVdoVGhlbkR1Y2sJAM0IAgkAzQgCCQDNCAIIBQtjbGFpbVJlc3VsdAJfMQkBDEludGVnZXJFbnRyeQIFDWFjdGl2YXRpb25LZXkFBnBpZWNlcwkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al8yCQC5CQIIBQtjbGFpbVJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al80CQC5CQIIBQtjbGFpbVJlc3VsdAJfNQIBOgEPY2hlY2tUb3VybmFtZW50AQtkdWNrQXNzZXRJZAQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUSdG91cm5hbWVudENvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBVAcDAwMJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FD2xvY0lkeENvbnRpbmVudAUGbGFzdElkCQAAAgkAkQMCBQdkeW5hbWljBQ50RHluYW1pY1N0YXR1cwIKSU5QUk9HUkVTUwcJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQNub3cHCQACAQIqWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIHRoZSB0b3VybmFtZW50CQEJYXNCb29sZWFuAQkA/AcEBQR0aGlzAhZleGl0VG91cm5hbWVudEludGVybmFsCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAENY2hlY2tEZWxpdmVyeQELZHVja0Fzc2V0SWQDCQEBIQEFEUtTX0FMTE9XX0RFTElWRVJZBwQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAMJAQIhPQIJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUCAUQHBAlzdGFydFRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUPbG9jSWR4Q29udGluZW50BAhkaXN0YW5jZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQhsb2NJZHhJZAMDCQBmAgUDbm93CQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMJAGYCAAMFCGRpc3RhbmNlBwkAAgECIFlvdXIgZHVjayBpcyBvbiBkZWxpdmVyeSBtaXNzaW9uCQEJYXNCb29sZWFuAQkA/AcEBQR0aGlzAhRleGl0RGVsaXZlcnlJbnRlcm5hbAkAzAgCBQtkdWNrQXNzZXRJZAUDbmlsBQNuaWwBEmV4aXREZWxpdmVyeUNvbW1vbgELZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQ9sb2NJZHhDb250aW5lbnQECGRpc3RhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FCGxvY0lkeElkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQULZHVja0Fzc2V0SWQCFE5GVCBkdWNrIGlzIG9ycGhhbmVkBAloZWFsdGhLZXkJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQECWN1ckhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQUJaGVhbHRoS2V5BA5vdXRjb21lQWN0aW9ucwMJAGcCBQhkaXN0YW5jZQADBAZyZXdhcmQJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhJzZW5kRGVsaXZlcnlSZXdhcmQJAMwIAgUFb3duZXIFA25pbAUDbmlsAwkAAAIFBnJld2FyZAUGcmV3YXJkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQBmAgUDbm93CQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMJAAIBAiZZb3VyIGR1Y2sgaXMgc3RpbGwgb24gZGVsaXZlcnkgbWlzc2lvbgQLbG9ja2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BRFkZWxpdmVyeUxvY2tlZEtleQAABAZ1bmxvY2sJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhR1cGRhdGVEZWxpdmVyeUxvY2tlZAkAzAgCCQBlAgULbG9ja2VkVG90YWwFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUDbmlsBQNuaWwDCQAAAgUGdW5sb2NrBQZ1bmxvY2sDCQBnAgAABQljdXJIZWFsdGgFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleURlbGl2ZXJ5RGVsYXlCeUR1Y2sBBQtkdWNrQXNzZXRJZAkAZAIFCXN0YXJ0VGltZQUJREFZTUlMTElTBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EC3NhdmVkSGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAQNc2F2ZWRMb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAlgoEBQ5vdXRjb21lQWN0aW9ucwkAzAgCCQEMSW50ZWdlckVudHJ5AgUJaGVhbHRoS2V5BQtzYXZlZEhlYWx0aAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFDXNhdmVkTG9jYXRpb24FA25pbAUNc2F2ZWRMb2NhdGlvbgULc2F2ZWRIZWFsdGgBDW1lcmdlSW50ZXJuYWwGC25ld0xhbmRTaXplCG5ld0xldmVsB2Zvcm11bGEEYWRkcgxsYW5kQXNzZXRJZHMHbmVlZE1hdAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIdbWVyZ2VJbnRlcm5hbF9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIbbWVyZ2VJbnRlcm5hbF9jaGVja0RlbGl2ZXJ5CgEKY2hlY2tNZXJnZQIDYWNjC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQd0aW1lS2V5CQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8ECWNvbnRpbmVudAkAkQMCBQFkBQxyZWNDb250aW5lbnQDAwkBAiE9AggFA2FjYwJfMwIACQECIT0CCAUDYWNjAl8zBQljb250aW5lbnQHCQACAQIuTGFuZHMgc2hvdWxkIGJlIG9uIHRoZSBzYW1lIGNvbnRpbmVudCB0byBtZXJnZQQIbGFuZFNpemUJAJEDAgUBZAULcmVjTGFuZFNpemUEB3NpemVzSW4IBQNhY2MCXzEEAWkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAswkCBQdzaXplc0luBQhsYW5kU2l6ZQInWW91IGhhdmVuJ3QgcGFzc2VkIGFsbCB0aGUgbGFuZHMgbmVlZGVkBAhzaXplc091dAkArAICCQCvAgIFB3NpemVzSW4FAWkJALACAgUHc2l6ZXNJbgkAZAIFAWkAAQQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUEBGFydHMJAGQCCAUDYWNjAl8yCQELdmFsdWVPckVsc2UCCQCfCAEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAAAECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAhyZXFMZXZlbAQHJG1hdGNoMAUIbGFuZFNpemUDCQAAAgIBUwUHJG1hdGNoMAADAwkAAAICAU0FByRtYXRjaDAABAMJAAACAgFMBQckbWF0Y2gwAAUDCQAAAgICWEwFByRtYXRjaDAABgkAAgECGk9ubHkgUywgTSwgTCwgWEwgY2FuIG1lcmdlAwkBAiE9AgUKaW5mcmFMZXZlbAUIcmVxTGV2ZWwJAAIBAiJBbGwgbGFuZHMgc2hvdWxkIGJlIG1heGVkIHRvIG1lcmdlBAdsYW5kTnVtCQCRAwIFAWQFCnJlY0xhbmROdW0EDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCXNhdmVkVGltZQMJAGYCAAAFCWRlbHRhVGltZQkAAgEJAKwCAgkArAICCQCsAgICJlNhdmVkIHRpbWVzdGFtcCBpcyBpbiBmdXR1cmUsIHNhdmVkID0gCQCkAwEFCXNhdmVkVGltZQIMLCBjdXJyZW50ID0gCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBBZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFYnBSZXMJAQZhZGRSZXMFCQC1CQIIBQNhY2MCXzQCAV8FDXRlcnJhaW5Db3VudHMFCWRlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAVwcm9wcwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjAl82BQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQGY1Byb3BzCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MDXzEwBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQLc3VtVGVycmFpbnMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwJfOQUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAEEBWxhbmRzCAUDYWNjAl83BANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQECWN1c3RvbUtleQkBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQULbGFuZEFzc2V0SWQECmN1c3RvbU5hbWUJAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VzdG9tS2V5AgAJAJwKCgUIc2l6ZXNPdXQFBGFydHMFCWNvbnRpbmVudAUFYnBSZXMJAM4IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIIBQNhY2MCXzUJAQtEZWxldGVFbnRyeQEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFBGFkZHIJAQtEZWxldGVFbnRyeQEJARBrZXlMYW5kVG9Bc3NldElkAQUHbGFuZE51bQkBC0RlbGV0ZUVudHJ5AQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgULbGFuZEFzc2V0SWQFBGFkZHIJAQtEZWxldGVFbnRyeQEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQERa2V5TGFuZE51bVRvT3duZXIBBQdsYW5kTnVtCQELRGVsZXRlRW50cnkBCQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEFCWN1c3RvbUtleQkBBEJ1cm4CCQDZBAEFC2xhbmRBc3NldElkAAEDCQECIT0CBQpjdXN0b21OYW1lAgAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQUDbmlsBQNuaWwFBXByb3BzCQDRCAIFBWxhbmRzCQEFdmFsdWUBBQNpZHgJAGQCCAUDYWNjAl84BQZwaWVjZXMFC3N1bVRlcnJhaW5zBQZjUHJvcHMEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9wTGlzdAkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACCzBfMF8wXzBfMF8wAgFfBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIECGxhbmRzU3RyCQCiCAEFCGxhbmRzS2V5BAdsYW5kc0luAwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfBQNuaWwEBWNvbnQwCQCRAwIJALUJAggJAQV2YWx1ZQEJAOwHAQkA2QQBCQCRAwIFDGxhbmRBc3NldElkcwAAC2Rlc2NyaXB0aW9uAgFfBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUFY29udDACCzBfMF8wXzBfMF8wAgFfBAFyCgACJGwFDGxhbmRBc3NldElkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJwKCgUHZm9ybXVsYQAAAgAJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzBQNuaWwFCHByb3BMaXN0BQdsYW5kc0luAAAJALUJAgILMF8wXzBfMF8wXzACAV8FCWNvbnRQcm9wcwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKY2hlY2tNZXJnZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUECWNvbnRpbmVudAgFAXICXzMEDGNvbnRpbmVudElkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDPCAIFCmNvbnRpbmVudHMFCWNvbnRpbmVudAkArAICAhNVbmtub3duIGNvbnRpbmVudDogBQljb250aW5lbnQECHRlcnJhaW5zCQETZ2VuVGVycmFpbnNGb3JNZXJnZQIIBQFyAl85CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEFC25ld0xhbmRTaXplBQVTU0laRQQHZnJlZU51bQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFD1BSRVNBTEVOVU1MQU5EUwABBApuZXdMYW5kTnVtCQCkAwEFB2ZyZWVOdW0EBWlzc3VlCQDCCAUJAQduZnROYW1lAgUKbmV3TGFuZE51bQULbmV3TGFuZFNpemUJALkJAgkAzAgCBQpuZXdMYW5kTnVtCQDMCAIFC25ld0xhbmRTaXplCQDMCAIFCHRlcnJhaW5zCQDMCAIFCWNvbnRpbmVudAUDbmlsAgFfAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUEDm5ld0xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDCQBmAgUHbmVlZE1hdAAACQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBQduZWVkTWF0AgFfBAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUEYWRkcgQMc3Rha2VkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAACQCUCgIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIIBQFyAl81AwkAZgIJAJADAQgFAXICXzcAAAkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAggFAXICXzcCAV8JAQtEZWxldGVFbnRyeQEFCGxhbmRzS2V5CQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5AwkAZgIIBQFyAl84BQxzdGFrZWRQaWVjZXMAAAkAZQIFDHN0YWtlZFBpZWNlcwgFAXICXzgJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQUFaXNzdWUJAQtTdHJpbmdFbnRyeQIJARBrZXlMYW5kVG9Bc3NldElkAQUKbmV3TGFuZE51bQUObmV3TGFuZEFzc2V0SWQJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQ5uZXdMYW5kQXNzZXRJZAUEYWRkcgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUKbmV3TGFuZE51bQUEYWRkcgkBDEludGVnZXJFbnRyeQIJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFDm5ld0xhbmRBc3NldElkCAUBcgJfMgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUObmV3TGFuZEFzc2V0SWQFCG5ld0xldmVsCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFDm5ld0xhbmRBc3NldElkBQRhZGRyBQhuZXdMZXZlbAkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIIBQFyAl80CQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAkAuQkCCAUBcgJfNgIBXwkBC1N0cmluZ0VudHJ5AgkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBBQljb250aW5lbnQJALkJAggFAXIDXzEwAgFfCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCBQljb250aW5lbnQJAMwIAgIBTAkAzAgCBQ5uZXdMYW5kQXNzZXRJZAUDbmlsAgFfCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRhZGRyAAEFB2Fzc2V0SWQFDm5ld0xhbmRBc3NldElkAQNzMm0CBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAU0AAwIEU1NTUwUEYWRkcgUMbGFuZEFzc2V0SWRzAAABA20ybAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIBTAAEAgNTTU0FBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTAAQBBGwyeGwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAlhMAAUCBVNTU01MBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwAvAQZ4bDJ4eGwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCA1hYTAAGAgNMWEwFBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTADYBC21lcmdlQ29tbW9uAgRhZGRyDGxhbmRBc3NldElkcwQHJG1hdGNoMAkAkAMBBQxsYW5kQXNzZXRJZHMDCQAAAgAEBQckbWF0Y2gwCQEDczJtAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIAAwUHJG1hdGNoMAkBA20ybAIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAUFByRtYXRjaDAJAQRsMnhsAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIAAgUHJG1hdGNoMAkBBnhsMnh4bAIFBGFkZHIFDGxhbmRBc3NldElkcwkAAgECDVVua25vd24gbWVyZ2UBFWNoZWNrT3V0ZGF0ZWREZWxpdmVyeQEIdXNlckFkZHIEBGR1Y2sJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUIdXNlckFkZHIDAwURS1NfQUxMT1dfREVMSVZFUlkJAQlpc0RlZmluZWQBBQRkdWNrBwQLZHVja0Fzc2V0SWQJAQV2YWx1ZQEFBGR1Y2sEBmxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBANsb2MJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQZsb2NLZXkFD0RFRkFVTFRMT0NBVElPTgIBXwQJc3RhcnRUaW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQDAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUQGCQBmAggFCWxhc3RCbG9jawl0aW1lc3RhbXAJAGQCBQlzdGFydFRpbWUFElRFTl9NSU5VVEVTX01JTExJUwUDbmlsBAloZWFsdGhLZXkJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQDCQBnAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUIbG9jSWR4SWQAAwQGcmV3YXJkCQD8BwQFD2Vjb25vbXlDb250cmFjdAISc2VuZERlbGl2ZXJ5UmV3YXJkCQDMCAIFCHVzZXJBZGRyBQNuaWwFA25pbAMJAAACBQZyZXdhcmQFBnJld2FyZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDNCAIJAM0IAgQLbG9ja2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BRFkZWxpdmVyeUxvY2tlZEtleQAABAZ1bmxvY2sJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhR1cGRhdGVEZWxpdmVyeUxvY2tlZAkAzAgCCQBlAgULbG9ja2VkVG90YWwFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUDbmlsBQNuaWwDCQAAAgUGdW5sb2NrBQZ1bmxvY2sDCQBnAgAACQERQGV4dHJOYXRpdmUoMTA1NSkBBQloZWFsdGhLZXkFA25pbAQKcHVuaXNobWVudAkA/AcEBQR0aGlzAgtzYXZlSW50ZWdlcgkAzAgCCQEWa2V5RGVsaXZlcnlEZWxheUJ5RHVjawEFC2R1Y2tBc3NldElkCQDMCAIJAGQCBQlzdGFydFRpbWUFCURBWU1JTExJUwUDbmlsBQNuaWwDCQAAAgUKcHVuaXNobWVudAUKcHVuaXNobWVudAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQEMSW50ZWdlckVudHJ5AgUJaGVhbHRoS2V5CQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAkBC1N0cmluZ0VudHJ5AgUGbG9jS2V5CQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQNuaWwBBnByb2xvZwEBaQMDCQECIT0CCAUBaQxvcmlnaW5DYWxsZXIFDHJlc3RDb250cmFjdAkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEKa2V5QmxvY2tlZAAHBwkAAgECH0NvbnRyYWN0cyBhcmUgdW5kZXIgbWFpbnRlbmFuY2UECHVzZXJBZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgkAzQgCCQEVY2hlY2tPdXRkYXRlZERlbGl2ZXJ5AQUIdXNlckFkZHIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYXN0VHhJZEJ5VXNlcgEFCHVzZXJBZGRyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQBDHByb2xvZ0ZsaWdodAEBaQMDCQECIT0CCAUBaQxvcmlnaW5DYWxsZXIFDHJlc3RDb250cmFjdAkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEKa2V5QmxvY2tlZAAHBwkAAgECH0NvbnRyYWN0cyBhcmUgdW5kZXIgbWFpbnRlbmFuY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhc3RUeElkQnlVc2VyAQkApQgBCAUBaQxvcmlnaW5DYWxsZXIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAUDbmlsLQFpAQ1jb25zdHJ1Y3RvclYxAQhyZXN0QWRkcgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlSZXN0QWRkcmVzcwAFCHJlc3RBZGRyBQNuaWwBaQELc2F2ZUludGVnZXICA2tleQZhbW91bnQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAiBzYXZlSW50ZWdlciBpcyBub3QgcHVibGljIG1ldGhvZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUDa2V5BQZhbW91bnQFA25pbAFpAQpzZXRCbG9ja2VkAQlpc0Jsb2NrZWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBCmtleUJsb2NrZWQABQlpc0Jsb2NrZWQFA25pbAFpAQlzdGFrZUxhbmQABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAdhc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyAwkBAiE9AggFA3BtdAZhbW91bnQAAQkAAgEJAKwCAgkArAICAgRORlQgBQpMQU5EUFJFRklYAiQgdG9rZW4gc2hvdWxkIGJlIGF0dGFjaGVkIGFzIHBheW1lbnQEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQDCQECIT0CCAUFYXNzZXQGaXNzdWVyBQR0aGlzCQACAQIXVW5rbm93biBpc3N1ZXIgb2YgdG9rZW4DCQEBIQEJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQpMQU5EUFJFRklYCQACAQkArAICCQCsAgICCU9ubHkgTkZUIAUKTEFORFBSRUZJWAIUIHRva2VucyBhcmUgYWNjZXB0ZWQEC2xhbmROdW1TaXplCQCwAgIIBQVhc3NldARuYW1lAAQEB2xhbmROdW0DCQEIY29udGFpbnMCBQtsYW5kTnVtU2l6ZQIDWFhMCQCzAgIFC2xhbmROdW1TaXplAAMDCQEIY29udGFpbnMCBQtsYW5kTnVtU2l6ZQICWEwJALMCAgULbGFuZE51bVNpemUAAgkAswICBQtsYW5kTnVtU2l6ZQABAwkBASEBCQEJaXNEZWZpbmVkAQkAtgkBBQdsYW5kTnVtCQACAQkArAICAh5DYW5ub3QgcGFyc2UgbGFuZCBudW1iZXIgZnJvbSAIBQVhc3NldARuYW1lBAtsYW5kQXNzZXRJZAkA2AQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAwkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQISIGlzIGFscmVhZHkgc3Rha2VkBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBAVwcm9wcwkBEXVwZGF0ZVByb3BvcnRpb25zAwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAEEDHJlc0J5Q29udEtleQkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBCQCRAwIFAWQFDHJlY0NvbnRpbmVudAQJY29udFByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUMcmVzQnlDb250S2V5AgswXzBfMF8wXzBfMAIBXwQQdXBkYXRlZENvbnRQcm9wcwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCWNvbnRQcm9wcwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAECAV8ECGxhbmRzS2V5CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUHYWRkcmVzcwQIbGFuZHNTdHIJAKIIAQUIbGFuZHNLZXkEBWxhbmRzAwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUFbGFuZHMFC2xhbmRBc3NldElkCQACAQkArAICAiJZb3VyIHN0YWtlZCBsYW5kcyBhbHJlYWR5IGNvbnRhaW4gBQtsYW5kQXNzZXRJZAMJAGcCCQCQAwEFBWxhbmRzBRhNQVhfTEFORFNfU1RBS0VEX0JZX1VTRVIJAAIBCQCsAgIJAKwCAgIZWW91ciBhbHJlYWR5IHN0YWtlZCBtYXggKAkApAMBBRhNQVhfTEFORFNfU1RBS0VEX0JZX1VTRVICBykgbGFuZHMECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUHYWRkcmVzcwQJb2xkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAABAl3bGdSZXN1bHQJAPwHBAULd2xnQ29udHJhY3QCEm9uU3Rha2VVbnN0YWtlTGFuZAkAzAgCBQdhZGRyZXNzBQNuaWwFA25pbAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFB3RpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQdhZGRyZXNzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQELU3RyaW5nRW50cnkCBQhsYW5kc0tleQkAuwkCCQDNCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAIBXwkAzAgCCQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5CQBkAgUJb2xkUGllY2VzBQZwaWVjZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkBQdhZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0FB2FkZHJlc3MJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwUKaW5mcmFMZXZlbAkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMABQVwcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCBQxyZXNCeUNvbnRLZXkFEHVwZGF0ZWRDb250UHJvcHMFA25pbAUNcHJvbG9nQWN0aW9ucwUJd2xnUmVzdWx0AWkBC3Vuc3Rha2VMYW5kAQ1sYW5kQXNzZXRJZEluBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpBmNhbGxlcgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUNY2xhaW1Nb2RlRHVjawUNbGFuZEFzc2V0SWRJbgQLbGFuZEFzc2V0SWQIBQFjAl8yBAFkCAUBYwJfMwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQRhZGRyBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBXByb3BzCQERdXBkYXRlUHJvcG9ydGlvbnMDBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQMcmVzQnlDb250S2V5CQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJAJEDAgUBZAUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQxyZXNCeUNvbnRLZXkCCzBfMF8wXzBfMF8wAgFfBBB1cGRhdGVkQ29udFByb3BzCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUJY29udFByb3BzBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQIBXwQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIFC2xhbmRBc3NldElkBQZwaWVjZXMFDWNsYWltTW9kZUR1Y2sEBWxhbmRzCQC9CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUIbGFuZHNLZXkCAAIBXwQDaWR4CQDPCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEFA2lkeAkAAgEJAKwCAgIgWW91ciBzdGFrZWQgbGFuZHMgZG9uJ3QgY29udGFpbiAFC2xhbmRBc3NldElkBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBA5nb3ZSZWxlYXNlVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQtnb3ZDb250cmFjdAkBFWtleVVzZXJHd2xSZWxlYXNlVGltZQEFBGFkZHIAAAMJAGcCBQ5nb3ZSZWxlYXNlVGltZQUDbm93CQACAQkArAICAjlZb3VyIGdXTCBhcmUgdGFraW5nIHBhcnQgaW4gdm90aW5nLCBjYW5ub3QgdW5zdGFrZSB1bnRpbCAJAKQDAQUOZ292UmVsZWFzZVRpbWUEDmFyYlJlbGVhc2VUaW1lCQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQt3bGdDb250cmFjdAkBFGtleUxhc3RBcmJUaW1lQnlVc2VyAQUEYWRkcgAABQ5hcmJpdHJhZ2VEZWxheQMJAGYCBQ5hcmJSZWxlYXNlVGltZQUDbm93CQACAQkArAICAj9Zb3VyIHN0YWtlZCBsYW5kcyB0b29rIHBhcnQgaW4gYXJiaXRyYWdlLCBjYW5ub3QgdW5zdGFrZSB1bnRpbCAJAKQDAQUOYXJiUmVsZWFzZVRpbWUECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQRhZGRyBAxzdGFrZWRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAECW5ld1BpZWNlcwMJAGYCBQZwaWVjZXMFDHN0YWtlZFBpZWNlcwAACQBlAgUMc3Rha2VkUGllY2VzBQZwaWVjZXMECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFBGFkZHIFA25pbAUDbmlsCQCUCgIJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQkA2QQBBQtsYW5kQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFBGFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAUFcHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AgUMcmVzQnlDb250S2V5BRB1cGRhdGVkQ29udFByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfMgkAuQkCCAULY2xhaW1SZXN1bHQCXzMCAToJAMwIAgMJAGYCCQCQAwEFBWxhbmRzAAEJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIJANEIAgUFbGFuZHMJAQV2YWx1ZQEFA2lkeAIBXwkBC0RlbGV0ZUVudHJ5AQUIbGFuZHNLZXkJAMwIAgkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQUJbmV3UGllY2VzBQNuaWwFDXByb2xvZ0FjdGlvbnMFCXdsZ1Jlc3VsdAFpAQlzdGFrZUR1Y2sABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAdhc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyAwkBAiE9AggFA3BtdAZhbW91bnQAAQkAAgEJAKwCAgkArAICAgRORlQgBQpEVUNLUFJFRklYAiQgdG9rZW4gc2hvdWxkIGJlIGF0dGFjaGVkIGFzIHBheW1lbnQEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQDAwkBAiE9AggFBWFzc2V0Bmlzc3VlcgUNaW5jdWJhdG9yQWRkcgkBAiE9AggFBWFzc2V0Bmlzc3VlcgULYnJlZWRlckFkZHIHCQACAQkArAICCQCsAgICElVua25vd24gaXNzdWVyIG9mIAUKRFVDS1BSRUZJWAIGIHRva2VuAwkBASEBCQEIY29udGFpbnMCCAUFYXNzZXQEbmFtZQUKRFVDS1BSRUZJWAkAAgEJAKwCAgkArAICAglPbmx5IE5GVCAFCkRVQ0tQUkVGSVgCFCB0b2tlbnMgYXJlIGFjY2VwdGVkBAphc3NldElkU3RyCQDYBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUKYXNzZXRJZFN0cgMJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCEiBpcyBhbHJlYWR5IHN0YWtlZAMJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAAIBCQCsAgICHVlvdSBhbHJlYWR5IHN0YWtlZCBvbmUgZHVjazogCAUFYXNzZXQEbmFtZQQGbG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgQIbG9jYXRpb24JAKIIAQUGbG9jS2V5BAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQUKYXNzZXRJZFN0cgQIYmFja3BhY2sJAKIIAQUFYnBLZXkECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQphc3NldElkU3RyBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFCmFzc2V0SWRTdHIAAAQJY3VySGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFAJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKRFVDS1BSRUZJWAkA2AQBBQdhc3NldElkBQdhZGRyZXNzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwUKYXNzZXRJZFN0cgUDbmlsAwkBCWlzRGVmaW5lZAEFCGxvY2F0aW9uBQNuaWwJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZsb2NLZXkFD0RFRkFVTFRMT0NBVElPTgUDbmlsAwkBCWlzRGVmaW5lZAEFCGJhY2twYWNrBQNuaWwJAM4IAgkAzQgCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5AhowOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOgUDbmlsCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQljdXJIZWFsdGgFDXByb2xvZ0FjdGlvbnMBaQELdW5zdGFrZUR1Y2sBCmFzc2V0SWRTdHIEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEB2Fzc2V0SWQJANkEAQUKYXNzZXRJZFN0cgQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUKYXNzZXRJZFN0cgMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAAIBCQCsAgIJAKwCAgIJVGhlIGR1Y2sgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQphc3NldElkU3RyCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQdhZGRyZXNzCQACAQIXU3Rha2VkIE5GVCBpcyBub3QgeW91cnMDCQEPY2hlY2tUb3VybmFtZW50AQUKYXNzZXRJZFN0cgkAAgECG3Vuc3Rha2VEdWNrX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQUKYXNzZXRJZFN0cgkAAgECGXVuc3Rha2VEdWNrX2NoZWNrRGVsaXZlcnkECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQphc3NldElkU3RyBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFCmFzc2V0SWRTdHIAAAQGaGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBmAgUFbWF4SFAFBmhlYWx0aAkAAgEJAKwCAgkArAICAhlQbGVhc2UgaGVhbCB5b3VyIGR1Y2sgdG8gCQCkAwEFBW1heEhQAhNocCBiZWZvcmUgdW5zdGFraW5nCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEFB2Fzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQUHdGltZUtleQkAzAgCCQELRGVsZXRlRW50cnkBBQlrZXlIZWFsdGgJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBD2tleUR1Y2tMb2NhdGlvbgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEGtleUR1Y2tJZFRvT3duZXIBBQphc3NldElkU3RyCQDMCAIJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKRFVDS1BSRUZJWAUKYXNzZXRJZFN0cgUHYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzBQNuaWwFDXByb2xvZ0FjdGlvbnMBaQEIY2xhaW1SZXMCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBnJlc3VsdAkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQZhbW91bnQFDWNsYWltTW9kZUR1Y2sFDmxhbmRBc3NldElkU3RyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQJAJQKAgkAzggCCQDNCAIJAM0IAgkAzggCCAUGcmVzdWx0Al8xCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGsDBQd4cENsYWltBQZhbW91bnQFBU1VTFQ4Al8xCQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al8yCQC5CQIIBQZyZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzQJALkJAggFBnJlc3VsdAJfNQIBOgUNcHJvbG9nQWN0aW9ucwkAkQMCCAUGcmVzdWx0Al8zBQhicElkeFJlcwFpAQxjbGFpbVJlc1RvV0gCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBnJlc3VsdAkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQZhbW91bnQFC2NsYWltTW9kZVdoBQ5sYW5kQXNzZXRJZFN0cgkAlAoCCQDOCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIJAGsDBQd4cENsYWltBQZhbW91bnQFBU1VTFQ4Al8xCQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al8yCQC5CQIIBQZyZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzQJALkJAggFBnJlc3VsdAJfNQIBOgUNcHJvbG9nQWN0aW9ucwkAkQMCCAUGcmVzdWx0Al81BQh3aElkeFJlcwFpAQZmbGlnaHQCB21lc3NhZ2UDc2lnBA1wcm9sb2dBY3Rpb25zCQEMcHJvbG9nRmxpZ2h0AQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAh1c2VyQWRkcgkApQgBCAUBaQZjYWxsZXIEAWYJAQxmbGlnaHRDb21tb24DBQh1c2VyQWRkcgUHbWVzc2FnZQUDc2lnBAVuZXdIUAgFAWYCXzEEC2R1Y2tBc3NldElkCAUBZgJfMgQGbG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFBmxvY0tleQUPREVGQVVMVExPQ0FUSU9OBAtuZXdMb2NhdGlvbggFAWYCXzQDCQAAAgULbmV3TG9jYXRpb24FC2N1ckxvY2F0aW9uCQACAQIiWW91IGNhbid0IGZseSB0byB0aGUgc2FtZSBsb2NhdGlvbgQGbmV3TG9jCQC1CQIFC25ld0xvY2F0aW9uAgFfBAZpc1RvdXIJAAACCQCRAwIFBm5ld0xvYwUKbG9jSWR4VHlwZQIBVAQHaXNEZWxpdgkAAAIJAJEDAgUGbmV3TG9jBQpsb2NJZHhUeXBlAgFEBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQJY3VycmVudEVxCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAQNJHQwNzAyMDQ3MDMwMQkBEXN1YnRyYWN0RXF1aXBtZW50AgUJY3VycmVudEVxCAUBZgJfNQQFbmV3RXEIBQ0kdDA3MDIwNDcwMzAxAl8xBA9zaG91bGRaZXJvQnVmZnMIBQ0kdDA3MDIwNDcwMzAxAl8yBA0kdDA3MDMwNDczMzU3AwkBDG5vdE9uTWlzc2lvbgIFEnRvdXJuYW1lbnRDb250cmFjdAULY3VyTG9jYXRpb24DCQEBIQEJAQ9pc1VzdWFsTG9jYXRpb24BBQtuZXdMb2NhdGlvbgkBDGNoZWF0QXR0ZW1wdAMFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgAFAwkAZgIFBW5ld0hQAAAJAJQKAgULbmV3TG9jYXRpb24FBW5ld0hQCQCUCgIFC2N1ckxvY2F0aW9uAAADCQEOaXNJblRvdXJuYW1lbnQCBRJ0b3VybmFtZW50Q29udHJhY3QFC2N1ckxvY2F0aW9uAwkBASEBCQEOaXNJblRvdXJuYW1lbnQCBRJ0b3VybmFtZW50Q29udHJhY3QFC25ld0xvY2F0aW9uCQACAQIqWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIHRoZSB0b3VybmFtZW50BAVzY29yZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBm5ld0xvYwUIbG9jSWR4SWQEBmN1ckxvYwkAtQkCBQtjdXJMb2NhdGlvbgIBXwQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAAAwkBAiE9AgUFc2NvcmUJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGY3VyTG9jBQhsb2NJZHhJZAABCQEMY2hlYXRBdHRlbXB0AwULY3VyTG9jYXRpb24FC25ld0xvY2F0aW9uAAcDCQBmAgUFbmV3SFAAAAQJbG9jYWxCZXN0CQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAkBGmtleUJlc3RSZXN1bHRCeVRvdXJBbmREdWNrAgUGbGFzdElkBQtkdWNrQXNzZXRJZAAABAh1cGRMb2NhbAMJAGYCBQVzY29yZQUJbG9jYWxCZXN0CQD8BwQFEnRvdXJuYW1lbnRDb250cmFjdAIOc2F2ZUR1Y2tSZXN1bHQJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUFc2NvcmUFA25pbAUDbmlsBQR1bml0AwkAAAIFCHVwZExvY2FsBQh1cGRMb2NhbAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgULY3VyTG9jYXRpb24AAAMJAQEhAQkBDGlzSW5EZWxpdmVyeQEFC2N1ckxvY2F0aW9uBAlsb2NIZWFsdGgJARBhc1N0cmluZ0ludFR1cGxlAQkA/AcEBQR0aGlzAhBhdXRvRXhpdERlbGl2ZXJ5CQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAMJAAACBQlsb2NIZWFsdGgFCWxvY0hlYWx0aAMFB2lzRGVsaXYFCWxvY0hlYWx0aAMJAGYCBQVuZXdIUAAACQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAkAlAoCCAUJbG9jSGVhbHRoAl8xAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQEBIQEFB2lzRGVsaXYJAAIBAiRZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gZGVsaXZlcnkDCQEBIQEJAQxpc0luRGVsaXZlcnkBBQtuZXdMb2NhdGlvbgkBDGNoZWF0QXR0ZW1wdAMFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgANBAVzY29yZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBm5ld0xvYwUIbG9jSWR4SWQEBmN1ckxvYwkAtQkCBQtjdXJMb2NhdGlvbgIBXwMJAQIhPQIFBXNjb3JlCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBmN1ckxvYwUIbG9jSWR4SWQAAQkBDGNoZWF0QXR0ZW1wdAMFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgAOAwMJAGYCBQVuZXdIUAAACQBmAgADBQVzY29yZQcJAJQKAgULbmV3TG9jYXRpb24FBW5ld0hQBAlsb2NIZWFsdGgJARBhc1N0cmluZ0ludFR1cGxlAQkA/AcEBQR0aGlzAhBhdXRvRXhpdERlbGl2ZXJ5CQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAMJAAACBQlsb2NIZWFsdGgFCWxvY0hlYWx0aAUJbG9jSGVhbHRoCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAlsb2NUb1NhdmUIBQ0kdDA3MDMwNDczMzU3Al8xBAhocFRvU2F2ZQgFDSR0MDcwMzA0NzMzNTcCXzIJAJQKAgkAzggCCQDOCAIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZsb2NLZXkFCWxvY1RvU2F2ZQkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFBW5ld0hQBQNuaWwFDXByb2xvZ0FjdGlvbnMDBQ9zaG91bGRaZXJvQnVmZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzAFA25pbAUDbmlsCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQDCQBmAgUFbmV3SFAAAAUPeHBTdWNjZXNzRmxpZ2h0BQx4cEZhaWxGbGlnaHQCXzEIBQFmAl8zAWkBBGhlYWwDCnF1YW50aXR5TDEKcXVhbnRpdHlMMgpxdWFudGl0eUwzBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMDAwkAZgIAAAUKcXVhbnRpdHlMMQYJAGYCAAAFCnF1YW50aXR5TDIGCQBmAgAABQpxdWFudGl0eUwzCQACAQIbUXVhbnRpdHkgY2Fubm90IGJlIG5lZ2F0aXZlBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIUaGVhbF9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQISaGVhbF9jaGVja0RlbGl2ZXJ5BANxdHMJAMwIAgUKcXVhbnRpdHlMMQkAzAgCBQpxdWFudGl0eUwyCQDMCAIFCnF1YW50aXR5TDMFA25pbAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAECW9sZEhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkAZwIFCW9sZEhlYWx0aAUFbWF4SFAJAAIBCQCsAgIJAKwCAgIPSFAgc2hvdWxkIGJlIDwgCQCkAwEFBW1heEhQAgggdG8gaGVhbAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkECHByb2RMaXN0AwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfCgELaXRlcmF0ZVByb2QCA2FjYwZyZWNpcGUEAW4IBQNhY2MCXzIEAXgDCQBmAgkAkAMBBQhwcm9kTGlzdAUBbgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0BQFuAAADCQBmAgADBQFuBAFxCQCRAwIFA3F0cwUBbgMJAGYCBQFxBQF4CQACAQkArAICCQCsAgIJAKwCAgIOWW91IGhhdmUgb25seSAJAKQDAQUBeAIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFAW4JAJUKAwkAzQgCCAUDYWNjAl8xCQCkAwEJAGUCBQF4BQFxCQBkAgUBbgABCQBkAggFA2FjYwJfMwkAaAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIFBnJlY2lwZQIBXwUKcklkeEVmZmVjdAUBcQkAlQoDCQDNCAIIBQNhY2MCXzEJAKQDAQUBeAkAZAIFAW4AAQgFA2FjYwJfMwQGcmVzdWx0CgACJGwFEHByb2R1Y3Rpb25NYXRyaXgKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCVCgMFA25pbAAAAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBC2l0ZXJhdGVQcm9kAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIECW5ld0hlYWx0aAkAlwMBCQDMCAIFBW1heEhQCQDMCAIJAGQCBQlvbGRIZWFsdGgIBQZyZXN1bHQCXzMFA25pbAkAlAoCCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQluZXdIZWFsdGgJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIJALkJAggFBnJlc3VsdAJfMQIBXwUDbmlsAgE6BQNuaWwFDXByb2xvZ0FjdGlvbnMICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAaAIFBnhwSGVhbAkAZAIJAGQCBQpxdWFudGl0eUwxBQpxdWFudGl0eUwyBQpxdWFudGl0eUwzAl8xBQluZXdIZWFsdGgBaQEGaGVhbEVTAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFmhlYWxFU19jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIUaGVhbEVTX2NoZWNrRGVsaXZlcnkECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAlvbGRIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGYCBQlvbGRIZWFsdGgAAAkAAgECKEhQIHNob3VsZCBiZSAwIHRvIGNhbGwgRW1lcmdlbmN5IFNlcnZpY2UEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwQNbWVkS2l0QW1vdW50MQMJAGYCCQCQAwEFCHByb2RMaXN0AAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAAAAAAEDW1lZEtpdEFtb3VudDIDCQBmAgkAkAMBBQhwcm9kTGlzdAABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAQAABA1tZWRLaXRBbW91bnQzAwkAZgIJAJADAQUIcHJvZExpc3QAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAIAAAMDAwkAZgIFDW1lZEtpdEFtb3VudDEAAAYJAGYCBQ1tZWRLaXRBbW91bnQyAAAGCQBmAgUNbWVkS2l0QW1vdW50MwAACQACAQIfWW91IGhhdmUgdG8gdXNlIG93biBNZWRpY2FsIEtpdAQIZXhpc3RTdHIJAJ0IAgUPZWNvbm9teUNvbnRyYWN0CQEOa2V5RXNXYXJlaG91c2UABAxleGlzdEFtb3VudHMDCQEJaXNEZWZpbmVkAQUIZXhpc3RTdHIJALwJAgkBBXZhbHVlAQUIZXhpc3RTdHICAV8FA25pbAQLZXhpc3RBbW91bnQDCQBmAgkAkAMBBQxleGlzdEFtb3VudHMAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGV4aXN0QW1vdW50cwAAAAADCQBnAgAABQtleGlzdEFtb3VudAkAAgECOVRoZXJlIGFyZSBubyBNZWRpY2FsIEtpdHMgTDEgYXQgRW1lcmdlbmN5IFNlcnZpY2Ugc3RvcmFnZQQJbmV3SGVhbHRoCQBkAgUJb2xkSGVhbHRoCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgAAAIBXwUKcklkeEVmZmVjdAQFbmV3RVMJALkJAgkAzAgCCQCkAwEJAGUCBQtleGlzdEFtb3VudAABCQDRCAIFDGV4aXN0QW1vdW50cwAAAgFfBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4AAACAV8ECHRvdGFsTWF0CQESZ2V0UmVjaXBlTWF0ZXJpYWxzAQUGcmVjaXBlBAlzZWxsUHJpY2UJAGsDCQBoAgUIdG90YWxNYXQFCkVTU0VMTENPRUYFEFJFU09VUkNFUFJJQ0VNSU4JAGgCBQVNVUxUOAUOUFJPRFVDVFBLR1NJWkUDCQECIT0CCAUDcG10BmFtb3VudAUJc2VsbFByaWNlCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUJc2VsbFByaWNlBAZyZXN1bHQJAQhhc1N0cmluZwEJAPwHBAUPZWNvbm9teUNvbnRyYWN0Ag91cGRhdGVFc1N0b3JhZ2UJAMwIAgUFbmV3RVMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgULdXNkdEFzc2V0SWQFCXNlbGxQcmljZQUDbmlsCQCUCgIJAM4IAgkAzQgCBQ1wcm9sb2dBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQluZXdIZWFsdGgICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUIeHBDYWxsRVMCXzEFBnJlc3VsdAFpAQ51cGRhdGVCYWNrcGFjawILZHVja0Fzc2V0SWQHbmV3UGFjawMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQIRcGVybWlzc2lvbiBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAUHbmV3UGFjawUDbmlsBQduZXdQYWNrAWkBD2NvbW1pdEZvclJhbmRvbQAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpBAtmaW5pc2hCbG9jawkAZAIFBmhlaWdodAULcmFuZG9tRGVsYXkEBGFkZHIJAKUIAQgFAWkGY2FsbGVyCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCWtleUNvbW1pdAEFBGFkZHIFC2ZpbmlzaEJsb2NrBQNuaWwFDXByb2xvZ0FjdGlvbnMFC2ZpbmlzaEJsb2NrAWkBCGJ1eVNMYW5kAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQMJAQIhPQIIBQNwbXQGYW1vdW50BQdFWFBVU0RUCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUHRVhQVVNEVAQGcmVzdWx0CQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgkAzQgCCAUGcmVzdWx0Al8xCQEOU2NyaXB0VHJhbnNmZXIDBQ9lY29ub215Q29udHJhY3QIBQNwbXQGYW1vdW50BQt1c2R0QXNzZXRJZAgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgkApQgBCAUBaQZjYWxsZXIFCnhwTmV3U0xhbmQCXzEFDXByb2xvZ0FjdGlvbnMJAJQKAggIBQZyZXN1bHQCXzICXzEFC2FjcmVzUmVzdWx0AWkBCmV4cGVkaXRpb24CB21lc3NhZ2UDc2lnBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAh1c2VyQWRkcgkApQgBCAUBaQZjYWxsZXIEAWYJAQxmbGlnaHRDb21tb24DBQh1c2VyQWRkcgUHbWVzc2FnZQUDc2lnBAtkdWNrQXNzZXRJZAgFAWYCXzIECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW1MaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwYFBW1MaXN0BQxFWFBNQVRFUklBTFMCAV8EBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAljdXJyZW50RXEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssBA0kdDA4MDc5NDgwODkxCQERc3VidHJhY3RFcXVpcG1lbnQCBQljdXJyZW50RXEIBQFmAl81BAVuZXdFcQgFDSR0MDgwNzk0ODA4OTECXzEED3Nob3VsZFplcm9CdWZmcwgFDSR0MDgwNzk0ODA4OTECXzIEAWUJARJleHBlZGl0aW9uSW50ZXJuYWwCCAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQEAmlkCAgFAWUCXzICXzEEBnJlc3VsdAMJAGcCAAAIBQFmAl8xCQCVCgMJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAAACQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQUDbmlsAgAAAAkAlQoDCQDOCAIIBQFlAl8xAwUPc2hvdWxkWmVyb0J1ZmZzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wBQNuaWwJAM0IAgkAzQgCCQDNCAIJAM0IAgUDbmlsCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCCAgFAWUCXzICXzIJAMwIAgIBTAkAzAgCBQJpZAUDbmlsAgFfCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoCAUBZgJfMQkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6BQJpZAgFAWYCXzMDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhpleHBlZGl0aW9uX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhhleHBlZGl0aW9uX2NoZWNrRGVsaXZlcnkEC2FjcmVzUmVzdWx0CQEFYXNJbnQBCQD8BwQFDWFjcmVzQ29udHJhY3QCCWJ1cm5BY3JlcwkAzAgCBQxTX0NPU1RfQUNSRVMFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCCAUGcmVzdWx0Al8xCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCnhwTmV3U0xhbmQCXzEFDXByb2xvZ0FjdGlvbnMJAJUKAwgFBnJlc3VsdAJfMggFBnJlc3VsdAJfMwULYWNyZXNSZXN1bHQBaQEQYnV5U0xhbmRGb3JBY3JlcwAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEA2FtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQxhY3Jlc0Fzc2V0SWQJAAIBAhRBQ1JFUyBwYXltZW50cyBvbmx5IQMJAQIhPQIFA2FtdAUMU19DT1NUX0FDUkVTCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUMU19DT1NUX0FDUkVTBAZyZXN1bHQJARJleHBlZGl0aW9uSW50ZXJuYWwCCAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQEC2FjcmVzUmVzdWx0CQEFYXNJbnQBCQD8BwQFDWFjcmVzQ29udHJhY3QCCWJ1cm5BY3JlcwkAzAgCBQxTX0NPU1RfQUNSRVMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUMYWNyZXNBc3NldElkBQNhbXQFA25pbAkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgkApQgBCAUBaQZjYWxsZXIFCnhwTmV3U0xhbmQCXzEFDXByb2xvZ0FjdGlvbnMJAJQKAggIBQZyZXN1bHQCXzICXzEFC2FjcmVzUmVzdWx0AWkBDHVwZ3JhZGVJbmZyYQELbGFuZEFzc2V0SWQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBnJlc3VsdAkBDXVwSW5mcmFDb21tb24EBggFAWkGY2FsbGVyAAAFC2xhbmRBc3NldElkBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkCQCUCgIJAM4IAgkAzggCCAUGcmVzdWx0Al8xBQ1wcm9sb2dBY3Rpb25zCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGsDBQ54cFVwZ3JhZGVJbmZyYQgFBnJlc3VsdAJfMwUFTVVMVDgCXzEIBQZyZXN1bHQCXzIBaQEQYWN0aXZhdGVBcnRpZmFjdAIHYXJ0TmFtZQ5sYW5kQXNzZXRJZE9wdAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQZjYWxsZXIEBnJlc3VsdAQHJG1hdGNoMAUHYXJ0TmFtZQMJAAACAgdQUkVTQUxFBQckbWF0Y2gwCQESYWN0aXZhdGVQcmVzYWxlQXJ0AgUEYWRkcgUObGFuZEFzc2V0SWRPcHQDCQAAAgIHT05CT0FSRAUHJG1hdGNoMAkBEmFjdGl2YXRlT25ib2FyZEFydAEFBGFkZHIJAAIBAhBVbmtub3duIGFydGlmYWN0CQDOCAIFBnJlc3VsdAUNcHJvbG9nQWN0aW9ucwFpAQptZXJnZUxhbmRzAQxsYW5kQXNzZXRJZHMEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBnJlc3VsdAkBC21lcmdlQ29tbW9uAgkApQgBCAUBaQZjYWxsZXIFDGxhbmRBc3NldElkcwkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQUNcHJvbG9nQWN0aW9ucwgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgkApQgBCAUBaQZjYWxsZXIFB3hwTWVyZ2UCXzEIBQZyZXN1bHQCXzIBaQENY2FyZ29FeGNoYW5nZQIMY2FyZ29MaXN0U3RyC2xhbmRBc3NldElkBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBApjYXJnb1BhcnRzCQC8CQIFDGNhcmdvTGlzdFN0cgIBOgQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OBANsb2MJALUJAgkBBXZhbHVlAQULY3VyTG9jYXRpb24CAV8DCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBTAkAAgEJAKwCAgkArAICAhZEdWNrIGxvY2F0aW9uIHR5cGUgaXMgCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIRLCBidXQgc2hvdWxkIGJlIEwDCQECIT0CCQCRAwIFA2xvYwUIbG9jSWR4SWQFC2xhbmRBc3NldElkCQACAQkArAICAhtEdWNrIHNob3VsZCBiZSBvbiB0aGUgbGFuZCAFC2xhbmRBc3NldElkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAljdXJyZW50V2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQGcmVzdWx0CQEJbW92ZVN0dWZmAwUKY2FyZ29QYXJ0cwUJY3VycmVudFdoBQtjdXJyZW50UGFjawQEbG9mdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBAVsb2Z0TwkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAgFBnJlc3VsdAJfNwQFbG9mdEYJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQgFBnJlc3VsdAJfNwkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCAUGcmVzdWx0Al80CQDMCAIIBQZyZXN1bHQCXzUJAMwIAggFBnJlc3VsdAJfNgUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5CQC6CQIJAMwIAgkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzCQDMCAIIBQZyZXN1bHQCXzEJAMwIAggFBnJlc3VsdAJfMgkAzAgCCAUGcmVzdWx0Al8zCQDMCAIJALkJAgkAzAgCCQCRAwIFBGxvZnQFCXZvbExvY2tlZAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkAkQMCBQRsb2Z0BQh2b2xUb3RhbAUDbmlsAgFfBQNuaWwCAToFA25pbAUNcHJvbG9nQWN0aW9ucwFpAQ1zYXZlV2FyZWhvdXNlAgV3aFN0cgtsYW5kQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQCd2gJALwJAgUFd2hTdHICAToDCQECIT0CCQCQAwEFAndoAAUJAAIBAjB3YXJlaG91c2Ugc3RyaW5nIHNob3VsZCBjb250YWluIDQgJzonIHNlcGFyYXRvcnMEBWxvZnRMCQCRAwIJALUJAgkAkQMCBQJ3aAUJd2hJZHhMT0ZUAgFfBQl2b2xMb2NrZWQEBWxvZnRPCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQJ3aAQFbG9mdFQJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUCd2gFC3doSWR4TGV2ZWxzBAVsb2Z0RgkAZQIJAGUCBQVsb2Z0VAkBDXBhcnNlSW50VmFsdWUBBQVsb2Z0TAUFbG9mdE8ECG5ld1doU3RyCQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgkAkQMCBQJ3aAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCBQVsb2Z0TAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkApAMBBQVsb2Z0VAUDbmlsAgFfBQNuaWwCAToJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQUIbmV3V2hTdHIFA25pbAUIbmV3V2hTdHIBaQESZml4V2FyZWhvdXNlRm9ybWF0AQtsYW5kQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUMcmVzdENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAEAndoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQFbG9mdEwJAQVhc0ludAEJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhpyZWNhbGNMb2NrZWRWb2x1bWVSRUFET05MWQkAzAgCBQtsYW5kQXNzZXRJZAkAzAgCBQJ3aAUDbmlsBQNuaWwEBWxvZnRPCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQJ3aAQFbG9mdFQJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUCd2gFC3doSWR4TGV2ZWxzBAVsb2Z0RgkAZQIJAGUCBQVsb2Z0VAUFbG9mdEwFBWxvZnRPBAhuZXdXaFN0cgkAugkCCQDMCAIJAJEDAgUCd2gFC3doSWR4TGV2ZWxzCQDMCAIJAJEDAgUCd2gFCHdoSWR4UmVzCQDMCAIJAJEDAgUCd2gFCHdoSWR4TWF0CQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCCQC5CQIJAMwIAgkApAMBBQVsb2Z0TAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkApAMBBQVsb2Z0VAUDbmlsAgFfBQNuaWwCAToJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQUIbmV3V2hTdHIFA25pbAUIbmV3V2hTdHIBaQEXZml4Q29udGluZW50UHJvcG9ydGlvbnMBDGxhbmRBc3NldElkcwMJAQIhPQIIBQFpBmNhbGxlcgUMcmVzdENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAoBCGdldFByb3BzAgNhY2MEY29udAkAzQgCBQNhY2MJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBBQRjb250AgswXzBfMF8wXzBfMAQBcAoAAiRsBQpjb250aW5lbnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhnZXRQcm9wcwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUKAQlwcm9jZXNzb3ICA2FjYwtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8ECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBQVTU0laRQQEY29udAkAkQMCBQFkBQxyZWNDb250aW5lbnQEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQMY29udGluZW50SWR4CQEFdmFsdWUBCQDPCAIFCmNvbnRpbmVudHMFBGNvbnQECWNvbnRQcm9wcwkAtQkCCQCRAwIFA2FjYwUMY29udGluZW50SWR4AgFfBAd1cGRhdGVkCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUJY29udFByb3BzBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQIBXwQHJG1hdGNoMAUEY29udAMJAAACAghBbWVyaWNhcwUHJG1h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VABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBAghBbWVyaWNhcwkAkQMCBQFyAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBAgZFdXJvcGUJAJEDAgUBcgABCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIEQXNpYQkAkQMCBQFyAAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBAgZBZnJpY2EJAJEDAgUBcgADCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIHT2NlYW5pYQkAkQMCBQFyAAQFA25pbAAAAWkBD2ZpeFN0YWtlZFBpZWNlcwEHYWRkcmVzcwMJAQIhPQIIBQFpBmNhbGxlcgUMcmVzdENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQMc3Rha2VkUGllY2VzAwkAAAIFB2FkZHJlc3MCAAAABAhsYW5kc1N0cgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQdhZGRyZXNzBAVsYW5kcwMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsCgEHb25lTGFuZAIDYWNjC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAhsYW5kU2l6ZQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUJAGQCBQNhY2MJAQ9udW1QaWVjZXNCeVNpemUBBQhsYW5kU2l6ZQoAAiRsBQVsYW5kcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHb25lTGFuZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIVTGlzdCBzaXplIGV4Y2VlZHMgMTAwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQdhZGRyZXNzBQxzdGFrZWRQaWVjZXMFA25pbAUMc3Rha2VkUGllY2VzAWkBDXNldEN1c3RvbU5hbWUDB2Fzc2V0SWQKY3VzdG9tTmFtZQR0eXBlBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhAwkBAiE9AggFA3BtdAZhbW91bnQFDFJFTkFNSU5HQ09TVAkAAgEJAKwCAgISUGF5bWVudCBzaG91bGQgYmUgCQCkAwEFDFJFTkFNSU5HQ09TVAMJAQhjb250YWlucwIFCmN1c3RvbU5hbWUCAl9fCQACAQkArAICAh5OYW1lIHNob3VsZCBub3QgY29udGFpbiAnX18nOiAFCmN1c3RvbU5hbWUDCQBmAgkAsQIBBQpjdXN0b21OYW1lBQpNQVhOQU1FTEVOCQACAQkArAICAhlOYW1lIHRvbyBsb25nLCBtYXhMZW5ndGg9CQCkAwEFCk1BWE5BTUVMRU4EBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAdhY3Rpb25zBAckbWF0Y2gwBQR0eXBlAwkAAAICB0FDQ09VTlQFByRtYXRjaDAECnJldmVyc2VLZXkJARZrZXlDdXN0b21OYW1lVG9BZGRyZXNzAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA1hZGRyVG9OYW1lS2V5CQEWa2V5QWRkcmVzc1RvQ3VzdG9tTmFtZQEFBGFkZHIEB29sZE5hbWUJAKIIAQUNYWRkclRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlDdXN0b21OYW1lVG9BZGRyZXNzAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDWFkZHJUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFBGFkZHIICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFDHhwQ3VzdG9tTmFtZQJfMQMJAAACAgRMQU5EBQckbWF0Y2gwBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUHYXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQdhc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBApyZXZlcnNlS2V5CQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDmFzc2V0VG9OYW1lS2V5CQEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBBQdhc3NldElkBAdvbGROYW1lCQCiCAEFDmFzc2V0VG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDmFzc2V0VG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQdhc3NldElkCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQx4cEN1c3RvbU5hbWUCXzEDCQAAAgIERFVDSwUHJG1hdGNoMAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFB2Fzc2V0SWQDAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5BgkBASEBCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyCQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQdhc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpEVUNLUFJFRklYAg0gaXMgbm90IHlvdXJzBApyZXZlcnNlS2V5CQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDmFzc2V0VG9OYW1lS2V5CQEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBBQdhc3NldElkBAdvbGROYW1lCQCiCAEFDmFzc2V0VG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDmFzc2V0VG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQdhc3NldElkCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgUHYXNzZXRJZAUMeHBDdXN0b21OYW1lAl8xCQACAQITVW5rbm93biBlbnRpdHkgdHlwZQkAlAoCCQDOCAIJAM0IAgUHYWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQFDXByb2xvZ0FjdGlvbnMAAAFpAQxzZXRSZWZlcnJhbHMCCW9sZFBsYXllcgluZXdQbGF5ZXIDCQECIT0CCAUBaQ9jYWxsZXJQdWJsaWNLZXkFA3B1YgkAAgECEVBlcm1pc3Npb24gZGVuaWVkBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBQlvbGRQbGF5ZXIJAAIBCQCsAgICEUludmFsaWQgYWRkcmVzczogBQlvbGRQbGF5ZXIDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFCW5ld1BsYXllcgkAAgEJAKwCAgIRSW52YWxpZCBhZGRyZXNzOiAFCW5ld1BsYXllcgQHb2xkc0tleQkBCWtleU9sZGllcwAEBG9sZHMJAKIIAQUHb2xkc0tleQQGb2xkaWVzAwkBCWlzRGVmaW5lZAEFBG9sZHMJALwJAgkBBXZhbHVlAQUEb2xkcwIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFBm9sZGllcwUJbmV3UGxheWVyCQACAQkArAICBQluZXdQbGF5ZXICJiBpcyBub3QgbmV3YmllIChhbHJlYWR5IGhhcyByZWZlcnJhbHMpBAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFCW5ld1BsYXllcgQFcmVmQnkJAKIIAQUIcmVmQnlLZXkDAwkBCWlzRGVmaW5lZAEFBXJlZkJ5CQEJaXNEZWZpbmVkAQkApggBCQEFdmFsdWUBBQVyZWZCeQcJAAIBCQCsAgIJAKwCAgUJbmV3UGxheWVyAhQgYWxyZWFkeSBoYXMgcmVmQnk6IAkBBXZhbHVlAQUFcmVmQnkEB3JlZnNLZXkJARNrZXlBZGRyZXNzUmVmZXJyYWxzAQUJb2xkUGxheWVyBARyZWZzCQCiCAEFB3JlZnNLZXkECXJlZnNBcnJheQMJAQlpc0RlZmluZWQBBQRyZWZzCQC8CQIJAQV2YWx1ZQEFBHJlZnMCAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQlyZWZzQXJyYXkFCW5ld1BsYXllcgkAAgEJAKwCAgkArAICCQCsAgIFCW9sZFBsYXllcgISIGFscmVhZHkgY29udGFpbnMgBQluZXdQbGF5ZXICESB3aXRoaW4gcmVmZXJyYWxzBAduZXdSZWZzCQC6CQIJAM0IAgUJcmVmc0FycmF5BQluZXdQbGF5ZXICAV8EB25ld09sZHMDCQEPY29udGFpbnNFbGVtZW50AgUGb2xkaWVzBQlvbGRQbGF5ZXIJAQV2YWx1ZQEFBG9sZHMJALoJAgkAzQgCBQZvbGRpZXMFCW9sZFBsYXllcgIBXwkAlAoCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUIcmVmQnlLZXkFCW9sZFBsYXllcgkAzAgCCQELU3RyaW5nRW50cnkCBQdyZWZzS2V5BQduZXdSZWZzCQDMCAIJAQtTdHJpbmdFbnRyeQIFB29sZHNLZXkFB25ld09sZHMFA25pbAUNcHJvbG9nQWN0aW9ucwAAAWkBEGRpc3RyaWJ1dGVQb2ludHMFCHN0cmVuZ3RoCGFjY3VyYWN5CWludGVsbGVjdAllbmR1cmFuY2UJZGV4dGVyaXR5BA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLdmlydFdsZ0RhdGEJAQlhc0FueUxpc3QBCQD8BwQFC3dsZ0NvbnRyYWN0AhJjaGVja1dsZ1hwUkVBRE9OTFkJAMwIAgUEYWRkcgUDbmlsBQNuaWwEDXZpcnRXbGdQb2ludHMJAQVhc0ludAEJAJEDAgULdmlydFdsZ0RhdGEAAQQNJHQwOTYyNzY5NjY2NgMJAGcCAAAFDXZpcnRXbGdQb2ludHMJAJQKAgAABQNuaWwEB2RlbHRhWFAJAQVhc0ludAEJAPwHBAULd2xnQ29udHJhY3QCCXRha2VXbGdYcAkAzAgCBQRhZGRyBQNuaWwFA25pbAMJAAACBQdkZWx0YVhQBQdkZWx0YVhQCQCUCgIFDXZpcnRXbGdQb2ludHMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQxrZXlVc2VyTGV2ZWwBBQRhZGRyCQEFYXNJbnQBCQCRAwIFC3ZpcnRXbGdEYXRhAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlVc2VyWFABBQRhZGRyCQEFYXNJbnQBCQCRAwIFC3ZpcnRXbGdEYXRhAAIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQJd2xnUG9pbnRzCAUNJHQwOTYyNzY5NjY2NgJfMQQKd2xnQWN0aW9ucwgFDSR0MDk2Mjc2OTY2NjYCXzIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQKZnJlZUtleUFjYwkBEWtleVVzZXJGcmVlUG9pbnRzAQUEYWRkcgQNZnJlZVBvaW50c0FjYwkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUKZnJlZUtleUFjYwAABQl3bGdQb2ludHMEC2ZyZWVLZXlEdWNrCQERa2V5RHVja0ZyZWVQb2ludHMBBQtkdWNrQXNzZXRJZAQOZnJlZVBvaW50c0R1Y2sJAQt2YWx1ZU9yRWxzZQIJAJ8IAQULZnJlZUtleUR1Y2sAAAQHc3VtRnJlZQkAZAIFDWZyZWVQb2ludHNBY2MFDmZyZWVQb2ludHNEdWNrBA9zdW1Ub0Rpc3RyaWJ1dGUJAGQCCQBkAgkAZAIJAGQCBQhzdHJlbmd0aAUIYWNjdXJhY3kFCWludGVsbGVjdAUJZW5kdXJhbmNlBQlkZXh0ZXJpdHkDCQBmAgUPc3VtVG9EaXN0cmlidXRlBQdzdW1GcmVlCQACAQkArAICCQCsAgICD1RoZXJlIGFyZSBvbmx5IAkApAMBBQdzdW1GcmVlAhogZnJlZSBwb2ludHMgdG8gZGlzdHJpYnV0ZQQIY2hhcnNLZXkJAQxrZXlEdWNrQ2hhcnMBBQtkdWNrQXNzZXRJZAQFY2hhcnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQhjaGFyc0tleQIJMF8wXzBfMF8wAgFfBAZuZXdBY2MJAGUCBQ1mcmVlUG9pbnRzQWNjBQ9zdW1Ub0Rpc3RyaWJ1dGUJAJQKAgkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCmZyZWVLZXlBY2MDCQBmAgAABQZuZXdBY2MAAAUGbmV3QWNjCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQtmcmVlS2V5RHVjawMJAGYCAAAFBm5ld0FjYwkAZAIFDmZyZWVQb2ludHNEdWNrBQZuZXdBY2MFDmZyZWVQb2ludHNEdWNrCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGNoYXJzS2V5CQC5CQIJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyU3RyZW5ndGgFCHN0cmVuZ3RoCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhckFjY3VyYWN5BQhhY2N1cmFjeQkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJJbnRlbGxlY3QFCWludGVsbGVjdAkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJFbmR1cmFuY2UFCWVuZHVyYW5jZQkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJEZXh0ZXJpdHkFCWRleHRlcml0eQUDbmlsAgFfBQNuaWwFDXByb2xvZ0FjdGlvbnMFCndsZ0FjdGlvbnMAAAFpARxzcGxpdEJ5R2xvYmFsV2VpZ2h0c1JFQURPTkxZAQZhbW91bnQJAJQKAgUDbmlsCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUGYW1vdW50AWkBJHNwbGl0QnlHbG9iYWxBbmRMb2NhbFdlaWdodHNSRUFET05MWQMJbWF0QW1vdW50CXJlc0Ftb3VudAh0ZXJyYWlucwQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBBQh0ZXJyYWlucwkAlAoCBQNuaWwJAJQKAgkBEmdldE5lZWRlZE1hdGVyaWFscwEFCW1hdEFtb3VudAkBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBQlyZXNBbW91bnQFDXRlcnJhaW5Db3VudHMBaQETZ2V0QmFja3BhY2tSRUFET05MWQELZHVja0Fzc2V0SWQJAJQKAgUDbmlsCQC5CQIJAQtnZXRCYWNrcGFjawEJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkAgE6AWkBFGdldFdhcmVob3VzZVJFQURPTkxZAQtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAJAJQKAgUDbmlsCQC6CQIJAQxnZXRXYXJlaG91c2UDCQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAIBOgFpAQpzYXZlTGFzdFR4AAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUPZWNvbm9teUNvbnRyYWN0CQDMCAIFEnRvdXJuYW1lbnRDb250cmFjdAkAzAgCBQ1hY3Jlc0NvbnRyYWN0BQNuaWwIBQFpBmNhbGxlcgkAAgECDUFjY2VzcyBkZW5pZWQJAJQKAgkBBnByb2xvZwEFAWkAKgFpAQ91cGRhdGVEdWNrU3RhdHMCC2R1Y2tBc3NldElkB2RlbHRhWFADCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQdkZWx0YVhQAWkBDnVwZGF0ZUFjY1N0YXRzAgRhZGRyB2RlbHRhWFADCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFD2Vjb25vbXlDb250cmFjdAkAzAgCBQ1hY3Jlc0NvbnRyYWN0BQNuaWwIBQFpBmNhbGxlcgkAAgECDUFjY2VzcyBkZW5pZWQJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgUHZGVsdGFYUAFpAQllcXVpcER1Y2sBCWVxdWlwbWVudAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECGWVxdWlwRHVja19jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIXZXF1aXBEdWNrX2NoZWNrRGVsaXZlcnkEBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAtjdXJyZW50U2VncwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAIBXwQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW5ld0VxCQC1CQIFCWVxdWlwbWVudAIBXwMJAQIhPQIJAJADAQUFbmV3RXEFC05VTVNFR01FTlRTCQACAQIWV3JvbmcgZXF1aXBtZW50IHN0cmluZwQJdGVtcFByb2RCCQEGZHJlc3NCBAULY3VycmVudFNlZ3MJAQ5wcm9kU3RyVG9CeXRlcwEJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAYFA25pbAQIc2VnQnBBdXgJAJEDAgkAtQkCCQCRAwIFBW5ld0VxBQtzZWdCYWNrcGFjawIBOwABBApidWZmRWZmZWN0AwkAAAIFCHNlZ0JwQXV4AgAAAAQEYXV4MAkAkQMCCQC1CQIFCHNlZ0JwQXV4AgEsAAADCQAAAgUEYXV4MAIAAAAEBmlkeENudAkAtQkCBQRhdXgwAgE6BANpZHgJAJEDAgUGaWR4Q250AAAEA2NudAkAkQMCBQZpZHhDbnQAAQMDAwMDCQAAAgUDaWR4AgIwNgYJAAACBQNpZHgCAjA3BgkAAAIFA2lkeAICMDgJAQIhPQIFA2NudAIABwkAZgIJAQ1wYXJzZUludFZhbHVlAQUDY250AAAHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgJAQ1wYXJzZUludFZhbHVlAQUDaWR4AgFfBQpySWR4RWZmZWN0AAAEBXN0YXRzCQEMZ2V0RHVja1N0YXRzBAUEdGhpcwULZHVja0Fzc2V0SWQFCmJ1ZmZFZmZlY3QGBAhuZXdQcm9kQgkBBmRyZXNzQgQFBW5ld0VxBQl0ZW1wUHJvZEIHBQVzdGF0cwQKbmV3UHJvZFN0cgkBDmJ5dGVzVG9Qcm9kU3RyAQUIbmV3UHJvZEIJAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQllcXVpcG1lbnQJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIFCm5ld1Byb2RTdHIFA25pbAIBOgkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCCQCkAwEJAJEDAgUFc3RhdHMABwkAzAgCCQCkAwEJAJEDAgUFc3RhdHMACAkAzAgCCQCkAwEJAJEDAgUFc3RhdHMACQkAzAgCCQCkAwEJAJEDAgUFc3RhdHMACgkAzAgCCQCkAwEJAJEDAgUFc3RhdHMACwUDbmlsAgFfBQNuaWwFDXByb2xvZ0FjdGlvbnMAAAFpAQ9mb3J0aWZpY2F0ZUxhbmQCC2xhbmRBc3NldElkBHBsYW4EDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAtkdWNrQXNzZXRJZAkBC3ZhbHVlT3JFbHNlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAgAECWR1Y2tTdGF0cwkBDGdldER1Y2tTdGF0cwQFBHRoaXMFC2R1Y2tBc3NldElkAAAHBAdmb3J0S2V5CQEXa2V5Rm9ydGlmaWNhdGlvbnNCeUxhbmQBBQtsYW5kQXNzZXRJZAQMY3VycmVudEZvcnRzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUHZm9ydEtleQIMOjBfMTU6MF8xODowAgFfBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQCd2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBAdjdXJMb2Z0CQC1CQIJAJEDAgUCd2gFCXdoSWR4TE9GVAIBXwQEY3VyTwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB2N1ckxvZnQFC3ZvbE9jY3VwaWVkBARjdXJGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHY3VyTG9mdAUHdm9sRnJlZQQIbmV3Rm9ydHMJALUJAgUEcGxhbgIBXwQPJHQwMTAzNTA0MTAzNjE5CQEFZm9ydEIGBQxjdXJyZW50Rm9ydHMJAQ5wcm9kU3RyVG9CeXRlcwEJAJEDAgUCd2gFCXdoSWR4UHJvZAUEY3VyTwUEY3VyRgYFA25pbAQJdGVtcFByb2RCCAUPJHQwMTAzNTA0MTAzNjE5Al8xBAV0ZW1wTwgFDyR0MDEwMzUwNDEwMzYxOQJfMgQFdGVtcEYIBQ8kdDAxMDM1MDQxMDM2MTkCXzMEDyR0MDEwMzYyMjEwMzcxOAkBBWZvcnRCBgUIbmV3Rm9ydHMFCXRlbXBQcm9kQgUFdGVtcE8FBXRlbXBGBwUJZHVja1N0YXRzBAhuZXdQcm9kQggFDyR0MDEwMzYyMjEwMzcxOAJfMQQEbmV3TwgFDyR0MDEwMzYyMjEwMzcxOAJfMgQEbmV3RggFDyR0MDEwMzYyMjEwMzcxOAJfMwQKbmV3UHJvZFN0cgkBDmJ5dGVzVG9Qcm9kU3RyAQUIbmV3UHJvZEIECm5ld0xvZnRTdHIJALkJAgkAzAgCCQCRAwIFB2N1ckxvZnQFCXZvbExvY2tlZAkAzAgCCQCkAwEFBG5ld08JAMwIAgkApAMBBQRuZXdGCQDMCAIJAJEDAgUHY3VyTG9mdAUIdm9sVG90YWwFA25pbAIBXwkAlAoCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUHZm9ydEtleQUEcGxhbgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQkAugkCCQDMCAIJAJEDAgUCd2gFC3doSWR4TGV2ZWxzCQDMCAIJAJEDAgUCd2gFCHdoSWR4UmVzCQDMCAIJAJEDAgUCd2gFCHdoSWR4TWF0CQDMCAIFCm5ld1Byb2RTdHIJAMwIAgUKbmV3TG9mdFN0cgUDbmlsAgE6BQNuaWwFDXByb2xvZ0FjdGlvbnMAAAFpARNpbml0RHVja1RvdXJBdHRlbXB0AQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUSdG91cm5hbWVudENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAECWN1ckhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQBAljdXJMb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VyTG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQMdG91ckxvY2F0aW9uCQCsAgIJAKQDAQUGbGFzdElkAgRfVF8wCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBQljdXJIZWFsdGgJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUFbWF4SFAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAULY3VyTG9jYXRpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgUJY3VyTG9jS2V5BQx0b3VyTG9jYXRpb24FA25pbAUMdG91ckxvY2F0aW9uAWkBDGJyZWFrQXR0ZW1wdAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAljdXJMb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VyTG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04DCQECIT0CCQCRAwIJALUJAgULY3VyTG9jYXRpb24CAV8FCmxvY0lkeFR5cGUCAVQJAAIBAiJZb3VyIGR1Y2sgaXMgbm90IGluIHRoZSB0b3VybmFtZW50BAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJQKAgkAzQgCCQDNCAIFDXByb2xvZ0FjdGlvbnMJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQtzYXZlZEhlYWx0aAkBC1N0cmluZ0VudHJ5AgUJY3VyTG9jS2V5BQ1zYXZlZExvY2F0aW9uBQtjdXJMb2NhdGlvbgFpARZleGl0VG91cm5hbWVudEludGVybmFsAQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEC3NhdmVkSGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAQNc2F2ZWRMb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQtzYXZlZEhlYWx0aAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFDXNhdmVkTG9jYXRpb24FA25pbAcBaQEUZXhpdERlbGl2ZXJ5SW50ZXJuYWwBC2R1Y2tBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQINQWNjZXNzIGRlbmllZAQBZQkBEmV4aXREZWxpdmVyeUNvbW1vbgEFC2R1Y2tBc3NldElkCQCUCgIJAM4IAggFAWUCXzEIBQFlAl8yBwFpARBhdXRvRXhpdERlbGl2ZXJ5AQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEAWUJARJleGl0RGVsaXZlcnlDb21tb24BBQtkdWNrQXNzZXRJZAkAlAoCCAUBZQJfMQkAlAoCCAUBZQJfMwgFAWUCXzQBaQEOcHJlcGFyZVJvYmJlcnkCB21lc3NhZ2UDc2lnBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAZ3bGdBbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUKd2xnQXNzZXRJZAkAAgECFVdMR09MRCBwYXltZW50cyBvbmx5IQQFcGFydHMJALUJAgkAsAkBBQdtZXNzYWdlAgF8AwkBAiE9AgkAkAMBBQVwYXJ0cwACCQACAQIUV3JvbmcgbWVzc2FnZSBmb3JtYXQEC2R1Y2tBc3NldElkCQCRAwIFBXBhcnRzAAADCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh5wcmVwYXJlUm9iYmVyeV9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIccHJlcGFyZVJvYmJlcnlfY2hlY2tEZWxpdmVyeQQHcm9iQ29zdAgJAQ5nZXRSb2JiZXJ5RGF0YQIFBHRoaXMFC2R1Y2tBc3NldElkAl8xAwkAZgIFB3JvYkNvc3QFBndsZ0FtdAkAAgEJAKwCAgkArAICCQCsAgICCFBheW1lbnQgCQCkAwEFBndsZ0FtdAIMIDwgcmVxdWlyZWQgCQCkAwEFB3JvYkNvc3QECmNhbmRpZGF0ZXMJALUJAgkAkQMCBQVwYXJ0cwABAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlkdWNrU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAAABApsb2NrZWRMYW5kCQELdmFsdWVPckVsc2UCCQCiCAEJARNrZXlMb2NrZWRMYW5kQnlEdWNrAQULZHVja0Fzc2V0SWQCAAQHbGFuZEVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQUKbG9ja2VkTGFuZAAAAwMJAQIhPQIFCWR1Y2tTdGF0ZQULZHVja0lkeEZyZWUJAGYCBQdsYW5kRVRBBQNub3cHCQACAQkArAICAidZb3UgYWxyZWFkeSBzdGFydGVkIHJvYmJpbmcsIHdhaXQgdGlsbCAJAKQDAQUHbGFuZEVUQQoBB2NoZWNrZXICA2FjYwtsYW5kQXNzZXRJZAQFc3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUxhbmRSb2JiZXJ5U3RhdGUBBQtsYW5kQXNzZXRJZAAABAtjb29sZG93bkVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQULbGFuZEFzc2V0SWQAAAMJAGYCBQVzdGF0ZQkAkAMBBRBsYW5kUm9iQ29vbGRvd25zCQACAQINSW52YWxpZCBzdGF0ZQMJAGYCBQNub3cFC2Nvb2xkb3duRVRBBApzdGFrZWRUaW1lCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAMJAGcCAAAFCnN0YWtlZFRpbWUFA2FjYwQBYQkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAFkCQC1CQIIBQFhC2Rlc2NyaXB0aW9uAgFfBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAxwcm9kdWN0aXZpdHkJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBAlkZWx0YVRpbWUJAGUCBQNub3cFCnN0YWtlZFRpbWUECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUMcHJvZHVjdGl2aXR5BQZwaWVjZXMFCURBWU1JTExJUwMJAGYCBQ5NSU5fUkVTX1RPX1JPQgUIYXZhaWxSZXMFA2FjYwkAzQgCBQNhY2MFC2xhbmRBc3NldElkBQNhY2MECGZpbHRlcmVkCgACJGwFCmNhbmRpZGF0ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2NoZWNrZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDCQAAAgkAkAMBBQhmaWx0ZXJlZAAACQACAQIZTm8gY2FuZGlkYXRlcyBmb3Igcm9iYmVyeQQGcm5kSWR4CQEPZ2V0UmFuZG9tTnVtYmVyAwkAkAMBBQhmaWx0ZXJlZAUGaGVpZ2h0CQDLAQIFA3NpZwgFAWkNdHJhbnNhY3Rpb25JZAQLbGFuZEFzc2V0SWQJAJEDAgUIZmlsdGVyZWQFBnJuZElkeAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJARNrZXlMYW5kUm9iYmVyeVN0YXRlAQULbGFuZEFzc2V0SWQFDHJvYklkeExvY2tlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleUxhbmRDb29sZG93bkVUQQEFC2xhbmRBc3NldElkCQBkAgUDbm93CQCRAwIFEGxhbmRSb2JDb29sZG93bnMFDHJvYklkeExvY2tlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAUQZHVja0lkeFByZXBhcmluZwkAzAgCCQELU3RyaW5nRW50cnkCCQETa2V5TG9ja2VkTGFuZEJ5RHVjawEFC2R1Y2tBc3NldElkBQtsYW5kQXNzZXRJZAUDbmlsBQ1wcm9sb2dBY3Rpb25zBQtsYW5kQXNzZXRJZAFpAQdyb2JMYW5kAgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAlAoCCQDNCAIFDXByb2xvZ0FjdGlvbnMJAQxJbnRlZ2VyRW50cnkCCQEYa2V5TGFzdFJvYmJlcnlUaW1lQnlEdWNrAQULZHVja0Fzc2V0SWQFA25vdwAAAWkBDmFjY2VwdERlbGl2ZXJ5AAMJAQEhAQURS1NfQUxMT1dfREVMSVZFUlkJAAIBAh9EZWxpdmVyeSBmZWF0dXJlIGlzIHR1cm5lZCBvZmYhBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlmdW5kVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BQ9kZWxpdmVyeUZ1bmRLZXkAAAQLbG9ja2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BRFkZWxpdmVyeUxvY2tlZEtleQAAAwkAZgIFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQkAZQIFCWZ1bmRUb3RhbAULbG9ja2VkVG90YWwJAAIBCQCsAgIJAKwCAgkArAICAiBEZWxpdmVyeSBpcyBub3QgYXZhaWxhYmxlLCBmdW5kPQkBCmZpeGVkUG9pbnQCBQlmdW5kVG90YWwABgIJLCBsb2NrZWQ9CQEKZml4ZWRQb2ludAIFC2xvY2tlZFRvdGFsAAYEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECGRlbGF5RVRBCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQULZHVja0Fzc2V0SWQAAAMJAGYCBQhkZWxheUVUQQUDbm93CQACAQkArAICAipEZWxpdmVyeSBpcyBmb3JiaWRkZW4gZm9yIHlvdXIgZHVjayB1bnRpbCAJAKQDAQUIZGVsYXlFVEEDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh5hY2NlcHREZWxpdmVyeV9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIcYWNjZXB0RGVsaXZlcnlfY2hlY2tEZWxpdmVyeQQObmV3TG9ja2VkVG90YWwJAQVhc0ludAEJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhR1cGRhdGVEZWxpdmVyeUxvY2tlZAkAzAgCCQBkAgULbG9ja2VkVG90YWwFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUDbmlsBQNuaWwECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OBBBkZWxpdmVyeUxvY2F0aW9uCQCsAgIJAKQDAQUDbm93AgRfRF8wCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQFCWN1ckhlYWx0aAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQVtYXhIUAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQtjdXJMb2NhdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCBQljdXJMb2NLZXkFEGRlbGl2ZXJ5TG9jYXRpb24FA25pbAUNcHJvbG9nQWN0aW9ucwkAlAoCBRBkZWxpdmVyeUxvY2F0aW9uBQ5uZXdMb2NrZWRUb3RhbAAtCYnp", "height": 2791239, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EcjTyiw2Xoru6qU2xVh7co2e5YwtAr2sXagZifxYY8qm Next: 2X3Etifu3P4bLPxK2bKFWqLs1UbDvqyrJGaApqAa1sZU Diff:
OldNewDifferences
391391 func cn (co) = (parseIntValue(co[aT]) * aQ)
392392
393393
394-func cp (cq,cr) = throw(((("Cheat attempt: oldLoc=" + cq) + ", newLoc=") + cr))
395-
396-
397-let cs = false
394+func cp (cq,cr,cs) = throw(((((("Cheat attempt: oldLoc=" + cq) + ", newLoc=") + cr) + ", case=") + toString(cs)))
395+
398396
399397 let ct = false
400398
401-let cu = true
402-
403-let cv = take(drop(this.bytes, 1), 1)
404-
405-let cw = {
406- let cx = cv
407- if ((base58'2W' == cx))
399+let cu = false
400+
401+let cv = true
402+
403+let cw = take(drop(this.bytes, 1), 1)
404+
405+let cx = {
406+ let cy = cw
407+ if ((base58'2W' == cy))
408408 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
409- else if ((base58'2T' == cx))
409+ else if ((base58'2T' == cy))
410410 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
411411 else throw("Unknown chain")
412412 }
413413
414-let cy = {
415- let cx = cv
416- if ((base58'2W' == cx))
414+let cz = {
415+ let cy = cw
416+ if ((base58'2W' == cy))
417417 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
418- else if ((base58'2T' == cx))
418+ else if ((base58'2T' == cy))
419419 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
420420 else throw("Unknown chain")
421421 }
422422
423-let cz = {
424- let cx = cv
425- if ((base58'2W' == cx))
423+let cA = {
424+ let cy = cw
425+ if ((base58'2W' == cy))
426426 then 10000000000
427- else if ((base58'2T' == cx))
427+ else if ((base58'2T' == cy))
428428 then 100000000
429429 else throw("Unknown chain")
430430 }
431431
432-let cA = {
433- let cx = cv
434- if ((base58'2W' == cx))
432+let cB = {
433+ let cy = cw
434+ if ((base58'2W' == cy))
435435 then 86400000
436- else if ((base58'2T' == cx))
436+ else if ((base58'2T' == cy))
437437 then 60000
438438 else throw("Unknown chain")
439439 }
440440
441-let cB = "__"
442-
443-let cC = 1000000
444-
445-let cD = 100000000
446-
447-let cE = 25
448-
449-let cF = 100
450-
451-let cG = 225
452-
453-let cH = 400
454-
455-let cI = 625
456-
457-let cJ = [0, 1, 2, 3, 4, 5]
458-
459-func cK (cL,cM) = valueOrErrorMessage(getString(cL, cM), makeString(["mandatory ", toString(cL), ".", cM, " is not defined"], ""))
460-
461-
462-let cN = 1
463-
464-let cO = 2
465-
466-let cP = 3
467-
468-let cQ = 4
469-
470-let cR = 7
471-
472-let cS = 8
473-
474-func cT () = "%s__restConfig"
475-
476-
477-func cU () = "%s__restAddr"
478-
479-
480-func cV (cW) = split_4C(cK(cW, cT()), cB)
481-
482-
483-func cX (cY,cZ) = valueOrErrorMessage(addressFromString(cY[cZ]), ("Rest cfg doesn't contain address at index " + toString(cZ)))
484-
485-
486-let da = addressFromStringValue(valueOrElse(getString(this, cU()), cy))
487-
488-let cY = cV(da)
489-
490-let an = cX(cY, cN)
491-
492-let db = cX(cY, cO)
493-
494-let dc = cX(cY, cP)
495-
496-let dd = cX(cY, cQ)
497-
498-let de = cX(cY, cR)
499-
500-let df = cX(cY, cS)
501-
502-let dg = 0
503-
504-let dh = 1
505-
506-let di = 2
507-
508-let dj = 3
509-
510-let dk = "wlg_assetId"
511-
512-let dl = valueOrErrorMessage(getBinary(dd, dk), "WLGOLD is not issued yet")
513-
514-let dm = "acresAssetId"
515-
516-let dn = valueOrErrorMessage(getBinary(df, dm), "ACRES is not issued yet")
517-
518-let do = 2
519-
520-func dp (cL) = ("finishBlockForAddr_" + cL)
521-
522-
523-func dq () = "resTypesProportions"
524-
525-
526-func dr (ds) = ("resTypesByContinent_" + ds)
527-
528-
529-func dt (bw) = ("stakedLandsByOwner_" + bw)
530-
531-
532-func du (bw) = ("stakedPiecesByOwner_" + bw)
533-
534-
535-func dv (dw) = {
536- let cx = dw
537- if ($isInstanceOf(cx, "String"))
441+let cC = "__"
442+
443+let cD = 1000000
444+
445+let cE = 100000000
446+
447+let cF = 25
448+
449+let cG = 100
450+
451+let cH = 225
452+
453+let cI = 400
454+
455+let cJ = 625
456+
457+let cK = [0, 1, 2, 3, 4, 5]
458+
459+func cL (cM,cN) = valueOrErrorMessage(getString(cM, cN), makeString(["mandatory ", toString(cM), ".", cN, " is not defined"], ""))
460+
461+
462+let cO = 1
463+
464+let cP = 2
465+
466+let cQ = 3
467+
468+let cR = 4
469+
470+let cS = 7
471+
472+let cT = 8
473+
474+func cU () = "%s__restConfig"
475+
476+
477+func cV () = "%s__restAddr"
478+
479+
480+func cW (cX) = split_4C(cL(cX, cU()), cC)
481+
482+
483+func cY (cZ,da) = valueOrErrorMessage(addressFromString(cZ[da]), ("Rest cfg doesn't contain address at index " + toString(da)))
484+
485+
486+let db = addressFromStringValue(valueOrElse(getString(this, cV()), cz))
487+
488+let cZ = cW(db)
489+
490+let an = cY(cZ, cO)
491+
492+let dc = cY(cZ, cP)
493+
494+let dd = cY(cZ, cQ)
495+
496+let de = cY(cZ, cR)
497+
498+let df = cY(cZ, cS)
499+
500+let dg = cY(cZ, cT)
501+
502+let dh = 0
503+
504+let di = 1
505+
506+let dj = 2
507+
508+let dk = 3
509+
510+let dl = "wlg_assetId"
511+
512+let dm = valueOrErrorMessage(getBinary(de, dl), "WLGOLD is not issued yet")
513+
514+let dn = "acresAssetId"
515+
516+let do = valueOrErrorMessage(getBinary(dg, dn), "ACRES is not issued yet")
517+
518+let dp = 2
519+
520+func dq (cM) = ("finishBlockForAddr_" + cM)
521+
522+
523+func dr () = "resTypesProportions"
524+
525+
526+func ds (dt) = ("resTypesByContinent_" + dt)
527+
528+
529+func du (bw) = ("stakedLandsByOwner_" + bw)
530+
531+
532+func dv (bw) = ("stakedPiecesByOwner_" + bw)
533+
534+
535+func dw (dx) = {
536+ let cy = dx
537+ if ($isInstanceOf(cy, "String"))
538538 then {
539- let dx = cx
540- dx
539+ let dy = cy
540+ dy
541541 }
542542 else throw("fail to cast into String")
543543 }
544544
545545
546-func dy (dw) = {
547- let cx = dw
548- if ($isInstanceOf(cx, "Int"))
546+func dz (dx) = {
547+ let cy = dx
548+ if ($isInstanceOf(cy, "Int"))
549549 then {
550- let dz = cx
551- dz
550+ let dA = cy
551+ dA
552552 }
553553 else throw("fail to cast into Int")
554554 }
555555
556556
557-func dA (dw) = {
558- let cx = dw
559- if ($isInstanceOf(cx, "List[Any]"))
557+func dB (dx) = {
558+ let cy = dx
559+ if ($isInstanceOf(cy, "List[Any]"))
560560 then {
561- let dB = cx
562- dB
561+ let dC = cy
562+ dC
563563 }
564564 else throw("fail to cast into List[Any]")
565565 }
566566
567567
568-func dC (dw) = {
569- let cx = dw
570- if ($isInstanceOf(cx, "Boolean"))
568+func dD (dx) = {
569+ let cy = dx
570+ if ($isInstanceOf(cy, "Boolean"))
571571 then {
572- let dx = cx
573- dx
572+ let dy = cy
573+ dy
574574 }
575575 else throw("fail to cast into Boolean")
576576 }
577577
578578
579-func dD (dE) = {
580- let cx = dE
581- if ($isInstanceOf(cx, "(String, Int)"))
579+func dE (dF) = {
580+ let cy = dF
581+ if ($isInstanceOf(cy, "(String, Int)"))
582582 then {
583- let dF = cx
584- dF
583+ let dG = cy
584+ dG
585585 }
586586 else throw("fail to cast into (String, Int)")
587587 }
588588
589589
590-func dG (dH) = {
591- let cx = dH
592- if (("S" == cx))
593- then cE
594- else if (("M" == cx))
595- then cF
596- else if (("L" == cx))
597- then cG
598- else if (("XL" == cx))
599- then cH
600- else if (("XXL" == cx))
601- then cI
590+func dH (dI) = {
591+ let cy = dI
592+ if (("S" == cy))
593+ then cF
594+ else if (("M" == cy))
595+ then cG
596+ else if (("L" == cy))
597+ then cH
598+ else if (("XL" == cy))
599+ then cI
600+ else if (("XXL" == cy))
601+ then cJ
602602 else throw("Unknown land size")
603603 }
604604
605605
606-func dI (dx) = isDefined(parseInt(dx))
607-
608-
609-func dJ () = "contractsBlocked"
610-
611-
612-func dK (c) = ("lastTxIdByUser_" + c)
613-
614-
615-func dL (dE,dM) = {
616- let dN = pow(10, 0, dM, 0, 0, DOWN)
617- let dO = toString((dE % dN))
618- let dP = drop(toString(dN), (1 + size(dO)))
619- (((toString((dE / dN)) + ".") + dP) + dO)
620- }
621-
622-
623-func dQ (dR,dS,dT) = {
624- let dU = value(blockInfoByHeight(dS))
625- let dV = sha256((value(dU.vrf) + dT))
626- (toInt(dV) % dR)
627- }
628-
629-
630-let dW = {
631- let cx = cv
632- if ((base58'2W' == cx))
606+func dJ (dy) = isDefined(parseInt(dy))
607+
608+
609+func dK () = "contractsBlocked"
610+
611+
612+func dL (c) = ("lastTxIdByUser_" + c)
613+
614+
615+func dM (dF,dN) = {
616+ let dO = pow(10, 0, dN, 0, 0, DOWN)
617+ let dP = toString((dF % dO))
618+ let dQ = drop(toString(dO), (1 + size(dP)))
619+ (((toString((dF / dO)) + ".") + dQ) + dP)
620+ }
621+
622+
623+func dR (dS,dT,dU) = {
624+ let dV = value(blockInfoByHeight(dT))
625+ let dW = sha256((value(dV.vrf) + dU))
626+ (toInt(dW) % dS)
627+ }
628+
629+
630+let dX = {
631+ let cy = cw
632+ if ((base58'2W' == cy))
633633 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
634- else if ((base58'2T' == cx))
634+ else if ((base58'2T' == cy))
635635 then this
636636 else throw("Unknown chain")
637637 }
638638
639-let dX = {
640- let cx = cv
641- if ((base58'2W' == cx))
639+let dY = {
640+ let cy = cw
641+ if ((base58'2W' == cy))
642642 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
643- else if ((base58'2T' == cx))
643+ else if ((base58'2T' == cy))
644644 then this
645645 else throw("Unknown chain")
646646 }
647647
648-let dY = {
649- let cx = cv
650- if ((base58'2W' == cx))
651- then if (cs)
648+let dZ = {
649+ let cy = cw
650+ if ((base58'2W' == cy))
651+ then if (ct)
652652 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
653653 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
654- else if ((base58'2T' == cx))
654+ else if ((base58'2T' == cy))
655655 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
656656 else throw("Unknown chain")
657657 }
658658
659-let dZ = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
660-
661-let ea = 300000
662-
663-let eb = 5000000
664-
665-let ec = 50
666-
667-let ed = 10000000
668-
669-let ee = {
670- let cx = cv
671- if ((base58'2W' == cx))
659+let ea = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
660+
661+let eb = 300000
662+
663+let ec = 5000000
664+
665+let ed = 50
666+
667+let ee = 10000000
668+
669+let ef = {
670+ let cy = cw
671+ if ((base58'2W' == cy))
672672 then 252289527462
673- else if ((base58'2T' == cx))
673+ else if ((base58'2T' == cy))
674674 then 2522895274
675675 else throw("Unknown chain")
676676 }
677677
678-let ef = {
679- let cx = cv
680- if ((base58'2W' == cx))
678+let eg = {
679+ let cy = cw
680+ if ((base58'2W' == cy))
681681 then 250000000
682- else if ((base58'2T' == cx))
682+ else if ((base58'2T' == cy))
683683 then 250000000
684684 else throw("Unknown chain")
685685 }
686686
687-let eg = 2500000000
688-
689-let eh = toBigInt(5)
690-
691-let ei = toBigInt(20)
692-
693-let ej = toBigInt((20 * 20))
694-
695-let ek = toBigInt(((20 * 20) * 20))
696-
697-let el = toBigInt((((20 * 20) * 20) * 20))
698-
699-let em = toBigInt(((((20 * 20) * 20) * 20) * 20))
700-
701-let en = 500
702-
703-func eo () = "nextLandNum"
704-
705-
706-func ep (eq) = ("lcn_" + eq)
707-
708-
709-func er (es) = ("la_" + es)
710-
711-
712-func et (bp,bw) = ((("ilao_" + bp) + "_") + bw)
713-
714-
715-func eu (es) = ("lo_" + es)
716-
717-
718-func ev (eq) = ("duckByCustomName_" + eq)
719-
720-
721-func ew (eq) = ("accountByCustomName_" + eq)
722-
723-
724-func ex () = "oldiesList"
725-
726-
727-let ey = 0
728-
729-let ez = 1
730-
731-let eA = 2
732-
733-let eB = 0
734-
735-let eC = 5
736-
737-let eD = 6
738-
739-let eE = 7
740-
741-func eF (es,dH) = ((aC + es) + dH)
742-
743-
744-func eG (eH,eI) = {
745- let eJ = if ((eH >= 0))
746- then (((eH + eI) - 1) / eI)
747- else -((((-(eH) + eI) - 1) / eI))
748- (eJ * cD)
749- }
750-
751-
752-func eK (eL,eM) = {
753- let eN = (((((eM[0] + eM[1]) + eM[2]) + eM[3]) + eM[4]) + eM[5])
754- if ((0 >= eN))
687+let eh = 2500000000
688+
689+let ei = toBigInt(5)
690+
691+let ej = toBigInt(20)
692+
693+let ek = toBigInt((20 * 20))
694+
695+let el = toBigInt(((20 * 20) * 20))
696+
697+let em = toBigInt((((20 * 20) * 20) * 20))
698+
699+let en = toBigInt(((((20 * 20) * 20) * 20) * 20))
700+
701+let eo = 500
702+
703+func ep () = "nextLandNum"
704+
705+
706+func eq (er) = ("lcn_" + er)
707+
708+
709+func es (et) = ("la_" + et)
710+
711+
712+func eu (bp,bw) = ((("ilao_" + bp) + "_") + bw)
713+
714+
715+func ev (et) = ("lo_" + et)
716+
717+
718+func ew (er) = ("duckByCustomName_" + er)
719+
720+
721+func ex (er) = ("accountByCustomName_" + er)
722+
723+
724+func ey () = "oldiesList"
725+
726+
727+let ez = 0
728+
729+let eA = 1
730+
731+let eB = 2
732+
733+let eC = 0
734+
735+let eD = 5
736+
737+let eE = 6
738+
739+let eF = 7
740+
741+func eG (et,dI) = ((aC + et) + dI)
742+
743+
744+func eH (eI,eJ) = {
745+ let eK = if ((eI >= 0))
746+ then (((eI + eJ) - 1) / eJ)
747+ else -((((-(eI) + eJ) - 1) / eJ))
748+ (eK * cE)
749+ }
750+
751+
752+func eL (eM,eN) = {
753+ let eO = (((((eN[0] + eN[1]) + eN[2]) + eN[3]) + eN[4]) + eN[5])
754+ if ((0 >= eO))
755755 then throw("Zero weights sum")
756756 else {
757- let eO = fraction(eL, cC, eN)
758- func eP (eQ,eR) = (eQ :+ fraction(eR, eO, cC))
759-
760- let eS = eM
761- let eT = size(eS)
762- let eU = nil
763- func eV (eW,eX) = if ((eX >= eT))
764- then eW
765- else eP(eW, eS[eX])
766-
767- func eY (eW,eX) = if ((eX >= eT))
768- then eW
757+ let eP = fraction(eM, cD, eO)
758+ func eQ (eR,eS) = (eR :+ fraction(eS, eP, cD))
759+
760+ let eT = eN
761+ let eU = size(eT)
762+ let eV = nil
763+ func eW (eX,eY) = if ((eY >= eU))
764+ then eX
765+ else eQ(eX, eT[eY])
766+
767+ func eZ (eX,eY) = if ((eY >= eU))
768+ then eX
769769 else throw("List size exceeds 6")
770770
771- eY(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6)
772- }
773- }
774-
775-
776-func eZ (eL) = {
777- let fa = split(value(getString(dq())), "_")
778- if ((size(fa) != aF))
771+ eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
772+ }
773+ }
774+
775+
776+func fa (eM) = {
777+ let fb = split(value(getString(dr())), "_")
778+ if ((size(fb) != aF))
779779 then throw("Wrong proportions data")
780780 else {
781- let fb = [parseIntValue(fa[0]), parseIntValue(fa[1]), parseIntValue(fa[2]), parseIntValue(fa[3]), parseIntValue(fa[4]), parseIntValue(fa[5])]
782- eK(eL, fb)
783- }
784- }
785-
786-
787-func fc (fd,fe,ff) = {
788- let fg = eZ(ff)
789- func fh (eQ,cZ) = {
790- let fi = (parseIntValue(fe[cZ]) - fg[cZ])
791- if ((0 > fi))
792- then throw(((((("Not enough material idx=" + toString(cZ)) + ", you have ") + fe[cZ]) + ", but need ") + toString(fg[cZ])))
793- else (eQ :+ toString(fi))
781+ let fc = [parseIntValue(fb[0]), parseIntValue(fb[1]), parseIntValue(fb[2]), parseIntValue(fb[3]), parseIntValue(fb[4]), parseIntValue(fb[5])]
782+ eL(eM, fc)
783+ }
784+ }
785+
786+
787+func fd (fe,ff,fg) = {
788+ let fh = fa(fg)
789+ func fi (eR,da) = {
790+ let fj = (parseIntValue(ff[da]) - fh[da])
791+ if ((0 > fj))
792+ then throw(((((("Not enough material idx=" + toString(da)) + ", you have ") + ff[da]) + ", but need ") + toString(fh[da])))
793+ else (eR :+ toString(fj))
794794 }
795795
796- if (fd)
796+ if (fe)
797797 then {
798- let eS = cJ
799- let eT = size(eS)
800- let eU = nil
801- func eV (eW,eX) = if ((eX >= eT))
802- then eW
803- else fh(eW, eS[eX])
804-
805- func eY (eW,eX) = if ((eX >= eT))
806- then eW
798+ let eT = cK
799+ let eU = size(eT)
800+ let eV = nil
801+ func eW (eX,eY) = if ((eY >= eU))
802+ then eX
803+ else fi(eX, eT[eY])
804+
805+ func eZ (eX,eY) = if ((eY >= eU))
806+ then eX
807807 else throw("List size exceeds 6")
808808
809- eY(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6)
810- }
811- else fe
812- }
813-
814-
815-func fj (fk,fl) = if ((fl == ""))
816- then $Tuple2(fk, false)
809+ eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
810+ }
811+ else ff
812+ }
813+
814+
815+func fk (fl,fm) = if ((fm == ""))
816+ then $Tuple2(fl, false)
817817 else {
818- func fm (eQ,fn) = {
819- let fo = split(fn, ",")
820- if ((size(fo) != 2))
818+ func fn (eR,fo) = {
819+ let fp = split(fo, ",")
820+ if ((size(fp) != 2))
821821 then throw("Incorrect format, should be index,amount")
822822 else {
823- let cZ = parseIntValue(fo[0])
824- if (if ((0 > cZ))
823+ let da = parseIntValue(fp[0])
824+ if (if ((0 > da))
825825 then true
826- else (cZ >= size(aS)))
826+ else (da >= size(aS)))
827827 then throw("Unknown product idx")
828828 else {
829- let fp = parseIntValue(fo[1])
830- let fq = split(eQ._1, (fo[0] + ":"))
831- if ((size(fq) != 2))
832- then throw((("You don't have " + aO[cZ]) + " equipped"))
829+ let fq = parseIntValue(fp[1])
830+ let fr = split(eR._1, (fp[0] + ":"))
831+ if ((size(fr) != 2))
832+ then throw((("You don't have " + aO[da]) + " equipped"))
833833 else {
834- let fr = fq[1]
835- let fs = if (dI(take(drop(fr, 1), 1)))
834+ let fs = fr[1]
835+ let ft = if (dJ(take(drop(fs, 1), 1)))
836836 then 2
837837 else 1
838- let ft = parseIntValue(take(fr, fs))
839- let fu = drop(fr, fs)
840- let fv = if ((ft >= fp))
841- then (ft - fp)
842- else throw(((((("You equipped " + toString(ft)) + " of ") + aO[cZ]) + ", but tried to use ") + toString(fp)))
843- $Tuple2(((((fq[0] + fo[0]) + ":") + toString(fv)) + fu), if (eQ._2)
838+ let fu = parseIntValue(take(fs, ft))
839+ let fv = drop(fs, ft)
840+ let fw = if ((fu >= fq))
841+ then (fu - fq)
842+ else throw(((((("You equipped " + toString(fu)) + " of ") + aO[da]) + ", but tried to use ") + toString(fq)))
843+ $Tuple2(((((fr[0] + fp[0]) + ":") + toString(fw)) + fv), if (eR._2)
844844 then true
845- else if (if ((cZ >= 6))
846- then (8 >= cZ)
845+ else if (if ((da >= 6))
846+ then (8 >= da)
847847 else false)
848- then (fv == 0)
848+ then (fw == 0)
849849 else false)
850850 }
851851 }
852852 }
853853 }
854854
855- let eS = split(fl, "_")
856- let eT = size(eS)
857- let eU = $Tuple2(fk, false)
858- func eV (eW,eX) = if ((eX >= eT))
859- then eW
860- else fm(eW, eS[eX])
861-
862- func eY (eW,eX) = if ((eX >= eT))
863- then eW
855+ let eT = split(fm, "_")
856+ let eU = size(eT)
857+ let eV = $Tuple2(fl, false)
858+ func eW (eX,eY) = if ((eY >= eU))
859+ then eX
860+ else fn(eX, eT[eY])
861+
862+ func eZ (eX,eY) = if ((eY >= eU))
863+ then eX
864864 else throw("List size exceeds 10")
865865
866- eY(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
866+ eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
867867 }
868868
869869
870-func fw (fx) = {
871- let fy = if ((fx == ""))
870+func fx (fy) = {
871+ let fz = if ((fy == ""))
872872 then nil
873- else split_4C(fx, "_")
874- func fz (eQ,co) = {
875- let fA = (size(eQ) / 8)
876- let ft = if ((size(fy) > fA))
877- then parseIntValue(fy[fA])
873+ else split_4C(fy, "_")
874+ func fA (eR,co) = {
875+ let fB = (size(eR) / 8)
876+ let fu = if ((size(fz) > fB))
877+ then parseIntValue(fz[fB])
878878 else 0
879- (eQ + toBytes(ft))
879+ (eR + toBytes(fu))
880880 }
881881
882- let eS = aS
883- let eT = size(eS)
884- let eU = base58''
885- func eV (eW,eX) = if ((eX >= eT))
886- then eW
887- else fz(eW, eS[eX])
888-
889- func eY (eW,eX) = if ((eX >= eT))
890- then eW
882+ let eT = aS
883+ let eU = size(eT)
884+ let eV = base58''
885+ func eW (eX,eY) = if ((eY >= eU))
886+ then eX
887+ else fA(eX, eT[eY])
888+
889+ func eZ (eX,eY) = if ((eY >= eU))
890+ then eX
891891 else throw("List size exceeds 50")
892892
893- eY(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eU, 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)
894- }
895-
896-
897-func fB (fC) = {
898- func fD (eQ,co) = {
899- let fA = size(eQ)
900- let fE = take(drop(fC, (8 * fA)), 8)
901- (eQ :+ toString(toInt(fE)))
893+ eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 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)
894+ }
895+
896+
897+func fC (fD) = {
898+ func fE (eR,co) = {
899+ let fB = size(eR)
900+ let fF = take(drop(fD, (8 * fB)), 8)
901+ (eR :+ toString(toInt(fF)))
902902 }
903903
904904 makeString_2C({
905- let eS = aS
906- let eT = size(eS)
907- let eU = nil
908- func eV (eW,eX) = if ((eX >= eT))
909- then eW
910- else fD(eW, eS[eX])
911-
912- func eY (eW,eX) = if ((eX >= eT))
913- then eW
905+ let eT = aS
906+ let eU = size(eT)
907+ let eV = nil
908+ func eW (eX,eY) = if ((eY >= eU))
909+ then eX
910+ else fE(eX, eT[eY])
911+
912+ func eZ (eX,eY) = if ((eY >= eU))
913+ then eX
914914 else throw("List size exceeds 50")
915915
916- eY(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eU, 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)
916+ eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 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)
917917 }, "_")
918918 }
919919
920920
921-func fF (fG,fH) = {
922- func fI (eQ,fA) = {
923- let fJ = if ((size(fG) > (7 + fA)))
924- then fG[(7 + fA)]
921+func fG (fH,fI) = {
922+ func fJ (eR,fB) = {
923+ let fK = if ((size(fH) > (7 + fB)))
924+ then fH[(7 + fB)]
925925 else 0
926- if ((parseIntValue(fH[fA]) > (fG[fA] + fJ)))
927- then throw(("Requirement not satisfied: " + j[fA]))
926+ if ((parseIntValue(fI[fB]) > (fH[fB] + fK)))
927+ then throw(("Requirement not satisfied: " + j[fB]))
928928 else true
929929 }
930930
931- let eS = [0, 1, 2, 3, 4, 5, 6]
932- let eT = size(eS)
933- let eU = false
934- func eV (eW,eX) = if ((eX >= eT))
935- then eW
936- else fI(eW, eS[eX])
937-
938- func eY (eW,eX) = if ((eX >= eT))
939- then eW
931+ let eT = [0, 1, 2, 3, 4, 5, 6]
932+ let eU = size(eT)
933+ let eV = false
934+ func eW (eX,eY) = if ((eY >= eU))
935+ then eX
936+ else fJ(eX, eT[eY])
937+
938+ func eZ (eX,eY) = if ((eY >= eU))
939+ then eX
940940 else throw("List size exceeds 7")
941941
942- eY(eV(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6), 7)
943- }
944-
945-
946-func fK (fL,fy,fM,fG,fN,fO) = {
947- let fo = split(fL, ":")
948- if ((size(fo) != 2))
942+ eZ(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7)
943+ }
944+
945+
946+func fL (fM,fz,fN,fH,fO,fP) = {
947+ let fp = split(fM, ":")
948+ if ((size(fp) != 2))
949949 then throw("Incorrect format, should be index:amount")
950- else if (if (!(fM))
951- then (size(fo[0]) != 2)
950+ else if (if (!(fN))
951+ then (size(fp[0]) != 2)
952952 else false)
953953 then throw("Product idx should be 2 digits, zero padded")
954954 else {
955- let fP = parseIntValue(fo[0])
956- let fQ = parseIntValue(fo[1])
957- if (!(containsElement(aR, fP)))
958- then throw((("Product '" + aO[fP]) + "' cannot be used for land defense"))
959- else if ((0 > fQ))
955+ let fQ = parseIntValue(fp[0])
956+ let fR = parseIntValue(fp[1])
957+ if (!(containsElement(aR, fQ)))
958+ then throw((("Product '" + aO[fQ]) + "' cannot be used for land defense"))
959+ else if ((0 > fR))
960960 then throw("Count can't be negative")
961- else if ((fQ > t))
962- then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fP]))
963- else if ((fQ == 0))
964- then $Tuple3(fy, fN, fO)
961+ else if ((fR > t))
962+ then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fQ]))
963+ else if ((fR == 0))
964+ then $Tuple3(fz, fO, fP)
965965 else {
966- let fR = take(fy, (8 * fP))
967- let ft = toInt(take(drop(fy, (8 * fP)), 8))
968- let fu = drop(fy, (8 * (fP + 1)))
969- let co = split(aS[fP], "_")
970- if (if (!(fM))
971- then (fQ > ft)
966+ let fS = take(fz, (8 * fQ))
967+ let fu = toInt(take(drop(fz, (8 * fQ)), 8))
968+ let fv = drop(fz, (8 * (fQ + 1)))
969+ let co = split(aS[fQ], "_")
970+ if (if (!(fN))
971+ then (fR > fu)
972972 else false)
973- then throw(((((("You have " + toString(ft)) + " of ") + aO[fP]) + ", but tried to use ") + toString(fQ)))
973+ then throw(((((("You have " + toString(fu)) + " of ") + aO[fQ]) + ", but tried to use ") + toString(fR)))
974974 else {
975- let fv = if (if (!(fM))
976- then fF(fG, split(co[aV], ","))
975+ let fw = if (if (!(fN))
976+ then fG(fH, split(co[aV], ","))
977977 else false)
978- then (ft - fQ)
979- else (ft + fQ)
980- let fS = (eG(fv, aX) - eG(ft, aX))
981- $Tuple3(((fR + toBytes(fv)) + fu), (fN + fS), (fO - fS))
978+ then (fu - fR)
979+ else (fu + fR)
980+ let fT = (eH(fw, aX) - eH(fu, aX))
981+ $Tuple3(((fS + toBytes(fw)) + fv), (fO + fT), (fP - fT))
982982 }
983983 }
984984 }
985985 }
986986
987987
988-func fT (fL,fy,fM,fU,fV,fW,fG) = {
989- let fo = split(fL, ":")
990- if ((size(fo) != 2))
988+func fU (fM,fz,fN,fV,fW,fX,fH) = {
989+ let fp = split(fM, ":")
990+ if ((size(fp) != 2))
991991 then throw("Incorrect format, should be index:amount")
992- else if (if (!(fM))
993- then (size(fo[0]) != 2)
992+ else if (if (!(fN))
993+ then (size(fp[0]) != 2)
994994 else false)
995995 then throw("Product idx should be 2 digits, zero padded")
996996 else {
997- let fP = parseIntValue(fo[0])
998- let fQ = parseIntValue(fo[1])
999- if (if ((0 > fP))
997+ let fQ = parseIntValue(fp[0])
998+ let fR = parseIntValue(fp[1])
999+ if (if ((0 > fQ))
10001000 then true
1001- else (fP >= size(aS)))
1001+ else (fQ >= size(aS)))
10021002 then throw("Unknown product idx")
1003- else if ((0 > fQ))
1003+ else if ((0 > fR))
10041004 then throw("Count can't be negative")
1005- else if ((fQ > t))
1006- then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fP]))
1007- else if ((fQ == 0))
1008- then $Tuple2(fy, false)
1005+ else if ((fR > t))
1006+ then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fQ]))
1007+ else if ((fR == 0))
1008+ then $Tuple2(fz, false)
10091009 else {
1010- let fR = take(fy, (8 * fP))
1011- let ft = toInt(take(drop(fy, (8 * fP)), 8))
1012- let fu = drop(fy, (8 * (fP + 1)))
1013- let co = split(aS[fP], "_")
1014- if (if (!(fM))
1015- then (fQ > ft)
1010+ let fS = take(fz, (8 * fQ))
1011+ let fu = toInt(take(drop(fz, (8 * fQ)), 8))
1012+ let fv = drop(fz, (8 * (fQ + 1)))
1013+ let co = split(aS[fQ], "_")
1014+ if (if (!(fN))
1015+ then (fR > fu)
10161016 else false)
1017- then throw(((((("You have " + toString(ft)) + " of ") + aO[fP]) + ", but tried to use ") + toString(fQ)))
1017+ then throw(((((("You have " + toString(fu)) + " of ") + aO[fQ]) + ", but tried to use ") + toString(fR)))
10181018 else {
1019- let fX = if (if (!(fM))
1020- then fF(fG, split(co[aV], ","))
1019+ let fY = if (if (!(fN))
1020+ then fG(fH, split(co[aV], ","))
10211021 else false)
10221022 then {
1023- let fY = co[aW]
1024- if ((fY == ""))
1023+ let fZ = co[aW]
1024+ if ((fZ == ""))
10251025 then throw("Item cannot be equipped")
10261026 else {
1027- let fZ = parseIntValue(fY)
1028- let ga = (fZ / 100)
1029- if ((fU != ga))
1027+ let ga = parseIntValue(fZ)
1028+ let gb = (ga / 100)
1029+ if ((fV != gb))
10301030 then throw("Segment incompatible")
10311031 else {
1032- let gb = ((fZ % 100) / 10)
1033- if ((fV != gb))
1032+ let gc = ((ga % 100) / 10)
1033+ if ((fW != gc))
10341034 then throw("Slot incompatible")
10351035 else {
1036- let gc = (fZ % 10)
1037- if (if ((fW != 0))
1038- then (gc > 1)
1036+ let gd = (ga % 10)
1037+ if (if ((fX != 0))
1038+ then (gd > 1)
10391039 else false)
10401040 then throw("Big items should occupy slot 0")
1041- else (gc > 1)
1041+ else (gd > 1)
10421042 }
10431043 }
10441044 }
10451045 }
10461046 else false
1047- $Tuple2(((fR + toBytes((ft + (if (fM)
1048- then fQ
1049- else -(fQ))))) + fu), fX)
1047+ $Tuple2(((fS + toBytes((fu + (if (fN)
1048+ then fR
1049+ else -(fR))))) + fv), fY)
10501050 }
10511051 }
10521052 }
10531053 }
10541054
10551055
1056-func gd (ge,gf,fM,fU,fV,gg) = if ((ge != ""))
1056+func ge (gf,gg,fN,fV,fW,gh) = if ((gf != ""))
10571057 then {
1058- let gh = split(ge, ",")
1059- if ((size(gh) > s))
1058+ let gi = split(gf, ",")
1059+ if ((size(gi) > s))
10601060 then throw("Wrong slots format")
10611061 else {
1062- let gi = gh[0]
1063- let gj = if ((size(gh) > 1))
1064- then gh[1]
1062+ let gj = gi[0]
1063+ let gk = if ((size(gi) > 1))
1064+ then gi[1]
10651065 else ""
1066- if (if ((gi == ""))
1067- then (gj == "")
1066+ if (if ((gj == ""))
1067+ then (gk == "")
10681068 else false)
1069- then gf
1069+ then gg
10701070 else {
1071- let gk = if ((gi != ""))
1072- then fT(gi, gf, fM, fU, fV, 0, gg)
1073- else $Tuple2(gf, false)
1074- if ((gj != ""))
1075- then if (gk._2)
1071+ let gl = if ((gj != ""))
1072+ then fU(gj, gg, fN, fV, fW, 0, gh)
1073+ else $Tuple2(gg, false)
1074+ if ((gk != ""))
1075+ then if (gl._2)
10761076 then throw("Big item already occupies slot")
1077- else fT(gj, gk._1, fM, fU, fV, 1, gg)._1
1078- else gk._1
1077+ else fU(gk, gl._1, fN, fV, fW, 1, gh)._1
1078+ else gl._1
10791079 }
10801080 }
10811081 }
1082- else gf
1083-
1084-
1085-func gl (gm,gn,fM,gg) = {
1086- func fU (eQ,go) = {
1087- let fA = eQ._1
1088- let fV = split(go, ";")
1089- if ((size(fV) != r))
1082+ else gg
1083+
1084+
1085+func gm (gn,go,fN,gh) = {
1086+ func fV (eR,gp) = {
1087+ let fB = eR._1
1088+ let fW = split(gp, ";")
1089+ if ((size(fW) != r))
10901090 then throw("Wrong segment format")
10911091 else {
1092- let gp = fV[0]
1093- let gq = fV[1]
1094- if (if ((gp == ""))
1095- then (gq == "")
1092+ let gq = fW[0]
1093+ let gr = fW[1]
1094+ if (if ((gq == ""))
1095+ then (gr == "")
10961096 else false)
1097- then $Tuple2((fA + 1), eQ._2)
1097+ then $Tuple2((fB + 1), eR._2)
10981098 else {
1099- let gr = gd(gp, eQ._2, fM, fA, 0, gg)
1100- $Tuple2((fA + 1), gd(gq, gr, fM, fA, 1, gg))
1099+ let gs = ge(gq, eR._2, fN, fB, 0, gh)
1100+ $Tuple2((fB + 1), ge(gr, gs, fN, fB, 1, gh))
11011101 }
11021102 }
11031103 }
11041104
1105-( let eS = gm
1106- let eT = size(eS)
1107- let eU = $Tuple2(0, gn)
1108- func eV (eW,eX) = if ((eX >= eT))
1109- then eW
1110- else fU(eW, eS[eX])
1111-
1112- func eY (eW,eX) = if ((eX >= eT))
1113- then eW
1105+( let eT = gn
1106+ let eU = size(eT)
1107+ let eV = $Tuple2(0, go)
1108+ func eW (eX,eY) = if ((eY >= eU))
1109+ then eX
1110+ else fV(eX, eT[eY])
1111+
1112+ func eZ (eX,eY) = if ((eY >= eU))
1113+ then eX
11141114 else throw("List size exceeds 6")
11151115
1116- eY(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6))._2
1117- }
1118-
1119-
1120-func gs (gm,gn,fN,fO,fM,fG) = if ((3 > size(gm)))
1116+ eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6))._2
1117+ }
1118+
1119+
1120+func gt (gn,go,fO,fP,fN,fH) = if ((3 > size(gn)))
11211121 then throw("At least duck, mines and traps parts are required")
11221122 else {
1123- func fU (eQ,go) = {
1124- let fA = eQ._1
1125- if ((fA == 0))
1126- then $Tuple4((fA + 1), eQ._2, eQ._3, eQ._4)
1123+ func fV (eR,gp) = {
1124+ let fB = eR._1
1125+ if ((fB == 0))
1126+ then $Tuple4((fB + 1), eR._2, eR._3, eR._4)
11271127 else {
1128- let gt = fK(go, eQ._2, fM, fG, eQ._3, eQ._4)
1129- $Tuple4((fA + 1), gt._1, gt._2, gt._3)
1128+ let gu = fL(gp, eR._2, fN, fH, eR._3, eR._4)
1129+ $Tuple4((fB + 1), gu._1, gu._2, gu._3)
11301130 }
11311131 }
11321132
1133- let gu = {
1134- let eS = gm
1135- let eT = size(eS)
1136- let eU = $Tuple4(0, gn, fN, fO)
1137- func eV (eW,eX) = if ((eX >= eT))
1138- then eW
1139- else fU(eW, eS[eX])
1140-
1141- func eY (eW,eX) = if ((eX >= eT))
1142- then eW
1133+ let gv = {
1134+ let eT = gn
1135+ let eU = size(eT)
1136+ let eV = $Tuple4(0, go, fO, fP)
1137+ func eW (eX,eY) = if ((eY >= eU))
1138+ then eX
1139+ else fV(eX, eT[eY])
1140+
1141+ func eZ (eX,eY) = if ((eY >= eU))
1142+ then eX
11431143 else throw("List size exceeds 10")
11441144
1145- eY(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1146- }
1147- $Tuple3(gu._2, gu._3, gu._4)
1145+ eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1146+ }
1147+ $Tuple3(gv._2, gv._3, gv._4)
11481148 }
11491149
11501150
1151-func gv (A) = {
1152- let gw = F(A)
1153- let gx = split(valueOrElse(getString(gw), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1154- let gy = gl(gx, dZ, true, nil)
1155- let gz = split(gx[p], ";")[1]
1156- let ao = if ((gz == ""))
1151+func gw (A) = {
1152+ let gx = F(A)
1153+ let gy = split(valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1154+ let gz = gm(gy, ea, true, nil)
1155+ let gA = split(gy[p], ";")[1]
1156+ let ao = if ((gA == ""))
11571157 then 0
11581158 else {
1159- let gA = split(gz, ",")[0]
1160- if ((gA == ""))
1159+ let gB = split(gA, ",")[0]
1160+ if ((gB == ""))
11611161 then 0
11621162 else {
1163- let fL = split(gA, ":")
1164- let cZ = fL[0]
1165- let gB = fL[1]
1166- if (if (if (if (if ((cZ == "06"))
1163+ let fM = split(gB, ":")
1164+ let da = fM[0]
1165+ let gC = fM[1]
1166+ if (if (if (if (if ((da == "06"))
11671167 then true
1168- else (cZ == "07"))
1168+ else (da == "07"))
11691169 then true
1170- else (cZ == "08"))
1171- then (gB != "")
1170+ else (da == "08"))
1171+ then (gC != "")
11721172 else false)
1173- then (parseIntValue(gB) > 0)
1173+ then (parseIntValue(gC) > 0)
11741174 else false)
1175- then parseIntValue(split(aS[parseIntValue(cZ)], "_")[aU])
1175+ then parseIntValue(split(aS[parseIntValue(da)], "_")[aU])
11761176 else 0
11771177 }
11781178 }
1179- let gg = am(this, A, ao, true)
1180- let gC = gl(gx, gy, false, gg)
1181- (gC == gC)
1182- }
1183-
1184-
1185-func gD (gE,gF,gG,gH) = if ((size(gE) != aF))
1179+ let gh = am(this, A, ao, true)
1180+ let gD = gm(gy, gz, false, gh)
1181+ (gD == gD)
1182+ }
1183+
1184+
1185+func gE (gF,gG,gH,gI) = if ((size(gF) != aF))
11861186 then throw("Wrong proportions data")
11871187 else {
1188- func gI (eQ,gJ) = {
1189- let fi = (parseIntValue(gE[gJ]) + ((gH * gF[gJ]) * gG))
1190- if ((0 > fi))
1191- then throw(((((((("Panic! Pieces of type=" + toString(gJ)) + ", sign=") + toString(gH)) + ", terrainCounts[i]=") + toString(gF[gJ])) + ", landSizeIndex=") + toString(gG)))
1192- else (eQ :+ toString(fi))
1193- }
1194-
1195- let eS = cJ
1196- let eT = size(eS)
1197- let eU = nil
1198- func eV (eW,eX) = if ((eX >= eT))
1199- then eW
1200- else gI(eW, eS[eX])
1201-
1202- func eY (eW,eX) = if ((eX >= eT))
1203- then eW
1188+ func gJ (eR,gK) = {
1189+ let fj = (parseIntValue(gF[gK]) + ((gI * gG[gK]) * gH))
1190+ if ((0 > fj))
1191+ then throw(((((((("Panic! Pieces of type=" + toString(gK)) + ", sign=") + toString(gI)) + ", terrainCounts[i]=") + toString(gG[gK])) + ", landSizeIndex=") + toString(gH)))
1192+ else (eR :+ toString(fj))
1193+ }
1194+
1195+ let eT = cK
1196+ let eU = size(eT)
1197+ let eV = nil
1198+ func eW (eX,eY) = if ((eY >= eU))
1199+ then eX
1200+ else gJ(eX, eT[eY])
1201+
1202+ func eZ (eX,eY) = if ((eY >= eU))
1203+ then eX
12041204 else throw("List size exceeds 6")
12051205
1206- eY(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6)
1206+ eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
12071207 }
12081208
12091209
1210-func gK (gF,gG,gH) = {
1211- let gE = split(valueOrElse(getString(dq()), "0_0_0_0_0_0"), "_")
1212- makeString(gD(gE, gF, gG, gH), "_")
1213- }
1214-
1215-
1216-func gL (gM) = [(size(split(gM, "A")) - 1), (size(split(gM, "B")) - 1), (size(split(gM, "C")) - 1), (size(split(gM, "D")) - 1), (size(split(gM, "E")) - 1), (size(split(gM, "F")) - 1)]
1217-
1218-
1219-func gN (gO,gF,gP,gG,gQ) = {
1220- func gR (eQ,gJ) = {
1221- let gS = ((fraction(gP, gQ, a) * gF[gJ]) * gG)
1222- (eQ :+ toString((parseIntValue(gO[gJ]) + gS)))
1210+func gL (gG,gH,gI) = {
1211+ let gF = split(valueOrElse(getString(dr()), "0_0_0_0_0_0"), "_")
1212+ makeString(gE(gF, gG, gH, gI), "_")
1213+ }
1214+
1215+
1216+func gM (gN) = [(size(split(gN, "A")) - 1), (size(split(gN, "B")) - 1), (size(split(gN, "C")) - 1), (size(split(gN, "D")) - 1), (size(split(gN, "E")) - 1), (size(split(gN, "F")) - 1)]
1217+
1218+
1219+func gO (gP,gG,gQ,gH,gR) = {
1220+ func gS (eR,gK) = {
1221+ let gT = ((fraction(gQ, gR, a) * gG[gK]) * gH)
1222+ (eR :+ toString((parseIntValue(gP[gK]) + gT)))
12231223 }
12241224
1225- let fb = {
1226- let eS = cJ
1227- let eT = size(eS)
1228- let eU = nil
1229- func eV (eW,eX) = if ((eX >= eT))
1230- then eW
1231- else gR(eW, eS[eX])
1232-
1233- func eY (eW,eX) = if ((eX >= eT))
1234- then eW
1225+ let fc = {
1226+ let eT = cK
1227+ let eU = size(eT)
1228+ let eV = nil
1229+ func eW (eX,eY) = if ((eY >= eU))
1230+ then eX
1231+ else gS(eX, eT[eY])
1232+
1233+ func eZ (eX,eY) = if ((eY >= eU))
1234+ then eX
12351235 else throw("List size exceeds 6")
12361236
1237- eY(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6)
1237+ eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
12381238 }
1239- makeString(fb, "_")
1240- }
1241-
1242-
1243-func gT (gF,gP,gG,gQ) = {
1244- func gR (eQ,gJ) = {
1245- let gS = ((fraction(gP, gQ, a) * gF[gJ]) * gG)
1246- $Tuple2((eQ._1 :+ gS), (eQ._2 + gS))
1239+ makeString(fc, "_")
1240+ }
1241+
1242+
1243+func gU (gG,gQ,gH,gR) = {
1244+ func gS (eR,gK) = {
1245+ let gT = ((fraction(gQ, gR, a) * gG[gK]) * gH)
1246+ $Tuple2((eR._1 :+ gT), (eR._2 + gT))
12471247 }
12481248
1249- let eS = cJ
1250- let eT = size(eS)
1251- let eU = $Tuple2(nil, 0)
1252- func eV (eW,eX) = if ((eX >= eT))
1253- then eW
1254- else gR(eW, eS[eX])
1255-
1256- func eY (eW,eX) = if ((eX >= eT))
1257- then eW
1249+ let eT = cK
1250+ let eU = size(eT)
1251+ let eV = $Tuple2(nil, 0)
1252+ func eW (eX,eY) = if ((eY >= eU))
1253+ then eX
1254+ else gS(eX, eT[eY])
1255+
1256+ func eZ (eX,eY) = if ((eY >= eU))
1257+ then eX
12581258 else throw("List size exceeds 6")
12591259
1260- eY(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6)
1261- }
1262-
1263-
1264-func gU (gV,gW,gX,gY) = {
1265- let gZ = gX._1
1266- let ha = gX._2
1267- if ((ha == 0))
1268- then $Tuple2(makeString(gV, "_"), makeString(gW, "_"))
1269- else if ((gY >= ha))
1260+ eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
1261+ }
1262+
1263+
1264+func gV (gW,gX,gY,gZ) = {
1265+ let ha = gY._1
1266+ let hb = gY._2
1267+ if ((hb == 0))
1268+ then $Tuple2(makeString(gW, "_"), makeString(gX, "_"))
1269+ else if ((gZ >= hb))
12701270 then {
1271- func hb (eQ,gJ) = (eQ :+ toString((parseIntValue(gV[gJ]) + gZ[gJ])))
1272-
1273- let fb = {
1274- let eS = cJ
1275- let eT = size(eS)
1276- let eU = nil
1277- func eV (eW,eX) = if ((eX >= eT))
1278- then eW
1279- else hb(eW, eS[eX])
1280-
1281- func eY (eW,eX) = if ((eX >= eT))
1282- then eW
1271+ func hc (eR,gK) = (eR :+ toString((parseIntValue(gW[gK]) + ha[gK])))
1272+
1273+ let fc = {
1274+ let eT = cK
1275+ let eU = size(eT)
1276+ let eV = nil
1277+ func eW (eX,eY) = if ((eY >= eU))
1278+ then eX
1279+ else hc(eX, eT[eY])
1280+
1281+ func eZ (eX,eY) = if ((eY >= eU))
1282+ then eX
12831283 else throw("List size exceeds 6")
12841284
1285- eY(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6)
1285+ eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
12861286 }
1287- $Tuple2(makeString(fb, "_"), makeString(gW, "_"))
1287+ $Tuple2(makeString(fc, "_"), makeString(gX, "_"))
12881288 }
12891289 else {
1290- func hc (eQ,gJ) = {
1291- let hd = fraction(gZ[gJ], gY, ha)
1292- $Tuple2((eQ._1 :+ toString((parseIntValue(gV[gJ]) + hd))), (eQ._2 :+ toString(((parseIntValue(gW[gJ]) + gZ[gJ]) - hd))))
1290+ func hd (eR,gK) = {
1291+ let he = fraction(ha[gK], gZ, hb)
1292+ $Tuple2((eR._1 :+ toString((parseIntValue(gW[gK]) + he))), (eR._2 :+ toString(((parseIntValue(gX[gK]) + ha[gK]) - he))))
12931293 }
12941294
1295- let fb = {
1296- let eS = cJ
1297- let eT = size(eS)
1298- let eU = $Tuple2(nil, nil)
1299- func eV (eW,eX) = if ((eX >= eT))
1300- then eW
1301- else hc(eW, eS[eX])
1302-
1303- func eY (eW,eX) = if ((eX >= eT))
1304- then eW
1295+ let fc = {
1296+ let eT = cK
1297+ let eU = size(eT)
1298+ let eV = $Tuple2(nil, nil)
1299+ func eW (eX,eY) = if ((eY >= eU))
1300+ then eX
1301+ else hd(eX, eT[eY])
1302+
1303+ func eZ (eX,eY) = if ((eY >= eU))
1304+ then eX
13051305 else throw("List size exceeds 6")
13061306
1307- eY(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6)
1307+ eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
13081308 }
1309- $Tuple2(makeString(fb._1, "_"), makeString(fb._2, "_"))
1309+ $Tuple2(makeString(fc._1, "_"), makeString(fc._2, "_"))
13101310 }
13111311 }
13121312
13131313
1314-func he (hf) = if ((hf >= toBigInt(0)))
1315- then hf
1316- else -(hf)
1317-
1318-
1319-let hg = [[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]]
1320-
1321-func hh (dz,hi) = {
1322- let hj = toInt((dz % ei))
1323- let hk = if ((hi[0] > hj))
1314+func hf (hg) = if ((hg >= toBigInt(0)))
1315+ then hg
1316+ else -(hg)
1317+
1318+
1319+let hh = [[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]]
1320+
1321+func hi (dA,hj) = {
1322+ let hk = toInt((dA % ej))
1323+ let hl = if ((hj[0] > hk))
13241324 then "A"
1325- else if ((hi[1] > hj))
1325+ else if ((hj[1] > hk))
13261326 then "B"
1327- else if ((hi[2] > hj))
1327+ else if ((hj[2] > hk))
13281328 then "C"
1329- else if ((hi[3] > hj))
1329+ else if ((hj[3] > hk))
13301330 then "D"
1331- else if ((hi[4] > hj))
1331+ else if ((hj[4] > hk))
13321332 then "E"
13331333 else "F"
1334- hk
1335- }
1336-
1337-
1338-func hl (hm,hn) = {
1339- let ho = hg[hn]
1340- func hp (eQ,eR) = $Tuple2((((((eQ._1 + hh(eQ._2, ho)) + hh((eQ._2 / ei), ho)) + hh((eQ._2 / ej), ho)) + hh((eQ._2 / ek), ho)) + hh((eQ._2 / el), ho)), (eQ._2 / em))
1341-
1342- let gu = {
1343- let eS = [1, 2, 3, 4, 5]
1344- let eT = size(eS)
1345- let eU = $Tuple2("", (hm / eh))
1346- func eV (eW,eX) = if ((eX >= eT))
1347- then eW
1348- else hp(eW, eS[eX])
1349-
1350- func eY (eW,eX) = if ((eX >= eT))
1351- then eW
1334+ hl
1335+ }
1336+
1337+
1338+func hm (hn,ho) = {
1339+ let hp = hh[ho]
1340+ func hq (eR,eS) = $Tuple2((((((eR._1 + hi(eR._2, hp)) + hi((eR._2 / ej), hp)) + hi((eR._2 / ek), hp)) + hi((eR._2 / el), hp)) + hi((eR._2 / em), hp)), (eR._2 / en))
1341+
1342+ let gv = {
1343+ let eT = [1, 2, 3, 4, 5]
1344+ let eU = size(eT)
1345+ let eV = $Tuple2("", (hn / ei))
1346+ func eW (eX,eY) = if ((eY >= eU))
1347+ then eX
1348+ else hq(eX, eT[eY])
1349+
1350+ func eZ (eX,eY) = if ((eY >= eU))
1351+ then eX
13521352 else throw("List size exceeds 5")
13531353
1354- eY(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5)
1354+ eZ(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5)
13551355 }
1356- gu._1
1357- }
1358-
1359-
1360-let hq = [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]
1361-
1362-let hr = ["A", "B", "C", "D", "E", "F"]
1363-
1364-func hs (ht,gG) = {
1365- func hu (eQ,dx) = {
1366- let fA = eQ._2
1367- let hv = parseIntValue(dx)
1368- let hf = if ((hv == 0))
1356+ gv._1
1357+ }
1358+
1359+
1360+let hr = [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]
1361+
1362+let hs = ["A", "B", "C", "D", "E", "F"]
1363+
1364+func ht (hu,gH) = {
1365+ func hv (eR,dy) = {
1366+ let fB = eR._2
1367+ let hw = parseIntValue(dy)
1368+ let hg = if ((hw == 0))
13691369 then 0
1370- else if ((hv >= (4 * gG)))
1371- then (hv / gG)
1372- else if ((hv > (3 * gG)))
1370+ else if ((hw >= (4 * gH)))
1371+ then (hw / gH)
1372+ else if ((hw > (3 * gH)))
13731373 then 3
1374- else (((hv - 1) / gG) + 1)
1375- $Tuple3((eQ._1 :+ hf), (eQ._2 + 1), (eQ._3 + hf))
1374+ else (((hw - 1) / gH) + 1)
1375+ $Tuple3((eR._1 :+ hg), (eR._2 + 1), (eR._3 + hg))
13761376 }
13771377
1378- let gu = {
1379- let eS = ht
1380- let eT = size(eS)
1381- let eU = $Tuple3(nil, 0, 0)
1382- func eV (eW,eX) = if ((eX >= eT))
1383- then eW
1384- else hu(eW, eS[eX])
1385-
1386- func eY (eW,eX) = if ((eX >= eT))
1387- then eW
1378+ let gv = {
1379+ let eT = hu
1380+ let eU = size(eT)
1381+ let eV = $Tuple3(nil, 0, 0)
1382+ func eW (eX,eY) = if ((eY >= eU))
1383+ then eX
1384+ else hv(eX, eT[eY])
1385+
1386+ func eZ (eX,eY) = if ((eY >= eU))
1387+ then eX
13881388 else throw("List size exceeds 6")
13891389
1390- eY(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6)
1390+ eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
13911391 }
1392- let hw = gu._1
1393- let hx = value(indexOf(hw, max(hw)))
1394- let hy = (gu._3 - 25)
1395- func hz (eQ,cZ) = {
1396- let dE = if ((cZ == hx))
1397- then (hw[cZ] - hy)
1398- else hw[cZ]
1399- let dP = if ((dE == 0))
1392+ let hx = gv._1
1393+ let hy = value(indexOf(hx, max(hx)))
1394+ let hz = (gv._3 - 25)
1395+ func hA (eR,da) = {
1396+ let dF = if ((da == hy))
1397+ then (hx[da] - hz)
1398+ else hx[da]
1399+ let dQ = if ((dF == 0))
14001400 then nil
1401- else split(drop(toString(pow(10, 0, dE, 0, 0, DOWN)), 1), "")
1402- let fZ = hr[cZ]
1403- func hA (hB,hC) = (hB :+ fZ)
1404-
1405- let hD = {
1406- let eS = dP
1407- let eT = size(eS)
1408- let eU = nil
1409- func hE (eW,eX) = if ((eX >= eT))
1410- then eW
1411- else hA(eW, eS[eX])
1412-
1413- func hF (eW,eX) = if ((eX >= eT))
1414- then eW
1401+ else split(drop(toString(pow(10, 0, dF, 0, 0, DOWN)), 1), "")
1402+ let ga = hs[da]
1403+ func hB (hC,hD) = (hC :+ ga)
1404+
1405+ let hE = {
1406+ let eT = dQ
1407+ let eU = size(eT)
1408+ let eV = nil
1409+ func hF (eX,eY) = if ((eY >= eU))
1410+ then eX
1411+ else hB(eX, eT[eY])
1412+
1413+ func hG (eX,eY) = if ((eY >= eU))
1414+ then eX
14151415 else throw("List size exceeds 25")
14161416
1417- hF(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(eU, 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)
1418- }
1419- (eQ ++ hD)
1417+ hG(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(eV, 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)
1418+ }
1419+ (eR ++ hE)
14201420 }
14211421
1422- let fb = {
1423- let eS = cJ
1424- let eT = size(eS)
1425- let eU = nil
1426- func hE (eW,eX) = if ((eX >= eT))
1427- then eW
1428- else hz(eW, eS[eX])
1429-
1430- func hF (eW,eX) = if ((eX >= eT))
1431- then eW
1422+ let fc = {
1423+ let eT = cK
1424+ let eU = size(eT)
1425+ let eV = nil
1426+ func hF (eX,eY) = if ((eY >= eU))
1427+ then eX
1428+ else hA(eX, eT[eY])
1429+
1430+ func hG (eX,eY) = if ((eY >= eU))
1431+ then eX
14321432 else throw("List size exceeds 6")
14331433
1434- hF(hE(hE(hE(hE(hE(hE(eU, 0), 1), 2), 3), 4), 5), 6)
1434+ hG(hF(hF(hF(hF(hF(hF(eV, 0), 1), 2), 3), 4), 5), 6)
14351435 }
1436- func hG (eQ,fA) = (eQ + fb[fA])
1437-
1438- let eS = hq
1439- let eT = size(eS)
1440- let eU = ""
1441- func hH (eW,eX) = if ((eX >= eT))
1442- then eW
1443- else hG(eW, eS[eX])
1444-
1445- func hI (eW,eX) = if ((eX >= eT))
1446- then eW
1436+ func hH (eR,fB) = (eR + fc[fB])
1437+
1438+ let eT = hr
1439+ let eU = size(eT)
1440+ let eV = ""
1441+ func hI (eX,eY) = if ((eY >= eU))
1442+ then eX
1443+ else hH(eX, eT[eY])
1444+
1445+ func hJ (eX,eY) = if ((eY >= eU))
1446+ then eX
14471447 else throw("List size exceeds 25")
14481448
1449- hI(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(eU, 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)
1450- }
1451-
1452-
1453-func hJ (hK) = {
1454- let gt = split(valueOrElse(getString(hK), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1455-[toString(valueOrElse(parseInt(gt[bh]), 0)), if ((size(split(gt[bi], "_")) == aF))
1456- then gt[bi]
1457- else "0_0_0_0_0_0", if ((size(split(gt[bj], "_")) == aF))
1458- then gt[bj]
1459- else "0_0_0_0_0_0", gt[bk]]
1460- }
1461-
1462-
1463-func hL (hM) = {
1464- let fo = split(hM, "_")
1465- ((aI * (parseIntValue(fo[1]) + 1)) * parseIntValue(fo[0]))
1466- }
1467-
1468-
1469-func hN (hO) = {
1470- let hP = hO[bb]
1471- func hQ (eQ,hR) = (eQ + parseIntValue(hR))
1472-
1473- func hS (eQ,hR) = {
1474- let cZ = eQ._1
1475- let eJ = (((parseIntValue(hR) + aX) - 1) / aX)
1476- $Tuple2((cZ + 1), (eQ._2 + (eJ * cD)))
1449+ hJ(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(eV, 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)
1450+ }
1451+
1452+
1453+func hK (hL) = {
1454+ let gu = split(valueOrElse(getString(hL), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1455+[toString(valueOrElse(parseInt(gu[bh]), 0)), if ((size(split(gu[bi], "_")) == aF))
1456+ then gu[bi]
1457+ else "0_0_0_0_0_0", if ((size(split(gu[bj], "_")) == aF))
1458+ then gu[bj]
1459+ else "0_0_0_0_0_0", gu[bk]]
1460+ }
1461+
1462+
1463+func hM (hN) = {
1464+ let fp = split(hN, "_")
1465+ ((aI * (parseIntValue(fp[1]) + 1)) * parseIntValue(fp[0]))
1466+ }
1467+
1468+
1469+func hO (hP) = {
1470+ let hQ = hP[bb]
1471+ func hR (eR,hS) = (eR + parseIntValue(hS))
1472+
1473+ func hT (eR,hS) = {
1474+ let da = eR._1
1475+ let eK = (((parseIntValue(hS) + aX) - 1) / aX)
1476+ $Tuple2((da + 1), (eR._2 + (eK * cE)))
14771477 }
14781478
1479- let hT = {
1480- let eS = split(hO[aZ], "_")
1481- let eT = size(eS)
1482- let eU = 0
1483- func eV (eW,eX) = if ((eX >= eT))
1484- then eW
1485- else hQ(eW, eS[eX])
1486-
1487- func eY (eW,eX) = if ((eX >= eT))
1488- then eW
1479+ let hU = {
1480+ let eT = split(hP[aZ], "_")
1481+ let eU = size(eT)
1482+ let eV = 0
1483+ func eW (eX,eY) = if ((eY >= eU))
1484+ then eX
1485+ else hR(eX, eT[eY])
1486+
1487+ func eZ (eX,eY) = if ((eY >= eU))
1488+ then eX
14891489 else throw("List size exceeds 6")
14901490
1491- eY(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6)
1491+ eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
14921492 }
1493- let hU = {
1494- let eS = split(hO[ba], "_")
1495- let eT = size(eS)
1496- let eU = 0
1497- func hE (eW,eX) = if ((eX >= eT))
1498- then eW
1499- else hQ(eW, eS[eX])
1500-
1501- func hF (eW,eX) = if ((eX >= eT))
1502- then eW
1493+ let hV = {
1494+ let eT = split(hP[ba], "_")
1495+ let eU = size(eT)
1496+ let eV = 0
1497+ func hF (eX,eY) = if ((eY >= eU))
1498+ then eX
1499+ else hR(eX, eT[eY])
1500+
1501+ func hG (eX,eY) = if ((eY >= eU))
1502+ then eX
15031503 else throw("List size exceeds 6")
15041504
1505- hF(hE(hE(hE(hE(hE(hE(eU, 0), 1), 2), 3), 4), 5), 6)
1505+ hG(hF(hF(hF(hF(hF(hF(eV, 0), 1), 2), 3), 4), 5), 6)
15061506 }
1507- let hV = if ((hP == ""))
1507+ let hW = if ((hQ == ""))
15081508 then 0
1509- else ( let eS = split_4C(hP, "_")
1510- let eT = size(eS)
1511- let eU = $Tuple2(0, 0)
1512- func hH (eW,eX) = if ((eX >= eT))
1513- then eW
1514- else hS(eW, eS[eX])
1515-
1516- func hI (eW,eX) = if ((eX >= eT))
1517- then eW
1509+ else ( let eT = split_4C(hQ, "_")
1510+ let eU = size(eT)
1511+ let eV = $Tuple2(0, 0)
1512+ func hI (eX,eY) = if ((eY >= eU))
1513+ then eX
1514+ else hT(eX, eT[eY])
1515+
1516+ func hJ (eX,eY) = if ((eY >= eU))
1517+ then eX
15181518 else throw("List size exceeds 50")
15191519
1520- hI(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(eU, 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
1521- ((hT + hU) + hV)
1522- }
1523-
1524-
1525-func hW (hX,hY,hZ) = {
1526- let hM = ((toString(hY) + "_") + toString(hZ))
1527- let ia = hL(hM)
1528- let ib = valueOrElse(getString(hX), (hM + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1529- let ic = split_4C(ib, ":")
1530- let id = hN(ic)
1531- let ie = if ((5 > size(ic)))
1532- then makeString(["0", toString(id), toString((ia - id)), toString(ia)], "_")
1520+ hJ(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(eV, 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
1521+ ((hU + hV) + hW)
1522+ }
1523+
1524+
1525+func hX (hY,hZ,ia) = {
1526+ let hN = ((toString(hZ) + "_") + toString(ia))
1527+ let ib = hM(hN)
1528+ let ic = valueOrElse(getString(hY), (hN + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1529+ let id = split_4C(ic, ":")
1530+ let ie = hO(id)
1531+ let if = if ((5 > size(id)))
1532+ then makeString(["0", toString(ie), toString((ib - ie)), toString(ib)], "_")
15331533 else {
1534- let if = split(ic[bc], "_")
1535- let ig = parseIntValue(if[bd])
1536- let ih = if ((size(if) > 1))
1537- then parseIntValue(if[be])
1538- else id
1539- makeString([toString(ig), toString(ih), toString(((ia - ig) - ih)), toString(ia)], "_")
1540- }
1541-[ic[aY], if ((size(split(ic[aZ], "_")) == aF))
1542- then ic[aZ]
1543- else "0_0_0_0_0_0", if ((size(split(ic[ba], "_")) == aF))
1544- then ic[ba]
1545- else "0_0_0_0_0_0", ic[bb], ie]
1546- }
1547-
1548-
1549-func ii (hO) = {
1550- let ij = hN(hO)
1551- let ik = parseIntValue(split(hO[bc], "_")[bd])
1552- ((hL(hO[aY]) - ij) - ik)
1553- }
1554-
1555-
1556-func il (im,hO,in) = if ((size(im) != 3))
1534+ let ig = split(id[bc], "_")
1535+ let ih = parseIntValue(ig[bd])
1536+ let ii = if ((size(ig) > 1))
1537+ then parseIntValue(ig[be])
1538+ else ie
1539+ makeString([toString(ih), toString(ii), toString(((ib - ih) - ii)), toString(ib)], "_")
1540+ }
1541+[id[aY], if ((size(split(id[aZ], "_")) == aF))
1542+ then id[aZ]
1543+ else "0_0_0_0_0_0", if ((size(split(id[ba], "_")) == aF))
1544+ then id[ba]
1545+ else "0_0_0_0_0_0", id[bb], if]
1546+ }
1547+
1548+
1549+func ij (hP) = {
1550+ let ik = hO(hP)
1551+ let il = parseIntValue(split(hP[bc], "_")[bd])
1552+ ((hM(hP[aY]) - ik) - il)
1553+ }
1554+
1555+
1556+func im (in,hP,io) = if ((size(in) != 3))
15571557 then throw("cargoListStr should contain exactly 2 ':' separators")
15581558 else {
1559- let io = split(im[0], "_")
1560- let ip = split(im[1], "_")
1561- let iq = if ((im[2] == ""))
1559+ let ip = split(in[0], "_")
1560+ let iq = split(in[1], "_")
1561+ let ir = if ((in[2] == ""))
15621562 then nil
1563- else split_4C(im[2], "_")
1564- if ((size(io) != aF))
1563+ else split_4C(in[2], "_")
1564+ if ((size(ip) != aF))
15651565 then throw("All 6 resources should be passed")
1566- else if ((size(ip) != aF))
1566+ else if ((size(iq) != aF))
15671567 then throw("All 6 materials should be passed")
15681568 else {
1569- let gY = ii(hO)
1570- let ir = split(hO[aZ], "_")
1571- let is = split(hO[ba], "_")
1572- let it = if ((hO[bb] == ""))
1569+ let gZ = ij(hP)
1570+ let is = split(hP[aZ], "_")
1571+ let it = split(hP[ba], "_")
1572+ let iu = if ((hP[bb] == ""))
15731573 then nil
1574- else split_4C(hO[bb], "_")
1575- let gW = split(in[bi], "_")
1576- let iu = split(in[bj], "_")
1577- let iv = if ((in[bk] == ""))
1574+ else split_4C(hP[bb], "_")
1575+ let gX = split(io[bi], "_")
1576+ let iv = split(io[bj], "_")
1577+ let iw = if ((io[bk] == ""))
15781578 then nil
1579- else split_4C(in[bk], "_")
1580- func iw (eQ,hR) = {
1581- let gJ = eQ._1
1582- let ix = parseIntValue(hR)
1583- let iy = parseIntValue(ir[gJ])
1584- let iz = parseIntValue(gW[gJ])
1585- if ((ix == 0))
1586- then $Tuple4((gJ + 1), (eQ._2 :+ ir[gJ]), (eQ._3 :+ gW[gJ]), eQ._4)
1587- else if ((ix > 0))
1588- then if ((ix > iz))
1589- then throw((((("Attempt to take " + hR) + " from backpack, but only ") + toString(iz)) + " available"))
1590- else $Tuple4((gJ + 1), (eQ._2 :+ toString((iy + ix))), (eQ._3 :+ toString((iz - ix))), (eQ._4 + ix))
1591- else if ((-(ix) > iy))
1592- then throw((((("Attempt to take " + toString(-(ix))) + " from warehouse, but only ") + toString(iy)) + " available"))
1593- else $Tuple4((gJ + 1), (eQ._2 :+ toString((iy + ix))), (eQ._3 :+ toString((iz - ix))), (eQ._4 + ix))
1579+ else split_4C(io[bk], "_")
1580+ func ix (eR,hS) = {
1581+ let gK = eR._1
1582+ let iy = parseIntValue(hS)
1583+ let iz = parseIntValue(is[gK])
1584+ let iA = parseIntValue(gX[gK])
1585+ if ((iy == 0))
1586+ then $Tuple4((gK + 1), (eR._2 :+ is[gK]), (eR._3 :+ gX[gK]), eR._4)
1587+ else if ((iy > 0))
1588+ then if ((iy > iA))
1589+ then throw((((("Attempt to take " + hS) + " from backpack, but only ") + toString(iA)) + " available"))
1590+ else $Tuple4((gK + 1), (eR._2 :+ toString((iz + iy))), (eR._3 :+ toString((iA - iy))), (eR._4 + iy))
1591+ else if ((-(iy) > iz))
1592+ then throw((((("Attempt to take " + toString(-(iy))) + " from warehouse, but only ") + toString(iz)) + " available"))
1593+ else $Tuple4((gK + 1), (eR._2 :+ toString((iz + iy))), (eR._3 :+ toString((iA - iy))), (eR._4 + iy))
15941594 }
15951595
1596- let fb = {
1597- let eS = io
1598- let eT = size(eS)
1599- let eU = $Tuple4(0, nil, nil, 0)
1600- func eV (eW,eX) = if ((eX >= eT))
1601- then eW
1602- else iw(eW, eS[eX])
1603-
1604- func eY (eW,eX) = if ((eX >= eT))
1605- then eW
1596+ let fc = {
1597+ let eT = ip
1598+ let eU = size(eT)
1599+ let eV = $Tuple4(0, nil, nil, 0)
1600+ func eW (eX,eY) = if ((eY >= eU))
1601+ then eX
1602+ else ix(eX, eT[eY])
1603+
1604+ func eZ (eX,eY) = if ((eY >= eU))
1605+ then eX
16061606 else throw("List size exceeds 6")
16071607
1608- eY(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6)
1608+ eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
16091609 }
1610- func iA (eQ,hR) = {
1611- let gJ = eQ._1
1612- let ix = parseIntValue(hR)
1613- let iB = parseIntValue(is[gJ])
1614- let iC = parseIntValue(iu[gJ])
1615- if ((ix == 0))
1616- then $Tuple4((gJ + 1), (eQ._2 :+ is[gJ]), (eQ._3 :+ iu[gJ]), eQ._4)
1617- else if ((ix > 0))
1618- then if ((ix > iC))
1619- then throw((((("Attempt to take " + hR) + " from backpack, but only ") + toString(iC)) + " available"))
1620- else $Tuple4((gJ + 1), (eQ._2 :+ toString((iB + ix))), (eQ._3 :+ toString((iC - ix))), (eQ._4 + ix))
1621- else if ((-(ix) > iB))
1622- then throw((((("Attempt to take " + toString(-(ix))) + " from warehouse, but only ") + toString(iB)) + " available"))
1623- else $Tuple4((gJ + 1), (eQ._2 :+ toString((iB + ix))), (eQ._3 :+ toString((iC - ix))), (eQ._4 + ix))
1610+ func iB (eR,hS) = {
1611+ let gK = eR._1
1612+ let iy = parseIntValue(hS)
1613+ let iC = parseIntValue(it[gK])
1614+ let iD = parseIntValue(iv[gK])
1615+ if ((iy == 0))
1616+ then $Tuple4((gK + 1), (eR._2 :+ it[gK]), (eR._3 :+ iv[gK]), eR._4)
1617+ else if ((iy > 0))
1618+ then if ((iy > iD))
1619+ then throw((((("Attempt to take " + hS) + " from backpack, but only ") + toString(iD)) + " available"))
1620+ else $Tuple4((gK + 1), (eR._2 :+ toString((iC + iy))), (eR._3 :+ toString((iD - iy))), (eR._4 + iy))
1621+ else if ((-(iy) > iC))
1622+ then throw((((("Attempt to take " + toString(-(iy))) + " from warehouse, but only ") + toString(iC)) + " available"))
1623+ else $Tuple4((gK + 1), (eR._2 :+ toString((iC + iy))), (eR._3 :+ toString((iD - iy))), (eR._4 + iy))
16241624 }
16251625
1626- let gp = {
1627- let eS = ip
1628- let eT = size(eS)
1629- let eU = $Tuple4(0, nil, nil, fb._4)
1630- func hE (eW,eX) = if ((eX >= eT))
1631- then eW
1632- else iA(eW, eS[eX])
1633-
1634- func hF (eW,eX) = if ((eX >= eT))
1635- then eW
1626+ let gq = {
1627+ let eT = iq
1628+ let eU = size(eT)
1629+ let eV = $Tuple4(0, nil, nil, fc._4)
1630+ func hF (eX,eY) = if ((eY >= eU))
1631+ then eX
1632+ else iB(eX, eT[eY])
1633+
1634+ func hG (eX,eY) = if ((eY >= eU))
1635+ then eX
16361636 else throw("List size exceeds 6")
16371637
1638- hF(hE(hE(hE(hE(hE(hE(eU, 0), 1), 2), 3), 4), 5), 6)
1638+ hG(hF(hF(hF(hF(hF(hF(eV, 0), 1), 2), 3), 4), 5), 6)
16391639 }
1640- func iD (eQ,hR) = {
1641- let gJ = eQ._1
1642- let ix = parseIntValue(hR)
1643- let iE = if ((size(it) > gJ))
1644- then parseIntValue(it[gJ])
1640+ func iE (eR,hS) = {
1641+ let gK = eR._1
1642+ let iy = parseIntValue(hS)
1643+ let iF = if ((size(iu) > gK))
1644+ then parseIntValue(iu[gK])
16451645 else 0
1646- let iF = if ((size(iv) > gJ))
1647- then parseIntValue(iv[gJ])
1646+ let iG = if ((size(iw) > gK))
1647+ then parseIntValue(iw[gK])
16481648 else 0
1649- if ((ix == 0))
1650- then $Tuple4((gJ + 1), (eQ._2 :+ toString(iE)), (eQ._3 :+ toString(iF)), eQ._4)
1651- else if ((ix > 0))
1652- then if ((ix > iF))
1653- then throw((((("Attempt to take " + hR) + " from backpack, but only ") + toString(iF)) + " available"))
1649+ if ((iy == 0))
1650+ then $Tuple4((gK + 1), (eR._2 :+ toString(iF)), (eR._3 :+ toString(iG)), eR._4)
1651+ else if ((iy > 0))
1652+ then if ((iy > iG))
1653+ then throw((((("Attempt to take " + hS) + " from backpack, but only ") + toString(iG)) + " available"))
16541654 else {
1655- let fS = (eG((iE + ix), aX) - eG(iE, aX))
1656- $Tuple4((gJ + 1), (eQ._2 :+ toString((iE + ix))), (eQ._3 :+ toString((iF - ix))), (eQ._4 + fS))
1655+ let fT = (eH((iF + iy), aX) - eH(iF, aX))
1656+ $Tuple4((gK + 1), (eR._2 :+ toString((iF + iy))), (eR._3 :+ toString((iG - iy))), (eR._4 + fT))
16571657 }
1658- else if ((-(ix) > iE))
1659- then throw((((("Attempt to take " + toString(-(ix))) + " from warehouse, but only ") + toString(iE)) + " available"))
1658+ else if ((-(iy) > iF))
1659+ then throw((((("Attempt to take " + toString(-(iy))) + " from warehouse, but only ") + toString(iF)) + " available"))
16601660 else {
1661- let fS = (eG((iE + ix), aX) - eG(iE, aX))
1662- $Tuple4((gJ + 1), (eQ._2 :+ toString((iE + ix))), (eQ._3 :+ toString((iF - ix))), (eQ._4 + fS))
1661+ let fT = (eH((iF + iy), aX) - eH(iF, aX))
1662+ $Tuple4((gK + 1), (eR._2 :+ toString((iF + iy))), (eR._3 :+ toString((iG - iy))), (eR._4 + fT))
16631663 }
16641664 }
16651665
1666- let gt = if ((size(iq) != 0))
1666+ let gu = if ((size(ir) != 0))
16671667 then {
1668- let eS = iq
1669- let eT = size(eS)
1670- let eU = $Tuple4(0, nil, nil, gp._4)
1671- func hH (eW,eX) = if ((eX >= eT))
1672- then eW
1673- else iD(eW, eS[eX])
1674-
1675- func hI (eW,eX) = if ((eX >= eT))
1676- then eW
1668+ let eT = ir
1669+ let eU = size(eT)
1670+ let eV = $Tuple4(0, nil, nil, gq._4)
1671+ func hI (eX,eY) = if ((eY >= eU))
1672+ then eX
1673+ else iE(eX, eT[eY])
1674+
1675+ func hJ (eX,eY) = if ((eY >= eU))
1676+ then eX
16771677 else throw("List size exceeds 50")
16781678
1679- hI(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(eU, 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)
1679+ hJ(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(eV, 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)
16801680 }
1681- else $Tuple4(0, it, iv, gp._4)
1682- let iG = gt._4
1683- if ((iG > gY))
1684- then throw((((("Attempt to put total " + toString(iG)) + " stuff, but only ") + toString(gY)) + " warehouse space left"))
1685- else $Tuple7(makeString(fb._2, "_"), makeString(gp._2, "_"), makeString_2C(gt._2, "_"), makeString(fb._3, "_"), makeString(gp._3, "_"), makeString_2C(gt._3, "_"), iG)
1681+ else $Tuple4(0, iu, iw, gq._4)
1682+ let iH = gu._4
1683+ if ((iH > gZ))
1684+ then throw((((("Attempt to put total " + toString(iH)) + " stuff, but only ") + toString(gZ)) + " warehouse space left"))
1685+ else $Tuple7(makeString(fc._2, "_"), makeString(gq._2, "_"), makeString_2C(gu._2, "_"), makeString(fc._3, "_"), makeString(gq._3, "_"), makeString_2C(gu._3, "_"), iH)
16861686 }
16871687 }
16881688
16891689
1690-func iH (iI,iJ) = {
1691- let bL = toString(iI)
1692- let iK = he(toBigInt(iJ))
1693- let iL = valueOrElse(getInteger(eo()), (en + 1))
1694- let es = toString(iL)
1695- let hn = toInt((iK % eh))
1696- let gM = hl(iK, hn)
1697- let ds = aP[hn]
1698- let iM = Issue(eF(es, "S"), makeString([es, "S", gM, ds], "_"), 1, 0, false)
1699- let bp = calculateAssetId(iM)
1700- let iN = toBase58String(bp)
1701- $Tuple2([IntegerEntry(eo(), (iL + 1)), iM, StringEntry(er(es), iN), StringEntry(bo(iN), bL), StringEntry(eu(es), bL), IntegerEntry(by(iN), 0), IntegerEntry(et(iN, bL), 0), ScriptTransfer(iI, 1, bp)], $Tuple2(iN, ds))
1702- }
1703-
1704-
1705-func iO (bL,iP,iQ) = if (!(sigVerify_8Kb(iP, iQ, dY)))
1690+func iI (iJ,iK) = {
1691+ let bL = toString(iJ)
1692+ let iL = hf(toBigInt(iK))
1693+ let iM = valueOrElse(getInteger(ep()), (eo + 1))
1694+ let et = toString(iM)
1695+ let ho = toInt((iL % ei))
1696+ let gN = hm(iL, ho)
1697+ let dt = aP[ho]
1698+ let iN = Issue(eG(et, "S"), makeString([et, "S", gN, dt], "_"), 1, 0, false)
1699+ let bp = calculateAssetId(iN)
1700+ let iO = toBase58String(bp)
1701+ $Tuple2([IntegerEntry(ep(), (iM + 1)), iN, StringEntry(es(et), iO), StringEntry(bo(iO), bL), StringEntry(ev(et), bL), IntegerEntry(by(iO), 0), IntegerEntry(eu(iO, bL), 0), ScriptTransfer(iJ, 1, bp)], $Tuple2(iO, dt))
1702+ }
1703+
1704+
1705+func iP (bL,iQ,iR) = if (!(sigVerify_8Kb(iQ, iR, dZ)))
17061706 then throw("signature does not match")
17071707 else {
1708- let fo = split_4C(toUtf8String(iP), ";")
1709- let iR = split_4C(fo[0], "|")
1710- let iS = split(iR[eB], "_")
1711- let iT = parseIntValue(iS[0])
1712- let iU = parseIntValue(iS[1])
1713- let iV = split(fo[1], ":")
1714- let iW = iV[0]
1715- let iX = parseIntValue(iR[eC])
1716- if (if ((iX > (lastBlock.timestamp + ea)))
1708+ let fp = split_4C(toUtf8String(iQ), ";")
1709+ let iS = split_4C(fp[0], "|")
1710+ let iT = split(iS[eC], "_")
1711+ let iU = parseIntValue(iT[0])
1712+ let iV = parseIntValue(iT[1])
1713+ let iW = split(fp[1], ":")
1714+ let iX = iW[0]
1715+ let iY = parseIntValue(iS[eD])
1716+ if (if ((iY > (lastBlock.timestamp + eb)))
17171717 then true
1718- else ((lastBlock.timestamp - ea) > iX))
1719- then throw(((("signature outdated: logTime=" + toString(iX)) + ", bcTime=") + toString(lastBlock.timestamp)))
1718+ else ((lastBlock.timestamp - eb) > iY))
1719+ then throw(((("signature outdated: logTime=" + toString(iY)) + ", bcTime=") + toString(lastBlock.timestamp)))
17201720 else {
1721- let iY = iV[1]
1722- let iZ = valueOrElse(getString(dK(bL)), "")
1723- if ((iZ != iY))
1724- then throw(((("Tx ids don't match! In state: " + iZ) + ", in msg: ") + iY))
1721+ let iZ = iW[1]
1722+ let ja = valueOrElse(getString(dL(bL)), "")
1723+ if ((ja != iZ))
1724+ then throw(((("Tx ids don't match! In state: " + ja) + ", in msg: ") + iZ))
17251725 else {
17261726 let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked")
1727- let ja = z(A)
1728- let jb = ag(valueOrElse(getInteger(D(A)), 0))
1729- let jc = valueOrElse(getInteger(ja), jb)
1730- if ((jc != iT))
1731- then throw(((("oldHealth=" + toString(jc)) + " from state does not match one from flight log=") + toString(iT)))
1732- else if ((0 >= iT))
1727+ let jb = z(A)
1728+ let jc = ag(valueOrElse(getInteger(D(A)), 0))
1729+ let jd = valueOrElse(getInteger(jb), jc)
1730+ if ((jd != iU))
1731+ then throw(((("oldHealth=" + toString(jd)) + " from state does not match one from flight log=") + toString(iU)))
1732+ else if ((0 >= iU))
17331733 then throw("You can't fly with zero health")
1734- else if (!(gv(A)))
1734+ else if (!(gw(A)))
17351735 then throw("Equipment incompatible")
17361736 else {
1737- let jd = if ((size(iR) > eD))
1738- then iR[eD]
1737+ let je = if ((size(iS) > eE))
1738+ then iS[eE]
17391739 else ""
1740- let je = if ((size(iR) > eE))
1741- then iR[eE]
1740+ let jf = if ((size(iS) > eF))
1741+ then iS[eF]
17421742 else ""
1743- let jf = if (if ((iU > 0))
1744- then (jd == "$")
1743+ let jg = if (if ((iV > 0))
1744+ then (je == "$")
17451745 else false)
1746- then dy(invoke(da, "sendUsdtPrize", [bL], nil))
1746+ then dz(invoke(db, "sendUsdtPrize", [bL], nil))
17471747 else 0
1748- $Tuple5(iU, A, jf, iW, je)
1748+ $Tuple5(iV, A, jg, iX, jf)
17491749 }
17501750 }
17511751 }
17521752 }
17531753
17541754
1755-func jg (P,jh) = {
1756- let hZ = valueOrElse(getInteger(by(P)), 0)
1757- let ji = valueOrElse(getInteger(bs(aE, P)), 0)
1758- let jj = (hZ / 6)
1759- let jk = (hZ / 7)
1760- ((aH + fraction(aH, ((hZ + jj) + (2 * jk)), 5)) + fraction(aH, ji, (jh * 5)))
1761- }
1762-
1763-
1764-func jl (c,jm,jn) = {
1765- let jo = if ((jm == ey))
1766- then $Tuple2(jn, valueOrElse(getString(bH(c)), ""))
1755+func jh (P,ji) = {
1756+ let ia = valueOrElse(getInteger(by(P)), 0)
1757+ let jj = valueOrElse(getInteger(bs(aE, P)), 0)
1758+ let jk = (ia / 6)
1759+ let jl = (ia / 7)
1760+ ((aH + fraction(aH, ((ia + jk) + (2 * jl)), 5)) + fraction(aH, jj, (ji * 5)))
1761+ }
1762+
1763+
1764+func jm (c,jn,jo) = {
1765+ let jp = if ((jn == ez))
1766+ then $Tuple2(jo, valueOrElse(getString(bH(c)), ""))
17671767 else {
17681768 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
1769- let jp = valueOrElse(getString(bJ(A)), aJ)
1770- let cf = split(value(jp), "_")
1769+ let jq = valueOrElse(getString(bJ(A)), aJ)
1770+ let cf = split(value(jq), "_")
17711771 if ((cf[bm] != "L"))
17721772 then throw((("Duck location type is " + cf[bm]) + ", but should be L"))
17731773 else $Tuple2(cf[bn], A)
17741774 }
1775- let P = jo._1
1776- let jq = jo._2
1777- let jr = value(assetInfo(fromBase58String(P)))
1778- let js = br(P)
1779- let jt = valueOrErrorMessage(getInteger(js), (("Land " + jr.name) + " is not staked"))
1780- let ju = valueOrErrorMessage(getString(bo(P)), (("NFT " + jr.name) + " is orphaned"))
1781- if ((ju != c))
1775+ let P = jp._1
1776+ let jr = jp._2
1777+ let js = value(assetInfo(fromBase58String(P)))
1778+ let jt = br(P)
1779+ let ju = valueOrErrorMessage(getInteger(jt), (("Land " + js.name) + " is not staked"))
1780+ let jv = valueOrErrorMessage(getString(bo(P)), (("NFT " + js.name) + " is orphaned"))
1781+ if ((jv != c))
17821782 then throw((aC + " is not yours"))
17831783 else {
1784- let jv = split(jr.description, "_")
1785- $Tuple4(jq, P, jv, jt)
1786- }
1787- }
1788-
1789-
1790-func jw (c,eH,jm,jn) = if ((0 > eH))
1784+ let jw = split(js.description, "_")
1785+ $Tuple4(jr, P, jw, ju)
1786+ }
1787+ }
1788+
1789+
1790+func jx (c,eI,jn,jo) = if ((0 > eI))
17911791 then throw("Negative amount")
17921792 else {
1793- let fZ = jl(c, jm, jn)
1794- let dH = fZ._3[dh]
1795- let gF = gL(fZ._3[di])
1796- let gP = (lastBlock.timestamp - fZ._4)
1797- if ((0 > gP))
1798- then throw(((("Saved timestamp is in future, saved = " + toString(fZ._4)) + ", current = ") + toString(lastBlock.timestamp)))
1793+ let ga = jm(c, jn, jo)
1794+ let dI = ga._3[di]
1795+ let gG = gM(ga._3[dj])
1796+ let gQ = (lastBlock.timestamp - ga._4)
1797+ if ((0 > gQ))
1798+ then throw(((("Saved timestamp is in future, saved = " + toString(ga._4)) + ", current = ") + toString(lastBlock.timestamp)))
17991799 else {
1800- let jh = dG(dH)
1801- let jx = jg(fZ._2, jh)
1802- let jy = fraction(gP, (jx * jh), a)
1803- if ((eH > jy))
1804- then throw(((("Not enough resources, available = " + toString(jy)) + ", requested = ") + toString(eH)))
1800+ let ji = dH(dI)
1801+ let jy = jh(ga._2, ji)
1802+ let jz = fraction(gQ, (jy * ji), a)
1803+ if ((eI > jz))
1804+ then throw(((("Not enough resources, available = " + toString(jz)) + ", requested = ") + toString(eI)))
18051805 else {
1806- let jz = fraction((jy - eH), a, (jx * jh))
1807- let jA = (lastBlock.timestamp - jz)
1808- let hY = (jh / cE)
1809- let gX = gT(gF, (gP - jz), hY, jx)
1810- let hX = bx(fZ._2)
1811- let hZ = valueOrElse(getInteger(by(fZ._2)), 0)
1812- let hO = hW(hX, hY, hZ)
1813- let if = split(hO[bc], "_")
1814- let gY = parseIntValue(if[bf])
1815- if (if ((jm == ey))
1816- then (eH > gY)
1806+ let jA = fraction((jz - eI), a, (jy * ji))
1807+ let jB = (lastBlock.timestamp - jA)
1808+ let hZ = (ji / cF)
1809+ let gY = gU(gG, (gQ - jA), hZ, jy)
1810+ let hY = bx(ga._2)
1811+ let ia = valueOrElse(getInteger(by(ga._2)), 0)
1812+ let hP = hX(hY, hZ, ia)
1813+ let ig = split(hP[bc], "_")
1814+ let gZ = parseIntValue(ig[bf])
1815+ if (if ((jn == ez))
1816+ then (eI > gZ)
18171817 else false)
1818- then throw((("Only " + toString(gY)) + " space left in warehouse"))
1818+ then throw((("Only " + toString(gZ)) + " space left in warehouse"))
18191819 else {
1820- let hK = bI(fZ._1)
1821- let in = hJ(hK)
1822- let gW = split(in[bi], "_")
1823- let gV = split(hO[aZ], "_")
1824- let jB = if ((jm == ey))
1825- then $Tuple4(gN(gV, gF, (gP - jz), hY, jx), in[bi], (parseIntValue(if[be]) + gX._2), (parseIntValue(if[bf]) - gX._2))
1826- else if ((jm == ez))
1827- then $Tuple4(hO[aZ], gN(gW, gF, (gP - jz), hY, jx), parseIntValue(if[be]), parseIntValue(if[bf]))
1820+ let hL = bI(ga._1)
1821+ let io = hK(hL)
1822+ let gX = split(io[bi], "_")
1823+ let gW = split(hP[aZ], "_")
1824+ let jC = if ((jn == ez))
1825+ then $Tuple4(gO(gW, gG, (gQ - jA), hZ, jy), io[bi], (parseIntValue(ig[be]) + gY._2), (parseIntValue(ig[bf]) - gY._2))
1826+ else if ((jn == eA))
1827+ then $Tuple4(hP[aZ], gO(gX, gG, (gQ - jA), hZ, jy), parseIntValue(ig[be]), parseIntValue(ig[bf]))
18281828 else {
1829- let jC = gU(gV, gW, gX, gY)
1830- let jD = min([parseIntValue(if[bf]), gX._2])
1831- $Tuple4(jC._1, jC._2, (parseIntValue(if[be]) + jD), (parseIntValue(if[bf]) - jD))
1829+ let jD = gV(gW, gX, gY, gZ)
1830+ let jE = min([parseIntValue(ig[bf]), gY._2])
1831+ $Tuple4(jD._1, jD._2, (parseIntValue(ig[be]) + jE), (parseIntValue(ig[bf]) - jE))
18321832 }
1833- let jE = jB._1
1834- let jF = jB._2
1835- let jG = jB._3
1836- let jH = jB._4
1837- $Tuple5([IntegerEntry(br(fZ._2), jA), IntegerEntry(bu(aC, fZ._2, c), jA)], hK, [in[bh], jF, in[bj], in[bk]], hX, [hO[aY], jE, hO[ba], hO[bb], makeString([if[bd], toString(jG), toString(jH), if[bg]], "_")])
1833+ let jF = jC._1
1834+ let jG = jC._2
1835+ let jH = jC._3
1836+ let jI = jC._4
1837+ $Tuple5([IntegerEntry(br(ga._2), jB), IntegerEntry(bu(aC, ga._2, c), jB)], hL, [io[bh], jG, io[bj], io[bk]], hY, [hP[aY], jF, hP[ba], hP[bb], makeString([ig[bd], toString(jH), toString(jI), ig[bg]], "_")])
18381838 }
18391839 }
18401840 }
18411841 }
18421842
18431843
1844-func jI (c,P,jh,jm) = {
1845- let js = br(P)
1846- let jt = value(getInteger(js))
1847- let jy = (fraction((lastBlock.timestamp - jt), jg(P, jh), a) * jh)
1848- jw(c, jy, jm, P)
1849- }
1850-
1851-
1852-func jJ (fd,iI,jK,P) = {
1853- let c = toString(iI)
1854- let fZ = jl(c, eA, P)
1855- let jh = dG(fZ._3[dh])
1856- let jL = by(fZ._2)
1857- let jM = valueOrElse(getInteger(jL), 0)
1858- if (if (!(ct))
1859- then (jM >= 3)
1844+func jJ (c,P,ji,jn) = {
1845+ let jt = br(P)
1846+ let ju = value(getInteger(jt))
1847+ let jz = (fraction((lastBlock.timestamp - ju), jh(P, ji), a) * ji)
1848+ jx(c, jz, jn, P)
1849+ }
1850+
1851+
1852+func jK (fe,iJ,jL,P) = {
1853+ let c = toString(iJ)
1854+ let ga = jm(c, eB, P)
1855+ let ji = dH(ga._3[di])
1856+ let jM = by(ga._2)
1857+ let jN = valueOrElse(getInteger(jM), 0)
1858+ if (if (!(cu))
1859+ then (jN >= 3)
18601860 else false)
18611861 then throw("Currently max infrastructure level = 3")
18621862 else {
1863- let jN = ((sqrt(jh, 0, 0, DOWN) / 5) + 2)
1864- let al = (jM + 1)
1865- if (if (ct)
1866- then (al > jN)
1863+ let jO = ((sqrt(ji, 0, 0, DOWN) / 5) + 2)
1864+ let al = (jN + 1)
1865+ if (if (cu)
1866+ then (al > jO)
18671867 else false)
1868- then throw(("Currently max infrastructure level = " + toString(jN)))
1868+ then throw(("Currently max infrastructure level = " + toString(jO)))
18691869 else {
1870- let jO = fraction(ed, (jh * al), cE)
1871- if (if (!(fd))
1872- then (jK != jO)
1870+ let jP = fraction(ee, (ji * al), cF)
1871+ if (if (!(fe))
1872+ then (jL != jP)
18731873 else false)
1874- then throw(("Payment attached should be " + toString(jO)))
1874+ then throw(("Payment attached should be " + toString(jP)))
18751875 else {
1876- let hK = bI(fZ._1)
1877- let in = hJ(hK)
1878- let jP = split(in[bj], "_")
1879- let jQ = fraction(cz, (jh * al), cE)
1880- let jR = makeString(fc(fd, jP, jQ), "_")
1881- let jS = jI(c, fZ._2, jh, eA)
1882- let jT = jS._5
1883- let jU = hL(jT[aY])
1884- let jV = makeString([split(jT[aY], "_")[0], toString(al)], "_")
1885- let jW = hL(jV)
1886- let if = split(jT[bc], "_")
1887- let jX = makeString([if[bd], if[be], toString(((parseIntValue(if[bf]) + jW) - jU)), toString(jW)], "_")
1888- $Tuple3(([IntegerEntry(jL, al), IntegerEntry(et(fZ._2, c), al), StringEntry(hK, makeString([in[bh], jS._3[bi], jR, in[bk]], ":")), StringEntry(jS._4, makeString([jV, jT[aZ], jT[ba], jT[bb], jX], ":"))] ++ jS._1), al, jQ)
1876+ let hL = bI(ga._1)
1877+ let io = hK(hL)
1878+ let jQ = split(io[bj], "_")
1879+ let jR = fraction(cA, (ji * al), cF)
1880+ let jS = makeString(fd(fe, jQ, jR), "_")
1881+ let jT = jJ(c, ga._2, ji, eB)
1882+ let jU = jT._5
1883+ let jV = hM(jU[aY])
1884+ let jW = makeString([split(jU[aY], "_")[0], toString(al)], "_")
1885+ let jX = hM(jW)
1886+ let ig = split(jU[bc], "_")
1887+ let jY = makeString([ig[bd], ig[be], toString(((parseIntValue(ig[bf]) + jX) - jV)), toString(jX)], "_")
1888+ $Tuple3(([IntegerEntry(jM, al), IntegerEntry(eu(ga._2, c), al), StringEntry(hL, makeString([io[bh], jT._3[bi], jS, io[bk]], ":")), StringEntry(jT._4, makeString([jW, jU[aZ], jU[ba], jU[bb], jY], ":"))] ++ jT._1), al, jR)
18891889 }
18901890 }
18911891 }
18921892 }
18931893
18941894
1895-func jY (A,jZ) = {
1896- let ka = D(A)
1897- let kb = C(A)
1898- let af = valueOrElse(getInteger(kb), 0)
1899- let ak = (af + jZ)
1900- let kc = ai(valueOrElse(getInteger(ka), 0), ak)
1901- let kd = E(A)
1902- $Tuple2([IntegerEntry(ka, kc[0]), IntegerEntry(kb, ak), IntegerEntry(kd, (valueOrElse(getInteger(kd), 0) + kc[1]))], ak)
1903- }
1904-
1905-
1906-func ke (c,jZ) = {
1907- let ka = H(c)
1908- let kb = G(c)
1909- let af = valueOrElse(getInteger(kb), 0)
1910- let ak = (af + jZ)
1911- let kc = ai(valueOrElse(getInteger(ka), 0), ak)
1912- let kd = I(c)
1913- $Tuple2([IntegerEntry(ka, kc[0]), IntegerEntry(kb, ak), IntegerEntry(kd, (valueOrElse(getInteger(kd), 0) + kc[1]))], ak)
1914- }
1915-
1916-
1917-func kf (c) = {
1895+func jZ (A,ka) = {
1896+ let kb = D(A)
1897+ let kc = C(A)
1898+ let af = valueOrElse(getInteger(kc), 0)
1899+ let ak = (af + ka)
1900+ let kd = ai(valueOrElse(getInteger(kb), 0), ak)
1901+ let ke = E(A)
1902+ $Tuple2([IntegerEntry(kb, kd[0]), IntegerEntry(kc, ak), IntegerEntry(ke, (valueOrElse(getInteger(ke), 0) + kd[1]))], ak)
1903+ }
1904+
1905+
1906+func kf (c,ka) = {
1907+ let kb = H(c)
1908+ let kc = G(c)
1909+ let af = valueOrElse(getInteger(kc), 0)
1910+ let ak = (af + ka)
1911+ let kd = ai(valueOrElse(getInteger(kb), 0), ak)
1912+ let ke = I(c)
1913+ $Tuple2([IntegerEntry(kb, kd[0]), IntegerEntry(kc, ak), IntegerEntry(ke, (valueOrElse(getInteger(ke), 0) + kd[1]))], ak)
1914+ }
1915+
1916+
1917+func kg (c) = {
19181918 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
1919- let kg = bC(c)
1920- let kh = getString(kg)
1921- if (!(isDefined(kh)))
1919+ let kh = bC(c)
1920+ let ki = getString(kh)
1921+ if (!(isDefined(ki)))
19221922 then throw("You are not eligible for ONBOARD artifact")
19231923 else {
1924- let ki = bE(c)
1925- let kj = getString(ki)
1926- if (isDefined(kj))
1927- then throw(("You already used your ONBOARD artifact on duck " + value(kj)))
1924+ let kj = bE(c)
1925+ let kk = getString(kj)
1926+ if (isDefined(kk))
1927+ then throw(("You already used your ONBOARD artifact on duck " + value(kk)))
19281928 else {
1929- let kk = bD(A)
1930- let kl = getString(kk)
1931- if (isDefined(kl))
1932- then throw(((("The duck " + A) + " already got points from ONBOARD artifact from user ") + value(kl)))
1933- else ([StringEntry(ki, A), StringEntry(kk, c)] ++ jY(A, ac)._1)
1929+ let kl = bD(A)
1930+ let km = getString(kl)
1931+ if (isDefined(km))
1932+ then throw(((("The duck " + A) + " already got points from ONBOARD artifact from user ") + value(km)))
1933+ else ([StringEntry(kj, A), StringEntry(kl, c)] ++ jZ(A, ac)._1)
19341934 }
19351935 }
19361936 }
19371937
19381938
1939-func km (c,jn) = {
1940- let fZ = jl(c, eA, jn)
1941- let P = fZ._2
1942- let jh = dG(fZ._3[dh])
1943- let kn = bs(aE, P)
1944- if ((valueOrElse(getInteger(kn), 0) > 0))
1939+func kn (c,jo) = {
1940+ let ga = jm(c, eB, jo)
1941+ let P = ga._2
1942+ let ji = dH(ga._3[di])
1943+ let ko = bs(aE, P)
1944+ if ((valueOrElse(getInteger(ko), 0) > 0))
19451945 then throw("Presale artifact is already activated")
1946- else if ((parseIntValue(fZ._3[dg]) > en))
1946+ else if ((parseIntValue(ga._3[dh]) > eo))
19471947 then throw((((aC + " ") + P) + " is not eligible for presale artifact"))
19481948 else {
1949- let jS = jI(c, P, jh, eA)
1950- (((jS._1 :+ IntegerEntry(kn, jh)) :+ StringEntry(jS._2, makeString(jS._3, ":"))) :+ StringEntry(jS._4, makeString(jS._5, ":")))
1949+ let jT = jJ(c, P, ji, eB)
1950+ (((jT._1 :+ IntegerEntry(ko, ji)) :+ StringEntry(jT._2, makeString(jT._3, ":"))) :+ StringEntry(jT._4, makeString(jT._5, ":")))
19511951 }
19521952 }
19531953
19541954
1955-func ko (A) = {
1956- let ce = valueOrElse(getInteger(de, bP), 0)
1957- let jp = split(valueOrElse(getString(bJ(A)), aJ), "_")
1955+func kp (A) = {
1956+ let ce = valueOrElse(getInteger(df, bP), 0)
1957+ let jq = split(valueOrElse(getString(bJ(A)), aJ), "_")
19581958 let ax = lastBlock.timestamp
1959- let cg = bY(de, ce)
1959+ let cg = bY(df, ce)
19601960 let ca = cg[bU]
19611961 let cb = cg[bV]
1962- if ((jp[bm] != "T"))
1962+ if ((jq[bm] != "T"))
19631963 then false
1964- else if (if (if ((parseIntValue(jp[bl]) == ce))
1964+ else if (if (if ((parseIntValue(jq[bl]) == ce))
19651965 then (cb[bX] == "INPROGRESS")
19661966 else false)
19671967 then (parseIntValue(ca[bW]) > ax)
19681968 else false)
19691969 then throw("Your duck is taking part in the tournament")
1970- else dC(invoke(this, "exitTournamentInternal", [A], nil))
1971- }
1972-
1973-
1974-func kp (A) = if (!(cu))
1970+ else dD(invoke(this, "exitTournamentInternal", [A], nil))
1971+ }
1972+
1973+
1974+func kq (A) = if (!(cv))
19751975 then false
19761976 else {
1977- let jp = split(valueOrElse(getString(bJ(A)), aJ), "_")
1977+ let jq = split(valueOrElse(getString(bJ(A)), aJ), "_")
19781978 let ax = lastBlock.timestamp
1979- if ((jp[bm] != "D"))
1979+ if ((jq[bm] != "D"))
19801980 then false
19811981 else {
1982- let ci = parseIntValue(jp[bl])
1983- let cj = parseIntValue(jp[bn])
1982+ let ci = parseIntValue(jq[bl])
1983+ let cj = parseIntValue(jq[bn])
19841984 if (if ((ax > (ci + aN)))
19851985 then (3 > cj)
19861986 else false)
19871987 then throw("Your duck is on delivery mission")
1988- else dC(invoke(this, "exitDeliveryInternal", [A], nil))
1988+ else dD(invoke(this, "exitDeliveryInternal", [A], nil))
19891989 }
19901990 }
19911991
19921992
1993-func kq (A) = {
1994- let jp = split(valueOrElse(getString(bJ(A)), aJ), "_")
1993+func kr (A) = {
1994+ let jq = split(valueOrElse(getString(bJ(A)), aJ), "_")
19951995 let ax = lastBlock.timestamp
1996- let ci = parseIntValue(jp[bl])
1997- let cj = parseIntValue(jp[bn])
1998- let ju = valueOrErrorMessage(getString(bG(A)), "NFT duck is orphaned")
1999- let kr = z(A)
2000- let ks = getIntegerValue(kr)
2001- let kt = if ((cj >= 3))
1996+ let ci = parseIntValue(jq[bl])
1997+ let cj = parseIntValue(jq[bn])
1998+ let jv = valueOrErrorMessage(getString(bG(A)), "NFT duck is orphaned")
1999+ let ks = z(A)
2000+ let kt = getIntegerValue(ks)
2001+ let ku = if ((cj >= 3))
20022002 then {
2003- let ku = invoke(db, "sendDeliveryReward", [ju], nil)
2004- if ((ku == ku))
2003+ let kv = invoke(dc, "sendDeliveryReward", [jv], nil)
2004+ if ((kv == kv))
20052005 then nil
20062006 else throw("Strict value is not equal to itself.")
20072007 }
20082008 else if ((ax > (ci + aN)))
20092009 then throw("Your duck is still on delivery mission")
20102010 else {
2011- let kv = valueOrElse(getInteger(db, bO), 0)
2012- let kw = invoke(db, "updateDeliveryLocked", [(kv - aM)], nil)
2013- if ((kw == kw))
2014- then if ((0 >= ks))
2011+ let kw = valueOrElse(getInteger(dc, bO), 0)
2012+ let kx = invoke(dc, "updateDeliveryLocked", [(kw - aM)], nil)
2013+ if ((kx == kx))
2014+ then if ((0 >= kt))
20152015 then nil
20162016 else [IntegerEntry(T(A), (ci + a))]
20172017 else throw("Strict value is not equal to itself.")
20182018 }
2019- let kx = getIntegerValue(J(A))
2020- let ky = getStringValue(K(A))
2021- $Tuple4(kt, [IntegerEntry(kr, kx), StringEntry(bJ(A), ky)], ky, kx)
2022- }
2023-
2024-
2025-func kz (kA,al,kB,c,kC,kD) = {
2019+ let ky = getIntegerValue(J(A))
2020+ let kz = getStringValue(K(A))
2021+ $Tuple4(ku, [IntegerEntry(ks, ky), StringEntry(bJ(A), kz)], kz, ky)
2022+ }
2023+
2024+
2025+func kA (kB,al,kC,c,kD,kE) = {
20262026 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
2027- if (ko(A))
2027+ if (kp(A))
20282028 then throw("mergeInternal_checkTournament")
2029- else if (kp(A))
2029+ else if (kq(A))
20302030 then throw("mergeInternal_checkDelivery")
20312031 else {
2032- func kE (eQ,P) = {
2033- let jr = value(assetInfo(fromBase58String(P)))
2034- let js = br(P)
2035- let jt = valueOrErrorMessage(getInteger(js), (("NFT " + jr.name) + " is not staked"))
2036- let ju = valueOrErrorMessage(getString(bo(P)), (("NFT " + jr.name) + " is orphaned"))
2037- if ((ju != c))
2032+ func kF (eR,P) = {
2033+ let js = value(assetInfo(fromBase58String(P)))
2034+ let jt = br(P)
2035+ let ju = valueOrErrorMessage(getInteger(jt), (("NFT " + js.name) + " is not staked"))
2036+ let jv = valueOrErrorMessage(getString(bo(P)), (("NFT " + js.name) + " is orphaned"))
2037+ if ((jv != c))
20382038 then throw((aC + " is not yours"))
20392039 else {
2040- let jv = split(jr.description, "_")
2041- let ds = jv[dj]
2042- if (if ((eQ._3 != ""))
2043- then (eQ._3 != ds)
2040+ let jw = split(js.description, "_")
2041+ let dt = jw[dk]
2042+ if (if ((eR._3 != ""))
2043+ then (eR._3 != dt)
20442044 else false)
20452045 then throw("Lands should be on the same continent to merge")
20462046 else {
2047- let dH = jv[dh]
2048- let kF = eQ._1
2049- let gJ = valueOrErrorMessage(indexOf(kF, dH), "You haven't passed all the lands needed")
2050- let kG = (take(kF, gJ) + drop(kF, (gJ + 1)))
2051- let jh = dG(dH)
2052- let kH = (eQ._2 + valueOrElse(getInteger(bs(aE, P)), 0))
2053- let hZ = valueOrElse(getInteger(by(P)), 0)
2054- let kI = {
2055- let cx = dH
2056- if (("S" == cx))
2047+ let dI = jw[di]
2048+ let kG = eR._1
2049+ let gK = valueOrErrorMessage(indexOf(kG, dI), "You haven't passed all the lands needed")
2050+ let kH = (take(kG, gK) + drop(kG, (gK + 1)))
2051+ let ji = dH(dI)
2052+ let kI = (eR._2 + valueOrElse(getInteger(bs(aE, P)), 0))
2053+ let ia = valueOrElse(getInteger(by(P)), 0)
2054+ let kJ = {
2055+ let cy = dI
2056+ if (("S" == cy))
20572057 then 3
2058- else if (("M" == cx))
2058+ else if (("M" == cy))
20592059 then 4
2060- else if (("L" == cx))
2060+ else if (("L" == cy))
20612061 then 5
2062- else if (("XL" == cx))
2062+ else if (("XL" == cy))
20632063 then 6
20642064 else throw("Only S, M, L, XL can merge")
20652065 }
2066- if ((hZ != kI))
2066+ if ((ia != kJ))
20672067 then throw("All lands should be maxed to merge")
20682068 else {
2069- let es = jv[dg]
2070- let gF = gL(jv[di])
2071- let gP = (lastBlock.timestamp - jt)
2072- if ((0 > gP))
2073- then throw(((("Saved timestamp is in future, saved = " + toString(jt)) + ", current = ") + toString(lastBlock.timestamp)))
2069+ let et = jw[dh]
2070+ let gG = gM(jw[dj])
2071+ let gQ = (lastBlock.timestamp - ju)
2072+ if ((0 > gQ))
2073+ then throw(((("Saved timestamp is in future, saved = " + toString(ju)) + ", current = ") + toString(lastBlock.timestamp)))
20742074 else {
2075- let jx = jg(P, jh)
2076- let hY = (jh / cE)
2077- let jF = gN(split(eQ._4, "_"), gF, gP, hY, jx)
2078- let fa = gD(eQ._6, gF, hY, -1)
2079- let kJ = gD(eQ._10, gF, hY, -1)
2080- let ht = gD(eQ._9, gF, hY, 1)
2081- let kK = eQ._7
2082- let cZ = indexOf(kK, P)
2083- if (!(isDefined(cZ)))
2075+ let jy = jh(P, ji)
2076+ let hZ = (ji / cF)
2077+ let jG = gO(split(eR._4, "_"), gG, gQ, hZ, jy)
2078+ let fb = gE(eR._6, gG, hZ, -1)
2079+ let kK = gE(eR._10, gG, hZ, -1)
2080+ let hu = gE(eR._9, gG, hZ, 1)
2081+ let kL = eR._7
2082+ let da = indexOf(kL, P)
2083+ if (!(isDefined(da)))
20842084 then throw(("Your staked lands don't contain " + P))
20852085 else {
2086- let kL = bq(P)
2087- let kM = valueOrElse(getString(kL), "")
2088- $Tuple10(kG, kH, ds, jF, ((((((((((((eQ._5 :+ DeleteEntry(br(P))) :+ DeleteEntry(bu(aC, P, c))) :+ DeleteEntry(er(es))) :+ DeleteEntry(bo(P))) :+ DeleteEntry(by(P))) :+ DeleteEntry(et(P, c))) :+ DeleteEntry(bs(aE, P))) :+ DeleteEntry(eu(es))) :+ DeleteEntry(bx(P))) :+ DeleteEntry(kL)) :+ Burn(fromBase58String(P), 1)) ++ (if ((kM != ""))
2089- then [DeleteEntry(ep(kM))]
2090- else nil)), fa, removeByIndex(kK, value(cZ)), (eQ._8 + jh), ht, kJ)
2086+ let kM = bq(P)
2087+ let kN = valueOrElse(getString(kM), "")
2088+ $Tuple10(kH, kI, dt, jG, ((((((((((((eR._5 :+ DeleteEntry(br(P))) :+ DeleteEntry(bu(aC, P, c))) :+ DeleteEntry(es(et))) :+ DeleteEntry(bo(P))) :+ DeleteEntry(by(P))) :+ DeleteEntry(eu(P, c))) :+ DeleteEntry(bs(aE, P))) :+ DeleteEntry(ev(et))) :+ DeleteEntry(bx(P))) :+ DeleteEntry(kM)) :+ Burn(fromBase58String(P), 1)) ++ (if ((kN != ""))
2089+ then [DeleteEntry(eq(kN))]
2090+ else nil)), fb, removeByIndex(kL, value(da)), (eR._8 + ji), hu, kK)
20912091 }
20922092 }
20932093 }
20952095 }
20962096 }
20972097
2098- let hK = bI(A)
2099- let in = hJ(hK)
2100- let gE = split(valueOrElse(getString(dq()), "0_0_0_0_0_0"), "_")
2101- let kN = dt(c)
2102- let kO = getString(kN)
2103- let kP = if (isDefined(kO))
2104- then split_51C(value(kO), "_")
2098+ let hL = bI(A)
2099+ let io = hK(hL)
2100+ let gF = split(valueOrElse(getString(dr()), "0_0_0_0_0_0"), "_")
2101+ let kO = du(c)
2102+ let kP = getString(kO)
2103+ let kQ = if (isDefined(kP))
2104+ then split_51C(value(kP), "_")
21052105 else nil
2106- let kQ = split(value(assetInfo(fromBase58String(kC[0]))).description, "_")[dj]
2107- let kR = split(valueOrElse(getString(dr(kQ)), "0_0_0_0_0_0"), "_")
2108- let fb = {
2109- let eS = kC
2110- let eT = size(eS)
2111- let eU = $Tuple10(kB, 0, "", in[bi], nil, gE, kP, 0, split("0_0_0_0_0_0", "_"), kR)
2112- func eV (eW,eX) = if ((eX >= eT))
2113- then eW
2114- else kE(eW, eS[eX])
2115-
2116- func eY (eW,eX) = if ((eX >= eT))
2117- then eW
2106+ let kR = split(value(assetInfo(fromBase58String(kD[0]))).description, "_")[dk]
2107+ let kS = split(valueOrElse(getString(ds(kR)), "0_0_0_0_0_0"), "_")
2108+ let fc = {
2109+ let eT = kD
2110+ let eU = size(eT)
2111+ let eV = $Tuple10(kC, 0, "", io[bi], nil, gF, kQ, 0, split("0_0_0_0_0_0", "_"), kS)
2112+ func eW (eX,eY) = if ((eY >= eU))
2113+ then eX
2114+ else kF(eX, eT[eY])
2115+
2116+ func eZ (eX,eY) = if ((eY >= eU))
2117+ then eX
21182118 else throw("List size exceeds 5")
21192119
2120- eY(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5)
2120+ eZ(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5)
21212121 }
2122- let ds = fb._3
2123- let hn = valueOrErrorMessage(indexOf(aP, ds), ("Unknown continent: " + ds))
2124- let gM = hs(fb._9, (dG(kA) / cE))
2125- let iL = valueOrElse(getInteger(eo()), (en + 1))
2126- let kS = toString(iL)
2127- let iM = Issue(eF(kS, kA), makeString([kS, kA, gM, ds], "_"), 1, 0, false)
2128- let bp = calculateAssetId(iM)
2129- let kT = toBase58String(bp)
2130- let jR = makeString(fc((kD > 0), split(in[bj], "_"), kD), "_")
2131- let kU = du(c)
2132- let kV = valueOrElse(getInteger(kU), 0)
2133- $Tuple2((((((((((((((((fb._5 :+ (if ((size(fb._7) > 0))
2134- then StringEntry(kN, makeString_11C(fb._7, "_"))
2135- else DeleteEntry(kN))) :+ IntegerEntry(kU, if ((fb._8 > kV))
2122+ let dt = fc._3
2123+ let ho = valueOrErrorMessage(indexOf(aP, dt), ("Unknown continent: " + dt))
2124+ let gN = ht(fc._9, (dH(kB) / cF))
2125+ let iM = valueOrElse(getInteger(ep()), (eo + 1))
2126+ let kT = toString(iM)
2127+ let iN = Issue(eG(kT, kB), makeString([kT, kB, gN, dt], "_"), 1, 0, false)
2128+ let bp = calculateAssetId(iN)
2129+ let kU = toBase58String(bp)
2130+ let jS = makeString(fd((kE > 0), split(io[bj], "_"), kE), "_")
2131+ let kV = dv(c)
2132+ let kW = valueOrElse(getInteger(kV), 0)
2133+ $Tuple2((((((((((((((((fc._5 :+ (if ((size(fc._7) > 0))
2134+ then StringEntry(kO, makeString_11C(fc._7, "_"))
2135+ else DeleteEntry(kO))) :+ IntegerEntry(kV, if ((fc._8 > kW))
21362136 then 0
2137- else (kV - fb._8))) :+ IntegerEntry(eo(), (iL + 1))) :+ iM) :+ StringEntry(er(kS), kT)) :+ StringEntry(bo(kT), c)) :+ StringEntry(eu(kS), c)) :+ IntegerEntry(bs(aE, kT), fb._2)) :+ IntegerEntry(by(kT), al)) :+ IntegerEntry(et(kT, c), al)) :+ StringEntry(hK, makeString([in[bh], fb._4, jR, in[bk]], ":"))) :+ StringEntry(dq(), makeString(fb._6, "_"))) :+ StringEntry(dr(ds), makeString(fb._10, "_"))) :+ StringEntry(bJ(A), makeString([ds, "L", kT], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bp)), kT)
2137+ else (kW - fc._8))) :+ IntegerEntry(ep(), (iM + 1))) :+ iN) :+ StringEntry(es(kT), kU)) :+ StringEntry(bo(kU), c)) :+ StringEntry(ev(kT), c)) :+ IntegerEntry(bs(aE, kU), fc._2)) :+ IntegerEntry(by(kU), al)) :+ IntegerEntry(eu(kU, c), al)) :+ StringEntry(hL, makeString([io[bh], fc._4, jS, io[bk]], ":"))) :+ StringEntry(dr(), makeString(fc._6, "_"))) :+ StringEntry(ds(dt), makeString(fc._10, "_"))) :+ StringEntry(bJ(A), makeString([dt, "L", kU], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bp)), kU)
21382138 }
21392139 }
21402140
21412141
2142-func kW (c,kC) = kz("M", 3, "SSSS", c, kC, 0)
2143-
2144-
2145-func kX (c,kC) = kz("L", 4, "SMM", c, kC, (cz * 4))
2146-
2147-
2148-func kY (c,kC) = kz("XL", 5, "SSSML", c, kC, (cz * 47))
2149-
2150-
2151-func kZ (c,kC) = kz("XXL", 6, "LXL", c, kC, (cz * 54))
2152-
2153-
2154-func la (c,kC) = {
2155- let cx = size(kC)
2156- if ((4 == cx))
2157- then kW(c, kC)
2158- else if ((3 == cx))
2159- then kX(c, kC)
2160- else if ((5 == cx))
2161- then kY(c, kC)
2162- else if ((2 == cx))
2163- then kZ(c, kC)
2142+func kX (c,kD) = kA("M", 3, "SSSS", c, kD, 0)
2143+
2144+
2145+func kY (c,kD) = kA("L", 4, "SMM", c, kD, (cA * 4))
2146+
2147+
2148+func kZ (c,kD) = kA("XL", 5, "SSSML", c, kD, (cA * 47))
2149+
2150+
2151+func la (c,kD) = kA("XXL", 6, "LXL", c, kD, (cA * 54))
2152+
2153+
2154+func lb (c,kD) = {
2155+ let cy = size(kD)
2156+ if ((4 == cy))
2157+ then kX(c, kD)
2158+ else if ((3 == cy))
2159+ then kY(c, kD)
2160+ else if ((5 == cy))
2161+ then kZ(c, kD)
2162+ else if ((2 == cy))
2163+ then la(c, kD)
21642164 else throw("Unknown merge")
21652165 }
21662166
21672167
2168-func lb (bL) = {
2169- let lc = getString(bH(bL))
2170- if (if (cu)
2171- then isDefined(lc)
2168+func lc (bL) = {
2169+ let ld = getString(bH(bL))
2170+ if (if (cv)
2171+ then isDefined(ld)
21722172 else false)
21732173 then {
2174- let A = value(lc)
2175- let ld = bJ(A)
2176- let cf = split(valueOrElse(getString(ld), aJ), "_")
2174+ let A = value(ld)
2175+ let le = bJ(A)
2176+ let cf = split(valueOrElse(getString(le), aJ), "_")
21772177 let ci = parseIntValue(cf[bl])
21782178 if (if ((cf[bm] != "D"))
21792179 then true
21802180 else (lastBlock.timestamp > (ci + aN)))
21812181 then nil
21822182 else {
2183- let kr = z(A)
2183+ let ks = z(A)
21842184 if ((parseIntValue(cf[bn]) >= 3))
21852185 then {
2186- let ku = invoke(db, "sendDeliveryReward", [bL], nil)
2187- if ((ku == ku))
2186+ let kv = invoke(dc, "sendDeliveryReward", [bL], nil)
2187+ if ((kv == kv))
21882188 then nil
21892189 else throw("Strict value is not equal to itself.")
21902190 }
21912191 else (({
2192- let kv = valueOrElse(getInteger(db, bO), 0)
2193- let kw = invoke(db, "updateDeliveryLocked", [(kv - aM)], nil)
2194- if ((kw == kw))
2195- then if ((0 >= getIntegerValue(kr)))
2192+ let kw = valueOrElse(getInteger(dc, bO), 0)
2193+ let kx = invoke(dc, "updateDeliveryLocked", [(kw - aM)], nil)
2194+ if ((kx == kx))
2195+ then if ((0 >= getIntegerValue(ks)))
21962196 then nil
21972197 else {
2198- let le = invoke(this, "saveInteger", [T(A), (ci + a)], nil)
2199- if ((le == le))
2198+ let lf = invoke(this, "saveInteger", [T(A), (ci + a)], nil)
2199+ if ((lf == lf))
22002200 then nil
22012201 else throw("Strict value is not equal to itself.")
22022202 }
22032203 else throw("Strict value is not equal to itself.")
2204- } :+ IntegerEntry(kr, getIntegerValue(J(A)))) :+ StringEntry(ld, getStringValue(K(A))))
2204+ } :+ IntegerEntry(ks, getIntegerValue(J(A)))) :+ StringEntry(le, getStringValue(K(A))))
22052205 }
22062206 }
22072207 else nil
22082208 }
22092209
22102210
2211-func lf (gJ) = if (if ((gJ.originCaller != da))
2212- then valueOrElse(getBoolean(dJ()), false)
2211+func lg (gK) = if (if ((gK.originCaller != db))
2212+ then valueOrElse(getBoolean(dK()), false)
22132213 else false)
22142214 then throw("Contracts are under maintenance")
22152215 else {
2216- let bL = toString(gJ.originCaller)
2217- (lb(bL) :+ StringEntry(dK(bL), toBase58String(gJ.transactionId)))
2216+ let bL = toString(gK.originCaller)
2217+ (lc(bL) :+ StringEntry(dL(bL), toBase58String(gK.transactionId)))
22182218 }
22192219
22202220
2221-func lg (gJ) = if (if ((gJ.originCaller != da))
2222- then valueOrElse(getBoolean(dJ()), false)
2221+func lh (gK) = if (if ((gK.originCaller != db))
2222+ then valueOrElse(getBoolean(dK()), false)
22232223 else false)
22242224 then throw("Contracts are under maintenance")
2225- else [StringEntry(dK(toString(gJ.originCaller)), toBase58String(gJ.transactionId))]
2226-
2227-
2228-@Callable(gJ)
2229-func constructorV1 (lh) = if ((gJ.caller != this))
2225+ else [StringEntry(dL(toString(gK.originCaller)), toBase58String(gK.transactionId))]
2226+
2227+
2228+@Callable(gK)
2229+func constructorV1 (li) = if ((gK.caller != this))
22302230 then throw("Permission denied")
2231- else [StringEntry(cU(), lh)]
2232-
2233-
2234-
2235-@Callable(gJ)
2236-func saveInteger (cM,eH) = if ((gJ.caller != this))
2231+ else [StringEntry(cV(), li)]
2232+
2233+
2234+
2235+@Callable(gK)
2236+func saveInteger (cN,eI) = if ((gK.caller != this))
22372237 then throw("saveInteger is not public method")
2238- else [IntegerEntry(cM, eH)]
2239-
2240-
2241-
2242-@Callable(gJ)
2243-func setBlocked (li) = if ((gJ.caller != this))
2238+ else [IntegerEntry(cN, eI)]
2239+
2240+
2241+
2242+@Callable(gK)
2243+func setBlocked (lj) = if ((gK.caller != this))
22442244 then throw("permission denied")
2245- else [BooleanEntry(dJ(), li)]
2246-
2247-
2248-
2249-@Callable(gJ)
2245+ else [BooleanEntry(dK(), lj)]
2246+
2247+
2248+
2249+@Callable(gK)
22502250 func stakeLand () = {
2251- let lj = lf(gJ)
2252- if ((size(gJ.payments) != 1))
2251+ let lk = lg(gK)
2252+ if ((size(gK.payments) != 1))
22532253 then throw("Exactly one payment required")
22542254 else {
2255- let lk = value(gJ.payments[0])
2256- let bp = value(lk.assetId)
2257- let cL = toString(gJ.caller)
2258- if ((lk.amount != 1))
2255+ let ll = value(gK.payments[0])
2256+ let bp = value(ll.assetId)
2257+ let cM = toString(gK.caller)
2258+ if ((ll.amount != 1))
22592259 then throw((("NFT " + aC) + " token should be attached as payment"))
22602260 else {
2261- let jr = value(assetInfo(bp))
2262- if ((jr.issuer != this))
2261+ let js = value(assetInfo(bp))
2262+ if ((js.issuer != this))
22632263 then throw("Unknown issuer of token")
2264- else if (!(contains(jr.name, aC)))
2264+ else if (!(contains(js.name, aC)))
22652265 then throw((("Only NFT " + aC) + " tokens are accepted"))
22662266 else {
2267- let ll = drop(jr.name, 4)
2268- let es = if (contains(ll, "XXL"))
2269- then dropRight(ll, 3)
2270- else if (contains(ll, "XL"))
2271- then dropRight(ll, 2)
2272- else dropRight(ll, 1)
2273- if (!(isDefined(parseInt(es))))
2274- then throw(("Cannot parse land number from " + jr.name))
2267+ let lm = drop(js.name, 4)
2268+ let et = if (contains(lm, "XXL"))
2269+ then dropRight(lm, 3)
2270+ else if (contains(lm, "XL"))
2271+ then dropRight(lm, 2)
2272+ else dropRight(lm, 1)
2273+ if (!(isDefined(parseInt(et))))
2274+ then throw(("Cannot parse land number from " + js.name))
22752275 else {
22762276 let P = toBase58String(bp)
2277- let js = br(P)
2278- if (isDefined(getInteger(js)))
2279- then throw((("NFT " + jr.name) + " is already staked"))
2277+ let jt = br(P)
2278+ if (isDefined(getInteger(jt)))
2279+ then throw((("NFT " + js.name) + " is already staked"))
22802280 else {
2281- let jv = split(jr.description, "_")
2282- let gF = gL(jv[di])
2283- let jh = dG(jv[dh])
2284- let hY = (jh / cE)
2285- let fa = gK(gF, hY, 1)
2286- let lm = dr(jv[dj])
2287- let kR = split(valueOrElse(getString(lm), "0_0_0_0_0_0"), "_")
2288- let ln = makeString(gD(kR, gF, hY, 1), "_")
2289- let kN = dt(cL)
2290- let kO = getString(kN)
2291- let kK = if (isDefined(kO))
2292- then split_51C(value(kO), "_")
2281+ let jw = split(js.description, "_")
2282+ let gG = gM(jw[dj])
2283+ let ji = dH(jw[di])
2284+ let hZ = (ji / cF)
2285+ let fb = gL(gG, hZ, 1)
2286+ let ln = ds(jw[dk])
2287+ let kS = split(valueOrElse(getString(ln), "0_0_0_0_0_0"), "_")
2288+ let lo = makeString(gE(kS, gG, hZ, 1), "_")
2289+ let kO = du(cM)
2290+ let kP = getString(kO)
2291+ let kL = if (isDefined(kP))
2292+ then split_51C(value(kP), "_")
22932293 else nil
2294- if (containsElement(kK, P))
2294+ if (containsElement(kL, P))
22952295 then throw(("Your staked lands already contain " + P))
2296- else if ((size(kK) >= aG))
2296+ else if ((size(kL) >= aG))
22972297 then throw((("Your already staked max (" + toString(aG)) + ") lands"))
22982298 else {
2299- let hZ = valueOrElse(getInteger(by(P)), 0)
2300- let kU = du(cL)
2301- let lo = valueOrElse(getInteger(kU), 0)
2302- let lp = invoke(dd, "onStakeUnstakeLand", [cL], nil)
2303- $Tuple2(([IntegerEntry(js, lastBlock.timestamp), IntegerEntry(bu(aC, P, cL), lastBlock.timestamp), StringEntry(kN, makeString_11C((kK :+ P), "_")), IntegerEntry(kU, (lo + jh)), StringEntry(bo(P), cL), StringEntry(eu(es), cL), IntegerEntry(et(P, cL), hZ), StringEntry(dq(), fa), StringEntry(lm, ln)] ++ lj), lp)
2299+ let ia = valueOrElse(getInteger(by(P)), 0)
2300+ let kV = dv(cM)
2301+ let lp = valueOrElse(getInteger(kV), 0)
2302+ let lq = invoke(de, "onStakeUnstakeLand", [cM], nil)
2303+ $Tuple2(([IntegerEntry(jt, lastBlock.timestamp), IntegerEntry(bu(aC, P, cM), lastBlock.timestamp), StringEntry(kO, makeString_11C((kL :+ P), "_")), IntegerEntry(kV, (lp + ji)), StringEntry(bo(P), cM), StringEntry(ev(et), cM), IntegerEntry(eu(P, cM), ia), StringEntry(dr(), fb), StringEntry(ln, lo)] ++ lk), lq)
23042304 }
23052305 }
23062306 }
23112311
23122312
23132313
2314-@Callable(gJ)
2315-func unstakeLand (jn) = {
2316- let lj = lf(gJ)
2317- if ((size(gJ.payments) != 0))
2314+@Callable(gK)
2315+func unstakeLand (jo) = {
2316+ let lk = lg(gK)
2317+ if ((size(gK.payments) != 0))
23182318 then throw("No payments required")
23192319 else {
2320- let c = toString(gJ.caller)
2321- let fZ = jl(c, ez, jn)
2322- let P = fZ._2
2323- let jv = fZ._3
2324- let kN = dt(c)
2325- let gF = gL(jv[di])
2326- let jh = dG(jv[dh])
2327- let hY = (jh / cE)
2328- let fa = gK(gF, hY, -1)
2329- let lm = dr(jv[dj])
2330- let kR = split(valueOrElse(getString(lm), "0_0_0_0_0_0"), "_")
2331- let ln = makeString(gD(kR, gF, hY, -1), "_")
2332- let jS = jI(c, P, jh, ez)
2333- let kK = split_51C(valueOrElse(getString(kN), ""), "_")
2334- let cZ = indexOf(kK, P)
2335- if (!(isDefined(cZ)))
2320+ let c = toString(gK.caller)
2321+ let ga = jm(c, eA, jo)
2322+ let P = ga._2
2323+ let jw = ga._3
2324+ let kO = du(c)
2325+ let gG = gM(jw[dj])
2326+ let ji = dH(jw[di])
2327+ let hZ = (ji / cF)
2328+ let fb = gL(gG, hZ, -1)
2329+ let ln = ds(jw[dk])
2330+ let kS = split(valueOrElse(getString(ln), "0_0_0_0_0_0"), "_")
2331+ let lo = makeString(gE(kS, gG, hZ, -1), "_")
2332+ let jT = jJ(c, P, ji, eA)
2333+ let kL = split_51C(valueOrElse(getString(kO), ""), "_")
2334+ let da = indexOf(kL, P)
2335+ if (!(isDefined(da)))
23362336 then throw(("Your staked lands don't contain " + P))
23372337 else {
23382338 let ax = lastBlock.timestamp
2339- let lq = valueOrElse(getInteger(dc, bK(c)), 0)
2340- if ((lq >= ax))
2341- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lq)))
2339+ let lr = valueOrElse(getInteger(dd, bK(c)), 0)
2340+ if ((lr >= ax))
2341+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lr)))
23422342 else {
2343- let lr = (valueOrElse(getInteger(dd, b(c)), 0) + cA)
2344- if ((lr > ax))
2345- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lr)))
2343+ let ls = (valueOrElse(getInteger(de, b(c)), 0) + cB)
2344+ if ((ls > ax))
2345+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(ls)))
23462346 else {
2347- let kU = du(c)
2348- let kV = valueOrElse(getInteger(kU), 0)
2349- let ls = if ((jh > kV))
2347+ let kV = dv(c)
2348+ let kW = valueOrElse(getInteger(kV), 0)
2349+ let lt = if ((ji > kW))
23502350 then 0
2351- else (kV - jh)
2352- let lp = invoke(dd, "onStakeUnstakeLand", [c], nil)
2353- $Tuple2(([ScriptTransfer(gJ.caller, 1, fromBase58String(P)), DeleteEntry(br(P)), DeleteEntry(bu(aC, P, c)), StringEntry(dq(), fa), StringEntry(lm, ln), StringEntry(jS._2, makeString(jS._3, ":")), if ((size(kK) > 1))
2354- then StringEntry(kN, makeString_11C(removeByIndex(kK, value(cZ)), "_"))
2355- else DeleteEntry(kN), IntegerEntry(kU, ls)] ++ lj), lp)
2351+ else (kW - ji)
2352+ let lq = invoke(de, "onStakeUnstakeLand", [c], nil)
2353+ $Tuple2(([ScriptTransfer(gK.caller, 1, fromBase58String(P)), DeleteEntry(br(P)), DeleteEntry(bu(aC, P, c)), StringEntry(dr(), fb), StringEntry(ln, lo), StringEntry(jT._2, makeString(jT._3, ":")), if ((size(kL) > 1))
2354+ then StringEntry(kO, makeString_11C(removeByIndex(kL, value(da)), "_"))
2355+ else DeleteEntry(kO), IntegerEntry(kV, lt)] ++ lk), lq)
23562356 }
23572357 }
23582358 }
23612361
23622362
23632363
2364-@Callable(gJ)
2364+@Callable(gK)
23652365 func stakeDuck () = {
2366- let lj = lf(gJ)
2367- if ((size(gJ.payments) != 1))
2366+ let lk = lg(gK)
2367+ if ((size(gK.payments) != 1))
23682368 then throw("Exactly one payment required")
23692369 else {
2370- let lk = value(gJ.payments[0])
2371- let bp = value(lk.assetId)
2372- let cL = toString(gJ.caller)
2373- if ((lk.amount != 1))
2370+ let ll = value(gK.payments[0])
2371+ let bp = value(ll.assetId)
2372+ let cM = toString(gK.caller)
2373+ if ((ll.amount != 1))
23742374 then throw((("NFT " + aD) + " token should be attached as payment"))
23752375 else {
2376- let jr = value(assetInfo(bp))
2377- if (if ((jr.issuer != dW))
2378- then (jr.issuer != dX)
2376+ let js = value(assetInfo(bp))
2377+ if (if ((js.issuer != dX))
2378+ then (js.issuer != dY)
23792379 else false)
23802380 then throw((("Unknown issuer of " + aD) + " token"))
2381- else if (!(contains(jr.name, aD)))
2381+ else if (!(contains(js.name, aD)))
23822382 then throw((("Only NFT " + aD) + " tokens are accepted"))
23832383 else {
2384- let lt = toBase58String(bp)
2385- let js = br(lt)
2386- if (isDefined(getInteger(js)))
2387- then throw((("NFT " + jr.name) + " is already staked"))
2388- else if (isDefined(getString(bH(cL))))
2389- then throw(("You already staked one duck: " + jr.name))
2384+ let lu = toBase58String(bp)
2385+ let jt = br(lu)
2386+ if (isDefined(getInteger(jt)))
2387+ then throw((("NFT " + js.name) + " is already staked"))
2388+ else if (isDefined(getString(bH(cM))))
2389+ then throw(("You already staked one duck: " + js.name))
23902390 else {
2391- let ld = bJ(lt)
2392- let cd = getString(ld)
2393- let hK = bI(lt)
2394- let lu = getString(hK)
2395- let ja = z(lt)
2396- let jb = ag(valueOrElse(getInteger(D(lt)), 0))
2397- let ks = valueOrElse(getInteger(ja), jb)
2398- ([IntegerEntry(js, lastBlock.timestamp), IntegerEntry(bu(aD, toBase58String(bp), cL), lastBlock.timestamp), StringEntry(bG(lt), cL), StringEntry(bH(cL), lt)] ++ (if (isDefined(cd))
2391+ let le = bJ(lu)
2392+ let cd = getString(le)
2393+ let hL = bI(lu)
2394+ let lv = getString(hL)
2395+ let jb = z(lu)
2396+ let jc = ag(valueOrElse(getInteger(D(lu)), 0))
2397+ let kt = valueOrElse(getInteger(jb), jc)
2398+ ([IntegerEntry(jt, lastBlock.timestamp), IntegerEntry(bu(aD, toBase58String(bp), cM), lastBlock.timestamp), StringEntry(bG(lu), cM), StringEntry(bH(cM), lu)] ++ (if (isDefined(cd))
23992399 then nil
2400- else ([StringEntry(ld, aJ)] ++ (if (isDefined(lu))
2400+ else ([StringEntry(le, aJ)] ++ (if (isDefined(lv))
24012401 then nil
2402- else (([StringEntry(hK, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(ja, ks)) ++ lj)))))
2402+ else (([StringEntry(hL, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jb, kt)) ++ lk)))))
24032403 }
24042404 }
24052405 }
24082408
24092409
24102410
2411-@Callable(gJ)
2412-func unstakeDuck (lt) = {
2413- let lj = lf(gJ)
2414- if ((size(gJ.payments) != 0))
2411+@Callable(gK)
2412+func unstakeDuck (lu) = {
2413+ let lk = lg(gK)
2414+ if ((size(gK.payments) != 0))
24152415 then throw("No payments required")
24162416 else {
2417- let bp = fromBase58String(lt)
2418- let cL = toString(gJ.caller)
2419- let jr = value(assetInfo(bp))
2420- let js = br(lt)
2421- if (!(isDefined(getInteger(js))))
2422- then throw((("NFT " + jr.name) + " is not staked"))
2423- else if (!(isDefined(getString(bH(cL)))))
2424- then throw((("The duck " + jr.name) + " is not staked"))
2417+ let bp = fromBase58String(lu)
2418+ let cM = toString(gK.caller)
2419+ let js = value(assetInfo(bp))
2420+ let jt = br(lu)
2421+ if (!(isDefined(getInteger(jt))))
2422+ then throw((("NFT " + js.name) + " is not staked"))
2423+ else if (!(isDefined(getString(bH(cM)))))
2424+ then throw((("The duck " + js.name) + " is not staked"))
24252425 else {
2426- let ju = valueOrErrorMessage(getString(bG(lt)), (("NFT " + jr.name) + " is orphaned"))
2427- if ((ju != cL))
2426+ let jv = valueOrErrorMessage(getString(bG(lu)), (("NFT " + js.name) + " is orphaned"))
2427+ if ((jv != cM))
24282428 then throw("Staked NFT is not yours")
2429- else if (ko(lt))
2429+ else if (kp(lu))
24302430 then throw("unstakeDuck_checkTournament")
2431- else if (kp(lt))
2431+ else if (kq(lu))
24322432 then throw("unstakeDuck_checkDelivery")
24332433 else {
2434- let ja = z(lt)
2435- let jb = ag(valueOrElse(getInteger(D(lt)), 0))
2436- let as = valueOrElse(getInteger(ja), jb)
2437- if ((jb > as))
2438- then throw((("Please heal your duck to " + toString(jb)) + "hp before unstaking"))
2439- else ([ScriptTransfer(gJ.caller, 1, bp), DeleteEntry(js), DeleteEntry(ja), DeleteEntry(bJ(lt)), DeleteEntry(bG(lt)), DeleteEntry(bu(aD, lt, cL)), DeleteEntry(bH(cL))] ++ lj)
2434+ let jb = z(lu)
2435+ let jc = ag(valueOrElse(getInteger(D(lu)), 0))
2436+ let as = valueOrElse(getInteger(jb), jc)
2437+ if ((jc > as))
2438+ then throw((("Please heal your duck to " + toString(jc)) + "hp before unstaking"))
2439+ else ([ScriptTransfer(gK.caller, 1, bp), DeleteEntry(jt), DeleteEntry(jb), DeleteEntry(bJ(lu)), DeleteEntry(bG(lu)), DeleteEntry(bu(aD, lu, cM)), DeleteEntry(bH(cM))] ++ lk)
24402440 }
24412441 }
24422442 }
24442444
24452445
24462446
2447-@Callable(gJ)
2448-func claimRes (eH,lv) = {
2449- let lj = lf(gJ)
2450- if ((size(gJ.payments) != 0))
2447+@Callable(gK)
2448+func claimRes (eI,lw) = {
2449+ let lk = lg(gK)
2450+ if ((size(gK.payments) != 0))
24512451 then throw("No payments required")
24522452 else {
2453- let c = toString(gJ.originCaller)
2454- let fi = jw(c, eH, ez, lv)
2453+ let c = toString(gK.originCaller)
2454+ let fj = jx(c, eI, eA, lw)
24552455 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
2456- $Tuple2(((((fi._1 ++ jY(A, fraction(U, eH, cD))._1) :+ StringEntry(fi._2, makeString(fi._3, ":"))) :+ StringEntry(fi._4, makeString(fi._5, ":"))) ++ lj), fi._3[bi])
2457- }
2458- }
2459-
2460-
2461-
2462-@Callable(gJ)
2463-func claimResToWH (eH,lv) = {
2464- let lj = lf(gJ)
2465- if ((size(gJ.payments) != 0))
2456+ $Tuple2(((((fj._1 ++ jZ(A, fraction(U, eI, cE))._1) :+ StringEntry(fj._2, makeString(fj._3, ":"))) :+ StringEntry(fj._4, makeString(fj._5, ":"))) ++ lk), fj._3[bi])
2457+ }
2458+ }
2459+
2460+
2461+
2462+@Callable(gK)
2463+func claimResToWH (eI,lw) = {
2464+ let lk = lg(gK)
2465+ if ((size(gK.payments) != 0))
24662466 then throw("No payments required")
24672467 else {
2468- let c = toString(gJ.originCaller)
2469- let fi = jw(c, eH, ey, lv)
2470- $Tuple2(((((fi._1 ++ ke(c, fraction(U, eH, cD))._1) :+ StringEntry(fi._2, makeString(fi._3, ":"))) :+ StringEntry(fi._4, makeString(fi._5, ":"))) ++ lj), fi._5[aZ])
2471- }
2472- }
2473-
2474-
2475-
2476-@Callable(gJ)
2477-func flight (iP,iQ) = {
2478- let lj = lg(gJ)
2479- if ((size(gJ.payments) != 0))
2468+ let c = toString(gK.originCaller)
2469+ let fj = jx(c, eI, ez, lw)
2470+ $Tuple2(((((fj._1 ++ kf(c, fraction(U, eI, cE))._1) :+ StringEntry(fj._2, makeString(fj._3, ":"))) :+ StringEntry(fj._4, makeString(fj._5, ":"))) ++ lk), fj._5[aZ])
2471+ }
2472+ }
2473+
2474+
2475+
2476+@Callable(gK)
2477+func flight (iQ,iR) = {
2478+ let lk = lh(gK)
2479+ if ((size(gK.payments) != 0))
24802480 then throw("No payments required")
24812481 else {
2482- let bL = toString(gJ.caller)
2483- let ho = iO(bL, iP, iQ)
2484- let iU = ho._1
2485- let A = ho._2
2486- let ld = bJ(A)
2487- let jp = valueOrElse(getString(ld), aJ)
2488- let iW = ho._4
2489- if ((iW == jp))
2482+ let bL = toString(gK.caller)
2483+ let hp = iP(bL, iQ, iR)
2484+ let iV = hp._1
2485+ let A = hp._2
2486+ let le = bJ(A)
2487+ let jq = valueOrElse(getString(le), aJ)
2488+ let iX = hp._4
2489+ if ((iX == jq))
24902490 then throw("You can't fly to the same location")
24912491 else {
2492- let cr = split(iW, "_")
2493- let lw = (cr[bm] == "T")
2494- let lx = (cr[bm] == "D")
2495- let gw = F(A)
2496- let ly = valueOrElse(getString(gw), ",;,_,;,_,;,_,;,_,;,_,;,")
2497- let lz = fj(ly, ho._5)
2498- let lA = lz._1
2499- let lB = lz._2
2500- let lC = if (cm(de, jp))
2501- then if (!(ck(iW)))
2502- then cp(jp, iW)
2503- else if ((iU > 0))
2504- then $Tuple2(iW, iU)
2505- else $Tuple2(jp, 0)
2506- else if (cc(de, jp))
2507- then if (!(cc(de, iW)))
2492+ let cr = split(iX, "_")
2493+ let lx = (cr[bm] == "T")
2494+ let ly = (cr[bm] == "D")
2495+ let gx = F(A)
2496+ let lz = valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,")
2497+ let lA = fk(lz, hp._5)
2498+ let lB = lA._1
2499+ let lC = lA._2
2500+ let lD = if (cm(df, jq))
2501+ then if (!(ck(iX)))
2502+ then cp(jq, iX, 5)
2503+ else if ((iV > 0))
2504+ then $Tuple2(iX, iV)
2505+ else $Tuple2(jq, 0)
2506+ else if (cc(df, jq))
2507+ then if (!(cc(df, iX)))
25082508 then throw("Your duck is taking part in the tournament")
25092509 else {
2510- let lD = parseIntValue(cr[bn])
2511- let lE = split(jp, "_")
2512- let ce = valueOrElse(getInteger(de, bP), 0)
2513- if ((lD != (parseIntValue(lE[bn]) + 1)))
2514- then cp(jp, iW)
2515- else if ((iU > 0))
2510+ let lE = parseIntValue(cr[bn])
2511+ let lF = split(jq, "_")
2512+ let ce = valueOrElse(getInteger(df, bP), 0)
2513+ if ((lE != (parseIntValue(lF[bn]) + 1)))
2514+ then cp(jq, iX, 7)
2515+ else if ((iV > 0))
25162516 then {
2517- let lF = valueOrElse(getInteger(de, bT(ce, A)), 0)
2518- let lG = if ((lD > lF))
2519- then invoke(de, "saveDuckResult", [A, lD], nil)
2517+ let lG = valueOrElse(getInteger(df, bT(ce, A)), 0)
2518+ let lH = if ((lE > lG))
2519+ then invoke(df, "saveDuckResult", [A, lE], nil)
25202520 else unit
2521- if ((lG == lG))
2522- then $Tuple2(iW, iU)
2521+ if ((lH == lH))
2522+ then $Tuple2(iX, iV)
25232523 else throw("Strict value is not equal to itself.")
25242524 }
2525- else $Tuple2(jp, 0)
2525+ else $Tuple2(jq, 0)
25262526 }
2527- else if (!(ch(jp)))
2527+ else if (!(ch(jq)))
25282528 then {
2529- let lH = dD(invoke(this, "autoExitDelivery", [A], nil))
2530- if ((lH == lH))
2531- then if (lx)
2532- then lH
2533- else if ((iU > 0))
2534- then $Tuple2(iW, iU)
2535- else $Tuple2(lH._1, 0)
2529+ let lI = dE(invoke(this, "autoExitDelivery", [A], nil))
2530+ if ((lI == lI))
2531+ then if (ly)
2532+ then lI
2533+ else if ((iV > 0))
2534+ then $Tuple2(iX, iV)
2535+ else $Tuple2(lI._1, 0)
25362536 else throw("Strict value is not equal to itself.")
25372537 }
2538- else if (!(lx))
2538+ else if (!(ly))
25392539 then throw("Your duck is taking part in delivery")
2540- else if (!(ch(iW)))
2541- then cp(jp, iW)
2540+ else if (!(ch(iX)))
2541+ then cp(jq, iX, 13)
25422542 else {
2543- let lD = parseIntValue(cr[bn])
2544- let lE = split(jp, "_")
2545- if ((lD != (parseIntValue(lE[bn]) + 1)))
2546- then cp(jp, iW)
2547- else if (if ((iU > 0))
2548- then (3 > lD)
2543+ let lE = parseIntValue(cr[bn])
2544+ let lF = split(jq, "_")
2545+ if ((lE != (parseIntValue(lF[bn]) + 1)))
2546+ then cp(jq, iX, 14)
2547+ else if (if ((iV > 0))
2548+ then (3 > lE)
25492549 else false)
2550- then $Tuple2(iW, iU)
2550+ then $Tuple2(iX, iV)
25512551 else {
2552- let lH = dD(invoke(this, "autoExitDelivery", [A], nil))
2553- if ((lH == lH))
2554- then lH
2552+ let lI = dE(invoke(this, "autoExitDelivery", [A], nil))
2553+ if ((lI == lI))
2554+ then lI
25552555 else throw("Strict value is not equal to itself.")
25562556 }
25572557 }
2558- let lI = lC._1
2559- let lJ = lC._2
2560- $Tuple2(((([StringEntry(ld, lI), StringEntry(gw, lA), IntegerEntry(z(A), iU)] ++ lj) ++ (if (lB)
2558+ let lJ = lD._1
2559+ let lK = lD._2
2560+ $Tuple2(((([StringEntry(le, lJ), StringEntry(gx, lB), IntegerEntry(z(A), iV)] ++ lk) ++ (if (lC)
25612561 then [StringEntry(L(A), "0_0_0_0_0")]
2562- else nil)) ++ jY(A, if ((iU > 0))
2562+ else nil)) ++ jZ(A, if ((iV > 0))
25632563 then V
2564- else W)._1), ho._3)
2564+ else W)._1), hp._3)
25652565 }
25662566 }
25672567 }
25682568
25692569
25702570
2571-@Callable(gJ)
2572-func heal (lK,lL,lM) = {
2573- let lj = lf(gJ)
2574- if (if (if ((0 > lK))
2575- then true
2576- else (0 > lL))
2571+@Callable(gK)
2572+func heal (lL,lM,lN) = {
2573+ let lk = lg(gK)
2574+ if (if (if ((0 > lL))
25772575 then true
25782576 else (0 > lM))
2577+ then true
2578+ else (0 > lN))
25792579 then throw("Quantity cannot be negative")
25802580 else {
2581- let A = valueOrErrorMessage(getString(bH(toString(gJ.caller))), "You don't have a duck staked")
2582- if (ko(A))
2581+ let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked")
2582+ if (kp(A))
25832583 then throw("heal_checkTournament")
2584- else if (kp(A))
2584+ else if (kq(A))
25852585 then throw("heal_checkDelivery")
25862586 else {
2587- let lN = [lK, lL, lM]
2588- let ja = z(A)
2589- let jb = ag(valueOrElse(getInteger(D(A)), 0))
2590- let lO = valueOrElse(getInteger(ja), jb)
2591- if ((lO >= jb))
2592- then throw((("HP should be < " + toString(jb)) + " to heal"))
2587+ let lO = [lL, lM, lN]
2588+ let jb = z(A)
2589+ let jc = ag(valueOrElse(getInteger(D(A)), 0))
2590+ let lP = valueOrElse(getInteger(jb), jc)
2591+ if ((lP >= jc))
2592+ then throw((("HP should be < " + toString(jc)) + " to heal"))
25932593 else {
2594- let hK = bI(A)
2595- let in = hJ(hK)
2596- let lP = if ((in[bk] == ""))
2594+ let hL = bI(A)
2595+ let io = hK(hL)
2596+ let lQ = if ((io[bk] == ""))
25972597 then nil
2598- else split_4C(in[bk], "_")
2599- func lQ (eQ,co) = {
2600- let dz = eQ._2
2601- let hf = if ((size(lP) > dz))
2602- then parseIntValue(lP[dz])
2598+ else split_4C(io[bk], "_")
2599+ func lR (eR,co) = {
2600+ let dA = eR._2
2601+ let hg = if ((size(lQ) > dA))
2602+ then parseIntValue(lQ[dA])
26032603 else 0
2604- if ((3 > dz))
2604+ if ((3 > dA))
26052605 then {
2606- let lR = lN[dz]
2607- if ((lR > hf))
2608- then throw(((("You have only " + toString(hf)) + " of ") + aO[dz]))
2609- else $Tuple3((eQ._1 :+ toString((hf - lR))), (dz + 1), (eQ._3 + (parseIntValue(split(co, "_")[aU]) * lR)))
2606+ let lS = lO[dA]
2607+ if ((lS > hg))
2608+ then throw(((("You have only " + toString(hg)) + " of ") + aO[dA]))
2609+ else $Tuple3((eR._1 :+ toString((hg - lS))), (dA + 1), (eR._3 + (parseIntValue(split(co, "_")[aU]) * lS)))
26102610 }
2611- else $Tuple3((eQ._1 :+ toString(hf)), (dz + 1), eQ._3)
2611+ else $Tuple3((eR._1 :+ toString(hg)), (dA + 1), eR._3)
26122612 }
26132613
2614- let fi = {
2615- let eS = aS
2616- let eT = size(eS)
2617- let eU = $Tuple3(nil, 0, 0)
2618- func eV (eW,eX) = if ((eX >= eT))
2619- then eW
2620- else lQ(eW, eS[eX])
2621-
2622- func eY (eW,eX) = if ((eX >= eT))
2623- then eW
2614+ let fj = {
2615+ let eT = aS
2616+ let eU = size(eT)
2617+ let eV = $Tuple3(nil, 0, 0)
2618+ func eW (eX,eY) = if ((eY >= eU))
2619+ then eX
2620+ else lR(eX, eT[eY])
2621+
2622+ func eZ (eX,eY) = if ((eY >= eU))
2623+ then eX
26242624 else throw("List size exceeds 50")
26252625
2626- eY(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eU, 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)
2626+ eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 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)
26272627 }
2628- let lS = min([jb, (lO + fi._3)])
2629- $Tuple2((([IntegerEntry(ja, lS), StringEntry(hK, makeString_2C([in[bh], in[bi], in[bj], makeString(fi._1, "_")], ":"))] ++ lj) ++ jY(A, (ad * ((lK + lL) + lM)))._1), lS)
2628+ let lT = min([jc, (lP + fj._3)])
2629+ $Tuple2((([IntegerEntry(jb, lT), StringEntry(hL, makeString_2C([io[bh], io[bi], io[bj], makeString(fj._1, "_")], ":"))] ++ lk) ++ jZ(A, (ad * ((lL + lM) + lN)))._1), lT)
26302630 }
26312631 }
26322632 }
26342634
26352635
26362636
2637-@Callable(gJ)
2637+@Callable(gK)
26382638 func healES () = {
2639- let lj = lf(gJ)
2640- if ((size(gJ.payments) != 1))
2639+ let lk = lg(gK)
2640+ if ((size(gK.payments) != 1))
26412641 then throw("Exactly one payment required")
26422642 else {
2643- let lk = value(gJ.payments[0])
2644- if ((lk.assetId != cw))
2643+ let ll = value(gK.payments[0])
2644+ if ((ll.assetId != cx))
26452645 then throw("Allowed USDT payment only!")
26462646 else {
2647- let A = valueOrErrorMessage(getString(bH(toString(gJ.caller))), "You don't have a duck staked")
2648- if (ko(A))
2647+ let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked")
2648+ if (kp(A))
26492649 then throw("healES_checkTournament")
2650- else if (kp(A))
2650+ else if (kq(A))
26512651 then throw("healES_checkDelivery")
26522652 else {
2653- let ja = z(A)
2654- let jb = ag(valueOrElse(getInteger(D(A)), 0))
2655- let lO = valueOrElse(getInteger(ja), jb)
2656- if ((lO > 0))
2653+ let jb = z(A)
2654+ let jc = ag(valueOrElse(getInteger(D(A)), 0))
2655+ let lP = valueOrElse(getInteger(jb), jc)
2656+ if ((lP > 0))
26572657 then throw("HP should be 0 to call Emergency Service")
26582658 else {
2659- let hK = bI(A)
2660- let in = hJ(hK)
2661- let lP = if ((in[bk] == ""))
2659+ let hL = bI(A)
2660+ let io = hK(hL)
2661+ let lQ = if ((io[bk] == ""))
26622662 then nil
2663- else split_4C(in[bk], "_")
2664- let lT = if ((size(lP) > 0))
2665- then parseIntValue(lP[0])
2663+ else split_4C(io[bk], "_")
2664+ let lU = if ((size(lQ) > 0))
2665+ then parseIntValue(lQ[0])
26662666 else 0
2667- let lU = if ((size(lP) > 1))
2668- then parseIntValue(lP[1])
2667+ let lV = if ((size(lQ) > 1))
2668+ then parseIntValue(lQ[1])
26692669 else 0
2670- let lV = if ((size(lP) > 2))
2671- then parseIntValue(lP[2])
2670+ let lW = if ((size(lQ) > 2))
2671+ then parseIntValue(lQ[2])
26722672 else 0
2673- if (if (if ((lT > 0))
2674- then true
2675- else (lU > 0))
2673+ if (if (if ((lU > 0))
26762674 then true
26772675 else (lV > 0))
2676+ then true
2677+ else (lW > 0))
26782678 then throw("You have to use own Medical Kit")
26792679 else {
2680- let lW = getString(db, bM())
2681- let lX = if (isDefined(lW))
2682- then split_4C(value(lW), "_")
2680+ let lX = getString(dc, bM())
2681+ let lY = if (isDefined(lX))
2682+ then split_4C(value(lX), "_")
26832683 else nil
2684- let lY = if ((size(lX) > 0))
2685- then parseIntValue(lX[0])
2684+ let lZ = if ((size(lY) > 0))
2685+ then parseIntValue(lY[0])
26862686 else 0
2687- if ((0 >= lY))
2687+ if ((0 >= lZ))
26882688 then throw("There are no Medical Kits L1 at Emergency Service storage")
26892689 else {
2690- let lS = (lO + parseIntValue(split(aS[0], "_")[aU]))
2691- let lZ = makeString([toString((lY - 1)), removeByIndex(lX, 0)], "_")
2690+ let lT = (lP + parseIntValue(split(aS[0], "_")[aU]))
2691+ let ma = makeString([toString((lZ - 1)), removeByIndex(lY, 0)], "_")
26922692 let co = split(aS[0], "_")
2693- let ma = cn(co)
2694- let mb = fraction((ma * aL), aK, (cD * aX))
2695- if ((lk.amount != mb))
2696- then throw(("Payment attached should be " + toString(mb)))
2693+ let mb = cn(co)
2694+ let mc = fraction((mb * aL), aK, (cE * aX))
2695+ if ((ll.amount != mc))
2696+ then throw(("Payment attached should be " + toString(mc)))
26972697 else {
2698- let fi = dv(invoke(db, "updateEsStorage", [lZ], [AttachedPayment(cw, mb)]))
2699- $Tuple2(((lj :+ IntegerEntry(ja, lS)) ++ jY(A, X)._1), fi)
2698+ let fj = dw(invoke(dc, "updateEsStorage", [ma], [AttachedPayment(cx, mc)]))
2699+ $Tuple2(((lk :+ IntegerEntry(jb, lT)) ++ jZ(A, X)._1), fj)
27002700 }
27012701 }
27022702 }
27082708
27092709
27102710
2711-@Callable(gJ)
2712-func updateBackpack (A,mc) = if ((gJ.caller != db))
2711+@Callable(gK)
2712+func updateBackpack (A,md) = if ((gK.caller != dc))
27132713 then throw("permission denied")
2714- else $Tuple2([StringEntry(bI(A), mc)], mc)
2715-
2716-
2717-
2718-@Callable(gJ)
2714+ else $Tuple2([StringEntry(bI(A), md)], md)
2715+
2716+
2717+
2718+@Callable(gK)
27192719 func commitForRandom () = {
2720- let lj = lf(gJ)
2721- let md = (height + do)
2722- let c = toString(gJ.caller)
2723- $Tuple2(([IntegerEntry(dp(c), md)] ++ lj), md)
2724- }
2725-
2726-
2727-
2728-@Callable(gJ)
2720+ let lk = lg(gK)
2721+ let me = (height + dp)
2722+ let c = toString(gK.caller)
2723+ $Tuple2(([IntegerEntry(dq(c), me)] ++ lk), me)
2724+ }
2725+
2726+
2727+
2728+@Callable(gK)
27292729 func buySLand () = {
2730- let lj = lf(gJ)
2731- if ((size(gJ.payments) != 1))
2730+ let lk = lg(gK)
2731+ if ((size(gK.payments) != 1))
27322732 then throw("Exactly one payment required")
27332733 else {
2734- let lk = value(gJ.payments[0])
2735- if ((lk.assetId != cw))
2734+ let ll = value(gK.payments[0])
2735+ if ((ll.assetId != cx))
27362736 then throw("Allowed USDT payment only!")
2737- else if ((lk.amount != ef))
2738- then throw(("Payment attached should be " + toString(ef)))
2737+ else if ((ll.amount != eg))
2738+ then throw(("Payment attached should be " + toString(eg)))
27392739 else {
2740- let fi = iH(gJ.caller, gJ.transactionId)
2741- let me = dy(invoke(df, "burnAcres", [eg], nil))
2742- $Tuple2((((fi._1 :+ ScriptTransfer(db, lk.amount, cw)) ++ ke(toString(gJ.caller), Z)._1) ++ lj), $Tuple2(fi._2._1, me))
2740+ let fj = iI(gK.caller, gK.transactionId)
2741+ let mf = dz(invoke(dg, "burnAcres", [eh], nil))
2742+ $Tuple2((((fj._1 :+ ScriptTransfer(dc, ll.amount, cx)) ++ kf(toString(gK.caller), Z)._1) ++ lk), $Tuple2(fj._2._1, mf))
27432743 }
27442744 }
27452745 }
27462746
27472747
27482748
2749-@Callable(gJ)
2750-func expedition (iP,iQ) = {
2751- let lj = lf(gJ)
2752- if ((size(gJ.payments) != 0))
2749+@Callable(gK)
2750+func expedition (iQ,iR) = {
2751+ let lk = lg(gK)
2752+ if ((size(gK.payments) != 0))
27532753 then throw("No payments required")
27542754 else {
2755- let bL = toString(gJ.caller)
2756- let ho = iO(bL, iP, iQ)
2757- let A = ho._2
2758- let ja = z(A)
2759- let hK = bI(A)
2760- let in = hJ(hK)
2761- let jP = split(in[bj], "_")
2762- let jR = makeString(fc(true, jP, ee), "_")
2763- let gw = F(A)
2764- let ly = valueOrElse(getString(gw), ",;,_,;,_,;,_,;,_,;,_,;,")
2765- let mf = fj(ly, ho._5)
2766- let lA = mf._1
2767- let lB = mf._2
2768- let mg = iH(gJ.caller, gJ.transactionId)
2769- let iN = mg._2._1
2770- let fi = if ((0 >= ho._1))
2771- then $Tuple3([IntegerEntry(ja, 0), StringEntry(gw, lA)], "", 0)
2772- else $Tuple3((mg._1 ++ (if (lB)
2755+ let bL = toString(gK.caller)
2756+ let hp = iP(bL, iQ, iR)
2757+ let A = hp._2
2758+ let jb = z(A)
2759+ let hL = bI(A)
2760+ let io = hK(hL)
2761+ let jQ = split(io[bj], "_")
2762+ let jS = makeString(fd(true, jQ, ef), "_")
2763+ let gx = F(A)
2764+ let lz = valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,")
2765+ let mg = fk(lz, hp._5)
2766+ let lB = mg._1
2767+ let lC = mg._2
2768+ let mh = iI(gK.caller, gK.transactionId)
2769+ let iO = mh._2._1
2770+ let fj = if ((0 >= hp._1))
2771+ then $Tuple3([IntegerEntry(jb, 0), StringEntry(gx, lB)], "", 0)
2772+ else $Tuple3((mh._1 ++ (if (lC)
27732773 then [StringEntry(L(A), "0_0_0_0_0")]
2774- else ((((nil :+ StringEntry(bJ(A), makeString([mg._2._2, "L", iN], "_"))) :+ IntegerEntry(ja, ho._1)) :+ StringEntry(gw, lA)) :+ StringEntry(hK, makeString([in[bh], in[bi], jR, in[bk]], ":"))))), iN, ho._3)
2775- if (ko(A))
2774+ else ((((nil :+ StringEntry(bJ(A), makeString([mh._2._2, "L", iO], "_"))) :+ IntegerEntry(jb, hp._1)) :+ StringEntry(gx, lB)) :+ StringEntry(hL, makeString([io[bh], io[bi], jS, io[bk]], ":"))))), iO, hp._3)
2775+ if (kp(A))
27762776 then throw("expedition_checkTournament")
2777- else if (kp(A))
2777+ else if (kq(A))
27782778 then throw("expedition_checkDelivery")
27792779 else {
2780- let me = dy(invoke(df, "burnAcres", [eg], nil))
2781- $Tuple2(((fi._1 ++ jY(A, Z)._1) ++ lj), $Tuple3(fi._2, fi._3, me))
2780+ let mf = dz(invoke(dg, "burnAcres", [eh], nil))
2781+ $Tuple2(((fj._1 ++ jZ(A, Z)._1) ++ lk), $Tuple3(fj._2, fj._3, mf))
27822782 }
27832783 }
27842784 }
27852785
27862786
27872787
2788-@Callable(gJ)
2788+@Callable(gK)
27892789 func buySLandForAcres () = {
2790- let lj = lf(gJ)
2791- if ((size(gJ.payments) != 1))
2790+ let lk = lg(gK)
2791+ if ((size(gK.payments) != 1))
27922792 then throw("exactly 1 payment must be attached")
27932793 else {
2794- let lk = gJ.payments[0]
2795- let fp = lk.amount
2796- if (if (!(isDefined(lk.assetId)))
2794+ let ll = gK.payments[0]
2795+ let fq = ll.amount
2796+ if (if (!(isDefined(ll.assetId)))
27972797 then true
2798- else (value(lk.assetId) != dn))
2798+ else (value(ll.assetId) != do))
27992799 then throw("ACRES payments only!")
2800- else if ((fp != eg))
2801- then throw(("Payment attached should be " + toString(eg)))
2800+ else if ((fq != eh))
2801+ then throw(("Payment attached should be " + toString(eh)))
28022802 else {
2803- let fi = iH(gJ.caller, gJ.transactionId)
2804- let me = dy(invoke(df, "burnAcres", [eg], [AttachedPayment(dn, fp)]))
2805- $Tuple2(((fi._1 ++ ke(toString(gJ.caller), Z)._1) ++ lj), $Tuple2(fi._2._1, me))
2803+ let fj = iI(gK.caller, gK.transactionId)
2804+ let mf = dz(invoke(dg, "burnAcres", [eh], [AttachedPayment(do, fq)]))
2805+ $Tuple2(((fj._1 ++ kf(toString(gK.caller), Z)._1) ++ lk), $Tuple2(fj._2._1, mf))
28062806 }
28072807 }
28082808 }
28092809
28102810
28112811
2812-@Callable(gJ)
2812+@Callable(gK)
28132813 func upgradeInfra (P) = {
2814- let lj = lf(gJ)
2815- if ((size(gJ.payments) != 0))
2814+ let lk = lg(gK)
2815+ if ((size(gK.payments) != 0))
28162816 then throw("No payments required")
28172817 else {
2818- let fi = jJ(true, gJ.caller, 0, P)
2819- let A = valueOrErrorMessage(getString(bH(toString(gJ.caller))), "You don't have a duck staked")
2820- $Tuple2(((fi._1 ++ lj) ++ jY(A, fraction(aa, fi._3, cD))._1), fi._2)
2821- }
2822- }
2823-
2824-
2825-
2826-@Callable(gJ)
2827-func activateArtifact (mh,mi) = {
2828- let lj = lf(gJ)
2829- if ((size(gJ.payments) != 0))
2818+ let fj = jK(true, gK.caller, 0, P)
2819+ let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked")
2820+ $Tuple2(((fj._1 ++ lk) ++ jZ(A, fraction(aa, fj._3, cE))._1), fj._2)
2821+ }
2822+ }
2823+
2824+
2825+
2826+@Callable(gK)
2827+func activateArtifact (mi,mj) = {
2828+ let lk = lg(gK)
2829+ if ((size(gK.payments) != 0))
28302830 then throw("No payments required")
28312831 else {
2832- let c = toString(gJ.caller)
2833- let fi = {
2834- let cx = mh
2835- if (("PRESALE" == cx))
2836- then km(c, mi)
2837- else if (("ONBOARD" == cx))
2838- then kf(c)
2832+ let c = toString(gK.caller)
2833+ let fj = {
2834+ let cy = mi
2835+ if (("PRESALE" == cy))
2836+ then kn(c, mj)
2837+ else if (("ONBOARD" == cy))
2838+ then kg(c)
28392839 else throw("Unknown artifact")
28402840 }
2841- (fi ++ lj)
2842- }
2843- }
2844-
2845-
2846-
2847-@Callable(gJ)
2848-func mergeLands (kC) = {
2849- let lj = lf(gJ)
2850- if ((size(gJ.payments) != 0))
2841+ (fj ++ lk)
2842+ }
2843+ }
2844+
2845+
2846+
2847+@Callable(gK)
2848+func mergeLands (kD) = {
2849+ let lk = lg(gK)
2850+ if ((size(gK.payments) != 0))
28512851 then throw("No payments required")
28522852 else {
2853- let fi = la(toString(gJ.caller), kC)
2854- $Tuple2(((fi._1 ++ lj) ++ ke(toString(gJ.caller), ab)._1), fi._2)
2855- }
2856- }
2857-
2858-
2859-
2860-@Callable(gJ)
2861-func cargoExchange (mj,P) = {
2862- let lj = lf(gJ)
2863- if ((size(gJ.payments) != 0))
2853+ let fj = lb(toString(gK.caller), kD)
2854+ $Tuple2(((fj._1 ++ lk) ++ kf(toString(gK.caller), ab)._1), fj._2)
2855+ }
2856+ }
2857+
2858+
2859+
2860+@Callable(gK)
2861+func cargoExchange (mk,P) = {
2862+ let lk = lg(gK)
2863+ if ((size(gK.payments) != 0))
28642864 then throw("No payments required")
28652865 else {
2866- let im = split_4C(mj, ":")
2867- let c = toString(gJ.originCaller)
2868- let jr = value(assetInfo(fromBase58String(P)))
2869- let js = br(P)
2870- if (!(isDefined(getInteger(js))))
2871- then throw((jr.name + " is not staked"))
2866+ let in = split_4C(mk, ":")
2867+ let c = toString(gK.originCaller)
2868+ let js = value(assetInfo(fromBase58String(P)))
2869+ let jt = br(P)
2870+ if (!(isDefined(getInteger(jt))))
2871+ then throw((js.name + " is not staked"))
28722872 else {
2873- let ju = valueOrErrorMessage(getString(bo(P)), (("NFT " + jr.name) + " is orphaned"))
2874- if ((ju != c))
2873+ let jv = valueOrErrorMessage(getString(bo(P)), (("NFT " + js.name) + " is orphaned"))
2874+ if ((jv != c))
28752875 then throw((aC + " is not yours"))
28762876 else {
2877- let hY = (dG(split(jr.description, "_")[dh]) / cE)
2878- let hZ = valueOrElse(getInteger(by(P)), 0)
2877+ let hZ = (dH(split(js.description, "_")[di]) / cF)
2878+ let ia = valueOrElse(getInteger(by(P)), 0)
28792879 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
2880- let jp = valueOrElse(getString(bJ(A)), aJ)
2881- let cf = split(value(jp), "_")
2880+ let jq = valueOrElse(getString(bJ(A)), aJ)
2881+ let cf = split(value(jq), "_")
28822882 if ((cf[bm] != "L"))
28832883 then throw((("Duck location type is " + cf[bm]) + ", but should be L"))
28842884 else if ((cf[bn] != P))
28852885 then throw(("Duck should be on the land " + P))
28862886 else {
2887- let hX = bx(P)
2888- let hO = hW(hX, hY, hZ)
2889- let hK = bI(A)
2890- let in = hJ(hK)
2891- let fi = il(im, hO, in)
2892- let if = split(hO[bc], "_")
2893- let jG = (parseIntValue(if[be]) + fi._7)
2894- let jH = (parseIntValue(if[bf]) - fi._7)
2895- ([StringEntry(hK, makeString_2C([in[bh], fi._4, fi._5, fi._6], ":")), StringEntry(hX, makeString_2C([hO[aY], fi._1, fi._2, fi._3, makeString([if[bd], toString(jG), toString(jH), if[bg]], "_")], ":"))] ++ lj)
2887+ let hY = bx(P)
2888+ let hP = hX(hY, hZ, ia)
2889+ let hL = bI(A)
2890+ let io = hK(hL)
2891+ let fj = im(in, hP, io)
2892+ let ig = split(hP[bc], "_")
2893+ let jH = (parseIntValue(ig[be]) + fj._7)
2894+ let jI = (parseIntValue(ig[bf]) - fj._7)
2895+ ([StringEntry(hL, makeString_2C([io[bh], fj._4, fj._5, fj._6], ":")), StringEntry(hY, makeString_2C([hP[aY], fj._1, fj._2, fj._3, makeString([ig[bd], toString(jH), toString(jI), ig[bg]], "_")], ":"))] ++ lk)
28962896 }
28972897 }
28982898 }
29012901
29022902
29032903
2904-@Callable(gJ)
2905-func saveWarehouse (ib,P) = if ((gJ.caller != db))
2904+@Callable(gK)
2905+func saveWarehouse (ic,P) = if ((gK.caller != dc))
29062906 then throw("Access denied")
29072907 else {
2908- let hX = bx(P)
2909- let ic = split_4C(ib, ":")
2910- if ((size(ic) != 5))
2908+ let hY = bx(P)
2909+ let id = split_4C(ic, ":")
2910+ if ((size(id) != 5))
29112911 then throw("warehouse string should contain 4 ':' separators")
29122912 else {
2913- let mk = split(ic[bc], "_")[bd]
2914- let jG = hN(ic)
2915- let ml = hL(ic[aY])
2916- let jH = ((ml - parseIntValue(mk)) - jG)
2917- let mm = makeString_2C([ic[aY], ic[aZ], ic[ba], ic[bb], makeString([mk, toString(jG), toString(jH), toString(ml)], "_")], ":")
2918- $Tuple2([StringEntry(hX, mm)], mm)
2913+ let ml = split(id[bc], "_")[bd]
2914+ let jH = hO(id)
2915+ let mm = hM(id[aY])
2916+ let jI = ((mm - parseIntValue(ml)) - jH)
2917+ let mn = makeString_2C([id[aY], id[aZ], id[ba], id[bb], makeString([ml, toString(jH), toString(jI), toString(mm)], "_")], ":")
2918+ $Tuple2([StringEntry(hY, mn)], mn)
29192919 }
29202920 }
29212921
29222922
29232923
2924-@Callable(gJ)
2925-func fixWarehouseFormat (P) = if ((gJ.caller != da))
2924+@Callable(gK)
2925+func fixWarehouseFormat (P) = if ((gK.caller != db))
29262926 then throw("Access denied")
29272927 else {
2928- let hX = bx(P)
2929- let jr = value(assetInfo(fromBase58String(P)))
2930- let hY = (dG(split(jr.description, "_")[dh]) / cE)
2931- let hZ = valueOrElse(getInteger(by(P)), 0)
2932- let ic = hW(hX, hY, hZ)
2933- let mk = dy(invoke(db, "recalcLockedVolumeREADONLY", [P, ic], nil))
2934- let jG = hN(ic)
2935- let ml = hL(ic[aY])
2936- let jH = ((ml - mk) - jG)
2937- let mm = makeString_2C([ic[aY], ic[aZ], ic[ba], ic[bb], makeString([toString(mk), toString(jG), toString(jH), toString(ml)], "_")], ":")
2938- $Tuple2([StringEntry(hX, mm)], mm)
2928+ let hY = bx(P)
2929+ let js = value(assetInfo(fromBase58String(P)))
2930+ let hZ = (dH(split(js.description, "_")[di]) / cF)
2931+ let ia = valueOrElse(getInteger(by(P)), 0)
2932+ let id = hX(hY, hZ, ia)
2933+ let ml = dz(invoke(dc, "recalcLockedVolumeREADONLY", [P, id], nil))
2934+ let jH = hO(id)
2935+ let mm = hM(id[aY])
2936+ let jI = ((mm - ml) - jH)
2937+ let mn = makeString_2C([id[aY], id[aZ], id[ba], id[bb], makeString([toString(ml), toString(jH), toString(jI), toString(mm)], "_")], ":")
2938+ $Tuple2([StringEntry(hY, mn)], mn)
29392939 }
29402940
29412941
29422942
2943-@Callable(gJ)
2944-func fixContinentProportions (kC) = if ((gJ.caller != da))
2943+@Callable(gK)
2944+func fixContinentProportions (kD) = if ((gK.caller != db))
29452945 then throw("Access denied")
29462946 else {
2947- func mn (eQ,mo) = (eQ :+ valueOrElse(getString(dr(mo)), "0_0_0_0_0_0"))
2948-
2949- let gt = {
2950- let eS = aP
2951- let eT = size(eS)
2952- let eU = nil
2953- func eV (eW,eX) = if ((eX >= eT))
2954- then eW
2955- else mn(eW, eS[eX])
2956-
2957- func eY (eW,eX) = if ((eX >= eT))
2958- then eW
2947+ func mo (eR,mp) = (eR :+ valueOrElse(getString(ds(mp)), "0_0_0_0_0_0"))
2948+
2949+ let gu = {
2950+ let eT = aP
2951+ let eU = size(eT)
2952+ let eV = nil
2953+ func eW (eX,eY) = if ((eY >= eU))
2954+ then eX
2955+ else mo(eX, eT[eY])
2956+
2957+ func eZ (eX,eY) = if ((eY >= eU))
2958+ then eX
29592959 else throw("List size exceeds 5")
29602960
2961- eY(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5)
2962- }
2963- func mp (eQ,P) = {
2964- let jr = value(assetInfo(fromBase58String(P)))
2965- let jv = split(jr.description, "_")
2966- let hY = (dG(jv[dh]) / cE)
2967- let mo = jv[dj]
2968- let gF = gL(jv[di])
2969- let hn = value(indexOf(aP, mo))
2970- let kR = split(eQ[hn], "_")
2971- let mq = makeString(gD(kR, gF, hY, 1), "_")
2972- let cx = mo
2973- if (("Americas" == cx))
2974- then [mq, eQ[1], eQ[2], eQ[3], eQ[4]]
2975- else if (("Europe" == cx))
2976- then [eQ[0], mq, eQ[2], eQ[3], eQ[4]]
2977- else if (("Asia" == cx))
2978- then [eQ[0], eQ[1], mq, eQ[3], eQ[4]]
2979- else if (("Africa" == cx))
2980- then [eQ[0], eQ[1], eQ[2], mq, eQ[4]]
2981- else if (("Oceania" == cx))
2982- then [eQ[0], eQ[1], eQ[2], eQ[3], mq]
2961+ eZ(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5)
2962+ }
2963+ func mq (eR,P) = {
2964+ let js = value(assetInfo(fromBase58String(P)))
2965+ let jw = split(js.description, "_")
2966+ let hZ = (dH(jw[di]) / cF)
2967+ let mp = jw[dk]
2968+ let gG = gM(jw[dj])
2969+ let ho = value(indexOf(aP, mp))
2970+ let kS = split(eR[ho], "_")
2971+ let mr = makeString(gE(kS, gG, hZ, 1), "_")
2972+ let cy = mp
2973+ if (("Americas" == cy))
2974+ then [mr, eR[1], eR[2], eR[3], eR[4]]
2975+ else if (("Europe" == cy))
2976+ then [eR[0], mr, eR[2], eR[3], eR[4]]
2977+ else if (("Asia" == cy))
2978+ then [eR[0], eR[1], mr, eR[3], eR[4]]
2979+ else if (("Africa" == cy))
2980+ then [eR[0], eR[1], eR[2], mr, eR[4]]
2981+ else if (("Oceania" == cy))
2982+ then [eR[0], eR[1], eR[2], eR[3], mr]
29832983 else throw("wrong continent")
29842984 }
29852985
2986- let fb = {
2987- let eS = kC
2988- let eT = size(eS)
2989- let eU = gt
2990- func hE (eW,eX) = if ((eX >= eT))
2991- then eW
2992- else mp(eW, eS[eX])
2993-
2994- func hF (eW,eX) = if ((eX >= eT))
2995- then eW
2986+ let fc = {
2987+ let eT = kD
2988+ let eU = size(eT)
2989+ let eV = gu
2990+ func hF (eX,eY) = if ((eY >= eU))
2991+ then eX
2992+ else mq(eX, eT[eY])
2993+
2994+ func hG (eX,eY) = if ((eY >= eU))
2995+ then eX
29962996 else throw("List size exceeds 100")
29972997
2998- hF(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(eU, 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)
2999- }
3000- $Tuple2([StringEntry(dr("Americas"), fb[0]), StringEntry(dr("Europe"), fb[1]), StringEntry(dr("Asia"), fb[2]), StringEntry(dr("Africa"), fb[3]), StringEntry(dr("Oceania"), fb[4])], 0)
2998+ hG(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(eV, 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)
2999+ }
3000+ $Tuple2([StringEntry(ds("Americas"), fc[0]), StringEntry(ds("Europe"), fc[1]), StringEntry(ds("Asia"), fc[2]), StringEntry(ds("Africa"), fc[3]), StringEntry(ds("Oceania"), fc[4])], 0)
30013001 }
30023002
30033003
30043004
3005-@Callable(gJ)
3006-func fixStakedPieces (cL) = if ((gJ.caller != da))
3005+@Callable(gK)
3006+func fixStakedPieces (cM) = if ((gK.caller != db))
30073007 then throw("Access denied")
30083008 else {
3009- let kV = if ((cL == ""))
3009+ let kW = if ((cM == ""))
30103010 then 0
30113011 else {
3012- let kO = getString(an, dt(cL))
3013- let kK = if (isDefined(kO))
3014- then split_51C(value(kO), "_")
3012+ let kP = getString(an, du(cM))
3013+ let kL = if (isDefined(kP))
3014+ then split_51C(value(kP), "_")
30153015 else nil
3016- func mr (eQ,P) = {
3017- let jr = value(assetInfo(fromBase58String(P)))
3018- let dH = split(jr.description, "_")[dh]
3019- (eQ + dG(dH))
3016+ func ms (eR,P) = {
3017+ let js = value(assetInfo(fromBase58String(P)))
3018+ let dI = split(js.description, "_")[di]
3019+ (eR + dH(dI))
30203020 }
30213021
3022- let eS = kK
3023- let eT = size(eS)
3024- let eU = 0
3025- func eV (eW,eX) = if ((eX >= eT))
3026- then eW
3027- else mr(eW, eS[eX])
3028-
3029- func eY (eW,eX) = if ((eX >= eT))
3030- then eW
3022+ let eT = kL
3023+ let eU = size(eT)
3024+ let eV = 0
3025+ func eW (eX,eY) = if ((eY >= eU))
3026+ then eX
3027+ else ms(eX, eT[eY])
3028+
3029+ func eZ (eX,eY) = if ((eY >= eU))
3030+ then eX
30313031 else throw("List size exceeds 100")
30323032
3033- eY(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eU, 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)
3033+ eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 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)
30343034 }
3035- $Tuple2([IntegerEntry(du(cL), kV)], kV)
3035+ $Tuple2([IntegerEntry(dv(cM), kW)], kW)
30363036 }
30373037
30383038
30393039
3040-@Callable(gJ)
3041-func setCustomName (bp,kM,bt) = {
3042- let lj = lf(gJ)
3043- if ((size(gJ.payments) != 1))
3040+@Callable(gK)
3041+func setCustomName (bp,kN,bt) = {
3042+ let lk = lg(gK)
3043+ if ((size(gK.payments) != 1))
30443044 then throw("Exactly one payment required")
30453045 else {
3046- let lk = value(gJ.payments[0])
3047- if ((lk.assetId != cw))
3046+ let ll = value(gK.payments[0])
3047+ if ((ll.assetId != cx))
30483048 then throw("Allowed USDT payment only!")
3049- else if ((lk.amount != eb))
3050- then throw(("Payment should be " + toString(eb)))
3051- else if (contains(kM, "__"))
3052- then throw(("Name should not contain '__': " + kM))
3053- else if ((size(kM) > ec))
3054- then throw(("Name too long, maxLength=" + toString(ec)))
3049+ else if ((ll.amount != ec))
3050+ then throw(("Payment should be " + toString(ec)))
3051+ else if (contains(kN, "__"))
3052+ then throw(("Name should not contain '__': " + kN))
3053+ else if ((size(kN) > ed))
3054+ then throw(("Name too long, maxLength=" + toString(ed)))
30553055 else {
3056- let c = toString(gJ.originCaller)
3057- let ms = {
3058- let cx = bt
3059- if (("ACCOUNT" == cx))
3056+ let c = toString(gK.originCaller)
3057+ let mt = {
3058+ let cy = bt
3059+ if (("ACCOUNT" == cy))
30603060 then {
3061- let mt = ew(kM)
3062- let mu = getString(mt)
3063- if (isDefined(mu))
3064- then throw(("Name already registered: " + kM))
3061+ let mu = ex(kN)
3062+ let mv = getString(mu)
3063+ if (isDefined(mv))
3064+ then throw(("Name already registered: " + kN))
30653065 else {
3066- let mv = bB(c)
3067- let mw = getString(mv)
3068- let mx = if (isDefined(mw))
3069- then [DeleteEntry(ew(value(mw)))]
3066+ let mw = bB(c)
3067+ let mx = getString(mw)
3068+ let my = if (isDefined(mx))
3069+ then [DeleteEntry(ex(value(mx)))]
30703070 else nil
3071- (((mx :+ StringEntry(mv, kM)) :+ StringEntry(mt, c)) ++ ke(c, Y)._1)
3071+ (((my :+ StringEntry(mw, kN)) :+ StringEntry(mu, c)) ++ kf(c, Y)._1)
30723072 }
30733073 }
3074- else if (("LAND" == cx))
3074+ else if (("LAND" == cy))
30753075 then {
3076- let jr = value(assetInfo(fromBase58String(bp)))
3077- let js = br(bp)
3078- if (!(isDefined(getInteger(js))))
3079- then throw((jr.name + " is not staked"))
3076+ let js = value(assetInfo(fromBase58String(bp)))
3077+ let jt = br(bp)
3078+ if (!(isDefined(getInteger(jt))))
3079+ then throw((js.name + " is not staked"))
30803080 else {
3081- let ju = valueOrErrorMessage(getString(bo(bp)), (("NFT " + jr.name) + " is orphaned"))
3082- if ((ju != c))
3081+ let jv = valueOrErrorMessage(getString(bo(bp)), (("NFT " + js.name) + " is orphaned"))
3082+ if ((jv != c))
30833083 then throw((aC + " is not yours"))
30843084 else {
3085- let mt = ep(kM)
3086- let mu = getString(mt)
3087- if (isDefined(mu))
3088- then throw(("Name already registered: " + kM))
3085+ let mu = eq(kN)
3086+ let mv = getString(mu)
3087+ if (isDefined(mv))
3088+ then throw(("Name already registered: " + kN))
30893089 else {
3090- let my = bq(bp)
3091- let mw = getString(my)
3092- let mx = if (isDefined(mw))
3093- then [DeleteEntry(ep(value(mw)))]
3090+ let mz = bq(bp)
3091+ let mx = getString(mz)
3092+ let my = if (isDefined(mx))
3093+ then [DeleteEntry(eq(value(mx)))]
30943094 else nil
3095- (((mx :+ StringEntry(my, kM)) :+ StringEntry(mt, bp)) ++ ke(c, Y)._1)
3095+ (((my :+ StringEntry(mz, kN)) :+ StringEntry(mu, bp)) ++ kf(c, Y)._1)
30963096 }
30973097 }
30983098 }
30993099 }
3100- else if (("DUCK" == cx))
3100+ else if (("DUCK" == cy))
31013101 then {
3102- let jr = value(assetInfo(fromBase58String(bp)))
3103- let js = br(bp)
3104- if (if (!(isDefined(getInteger(js))))
3102+ let js = value(assetInfo(fromBase58String(bp)))
3103+ let jt = br(bp)
3104+ if (if (!(isDefined(getInteger(jt))))
31053105 then true
31063106 else !(isDefined(getString(bH(c)))))
3107- then throw((jr.name + " is not staked"))
3107+ then throw((js.name + " is not staked"))
31083108 else {
3109- let ju = valueOrErrorMessage(getString(bG(bp)), (("NFT " + jr.name) + " is orphaned"))
3110- if ((ju != c))
3109+ let jv = valueOrErrorMessage(getString(bG(bp)), (("NFT " + js.name) + " is orphaned"))
3110+ if ((jv != c))
31113111 then throw((aD + " is not yours"))
31123112 else {
3113- let mt = ev(kM)
3114- let mu = getString(mt)
3115- if (isDefined(mu))
3116- then throw(("Name already registered: " + kM))
3113+ let mu = ew(kN)
3114+ let mv = getString(mu)
3115+ if (isDefined(mv))
3116+ then throw(("Name already registered: " + kN))
31173117 else {
3118- let my = bA(bp)
3119- let mw = getString(my)
3120- let mx = if (isDefined(mw))
3121- then [DeleteEntry(ev(value(mw)))]
3118+ let mz = bA(bp)
3119+ let mx = getString(mz)
3120+ let my = if (isDefined(mx))
3121+ then [DeleteEntry(ew(value(mx)))]
31223122 else nil
3123- (((mx :+ StringEntry(my, kM)) :+ StringEntry(mt, bp)) ++ jY(bp, Y)._1)
3123+ (((my :+ StringEntry(mz, kN)) :+ StringEntry(mu, bp)) ++ jZ(bp, Y)._1)
31243124 }
31253125 }
31263126 }
31273127 }
31283128 else throw("Unknown entity type")
31293129 }
3130- $Tuple2(((ms :+ ScriptTransfer(db, lk.amount, cw)) ++ lj), 0)
3130+ $Tuple2(((mt :+ ScriptTransfer(dc, ll.amount, cx)) ++ lk), 0)
31313131 }
31323132 }
31333133 }
31343134
31353135
31363136
3137-@Callable(gJ)
3138-func setReferrals (mz,mA) = if ((gJ.callerPublicKey != dY))
3137+@Callable(gK)
3138+func setReferrals (mA,mB) = if ((gK.callerPublicKey != dZ))
31393139 then throw("Permission denied")
31403140 else {
3141- let lj = lf(gJ)
3142- if ((size(gJ.payments) != 0))
3141+ let lk = lg(gK)
3142+ if ((size(gK.payments) != 0))
31433143 then throw("No payments required")
3144- else if (!(isDefined(addressFromString(mz))))
3145- then throw(("Invalid address: " + mz))
3146- else if (!(isDefined(addressFromString(mA))))
3147- then throw(("Invalid address: " + mA))
3144+ else if (!(isDefined(addressFromString(mA))))
3145+ then throw(("Invalid address: " + mA))
3146+ else if (!(isDefined(addressFromString(mB))))
3147+ then throw(("Invalid address: " + mB))
31483148 else {
3149- let mB = ex()
3150- let mC = getString(mB)
3151- let mD = if (isDefined(mC))
3152- then split_4C(value(mC), "_")
3149+ let mC = ey()
3150+ let mD = getString(mC)
3151+ let mE = if (isDefined(mD))
3152+ then split_4C(value(mD), "_")
31533153 else nil
3154- if (containsElement(mD, mA))
3155- then throw((mA + " is not newbie (already has referrals)"))
3154+ if (containsElement(mE, mB))
3155+ then throw((mB + " is not newbie (already has referrals)"))
31563156 else {
3157- let kg = bC(mA)
3158- let kh = getString(kg)
3159- if (if (isDefined(kh))
3160- then isDefined(addressFromString(value(kh)))
3157+ let kh = bC(mB)
3158+ let ki = getString(kh)
3159+ if (if (isDefined(ki))
3160+ then isDefined(addressFromString(value(ki)))
31613161 else false)
3162- then throw(((mA + " already has refBy: ") + value(kh)))
3162+ then throw(((mB + " already has refBy: ") + value(ki)))
31633163 else {
3164- let mE = bF(mz)
3165- let mF = getString(mE)
3166- let mG = if (isDefined(mF))
3167- then split_4C(value(mF), "_")
3164+ let mF = bF(mA)
3165+ let mG = getString(mF)
3166+ let mH = if (isDefined(mG))
3167+ then split_4C(value(mG), "_")
31683168 else nil
3169- if (containsElement(mG, mA))
3170- then throw((((mz + " already contains ") + mA) + " within referrals"))
3169+ if (containsElement(mH, mB))
3170+ then throw((((mA + " already contains ") + mB) + " within referrals"))
31713171 else {
3172- let mH = makeString_2C((mG :+ mA), "_")
3173- let mI = if (containsElement(mD, mz))
3174- then value(mC)
3175- else makeString_2C((mD :+ mz), "_")
3176- $Tuple2(([StringEntry(kg, mz), StringEntry(mE, mH), StringEntry(mB, mI)] ++ lj), 0)
3172+ let mI = makeString_2C((mH :+ mB), "_")
3173+ let mJ = if (containsElement(mE, mA))
3174+ then value(mD)
3175+ else makeString_2C((mE :+ mA), "_")
3176+ $Tuple2(([StringEntry(kh, mA), StringEntry(mF, mI), StringEntry(mC, mJ)] ++ lk), 0)
31773177 }
31783178 }
31793179 }
31823182
31833183
31843184
3185-@Callable(gJ)
3186-func distributePoints (mJ,mK,mL,mM,mN) = {
3187- let lj = lf(gJ)
3188- if ((size(gJ.payments) != 0))
3185+@Callable(gK)
3186+func distributePoints (mK,mL,mM,mN,mO) = {
3187+ let lk = lg(gK)
3188+ if ((size(gK.payments) != 0))
31893189 then throw("No payments required")
31903190 else {
3191- let c = toString(gJ.originCaller)
3192- let mO = dA(invoke(dd, "checkWlgXpREADONLY", [c], nil))
3193- let mP = dy(mO[1])
3194- let mQ = if ((0 >= mP))
3191+ let c = toString(gK.originCaller)
3192+ let mP = dB(invoke(de, "checkWlgXpREADONLY", [c], nil))
3193+ let mQ = dz(mP[1])
3194+ let mR = if ((0 >= mQ))
31953195 then $Tuple2(0, nil)
31963196 else {
3197- let jZ = dy(invoke(dd, "takeWlgXp", [c], nil))
3198- if ((jZ == jZ))
3199- then $Tuple2(mP, [IntegerEntry(H(c), dy(mO[0])), IntegerEntry(G(c), dy(mO[2]))])
3197+ let ka = dz(invoke(de, "takeWlgXp", [c], nil))
3198+ if ((ka == ka))
3199+ then $Tuple2(mQ, [IntegerEntry(H(c), dz(mP[0])), IntegerEntry(G(c), dz(mP[2]))])
32003200 else throw("Strict value is not equal to itself.")
32013201 }
3202- let mR = mQ._1
3203- let mS = mQ._2
3202+ let mS = mR._1
3203+ let mT = mR._2
32043204 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
3205- let mT = I(c)
3206- let mU = (valueOrElse(getInteger(mT), 0) + mR)
3207- let mV = E(A)
3208- let mW = valueOrElse(getInteger(mV), 0)
3209- let mX = (mU + mW)
3210- let mY = ((((mJ + mK) + mL) + mM) + mN)
3211- if ((mY > mX))
3212- then throw((("There are only " + toString(mX)) + " free points to distribute"))
3205+ let mU = I(c)
3206+ let mV = (valueOrElse(getInteger(mU), 0) + mS)
3207+ let mW = E(A)
3208+ let mX = valueOrElse(getInteger(mW), 0)
3209+ let mY = (mV + mX)
3210+ let mZ = ((((mK + mL) + mM) + mN) + mO)
3211+ if ((mZ > mY))
3212+ then throw((("There are only " + toString(mY)) + " free points to distribute"))
32133213 else {
3214- let mZ = B(A)
3215- let aq = split(valueOrElse(getString(mZ), "0_0_0_0_0"), "_")
3216- let na = (mU - mY)
3217- $Tuple2((([IntegerEntry(mT, if ((0 > na))
3214+ let na = B(A)
3215+ let aq = split(valueOrElse(getString(na), "0_0_0_0_0"), "_")
3216+ let nb = (mV - mZ)
3217+ $Tuple2((([IntegerEntry(mU, if ((0 > nb))
32183218 then 0
3219- else na), IntegerEntry(mV, if ((0 > na))
3220- then (mW + na)
3221- else mW), StringEntry(mZ, makeString([toString((parseIntValue(aq[k]) + mJ)), toString((parseIntValue(aq[l]) + mK)), toString((parseIntValue(aq[m]) + mL)), toString((parseIntValue(aq[n]) + mM)), toString((parseIntValue(aq[o]) + mN))], "_"))] ++ lj) ++ mS), 0)
3219+ else nb), IntegerEntry(mW, if ((0 > nb))
3220+ then (mX + nb)
3221+ else mX), StringEntry(na, makeString([toString((parseIntValue(aq[k]) + mK)), toString((parseIntValue(aq[l]) + mL)), toString((parseIntValue(aq[m]) + mM)), toString((parseIntValue(aq[n]) + mN)), toString((parseIntValue(aq[o]) + mO))], "_"))] ++ lk) ++ mT), 0)
32223222 }
32233223 }
32243224 }
32253225
32263226
32273227
3228-@Callable(gJ)
3229-func splitByGlobalWeightsREADONLY (eH) = $Tuple2(nil, eZ(eH))
3230-
3231-
3232-
3233-@Callable(gJ)
3234-func splitByGlobalAndLocalWeightsREADONLY (nb,nc,gM) = {
3235- let gF = gL(gM)
3236- $Tuple2(nil, $Tuple2(eZ(nb), eK(nc, gF)))
3237- }
3238-
3239-
3240-
3241-@Callable(gJ)
3242-func getBackpackREADONLY (A) = $Tuple2(nil, makeString(hJ(bI(A)), ":"))
3243-
3244-
3245-
3246-@Callable(gJ)
3228+@Callable(gK)
3229+func splitByGlobalWeightsREADONLY (eI) = $Tuple2(nil, fa(eI))
3230+
3231+
3232+
3233+@Callable(gK)
3234+func splitByGlobalAndLocalWeightsREADONLY (nc,nd,gN) = {
3235+ let gG = gM(gN)
3236+ $Tuple2(nil, $Tuple2(fa(nc), eL(nd, gG)))
3237+ }
3238+
3239+
3240+
3241+@Callable(gK)
3242+func getBackpackREADONLY (A) = $Tuple2(nil, makeString(hK(bI(A)), ":"))
3243+
3244+
3245+
3246+@Callable(gK)
32473247 func getWarehouseREADONLY (P) = {
3248- let jr = value(assetInfo(fromBase58String(P)))
3249- let hY = (dG(split(jr.description, "_")[dh]) / cE)
3250- let hZ = valueOrElse(getInteger(by(P)), 0)
3251- $Tuple2(nil, makeString_2C(hW(bx(P), hY, hZ), ":"))
3252- }
3253-
3254-
3255-
3256-@Callable(gJ)
3257-func saveLastTx () = if (!(containsElement([dd, db, de, df], gJ.caller)))
3248+ let js = value(assetInfo(fromBase58String(P)))
3249+ let hZ = (dH(split(js.description, "_")[di]) / cF)
3250+ let ia = valueOrElse(getInteger(by(P)), 0)
3251+ $Tuple2(nil, makeString_2C(hX(bx(P), hZ, ia), ":"))
3252+ }
3253+
3254+
3255+
3256+@Callable(gK)
3257+func saveLastTx () = if (!(containsElement([de, dc, df, dg], gK.caller)))
32583258 then throw("Access denied")
3259- else $Tuple2(lf(gJ), 42)
3260-
3261-
3262-
3263-@Callable(gJ)
3264-func updateDuckStats (A,jZ) = if ((gJ.caller != db))
3259+ else $Tuple2(lg(gK), 42)
3260+
3261+
3262+
3263+@Callable(gK)
3264+func updateDuckStats (A,ka) = if ((gK.caller != dc))
32653265 then throw("Access denied")
3266- else jY(A, jZ)
3267-
3268-
3269-
3270-@Callable(gJ)
3271-func updateAccStats (c,jZ) = if (!(containsElement([dd, db, df], gJ.caller)))
3266+ else jZ(A, ka)
3267+
3268+
3269+
3270+@Callable(gK)
3271+func updateAccStats (c,ka) = if (!(containsElement([de, dc, dg], gK.caller)))
32723272 then throw("Access denied")
3273- else ke(c, jZ)
3274-
3275-
3276-
3277-@Callable(gJ)
3278-func equipDuck (nd) = {
3279- let lj = lf(gJ)
3280- if ((size(gJ.payments) != 0))
3273+ else kf(c, ka)
3274+
3275+
3276+
3277+@Callable(gK)
3278+func equipDuck (ne) = {
3279+ let lk = lg(gK)
3280+ if ((size(gK.payments) != 0))
32813281 then throw("No payments required")
32823282 else {
3283- let c = toString(gJ.originCaller)
3283+ let c = toString(gK.originCaller)
32843284 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
3285- if (ko(A))
3285+ if (kp(A))
32863286 then throw("equipDuck_checkTournament")
3287- else if (kp(A))
3287+ else if (kq(A))
32883288 then throw("equipDuck_checkDelivery")
32893289 else {
3290- let gw = F(A)
3291- let ne = split(valueOrElse(getString(gw), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3292- let hK = bI(A)
3293- let in = hJ(hK)
3294- let lA = split(nd, "_")
3295- if ((size(lA) != q))
3290+ let gx = F(A)
3291+ let nf = split(valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3292+ let hL = bI(A)
3293+ let io = hK(hL)
3294+ let lB = split(ne, "_")
3295+ if ((size(lB) != q))
32963296 then throw("Wrong equipment string")
32973297 else {
3298- let gy = gl(ne, fw(in[bk]), true, nil)
3299- let gz = split(lA[p], ";")[1]
3300- let ao = if ((gz == ""))
3298+ let gz = gm(nf, fx(io[bk]), true, nil)
3299+ let gA = split(lB[p], ";")[1]
3300+ let ao = if ((gA == ""))
33013301 then 0
33023302 else {
3303- let gA = split(gz, ",")[0]
3304- if ((gA == ""))
3303+ let gB = split(gA, ",")[0]
3304+ if ((gB == ""))
33053305 then 0
33063306 else {
3307- let fL = split(gA, ":")
3308- let cZ = fL[0]
3309- let gB = fL[1]
3310- if (if (if (if (if ((cZ == "06"))
3307+ let fM = split(gB, ":")
3308+ let da = fM[0]
3309+ let gC = fM[1]
3310+ if (if (if (if (if ((da == "06"))
33113311 then true
3312- else (cZ == "07"))
3312+ else (da == "07"))
33133313 then true
3314- else (cZ == "08"))
3315- then (gB != "")
3314+ else (da == "08"))
3315+ then (gC != "")
33163316 else false)
3317- then (parseIntValue(gB) > 0)
3317+ then (parseIntValue(gC) > 0)
33183318 else false)
3319- then parseIntValue(split(aS[parseIntValue(cZ)], "_")[aU])
3319+ then parseIntValue(split(aS[parseIntValue(da)], "_")[aU])
33203320 else 0
33213321 }
33223322 }
3323- let gg = am(this, A, ao, true)
3324- let gC = gl(lA, gy, false, gg)
3325- let nf = fB(gC)
3326- $Tuple2(([StringEntry(gw, nd), StringEntry(hK, makeString_2C([in[bh], in[bi], in[bj], nf], ":")), StringEntry(L(A), makeString([toString(gg[7]), toString(gg[8]), toString(gg[9]), toString(gg[10]), toString(gg[11])], "_"))] ++ lj), 0)
3323+ let gh = am(this, A, ao, true)
3324+ let gD = gm(lB, gz, false, gh)
3325+ let ng = fC(gD)
3326+ $Tuple2(([StringEntry(gx, ne), StringEntry(hL, makeString_2C([io[bh], io[bi], io[bj], ng], ":")), StringEntry(L(A), makeString([toString(gh[7]), toString(gh[8]), toString(gh[9]), toString(gh[10]), toString(gh[11])], "_"))] ++ lk), 0)
33273327 }
33283328 }
33293329 }
33313331
33323332
33333333
3334-@Callable(gJ)
3335-func fortificateLand (P,ng) = {
3336- let lj = lf(gJ)
3337- if ((size(gJ.payments) != 0))
3334+@Callable(gK)
3335+func fortificateLand (P,nh) = {
3336+ let lk = lg(gK)
3337+ if ((size(gK.payments) != 0))
33383338 then throw("No payments required")
33393339 else {
3340- let c = toString(gJ.originCaller)
3340+ let c = toString(gK.originCaller)
33413341 let A = valueOrElse(getString(bH(c)), "")
3342- let fG = am(this, A, 0, false)
3343- let nh = bz(P)
3344- let ni = split(valueOrElse(getString(nh), ":0_15:0_18:0"), "_")
3345- let jr = value(assetInfo(fromBase58String(P)))
3346- let hY = (dG(split(jr.description, "_")[dh]) / cE)
3347- let hZ = valueOrElse(getInteger(by(P)), 0)
3348- let hX = bx(P)
3349- let ic = hW(hX, hY, hZ)
3350- let nj = split(ic[bc], "_")
3351- let nk = parseIntValue(nj[be])
3352- let nl = parseIntValue(nj[bf])
3353- let nm = split(ng, "_")
3354- let nn = gs(ni, fw(ic[bb]), nk, nl, true, nil)
3355- let gy = nn._1
3356- let no = nn._2
3357- let np = nn._3
3358- let nq = gs(nm, gy, no, np, false, fG)
3359- let gC = nq._1
3360- let nr = nq._2
3361- let ns = nq._3
3362- let nf = fB(gC)
3363- let jX = makeString([nj[bd], toString(nr), toString(ns), nj[bg]], "_")
3364- $Tuple2(([StringEntry(nh, ng), StringEntry(hX, makeString_2C([ic[aY], ic[aZ], ic[ba], nf, jX], ":"))] ++ lj), 0)
3365- }
3366- }
3367-
3368-
3369-
3370-@Callable(gJ)
3371-func initDuckTourAttempt (A) = if ((gJ.caller != de))
3342+ let fH = am(this, A, 0, false)
3343+ let ni = bz(P)
3344+ let nj = split(valueOrElse(getString(ni), ":0_15:0_18:0"), "_")
3345+ let js = value(assetInfo(fromBase58String(P)))
3346+ let hZ = (dH(split(js.description, "_")[di]) / cF)
3347+ let ia = valueOrElse(getInteger(by(P)), 0)
3348+ let hY = bx(P)
3349+ let id = hX(hY, hZ, ia)
3350+ let nk = split(id[bc], "_")
3351+ let nl = parseIntValue(nk[be])
3352+ let nm = parseIntValue(nk[bf])
3353+ let nn = split(nh, "_")
3354+ let no = gt(nj, fx(id[bb]), nl, nm, true, nil)
3355+ let gz = no._1
3356+ let np = no._2
3357+ let nq = no._3
3358+ let nr = gt(nn, gz, np, nq, false, fH)
3359+ let gD = nr._1
3360+ let ns = nr._2
3361+ let nt = nr._3
3362+ let ng = fC(gD)
3363+ let jY = makeString([nk[bd], toString(ns), toString(nt), nk[bg]], "_")
3364+ $Tuple2(([StringEntry(ni, nh), StringEntry(hY, makeString_2C([id[aY], id[aZ], id[ba], ng, jY], ":"))] ++ lk), 0)
3365+ }
3366+ }
3367+
3368+
3369+
3370+@Callable(gK)
3371+func initDuckTourAttempt (A) = if ((gK.caller != df))
33723372 then throw("Access denied")
33733373 else {
3374- let ja = z(A)
3375- let jb = ag(valueOrElse(getInteger(D(A)), 0))
3376- let ks = valueOrElse(getInteger(ja), jb)
3377- let nt = bJ(A)
3378- let jp = valueOrElse(getString(nt), aJ)
3379- let ce = valueOrElse(getInteger(de, bP), 0)
3380- let nu = (toString(ce) + "_T_0")
3381- $Tuple2([IntegerEntry(J(A), ks), IntegerEntry(ja, jb), StringEntry(K(A), jp), StringEntry(nt, nu)], nu)
3374+ let jb = z(A)
3375+ let jc = ag(valueOrElse(getInteger(D(A)), 0))
3376+ let kt = valueOrElse(getInteger(jb), jc)
3377+ let nu = bJ(A)
3378+ let jq = valueOrElse(getString(nu), aJ)
3379+ let ce = valueOrElse(getInteger(df, bP), 0)
3380+ let nv = (toString(ce) + "_T_0")
3381+ $Tuple2([IntegerEntry(J(A), kt), IntegerEntry(jb, jc), StringEntry(K(A), jq), StringEntry(nu, nv)], nv)
33823382 }
33833383
33843384
33853385
3386-@Callable(gJ)
3386+@Callable(gK)
33873387 func breakAttempt () = {
3388- let lj = lf(gJ)
3389- let A = valueOrErrorMessage(getString(bH(toString(gJ.caller))), "You don't have a duck staked")
3390- let nt = bJ(A)
3391- let jp = valueOrElse(getString(nt), aJ)
3392- if ((split(jp, "_")[bm] != "T"))
3388+ let lk = lg(gK)
3389+ let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked")
3390+ let nu = bJ(A)
3391+ let jq = valueOrElse(getString(nu), aJ)
3392+ if ((split(jq, "_")[bm] != "T"))
33933393 then throw("Your duck is not in the tournament")
33943394 else {
3395- let kx = getIntegerValue(J(A))
3396- let ky = getStringValue(K(A))
3397- $Tuple2(((lj :+ IntegerEntry(z(A), kx)) :+ StringEntry(nt, ky)), jp)
3398- }
3399- }
3400-
3401-
3402-
3403-@Callable(gJ)
3404-func exitTournamentInternal (A) = if ((gJ.caller != this))
3395+ let ky = getIntegerValue(J(A))
3396+ let kz = getStringValue(K(A))
3397+ $Tuple2(((lk :+ IntegerEntry(z(A), ky)) :+ StringEntry(nu, kz)), jq)
3398+ }
3399+ }
3400+
3401+
3402+
3403+@Callable(gK)
3404+func exitTournamentInternal (A) = if ((gK.caller != this))
34053405 then throw("Access denied")
34063406 else {
3407- let kx = getIntegerValue(J(A))
3408- let ky = getStringValue(K(A))
3409- $Tuple2([IntegerEntry(z(A), kx), StringEntry(bJ(A), ky)], false)
3407+ let ky = getIntegerValue(J(A))
3408+ let kz = getStringValue(K(A))
3409+ $Tuple2([IntegerEntry(z(A), ky), StringEntry(bJ(A), kz)], false)
34103410 }
34113411
34123412
34133413
3414-@Callable(gJ)
3415-func exitDeliveryInternal (A) = if ((gJ.caller != this))
3414+@Callable(gK)
3415+func exitDeliveryInternal (A) = if ((gK.caller != this))
34163416 then throw("Access denied")
34173417 else {
3418- let mg = kq(A)
3419- $Tuple2((mg._1 ++ mg._2), false)
3418+ let mh = kr(A)
3419+ $Tuple2((mh._1 ++ mh._2), false)
34203420 }
34213421
34223422
34233423
3424-@Callable(gJ)
3425-func autoExitDelivery (A) = if ((gJ.caller != this))
3424+@Callable(gK)
3425+func autoExitDelivery (A) = if ((gK.caller != this))
34263426 then throw("Access denied")
34273427 else {
3428- let mg = kq(A)
3429- $Tuple2(mg._1, $Tuple2(mg._3, mg._4))
3428+ let mh = kr(A)
3429+ $Tuple2(mh._1, $Tuple2(mh._3, mh._4))
34303430 }
34313431
34323432
34333433
3434-@Callable(gJ)
3435-func prepareRobbery (iP,iQ) = {
3436- let lj = lf(gJ)
3437- if (!(sigVerify_8Kb(iP, iQ, dY)))
3434+@Callable(gK)
3435+func prepareRobbery (iQ,iR) = {
3436+ let lk = lg(gK)
3437+ if (!(sigVerify_8Kb(iQ, iR, dZ)))
34383438 then throw("signature does not match")
3439- else if ((size(gJ.payments) != 1))
3439+ else if ((size(gK.payments) != 1))
34403440 then throw("exactly 1 payment must be attached")
34413441 else {
3442- let lk = gJ.payments[0]
3443- let nv = lk.amount
3444- if (if (!(isDefined(lk.assetId)))
3442+ let ll = gK.payments[0]
3443+ let nw = ll.amount
3444+ if (if (!(isDefined(ll.assetId)))
34453445 then true
3446- else (value(lk.assetId) != dl))
3446+ else (value(ll.assetId) != dm))
34473447 then throw("WLGOLD payments only!")
34483448 else {
3449- let fo = split(toUtf8String(iP), "|")
3450- if ((size(fo) != 2))
3449+ let fp = split(toUtf8String(iQ), "|")
3450+ if ((size(fp) != 2))
34513451 then throw("Wrong message format")
34523452 else {
3453- let A = fo[0]
3454- if (ko(A))
3453+ let A = fp[0]
3454+ if (kp(A))
34553455 then throw("prepareRobbery_checkTournament")
3456- else if (kp(A))
3456+ else if (kq(A))
34573457 then throw("prepareRobbery_checkDelivery")
34583458 else {
34593459 let ay = au(this, A)._1
3460- if ((ay > nv))
3461- then throw(((("Payment " + toString(nv)) + " < required ") + toString(ay)))
3460+ if ((ay > nw))
3461+ then throw(((("Payment " + toString(nw)) + " < required ") + toString(ay)))
34623462 else {
3463- let nw = split(fo[1], "_")
3463+ let nx = split(fp[1], "_")
34643464 let ax = lastBlock.timestamp
34653465 let az = valueOrElse(getInteger(R(A)), 0)
34663466 let aA = valueOrElse(getString(S(A)), "")
34703470 else false)
34713471 then throw(("You already started robbing, wait till " + toString(aB)))
34723472 else {
3473- func nx (eQ,P) = {
3474- let ny = valueOrElse(getInteger(O(P)), 0)
3475- let nz = valueOrElse(getInteger(Q(P)), 0)
3476- if ((ny > size(u)))
3473+ func ny (eR,P) = {
3474+ let nz = valueOrElse(getInteger(O(P)), 0)
3475+ let nA = valueOrElse(getInteger(Q(P)), 0)
3476+ if ((nz > size(u)))
34773477 then throw("Invalid state")
3478- else if ((ax > nz))
3478+ else if ((ax > nA))
34793479 then {
3480- let nA = valueOrElse(getInteger(br(P)), 0)
3481- if ((0 >= nA))
3482- then eQ
3480+ let nB = valueOrElse(getInteger(br(P)), 0)
3481+ if ((0 >= nB))
3482+ then eR
34833483 else {
3484- let gq = value(assetInfo(fromBase58String(P)))
3485- let jv = split(gq.description, "_")
3486- let jh = dG(jv[dh])
3487- let nB = jg(P, jh)
3488- let gP = (ax - nA)
3489- let jy = fraction(gP, (nB * jh), a)
3490- if ((v > jy))
3491- then eQ
3492- else (eQ :+ P)
3484+ let gr = value(assetInfo(fromBase58String(P)))
3485+ let jw = split(gr.description, "_")
3486+ let ji = dH(jw[di])
3487+ let nC = jh(P, ji)
3488+ let gQ = (ax - nB)
3489+ let jz = fraction(gQ, (nC * ji), a)
3490+ if ((v > jz))
3491+ then eR
3492+ else (eR :+ P)
34933493 }
34943494 }
3495- else eQ
3495+ else eR
34963496 }
34973497
3498- let nC = {
3499- let eS = nw
3500- let eT = size(eS)
3501- let eU = nil
3502- func eV (eW,eX) = if ((eX >= eT))
3503- then eW
3504- else nx(eW, eS[eX])
3505-
3506- func eY (eW,eX) = if ((eX >= eT))
3507- then eW
3498+ let nD = {
3499+ let eT = nx
3500+ let eU = size(eT)
3501+ let eV = nil
3502+ func eW (eX,eY) = if ((eY >= eU))
3503+ then eX
3504+ else ny(eX, eT[eY])
3505+
3506+ func eZ (eX,eY) = if ((eY >= eU))
3507+ then eX
35083508 else throw("List size exceeds 10")
35093509
3510- eY(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
3510+ eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
35113511 }
3512- if ((size(nC) == 0))
3512+ if ((size(nD) == 0))
35133513 then throw("No candidates for robbery")
35143514 else {
3515- let nD = dQ(size(nC), height, (iQ + gJ.transactionId))
3516- let P = nC[nD]
3517- $Tuple2(([IntegerEntry(O(P), w), IntegerEntry(Q(P), (ax + u[w])), IntegerEntry(R(A), y), StringEntry(S(A), P)] ++ lj), P)
3515+ let nE = dR(size(nD), height, (iR + gK.transactionId))
3516+ let P = nD[nE]
3517+ $Tuple2(([IntegerEntry(O(P), w), IntegerEntry(Q(P), (ax + u[w])), IntegerEntry(R(A), y), StringEntry(S(A), P)] ++ lk), P)
35183518 }
35193519 }
35203520 }
35263526
35273527
35283528
3529-@Callable(gJ)
3530-func robLand (iP,iQ) = {
3531- let lj = lf(gJ)
3532- if (!(sigVerify_8Kb(iP, iQ, dY)))
3529+@Callable(gK)
3530+func robLand (iQ,iR) = {
3531+ let lk = lg(gK)
3532+ if (!(sigVerify_8Kb(iQ, iR, dZ)))
35333533 then throw("signature does not match")
35343534 else {
3535- let bL = toString(gJ.caller)
3535+ let bL = toString(gK.caller)
35363536 let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked")
35373537 let ax = lastBlock.timestamp
3538- $Tuple2((lj :+ IntegerEntry(M(A), ax)), 0)
3539- }
3540- }
3541-
3542-
3543-
3544-@Callable(gJ)
3545-func acceptDelivery () = if (!(cu))
3538+ $Tuple2((lk :+ IntegerEntry(M(A), ax)), 0)
3539+ }
3540+ }
3541+
3542+
3543+
3544+@Callable(gK)
3545+func acceptDelivery () = if (!(cv))
35463546 then throw("Delivery feature is turned off!")
35473547 else {
3548- let lj = lf(gJ)
3549- let bL = toString(gJ.caller)
3548+ let lk = lg(gK)
3549+ let bL = toString(gK.caller)
35503550 let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked")
3551- let nE = valueOrElse(getInteger(db, bN), 0)
3552- let kv = valueOrElse(getInteger(db, bO), 0)
3553- if ((aM > (nE - kv)))
3554- then throw(((("Delivery is not available, fund=" + dL(nE, 6)) + ", locked=") + dL(kv, 6)))
3551+ let nF = valueOrElse(getInteger(dc, bN), 0)
3552+ let kw = valueOrElse(getInteger(dc, bO), 0)
3553+ if ((aM > (nF - kw)))
3554+ then throw(((("Delivery is not available, fund=" + dM(nF, 6)) + ", locked=") + dM(kw, 6)))
35553555 else {
35563556 let ax = lastBlock.timestamp
3557- let nF = valueOrElse(getInteger(T(A)), 0)
3558- if ((nF > ax))
3559- then throw(("Delivery is forbidden for your duck until " + toString(nF)))
3560- else if (ko(A))
3557+ let nG = valueOrElse(getInteger(T(A)), 0)
3558+ if ((nG > ax))
3559+ then throw(("Delivery is forbidden for your duck until " + toString(nG)))
3560+ else if (kp(A))
35613561 then throw("acceptDelivery_checkTournament")
3562- else if (kp(A))
3562+ else if (kq(A))
35633563 then throw("acceptDelivery_checkDelivery")
35643564 else {
3565- let nG = dy(invoke(db, "updateDeliveryLocked", [(kv + aM)], nil))
3566- let ja = z(A)
3567- let jb = ag(valueOrElse(getInteger(D(A)), 0))
3568- let ks = valueOrElse(getInteger(ja), jb)
3569- let nt = bJ(A)
3570- let jp = valueOrElse(getString(nt), aJ)
3571- let nH = (toString(ax) + "_D_0")
3572- $Tuple2(([IntegerEntry(J(A), ks), IntegerEntry(ja, jb), StringEntry(K(A), jp), StringEntry(nt, nH)] ++ lj), $Tuple2(nH, nG))
3565+ let nH = dz(invoke(dc, "updateDeliveryLocked", [(kw + aM)], nil))
3566+ let jb = z(A)
3567+ let jc = ag(valueOrElse(getInteger(D(A)), 0))
3568+ let kt = valueOrElse(getInteger(jb), jc)
3569+ let nu = bJ(A)
3570+ let jq = valueOrElse(getString(nu), aJ)
3571+ let nI = (toString(ax) + "_D_0")
3572+ $Tuple2(([IntegerEntry(J(A), kt), IntegerEntry(jb, jc), StringEntry(K(A), jq), StringEntry(nu, nI)] ++ lk), $Tuple2(nI, nH))
35733573 }
35743574 }
35753575 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 86400000
55
66 func b (c) = ("lastArbTimeUser_" + c)
77
88
99 let d = 100000000
1010
1111 let e = 3200
1212
1313 let f = 4000
1414
1515 let g = 3
1616
1717 let h = 100000000
1818
1919 let i = 400
2020
2121 let j = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
2222
2323 let k = 0
2424
2525 let l = 1
2626
2727 let m = 2
2828
2929 let n = 3
3030
3131 let o = 4
3232
3333 let p = 0
3434
3535 let q = 6
3636
3737 let r = 2
3838
3939 let s = 2
4040
4141 let t = 30
4242
4343 let u = [0, 600000, 900000, 43200000, 21600000]
4444
4545 let v = 20000000
4646
4747 let w = 1
4848
4949 let x = 0
5050
5151 let y = 1
5252
5353 func z (A) = ("duckHealth_" + A)
5454
5555
5656 func B (A) = ("duckChars_" + A)
5757
5858
5959 func C (A) = ("duckXP_" + A)
6060
6161
6262 func D (A) = ("duckLevel_" + A)
6363
6464
6565 func E (A) = ("duckFreePoints_" + A)
6666
6767
6868 func F (A) = ("duckEquipment_" + A)
6969
7070
7171 func G (c) = ("userXP_" + c)
7272
7373
7474 func H (c) = ("userLevel_" + c)
7575
7676
7777 func I (c) = ("userFreePoints_" + c)
7878
7979
8080 func J (A) = ("savedHealth_" + A)
8181
8282
8383 func K (A) = ("savedLocation_" + A)
8484
8585
8686 func L (A) = ("duckBuffs_" + A)
8787
8888
8989 func M (A) = ("lastRobberyTime_" + A)
9090
9191
9292 func N (A) = ("lastRobberyCost_" + A)
9393
9494
9595 func O (P) = ("landRobberyState_" + P)
9696
9797
9898 func Q (P) = ("landCooldownETA_" + P)
9999
100100
101101 func R (A) = ("duckRobberyState_" + A)
102102
103103
104104 func S (A) = ("lockedLandByDuck_" + A)
105105
106106
107107 func T (A) = ("deliveryDelayByDuck_" + A)
108108
109109
110110 let U = 10000
111111
112112 let V = 10000
113113
114114 let W = 2000
115115
116116 let X = 100000
117117
118118 let Y = 1000000
119119
120120 let Z = 5000000
121121
122122 let aa = 10000
123123
124124 let ab = 1000000
125125
126126 let ac = 1000000
127127
128128 let ad = 10000
129129
130130 func ae (af) = fraction(e, pow(af, 4, f, 4, 4, DOWN), d)
131131
132132
133133 func ag (ah) = (100 + ah)
134134
135135
136136 func ai (aj,ak) = {
137137 let al = ae(ak)
138138 [al, (g * (al - aj))]
139139 }
140140
141141
142142 func am (an,A,ao,ap) = {
143143 let aq = split(valueOrElse(getString(an, B(A)), "0_0_0_0_0"), "_")
144144 let ar = valueOrElse(getInteger(an, D(A)), 0)
145145 let as = valueOrElse(getInteger(an, z(A)), ag(ar))
146146 let at = split(valueOrElse(getString(an, L(A)), "0_0_0_0_0"), "_")
147147 ([parseIntValue(aq[k]), parseIntValue(aq[l]), parseIntValue(aq[m]), parseIntValue(aq[n]), parseIntValue(aq[o]), ar, as] ++ (if (ap)
148148 then [ao, ao, ao, ao, ao]
149149 else [parseIntValue(at[k]), parseIntValue(at[l]), parseIntValue(at[m]), parseIntValue(at[n]), parseIntValue(at[o])]))
150150 }
151151
152152
153153 func au (an,A) = {
154154 let av = valueOrElse(getInteger(an, N(A)), 0)
155155 let aw = valueOrElse(getInteger(an, M(A)), 0)
156156 let ax = lastBlock.timestamp
157157 let ay = max([h, (av - (i * (ax - aw)))])
158158 let az = valueOrElse(getInteger(an, R(A)), 0)
159159 let aA = valueOrElse(getString(an, S(A)), "")
160160 let aB = valueOrElse(getInteger(an, Q(aA)), 0)
161161 $Tuple5(ay, aw, az, aA, aB)
162162 }
163163
164164
165165 let aC = "LAND"
166166
167167 let aD = "DUCK"
168168
169169 let aE = "PRESALE"
170170
171171 let aF = 6
172172
173173 let aG = 25
174174
175175 let aH = 3456000
176176
177177 let aI = 10000000000
178178
179179 let aJ = "Africa_F_Africa"
180180
181181 let aK = 39637
182182
183183 let aL = 10
184184
185185 let aM = 50000
186186
187187 let aN = 600000
188188
189189 let aO = ["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"]
190190
191191 let aP = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
192192
193193 let aQ = 10000000
194194
195195 let aR = [15, 16, 17, 18, 19, 20]
196196
197197 let aS = ["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_"]
198198
199199 let aT = 6
200200
201201 let aU = 8
202202
203203 let aV = 9
204204
205205 let aW = 10
206206
207207 let aX = 10
208208
209209 let aY = 0
210210
211211 let aZ = 1
212212
213213 let ba = 2
214214
215215 let bb = 3
216216
217217 let bc = 4
218218
219219 let bd = 0
220220
221221 let be = 1
222222
223223 let bf = 2
224224
225225 let bg = 3
226226
227227 let bh = 0
228228
229229 let bi = 1
230230
231231 let bj = 2
232232
233233 let bk = 3
234234
235235 let bl = 0
236236
237237 let bm = 1
238238
239239 let bn = 2
240240
241241 func bo (bp) = ("no_" + bp)
242242
243243
244244 func bq (bp) = ("lcna_" + bp)
245245
246246
247247 func br (bp) = ("st_" + bp)
248248
249249
250250 func bs (bt,bp) = makeString(["las", bt, bp], "_")
251251
252252
253253 func bu (bv,bp,bw) = ((((("sttao_" + bv) + "_") + bp) + "_") + bw)
254254
255255
256256 func bx (P) = ("wh_" + P)
257257
258258
259259 func by (bp) = ("infraLevel_" + bp)
260260
261261
262262 func bz (P) = ("fortifications_" + P)
263263
264264
265265 func bA (bp) = ("duckCustomNameByAssetId_" + bp)
266266
267267
268268 func bB (c) = ("accountCustomNameByAddr_" + c)
269269
270270
271271 func bC (c) = ("accRefBy_" + c)
272272
273273
274274 func bD (A) = ("onboardArtActivatedOnDuck_" + A)
275275
276276
277277 func bE (c) = ("onboardArtActivatedDuckBy_" + c)
278278
279279
280280 func bF (c) = ("accReferrals_" + c)
281281
282282
283283 func bG (bp) = ("duckOwner_" + bp)
284284
285285
286286 func bH (bw) = ("stakedDuckByOwner_" + bw)
287287
288288
289289 func bI (A) = ("backPack_" + A)
290290
291291
292292 func bJ (A) = ("duckLocation_" + A)
293293
294294
295295 func bK (bL) = ("%s%s__userGwlReleaseTime__" + bL)
296296
297297
298298 func bM () = "emergencyWarehouseProducts"
299299
300300
301301 let bN = "deliveryFund"
302302
303303 let bO = "deliveryLocked"
304304
305305 let bP = "%s__lastTourId"
306306
307307 func bQ (bR) = ("%s%d__tourStaticData__" + toString(bR))
308308
309309
310310 func bS (bR) = ("%s%d__tourDynamicData__" + toString(bR))
311311
312312
313313 func bT (bR,A) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bR), A], "__")
314314
315315
316316 let bU = 0
317317
318318 let bV = 1
319319
320320 let bW = 6
321321
322322 let bX = 1
323323
324324 func bY (bZ,bR) = {
325325 let ca = split(valueOrErrorMessage(getString(bZ, bQ(bR)), (("Error reading tournament " + toString(bR)) + " data")), "__")
326326 let cb = split_4C(valueOrErrorMessage(getString(bZ, bS(bR)), (("Error reading tournament " + toString(bR)) + " data")), "__")
327327 [ca, cb]
328328 }
329329
330330
331331 func cc (bZ,cd) = {
332332 let ce = valueOrElse(getInteger(bZ, bP), 0)
333333 let cf = split(cd, "_")
334334 let ax = lastBlock.timestamp
335335 let cg = bY(bZ, ce)
336336 let ca = cg[bU]
337337 let cb = cg[bV]
338338 if (if (if ((cf[bm] == "T"))
339339 then (parseIntValue(cf[bl]) == ce)
340340 else false)
341341 then (cb[bX] == "INPROGRESS")
342342 else false)
343343 then (parseIntValue(ca[bW]) > ax)
344344 else false
345345 }
346346
347347
348348 func ch (cd) = {
349349 let cf = split(cd, "_")
350350 let ax = lastBlock.timestamp
351351 let ci = parseIntValue(cf[bl])
352352 let cj = parseIntValue(cf[bn])
353353 if (if ((cf[bm] == "D"))
354354 then (ax > (ci + aN))
355355 else false)
356356 then (3 >= cj)
357357 else false
358358 }
359359
360360
361361 func ck (cd) = {
362362 let cl = split(cd, "_")[bm]
363363 if ((cl != "T"))
364364 then (cl != "D")
365365 else false
366366 }
367367
368368
369369 func cm (bZ,cd) = {
370370 let ce = valueOrElse(getInteger(bZ, bP), 0)
371371 let cf = split(cd, "_")
372372 let ax = lastBlock.timestamp
373373 let cg = bY(bZ, ce)
374374 let ca = cg[bU]
375375 let cb = cg[bV]
376376 let cl = cf[bm]
377377 if (if ((cl != "T"))
378378 then (cl != "D")
379379 else false)
380380 then true
381381 else !(if (if (if ((cf[bm] == "T"))
382382 then (parseIntValue(cf[bl]) == ce)
383383 else false)
384384 then (cb[bX] == "INPROGRESS")
385385 else false)
386386 then (parseIntValue(ca[bW]) > ax)
387387 else false)
388388 }
389389
390390
391391 func cn (co) = (parseIntValue(co[aT]) * aQ)
392392
393393
394-func cp (cq,cr) = throw(((("Cheat attempt: oldLoc=" + cq) + ", newLoc=") + cr))
395-
396-
397-let cs = false
394+func cp (cq,cr,cs) = throw(((((("Cheat attempt: oldLoc=" + cq) + ", newLoc=") + cr) + ", case=") + toString(cs)))
395+
398396
399397 let ct = false
400398
401-let cu = true
402-
403-let cv = take(drop(this.bytes, 1), 1)
404-
405-let cw = {
406- let cx = cv
407- if ((base58'2W' == cx))
399+let cu = false
400+
401+let cv = true
402+
403+let cw = take(drop(this.bytes, 1), 1)
404+
405+let cx = {
406+ let cy = cw
407+ if ((base58'2W' == cy))
408408 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
409- else if ((base58'2T' == cx))
409+ else if ((base58'2T' == cy))
410410 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
411411 else throw("Unknown chain")
412412 }
413413
414-let cy = {
415- let cx = cv
416- if ((base58'2W' == cx))
414+let cz = {
415+ let cy = cw
416+ if ((base58'2W' == cy))
417417 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
418- else if ((base58'2T' == cx))
418+ else if ((base58'2T' == cy))
419419 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
420420 else throw("Unknown chain")
421421 }
422422
423-let cz = {
424- let cx = cv
425- if ((base58'2W' == cx))
423+let cA = {
424+ let cy = cw
425+ if ((base58'2W' == cy))
426426 then 10000000000
427- else if ((base58'2T' == cx))
427+ else if ((base58'2T' == cy))
428428 then 100000000
429429 else throw("Unknown chain")
430430 }
431431
432-let cA = {
433- let cx = cv
434- if ((base58'2W' == cx))
432+let cB = {
433+ let cy = cw
434+ if ((base58'2W' == cy))
435435 then 86400000
436- else if ((base58'2T' == cx))
436+ else if ((base58'2T' == cy))
437437 then 60000
438438 else throw("Unknown chain")
439439 }
440440
441-let cB = "__"
442-
443-let cC = 1000000
444-
445-let cD = 100000000
446-
447-let cE = 25
448-
449-let cF = 100
450-
451-let cG = 225
452-
453-let cH = 400
454-
455-let cI = 625
456-
457-let cJ = [0, 1, 2, 3, 4, 5]
458-
459-func cK (cL,cM) = valueOrErrorMessage(getString(cL, cM), makeString(["mandatory ", toString(cL), ".", cM, " is not defined"], ""))
460-
461-
462-let cN = 1
463-
464-let cO = 2
465-
466-let cP = 3
467-
468-let cQ = 4
469-
470-let cR = 7
471-
472-let cS = 8
473-
474-func cT () = "%s__restConfig"
475-
476-
477-func cU () = "%s__restAddr"
478-
479-
480-func cV (cW) = split_4C(cK(cW, cT()), cB)
481-
482-
483-func cX (cY,cZ) = valueOrErrorMessage(addressFromString(cY[cZ]), ("Rest cfg doesn't contain address at index " + toString(cZ)))
484-
485-
486-let da = addressFromStringValue(valueOrElse(getString(this, cU()), cy))
487-
488-let cY = cV(da)
489-
490-let an = cX(cY, cN)
491-
492-let db = cX(cY, cO)
493-
494-let dc = cX(cY, cP)
495-
496-let dd = cX(cY, cQ)
497-
498-let de = cX(cY, cR)
499-
500-let df = cX(cY, cS)
501-
502-let dg = 0
503-
504-let dh = 1
505-
506-let di = 2
507-
508-let dj = 3
509-
510-let dk = "wlg_assetId"
511-
512-let dl = valueOrErrorMessage(getBinary(dd, dk), "WLGOLD is not issued yet")
513-
514-let dm = "acresAssetId"
515-
516-let dn = valueOrErrorMessage(getBinary(df, dm), "ACRES is not issued yet")
517-
518-let do = 2
519-
520-func dp (cL) = ("finishBlockForAddr_" + cL)
521-
522-
523-func dq () = "resTypesProportions"
524-
525-
526-func dr (ds) = ("resTypesByContinent_" + ds)
527-
528-
529-func dt (bw) = ("stakedLandsByOwner_" + bw)
530-
531-
532-func du (bw) = ("stakedPiecesByOwner_" + bw)
533-
534-
535-func dv (dw) = {
536- let cx = dw
537- if ($isInstanceOf(cx, "String"))
441+let cC = "__"
442+
443+let cD = 1000000
444+
445+let cE = 100000000
446+
447+let cF = 25
448+
449+let cG = 100
450+
451+let cH = 225
452+
453+let cI = 400
454+
455+let cJ = 625
456+
457+let cK = [0, 1, 2, 3, 4, 5]
458+
459+func cL (cM,cN) = valueOrErrorMessage(getString(cM, cN), makeString(["mandatory ", toString(cM), ".", cN, " is not defined"], ""))
460+
461+
462+let cO = 1
463+
464+let cP = 2
465+
466+let cQ = 3
467+
468+let cR = 4
469+
470+let cS = 7
471+
472+let cT = 8
473+
474+func cU () = "%s__restConfig"
475+
476+
477+func cV () = "%s__restAddr"
478+
479+
480+func cW (cX) = split_4C(cL(cX, cU()), cC)
481+
482+
483+func cY (cZ,da) = valueOrErrorMessage(addressFromString(cZ[da]), ("Rest cfg doesn't contain address at index " + toString(da)))
484+
485+
486+let db = addressFromStringValue(valueOrElse(getString(this, cV()), cz))
487+
488+let cZ = cW(db)
489+
490+let an = cY(cZ, cO)
491+
492+let dc = cY(cZ, cP)
493+
494+let dd = cY(cZ, cQ)
495+
496+let de = cY(cZ, cR)
497+
498+let df = cY(cZ, cS)
499+
500+let dg = cY(cZ, cT)
501+
502+let dh = 0
503+
504+let di = 1
505+
506+let dj = 2
507+
508+let dk = 3
509+
510+let dl = "wlg_assetId"
511+
512+let dm = valueOrErrorMessage(getBinary(de, dl), "WLGOLD is not issued yet")
513+
514+let dn = "acresAssetId"
515+
516+let do = valueOrErrorMessage(getBinary(dg, dn), "ACRES is not issued yet")
517+
518+let dp = 2
519+
520+func dq (cM) = ("finishBlockForAddr_" + cM)
521+
522+
523+func dr () = "resTypesProportions"
524+
525+
526+func ds (dt) = ("resTypesByContinent_" + dt)
527+
528+
529+func du (bw) = ("stakedLandsByOwner_" + bw)
530+
531+
532+func dv (bw) = ("stakedPiecesByOwner_" + bw)
533+
534+
535+func dw (dx) = {
536+ let cy = dx
537+ if ($isInstanceOf(cy, "String"))
538538 then {
539- let dx = cx
540- dx
539+ let dy = cy
540+ dy
541541 }
542542 else throw("fail to cast into String")
543543 }
544544
545545
546-func dy (dw) = {
547- let cx = dw
548- if ($isInstanceOf(cx, "Int"))
546+func dz (dx) = {
547+ let cy = dx
548+ if ($isInstanceOf(cy, "Int"))
549549 then {
550- let dz = cx
551- dz
550+ let dA = cy
551+ dA
552552 }
553553 else throw("fail to cast into Int")
554554 }
555555
556556
557-func dA (dw) = {
558- let cx = dw
559- if ($isInstanceOf(cx, "List[Any]"))
557+func dB (dx) = {
558+ let cy = dx
559+ if ($isInstanceOf(cy, "List[Any]"))
560560 then {
561- let dB = cx
562- dB
561+ let dC = cy
562+ dC
563563 }
564564 else throw("fail to cast into List[Any]")
565565 }
566566
567567
568-func dC (dw) = {
569- let cx = dw
570- if ($isInstanceOf(cx, "Boolean"))
568+func dD (dx) = {
569+ let cy = dx
570+ if ($isInstanceOf(cy, "Boolean"))
571571 then {
572- let dx = cx
573- dx
572+ let dy = cy
573+ dy
574574 }
575575 else throw("fail to cast into Boolean")
576576 }
577577
578578
579-func dD (dE) = {
580- let cx = dE
581- if ($isInstanceOf(cx, "(String, Int)"))
579+func dE (dF) = {
580+ let cy = dF
581+ if ($isInstanceOf(cy, "(String, Int)"))
582582 then {
583- let dF = cx
584- dF
583+ let dG = cy
584+ dG
585585 }
586586 else throw("fail to cast into (String, Int)")
587587 }
588588
589589
590-func dG (dH) = {
591- let cx = dH
592- if (("S" == cx))
593- then cE
594- else if (("M" == cx))
595- then cF
596- else if (("L" == cx))
597- then cG
598- else if (("XL" == cx))
599- then cH
600- else if (("XXL" == cx))
601- then cI
590+func dH (dI) = {
591+ let cy = dI
592+ if (("S" == cy))
593+ then cF
594+ else if (("M" == cy))
595+ then cG
596+ else if (("L" == cy))
597+ then cH
598+ else if (("XL" == cy))
599+ then cI
600+ else if (("XXL" == cy))
601+ then cJ
602602 else throw("Unknown land size")
603603 }
604604
605605
606-func dI (dx) = isDefined(parseInt(dx))
607-
608-
609-func dJ () = "contractsBlocked"
610-
611-
612-func dK (c) = ("lastTxIdByUser_" + c)
613-
614-
615-func dL (dE,dM) = {
616- let dN = pow(10, 0, dM, 0, 0, DOWN)
617- let dO = toString((dE % dN))
618- let dP = drop(toString(dN), (1 + size(dO)))
619- (((toString((dE / dN)) + ".") + dP) + dO)
620- }
621-
622-
623-func dQ (dR,dS,dT) = {
624- let dU = value(blockInfoByHeight(dS))
625- let dV = sha256((value(dU.vrf) + dT))
626- (toInt(dV) % dR)
627- }
628-
629-
630-let dW = {
631- let cx = cv
632- if ((base58'2W' == cx))
606+func dJ (dy) = isDefined(parseInt(dy))
607+
608+
609+func dK () = "contractsBlocked"
610+
611+
612+func dL (c) = ("lastTxIdByUser_" + c)
613+
614+
615+func dM (dF,dN) = {
616+ let dO = pow(10, 0, dN, 0, 0, DOWN)
617+ let dP = toString((dF % dO))
618+ let dQ = drop(toString(dO), (1 + size(dP)))
619+ (((toString((dF / dO)) + ".") + dQ) + dP)
620+ }
621+
622+
623+func dR (dS,dT,dU) = {
624+ let dV = value(blockInfoByHeight(dT))
625+ let dW = sha256((value(dV.vrf) + dU))
626+ (toInt(dW) % dS)
627+ }
628+
629+
630+let dX = {
631+ let cy = cw
632+ if ((base58'2W' == cy))
633633 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
634- else if ((base58'2T' == cx))
634+ else if ((base58'2T' == cy))
635635 then this
636636 else throw("Unknown chain")
637637 }
638638
639-let dX = {
640- let cx = cv
641- if ((base58'2W' == cx))
639+let dY = {
640+ let cy = cw
641+ if ((base58'2W' == cy))
642642 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
643- else if ((base58'2T' == cx))
643+ else if ((base58'2T' == cy))
644644 then this
645645 else throw("Unknown chain")
646646 }
647647
648-let dY = {
649- let cx = cv
650- if ((base58'2W' == cx))
651- then if (cs)
648+let dZ = {
649+ let cy = cw
650+ if ((base58'2W' == cy))
651+ then if (ct)
652652 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
653653 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
654- else if ((base58'2T' == cx))
654+ else if ((base58'2T' == cy))
655655 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
656656 else throw("Unknown chain")
657657 }
658658
659-let dZ = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
660-
661-let ea = 300000
662-
663-let eb = 5000000
664-
665-let ec = 50
666-
667-let ed = 10000000
668-
669-let ee = {
670- let cx = cv
671- if ((base58'2W' == cx))
659+let ea = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
660+
661+let eb = 300000
662+
663+let ec = 5000000
664+
665+let ed = 50
666+
667+let ee = 10000000
668+
669+let ef = {
670+ let cy = cw
671+ if ((base58'2W' == cy))
672672 then 252289527462
673- else if ((base58'2T' == cx))
673+ else if ((base58'2T' == cy))
674674 then 2522895274
675675 else throw("Unknown chain")
676676 }
677677
678-let ef = {
679- let cx = cv
680- if ((base58'2W' == cx))
678+let eg = {
679+ let cy = cw
680+ if ((base58'2W' == cy))
681681 then 250000000
682- else if ((base58'2T' == cx))
682+ else if ((base58'2T' == cy))
683683 then 250000000
684684 else throw("Unknown chain")
685685 }
686686
687-let eg = 2500000000
688-
689-let eh = toBigInt(5)
690-
691-let ei = toBigInt(20)
692-
693-let ej = toBigInt((20 * 20))
694-
695-let ek = toBigInt(((20 * 20) * 20))
696-
697-let el = toBigInt((((20 * 20) * 20) * 20))
698-
699-let em = toBigInt(((((20 * 20) * 20) * 20) * 20))
700-
701-let en = 500
702-
703-func eo () = "nextLandNum"
704-
705-
706-func ep (eq) = ("lcn_" + eq)
707-
708-
709-func er (es) = ("la_" + es)
710-
711-
712-func et (bp,bw) = ((("ilao_" + bp) + "_") + bw)
713-
714-
715-func eu (es) = ("lo_" + es)
716-
717-
718-func ev (eq) = ("duckByCustomName_" + eq)
719-
720-
721-func ew (eq) = ("accountByCustomName_" + eq)
722-
723-
724-func ex () = "oldiesList"
725-
726-
727-let ey = 0
728-
729-let ez = 1
730-
731-let eA = 2
732-
733-let eB = 0
734-
735-let eC = 5
736-
737-let eD = 6
738-
739-let eE = 7
740-
741-func eF (es,dH) = ((aC + es) + dH)
742-
743-
744-func eG (eH,eI) = {
745- let eJ = if ((eH >= 0))
746- then (((eH + eI) - 1) / eI)
747- else -((((-(eH) + eI) - 1) / eI))
748- (eJ * cD)
749- }
750-
751-
752-func eK (eL,eM) = {
753- let eN = (((((eM[0] + eM[1]) + eM[2]) + eM[3]) + eM[4]) + eM[5])
754- if ((0 >= eN))
687+let eh = 2500000000
688+
689+let ei = toBigInt(5)
690+
691+let ej = toBigInt(20)
692+
693+let ek = toBigInt((20 * 20))
694+
695+let el = toBigInt(((20 * 20) * 20))
696+
697+let em = toBigInt((((20 * 20) * 20) * 20))
698+
699+let en = toBigInt(((((20 * 20) * 20) * 20) * 20))
700+
701+let eo = 500
702+
703+func ep () = "nextLandNum"
704+
705+
706+func eq (er) = ("lcn_" + er)
707+
708+
709+func es (et) = ("la_" + et)
710+
711+
712+func eu (bp,bw) = ((("ilao_" + bp) + "_") + bw)
713+
714+
715+func ev (et) = ("lo_" + et)
716+
717+
718+func ew (er) = ("duckByCustomName_" + er)
719+
720+
721+func ex (er) = ("accountByCustomName_" + er)
722+
723+
724+func ey () = "oldiesList"
725+
726+
727+let ez = 0
728+
729+let eA = 1
730+
731+let eB = 2
732+
733+let eC = 0
734+
735+let eD = 5
736+
737+let eE = 6
738+
739+let eF = 7
740+
741+func eG (et,dI) = ((aC + et) + dI)
742+
743+
744+func eH (eI,eJ) = {
745+ let eK = if ((eI >= 0))
746+ then (((eI + eJ) - 1) / eJ)
747+ else -((((-(eI) + eJ) - 1) / eJ))
748+ (eK * cE)
749+ }
750+
751+
752+func eL (eM,eN) = {
753+ let eO = (((((eN[0] + eN[1]) + eN[2]) + eN[3]) + eN[4]) + eN[5])
754+ if ((0 >= eO))
755755 then throw("Zero weights sum")
756756 else {
757- let eO = fraction(eL, cC, eN)
758- func eP (eQ,eR) = (eQ :+ fraction(eR, eO, cC))
759-
760- let eS = eM
761- let eT = size(eS)
762- let eU = nil
763- func eV (eW,eX) = if ((eX >= eT))
764- then eW
765- else eP(eW, eS[eX])
766-
767- func eY (eW,eX) = if ((eX >= eT))
768- then eW
757+ let eP = fraction(eM, cD, eO)
758+ func eQ (eR,eS) = (eR :+ fraction(eS, eP, cD))
759+
760+ let eT = eN
761+ let eU = size(eT)
762+ let eV = nil
763+ func eW (eX,eY) = if ((eY >= eU))
764+ then eX
765+ else eQ(eX, eT[eY])
766+
767+ func eZ (eX,eY) = if ((eY >= eU))
768+ then eX
769769 else throw("List size exceeds 6")
770770
771- eY(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6)
772- }
773- }
774-
775-
776-func eZ (eL) = {
777- let fa = split(value(getString(dq())), "_")
778- if ((size(fa) != aF))
771+ eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
772+ }
773+ }
774+
775+
776+func fa (eM) = {
777+ let fb = split(value(getString(dr())), "_")
778+ if ((size(fb) != aF))
779779 then throw("Wrong proportions data")
780780 else {
781- let fb = [parseIntValue(fa[0]), parseIntValue(fa[1]), parseIntValue(fa[2]), parseIntValue(fa[3]), parseIntValue(fa[4]), parseIntValue(fa[5])]
782- eK(eL, fb)
783- }
784- }
785-
786-
787-func fc (fd,fe,ff) = {
788- let fg = eZ(ff)
789- func fh (eQ,cZ) = {
790- let fi = (parseIntValue(fe[cZ]) - fg[cZ])
791- if ((0 > fi))
792- then throw(((((("Not enough material idx=" + toString(cZ)) + ", you have ") + fe[cZ]) + ", but need ") + toString(fg[cZ])))
793- else (eQ :+ toString(fi))
781+ let fc = [parseIntValue(fb[0]), parseIntValue(fb[1]), parseIntValue(fb[2]), parseIntValue(fb[3]), parseIntValue(fb[4]), parseIntValue(fb[5])]
782+ eL(eM, fc)
783+ }
784+ }
785+
786+
787+func fd (fe,ff,fg) = {
788+ let fh = fa(fg)
789+ func fi (eR,da) = {
790+ let fj = (parseIntValue(ff[da]) - fh[da])
791+ if ((0 > fj))
792+ then throw(((((("Not enough material idx=" + toString(da)) + ", you have ") + ff[da]) + ", but need ") + toString(fh[da])))
793+ else (eR :+ toString(fj))
794794 }
795795
796- if (fd)
796+ if (fe)
797797 then {
798- let eS = cJ
799- let eT = size(eS)
800- let eU = nil
801- func eV (eW,eX) = if ((eX >= eT))
802- then eW
803- else fh(eW, eS[eX])
804-
805- func eY (eW,eX) = if ((eX >= eT))
806- then eW
798+ let eT = cK
799+ let eU = size(eT)
800+ let eV = nil
801+ func eW (eX,eY) = if ((eY >= eU))
802+ then eX
803+ else fi(eX, eT[eY])
804+
805+ func eZ (eX,eY) = if ((eY >= eU))
806+ then eX
807807 else throw("List size exceeds 6")
808808
809- eY(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6)
810- }
811- else fe
812- }
813-
814-
815-func fj (fk,fl) = if ((fl == ""))
816- then $Tuple2(fk, false)
809+ eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
810+ }
811+ else ff
812+ }
813+
814+
815+func fk (fl,fm) = if ((fm == ""))
816+ then $Tuple2(fl, false)
817817 else {
818- func fm (eQ,fn) = {
819- let fo = split(fn, ",")
820- if ((size(fo) != 2))
818+ func fn (eR,fo) = {
819+ let fp = split(fo, ",")
820+ if ((size(fp) != 2))
821821 then throw("Incorrect format, should be index,amount")
822822 else {
823- let cZ = parseIntValue(fo[0])
824- if (if ((0 > cZ))
823+ let da = parseIntValue(fp[0])
824+ if (if ((0 > da))
825825 then true
826- else (cZ >= size(aS)))
826+ else (da >= size(aS)))
827827 then throw("Unknown product idx")
828828 else {
829- let fp = parseIntValue(fo[1])
830- let fq = split(eQ._1, (fo[0] + ":"))
831- if ((size(fq) != 2))
832- then throw((("You don't have " + aO[cZ]) + " equipped"))
829+ let fq = parseIntValue(fp[1])
830+ let fr = split(eR._1, (fp[0] + ":"))
831+ if ((size(fr) != 2))
832+ then throw((("You don't have " + aO[da]) + " equipped"))
833833 else {
834- let fr = fq[1]
835- let fs = if (dI(take(drop(fr, 1), 1)))
834+ let fs = fr[1]
835+ let ft = if (dJ(take(drop(fs, 1), 1)))
836836 then 2
837837 else 1
838- let ft = parseIntValue(take(fr, fs))
839- let fu = drop(fr, fs)
840- let fv = if ((ft >= fp))
841- then (ft - fp)
842- else throw(((((("You equipped " + toString(ft)) + " of ") + aO[cZ]) + ", but tried to use ") + toString(fp)))
843- $Tuple2(((((fq[0] + fo[0]) + ":") + toString(fv)) + fu), if (eQ._2)
838+ let fu = parseIntValue(take(fs, ft))
839+ let fv = drop(fs, ft)
840+ let fw = if ((fu >= fq))
841+ then (fu - fq)
842+ else throw(((((("You equipped " + toString(fu)) + " of ") + aO[da]) + ", but tried to use ") + toString(fq)))
843+ $Tuple2(((((fr[0] + fp[0]) + ":") + toString(fw)) + fv), if (eR._2)
844844 then true
845- else if (if ((cZ >= 6))
846- then (8 >= cZ)
845+ else if (if ((da >= 6))
846+ then (8 >= da)
847847 else false)
848- then (fv == 0)
848+ then (fw == 0)
849849 else false)
850850 }
851851 }
852852 }
853853 }
854854
855- let eS = split(fl, "_")
856- let eT = size(eS)
857- let eU = $Tuple2(fk, false)
858- func eV (eW,eX) = if ((eX >= eT))
859- then eW
860- else fm(eW, eS[eX])
861-
862- func eY (eW,eX) = if ((eX >= eT))
863- then eW
855+ let eT = split(fm, "_")
856+ let eU = size(eT)
857+ let eV = $Tuple2(fl, false)
858+ func eW (eX,eY) = if ((eY >= eU))
859+ then eX
860+ else fn(eX, eT[eY])
861+
862+ func eZ (eX,eY) = if ((eY >= eU))
863+ then eX
864864 else throw("List size exceeds 10")
865865
866- eY(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
866+ eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
867867 }
868868
869869
870-func fw (fx) = {
871- let fy = if ((fx == ""))
870+func fx (fy) = {
871+ let fz = if ((fy == ""))
872872 then nil
873- else split_4C(fx, "_")
874- func fz (eQ,co) = {
875- let fA = (size(eQ) / 8)
876- let ft = if ((size(fy) > fA))
877- then parseIntValue(fy[fA])
873+ else split_4C(fy, "_")
874+ func fA (eR,co) = {
875+ let fB = (size(eR) / 8)
876+ let fu = if ((size(fz) > fB))
877+ then parseIntValue(fz[fB])
878878 else 0
879- (eQ + toBytes(ft))
879+ (eR + toBytes(fu))
880880 }
881881
882- let eS = aS
883- let eT = size(eS)
884- let eU = base58''
885- func eV (eW,eX) = if ((eX >= eT))
886- then eW
887- else fz(eW, eS[eX])
888-
889- func eY (eW,eX) = if ((eX >= eT))
890- then eW
882+ let eT = aS
883+ let eU = size(eT)
884+ let eV = base58''
885+ func eW (eX,eY) = if ((eY >= eU))
886+ then eX
887+ else fA(eX, eT[eY])
888+
889+ func eZ (eX,eY) = if ((eY >= eU))
890+ then eX
891891 else throw("List size exceeds 50")
892892
893- eY(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eU, 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)
894- }
895-
896-
897-func fB (fC) = {
898- func fD (eQ,co) = {
899- let fA = size(eQ)
900- let fE = take(drop(fC, (8 * fA)), 8)
901- (eQ :+ toString(toInt(fE)))
893+ eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 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)
894+ }
895+
896+
897+func fC (fD) = {
898+ func fE (eR,co) = {
899+ let fB = size(eR)
900+ let fF = take(drop(fD, (8 * fB)), 8)
901+ (eR :+ toString(toInt(fF)))
902902 }
903903
904904 makeString_2C({
905- let eS = aS
906- let eT = size(eS)
907- let eU = nil
908- func eV (eW,eX) = if ((eX >= eT))
909- then eW
910- else fD(eW, eS[eX])
911-
912- func eY (eW,eX) = if ((eX >= eT))
913- then eW
905+ let eT = aS
906+ let eU = size(eT)
907+ let eV = nil
908+ func eW (eX,eY) = if ((eY >= eU))
909+ then eX
910+ else fE(eX, eT[eY])
911+
912+ func eZ (eX,eY) = if ((eY >= eU))
913+ then eX
914914 else throw("List size exceeds 50")
915915
916- eY(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eU, 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)
916+ eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 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)
917917 }, "_")
918918 }
919919
920920
921-func fF (fG,fH) = {
922- func fI (eQ,fA) = {
923- let fJ = if ((size(fG) > (7 + fA)))
924- then fG[(7 + fA)]
921+func fG (fH,fI) = {
922+ func fJ (eR,fB) = {
923+ let fK = if ((size(fH) > (7 + fB)))
924+ then fH[(7 + fB)]
925925 else 0
926- if ((parseIntValue(fH[fA]) > (fG[fA] + fJ)))
927- then throw(("Requirement not satisfied: " + j[fA]))
926+ if ((parseIntValue(fI[fB]) > (fH[fB] + fK)))
927+ then throw(("Requirement not satisfied: " + j[fB]))
928928 else true
929929 }
930930
931- let eS = [0, 1, 2, 3, 4, 5, 6]
932- let eT = size(eS)
933- let eU = false
934- func eV (eW,eX) = if ((eX >= eT))
935- then eW
936- else fI(eW, eS[eX])
937-
938- func eY (eW,eX) = if ((eX >= eT))
939- then eW
931+ let eT = [0, 1, 2, 3, 4, 5, 6]
932+ let eU = size(eT)
933+ let eV = false
934+ func eW (eX,eY) = if ((eY >= eU))
935+ then eX
936+ else fJ(eX, eT[eY])
937+
938+ func eZ (eX,eY) = if ((eY >= eU))
939+ then eX
940940 else throw("List size exceeds 7")
941941
942- eY(eV(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6), 7)
943- }
944-
945-
946-func fK (fL,fy,fM,fG,fN,fO) = {
947- let fo = split(fL, ":")
948- if ((size(fo) != 2))
942+ eZ(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7)
943+ }
944+
945+
946+func fL (fM,fz,fN,fH,fO,fP) = {
947+ let fp = split(fM, ":")
948+ if ((size(fp) != 2))
949949 then throw("Incorrect format, should be index:amount")
950- else if (if (!(fM))
951- then (size(fo[0]) != 2)
950+ else if (if (!(fN))
951+ then (size(fp[0]) != 2)
952952 else false)
953953 then throw("Product idx should be 2 digits, zero padded")
954954 else {
955- let fP = parseIntValue(fo[0])
956- let fQ = parseIntValue(fo[1])
957- if (!(containsElement(aR, fP)))
958- then throw((("Product '" + aO[fP]) + "' cannot be used for land defense"))
959- else if ((0 > fQ))
955+ let fQ = parseIntValue(fp[0])
956+ let fR = parseIntValue(fp[1])
957+ if (!(containsElement(aR, fQ)))
958+ then throw((("Product '" + aO[fQ]) + "' cannot be used for land defense"))
959+ else if ((0 > fR))
960960 then throw("Count can't be negative")
961- else if ((fQ > t))
962- then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fP]))
963- else if ((fQ == 0))
964- then $Tuple3(fy, fN, fO)
961+ else if ((fR > t))
962+ then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fQ]))
963+ else if ((fR == 0))
964+ then $Tuple3(fz, fO, fP)
965965 else {
966- let fR = take(fy, (8 * fP))
967- let ft = toInt(take(drop(fy, (8 * fP)), 8))
968- let fu = drop(fy, (8 * (fP + 1)))
969- let co = split(aS[fP], "_")
970- if (if (!(fM))
971- then (fQ > ft)
966+ let fS = take(fz, (8 * fQ))
967+ let fu = toInt(take(drop(fz, (8 * fQ)), 8))
968+ let fv = drop(fz, (8 * (fQ + 1)))
969+ let co = split(aS[fQ], "_")
970+ if (if (!(fN))
971+ then (fR > fu)
972972 else false)
973- then throw(((((("You have " + toString(ft)) + " of ") + aO[fP]) + ", but tried to use ") + toString(fQ)))
973+ then throw(((((("You have " + toString(fu)) + " of ") + aO[fQ]) + ", but tried to use ") + toString(fR)))
974974 else {
975- let fv = if (if (!(fM))
976- then fF(fG, split(co[aV], ","))
975+ let fw = if (if (!(fN))
976+ then fG(fH, split(co[aV], ","))
977977 else false)
978- then (ft - fQ)
979- else (ft + fQ)
980- let fS = (eG(fv, aX) - eG(ft, aX))
981- $Tuple3(((fR + toBytes(fv)) + fu), (fN + fS), (fO - fS))
978+ then (fu - fR)
979+ else (fu + fR)
980+ let fT = (eH(fw, aX) - eH(fu, aX))
981+ $Tuple3(((fS + toBytes(fw)) + fv), (fO + fT), (fP - fT))
982982 }
983983 }
984984 }
985985 }
986986
987987
988-func fT (fL,fy,fM,fU,fV,fW,fG) = {
989- let fo = split(fL, ":")
990- if ((size(fo) != 2))
988+func fU (fM,fz,fN,fV,fW,fX,fH) = {
989+ let fp = split(fM, ":")
990+ if ((size(fp) != 2))
991991 then throw("Incorrect format, should be index:amount")
992- else if (if (!(fM))
993- then (size(fo[0]) != 2)
992+ else if (if (!(fN))
993+ then (size(fp[0]) != 2)
994994 else false)
995995 then throw("Product idx should be 2 digits, zero padded")
996996 else {
997- let fP = parseIntValue(fo[0])
998- let fQ = parseIntValue(fo[1])
999- if (if ((0 > fP))
997+ let fQ = parseIntValue(fp[0])
998+ let fR = parseIntValue(fp[1])
999+ if (if ((0 > fQ))
10001000 then true
1001- else (fP >= size(aS)))
1001+ else (fQ >= size(aS)))
10021002 then throw("Unknown product idx")
1003- else if ((0 > fQ))
1003+ else if ((0 > fR))
10041004 then throw("Count can't be negative")
1005- else if ((fQ > t))
1006- then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fP]))
1007- else if ((fQ == 0))
1008- then $Tuple2(fy, false)
1005+ else if ((fR > t))
1006+ then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fQ]))
1007+ else if ((fR == 0))
1008+ then $Tuple2(fz, false)
10091009 else {
1010- let fR = take(fy, (8 * fP))
1011- let ft = toInt(take(drop(fy, (8 * fP)), 8))
1012- let fu = drop(fy, (8 * (fP + 1)))
1013- let co = split(aS[fP], "_")
1014- if (if (!(fM))
1015- then (fQ > ft)
1010+ let fS = take(fz, (8 * fQ))
1011+ let fu = toInt(take(drop(fz, (8 * fQ)), 8))
1012+ let fv = drop(fz, (8 * (fQ + 1)))
1013+ let co = split(aS[fQ], "_")
1014+ if (if (!(fN))
1015+ then (fR > fu)
10161016 else false)
1017- then throw(((((("You have " + toString(ft)) + " of ") + aO[fP]) + ", but tried to use ") + toString(fQ)))
1017+ then throw(((((("You have " + toString(fu)) + " of ") + aO[fQ]) + ", but tried to use ") + toString(fR)))
10181018 else {
1019- let fX = if (if (!(fM))
1020- then fF(fG, split(co[aV], ","))
1019+ let fY = if (if (!(fN))
1020+ then fG(fH, split(co[aV], ","))
10211021 else false)
10221022 then {
1023- let fY = co[aW]
1024- if ((fY == ""))
1023+ let fZ = co[aW]
1024+ if ((fZ == ""))
10251025 then throw("Item cannot be equipped")
10261026 else {
1027- let fZ = parseIntValue(fY)
1028- let ga = (fZ / 100)
1029- if ((fU != ga))
1027+ let ga = parseIntValue(fZ)
1028+ let gb = (ga / 100)
1029+ if ((fV != gb))
10301030 then throw("Segment incompatible")
10311031 else {
1032- let gb = ((fZ % 100) / 10)
1033- if ((fV != gb))
1032+ let gc = ((ga % 100) / 10)
1033+ if ((fW != gc))
10341034 then throw("Slot incompatible")
10351035 else {
1036- let gc = (fZ % 10)
1037- if (if ((fW != 0))
1038- then (gc > 1)
1036+ let gd = (ga % 10)
1037+ if (if ((fX != 0))
1038+ then (gd > 1)
10391039 else false)
10401040 then throw("Big items should occupy slot 0")
1041- else (gc > 1)
1041+ else (gd > 1)
10421042 }
10431043 }
10441044 }
10451045 }
10461046 else false
1047- $Tuple2(((fR + toBytes((ft + (if (fM)
1048- then fQ
1049- else -(fQ))))) + fu), fX)
1047+ $Tuple2(((fS + toBytes((fu + (if (fN)
1048+ then fR
1049+ else -(fR))))) + fv), fY)
10501050 }
10511051 }
10521052 }
10531053 }
10541054
10551055
1056-func gd (ge,gf,fM,fU,fV,gg) = if ((ge != ""))
1056+func ge (gf,gg,fN,fV,fW,gh) = if ((gf != ""))
10571057 then {
1058- let gh = split(ge, ",")
1059- if ((size(gh) > s))
1058+ let gi = split(gf, ",")
1059+ if ((size(gi) > s))
10601060 then throw("Wrong slots format")
10611061 else {
1062- let gi = gh[0]
1063- let gj = if ((size(gh) > 1))
1064- then gh[1]
1062+ let gj = gi[0]
1063+ let gk = if ((size(gi) > 1))
1064+ then gi[1]
10651065 else ""
1066- if (if ((gi == ""))
1067- then (gj == "")
1066+ if (if ((gj == ""))
1067+ then (gk == "")
10681068 else false)
1069- then gf
1069+ then gg
10701070 else {
1071- let gk = if ((gi != ""))
1072- then fT(gi, gf, fM, fU, fV, 0, gg)
1073- else $Tuple2(gf, false)
1074- if ((gj != ""))
1075- then if (gk._2)
1071+ let gl = if ((gj != ""))
1072+ then fU(gj, gg, fN, fV, fW, 0, gh)
1073+ else $Tuple2(gg, false)
1074+ if ((gk != ""))
1075+ then if (gl._2)
10761076 then throw("Big item already occupies slot")
1077- else fT(gj, gk._1, fM, fU, fV, 1, gg)._1
1078- else gk._1
1077+ else fU(gk, gl._1, fN, fV, fW, 1, gh)._1
1078+ else gl._1
10791079 }
10801080 }
10811081 }
1082- else gf
1083-
1084-
1085-func gl (gm,gn,fM,gg) = {
1086- func fU (eQ,go) = {
1087- let fA = eQ._1
1088- let fV = split(go, ";")
1089- if ((size(fV) != r))
1082+ else gg
1083+
1084+
1085+func gm (gn,go,fN,gh) = {
1086+ func fV (eR,gp) = {
1087+ let fB = eR._1
1088+ let fW = split(gp, ";")
1089+ if ((size(fW) != r))
10901090 then throw("Wrong segment format")
10911091 else {
1092- let gp = fV[0]
1093- let gq = fV[1]
1094- if (if ((gp == ""))
1095- then (gq == "")
1092+ let gq = fW[0]
1093+ let gr = fW[1]
1094+ if (if ((gq == ""))
1095+ then (gr == "")
10961096 else false)
1097- then $Tuple2((fA + 1), eQ._2)
1097+ then $Tuple2((fB + 1), eR._2)
10981098 else {
1099- let gr = gd(gp, eQ._2, fM, fA, 0, gg)
1100- $Tuple2((fA + 1), gd(gq, gr, fM, fA, 1, gg))
1099+ let gs = ge(gq, eR._2, fN, fB, 0, gh)
1100+ $Tuple2((fB + 1), ge(gr, gs, fN, fB, 1, gh))
11011101 }
11021102 }
11031103 }
11041104
1105-( let eS = gm
1106- let eT = size(eS)
1107- let eU = $Tuple2(0, gn)
1108- func eV (eW,eX) = if ((eX >= eT))
1109- then eW
1110- else fU(eW, eS[eX])
1111-
1112- func eY (eW,eX) = if ((eX >= eT))
1113- then eW
1105+( let eT = gn
1106+ let eU = size(eT)
1107+ let eV = $Tuple2(0, go)
1108+ func eW (eX,eY) = if ((eY >= eU))
1109+ then eX
1110+ else fV(eX, eT[eY])
1111+
1112+ func eZ (eX,eY) = if ((eY >= eU))
1113+ then eX
11141114 else throw("List size exceeds 6")
11151115
1116- eY(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6))._2
1117- }
1118-
1119-
1120-func gs (gm,gn,fN,fO,fM,fG) = if ((3 > size(gm)))
1116+ eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6))._2
1117+ }
1118+
1119+
1120+func gt (gn,go,fO,fP,fN,fH) = if ((3 > size(gn)))
11211121 then throw("At least duck, mines and traps parts are required")
11221122 else {
1123- func fU (eQ,go) = {
1124- let fA = eQ._1
1125- if ((fA == 0))
1126- then $Tuple4((fA + 1), eQ._2, eQ._3, eQ._4)
1123+ func fV (eR,gp) = {
1124+ let fB = eR._1
1125+ if ((fB == 0))
1126+ then $Tuple4((fB + 1), eR._2, eR._3, eR._4)
11271127 else {
1128- let gt = fK(go, eQ._2, fM, fG, eQ._3, eQ._4)
1129- $Tuple4((fA + 1), gt._1, gt._2, gt._3)
1128+ let gu = fL(gp, eR._2, fN, fH, eR._3, eR._4)
1129+ $Tuple4((fB + 1), gu._1, gu._2, gu._3)
11301130 }
11311131 }
11321132
1133- let gu = {
1134- let eS = gm
1135- let eT = size(eS)
1136- let eU = $Tuple4(0, gn, fN, fO)
1137- func eV (eW,eX) = if ((eX >= eT))
1138- then eW
1139- else fU(eW, eS[eX])
1140-
1141- func eY (eW,eX) = if ((eX >= eT))
1142- then eW
1133+ let gv = {
1134+ let eT = gn
1135+ let eU = size(eT)
1136+ let eV = $Tuple4(0, go, fO, fP)
1137+ func eW (eX,eY) = if ((eY >= eU))
1138+ then eX
1139+ else fV(eX, eT[eY])
1140+
1141+ func eZ (eX,eY) = if ((eY >= eU))
1142+ then eX
11431143 else throw("List size exceeds 10")
11441144
1145- eY(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1146- }
1147- $Tuple3(gu._2, gu._3, gu._4)
1145+ eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1146+ }
1147+ $Tuple3(gv._2, gv._3, gv._4)
11481148 }
11491149
11501150
1151-func gv (A) = {
1152- let gw = F(A)
1153- let gx = split(valueOrElse(getString(gw), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1154- let gy = gl(gx, dZ, true, nil)
1155- let gz = split(gx[p], ";")[1]
1156- let ao = if ((gz == ""))
1151+func gw (A) = {
1152+ let gx = F(A)
1153+ let gy = split(valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1154+ let gz = gm(gy, ea, true, nil)
1155+ let gA = split(gy[p], ";")[1]
1156+ let ao = if ((gA == ""))
11571157 then 0
11581158 else {
1159- let gA = split(gz, ",")[0]
1160- if ((gA == ""))
1159+ let gB = split(gA, ",")[0]
1160+ if ((gB == ""))
11611161 then 0
11621162 else {
1163- let fL = split(gA, ":")
1164- let cZ = fL[0]
1165- let gB = fL[1]
1166- if (if (if (if (if ((cZ == "06"))
1163+ let fM = split(gB, ":")
1164+ let da = fM[0]
1165+ let gC = fM[1]
1166+ if (if (if (if (if ((da == "06"))
11671167 then true
1168- else (cZ == "07"))
1168+ else (da == "07"))
11691169 then true
1170- else (cZ == "08"))
1171- then (gB != "")
1170+ else (da == "08"))
1171+ then (gC != "")
11721172 else false)
1173- then (parseIntValue(gB) > 0)
1173+ then (parseIntValue(gC) > 0)
11741174 else false)
1175- then parseIntValue(split(aS[parseIntValue(cZ)], "_")[aU])
1175+ then parseIntValue(split(aS[parseIntValue(da)], "_")[aU])
11761176 else 0
11771177 }
11781178 }
1179- let gg = am(this, A, ao, true)
1180- let gC = gl(gx, gy, false, gg)
1181- (gC == gC)
1182- }
1183-
1184-
1185-func gD (gE,gF,gG,gH) = if ((size(gE) != aF))
1179+ let gh = am(this, A, ao, true)
1180+ let gD = gm(gy, gz, false, gh)
1181+ (gD == gD)
1182+ }
1183+
1184+
1185+func gE (gF,gG,gH,gI) = if ((size(gF) != aF))
11861186 then throw("Wrong proportions data")
11871187 else {
1188- func gI (eQ,gJ) = {
1189- let fi = (parseIntValue(gE[gJ]) + ((gH * gF[gJ]) * gG))
1190- if ((0 > fi))
1191- then throw(((((((("Panic! Pieces of type=" + toString(gJ)) + ", sign=") + toString(gH)) + ", terrainCounts[i]=") + toString(gF[gJ])) + ", landSizeIndex=") + toString(gG)))
1192- else (eQ :+ toString(fi))
1193- }
1194-
1195- let eS = cJ
1196- let eT = size(eS)
1197- let eU = nil
1198- func eV (eW,eX) = if ((eX >= eT))
1199- then eW
1200- else gI(eW, eS[eX])
1201-
1202- func eY (eW,eX) = if ((eX >= eT))
1203- then eW
1188+ func gJ (eR,gK) = {
1189+ let fj = (parseIntValue(gF[gK]) + ((gI * gG[gK]) * gH))
1190+ if ((0 > fj))
1191+ then throw(((((((("Panic! Pieces of type=" + toString(gK)) + ", sign=") + toString(gI)) + ", terrainCounts[i]=") + toString(gG[gK])) + ", landSizeIndex=") + toString(gH)))
1192+ else (eR :+ toString(fj))
1193+ }
1194+
1195+ let eT = cK
1196+ let eU = size(eT)
1197+ let eV = nil
1198+ func eW (eX,eY) = if ((eY >= eU))
1199+ then eX
1200+ else gJ(eX, eT[eY])
1201+
1202+ func eZ (eX,eY) = if ((eY >= eU))
1203+ then eX
12041204 else throw("List size exceeds 6")
12051205
1206- eY(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6)
1206+ eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
12071207 }
12081208
12091209
1210-func gK (gF,gG,gH) = {
1211- let gE = split(valueOrElse(getString(dq()), "0_0_0_0_0_0"), "_")
1212- makeString(gD(gE, gF, gG, gH), "_")
1213- }
1214-
1215-
1216-func gL (gM) = [(size(split(gM, "A")) - 1), (size(split(gM, "B")) - 1), (size(split(gM, "C")) - 1), (size(split(gM, "D")) - 1), (size(split(gM, "E")) - 1), (size(split(gM, "F")) - 1)]
1217-
1218-
1219-func gN (gO,gF,gP,gG,gQ) = {
1220- func gR (eQ,gJ) = {
1221- let gS = ((fraction(gP, gQ, a) * gF[gJ]) * gG)
1222- (eQ :+ toString((parseIntValue(gO[gJ]) + gS)))
1210+func gL (gG,gH,gI) = {
1211+ let gF = split(valueOrElse(getString(dr()), "0_0_0_0_0_0"), "_")
1212+ makeString(gE(gF, gG, gH, gI), "_")
1213+ }
1214+
1215+
1216+func gM (gN) = [(size(split(gN, "A")) - 1), (size(split(gN, "B")) - 1), (size(split(gN, "C")) - 1), (size(split(gN, "D")) - 1), (size(split(gN, "E")) - 1), (size(split(gN, "F")) - 1)]
1217+
1218+
1219+func gO (gP,gG,gQ,gH,gR) = {
1220+ func gS (eR,gK) = {
1221+ let gT = ((fraction(gQ, gR, a) * gG[gK]) * gH)
1222+ (eR :+ toString((parseIntValue(gP[gK]) + gT)))
12231223 }
12241224
1225- let fb = {
1226- let eS = cJ
1227- let eT = size(eS)
1228- let eU = nil
1229- func eV (eW,eX) = if ((eX >= eT))
1230- then eW
1231- else gR(eW, eS[eX])
1232-
1233- func eY (eW,eX) = if ((eX >= eT))
1234- then eW
1225+ let fc = {
1226+ let eT = cK
1227+ let eU = size(eT)
1228+ let eV = nil
1229+ func eW (eX,eY) = if ((eY >= eU))
1230+ then eX
1231+ else gS(eX, eT[eY])
1232+
1233+ func eZ (eX,eY) = if ((eY >= eU))
1234+ then eX
12351235 else throw("List size exceeds 6")
12361236
1237- eY(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6)
1237+ eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
12381238 }
1239- makeString(fb, "_")
1240- }
1241-
1242-
1243-func gT (gF,gP,gG,gQ) = {
1244- func gR (eQ,gJ) = {
1245- let gS = ((fraction(gP, gQ, a) * gF[gJ]) * gG)
1246- $Tuple2((eQ._1 :+ gS), (eQ._2 + gS))
1239+ makeString(fc, "_")
1240+ }
1241+
1242+
1243+func gU (gG,gQ,gH,gR) = {
1244+ func gS (eR,gK) = {
1245+ let gT = ((fraction(gQ, gR, a) * gG[gK]) * gH)
1246+ $Tuple2((eR._1 :+ gT), (eR._2 + gT))
12471247 }
12481248
1249- let eS = cJ
1250- let eT = size(eS)
1251- let eU = $Tuple2(nil, 0)
1252- func eV (eW,eX) = if ((eX >= eT))
1253- then eW
1254- else gR(eW, eS[eX])
1255-
1256- func eY (eW,eX) = if ((eX >= eT))
1257- then eW
1249+ let eT = cK
1250+ let eU = size(eT)
1251+ let eV = $Tuple2(nil, 0)
1252+ func eW (eX,eY) = if ((eY >= eU))
1253+ then eX
1254+ else gS(eX, eT[eY])
1255+
1256+ func eZ (eX,eY) = if ((eY >= eU))
1257+ then eX
12581258 else throw("List size exceeds 6")
12591259
1260- eY(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6)
1261- }
1262-
1263-
1264-func gU (gV,gW,gX,gY) = {
1265- let gZ = gX._1
1266- let ha = gX._2
1267- if ((ha == 0))
1268- then $Tuple2(makeString(gV, "_"), makeString(gW, "_"))
1269- else if ((gY >= ha))
1260+ eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
1261+ }
1262+
1263+
1264+func gV (gW,gX,gY,gZ) = {
1265+ let ha = gY._1
1266+ let hb = gY._2
1267+ if ((hb == 0))
1268+ then $Tuple2(makeString(gW, "_"), makeString(gX, "_"))
1269+ else if ((gZ >= hb))
12701270 then {
1271- func hb (eQ,gJ) = (eQ :+ toString((parseIntValue(gV[gJ]) + gZ[gJ])))
1272-
1273- let fb = {
1274- let eS = cJ
1275- let eT = size(eS)
1276- let eU = nil
1277- func eV (eW,eX) = if ((eX >= eT))
1278- then eW
1279- else hb(eW, eS[eX])
1280-
1281- func eY (eW,eX) = if ((eX >= eT))
1282- then eW
1271+ func hc (eR,gK) = (eR :+ toString((parseIntValue(gW[gK]) + ha[gK])))
1272+
1273+ let fc = {
1274+ let eT = cK
1275+ let eU = size(eT)
1276+ let eV = nil
1277+ func eW (eX,eY) = if ((eY >= eU))
1278+ then eX
1279+ else hc(eX, eT[eY])
1280+
1281+ func eZ (eX,eY) = if ((eY >= eU))
1282+ then eX
12831283 else throw("List size exceeds 6")
12841284
1285- eY(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6)
1285+ eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
12861286 }
1287- $Tuple2(makeString(fb, "_"), makeString(gW, "_"))
1287+ $Tuple2(makeString(fc, "_"), makeString(gX, "_"))
12881288 }
12891289 else {
1290- func hc (eQ,gJ) = {
1291- let hd = fraction(gZ[gJ], gY, ha)
1292- $Tuple2((eQ._1 :+ toString((parseIntValue(gV[gJ]) + hd))), (eQ._2 :+ toString(((parseIntValue(gW[gJ]) + gZ[gJ]) - hd))))
1290+ func hd (eR,gK) = {
1291+ let he = fraction(ha[gK], gZ, hb)
1292+ $Tuple2((eR._1 :+ toString((parseIntValue(gW[gK]) + he))), (eR._2 :+ toString(((parseIntValue(gX[gK]) + ha[gK]) - he))))
12931293 }
12941294
1295- let fb = {
1296- let eS = cJ
1297- let eT = size(eS)
1298- let eU = $Tuple2(nil, nil)
1299- func eV (eW,eX) = if ((eX >= eT))
1300- then eW
1301- else hc(eW, eS[eX])
1302-
1303- func eY (eW,eX) = if ((eX >= eT))
1304- then eW
1295+ let fc = {
1296+ let eT = cK
1297+ let eU = size(eT)
1298+ let eV = $Tuple2(nil, nil)
1299+ func eW (eX,eY) = if ((eY >= eU))
1300+ then eX
1301+ else hd(eX, eT[eY])
1302+
1303+ func eZ (eX,eY) = if ((eY >= eU))
1304+ then eX
13051305 else throw("List size exceeds 6")
13061306
1307- eY(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6)
1307+ eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
13081308 }
1309- $Tuple2(makeString(fb._1, "_"), makeString(fb._2, "_"))
1309+ $Tuple2(makeString(fc._1, "_"), makeString(fc._2, "_"))
13101310 }
13111311 }
13121312
13131313
1314-func he (hf) = if ((hf >= toBigInt(0)))
1315- then hf
1316- else -(hf)
1317-
1318-
1319-let hg = [[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]]
1320-
1321-func hh (dz,hi) = {
1322- let hj = toInt((dz % ei))
1323- let hk = if ((hi[0] > hj))
1314+func hf (hg) = if ((hg >= toBigInt(0)))
1315+ then hg
1316+ else -(hg)
1317+
1318+
1319+let hh = [[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]]
1320+
1321+func hi (dA,hj) = {
1322+ let hk = toInt((dA % ej))
1323+ let hl = if ((hj[0] > hk))
13241324 then "A"
1325- else if ((hi[1] > hj))
1325+ else if ((hj[1] > hk))
13261326 then "B"
1327- else if ((hi[2] > hj))
1327+ else if ((hj[2] > hk))
13281328 then "C"
1329- else if ((hi[3] > hj))
1329+ else if ((hj[3] > hk))
13301330 then "D"
1331- else if ((hi[4] > hj))
1331+ else if ((hj[4] > hk))
13321332 then "E"
13331333 else "F"
1334- hk
1335- }
1336-
1337-
1338-func hl (hm,hn) = {
1339- let ho = hg[hn]
1340- func hp (eQ,eR) = $Tuple2((((((eQ._1 + hh(eQ._2, ho)) + hh((eQ._2 / ei), ho)) + hh((eQ._2 / ej), ho)) + hh((eQ._2 / ek), ho)) + hh((eQ._2 / el), ho)), (eQ._2 / em))
1341-
1342- let gu = {
1343- let eS = [1, 2, 3, 4, 5]
1344- let eT = size(eS)
1345- let eU = $Tuple2("", (hm / eh))
1346- func eV (eW,eX) = if ((eX >= eT))
1347- then eW
1348- else hp(eW, eS[eX])
1349-
1350- func eY (eW,eX) = if ((eX >= eT))
1351- then eW
1334+ hl
1335+ }
1336+
1337+
1338+func hm (hn,ho) = {
1339+ let hp = hh[ho]
1340+ func hq (eR,eS) = $Tuple2((((((eR._1 + hi(eR._2, hp)) + hi((eR._2 / ej), hp)) + hi((eR._2 / ek), hp)) + hi((eR._2 / el), hp)) + hi((eR._2 / em), hp)), (eR._2 / en))
1341+
1342+ let gv = {
1343+ let eT = [1, 2, 3, 4, 5]
1344+ let eU = size(eT)
1345+ let eV = $Tuple2("", (hn / ei))
1346+ func eW (eX,eY) = if ((eY >= eU))
1347+ then eX
1348+ else hq(eX, eT[eY])
1349+
1350+ func eZ (eX,eY) = if ((eY >= eU))
1351+ then eX
13521352 else throw("List size exceeds 5")
13531353
1354- eY(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5)
1354+ eZ(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5)
13551355 }
1356- gu._1
1357- }
1358-
1359-
1360-let hq = [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]
1361-
1362-let hr = ["A", "B", "C", "D", "E", "F"]
1363-
1364-func hs (ht,gG) = {
1365- func hu (eQ,dx) = {
1366- let fA = eQ._2
1367- let hv = parseIntValue(dx)
1368- let hf = if ((hv == 0))
1356+ gv._1
1357+ }
1358+
1359+
1360+let hr = [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]
1361+
1362+let hs = ["A", "B", "C", "D", "E", "F"]
1363+
1364+func ht (hu,gH) = {
1365+ func hv (eR,dy) = {
1366+ let fB = eR._2
1367+ let hw = parseIntValue(dy)
1368+ let hg = if ((hw == 0))
13691369 then 0
1370- else if ((hv >= (4 * gG)))
1371- then (hv / gG)
1372- else if ((hv > (3 * gG)))
1370+ else if ((hw >= (4 * gH)))
1371+ then (hw / gH)
1372+ else if ((hw > (3 * gH)))
13731373 then 3
1374- else (((hv - 1) / gG) + 1)
1375- $Tuple3((eQ._1 :+ hf), (eQ._2 + 1), (eQ._3 + hf))
1374+ else (((hw - 1) / gH) + 1)
1375+ $Tuple3((eR._1 :+ hg), (eR._2 + 1), (eR._3 + hg))
13761376 }
13771377
1378- let gu = {
1379- let eS = ht
1380- let eT = size(eS)
1381- let eU = $Tuple3(nil, 0, 0)
1382- func eV (eW,eX) = if ((eX >= eT))
1383- then eW
1384- else hu(eW, eS[eX])
1385-
1386- func eY (eW,eX) = if ((eX >= eT))
1387- then eW
1378+ let gv = {
1379+ let eT = hu
1380+ let eU = size(eT)
1381+ let eV = $Tuple3(nil, 0, 0)
1382+ func eW (eX,eY) = if ((eY >= eU))
1383+ then eX
1384+ else hv(eX, eT[eY])
1385+
1386+ func eZ (eX,eY) = if ((eY >= eU))
1387+ then eX
13881388 else throw("List size exceeds 6")
13891389
1390- eY(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6)
1390+ eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
13911391 }
1392- let hw = gu._1
1393- let hx = value(indexOf(hw, max(hw)))
1394- let hy = (gu._3 - 25)
1395- func hz (eQ,cZ) = {
1396- let dE = if ((cZ == hx))
1397- then (hw[cZ] - hy)
1398- else hw[cZ]
1399- let dP = if ((dE == 0))
1392+ let hx = gv._1
1393+ let hy = value(indexOf(hx, max(hx)))
1394+ let hz = (gv._3 - 25)
1395+ func hA (eR,da) = {
1396+ let dF = if ((da == hy))
1397+ then (hx[da] - hz)
1398+ else hx[da]
1399+ let dQ = if ((dF == 0))
14001400 then nil
1401- else split(drop(toString(pow(10, 0, dE, 0, 0, DOWN)), 1), "")
1402- let fZ = hr[cZ]
1403- func hA (hB,hC) = (hB :+ fZ)
1404-
1405- let hD = {
1406- let eS = dP
1407- let eT = size(eS)
1408- let eU = nil
1409- func hE (eW,eX) = if ((eX >= eT))
1410- then eW
1411- else hA(eW, eS[eX])
1412-
1413- func hF (eW,eX) = if ((eX >= eT))
1414- then eW
1401+ else split(drop(toString(pow(10, 0, dF, 0, 0, DOWN)), 1), "")
1402+ let ga = hs[da]
1403+ func hB (hC,hD) = (hC :+ ga)
1404+
1405+ let hE = {
1406+ let eT = dQ
1407+ let eU = size(eT)
1408+ let eV = nil
1409+ func hF (eX,eY) = if ((eY >= eU))
1410+ then eX
1411+ else hB(eX, eT[eY])
1412+
1413+ func hG (eX,eY) = if ((eY >= eU))
1414+ then eX
14151415 else throw("List size exceeds 25")
14161416
1417- hF(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(eU, 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)
1418- }
1419- (eQ ++ hD)
1417+ hG(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(eV, 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)
1418+ }
1419+ (eR ++ hE)
14201420 }
14211421
1422- let fb = {
1423- let eS = cJ
1424- let eT = size(eS)
1425- let eU = nil
1426- func hE (eW,eX) = if ((eX >= eT))
1427- then eW
1428- else hz(eW, eS[eX])
1429-
1430- func hF (eW,eX) = if ((eX >= eT))
1431- then eW
1422+ let fc = {
1423+ let eT = cK
1424+ let eU = size(eT)
1425+ let eV = nil
1426+ func hF (eX,eY) = if ((eY >= eU))
1427+ then eX
1428+ else hA(eX, eT[eY])
1429+
1430+ func hG (eX,eY) = if ((eY >= eU))
1431+ then eX
14321432 else throw("List size exceeds 6")
14331433
1434- hF(hE(hE(hE(hE(hE(hE(eU, 0), 1), 2), 3), 4), 5), 6)
1434+ hG(hF(hF(hF(hF(hF(hF(eV, 0), 1), 2), 3), 4), 5), 6)
14351435 }
1436- func hG (eQ,fA) = (eQ + fb[fA])
1437-
1438- let eS = hq
1439- let eT = size(eS)
1440- let eU = ""
1441- func hH (eW,eX) = if ((eX >= eT))
1442- then eW
1443- else hG(eW, eS[eX])
1444-
1445- func hI (eW,eX) = if ((eX >= eT))
1446- then eW
1436+ func hH (eR,fB) = (eR + fc[fB])
1437+
1438+ let eT = hr
1439+ let eU = size(eT)
1440+ let eV = ""
1441+ func hI (eX,eY) = if ((eY >= eU))
1442+ then eX
1443+ else hH(eX, eT[eY])
1444+
1445+ func hJ (eX,eY) = if ((eY >= eU))
1446+ then eX
14471447 else throw("List size exceeds 25")
14481448
1449- hI(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(eU, 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)
1450- }
1451-
1452-
1453-func hJ (hK) = {
1454- let gt = split(valueOrElse(getString(hK), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1455-[toString(valueOrElse(parseInt(gt[bh]), 0)), if ((size(split(gt[bi], "_")) == aF))
1456- then gt[bi]
1457- else "0_0_0_0_0_0", if ((size(split(gt[bj], "_")) == aF))
1458- then gt[bj]
1459- else "0_0_0_0_0_0", gt[bk]]
1460- }
1461-
1462-
1463-func hL (hM) = {
1464- let fo = split(hM, "_")
1465- ((aI * (parseIntValue(fo[1]) + 1)) * parseIntValue(fo[0]))
1466- }
1467-
1468-
1469-func hN (hO) = {
1470- let hP = hO[bb]
1471- func hQ (eQ,hR) = (eQ + parseIntValue(hR))
1472-
1473- func hS (eQ,hR) = {
1474- let cZ = eQ._1
1475- let eJ = (((parseIntValue(hR) + aX) - 1) / aX)
1476- $Tuple2((cZ + 1), (eQ._2 + (eJ * cD)))
1449+ hJ(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(eV, 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)
1450+ }
1451+
1452+
1453+func hK (hL) = {
1454+ let gu = split(valueOrElse(getString(hL), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1455+[toString(valueOrElse(parseInt(gu[bh]), 0)), if ((size(split(gu[bi], "_")) == aF))
1456+ then gu[bi]
1457+ else "0_0_0_0_0_0", if ((size(split(gu[bj], "_")) == aF))
1458+ then gu[bj]
1459+ else "0_0_0_0_0_0", gu[bk]]
1460+ }
1461+
1462+
1463+func hM (hN) = {
1464+ let fp = split(hN, "_")
1465+ ((aI * (parseIntValue(fp[1]) + 1)) * parseIntValue(fp[0]))
1466+ }
1467+
1468+
1469+func hO (hP) = {
1470+ let hQ = hP[bb]
1471+ func hR (eR,hS) = (eR + parseIntValue(hS))
1472+
1473+ func hT (eR,hS) = {
1474+ let da = eR._1
1475+ let eK = (((parseIntValue(hS) + aX) - 1) / aX)
1476+ $Tuple2((da + 1), (eR._2 + (eK * cE)))
14771477 }
14781478
1479- let hT = {
1480- let eS = split(hO[aZ], "_")
1481- let eT = size(eS)
1482- let eU = 0
1483- func eV (eW,eX) = if ((eX >= eT))
1484- then eW
1485- else hQ(eW, eS[eX])
1486-
1487- func eY (eW,eX) = if ((eX >= eT))
1488- then eW
1479+ let hU = {
1480+ let eT = split(hP[aZ], "_")
1481+ let eU = size(eT)
1482+ let eV = 0
1483+ func eW (eX,eY) = if ((eY >= eU))
1484+ then eX
1485+ else hR(eX, eT[eY])
1486+
1487+ func eZ (eX,eY) = if ((eY >= eU))
1488+ then eX
14891489 else throw("List size exceeds 6")
14901490
1491- eY(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6)
1491+ eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
14921492 }
1493- let hU = {
1494- let eS = split(hO[ba], "_")
1495- let eT = size(eS)
1496- let eU = 0
1497- func hE (eW,eX) = if ((eX >= eT))
1498- then eW
1499- else hQ(eW, eS[eX])
1500-
1501- func hF (eW,eX) = if ((eX >= eT))
1502- then eW
1493+ let hV = {
1494+ let eT = split(hP[ba], "_")
1495+ let eU = size(eT)
1496+ let eV = 0
1497+ func hF (eX,eY) = if ((eY >= eU))
1498+ then eX
1499+ else hR(eX, eT[eY])
1500+
1501+ func hG (eX,eY) = if ((eY >= eU))
1502+ then eX
15031503 else throw("List size exceeds 6")
15041504
1505- hF(hE(hE(hE(hE(hE(hE(eU, 0), 1), 2), 3), 4), 5), 6)
1505+ hG(hF(hF(hF(hF(hF(hF(eV, 0), 1), 2), 3), 4), 5), 6)
15061506 }
1507- let hV = if ((hP == ""))
1507+ let hW = if ((hQ == ""))
15081508 then 0
1509- else ( let eS = split_4C(hP, "_")
1510- let eT = size(eS)
1511- let eU = $Tuple2(0, 0)
1512- func hH (eW,eX) = if ((eX >= eT))
1513- then eW
1514- else hS(eW, eS[eX])
1515-
1516- func hI (eW,eX) = if ((eX >= eT))
1517- then eW
1509+ else ( let eT = split_4C(hQ, "_")
1510+ let eU = size(eT)
1511+ let eV = $Tuple2(0, 0)
1512+ func hI (eX,eY) = if ((eY >= eU))
1513+ then eX
1514+ else hT(eX, eT[eY])
1515+
1516+ func hJ (eX,eY) = if ((eY >= eU))
1517+ then eX
15181518 else throw("List size exceeds 50")
15191519
1520- hI(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(eU, 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
1521- ((hT + hU) + hV)
1522- }
1523-
1524-
1525-func hW (hX,hY,hZ) = {
1526- let hM = ((toString(hY) + "_") + toString(hZ))
1527- let ia = hL(hM)
1528- let ib = valueOrElse(getString(hX), (hM + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1529- let ic = split_4C(ib, ":")
1530- let id = hN(ic)
1531- let ie = if ((5 > size(ic)))
1532- then makeString(["0", toString(id), toString((ia - id)), toString(ia)], "_")
1520+ hJ(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(eV, 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
1521+ ((hU + hV) + hW)
1522+ }
1523+
1524+
1525+func hX (hY,hZ,ia) = {
1526+ let hN = ((toString(hZ) + "_") + toString(ia))
1527+ let ib = hM(hN)
1528+ let ic = valueOrElse(getString(hY), (hN + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1529+ let id = split_4C(ic, ":")
1530+ let ie = hO(id)
1531+ let if = if ((5 > size(id)))
1532+ then makeString(["0", toString(ie), toString((ib - ie)), toString(ib)], "_")
15331533 else {
1534- let if = split(ic[bc], "_")
1535- let ig = parseIntValue(if[bd])
1536- let ih = if ((size(if) > 1))
1537- then parseIntValue(if[be])
1538- else id
1539- makeString([toString(ig), toString(ih), toString(((ia - ig) - ih)), toString(ia)], "_")
1540- }
1541-[ic[aY], if ((size(split(ic[aZ], "_")) == aF))
1542- then ic[aZ]
1543- else "0_0_0_0_0_0", if ((size(split(ic[ba], "_")) == aF))
1544- then ic[ba]
1545- else "0_0_0_0_0_0", ic[bb], ie]
1546- }
1547-
1548-
1549-func ii (hO) = {
1550- let ij = hN(hO)
1551- let ik = parseIntValue(split(hO[bc], "_")[bd])
1552- ((hL(hO[aY]) - ij) - ik)
1553- }
1554-
1555-
1556-func il (im,hO,in) = if ((size(im) != 3))
1534+ let ig = split(id[bc], "_")
1535+ let ih = parseIntValue(ig[bd])
1536+ let ii = if ((size(ig) > 1))
1537+ then parseIntValue(ig[be])
1538+ else ie
1539+ makeString([toString(ih), toString(ii), toString(((ib - ih) - ii)), toString(ib)], "_")
1540+ }
1541+[id[aY], if ((size(split(id[aZ], "_")) == aF))
1542+ then id[aZ]
1543+ else "0_0_0_0_0_0", if ((size(split(id[ba], "_")) == aF))
1544+ then id[ba]
1545+ else "0_0_0_0_0_0", id[bb], if]
1546+ }
1547+
1548+
1549+func ij (hP) = {
1550+ let ik = hO(hP)
1551+ let il = parseIntValue(split(hP[bc], "_")[bd])
1552+ ((hM(hP[aY]) - ik) - il)
1553+ }
1554+
1555+
1556+func im (in,hP,io) = if ((size(in) != 3))
15571557 then throw("cargoListStr should contain exactly 2 ':' separators")
15581558 else {
1559- let io = split(im[0], "_")
1560- let ip = split(im[1], "_")
1561- let iq = if ((im[2] == ""))
1559+ let ip = split(in[0], "_")
1560+ let iq = split(in[1], "_")
1561+ let ir = if ((in[2] == ""))
15621562 then nil
1563- else split_4C(im[2], "_")
1564- if ((size(io) != aF))
1563+ else split_4C(in[2], "_")
1564+ if ((size(ip) != aF))
15651565 then throw("All 6 resources should be passed")
1566- else if ((size(ip) != aF))
1566+ else if ((size(iq) != aF))
15671567 then throw("All 6 materials should be passed")
15681568 else {
1569- let gY = ii(hO)
1570- let ir = split(hO[aZ], "_")
1571- let is = split(hO[ba], "_")
1572- let it = if ((hO[bb] == ""))
1569+ let gZ = ij(hP)
1570+ let is = split(hP[aZ], "_")
1571+ let it = split(hP[ba], "_")
1572+ let iu = if ((hP[bb] == ""))
15731573 then nil
1574- else split_4C(hO[bb], "_")
1575- let gW = split(in[bi], "_")
1576- let iu = split(in[bj], "_")
1577- let iv = if ((in[bk] == ""))
1574+ else split_4C(hP[bb], "_")
1575+ let gX = split(io[bi], "_")
1576+ let iv = split(io[bj], "_")
1577+ let iw = if ((io[bk] == ""))
15781578 then nil
1579- else split_4C(in[bk], "_")
1580- func iw (eQ,hR) = {
1581- let gJ = eQ._1
1582- let ix = parseIntValue(hR)
1583- let iy = parseIntValue(ir[gJ])
1584- let iz = parseIntValue(gW[gJ])
1585- if ((ix == 0))
1586- then $Tuple4((gJ + 1), (eQ._2 :+ ir[gJ]), (eQ._3 :+ gW[gJ]), eQ._4)
1587- else if ((ix > 0))
1588- then if ((ix > iz))
1589- then throw((((("Attempt to take " + hR) + " from backpack, but only ") + toString(iz)) + " available"))
1590- else $Tuple4((gJ + 1), (eQ._2 :+ toString((iy + ix))), (eQ._3 :+ toString((iz - ix))), (eQ._4 + ix))
1591- else if ((-(ix) > iy))
1592- then throw((((("Attempt to take " + toString(-(ix))) + " from warehouse, but only ") + toString(iy)) + " available"))
1593- else $Tuple4((gJ + 1), (eQ._2 :+ toString((iy + ix))), (eQ._3 :+ toString((iz - ix))), (eQ._4 + ix))
1579+ else split_4C(io[bk], "_")
1580+ func ix (eR,hS) = {
1581+ let gK = eR._1
1582+ let iy = parseIntValue(hS)
1583+ let iz = parseIntValue(is[gK])
1584+ let iA = parseIntValue(gX[gK])
1585+ if ((iy == 0))
1586+ then $Tuple4((gK + 1), (eR._2 :+ is[gK]), (eR._3 :+ gX[gK]), eR._4)
1587+ else if ((iy > 0))
1588+ then if ((iy > iA))
1589+ then throw((((("Attempt to take " + hS) + " from backpack, but only ") + toString(iA)) + " available"))
1590+ else $Tuple4((gK + 1), (eR._2 :+ toString((iz + iy))), (eR._3 :+ toString((iA - iy))), (eR._4 + iy))
1591+ else if ((-(iy) > iz))
1592+ then throw((((("Attempt to take " + toString(-(iy))) + " from warehouse, but only ") + toString(iz)) + " available"))
1593+ else $Tuple4((gK + 1), (eR._2 :+ toString((iz + iy))), (eR._3 :+ toString((iA - iy))), (eR._4 + iy))
15941594 }
15951595
1596- let fb = {
1597- let eS = io
1598- let eT = size(eS)
1599- let eU = $Tuple4(0, nil, nil, 0)
1600- func eV (eW,eX) = if ((eX >= eT))
1601- then eW
1602- else iw(eW, eS[eX])
1603-
1604- func eY (eW,eX) = if ((eX >= eT))
1605- then eW
1596+ let fc = {
1597+ let eT = ip
1598+ let eU = size(eT)
1599+ let eV = $Tuple4(0, nil, nil, 0)
1600+ func eW (eX,eY) = if ((eY >= eU))
1601+ then eX
1602+ else ix(eX, eT[eY])
1603+
1604+ func eZ (eX,eY) = if ((eY >= eU))
1605+ then eX
16061606 else throw("List size exceeds 6")
16071607
1608- eY(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6)
1608+ eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
16091609 }
1610- func iA (eQ,hR) = {
1611- let gJ = eQ._1
1612- let ix = parseIntValue(hR)
1613- let iB = parseIntValue(is[gJ])
1614- let iC = parseIntValue(iu[gJ])
1615- if ((ix == 0))
1616- then $Tuple4((gJ + 1), (eQ._2 :+ is[gJ]), (eQ._3 :+ iu[gJ]), eQ._4)
1617- else if ((ix > 0))
1618- then if ((ix > iC))
1619- then throw((((("Attempt to take " + hR) + " from backpack, but only ") + toString(iC)) + " available"))
1620- else $Tuple4((gJ + 1), (eQ._2 :+ toString((iB + ix))), (eQ._3 :+ toString((iC - ix))), (eQ._4 + ix))
1621- else if ((-(ix) > iB))
1622- then throw((((("Attempt to take " + toString(-(ix))) + " from warehouse, but only ") + toString(iB)) + " available"))
1623- else $Tuple4((gJ + 1), (eQ._2 :+ toString((iB + ix))), (eQ._3 :+ toString((iC - ix))), (eQ._4 + ix))
1610+ func iB (eR,hS) = {
1611+ let gK = eR._1
1612+ let iy = parseIntValue(hS)
1613+ let iC = parseIntValue(it[gK])
1614+ let iD = parseIntValue(iv[gK])
1615+ if ((iy == 0))
1616+ then $Tuple4((gK + 1), (eR._2 :+ it[gK]), (eR._3 :+ iv[gK]), eR._4)
1617+ else if ((iy > 0))
1618+ then if ((iy > iD))
1619+ then throw((((("Attempt to take " + hS) + " from backpack, but only ") + toString(iD)) + " available"))
1620+ else $Tuple4((gK + 1), (eR._2 :+ toString((iC + iy))), (eR._3 :+ toString((iD - iy))), (eR._4 + iy))
1621+ else if ((-(iy) > iC))
1622+ then throw((((("Attempt to take " + toString(-(iy))) + " from warehouse, but only ") + toString(iC)) + " available"))
1623+ else $Tuple4((gK + 1), (eR._2 :+ toString((iC + iy))), (eR._3 :+ toString((iD - iy))), (eR._4 + iy))
16241624 }
16251625
1626- let gp = {
1627- let eS = ip
1628- let eT = size(eS)
1629- let eU = $Tuple4(0, nil, nil, fb._4)
1630- func hE (eW,eX) = if ((eX >= eT))
1631- then eW
1632- else iA(eW, eS[eX])
1633-
1634- func hF (eW,eX) = if ((eX >= eT))
1635- then eW
1626+ let gq = {
1627+ let eT = iq
1628+ let eU = size(eT)
1629+ let eV = $Tuple4(0, nil, nil, fc._4)
1630+ func hF (eX,eY) = if ((eY >= eU))
1631+ then eX
1632+ else iB(eX, eT[eY])
1633+
1634+ func hG (eX,eY) = if ((eY >= eU))
1635+ then eX
16361636 else throw("List size exceeds 6")
16371637
1638- hF(hE(hE(hE(hE(hE(hE(eU, 0), 1), 2), 3), 4), 5), 6)
1638+ hG(hF(hF(hF(hF(hF(hF(eV, 0), 1), 2), 3), 4), 5), 6)
16391639 }
1640- func iD (eQ,hR) = {
1641- let gJ = eQ._1
1642- let ix = parseIntValue(hR)
1643- let iE = if ((size(it) > gJ))
1644- then parseIntValue(it[gJ])
1640+ func iE (eR,hS) = {
1641+ let gK = eR._1
1642+ let iy = parseIntValue(hS)
1643+ let iF = if ((size(iu) > gK))
1644+ then parseIntValue(iu[gK])
16451645 else 0
1646- let iF = if ((size(iv) > gJ))
1647- then parseIntValue(iv[gJ])
1646+ let iG = if ((size(iw) > gK))
1647+ then parseIntValue(iw[gK])
16481648 else 0
1649- if ((ix == 0))
1650- then $Tuple4((gJ + 1), (eQ._2 :+ toString(iE)), (eQ._3 :+ toString(iF)), eQ._4)
1651- else if ((ix > 0))
1652- then if ((ix > iF))
1653- then throw((((("Attempt to take " + hR) + " from backpack, but only ") + toString(iF)) + " available"))
1649+ if ((iy == 0))
1650+ then $Tuple4((gK + 1), (eR._2 :+ toString(iF)), (eR._3 :+ toString(iG)), eR._4)
1651+ else if ((iy > 0))
1652+ then if ((iy > iG))
1653+ then throw((((("Attempt to take " + hS) + " from backpack, but only ") + toString(iG)) + " available"))
16541654 else {
1655- let fS = (eG((iE + ix), aX) - eG(iE, aX))
1656- $Tuple4((gJ + 1), (eQ._2 :+ toString((iE + ix))), (eQ._3 :+ toString((iF - ix))), (eQ._4 + fS))
1655+ let fT = (eH((iF + iy), aX) - eH(iF, aX))
1656+ $Tuple4((gK + 1), (eR._2 :+ toString((iF + iy))), (eR._3 :+ toString((iG - iy))), (eR._4 + fT))
16571657 }
1658- else if ((-(ix) > iE))
1659- then throw((((("Attempt to take " + toString(-(ix))) + " from warehouse, but only ") + toString(iE)) + " available"))
1658+ else if ((-(iy) > iF))
1659+ then throw((((("Attempt to take " + toString(-(iy))) + " from warehouse, but only ") + toString(iF)) + " available"))
16601660 else {
1661- let fS = (eG((iE + ix), aX) - eG(iE, aX))
1662- $Tuple4((gJ + 1), (eQ._2 :+ toString((iE + ix))), (eQ._3 :+ toString((iF - ix))), (eQ._4 + fS))
1661+ let fT = (eH((iF + iy), aX) - eH(iF, aX))
1662+ $Tuple4((gK + 1), (eR._2 :+ toString((iF + iy))), (eR._3 :+ toString((iG - iy))), (eR._4 + fT))
16631663 }
16641664 }
16651665
1666- let gt = if ((size(iq) != 0))
1666+ let gu = if ((size(ir) != 0))
16671667 then {
1668- let eS = iq
1669- let eT = size(eS)
1670- let eU = $Tuple4(0, nil, nil, gp._4)
1671- func hH (eW,eX) = if ((eX >= eT))
1672- then eW
1673- else iD(eW, eS[eX])
1674-
1675- func hI (eW,eX) = if ((eX >= eT))
1676- then eW
1668+ let eT = ir
1669+ let eU = size(eT)
1670+ let eV = $Tuple4(0, nil, nil, gq._4)
1671+ func hI (eX,eY) = if ((eY >= eU))
1672+ then eX
1673+ else iE(eX, eT[eY])
1674+
1675+ func hJ (eX,eY) = if ((eY >= eU))
1676+ then eX
16771677 else throw("List size exceeds 50")
16781678
1679- hI(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(hH(eU, 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)
1679+ hJ(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(eV, 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)
16801680 }
1681- else $Tuple4(0, it, iv, gp._4)
1682- let iG = gt._4
1683- if ((iG > gY))
1684- then throw((((("Attempt to put total " + toString(iG)) + " stuff, but only ") + toString(gY)) + " warehouse space left"))
1685- else $Tuple7(makeString(fb._2, "_"), makeString(gp._2, "_"), makeString_2C(gt._2, "_"), makeString(fb._3, "_"), makeString(gp._3, "_"), makeString_2C(gt._3, "_"), iG)
1681+ else $Tuple4(0, iu, iw, gq._4)
1682+ let iH = gu._4
1683+ if ((iH > gZ))
1684+ then throw((((("Attempt to put total " + toString(iH)) + " stuff, but only ") + toString(gZ)) + " warehouse space left"))
1685+ else $Tuple7(makeString(fc._2, "_"), makeString(gq._2, "_"), makeString_2C(gu._2, "_"), makeString(fc._3, "_"), makeString(gq._3, "_"), makeString_2C(gu._3, "_"), iH)
16861686 }
16871687 }
16881688
16891689
1690-func iH (iI,iJ) = {
1691- let bL = toString(iI)
1692- let iK = he(toBigInt(iJ))
1693- let iL = valueOrElse(getInteger(eo()), (en + 1))
1694- let es = toString(iL)
1695- let hn = toInt((iK % eh))
1696- let gM = hl(iK, hn)
1697- let ds = aP[hn]
1698- let iM = Issue(eF(es, "S"), makeString([es, "S", gM, ds], "_"), 1, 0, false)
1699- let bp = calculateAssetId(iM)
1700- let iN = toBase58String(bp)
1701- $Tuple2([IntegerEntry(eo(), (iL + 1)), iM, StringEntry(er(es), iN), StringEntry(bo(iN), bL), StringEntry(eu(es), bL), IntegerEntry(by(iN), 0), IntegerEntry(et(iN, bL), 0), ScriptTransfer(iI, 1, bp)], $Tuple2(iN, ds))
1702- }
1703-
1704-
1705-func iO (bL,iP,iQ) = if (!(sigVerify_8Kb(iP, iQ, dY)))
1690+func iI (iJ,iK) = {
1691+ let bL = toString(iJ)
1692+ let iL = hf(toBigInt(iK))
1693+ let iM = valueOrElse(getInteger(ep()), (eo + 1))
1694+ let et = toString(iM)
1695+ let ho = toInt((iL % ei))
1696+ let gN = hm(iL, ho)
1697+ let dt = aP[ho]
1698+ let iN = Issue(eG(et, "S"), makeString([et, "S", gN, dt], "_"), 1, 0, false)
1699+ let bp = calculateAssetId(iN)
1700+ let iO = toBase58String(bp)
1701+ $Tuple2([IntegerEntry(ep(), (iM + 1)), iN, StringEntry(es(et), iO), StringEntry(bo(iO), bL), StringEntry(ev(et), bL), IntegerEntry(by(iO), 0), IntegerEntry(eu(iO, bL), 0), ScriptTransfer(iJ, 1, bp)], $Tuple2(iO, dt))
1702+ }
1703+
1704+
1705+func iP (bL,iQ,iR) = if (!(sigVerify_8Kb(iQ, iR, dZ)))
17061706 then throw("signature does not match")
17071707 else {
1708- let fo = split_4C(toUtf8String(iP), ";")
1709- let iR = split_4C(fo[0], "|")
1710- let iS = split(iR[eB], "_")
1711- let iT = parseIntValue(iS[0])
1712- let iU = parseIntValue(iS[1])
1713- let iV = split(fo[1], ":")
1714- let iW = iV[0]
1715- let iX = parseIntValue(iR[eC])
1716- if (if ((iX > (lastBlock.timestamp + ea)))
1708+ let fp = split_4C(toUtf8String(iQ), ";")
1709+ let iS = split_4C(fp[0], "|")
1710+ let iT = split(iS[eC], "_")
1711+ let iU = parseIntValue(iT[0])
1712+ let iV = parseIntValue(iT[1])
1713+ let iW = split(fp[1], ":")
1714+ let iX = iW[0]
1715+ let iY = parseIntValue(iS[eD])
1716+ if (if ((iY > (lastBlock.timestamp + eb)))
17171717 then true
1718- else ((lastBlock.timestamp - ea) > iX))
1719- then throw(((("signature outdated: logTime=" + toString(iX)) + ", bcTime=") + toString(lastBlock.timestamp)))
1718+ else ((lastBlock.timestamp - eb) > iY))
1719+ then throw(((("signature outdated: logTime=" + toString(iY)) + ", bcTime=") + toString(lastBlock.timestamp)))
17201720 else {
1721- let iY = iV[1]
1722- let iZ = valueOrElse(getString(dK(bL)), "")
1723- if ((iZ != iY))
1724- then throw(((("Tx ids don't match! In state: " + iZ) + ", in msg: ") + iY))
1721+ let iZ = iW[1]
1722+ let ja = valueOrElse(getString(dL(bL)), "")
1723+ if ((ja != iZ))
1724+ then throw(((("Tx ids don't match! In state: " + ja) + ", in msg: ") + iZ))
17251725 else {
17261726 let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked")
1727- let ja = z(A)
1728- let jb = ag(valueOrElse(getInteger(D(A)), 0))
1729- let jc = valueOrElse(getInteger(ja), jb)
1730- if ((jc != iT))
1731- then throw(((("oldHealth=" + toString(jc)) + " from state does not match one from flight log=") + toString(iT)))
1732- else if ((0 >= iT))
1727+ let jb = z(A)
1728+ let jc = ag(valueOrElse(getInteger(D(A)), 0))
1729+ let jd = valueOrElse(getInteger(jb), jc)
1730+ if ((jd != iU))
1731+ then throw(((("oldHealth=" + toString(jd)) + " from state does not match one from flight log=") + toString(iU)))
1732+ else if ((0 >= iU))
17331733 then throw("You can't fly with zero health")
1734- else if (!(gv(A)))
1734+ else if (!(gw(A)))
17351735 then throw("Equipment incompatible")
17361736 else {
1737- let jd = if ((size(iR) > eD))
1738- then iR[eD]
1737+ let je = if ((size(iS) > eE))
1738+ then iS[eE]
17391739 else ""
1740- let je = if ((size(iR) > eE))
1741- then iR[eE]
1740+ let jf = if ((size(iS) > eF))
1741+ then iS[eF]
17421742 else ""
1743- let jf = if (if ((iU > 0))
1744- then (jd == "$")
1743+ let jg = if (if ((iV > 0))
1744+ then (je == "$")
17451745 else false)
1746- then dy(invoke(da, "sendUsdtPrize", [bL], nil))
1746+ then dz(invoke(db, "sendUsdtPrize", [bL], nil))
17471747 else 0
1748- $Tuple5(iU, A, jf, iW, je)
1748+ $Tuple5(iV, A, jg, iX, jf)
17491749 }
17501750 }
17511751 }
17521752 }
17531753
17541754
1755-func jg (P,jh) = {
1756- let hZ = valueOrElse(getInteger(by(P)), 0)
1757- let ji = valueOrElse(getInteger(bs(aE, P)), 0)
1758- let jj = (hZ / 6)
1759- let jk = (hZ / 7)
1760- ((aH + fraction(aH, ((hZ + jj) + (2 * jk)), 5)) + fraction(aH, ji, (jh * 5)))
1761- }
1762-
1763-
1764-func jl (c,jm,jn) = {
1765- let jo = if ((jm == ey))
1766- then $Tuple2(jn, valueOrElse(getString(bH(c)), ""))
1755+func jh (P,ji) = {
1756+ let ia = valueOrElse(getInteger(by(P)), 0)
1757+ let jj = valueOrElse(getInteger(bs(aE, P)), 0)
1758+ let jk = (ia / 6)
1759+ let jl = (ia / 7)
1760+ ((aH + fraction(aH, ((ia + jk) + (2 * jl)), 5)) + fraction(aH, jj, (ji * 5)))
1761+ }
1762+
1763+
1764+func jm (c,jn,jo) = {
1765+ let jp = if ((jn == ez))
1766+ then $Tuple2(jo, valueOrElse(getString(bH(c)), ""))
17671767 else {
17681768 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
1769- let jp = valueOrElse(getString(bJ(A)), aJ)
1770- let cf = split(value(jp), "_")
1769+ let jq = valueOrElse(getString(bJ(A)), aJ)
1770+ let cf = split(value(jq), "_")
17711771 if ((cf[bm] != "L"))
17721772 then throw((("Duck location type is " + cf[bm]) + ", but should be L"))
17731773 else $Tuple2(cf[bn], A)
17741774 }
1775- let P = jo._1
1776- let jq = jo._2
1777- let jr = value(assetInfo(fromBase58String(P)))
1778- let js = br(P)
1779- let jt = valueOrErrorMessage(getInteger(js), (("Land " + jr.name) + " is not staked"))
1780- let ju = valueOrErrorMessage(getString(bo(P)), (("NFT " + jr.name) + " is orphaned"))
1781- if ((ju != c))
1775+ let P = jp._1
1776+ let jr = jp._2
1777+ let js = value(assetInfo(fromBase58String(P)))
1778+ let jt = br(P)
1779+ let ju = valueOrErrorMessage(getInteger(jt), (("Land " + js.name) + " is not staked"))
1780+ let jv = valueOrErrorMessage(getString(bo(P)), (("NFT " + js.name) + " is orphaned"))
1781+ if ((jv != c))
17821782 then throw((aC + " is not yours"))
17831783 else {
1784- let jv = split(jr.description, "_")
1785- $Tuple4(jq, P, jv, jt)
1786- }
1787- }
1788-
1789-
1790-func jw (c,eH,jm,jn) = if ((0 > eH))
1784+ let jw = split(js.description, "_")
1785+ $Tuple4(jr, P, jw, ju)
1786+ }
1787+ }
1788+
1789+
1790+func jx (c,eI,jn,jo) = if ((0 > eI))
17911791 then throw("Negative amount")
17921792 else {
1793- let fZ = jl(c, jm, jn)
1794- let dH = fZ._3[dh]
1795- let gF = gL(fZ._3[di])
1796- let gP = (lastBlock.timestamp - fZ._4)
1797- if ((0 > gP))
1798- then throw(((("Saved timestamp is in future, saved = " + toString(fZ._4)) + ", current = ") + toString(lastBlock.timestamp)))
1793+ let ga = jm(c, jn, jo)
1794+ let dI = ga._3[di]
1795+ let gG = gM(ga._3[dj])
1796+ let gQ = (lastBlock.timestamp - ga._4)
1797+ if ((0 > gQ))
1798+ then throw(((("Saved timestamp is in future, saved = " + toString(ga._4)) + ", current = ") + toString(lastBlock.timestamp)))
17991799 else {
1800- let jh = dG(dH)
1801- let jx = jg(fZ._2, jh)
1802- let jy = fraction(gP, (jx * jh), a)
1803- if ((eH > jy))
1804- then throw(((("Not enough resources, available = " + toString(jy)) + ", requested = ") + toString(eH)))
1800+ let ji = dH(dI)
1801+ let jy = jh(ga._2, ji)
1802+ let jz = fraction(gQ, (jy * ji), a)
1803+ if ((eI > jz))
1804+ then throw(((("Not enough resources, available = " + toString(jz)) + ", requested = ") + toString(eI)))
18051805 else {
1806- let jz = fraction((jy - eH), a, (jx * jh))
1807- let jA = (lastBlock.timestamp - jz)
1808- let hY = (jh / cE)
1809- let gX = gT(gF, (gP - jz), hY, jx)
1810- let hX = bx(fZ._2)
1811- let hZ = valueOrElse(getInteger(by(fZ._2)), 0)
1812- let hO = hW(hX, hY, hZ)
1813- let if = split(hO[bc], "_")
1814- let gY = parseIntValue(if[bf])
1815- if (if ((jm == ey))
1816- then (eH > gY)
1806+ let jA = fraction((jz - eI), a, (jy * ji))
1807+ let jB = (lastBlock.timestamp - jA)
1808+ let hZ = (ji / cF)
1809+ let gY = gU(gG, (gQ - jA), hZ, jy)
1810+ let hY = bx(ga._2)
1811+ let ia = valueOrElse(getInteger(by(ga._2)), 0)
1812+ let hP = hX(hY, hZ, ia)
1813+ let ig = split(hP[bc], "_")
1814+ let gZ = parseIntValue(ig[bf])
1815+ if (if ((jn == ez))
1816+ then (eI > gZ)
18171817 else false)
1818- then throw((("Only " + toString(gY)) + " space left in warehouse"))
1818+ then throw((("Only " + toString(gZ)) + " space left in warehouse"))
18191819 else {
1820- let hK = bI(fZ._1)
1821- let in = hJ(hK)
1822- let gW = split(in[bi], "_")
1823- let gV = split(hO[aZ], "_")
1824- let jB = if ((jm == ey))
1825- then $Tuple4(gN(gV, gF, (gP - jz), hY, jx), in[bi], (parseIntValue(if[be]) + gX._2), (parseIntValue(if[bf]) - gX._2))
1826- else if ((jm == ez))
1827- then $Tuple4(hO[aZ], gN(gW, gF, (gP - jz), hY, jx), parseIntValue(if[be]), parseIntValue(if[bf]))
1820+ let hL = bI(ga._1)
1821+ let io = hK(hL)
1822+ let gX = split(io[bi], "_")
1823+ let gW = split(hP[aZ], "_")
1824+ let jC = if ((jn == ez))
1825+ then $Tuple4(gO(gW, gG, (gQ - jA), hZ, jy), io[bi], (parseIntValue(ig[be]) + gY._2), (parseIntValue(ig[bf]) - gY._2))
1826+ else if ((jn == eA))
1827+ then $Tuple4(hP[aZ], gO(gX, gG, (gQ - jA), hZ, jy), parseIntValue(ig[be]), parseIntValue(ig[bf]))
18281828 else {
1829- let jC = gU(gV, gW, gX, gY)
1830- let jD = min([parseIntValue(if[bf]), gX._2])
1831- $Tuple4(jC._1, jC._2, (parseIntValue(if[be]) + jD), (parseIntValue(if[bf]) - jD))
1829+ let jD = gV(gW, gX, gY, gZ)
1830+ let jE = min([parseIntValue(ig[bf]), gY._2])
1831+ $Tuple4(jD._1, jD._2, (parseIntValue(ig[be]) + jE), (parseIntValue(ig[bf]) - jE))
18321832 }
1833- let jE = jB._1
1834- let jF = jB._2
1835- let jG = jB._3
1836- let jH = jB._4
1837- $Tuple5([IntegerEntry(br(fZ._2), jA), IntegerEntry(bu(aC, fZ._2, c), jA)], hK, [in[bh], jF, in[bj], in[bk]], hX, [hO[aY], jE, hO[ba], hO[bb], makeString([if[bd], toString(jG), toString(jH), if[bg]], "_")])
1833+ let jF = jC._1
1834+ let jG = jC._2
1835+ let jH = jC._3
1836+ let jI = jC._4
1837+ $Tuple5([IntegerEntry(br(ga._2), jB), IntegerEntry(bu(aC, ga._2, c), jB)], hL, [io[bh], jG, io[bj], io[bk]], hY, [hP[aY], jF, hP[ba], hP[bb], makeString([ig[bd], toString(jH), toString(jI), ig[bg]], "_")])
18381838 }
18391839 }
18401840 }
18411841 }
18421842
18431843
1844-func jI (c,P,jh,jm) = {
1845- let js = br(P)
1846- let jt = value(getInteger(js))
1847- let jy = (fraction((lastBlock.timestamp - jt), jg(P, jh), a) * jh)
1848- jw(c, jy, jm, P)
1849- }
1850-
1851-
1852-func jJ (fd,iI,jK,P) = {
1853- let c = toString(iI)
1854- let fZ = jl(c, eA, P)
1855- let jh = dG(fZ._3[dh])
1856- let jL = by(fZ._2)
1857- let jM = valueOrElse(getInteger(jL), 0)
1858- if (if (!(ct))
1859- then (jM >= 3)
1844+func jJ (c,P,ji,jn) = {
1845+ let jt = br(P)
1846+ let ju = value(getInteger(jt))
1847+ let jz = (fraction((lastBlock.timestamp - ju), jh(P, ji), a) * ji)
1848+ jx(c, jz, jn, P)
1849+ }
1850+
1851+
1852+func jK (fe,iJ,jL,P) = {
1853+ let c = toString(iJ)
1854+ let ga = jm(c, eB, P)
1855+ let ji = dH(ga._3[di])
1856+ let jM = by(ga._2)
1857+ let jN = valueOrElse(getInteger(jM), 0)
1858+ if (if (!(cu))
1859+ then (jN >= 3)
18601860 else false)
18611861 then throw("Currently max infrastructure level = 3")
18621862 else {
1863- let jN = ((sqrt(jh, 0, 0, DOWN) / 5) + 2)
1864- let al = (jM + 1)
1865- if (if (ct)
1866- then (al > jN)
1863+ let jO = ((sqrt(ji, 0, 0, DOWN) / 5) + 2)
1864+ let al = (jN + 1)
1865+ if (if (cu)
1866+ then (al > jO)
18671867 else false)
1868- then throw(("Currently max infrastructure level = " + toString(jN)))
1868+ then throw(("Currently max infrastructure level = " + toString(jO)))
18691869 else {
1870- let jO = fraction(ed, (jh * al), cE)
1871- if (if (!(fd))
1872- then (jK != jO)
1870+ let jP = fraction(ee, (ji * al), cF)
1871+ if (if (!(fe))
1872+ then (jL != jP)
18731873 else false)
1874- then throw(("Payment attached should be " + toString(jO)))
1874+ then throw(("Payment attached should be " + toString(jP)))
18751875 else {
1876- let hK = bI(fZ._1)
1877- let in = hJ(hK)
1878- let jP = split(in[bj], "_")
1879- let jQ = fraction(cz, (jh * al), cE)
1880- let jR = makeString(fc(fd, jP, jQ), "_")
1881- let jS = jI(c, fZ._2, jh, eA)
1882- let jT = jS._5
1883- let jU = hL(jT[aY])
1884- let jV = makeString([split(jT[aY], "_")[0], toString(al)], "_")
1885- let jW = hL(jV)
1886- let if = split(jT[bc], "_")
1887- let jX = makeString([if[bd], if[be], toString(((parseIntValue(if[bf]) + jW) - jU)), toString(jW)], "_")
1888- $Tuple3(([IntegerEntry(jL, al), IntegerEntry(et(fZ._2, c), al), StringEntry(hK, makeString([in[bh], jS._3[bi], jR, in[bk]], ":")), StringEntry(jS._4, makeString([jV, jT[aZ], jT[ba], jT[bb], jX], ":"))] ++ jS._1), al, jQ)
1876+ let hL = bI(ga._1)
1877+ let io = hK(hL)
1878+ let jQ = split(io[bj], "_")
1879+ let jR = fraction(cA, (ji * al), cF)
1880+ let jS = makeString(fd(fe, jQ, jR), "_")
1881+ let jT = jJ(c, ga._2, ji, eB)
1882+ let jU = jT._5
1883+ let jV = hM(jU[aY])
1884+ let jW = makeString([split(jU[aY], "_")[0], toString(al)], "_")
1885+ let jX = hM(jW)
1886+ let ig = split(jU[bc], "_")
1887+ let jY = makeString([ig[bd], ig[be], toString(((parseIntValue(ig[bf]) + jX) - jV)), toString(jX)], "_")
1888+ $Tuple3(([IntegerEntry(jM, al), IntegerEntry(eu(ga._2, c), al), StringEntry(hL, makeString([io[bh], jT._3[bi], jS, io[bk]], ":")), StringEntry(jT._4, makeString([jW, jU[aZ], jU[ba], jU[bb], jY], ":"))] ++ jT._1), al, jR)
18891889 }
18901890 }
18911891 }
18921892 }
18931893
18941894
1895-func jY (A,jZ) = {
1896- let ka = D(A)
1897- let kb = C(A)
1898- let af = valueOrElse(getInteger(kb), 0)
1899- let ak = (af + jZ)
1900- let kc = ai(valueOrElse(getInteger(ka), 0), ak)
1901- let kd = E(A)
1902- $Tuple2([IntegerEntry(ka, kc[0]), IntegerEntry(kb, ak), IntegerEntry(kd, (valueOrElse(getInteger(kd), 0) + kc[1]))], ak)
1903- }
1904-
1905-
1906-func ke (c,jZ) = {
1907- let ka = H(c)
1908- let kb = G(c)
1909- let af = valueOrElse(getInteger(kb), 0)
1910- let ak = (af + jZ)
1911- let kc = ai(valueOrElse(getInteger(ka), 0), ak)
1912- let kd = I(c)
1913- $Tuple2([IntegerEntry(ka, kc[0]), IntegerEntry(kb, ak), IntegerEntry(kd, (valueOrElse(getInteger(kd), 0) + kc[1]))], ak)
1914- }
1915-
1916-
1917-func kf (c) = {
1895+func jZ (A,ka) = {
1896+ let kb = D(A)
1897+ let kc = C(A)
1898+ let af = valueOrElse(getInteger(kc), 0)
1899+ let ak = (af + ka)
1900+ let kd = ai(valueOrElse(getInteger(kb), 0), ak)
1901+ let ke = E(A)
1902+ $Tuple2([IntegerEntry(kb, kd[0]), IntegerEntry(kc, ak), IntegerEntry(ke, (valueOrElse(getInteger(ke), 0) + kd[1]))], ak)
1903+ }
1904+
1905+
1906+func kf (c,ka) = {
1907+ let kb = H(c)
1908+ let kc = G(c)
1909+ let af = valueOrElse(getInteger(kc), 0)
1910+ let ak = (af + ka)
1911+ let kd = ai(valueOrElse(getInteger(kb), 0), ak)
1912+ let ke = I(c)
1913+ $Tuple2([IntegerEntry(kb, kd[0]), IntegerEntry(kc, ak), IntegerEntry(ke, (valueOrElse(getInteger(ke), 0) + kd[1]))], ak)
1914+ }
1915+
1916+
1917+func kg (c) = {
19181918 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
1919- let kg = bC(c)
1920- let kh = getString(kg)
1921- if (!(isDefined(kh)))
1919+ let kh = bC(c)
1920+ let ki = getString(kh)
1921+ if (!(isDefined(ki)))
19221922 then throw("You are not eligible for ONBOARD artifact")
19231923 else {
1924- let ki = bE(c)
1925- let kj = getString(ki)
1926- if (isDefined(kj))
1927- then throw(("You already used your ONBOARD artifact on duck " + value(kj)))
1924+ let kj = bE(c)
1925+ let kk = getString(kj)
1926+ if (isDefined(kk))
1927+ then throw(("You already used your ONBOARD artifact on duck " + value(kk)))
19281928 else {
1929- let kk = bD(A)
1930- let kl = getString(kk)
1931- if (isDefined(kl))
1932- then throw(((("The duck " + A) + " already got points from ONBOARD artifact from user ") + value(kl)))
1933- else ([StringEntry(ki, A), StringEntry(kk, c)] ++ jY(A, ac)._1)
1929+ let kl = bD(A)
1930+ let km = getString(kl)
1931+ if (isDefined(km))
1932+ then throw(((("The duck " + A) + " already got points from ONBOARD artifact from user ") + value(km)))
1933+ else ([StringEntry(kj, A), StringEntry(kl, c)] ++ jZ(A, ac)._1)
19341934 }
19351935 }
19361936 }
19371937
19381938
1939-func km (c,jn) = {
1940- let fZ = jl(c, eA, jn)
1941- let P = fZ._2
1942- let jh = dG(fZ._3[dh])
1943- let kn = bs(aE, P)
1944- if ((valueOrElse(getInteger(kn), 0) > 0))
1939+func kn (c,jo) = {
1940+ let ga = jm(c, eB, jo)
1941+ let P = ga._2
1942+ let ji = dH(ga._3[di])
1943+ let ko = bs(aE, P)
1944+ if ((valueOrElse(getInteger(ko), 0) > 0))
19451945 then throw("Presale artifact is already activated")
1946- else if ((parseIntValue(fZ._3[dg]) > en))
1946+ else if ((parseIntValue(ga._3[dh]) > eo))
19471947 then throw((((aC + " ") + P) + " is not eligible for presale artifact"))
19481948 else {
1949- let jS = jI(c, P, jh, eA)
1950- (((jS._1 :+ IntegerEntry(kn, jh)) :+ StringEntry(jS._2, makeString(jS._3, ":"))) :+ StringEntry(jS._4, makeString(jS._5, ":")))
1949+ let jT = jJ(c, P, ji, eB)
1950+ (((jT._1 :+ IntegerEntry(ko, ji)) :+ StringEntry(jT._2, makeString(jT._3, ":"))) :+ StringEntry(jT._4, makeString(jT._5, ":")))
19511951 }
19521952 }
19531953
19541954
1955-func ko (A) = {
1956- let ce = valueOrElse(getInteger(de, bP), 0)
1957- let jp = split(valueOrElse(getString(bJ(A)), aJ), "_")
1955+func kp (A) = {
1956+ let ce = valueOrElse(getInteger(df, bP), 0)
1957+ let jq = split(valueOrElse(getString(bJ(A)), aJ), "_")
19581958 let ax = lastBlock.timestamp
1959- let cg = bY(de, ce)
1959+ let cg = bY(df, ce)
19601960 let ca = cg[bU]
19611961 let cb = cg[bV]
1962- if ((jp[bm] != "T"))
1962+ if ((jq[bm] != "T"))
19631963 then false
1964- else if (if (if ((parseIntValue(jp[bl]) == ce))
1964+ else if (if (if ((parseIntValue(jq[bl]) == ce))
19651965 then (cb[bX] == "INPROGRESS")
19661966 else false)
19671967 then (parseIntValue(ca[bW]) > ax)
19681968 else false)
19691969 then throw("Your duck is taking part in the tournament")
1970- else dC(invoke(this, "exitTournamentInternal", [A], nil))
1971- }
1972-
1973-
1974-func kp (A) = if (!(cu))
1970+ else dD(invoke(this, "exitTournamentInternal", [A], nil))
1971+ }
1972+
1973+
1974+func kq (A) = if (!(cv))
19751975 then false
19761976 else {
1977- let jp = split(valueOrElse(getString(bJ(A)), aJ), "_")
1977+ let jq = split(valueOrElse(getString(bJ(A)), aJ), "_")
19781978 let ax = lastBlock.timestamp
1979- if ((jp[bm] != "D"))
1979+ if ((jq[bm] != "D"))
19801980 then false
19811981 else {
1982- let ci = parseIntValue(jp[bl])
1983- let cj = parseIntValue(jp[bn])
1982+ let ci = parseIntValue(jq[bl])
1983+ let cj = parseIntValue(jq[bn])
19841984 if (if ((ax > (ci + aN)))
19851985 then (3 > cj)
19861986 else false)
19871987 then throw("Your duck is on delivery mission")
1988- else dC(invoke(this, "exitDeliveryInternal", [A], nil))
1988+ else dD(invoke(this, "exitDeliveryInternal", [A], nil))
19891989 }
19901990 }
19911991
19921992
1993-func kq (A) = {
1994- let jp = split(valueOrElse(getString(bJ(A)), aJ), "_")
1993+func kr (A) = {
1994+ let jq = split(valueOrElse(getString(bJ(A)), aJ), "_")
19951995 let ax = lastBlock.timestamp
1996- let ci = parseIntValue(jp[bl])
1997- let cj = parseIntValue(jp[bn])
1998- let ju = valueOrErrorMessage(getString(bG(A)), "NFT duck is orphaned")
1999- let kr = z(A)
2000- let ks = getIntegerValue(kr)
2001- let kt = if ((cj >= 3))
1996+ let ci = parseIntValue(jq[bl])
1997+ let cj = parseIntValue(jq[bn])
1998+ let jv = valueOrErrorMessage(getString(bG(A)), "NFT duck is orphaned")
1999+ let ks = z(A)
2000+ let kt = getIntegerValue(ks)
2001+ let ku = if ((cj >= 3))
20022002 then {
2003- let ku = invoke(db, "sendDeliveryReward", [ju], nil)
2004- if ((ku == ku))
2003+ let kv = invoke(dc, "sendDeliveryReward", [jv], nil)
2004+ if ((kv == kv))
20052005 then nil
20062006 else throw("Strict value is not equal to itself.")
20072007 }
20082008 else if ((ax > (ci + aN)))
20092009 then throw("Your duck is still on delivery mission")
20102010 else {
2011- let kv = valueOrElse(getInteger(db, bO), 0)
2012- let kw = invoke(db, "updateDeliveryLocked", [(kv - aM)], nil)
2013- if ((kw == kw))
2014- then if ((0 >= ks))
2011+ let kw = valueOrElse(getInteger(dc, bO), 0)
2012+ let kx = invoke(dc, "updateDeliveryLocked", [(kw - aM)], nil)
2013+ if ((kx == kx))
2014+ then if ((0 >= kt))
20152015 then nil
20162016 else [IntegerEntry(T(A), (ci + a))]
20172017 else throw("Strict value is not equal to itself.")
20182018 }
2019- let kx = getIntegerValue(J(A))
2020- let ky = getStringValue(K(A))
2021- $Tuple4(kt, [IntegerEntry(kr, kx), StringEntry(bJ(A), ky)], ky, kx)
2022- }
2023-
2024-
2025-func kz (kA,al,kB,c,kC,kD) = {
2019+ let ky = getIntegerValue(J(A))
2020+ let kz = getStringValue(K(A))
2021+ $Tuple4(ku, [IntegerEntry(ks, ky), StringEntry(bJ(A), kz)], kz, ky)
2022+ }
2023+
2024+
2025+func kA (kB,al,kC,c,kD,kE) = {
20262026 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
2027- if (ko(A))
2027+ if (kp(A))
20282028 then throw("mergeInternal_checkTournament")
2029- else if (kp(A))
2029+ else if (kq(A))
20302030 then throw("mergeInternal_checkDelivery")
20312031 else {
2032- func kE (eQ,P) = {
2033- let jr = value(assetInfo(fromBase58String(P)))
2034- let js = br(P)
2035- let jt = valueOrErrorMessage(getInteger(js), (("NFT " + jr.name) + " is not staked"))
2036- let ju = valueOrErrorMessage(getString(bo(P)), (("NFT " + jr.name) + " is orphaned"))
2037- if ((ju != c))
2032+ func kF (eR,P) = {
2033+ let js = value(assetInfo(fromBase58String(P)))
2034+ let jt = br(P)
2035+ let ju = valueOrErrorMessage(getInteger(jt), (("NFT " + js.name) + " is not staked"))
2036+ let jv = valueOrErrorMessage(getString(bo(P)), (("NFT " + js.name) + " is orphaned"))
2037+ if ((jv != c))
20382038 then throw((aC + " is not yours"))
20392039 else {
2040- let jv = split(jr.description, "_")
2041- let ds = jv[dj]
2042- if (if ((eQ._3 != ""))
2043- then (eQ._3 != ds)
2040+ let jw = split(js.description, "_")
2041+ let dt = jw[dk]
2042+ if (if ((eR._3 != ""))
2043+ then (eR._3 != dt)
20442044 else false)
20452045 then throw("Lands should be on the same continent to merge")
20462046 else {
2047- let dH = jv[dh]
2048- let kF = eQ._1
2049- let gJ = valueOrErrorMessage(indexOf(kF, dH), "You haven't passed all the lands needed")
2050- let kG = (take(kF, gJ) + drop(kF, (gJ + 1)))
2051- let jh = dG(dH)
2052- let kH = (eQ._2 + valueOrElse(getInteger(bs(aE, P)), 0))
2053- let hZ = valueOrElse(getInteger(by(P)), 0)
2054- let kI = {
2055- let cx = dH
2056- if (("S" == cx))
2047+ let dI = jw[di]
2048+ let kG = eR._1
2049+ let gK = valueOrErrorMessage(indexOf(kG, dI), "You haven't passed all the lands needed")
2050+ let kH = (take(kG, gK) + drop(kG, (gK + 1)))
2051+ let ji = dH(dI)
2052+ let kI = (eR._2 + valueOrElse(getInteger(bs(aE, P)), 0))
2053+ let ia = valueOrElse(getInteger(by(P)), 0)
2054+ let kJ = {
2055+ let cy = dI
2056+ if (("S" == cy))
20572057 then 3
2058- else if (("M" == cx))
2058+ else if (("M" == cy))
20592059 then 4
2060- else if (("L" == cx))
2060+ else if (("L" == cy))
20612061 then 5
2062- else if (("XL" == cx))
2062+ else if (("XL" == cy))
20632063 then 6
20642064 else throw("Only S, M, L, XL can merge")
20652065 }
2066- if ((hZ != kI))
2066+ if ((ia != kJ))
20672067 then throw("All lands should be maxed to merge")
20682068 else {
2069- let es = jv[dg]
2070- let gF = gL(jv[di])
2071- let gP = (lastBlock.timestamp - jt)
2072- if ((0 > gP))
2073- then throw(((("Saved timestamp is in future, saved = " + toString(jt)) + ", current = ") + toString(lastBlock.timestamp)))
2069+ let et = jw[dh]
2070+ let gG = gM(jw[dj])
2071+ let gQ = (lastBlock.timestamp - ju)
2072+ if ((0 > gQ))
2073+ then throw(((("Saved timestamp is in future, saved = " + toString(ju)) + ", current = ") + toString(lastBlock.timestamp)))
20742074 else {
2075- let jx = jg(P, jh)
2076- let hY = (jh / cE)
2077- let jF = gN(split(eQ._4, "_"), gF, gP, hY, jx)
2078- let fa = gD(eQ._6, gF, hY, -1)
2079- let kJ = gD(eQ._10, gF, hY, -1)
2080- let ht = gD(eQ._9, gF, hY, 1)
2081- let kK = eQ._7
2082- let cZ = indexOf(kK, P)
2083- if (!(isDefined(cZ)))
2075+ let jy = jh(P, ji)
2076+ let hZ = (ji / cF)
2077+ let jG = gO(split(eR._4, "_"), gG, gQ, hZ, jy)
2078+ let fb = gE(eR._6, gG, hZ, -1)
2079+ let kK = gE(eR._10, gG, hZ, -1)
2080+ let hu = gE(eR._9, gG, hZ, 1)
2081+ let kL = eR._7
2082+ let da = indexOf(kL, P)
2083+ if (!(isDefined(da)))
20842084 then throw(("Your staked lands don't contain " + P))
20852085 else {
2086- let kL = bq(P)
2087- let kM = valueOrElse(getString(kL), "")
2088- $Tuple10(kG, kH, ds, jF, ((((((((((((eQ._5 :+ DeleteEntry(br(P))) :+ DeleteEntry(bu(aC, P, c))) :+ DeleteEntry(er(es))) :+ DeleteEntry(bo(P))) :+ DeleteEntry(by(P))) :+ DeleteEntry(et(P, c))) :+ DeleteEntry(bs(aE, P))) :+ DeleteEntry(eu(es))) :+ DeleteEntry(bx(P))) :+ DeleteEntry(kL)) :+ Burn(fromBase58String(P), 1)) ++ (if ((kM != ""))
2089- then [DeleteEntry(ep(kM))]
2090- else nil)), fa, removeByIndex(kK, value(cZ)), (eQ._8 + jh), ht, kJ)
2086+ let kM = bq(P)
2087+ let kN = valueOrElse(getString(kM), "")
2088+ $Tuple10(kH, kI, dt, jG, ((((((((((((eR._5 :+ DeleteEntry(br(P))) :+ DeleteEntry(bu(aC, P, c))) :+ DeleteEntry(es(et))) :+ DeleteEntry(bo(P))) :+ DeleteEntry(by(P))) :+ DeleteEntry(eu(P, c))) :+ DeleteEntry(bs(aE, P))) :+ DeleteEntry(ev(et))) :+ DeleteEntry(bx(P))) :+ DeleteEntry(kM)) :+ Burn(fromBase58String(P), 1)) ++ (if ((kN != ""))
2089+ then [DeleteEntry(eq(kN))]
2090+ else nil)), fb, removeByIndex(kL, value(da)), (eR._8 + ji), hu, kK)
20912091 }
20922092 }
20932093 }
20942094 }
20952095 }
20962096 }
20972097
2098- let hK = bI(A)
2099- let in = hJ(hK)
2100- let gE = split(valueOrElse(getString(dq()), "0_0_0_0_0_0"), "_")
2101- let kN = dt(c)
2102- let kO = getString(kN)
2103- let kP = if (isDefined(kO))
2104- then split_51C(value(kO), "_")
2098+ let hL = bI(A)
2099+ let io = hK(hL)
2100+ let gF = split(valueOrElse(getString(dr()), "0_0_0_0_0_0"), "_")
2101+ let kO = du(c)
2102+ let kP = getString(kO)
2103+ let kQ = if (isDefined(kP))
2104+ then split_51C(value(kP), "_")
21052105 else nil
2106- let kQ = split(value(assetInfo(fromBase58String(kC[0]))).description, "_")[dj]
2107- let kR = split(valueOrElse(getString(dr(kQ)), "0_0_0_0_0_0"), "_")
2108- let fb = {
2109- let eS = kC
2110- let eT = size(eS)
2111- let eU = $Tuple10(kB, 0, "", in[bi], nil, gE, kP, 0, split("0_0_0_0_0_0", "_"), kR)
2112- func eV (eW,eX) = if ((eX >= eT))
2113- then eW
2114- else kE(eW, eS[eX])
2115-
2116- func eY (eW,eX) = if ((eX >= eT))
2117- then eW
2106+ let kR = split(value(assetInfo(fromBase58String(kD[0]))).description, "_")[dk]
2107+ let kS = split(valueOrElse(getString(ds(kR)), "0_0_0_0_0_0"), "_")
2108+ let fc = {
2109+ let eT = kD
2110+ let eU = size(eT)
2111+ let eV = $Tuple10(kC, 0, "", io[bi], nil, gF, kQ, 0, split("0_0_0_0_0_0", "_"), kS)
2112+ func eW (eX,eY) = if ((eY >= eU))
2113+ then eX
2114+ else kF(eX, eT[eY])
2115+
2116+ func eZ (eX,eY) = if ((eY >= eU))
2117+ then eX
21182118 else throw("List size exceeds 5")
21192119
2120- eY(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5)
2120+ eZ(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5)
21212121 }
2122- let ds = fb._3
2123- let hn = valueOrErrorMessage(indexOf(aP, ds), ("Unknown continent: " + ds))
2124- let gM = hs(fb._9, (dG(kA) / cE))
2125- let iL = valueOrElse(getInteger(eo()), (en + 1))
2126- let kS = toString(iL)
2127- let iM = Issue(eF(kS, kA), makeString([kS, kA, gM, ds], "_"), 1, 0, false)
2128- let bp = calculateAssetId(iM)
2129- let kT = toBase58String(bp)
2130- let jR = makeString(fc((kD > 0), split(in[bj], "_"), kD), "_")
2131- let kU = du(c)
2132- let kV = valueOrElse(getInteger(kU), 0)
2133- $Tuple2((((((((((((((((fb._5 :+ (if ((size(fb._7) > 0))
2134- then StringEntry(kN, makeString_11C(fb._7, "_"))
2135- else DeleteEntry(kN))) :+ IntegerEntry(kU, if ((fb._8 > kV))
2122+ let dt = fc._3
2123+ let ho = valueOrErrorMessage(indexOf(aP, dt), ("Unknown continent: " + dt))
2124+ let gN = ht(fc._9, (dH(kB) / cF))
2125+ let iM = valueOrElse(getInteger(ep()), (eo + 1))
2126+ let kT = toString(iM)
2127+ let iN = Issue(eG(kT, kB), makeString([kT, kB, gN, dt], "_"), 1, 0, false)
2128+ let bp = calculateAssetId(iN)
2129+ let kU = toBase58String(bp)
2130+ let jS = makeString(fd((kE > 0), split(io[bj], "_"), kE), "_")
2131+ let kV = dv(c)
2132+ let kW = valueOrElse(getInteger(kV), 0)
2133+ $Tuple2((((((((((((((((fc._5 :+ (if ((size(fc._7) > 0))
2134+ then StringEntry(kO, makeString_11C(fc._7, "_"))
2135+ else DeleteEntry(kO))) :+ IntegerEntry(kV, if ((fc._8 > kW))
21362136 then 0
2137- else (kV - fb._8))) :+ IntegerEntry(eo(), (iL + 1))) :+ iM) :+ StringEntry(er(kS), kT)) :+ StringEntry(bo(kT), c)) :+ StringEntry(eu(kS), c)) :+ IntegerEntry(bs(aE, kT), fb._2)) :+ IntegerEntry(by(kT), al)) :+ IntegerEntry(et(kT, c), al)) :+ StringEntry(hK, makeString([in[bh], fb._4, jR, in[bk]], ":"))) :+ StringEntry(dq(), makeString(fb._6, "_"))) :+ StringEntry(dr(ds), makeString(fb._10, "_"))) :+ StringEntry(bJ(A), makeString([ds, "L", kT], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bp)), kT)
2137+ else (kW - fc._8))) :+ IntegerEntry(ep(), (iM + 1))) :+ iN) :+ StringEntry(es(kT), kU)) :+ StringEntry(bo(kU), c)) :+ StringEntry(ev(kT), c)) :+ IntegerEntry(bs(aE, kU), fc._2)) :+ IntegerEntry(by(kU), al)) :+ IntegerEntry(eu(kU, c), al)) :+ StringEntry(hL, makeString([io[bh], fc._4, jS, io[bk]], ":"))) :+ StringEntry(dr(), makeString(fc._6, "_"))) :+ StringEntry(ds(dt), makeString(fc._10, "_"))) :+ StringEntry(bJ(A), makeString([dt, "L", kU], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bp)), kU)
21382138 }
21392139 }
21402140
21412141
2142-func kW (c,kC) = kz("M", 3, "SSSS", c, kC, 0)
2143-
2144-
2145-func kX (c,kC) = kz("L", 4, "SMM", c, kC, (cz * 4))
2146-
2147-
2148-func kY (c,kC) = kz("XL", 5, "SSSML", c, kC, (cz * 47))
2149-
2150-
2151-func kZ (c,kC) = kz("XXL", 6, "LXL", c, kC, (cz * 54))
2152-
2153-
2154-func la (c,kC) = {
2155- let cx = size(kC)
2156- if ((4 == cx))
2157- then kW(c, kC)
2158- else if ((3 == cx))
2159- then kX(c, kC)
2160- else if ((5 == cx))
2161- then kY(c, kC)
2162- else if ((2 == cx))
2163- then kZ(c, kC)
2142+func kX (c,kD) = kA("M", 3, "SSSS", c, kD, 0)
2143+
2144+
2145+func kY (c,kD) = kA("L", 4, "SMM", c, kD, (cA * 4))
2146+
2147+
2148+func kZ (c,kD) = kA("XL", 5, "SSSML", c, kD, (cA * 47))
2149+
2150+
2151+func la (c,kD) = kA("XXL", 6, "LXL", c, kD, (cA * 54))
2152+
2153+
2154+func lb (c,kD) = {
2155+ let cy = size(kD)
2156+ if ((4 == cy))
2157+ then kX(c, kD)
2158+ else if ((3 == cy))
2159+ then kY(c, kD)
2160+ else if ((5 == cy))
2161+ then kZ(c, kD)
2162+ else if ((2 == cy))
2163+ then la(c, kD)
21642164 else throw("Unknown merge")
21652165 }
21662166
21672167
2168-func lb (bL) = {
2169- let lc = getString(bH(bL))
2170- if (if (cu)
2171- then isDefined(lc)
2168+func lc (bL) = {
2169+ let ld = getString(bH(bL))
2170+ if (if (cv)
2171+ then isDefined(ld)
21722172 else false)
21732173 then {
2174- let A = value(lc)
2175- let ld = bJ(A)
2176- let cf = split(valueOrElse(getString(ld), aJ), "_")
2174+ let A = value(ld)
2175+ let le = bJ(A)
2176+ let cf = split(valueOrElse(getString(le), aJ), "_")
21772177 let ci = parseIntValue(cf[bl])
21782178 if (if ((cf[bm] != "D"))
21792179 then true
21802180 else (lastBlock.timestamp > (ci + aN)))
21812181 then nil
21822182 else {
2183- let kr = z(A)
2183+ let ks = z(A)
21842184 if ((parseIntValue(cf[bn]) >= 3))
21852185 then {
2186- let ku = invoke(db, "sendDeliveryReward", [bL], nil)
2187- if ((ku == ku))
2186+ let kv = invoke(dc, "sendDeliveryReward", [bL], nil)
2187+ if ((kv == kv))
21882188 then nil
21892189 else throw("Strict value is not equal to itself.")
21902190 }
21912191 else (({
2192- let kv = valueOrElse(getInteger(db, bO), 0)
2193- let kw = invoke(db, "updateDeliveryLocked", [(kv - aM)], nil)
2194- if ((kw == kw))
2195- then if ((0 >= getIntegerValue(kr)))
2192+ let kw = valueOrElse(getInteger(dc, bO), 0)
2193+ let kx = invoke(dc, "updateDeliveryLocked", [(kw - aM)], nil)
2194+ if ((kx == kx))
2195+ then if ((0 >= getIntegerValue(ks)))
21962196 then nil
21972197 else {
2198- let le = invoke(this, "saveInteger", [T(A), (ci + a)], nil)
2199- if ((le == le))
2198+ let lf = invoke(this, "saveInteger", [T(A), (ci + a)], nil)
2199+ if ((lf == lf))
22002200 then nil
22012201 else throw("Strict value is not equal to itself.")
22022202 }
22032203 else throw("Strict value is not equal to itself.")
2204- } :+ IntegerEntry(kr, getIntegerValue(J(A)))) :+ StringEntry(ld, getStringValue(K(A))))
2204+ } :+ IntegerEntry(ks, getIntegerValue(J(A)))) :+ StringEntry(le, getStringValue(K(A))))
22052205 }
22062206 }
22072207 else nil
22082208 }
22092209
22102210
2211-func lf (gJ) = if (if ((gJ.originCaller != da))
2212- then valueOrElse(getBoolean(dJ()), false)
2211+func lg (gK) = if (if ((gK.originCaller != db))
2212+ then valueOrElse(getBoolean(dK()), false)
22132213 else false)
22142214 then throw("Contracts are under maintenance")
22152215 else {
2216- let bL = toString(gJ.originCaller)
2217- (lb(bL) :+ StringEntry(dK(bL), toBase58String(gJ.transactionId)))
2216+ let bL = toString(gK.originCaller)
2217+ (lc(bL) :+ StringEntry(dL(bL), toBase58String(gK.transactionId)))
22182218 }
22192219
22202220
2221-func lg (gJ) = if (if ((gJ.originCaller != da))
2222- then valueOrElse(getBoolean(dJ()), false)
2221+func lh (gK) = if (if ((gK.originCaller != db))
2222+ then valueOrElse(getBoolean(dK()), false)
22232223 else false)
22242224 then throw("Contracts are under maintenance")
2225- else [StringEntry(dK(toString(gJ.originCaller)), toBase58String(gJ.transactionId))]
2226-
2227-
2228-@Callable(gJ)
2229-func constructorV1 (lh) = if ((gJ.caller != this))
2225+ else [StringEntry(dL(toString(gK.originCaller)), toBase58String(gK.transactionId))]
2226+
2227+
2228+@Callable(gK)
2229+func constructorV1 (li) = if ((gK.caller != this))
22302230 then throw("Permission denied")
2231- else [StringEntry(cU(), lh)]
2232-
2233-
2234-
2235-@Callable(gJ)
2236-func saveInteger (cM,eH) = if ((gJ.caller != this))
2231+ else [StringEntry(cV(), li)]
2232+
2233+
2234+
2235+@Callable(gK)
2236+func saveInteger (cN,eI) = if ((gK.caller != this))
22372237 then throw("saveInteger is not public method")
2238- else [IntegerEntry(cM, eH)]
2239-
2240-
2241-
2242-@Callable(gJ)
2243-func setBlocked (li) = if ((gJ.caller != this))
2238+ else [IntegerEntry(cN, eI)]
2239+
2240+
2241+
2242+@Callable(gK)
2243+func setBlocked (lj) = if ((gK.caller != this))
22442244 then throw("permission denied")
2245- else [BooleanEntry(dJ(), li)]
2246-
2247-
2248-
2249-@Callable(gJ)
2245+ else [BooleanEntry(dK(), lj)]
2246+
2247+
2248+
2249+@Callable(gK)
22502250 func stakeLand () = {
2251- let lj = lf(gJ)
2252- if ((size(gJ.payments) != 1))
2251+ let lk = lg(gK)
2252+ if ((size(gK.payments) != 1))
22532253 then throw("Exactly one payment required")
22542254 else {
2255- let lk = value(gJ.payments[0])
2256- let bp = value(lk.assetId)
2257- let cL = toString(gJ.caller)
2258- if ((lk.amount != 1))
2255+ let ll = value(gK.payments[0])
2256+ let bp = value(ll.assetId)
2257+ let cM = toString(gK.caller)
2258+ if ((ll.amount != 1))
22592259 then throw((("NFT " + aC) + " token should be attached as payment"))
22602260 else {
2261- let jr = value(assetInfo(bp))
2262- if ((jr.issuer != this))
2261+ let js = value(assetInfo(bp))
2262+ if ((js.issuer != this))
22632263 then throw("Unknown issuer of token")
2264- else if (!(contains(jr.name, aC)))
2264+ else if (!(contains(js.name, aC)))
22652265 then throw((("Only NFT " + aC) + " tokens are accepted"))
22662266 else {
2267- let ll = drop(jr.name, 4)
2268- let es = if (contains(ll, "XXL"))
2269- then dropRight(ll, 3)
2270- else if (contains(ll, "XL"))
2271- then dropRight(ll, 2)
2272- else dropRight(ll, 1)
2273- if (!(isDefined(parseInt(es))))
2274- then throw(("Cannot parse land number from " + jr.name))
2267+ let lm = drop(js.name, 4)
2268+ let et = if (contains(lm, "XXL"))
2269+ then dropRight(lm, 3)
2270+ else if (contains(lm, "XL"))
2271+ then dropRight(lm, 2)
2272+ else dropRight(lm, 1)
2273+ if (!(isDefined(parseInt(et))))
2274+ then throw(("Cannot parse land number from " + js.name))
22752275 else {
22762276 let P = toBase58String(bp)
2277- let js = br(P)
2278- if (isDefined(getInteger(js)))
2279- then throw((("NFT " + jr.name) + " is already staked"))
2277+ let jt = br(P)
2278+ if (isDefined(getInteger(jt)))
2279+ then throw((("NFT " + js.name) + " is already staked"))
22802280 else {
2281- let jv = split(jr.description, "_")
2282- let gF = gL(jv[di])
2283- let jh = dG(jv[dh])
2284- let hY = (jh / cE)
2285- let fa = gK(gF, hY, 1)
2286- let lm = dr(jv[dj])
2287- let kR = split(valueOrElse(getString(lm), "0_0_0_0_0_0"), "_")
2288- let ln = makeString(gD(kR, gF, hY, 1), "_")
2289- let kN = dt(cL)
2290- let kO = getString(kN)
2291- let kK = if (isDefined(kO))
2292- then split_51C(value(kO), "_")
2281+ let jw = split(js.description, "_")
2282+ let gG = gM(jw[dj])
2283+ let ji = dH(jw[di])
2284+ let hZ = (ji / cF)
2285+ let fb = gL(gG, hZ, 1)
2286+ let ln = ds(jw[dk])
2287+ let kS = split(valueOrElse(getString(ln), "0_0_0_0_0_0"), "_")
2288+ let lo = makeString(gE(kS, gG, hZ, 1), "_")
2289+ let kO = du(cM)
2290+ let kP = getString(kO)
2291+ let kL = if (isDefined(kP))
2292+ then split_51C(value(kP), "_")
22932293 else nil
2294- if (containsElement(kK, P))
2294+ if (containsElement(kL, P))
22952295 then throw(("Your staked lands already contain " + P))
2296- else if ((size(kK) >= aG))
2296+ else if ((size(kL) >= aG))
22972297 then throw((("Your already staked max (" + toString(aG)) + ") lands"))
22982298 else {
2299- let hZ = valueOrElse(getInteger(by(P)), 0)
2300- let kU = du(cL)
2301- let lo = valueOrElse(getInteger(kU), 0)
2302- let lp = invoke(dd, "onStakeUnstakeLand", [cL], nil)
2303- $Tuple2(([IntegerEntry(js, lastBlock.timestamp), IntegerEntry(bu(aC, P, cL), lastBlock.timestamp), StringEntry(kN, makeString_11C((kK :+ P), "_")), IntegerEntry(kU, (lo + jh)), StringEntry(bo(P), cL), StringEntry(eu(es), cL), IntegerEntry(et(P, cL), hZ), StringEntry(dq(), fa), StringEntry(lm, ln)] ++ lj), lp)
2299+ let ia = valueOrElse(getInteger(by(P)), 0)
2300+ let kV = dv(cM)
2301+ let lp = valueOrElse(getInteger(kV), 0)
2302+ let lq = invoke(de, "onStakeUnstakeLand", [cM], nil)
2303+ $Tuple2(([IntegerEntry(jt, lastBlock.timestamp), IntegerEntry(bu(aC, P, cM), lastBlock.timestamp), StringEntry(kO, makeString_11C((kL :+ P), "_")), IntegerEntry(kV, (lp + ji)), StringEntry(bo(P), cM), StringEntry(ev(et), cM), IntegerEntry(eu(P, cM), ia), StringEntry(dr(), fb), StringEntry(ln, lo)] ++ lk), lq)
23042304 }
23052305 }
23062306 }
23072307 }
23082308 }
23092309 }
23102310 }
23112311
23122312
23132313
2314-@Callable(gJ)
2315-func unstakeLand (jn) = {
2316- let lj = lf(gJ)
2317- if ((size(gJ.payments) != 0))
2314+@Callable(gK)
2315+func unstakeLand (jo) = {
2316+ let lk = lg(gK)
2317+ if ((size(gK.payments) != 0))
23182318 then throw("No payments required")
23192319 else {
2320- let c = toString(gJ.caller)
2321- let fZ = jl(c, ez, jn)
2322- let P = fZ._2
2323- let jv = fZ._3
2324- let kN = dt(c)
2325- let gF = gL(jv[di])
2326- let jh = dG(jv[dh])
2327- let hY = (jh / cE)
2328- let fa = gK(gF, hY, -1)
2329- let lm = dr(jv[dj])
2330- let kR = split(valueOrElse(getString(lm), "0_0_0_0_0_0"), "_")
2331- let ln = makeString(gD(kR, gF, hY, -1), "_")
2332- let jS = jI(c, P, jh, ez)
2333- let kK = split_51C(valueOrElse(getString(kN), ""), "_")
2334- let cZ = indexOf(kK, P)
2335- if (!(isDefined(cZ)))
2320+ let c = toString(gK.caller)
2321+ let ga = jm(c, eA, jo)
2322+ let P = ga._2
2323+ let jw = ga._3
2324+ let kO = du(c)
2325+ let gG = gM(jw[dj])
2326+ let ji = dH(jw[di])
2327+ let hZ = (ji / cF)
2328+ let fb = gL(gG, hZ, -1)
2329+ let ln = ds(jw[dk])
2330+ let kS = split(valueOrElse(getString(ln), "0_0_0_0_0_0"), "_")
2331+ let lo = makeString(gE(kS, gG, hZ, -1), "_")
2332+ let jT = jJ(c, P, ji, eA)
2333+ let kL = split_51C(valueOrElse(getString(kO), ""), "_")
2334+ let da = indexOf(kL, P)
2335+ if (!(isDefined(da)))
23362336 then throw(("Your staked lands don't contain " + P))
23372337 else {
23382338 let ax = lastBlock.timestamp
2339- let lq = valueOrElse(getInteger(dc, bK(c)), 0)
2340- if ((lq >= ax))
2341- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lq)))
2339+ let lr = valueOrElse(getInteger(dd, bK(c)), 0)
2340+ if ((lr >= ax))
2341+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lr)))
23422342 else {
2343- let lr = (valueOrElse(getInteger(dd, b(c)), 0) + cA)
2344- if ((lr > ax))
2345- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lr)))
2343+ let ls = (valueOrElse(getInteger(de, b(c)), 0) + cB)
2344+ if ((ls > ax))
2345+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(ls)))
23462346 else {
2347- let kU = du(c)
2348- let kV = valueOrElse(getInteger(kU), 0)
2349- let ls = if ((jh > kV))
2347+ let kV = dv(c)
2348+ let kW = valueOrElse(getInteger(kV), 0)
2349+ let lt = if ((ji > kW))
23502350 then 0
2351- else (kV - jh)
2352- let lp = invoke(dd, "onStakeUnstakeLand", [c], nil)
2353- $Tuple2(([ScriptTransfer(gJ.caller, 1, fromBase58String(P)), DeleteEntry(br(P)), DeleteEntry(bu(aC, P, c)), StringEntry(dq(), fa), StringEntry(lm, ln), StringEntry(jS._2, makeString(jS._3, ":")), if ((size(kK) > 1))
2354- then StringEntry(kN, makeString_11C(removeByIndex(kK, value(cZ)), "_"))
2355- else DeleteEntry(kN), IntegerEntry(kU, ls)] ++ lj), lp)
2351+ else (kW - ji)
2352+ let lq = invoke(de, "onStakeUnstakeLand", [c], nil)
2353+ $Tuple2(([ScriptTransfer(gK.caller, 1, fromBase58String(P)), DeleteEntry(br(P)), DeleteEntry(bu(aC, P, c)), StringEntry(dr(), fb), StringEntry(ln, lo), StringEntry(jT._2, makeString(jT._3, ":")), if ((size(kL) > 1))
2354+ then StringEntry(kO, makeString_11C(removeByIndex(kL, value(da)), "_"))
2355+ else DeleteEntry(kO), IntegerEntry(kV, lt)] ++ lk), lq)
23562356 }
23572357 }
23582358 }
23592359 }
23602360 }
23612361
23622362
23632363
2364-@Callable(gJ)
2364+@Callable(gK)
23652365 func stakeDuck () = {
2366- let lj = lf(gJ)
2367- if ((size(gJ.payments) != 1))
2366+ let lk = lg(gK)
2367+ if ((size(gK.payments) != 1))
23682368 then throw("Exactly one payment required")
23692369 else {
2370- let lk = value(gJ.payments[0])
2371- let bp = value(lk.assetId)
2372- let cL = toString(gJ.caller)
2373- if ((lk.amount != 1))
2370+ let ll = value(gK.payments[0])
2371+ let bp = value(ll.assetId)
2372+ let cM = toString(gK.caller)
2373+ if ((ll.amount != 1))
23742374 then throw((("NFT " + aD) + " token should be attached as payment"))
23752375 else {
2376- let jr = value(assetInfo(bp))
2377- if (if ((jr.issuer != dW))
2378- then (jr.issuer != dX)
2376+ let js = value(assetInfo(bp))
2377+ if (if ((js.issuer != dX))
2378+ then (js.issuer != dY)
23792379 else false)
23802380 then throw((("Unknown issuer of " + aD) + " token"))
2381- else if (!(contains(jr.name, aD)))
2381+ else if (!(contains(js.name, aD)))
23822382 then throw((("Only NFT " + aD) + " tokens are accepted"))
23832383 else {
2384- let lt = toBase58String(bp)
2385- let js = br(lt)
2386- if (isDefined(getInteger(js)))
2387- then throw((("NFT " + jr.name) + " is already staked"))
2388- else if (isDefined(getString(bH(cL))))
2389- then throw(("You already staked one duck: " + jr.name))
2384+ let lu = toBase58String(bp)
2385+ let jt = br(lu)
2386+ if (isDefined(getInteger(jt)))
2387+ then throw((("NFT " + js.name) + " is already staked"))
2388+ else if (isDefined(getString(bH(cM))))
2389+ then throw(("You already staked one duck: " + js.name))
23902390 else {
2391- let ld = bJ(lt)
2392- let cd = getString(ld)
2393- let hK = bI(lt)
2394- let lu = getString(hK)
2395- let ja = z(lt)
2396- let jb = ag(valueOrElse(getInteger(D(lt)), 0))
2397- let ks = valueOrElse(getInteger(ja), jb)
2398- ([IntegerEntry(js, lastBlock.timestamp), IntegerEntry(bu(aD, toBase58String(bp), cL), lastBlock.timestamp), StringEntry(bG(lt), cL), StringEntry(bH(cL), lt)] ++ (if (isDefined(cd))
2391+ let le = bJ(lu)
2392+ let cd = getString(le)
2393+ let hL = bI(lu)
2394+ let lv = getString(hL)
2395+ let jb = z(lu)
2396+ let jc = ag(valueOrElse(getInteger(D(lu)), 0))
2397+ let kt = valueOrElse(getInteger(jb), jc)
2398+ ([IntegerEntry(jt, lastBlock.timestamp), IntegerEntry(bu(aD, toBase58String(bp), cM), lastBlock.timestamp), StringEntry(bG(lu), cM), StringEntry(bH(cM), lu)] ++ (if (isDefined(cd))
23992399 then nil
2400- else ([StringEntry(ld, aJ)] ++ (if (isDefined(lu))
2400+ else ([StringEntry(le, aJ)] ++ (if (isDefined(lv))
24012401 then nil
2402- else (([StringEntry(hK, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(ja, ks)) ++ lj)))))
2402+ else (([StringEntry(hL, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jb, kt)) ++ lk)))))
24032403 }
24042404 }
24052405 }
24062406 }
24072407 }
24082408
24092409
24102410
2411-@Callable(gJ)
2412-func unstakeDuck (lt) = {
2413- let lj = lf(gJ)
2414- if ((size(gJ.payments) != 0))
2411+@Callable(gK)
2412+func unstakeDuck (lu) = {
2413+ let lk = lg(gK)
2414+ if ((size(gK.payments) != 0))
24152415 then throw("No payments required")
24162416 else {
2417- let bp = fromBase58String(lt)
2418- let cL = toString(gJ.caller)
2419- let jr = value(assetInfo(bp))
2420- let js = br(lt)
2421- if (!(isDefined(getInteger(js))))
2422- then throw((("NFT " + jr.name) + " is not staked"))
2423- else if (!(isDefined(getString(bH(cL)))))
2424- then throw((("The duck " + jr.name) + " is not staked"))
2417+ let bp = fromBase58String(lu)
2418+ let cM = toString(gK.caller)
2419+ let js = value(assetInfo(bp))
2420+ let jt = br(lu)
2421+ if (!(isDefined(getInteger(jt))))
2422+ then throw((("NFT " + js.name) + " is not staked"))
2423+ else if (!(isDefined(getString(bH(cM)))))
2424+ then throw((("The duck " + js.name) + " is not staked"))
24252425 else {
2426- let ju = valueOrErrorMessage(getString(bG(lt)), (("NFT " + jr.name) + " is orphaned"))
2427- if ((ju != cL))
2426+ let jv = valueOrErrorMessage(getString(bG(lu)), (("NFT " + js.name) + " is orphaned"))
2427+ if ((jv != cM))
24282428 then throw("Staked NFT is not yours")
2429- else if (ko(lt))
2429+ else if (kp(lu))
24302430 then throw("unstakeDuck_checkTournament")
2431- else if (kp(lt))
2431+ else if (kq(lu))
24322432 then throw("unstakeDuck_checkDelivery")
24332433 else {
2434- let ja = z(lt)
2435- let jb = ag(valueOrElse(getInteger(D(lt)), 0))
2436- let as = valueOrElse(getInteger(ja), jb)
2437- if ((jb > as))
2438- then throw((("Please heal your duck to " + toString(jb)) + "hp before unstaking"))
2439- else ([ScriptTransfer(gJ.caller, 1, bp), DeleteEntry(js), DeleteEntry(ja), DeleteEntry(bJ(lt)), DeleteEntry(bG(lt)), DeleteEntry(bu(aD, lt, cL)), DeleteEntry(bH(cL))] ++ lj)
2434+ let jb = z(lu)
2435+ let jc = ag(valueOrElse(getInteger(D(lu)), 0))
2436+ let as = valueOrElse(getInteger(jb), jc)
2437+ if ((jc > as))
2438+ then throw((("Please heal your duck to " + toString(jc)) + "hp before unstaking"))
2439+ else ([ScriptTransfer(gK.caller, 1, bp), DeleteEntry(jt), DeleteEntry(jb), DeleteEntry(bJ(lu)), DeleteEntry(bG(lu)), DeleteEntry(bu(aD, lu, cM)), DeleteEntry(bH(cM))] ++ lk)
24402440 }
24412441 }
24422442 }
24432443 }
24442444
24452445
24462446
2447-@Callable(gJ)
2448-func claimRes (eH,lv) = {
2449- let lj = lf(gJ)
2450- if ((size(gJ.payments) != 0))
2447+@Callable(gK)
2448+func claimRes (eI,lw) = {
2449+ let lk = lg(gK)
2450+ if ((size(gK.payments) != 0))
24512451 then throw("No payments required")
24522452 else {
2453- let c = toString(gJ.originCaller)
2454- let fi = jw(c, eH, ez, lv)
2453+ let c = toString(gK.originCaller)
2454+ let fj = jx(c, eI, eA, lw)
24552455 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
2456- $Tuple2(((((fi._1 ++ jY(A, fraction(U, eH, cD))._1) :+ StringEntry(fi._2, makeString(fi._3, ":"))) :+ StringEntry(fi._4, makeString(fi._5, ":"))) ++ lj), fi._3[bi])
2457- }
2458- }
2459-
2460-
2461-
2462-@Callable(gJ)
2463-func claimResToWH (eH,lv) = {
2464- let lj = lf(gJ)
2465- if ((size(gJ.payments) != 0))
2456+ $Tuple2(((((fj._1 ++ jZ(A, fraction(U, eI, cE))._1) :+ StringEntry(fj._2, makeString(fj._3, ":"))) :+ StringEntry(fj._4, makeString(fj._5, ":"))) ++ lk), fj._3[bi])
2457+ }
2458+ }
2459+
2460+
2461+
2462+@Callable(gK)
2463+func claimResToWH (eI,lw) = {
2464+ let lk = lg(gK)
2465+ if ((size(gK.payments) != 0))
24662466 then throw("No payments required")
24672467 else {
2468- let c = toString(gJ.originCaller)
2469- let fi = jw(c, eH, ey, lv)
2470- $Tuple2(((((fi._1 ++ ke(c, fraction(U, eH, cD))._1) :+ StringEntry(fi._2, makeString(fi._3, ":"))) :+ StringEntry(fi._4, makeString(fi._5, ":"))) ++ lj), fi._5[aZ])
2471- }
2472- }
2473-
2474-
2475-
2476-@Callable(gJ)
2477-func flight (iP,iQ) = {
2478- let lj = lg(gJ)
2479- if ((size(gJ.payments) != 0))
2468+ let c = toString(gK.originCaller)
2469+ let fj = jx(c, eI, ez, lw)
2470+ $Tuple2(((((fj._1 ++ kf(c, fraction(U, eI, cE))._1) :+ StringEntry(fj._2, makeString(fj._3, ":"))) :+ StringEntry(fj._4, makeString(fj._5, ":"))) ++ lk), fj._5[aZ])
2471+ }
2472+ }
2473+
2474+
2475+
2476+@Callable(gK)
2477+func flight (iQ,iR) = {
2478+ let lk = lh(gK)
2479+ if ((size(gK.payments) != 0))
24802480 then throw("No payments required")
24812481 else {
2482- let bL = toString(gJ.caller)
2483- let ho = iO(bL, iP, iQ)
2484- let iU = ho._1
2485- let A = ho._2
2486- let ld = bJ(A)
2487- let jp = valueOrElse(getString(ld), aJ)
2488- let iW = ho._4
2489- if ((iW == jp))
2482+ let bL = toString(gK.caller)
2483+ let hp = iP(bL, iQ, iR)
2484+ let iV = hp._1
2485+ let A = hp._2
2486+ let le = bJ(A)
2487+ let jq = valueOrElse(getString(le), aJ)
2488+ let iX = hp._4
2489+ if ((iX == jq))
24902490 then throw("You can't fly to the same location")
24912491 else {
2492- let cr = split(iW, "_")
2493- let lw = (cr[bm] == "T")
2494- let lx = (cr[bm] == "D")
2495- let gw = F(A)
2496- let ly = valueOrElse(getString(gw), ",;,_,;,_,;,_,;,_,;,_,;,")
2497- let lz = fj(ly, ho._5)
2498- let lA = lz._1
2499- let lB = lz._2
2500- let lC = if (cm(de, jp))
2501- then if (!(ck(iW)))
2502- then cp(jp, iW)
2503- else if ((iU > 0))
2504- then $Tuple2(iW, iU)
2505- else $Tuple2(jp, 0)
2506- else if (cc(de, jp))
2507- then if (!(cc(de, iW)))
2492+ let cr = split(iX, "_")
2493+ let lx = (cr[bm] == "T")
2494+ let ly = (cr[bm] == "D")
2495+ let gx = F(A)
2496+ let lz = valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,")
2497+ let lA = fk(lz, hp._5)
2498+ let lB = lA._1
2499+ let lC = lA._2
2500+ let lD = if (cm(df, jq))
2501+ then if (!(ck(iX)))
2502+ then cp(jq, iX, 5)
2503+ else if ((iV > 0))
2504+ then $Tuple2(iX, iV)
2505+ else $Tuple2(jq, 0)
2506+ else if (cc(df, jq))
2507+ then if (!(cc(df, iX)))
25082508 then throw("Your duck is taking part in the tournament")
25092509 else {
2510- let lD = parseIntValue(cr[bn])
2511- let lE = split(jp, "_")
2512- let ce = valueOrElse(getInteger(de, bP), 0)
2513- if ((lD != (parseIntValue(lE[bn]) + 1)))
2514- then cp(jp, iW)
2515- else if ((iU > 0))
2510+ let lE = parseIntValue(cr[bn])
2511+ let lF = split(jq, "_")
2512+ let ce = valueOrElse(getInteger(df, bP), 0)
2513+ if ((lE != (parseIntValue(lF[bn]) + 1)))
2514+ then cp(jq, iX, 7)
2515+ else if ((iV > 0))
25162516 then {
2517- let lF = valueOrElse(getInteger(de, bT(ce, A)), 0)
2518- let lG = if ((lD > lF))
2519- then invoke(de, "saveDuckResult", [A, lD], nil)
2517+ let lG = valueOrElse(getInteger(df, bT(ce, A)), 0)
2518+ let lH = if ((lE > lG))
2519+ then invoke(df, "saveDuckResult", [A, lE], nil)
25202520 else unit
2521- if ((lG == lG))
2522- then $Tuple2(iW, iU)
2521+ if ((lH == lH))
2522+ then $Tuple2(iX, iV)
25232523 else throw("Strict value is not equal to itself.")
25242524 }
2525- else $Tuple2(jp, 0)
2525+ else $Tuple2(jq, 0)
25262526 }
2527- else if (!(ch(jp)))
2527+ else if (!(ch(jq)))
25282528 then {
2529- let lH = dD(invoke(this, "autoExitDelivery", [A], nil))
2530- if ((lH == lH))
2531- then if (lx)
2532- then lH
2533- else if ((iU > 0))
2534- then $Tuple2(iW, iU)
2535- else $Tuple2(lH._1, 0)
2529+ let lI = dE(invoke(this, "autoExitDelivery", [A], nil))
2530+ if ((lI == lI))
2531+ then if (ly)
2532+ then lI
2533+ else if ((iV > 0))
2534+ then $Tuple2(iX, iV)
2535+ else $Tuple2(lI._1, 0)
25362536 else throw("Strict value is not equal to itself.")
25372537 }
2538- else if (!(lx))
2538+ else if (!(ly))
25392539 then throw("Your duck is taking part in delivery")
2540- else if (!(ch(iW)))
2541- then cp(jp, iW)
2540+ else if (!(ch(iX)))
2541+ then cp(jq, iX, 13)
25422542 else {
2543- let lD = parseIntValue(cr[bn])
2544- let lE = split(jp, "_")
2545- if ((lD != (parseIntValue(lE[bn]) + 1)))
2546- then cp(jp, iW)
2547- else if (if ((iU > 0))
2548- then (3 > lD)
2543+ let lE = parseIntValue(cr[bn])
2544+ let lF = split(jq, "_")
2545+ if ((lE != (parseIntValue(lF[bn]) + 1)))
2546+ then cp(jq, iX, 14)
2547+ else if (if ((iV > 0))
2548+ then (3 > lE)
25492549 else false)
2550- then $Tuple2(iW, iU)
2550+ then $Tuple2(iX, iV)
25512551 else {
2552- let lH = dD(invoke(this, "autoExitDelivery", [A], nil))
2553- if ((lH == lH))
2554- then lH
2552+ let lI = dE(invoke(this, "autoExitDelivery", [A], nil))
2553+ if ((lI == lI))
2554+ then lI
25552555 else throw("Strict value is not equal to itself.")
25562556 }
25572557 }
2558- let lI = lC._1
2559- let lJ = lC._2
2560- $Tuple2(((([StringEntry(ld, lI), StringEntry(gw, lA), IntegerEntry(z(A), iU)] ++ lj) ++ (if (lB)
2558+ let lJ = lD._1
2559+ let lK = lD._2
2560+ $Tuple2(((([StringEntry(le, lJ), StringEntry(gx, lB), IntegerEntry(z(A), iV)] ++ lk) ++ (if (lC)
25612561 then [StringEntry(L(A), "0_0_0_0_0")]
2562- else nil)) ++ jY(A, if ((iU > 0))
2562+ else nil)) ++ jZ(A, if ((iV > 0))
25632563 then V
2564- else W)._1), ho._3)
2564+ else W)._1), hp._3)
25652565 }
25662566 }
25672567 }
25682568
25692569
25702570
2571-@Callable(gJ)
2572-func heal (lK,lL,lM) = {
2573- let lj = lf(gJ)
2574- if (if (if ((0 > lK))
2575- then true
2576- else (0 > lL))
2571+@Callable(gK)
2572+func heal (lL,lM,lN) = {
2573+ let lk = lg(gK)
2574+ if (if (if ((0 > lL))
25772575 then true
25782576 else (0 > lM))
2577+ then true
2578+ else (0 > lN))
25792579 then throw("Quantity cannot be negative")
25802580 else {
2581- let A = valueOrErrorMessage(getString(bH(toString(gJ.caller))), "You don't have a duck staked")
2582- if (ko(A))
2581+ let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked")
2582+ if (kp(A))
25832583 then throw("heal_checkTournament")
2584- else if (kp(A))
2584+ else if (kq(A))
25852585 then throw("heal_checkDelivery")
25862586 else {
2587- let lN = [lK, lL, lM]
2588- let ja = z(A)
2589- let jb = ag(valueOrElse(getInteger(D(A)), 0))
2590- let lO = valueOrElse(getInteger(ja), jb)
2591- if ((lO >= jb))
2592- then throw((("HP should be < " + toString(jb)) + " to heal"))
2587+ let lO = [lL, lM, lN]
2588+ let jb = z(A)
2589+ let jc = ag(valueOrElse(getInteger(D(A)), 0))
2590+ let lP = valueOrElse(getInteger(jb), jc)
2591+ if ((lP >= jc))
2592+ then throw((("HP should be < " + toString(jc)) + " to heal"))
25932593 else {
2594- let hK = bI(A)
2595- let in = hJ(hK)
2596- let lP = if ((in[bk] == ""))
2594+ let hL = bI(A)
2595+ let io = hK(hL)
2596+ let lQ = if ((io[bk] == ""))
25972597 then nil
2598- else split_4C(in[bk], "_")
2599- func lQ (eQ,co) = {
2600- let dz = eQ._2
2601- let hf = if ((size(lP) > dz))
2602- then parseIntValue(lP[dz])
2598+ else split_4C(io[bk], "_")
2599+ func lR (eR,co) = {
2600+ let dA = eR._2
2601+ let hg = if ((size(lQ) > dA))
2602+ then parseIntValue(lQ[dA])
26032603 else 0
2604- if ((3 > dz))
2604+ if ((3 > dA))
26052605 then {
2606- let lR = lN[dz]
2607- if ((lR > hf))
2608- then throw(((("You have only " + toString(hf)) + " of ") + aO[dz]))
2609- else $Tuple3((eQ._1 :+ toString((hf - lR))), (dz + 1), (eQ._3 + (parseIntValue(split(co, "_")[aU]) * lR)))
2606+ let lS = lO[dA]
2607+ if ((lS > hg))
2608+ then throw(((("You have only " + toString(hg)) + " of ") + aO[dA]))
2609+ else $Tuple3((eR._1 :+ toString((hg - lS))), (dA + 1), (eR._3 + (parseIntValue(split(co, "_")[aU]) * lS)))
26102610 }
2611- else $Tuple3((eQ._1 :+ toString(hf)), (dz + 1), eQ._3)
2611+ else $Tuple3((eR._1 :+ toString(hg)), (dA + 1), eR._3)
26122612 }
26132613
2614- let fi = {
2615- let eS = aS
2616- let eT = size(eS)
2617- let eU = $Tuple3(nil, 0, 0)
2618- func eV (eW,eX) = if ((eX >= eT))
2619- then eW
2620- else lQ(eW, eS[eX])
2621-
2622- func eY (eW,eX) = if ((eX >= eT))
2623- then eW
2614+ let fj = {
2615+ let eT = aS
2616+ let eU = size(eT)
2617+ let eV = $Tuple3(nil, 0, 0)
2618+ func eW (eX,eY) = if ((eY >= eU))
2619+ then eX
2620+ else lR(eX, eT[eY])
2621+
2622+ func eZ (eX,eY) = if ((eY >= eU))
2623+ then eX
26242624 else throw("List size exceeds 50")
26252625
2626- eY(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eU, 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)
2626+ eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 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)
26272627 }
2628- let lS = min([jb, (lO + fi._3)])
2629- $Tuple2((([IntegerEntry(ja, lS), StringEntry(hK, makeString_2C([in[bh], in[bi], in[bj], makeString(fi._1, "_")], ":"))] ++ lj) ++ jY(A, (ad * ((lK + lL) + lM)))._1), lS)
2628+ let lT = min([jc, (lP + fj._3)])
2629+ $Tuple2((([IntegerEntry(jb, lT), StringEntry(hL, makeString_2C([io[bh], io[bi], io[bj], makeString(fj._1, "_")], ":"))] ++ lk) ++ jZ(A, (ad * ((lL + lM) + lN)))._1), lT)
26302630 }
26312631 }
26322632 }
26332633 }
26342634
26352635
26362636
2637-@Callable(gJ)
2637+@Callable(gK)
26382638 func healES () = {
2639- let lj = lf(gJ)
2640- if ((size(gJ.payments) != 1))
2639+ let lk = lg(gK)
2640+ if ((size(gK.payments) != 1))
26412641 then throw("Exactly one payment required")
26422642 else {
2643- let lk = value(gJ.payments[0])
2644- if ((lk.assetId != cw))
2643+ let ll = value(gK.payments[0])
2644+ if ((ll.assetId != cx))
26452645 then throw("Allowed USDT payment only!")
26462646 else {
2647- let A = valueOrErrorMessage(getString(bH(toString(gJ.caller))), "You don't have a duck staked")
2648- if (ko(A))
2647+ let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked")
2648+ if (kp(A))
26492649 then throw("healES_checkTournament")
2650- else if (kp(A))
2650+ else if (kq(A))
26512651 then throw("healES_checkDelivery")
26522652 else {
2653- let ja = z(A)
2654- let jb = ag(valueOrElse(getInteger(D(A)), 0))
2655- let lO = valueOrElse(getInteger(ja), jb)
2656- if ((lO > 0))
2653+ let jb = z(A)
2654+ let jc = ag(valueOrElse(getInteger(D(A)), 0))
2655+ let lP = valueOrElse(getInteger(jb), jc)
2656+ if ((lP > 0))
26572657 then throw("HP should be 0 to call Emergency Service")
26582658 else {
2659- let hK = bI(A)
2660- let in = hJ(hK)
2661- let lP = if ((in[bk] == ""))
2659+ let hL = bI(A)
2660+ let io = hK(hL)
2661+ let lQ = if ((io[bk] == ""))
26622662 then nil
2663- else split_4C(in[bk], "_")
2664- let lT = if ((size(lP) > 0))
2665- then parseIntValue(lP[0])
2663+ else split_4C(io[bk], "_")
2664+ let lU = if ((size(lQ) > 0))
2665+ then parseIntValue(lQ[0])
26662666 else 0
2667- let lU = if ((size(lP) > 1))
2668- then parseIntValue(lP[1])
2667+ let lV = if ((size(lQ) > 1))
2668+ then parseIntValue(lQ[1])
26692669 else 0
2670- let lV = if ((size(lP) > 2))
2671- then parseIntValue(lP[2])
2670+ let lW = if ((size(lQ) > 2))
2671+ then parseIntValue(lQ[2])
26722672 else 0
2673- if (if (if ((lT > 0))
2674- then true
2675- else (lU > 0))
2673+ if (if (if ((lU > 0))
26762674 then true
26772675 else (lV > 0))
2676+ then true
2677+ else (lW > 0))
26782678 then throw("You have to use own Medical Kit")
26792679 else {
2680- let lW = getString(db, bM())
2681- let lX = if (isDefined(lW))
2682- then split_4C(value(lW), "_")
2680+ let lX = getString(dc, bM())
2681+ let lY = if (isDefined(lX))
2682+ then split_4C(value(lX), "_")
26832683 else nil
2684- let lY = if ((size(lX) > 0))
2685- then parseIntValue(lX[0])
2684+ let lZ = if ((size(lY) > 0))
2685+ then parseIntValue(lY[0])
26862686 else 0
2687- if ((0 >= lY))
2687+ if ((0 >= lZ))
26882688 then throw("There are no Medical Kits L1 at Emergency Service storage")
26892689 else {
2690- let lS = (lO + parseIntValue(split(aS[0], "_")[aU]))
2691- let lZ = makeString([toString((lY - 1)), removeByIndex(lX, 0)], "_")
2690+ let lT = (lP + parseIntValue(split(aS[0], "_")[aU]))
2691+ let ma = makeString([toString((lZ - 1)), removeByIndex(lY, 0)], "_")
26922692 let co = split(aS[0], "_")
2693- let ma = cn(co)
2694- let mb = fraction((ma * aL), aK, (cD * aX))
2695- if ((lk.amount != mb))
2696- then throw(("Payment attached should be " + toString(mb)))
2693+ let mb = cn(co)
2694+ let mc = fraction((mb * aL), aK, (cE * aX))
2695+ if ((ll.amount != mc))
2696+ then throw(("Payment attached should be " + toString(mc)))
26972697 else {
2698- let fi = dv(invoke(db, "updateEsStorage", [lZ], [AttachedPayment(cw, mb)]))
2699- $Tuple2(((lj :+ IntegerEntry(ja, lS)) ++ jY(A, X)._1), fi)
2698+ let fj = dw(invoke(dc, "updateEsStorage", [ma], [AttachedPayment(cx, mc)]))
2699+ $Tuple2(((lk :+ IntegerEntry(jb, lT)) ++ jZ(A, X)._1), fj)
27002700 }
27012701 }
27022702 }
27032703 }
27042704 }
27052705 }
27062706 }
27072707 }
27082708
27092709
27102710
2711-@Callable(gJ)
2712-func updateBackpack (A,mc) = if ((gJ.caller != db))
2711+@Callable(gK)
2712+func updateBackpack (A,md) = if ((gK.caller != dc))
27132713 then throw("permission denied")
2714- else $Tuple2([StringEntry(bI(A), mc)], mc)
2715-
2716-
2717-
2718-@Callable(gJ)
2714+ else $Tuple2([StringEntry(bI(A), md)], md)
2715+
2716+
2717+
2718+@Callable(gK)
27192719 func commitForRandom () = {
2720- let lj = lf(gJ)
2721- let md = (height + do)
2722- let c = toString(gJ.caller)
2723- $Tuple2(([IntegerEntry(dp(c), md)] ++ lj), md)
2724- }
2725-
2726-
2727-
2728-@Callable(gJ)
2720+ let lk = lg(gK)
2721+ let me = (height + dp)
2722+ let c = toString(gK.caller)
2723+ $Tuple2(([IntegerEntry(dq(c), me)] ++ lk), me)
2724+ }
2725+
2726+
2727+
2728+@Callable(gK)
27292729 func buySLand () = {
2730- let lj = lf(gJ)
2731- if ((size(gJ.payments) != 1))
2730+ let lk = lg(gK)
2731+ if ((size(gK.payments) != 1))
27322732 then throw("Exactly one payment required")
27332733 else {
2734- let lk = value(gJ.payments[0])
2735- if ((lk.assetId != cw))
2734+ let ll = value(gK.payments[0])
2735+ if ((ll.assetId != cx))
27362736 then throw("Allowed USDT payment only!")
2737- else if ((lk.amount != ef))
2738- then throw(("Payment attached should be " + toString(ef)))
2737+ else if ((ll.amount != eg))
2738+ then throw(("Payment attached should be " + toString(eg)))
27392739 else {
2740- let fi = iH(gJ.caller, gJ.transactionId)
2741- let me = dy(invoke(df, "burnAcres", [eg], nil))
2742- $Tuple2((((fi._1 :+ ScriptTransfer(db, lk.amount, cw)) ++ ke(toString(gJ.caller), Z)._1) ++ lj), $Tuple2(fi._2._1, me))
2740+ let fj = iI(gK.caller, gK.transactionId)
2741+ let mf = dz(invoke(dg, "burnAcres", [eh], nil))
2742+ $Tuple2((((fj._1 :+ ScriptTransfer(dc, ll.amount, cx)) ++ kf(toString(gK.caller), Z)._1) ++ lk), $Tuple2(fj._2._1, mf))
27432743 }
27442744 }
27452745 }
27462746
27472747
27482748
2749-@Callable(gJ)
2750-func expedition (iP,iQ) = {
2751- let lj = lf(gJ)
2752- if ((size(gJ.payments) != 0))
2749+@Callable(gK)
2750+func expedition (iQ,iR) = {
2751+ let lk = lg(gK)
2752+ if ((size(gK.payments) != 0))
27532753 then throw("No payments required")
27542754 else {
2755- let bL = toString(gJ.caller)
2756- let ho = iO(bL, iP, iQ)
2757- let A = ho._2
2758- let ja = z(A)
2759- let hK = bI(A)
2760- let in = hJ(hK)
2761- let jP = split(in[bj], "_")
2762- let jR = makeString(fc(true, jP, ee), "_")
2763- let gw = F(A)
2764- let ly = valueOrElse(getString(gw), ",;,_,;,_,;,_,;,_,;,_,;,")
2765- let mf = fj(ly, ho._5)
2766- let lA = mf._1
2767- let lB = mf._2
2768- let mg = iH(gJ.caller, gJ.transactionId)
2769- let iN = mg._2._1
2770- let fi = if ((0 >= ho._1))
2771- then $Tuple3([IntegerEntry(ja, 0), StringEntry(gw, lA)], "", 0)
2772- else $Tuple3((mg._1 ++ (if (lB)
2755+ let bL = toString(gK.caller)
2756+ let hp = iP(bL, iQ, iR)
2757+ let A = hp._2
2758+ let jb = z(A)
2759+ let hL = bI(A)
2760+ let io = hK(hL)
2761+ let jQ = split(io[bj], "_")
2762+ let jS = makeString(fd(true, jQ, ef), "_")
2763+ let gx = F(A)
2764+ let lz = valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,")
2765+ let mg = fk(lz, hp._5)
2766+ let lB = mg._1
2767+ let lC = mg._2
2768+ let mh = iI(gK.caller, gK.transactionId)
2769+ let iO = mh._2._1
2770+ let fj = if ((0 >= hp._1))
2771+ then $Tuple3([IntegerEntry(jb, 0), StringEntry(gx, lB)], "", 0)
2772+ else $Tuple3((mh._1 ++ (if (lC)
27732773 then [StringEntry(L(A), "0_0_0_0_0")]
2774- else ((((nil :+ StringEntry(bJ(A), makeString([mg._2._2, "L", iN], "_"))) :+ IntegerEntry(ja, ho._1)) :+ StringEntry(gw, lA)) :+ StringEntry(hK, makeString([in[bh], in[bi], jR, in[bk]], ":"))))), iN, ho._3)
2775- if (ko(A))
2774+ else ((((nil :+ StringEntry(bJ(A), makeString([mh._2._2, "L", iO], "_"))) :+ IntegerEntry(jb, hp._1)) :+ StringEntry(gx, lB)) :+ StringEntry(hL, makeString([io[bh], io[bi], jS, io[bk]], ":"))))), iO, hp._3)
2775+ if (kp(A))
27762776 then throw("expedition_checkTournament")
2777- else if (kp(A))
2777+ else if (kq(A))
27782778 then throw("expedition_checkDelivery")
27792779 else {
2780- let me = dy(invoke(df, "burnAcres", [eg], nil))
2781- $Tuple2(((fi._1 ++ jY(A, Z)._1) ++ lj), $Tuple3(fi._2, fi._3, me))
2780+ let mf = dz(invoke(dg, "burnAcres", [eh], nil))
2781+ $Tuple2(((fj._1 ++ jZ(A, Z)._1) ++ lk), $Tuple3(fj._2, fj._3, mf))
27822782 }
27832783 }
27842784 }
27852785
27862786
27872787
2788-@Callable(gJ)
2788+@Callable(gK)
27892789 func buySLandForAcres () = {
2790- let lj = lf(gJ)
2791- if ((size(gJ.payments) != 1))
2790+ let lk = lg(gK)
2791+ if ((size(gK.payments) != 1))
27922792 then throw("exactly 1 payment must be attached")
27932793 else {
2794- let lk = gJ.payments[0]
2795- let fp = lk.amount
2796- if (if (!(isDefined(lk.assetId)))
2794+ let ll = gK.payments[0]
2795+ let fq = ll.amount
2796+ if (if (!(isDefined(ll.assetId)))
27972797 then true
2798- else (value(lk.assetId) != dn))
2798+ else (value(ll.assetId) != do))
27992799 then throw("ACRES payments only!")
2800- else if ((fp != eg))
2801- then throw(("Payment attached should be " + toString(eg)))
2800+ else if ((fq != eh))
2801+ then throw(("Payment attached should be " + toString(eh)))
28022802 else {
2803- let fi = iH(gJ.caller, gJ.transactionId)
2804- let me = dy(invoke(df, "burnAcres", [eg], [AttachedPayment(dn, fp)]))
2805- $Tuple2(((fi._1 ++ ke(toString(gJ.caller), Z)._1) ++ lj), $Tuple2(fi._2._1, me))
2803+ let fj = iI(gK.caller, gK.transactionId)
2804+ let mf = dz(invoke(dg, "burnAcres", [eh], [AttachedPayment(do, fq)]))
2805+ $Tuple2(((fj._1 ++ kf(toString(gK.caller), Z)._1) ++ lk), $Tuple2(fj._2._1, mf))
28062806 }
28072807 }
28082808 }
28092809
28102810
28112811
2812-@Callable(gJ)
2812+@Callable(gK)
28132813 func upgradeInfra (P) = {
2814- let lj = lf(gJ)
2815- if ((size(gJ.payments) != 0))
2814+ let lk = lg(gK)
2815+ if ((size(gK.payments) != 0))
28162816 then throw("No payments required")
28172817 else {
2818- let fi = jJ(true, gJ.caller, 0, P)
2819- let A = valueOrErrorMessage(getString(bH(toString(gJ.caller))), "You don't have a duck staked")
2820- $Tuple2(((fi._1 ++ lj) ++ jY(A, fraction(aa, fi._3, cD))._1), fi._2)
2821- }
2822- }
2823-
2824-
2825-
2826-@Callable(gJ)
2827-func activateArtifact (mh,mi) = {
2828- let lj = lf(gJ)
2829- if ((size(gJ.payments) != 0))
2818+ let fj = jK(true, gK.caller, 0, P)
2819+ let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked")
2820+ $Tuple2(((fj._1 ++ lk) ++ jZ(A, fraction(aa, fj._3, cE))._1), fj._2)
2821+ }
2822+ }
2823+
2824+
2825+
2826+@Callable(gK)
2827+func activateArtifact (mi,mj) = {
2828+ let lk = lg(gK)
2829+ if ((size(gK.payments) != 0))
28302830 then throw("No payments required")
28312831 else {
2832- let c = toString(gJ.caller)
2833- let fi = {
2834- let cx = mh
2835- if (("PRESALE" == cx))
2836- then km(c, mi)
2837- else if (("ONBOARD" == cx))
2838- then kf(c)
2832+ let c = toString(gK.caller)
2833+ let fj = {
2834+ let cy = mi
2835+ if (("PRESALE" == cy))
2836+ then kn(c, mj)
2837+ else if (("ONBOARD" == cy))
2838+ then kg(c)
28392839 else throw("Unknown artifact")
28402840 }
2841- (fi ++ lj)
2842- }
2843- }
2844-
2845-
2846-
2847-@Callable(gJ)
2848-func mergeLands (kC) = {
2849- let lj = lf(gJ)
2850- if ((size(gJ.payments) != 0))
2841+ (fj ++ lk)
2842+ }
2843+ }
2844+
2845+
2846+
2847+@Callable(gK)
2848+func mergeLands (kD) = {
2849+ let lk = lg(gK)
2850+ if ((size(gK.payments) != 0))
28512851 then throw("No payments required")
28522852 else {
2853- let fi = la(toString(gJ.caller), kC)
2854- $Tuple2(((fi._1 ++ lj) ++ ke(toString(gJ.caller), ab)._1), fi._2)
2855- }
2856- }
2857-
2858-
2859-
2860-@Callable(gJ)
2861-func cargoExchange (mj,P) = {
2862- let lj = lf(gJ)
2863- if ((size(gJ.payments) != 0))
2853+ let fj = lb(toString(gK.caller), kD)
2854+ $Tuple2(((fj._1 ++ lk) ++ kf(toString(gK.caller), ab)._1), fj._2)
2855+ }
2856+ }
2857+
2858+
2859+
2860+@Callable(gK)
2861+func cargoExchange (mk,P) = {
2862+ let lk = lg(gK)
2863+ if ((size(gK.payments) != 0))
28642864 then throw("No payments required")
28652865 else {
2866- let im = split_4C(mj, ":")
2867- let c = toString(gJ.originCaller)
2868- let jr = value(assetInfo(fromBase58String(P)))
2869- let js = br(P)
2870- if (!(isDefined(getInteger(js))))
2871- then throw((jr.name + " is not staked"))
2866+ let in = split_4C(mk, ":")
2867+ let c = toString(gK.originCaller)
2868+ let js = value(assetInfo(fromBase58String(P)))
2869+ let jt = br(P)
2870+ if (!(isDefined(getInteger(jt))))
2871+ then throw((js.name + " is not staked"))
28722872 else {
2873- let ju = valueOrErrorMessage(getString(bo(P)), (("NFT " + jr.name) + " is orphaned"))
2874- if ((ju != c))
2873+ let jv = valueOrErrorMessage(getString(bo(P)), (("NFT " + js.name) + " is orphaned"))
2874+ if ((jv != c))
28752875 then throw((aC + " is not yours"))
28762876 else {
2877- let hY = (dG(split(jr.description, "_")[dh]) / cE)
2878- let hZ = valueOrElse(getInteger(by(P)), 0)
2877+ let hZ = (dH(split(js.description, "_")[di]) / cF)
2878+ let ia = valueOrElse(getInteger(by(P)), 0)
28792879 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
2880- let jp = valueOrElse(getString(bJ(A)), aJ)
2881- let cf = split(value(jp), "_")
2880+ let jq = valueOrElse(getString(bJ(A)), aJ)
2881+ let cf = split(value(jq), "_")
28822882 if ((cf[bm] != "L"))
28832883 then throw((("Duck location type is " + cf[bm]) + ", but should be L"))
28842884 else if ((cf[bn] != P))
28852885 then throw(("Duck should be on the land " + P))
28862886 else {
2887- let hX = bx(P)
2888- let hO = hW(hX, hY, hZ)
2889- let hK = bI(A)
2890- let in = hJ(hK)
2891- let fi = il(im, hO, in)
2892- let if = split(hO[bc], "_")
2893- let jG = (parseIntValue(if[be]) + fi._7)
2894- let jH = (parseIntValue(if[bf]) - fi._7)
2895- ([StringEntry(hK, makeString_2C([in[bh], fi._4, fi._5, fi._6], ":")), StringEntry(hX, makeString_2C([hO[aY], fi._1, fi._2, fi._3, makeString([if[bd], toString(jG), toString(jH), if[bg]], "_")], ":"))] ++ lj)
2887+ let hY = bx(P)
2888+ let hP = hX(hY, hZ, ia)
2889+ let hL = bI(A)
2890+ let io = hK(hL)
2891+ let fj = im(in, hP, io)
2892+ let ig = split(hP[bc], "_")
2893+ let jH = (parseIntValue(ig[be]) + fj._7)
2894+ let jI = (parseIntValue(ig[bf]) - fj._7)
2895+ ([StringEntry(hL, makeString_2C([io[bh], fj._4, fj._5, fj._6], ":")), StringEntry(hY, makeString_2C([hP[aY], fj._1, fj._2, fj._3, makeString([ig[bd], toString(jH), toString(jI), ig[bg]], "_")], ":"))] ++ lk)
28962896 }
28972897 }
28982898 }
28992899 }
29002900 }
29012901
29022902
29032903
2904-@Callable(gJ)
2905-func saveWarehouse (ib,P) = if ((gJ.caller != db))
2904+@Callable(gK)
2905+func saveWarehouse (ic,P) = if ((gK.caller != dc))
29062906 then throw("Access denied")
29072907 else {
2908- let hX = bx(P)
2909- let ic = split_4C(ib, ":")
2910- if ((size(ic) != 5))
2908+ let hY = bx(P)
2909+ let id = split_4C(ic, ":")
2910+ if ((size(id) != 5))
29112911 then throw("warehouse string should contain 4 ':' separators")
29122912 else {
2913- let mk = split(ic[bc], "_")[bd]
2914- let jG = hN(ic)
2915- let ml = hL(ic[aY])
2916- let jH = ((ml - parseIntValue(mk)) - jG)
2917- let mm = makeString_2C([ic[aY], ic[aZ], ic[ba], ic[bb], makeString([mk, toString(jG), toString(jH), toString(ml)], "_")], ":")
2918- $Tuple2([StringEntry(hX, mm)], mm)
2913+ let ml = split(id[bc], "_")[bd]
2914+ let jH = hO(id)
2915+ let mm = hM(id[aY])
2916+ let jI = ((mm - parseIntValue(ml)) - jH)
2917+ let mn = makeString_2C([id[aY], id[aZ], id[ba], id[bb], makeString([ml, toString(jH), toString(jI), toString(mm)], "_")], ":")
2918+ $Tuple2([StringEntry(hY, mn)], mn)
29192919 }
29202920 }
29212921
29222922
29232923
2924-@Callable(gJ)
2925-func fixWarehouseFormat (P) = if ((gJ.caller != da))
2924+@Callable(gK)
2925+func fixWarehouseFormat (P) = if ((gK.caller != db))
29262926 then throw("Access denied")
29272927 else {
2928- let hX = bx(P)
2929- let jr = value(assetInfo(fromBase58String(P)))
2930- let hY = (dG(split(jr.description, "_")[dh]) / cE)
2931- let hZ = valueOrElse(getInteger(by(P)), 0)
2932- let ic = hW(hX, hY, hZ)
2933- let mk = dy(invoke(db, "recalcLockedVolumeREADONLY", [P, ic], nil))
2934- let jG = hN(ic)
2935- let ml = hL(ic[aY])
2936- let jH = ((ml - mk) - jG)
2937- let mm = makeString_2C([ic[aY], ic[aZ], ic[ba], ic[bb], makeString([toString(mk), toString(jG), toString(jH), toString(ml)], "_")], ":")
2938- $Tuple2([StringEntry(hX, mm)], mm)
2928+ let hY = bx(P)
2929+ let js = value(assetInfo(fromBase58String(P)))
2930+ let hZ = (dH(split(js.description, "_")[di]) / cF)
2931+ let ia = valueOrElse(getInteger(by(P)), 0)
2932+ let id = hX(hY, hZ, ia)
2933+ let ml = dz(invoke(dc, "recalcLockedVolumeREADONLY", [P, id], nil))
2934+ let jH = hO(id)
2935+ let mm = hM(id[aY])
2936+ let jI = ((mm - ml) - jH)
2937+ let mn = makeString_2C([id[aY], id[aZ], id[ba], id[bb], makeString([toString(ml), toString(jH), toString(jI), toString(mm)], "_")], ":")
2938+ $Tuple2([StringEntry(hY, mn)], mn)
29392939 }
29402940
29412941
29422942
2943-@Callable(gJ)
2944-func fixContinentProportions (kC) = if ((gJ.caller != da))
2943+@Callable(gK)
2944+func fixContinentProportions (kD) = if ((gK.caller != db))
29452945 then throw("Access denied")
29462946 else {
2947- func mn (eQ,mo) = (eQ :+ valueOrElse(getString(dr(mo)), "0_0_0_0_0_0"))
2948-
2949- let gt = {
2950- let eS = aP
2951- let eT = size(eS)
2952- let eU = nil
2953- func eV (eW,eX) = if ((eX >= eT))
2954- then eW
2955- else mn(eW, eS[eX])
2956-
2957- func eY (eW,eX) = if ((eX >= eT))
2958- then eW
2947+ func mo (eR,mp) = (eR :+ valueOrElse(getString(ds(mp)), "0_0_0_0_0_0"))
2948+
2949+ let gu = {
2950+ let eT = aP
2951+ let eU = size(eT)
2952+ let eV = nil
2953+ func eW (eX,eY) = if ((eY >= eU))
2954+ then eX
2955+ else mo(eX, eT[eY])
2956+
2957+ func eZ (eX,eY) = if ((eY >= eU))
2958+ then eX
29592959 else throw("List size exceeds 5")
29602960
2961- eY(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5)
2962- }
2963- func mp (eQ,P) = {
2964- let jr = value(assetInfo(fromBase58String(P)))
2965- let jv = split(jr.description, "_")
2966- let hY = (dG(jv[dh]) / cE)
2967- let mo = jv[dj]
2968- let gF = gL(jv[di])
2969- let hn = value(indexOf(aP, mo))
2970- let kR = split(eQ[hn], "_")
2971- let mq = makeString(gD(kR, gF, hY, 1), "_")
2972- let cx = mo
2973- if (("Americas" == cx))
2974- then [mq, eQ[1], eQ[2], eQ[3], eQ[4]]
2975- else if (("Europe" == cx))
2976- then [eQ[0], mq, eQ[2], eQ[3], eQ[4]]
2977- else if (("Asia" == cx))
2978- then [eQ[0], eQ[1], mq, eQ[3], eQ[4]]
2979- else if (("Africa" == cx))
2980- then [eQ[0], eQ[1], eQ[2], mq, eQ[4]]
2981- else if (("Oceania" == cx))
2982- then [eQ[0], eQ[1], eQ[2], eQ[3], mq]
2961+ eZ(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5)
2962+ }
2963+ func mq (eR,P) = {
2964+ let js = value(assetInfo(fromBase58String(P)))
2965+ let jw = split(js.description, "_")
2966+ let hZ = (dH(jw[di]) / cF)
2967+ let mp = jw[dk]
2968+ let gG = gM(jw[dj])
2969+ let ho = value(indexOf(aP, mp))
2970+ let kS = split(eR[ho], "_")
2971+ let mr = makeString(gE(kS, gG, hZ, 1), "_")
2972+ let cy = mp
2973+ if (("Americas" == cy))
2974+ then [mr, eR[1], eR[2], eR[3], eR[4]]
2975+ else if (("Europe" == cy))
2976+ then [eR[0], mr, eR[2], eR[3], eR[4]]
2977+ else if (("Asia" == cy))
2978+ then [eR[0], eR[1], mr, eR[3], eR[4]]
2979+ else if (("Africa" == cy))
2980+ then [eR[0], eR[1], eR[2], mr, eR[4]]
2981+ else if (("Oceania" == cy))
2982+ then [eR[0], eR[1], eR[2], eR[3], mr]
29832983 else throw("wrong continent")
29842984 }
29852985
2986- let fb = {
2987- let eS = kC
2988- let eT = size(eS)
2989- let eU = gt
2990- func hE (eW,eX) = if ((eX >= eT))
2991- then eW
2992- else mp(eW, eS[eX])
2993-
2994- func hF (eW,eX) = if ((eX >= eT))
2995- then eW
2986+ let fc = {
2987+ let eT = kD
2988+ let eU = size(eT)
2989+ let eV = gu
2990+ func hF (eX,eY) = if ((eY >= eU))
2991+ then eX
2992+ else mq(eX, eT[eY])
2993+
2994+ func hG (eX,eY) = if ((eY >= eU))
2995+ then eX
29962996 else throw("List size exceeds 100")
29972997
2998- hF(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(hE(eU, 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)
2999- }
3000- $Tuple2([StringEntry(dr("Americas"), fb[0]), StringEntry(dr("Europe"), fb[1]), StringEntry(dr("Asia"), fb[2]), StringEntry(dr("Africa"), fb[3]), StringEntry(dr("Oceania"), fb[4])], 0)
2998+ hG(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(eV, 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)
2999+ }
3000+ $Tuple2([StringEntry(ds("Americas"), fc[0]), StringEntry(ds("Europe"), fc[1]), StringEntry(ds("Asia"), fc[2]), StringEntry(ds("Africa"), fc[3]), StringEntry(ds("Oceania"), fc[4])], 0)
30013001 }
30023002
30033003
30043004
3005-@Callable(gJ)
3006-func fixStakedPieces (cL) = if ((gJ.caller != da))
3005+@Callable(gK)
3006+func fixStakedPieces (cM) = if ((gK.caller != db))
30073007 then throw("Access denied")
30083008 else {
3009- let kV = if ((cL == ""))
3009+ let kW = if ((cM == ""))
30103010 then 0
30113011 else {
3012- let kO = getString(an, dt(cL))
3013- let kK = if (isDefined(kO))
3014- then split_51C(value(kO), "_")
3012+ let kP = getString(an, du(cM))
3013+ let kL = if (isDefined(kP))
3014+ then split_51C(value(kP), "_")
30153015 else nil
3016- func mr (eQ,P) = {
3017- let jr = value(assetInfo(fromBase58String(P)))
3018- let dH = split(jr.description, "_")[dh]
3019- (eQ + dG(dH))
3016+ func ms (eR,P) = {
3017+ let js = value(assetInfo(fromBase58String(P)))
3018+ let dI = split(js.description, "_")[di]
3019+ (eR + dH(dI))
30203020 }
30213021
3022- let eS = kK
3023- let eT = size(eS)
3024- let eU = 0
3025- func eV (eW,eX) = if ((eX >= eT))
3026- then eW
3027- else mr(eW, eS[eX])
3028-
3029- func eY (eW,eX) = if ((eX >= eT))
3030- then eW
3022+ let eT = kL
3023+ let eU = size(eT)
3024+ let eV = 0
3025+ func eW (eX,eY) = if ((eY >= eU))
3026+ then eX
3027+ else ms(eX, eT[eY])
3028+
3029+ func eZ (eX,eY) = if ((eY >= eU))
3030+ then eX
30313031 else throw("List size exceeds 100")
30323032
3033- eY(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eU, 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)
3033+ eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 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)
30343034 }
3035- $Tuple2([IntegerEntry(du(cL), kV)], kV)
3035+ $Tuple2([IntegerEntry(dv(cM), kW)], kW)
30363036 }
30373037
30383038
30393039
3040-@Callable(gJ)
3041-func setCustomName (bp,kM,bt) = {
3042- let lj = lf(gJ)
3043- if ((size(gJ.payments) != 1))
3040+@Callable(gK)
3041+func setCustomName (bp,kN,bt) = {
3042+ let lk = lg(gK)
3043+ if ((size(gK.payments) != 1))
30443044 then throw("Exactly one payment required")
30453045 else {
3046- let lk = value(gJ.payments[0])
3047- if ((lk.assetId != cw))
3046+ let ll = value(gK.payments[0])
3047+ if ((ll.assetId != cx))
30483048 then throw("Allowed USDT payment only!")
3049- else if ((lk.amount != eb))
3050- then throw(("Payment should be " + toString(eb)))
3051- else if (contains(kM, "__"))
3052- then throw(("Name should not contain '__': " + kM))
3053- else if ((size(kM) > ec))
3054- then throw(("Name too long, maxLength=" + toString(ec)))
3049+ else if ((ll.amount != ec))
3050+ then throw(("Payment should be " + toString(ec)))
3051+ else if (contains(kN, "__"))
3052+ then throw(("Name should not contain '__': " + kN))
3053+ else if ((size(kN) > ed))
3054+ then throw(("Name too long, maxLength=" + toString(ed)))
30553055 else {
3056- let c = toString(gJ.originCaller)
3057- let ms = {
3058- let cx = bt
3059- if (("ACCOUNT" == cx))
3056+ let c = toString(gK.originCaller)
3057+ let mt = {
3058+ let cy = bt
3059+ if (("ACCOUNT" == cy))
30603060 then {
3061- let mt = ew(kM)
3062- let mu = getString(mt)
3063- if (isDefined(mu))
3064- then throw(("Name already registered: " + kM))
3061+ let mu = ex(kN)
3062+ let mv = getString(mu)
3063+ if (isDefined(mv))
3064+ then throw(("Name already registered: " + kN))
30653065 else {
3066- let mv = bB(c)
3067- let mw = getString(mv)
3068- let mx = if (isDefined(mw))
3069- then [DeleteEntry(ew(value(mw)))]
3066+ let mw = bB(c)
3067+ let mx = getString(mw)
3068+ let my = if (isDefined(mx))
3069+ then [DeleteEntry(ex(value(mx)))]
30703070 else nil
3071- (((mx :+ StringEntry(mv, kM)) :+ StringEntry(mt, c)) ++ ke(c, Y)._1)
3071+ (((my :+ StringEntry(mw, kN)) :+ StringEntry(mu, c)) ++ kf(c, Y)._1)
30723072 }
30733073 }
3074- else if (("LAND" == cx))
3074+ else if (("LAND" == cy))
30753075 then {
3076- let jr = value(assetInfo(fromBase58String(bp)))
3077- let js = br(bp)
3078- if (!(isDefined(getInteger(js))))
3079- then throw((jr.name + " is not staked"))
3076+ let js = value(assetInfo(fromBase58String(bp)))
3077+ let jt = br(bp)
3078+ if (!(isDefined(getInteger(jt))))
3079+ then throw((js.name + " is not staked"))
30803080 else {
3081- let ju = valueOrErrorMessage(getString(bo(bp)), (("NFT " + jr.name) + " is orphaned"))
3082- if ((ju != c))
3081+ let jv = valueOrErrorMessage(getString(bo(bp)), (("NFT " + js.name) + " is orphaned"))
3082+ if ((jv != c))
30833083 then throw((aC + " is not yours"))
30843084 else {
3085- let mt = ep(kM)
3086- let mu = getString(mt)
3087- if (isDefined(mu))
3088- then throw(("Name already registered: " + kM))
3085+ let mu = eq(kN)
3086+ let mv = getString(mu)
3087+ if (isDefined(mv))
3088+ then throw(("Name already registered: " + kN))
30893089 else {
3090- let my = bq(bp)
3091- let mw = getString(my)
3092- let mx = if (isDefined(mw))
3093- then [DeleteEntry(ep(value(mw)))]
3090+ let mz = bq(bp)
3091+ let mx = getString(mz)
3092+ let my = if (isDefined(mx))
3093+ then [DeleteEntry(eq(value(mx)))]
30943094 else nil
3095- (((mx :+ StringEntry(my, kM)) :+ StringEntry(mt, bp)) ++ ke(c, Y)._1)
3095+ (((my :+ StringEntry(mz, kN)) :+ StringEntry(mu, bp)) ++ kf(c, Y)._1)
30963096 }
30973097 }
30983098 }
30993099 }
3100- else if (("DUCK" == cx))
3100+ else if (("DUCK" == cy))
31013101 then {
3102- let jr = value(assetInfo(fromBase58String(bp)))
3103- let js = br(bp)
3104- if (if (!(isDefined(getInteger(js))))
3102+ let js = value(assetInfo(fromBase58String(bp)))
3103+ let jt = br(bp)
3104+ if (if (!(isDefined(getInteger(jt))))
31053105 then true
31063106 else !(isDefined(getString(bH(c)))))
3107- then throw((jr.name + " is not staked"))
3107+ then throw((js.name + " is not staked"))
31083108 else {
3109- let ju = valueOrErrorMessage(getString(bG(bp)), (("NFT " + jr.name) + " is orphaned"))
3110- if ((ju != c))
3109+ let jv = valueOrErrorMessage(getString(bG(bp)), (("NFT " + js.name) + " is orphaned"))
3110+ if ((jv != c))
31113111 then throw((aD + " is not yours"))
31123112 else {
3113- let mt = ev(kM)
3114- let mu = getString(mt)
3115- if (isDefined(mu))
3116- then throw(("Name already registered: " + kM))
3113+ let mu = ew(kN)
3114+ let mv = getString(mu)
3115+ if (isDefined(mv))
3116+ then throw(("Name already registered: " + kN))
31173117 else {
3118- let my = bA(bp)
3119- let mw = getString(my)
3120- let mx = if (isDefined(mw))
3121- then [DeleteEntry(ev(value(mw)))]
3118+ let mz = bA(bp)
3119+ let mx = getString(mz)
3120+ let my = if (isDefined(mx))
3121+ then [DeleteEntry(ew(value(mx)))]
31223122 else nil
3123- (((mx :+ StringEntry(my, kM)) :+ StringEntry(mt, bp)) ++ jY(bp, Y)._1)
3123+ (((my :+ StringEntry(mz, kN)) :+ StringEntry(mu, bp)) ++ jZ(bp, Y)._1)
31243124 }
31253125 }
31263126 }
31273127 }
31283128 else throw("Unknown entity type")
31293129 }
3130- $Tuple2(((ms :+ ScriptTransfer(db, lk.amount, cw)) ++ lj), 0)
3130+ $Tuple2(((mt :+ ScriptTransfer(dc, ll.amount, cx)) ++ lk), 0)
31313131 }
31323132 }
31333133 }
31343134
31353135
31363136
3137-@Callable(gJ)
3138-func setReferrals (mz,mA) = if ((gJ.callerPublicKey != dY))
3137+@Callable(gK)
3138+func setReferrals (mA,mB) = if ((gK.callerPublicKey != dZ))
31393139 then throw("Permission denied")
31403140 else {
3141- let lj = lf(gJ)
3142- if ((size(gJ.payments) != 0))
3141+ let lk = lg(gK)
3142+ if ((size(gK.payments) != 0))
31433143 then throw("No payments required")
3144- else if (!(isDefined(addressFromString(mz))))
3145- then throw(("Invalid address: " + mz))
3146- else if (!(isDefined(addressFromString(mA))))
3147- then throw(("Invalid address: " + mA))
3144+ else if (!(isDefined(addressFromString(mA))))
3145+ then throw(("Invalid address: " + mA))
3146+ else if (!(isDefined(addressFromString(mB))))
3147+ then throw(("Invalid address: " + mB))
31483148 else {
3149- let mB = ex()
3150- let mC = getString(mB)
3151- let mD = if (isDefined(mC))
3152- then split_4C(value(mC), "_")
3149+ let mC = ey()
3150+ let mD = getString(mC)
3151+ let mE = if (isDefined(mD))
3152+ then split_4C(value(mD), "_")
31533153 else nil
3154- if (containsElement(mD, mA))
3155- then throw((mA + " is not newbie (already has referrals)"))
3154+ if (containsElement(mE, mB))
3155+ then throw((mB + " is not newbie (already has referrals)"))
31563156 else {
3157- let kg = bC(mA)
3158- let kh = getString(kg)
3159- if (if (isDefined(kh))
3160- then isDefined(addressFromString(value(kh)))
3157+ let kh = bC(mB)
3158+ let ki = getString(kh)
3159+ if (if (isDefined(ki))
3160+ then isDefined(addressFromString(value(ki)))
31613161 else false)
3162- then throw(((mA + " already has refBy: ") + value(kh)))
3162+ then throw(((mB + " already has refBy: ") + value(ki)))
31633163 else {
3164- let mE = bF(mz)
3165- let mF = getString(mE)
3166- let mG = if (isDefined(mF))
3167- then split_4C(value(mF), "_")
3164+ let mF = bF(mA)
3165+ let mG = getString(mF)
3166+ let mH = if (isDefined(mG))
3167+ then split_4C(value(mG), "_")
31683168 else nil
3169- if (containsElement(mG, mA))
3170- then throw((((mz + " already contains ") + mA) + " within referrals"))
3169+ if (containsElement(mH, mB))
3170+ then throw((((mA + " already contains ") + mB) + " within referrals"))
31713171 else {
3172- let mH = makeString_2C((mG :+ mA), "_")
3173- let mI = if (containsElement(mD, mz))
3174- then value(mC)
3175- else makeString_2C((mD :+ mz), "_")
3176- $Tuple2(([StringEntry(kg, mz), StringEntry(mE, mH), StringEntry(mB, mI)] ++ lj), 0)
3172+ let mI = makeString_2C((mH :+ mB), "_")
3173+ let mJ = if (containsElement(mE, mA))
3174+ then value(mD)
3175+ else makeString_2C((mE :+ mA), "_")
3176+ $Tuple2(([StringEntry(kh, mA), StringEntry(mF, mI), StringEntry(mC, mJ)] ++ lk), 0)
31773177 }
31783178 }
31793179 }
31803180 }
31813181 }
31823182
31833183
31843184
3185-@Callable(gJ)
3186-func distributePoints (mJ,mK,mL,mM,mN) = {
3187- let lj = lf(gJ)
3188- if ((size(gJ.payments) != 0))
3185+@Callable(gK)
3186+func distributePoints (mK,mL,mM,mN,mO) = {
3187+ let lk = lg(gK)
3188+ if ((size(gK.payments) != 0))
31893189 then throw("No payments required")
31903190 else {
3191- let c = toString(gJ.originCaller)
3192- let mO = dA(invoke(dd, "checkWlgXpREADONLY", [c], nil))
3193- let mP = dy(mO[1])
3194- let mQ = if ((0 >= mP))
3191+ let c = toString(gK.originCaller)
3192+ let mP = dB(invoke(de, "checkWlgXpREADONLY", [c], nil))
3193+ let mQ = dz(mP[1])
3194+ let mR = if ((0 >= mQ))
31953195 then $Tuple2(0, nil)
31963196 else {
3197- let jZ = dy(invoke(dd, "takeWlgXp", [c], nil))
3198- if ((jZ == jZ))
3199- then $Tuple2(mP, [IntegerEntry(H(c), dy(mO[0])), IntegerEntry(G(c), dy(mO[2]))])
3197+ let ka = dz(invoke(de, "takeWlgXp", [c], nil))
3198+ if ((ka == ka))
3199+ then $Tuple2(mQ, [IntegerEntry(H(c), dz(mP[0])), IntegerEntry(G(c), dz(mP[2]))])
32003200 else throw("Strict value is not equal to itself.")
32013201 }
3202- let mR = mQ._1
3203- let mS = mQ._2
3202+ let mS = mR._1
3203+ let mT = mR._2
32043204 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
3205- let mT = I(c)
3206- let mU = (valueOrElse(getInteger(mT), 0) + mR)
3207- let mV = E(A)
3208- let mW = valueOrElse(getInteger(mV), 0)
3209- let mX = (mU + mW)
3210- let mY = ((((mJ + mK) + mL) + mM) + mN)
3211- if ((mY > mX))
3212- then throw((("There are only " + toString(mX)) + " free points to distribute"))
3205+ let mU = I(c)
3206+ let mV = (valueOrElse(getInteger(mU), 0) + mS)
3207+ let mW = E(A)
3208+ let mX = valueOrElse(getInteger(mW), 0)
3209+ let mY = (mV + mX)
3210+ let mZ = ((((mK + mL) + mM) + mN) + mO)
3211+ if ((mZ > mY))
3212+ then throw((("There are only " + toString(mY)) + " free points to distribute"))
32133213 else {
3214- let mZ = B(A)
3215- let aq = split(valueOrElse(getString(mZ), "0_0_0_0_0"), "_")
3216- let na = (mU - mY)
3217- $Tuple2((([IntegerEntry(mT, if ((0 > na))
3214+ let na = B(A)
3215+ let aq = split(valueOrElse(getString(na), "0_0_0_0_0"), "_")
3216+ let nb = (mV - mZ)
3217+ $Tuple2((([IntegerEntry(mU, if ((0 > nb))
32183218 then 0
3219- else na), IntegerEntry(mV, if ((0 > na))
3220- then (mW + na)
3221- else mW), StringEntry(mZ, makeString([toString((parseIntValue(aq[k]) + mJ)), toString((parseIntValue(aq[l]) + mK)), toString((parseIntValue(aq[m]) + mL)), toString((parseIntValue(aq[n]) + mM)), toString((parseIntValue(aq[o]) + mN))], "_"))] ++ lj) ++ mS), 0)
3219+ else nb), IntegerEntry(mW, if ((0 > nb))
3220+ then (mX + nb)
3221+ else mX), StringEntry(na, makeString([toString((parseIntValue(aq[k]) + mK)), toString((parseIntValue(aq[l]) + mL)), toString((parseIntValue(aq[m]) + mM)), toString((parseIntValue(aq[n]) + mN)), toString((parseIntValue(aq[o]) + mO))], "_"))] ++ lk) ++ mT), 0)
32223222 }
32233223 }
32243224 }
32253225
32263226
32273227
3228-@Callable(gJ)
3229-func splitByGlobalWeightsREADONLY (eH) = $Tuple2(nil, eZ(eH))
3230-
3231-
3232-
3233-@Callable(gJ)
3234-func splitByGlobalAndLocalWeightsREADONLY (nb,nc,gM) = {
3235- let gF = gL(gM)
3236- $Tuple2(nil, $Tuple2(eZ(nb), eK(nc, gF)))
3237- }
3238-
3239-
3240-
3241-@Callable(gJ)
3242-func getBackpackREADONLY (A) = $Tuple2(nil, makeString(hJ(bI(A)), ":"))
3243-
3244-
3245-
3246-@Callable(gJ)
3228+@Callable(gK)
3229+func splitByGlobalWeightsREADONLY (eI) = $Tuple2(nil, fa(eI))
3230+
3231+
3232+
3233+@Callable(gK)
3234+func splitByGlobalAndLocalWeightsREADONLY (nc,nd,gN) = {
3235+ let gG = gM(gN)
3236+ $Tuple2(nil, $Tuple2(fa(nc), eL(nd, gG)))
3237+ }
3238+
3239+
3240+
3241+@Callable(gK)
3242+func getBackpackREADONLY (A) = $Tuple2(nil, makeString(hK(bI(A)), ":"))
3243+
3244+
3245+
3246+@Callable(gK)
32473247 func getWarehouseREADONLY (P) = {
3248- let jr = value(assetInfo(fromBase58String(P)))
3249- let hY = (dG(split(jr.description, "_")[dh]) / cE)
3250- let hZ = valueOrElse(getInteger(by(P)), 0)
3251- $Tuple2(nil, makeString_2C(hW(bx(P), hY, hZ), ":"))
3252- }
3253-
3254-
3255-
3256-@Callable(gJ)
3257-func saveLastTx () = if (!(containsElement([dd, db, de, df], gJ.caller)))
3248+ let js = value(assetInfo(fromBase58String(P)))
3249+ let hZ = (dH(split(js.description, "_")[di]) / cF)
3250+ let ia = valueOrElse(getInteger(by(P)), 0)
3251+ $Tuple2(nil, makeString_2C(hX(bx(P), hZ, ia), ":"))
3252+ }
3253+
3254+
3255+
3256+@Callable(gK)
3257+func saveLastTx () = if (!(containsElement([de, dc, df, dg], gK.caller)))
32583258 then throw("Access denied")
3259- else $Tuple2(lf(gJ), 42)
3260-
3261-
3262-
3263-@Callable(gJ)
3264-func updateDuckStats (A,jZ) = if ((gJ.caller != db))
3259+ else $Tuple2(lg(gK), 42)
3260+
3261+
3262+
3263+@Callable(gK)
3264+func updateDuckStats (A,ka) = if ((gK.caller != dc))
32653265 then throw("Access denied")
3266- else jY(A, jZ)
3267-
3268-
3269-
3270-@Callable(gJ)
3271-func updateAccStats (c,jZ) = if (!(containsElement([dd, db, df], gJ.caller)))
3266+ else jZ(A, ka)
3267+
3268+
3269+
3270+@Callable(gK)
3271+func updateAccStats (c,ka) = if (!(containsElement([de, dc, dg], gK.caller)))
32723272 then throw("Access denied")
3273- else ke(c, jZ)
3274-
3275-
3276-
3277-@Callable(gJ)
3278-func equipDuck (nd) = {
3279- let lj = lf(gJ)
3280- if ((size(gJ.payments) != 0))
3273+ else kf(c, ka)
3274+
3275+
3276+
3277+@Callable(gK)
3278+func equipDuck (ne) = {
3279+ let lk = lg(gK)
3280+ if ((size(gK.payments) != 0))
32813281 then throw("No payments required")
32823282 else {
3283- let c = toString(gJ.originCaller)
3283+ let c = toString(gK.originCaller)
32843284 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
3285- if (ko(A))
3285+ if (kp(A))
32863286 then throw("equipDuck_checkTournament")
3287- else if (kp(A))
3287+ else if (kq(A))
32883288 then throw("equipDuck_checkDelivery")
32893289 else {
3290- let gw = F(A)
3291- let ne = split(valueOrElse(getString(gw), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3292- let hK = bI(A)
3293- let in = hJ(hK)
3294- let lA = split(nd, "_")
3295- if ((size(lA) != q))
3290+ let gx = F(A)
3291+ let nf = split(valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3292+ let hL = bI(A)
3293+ let io = hK(hL)
3294+ let lB = split(ne, "_")
3295+ if ((size(lB) != q))
32963296 then throw("Wrong equipment string")
32973297 else {
3298- let gy = gl(ne, fw(in[bk]), true, nil)
3299- let gz = split(lA[p], ";")[1]
3300- let ao = if ((gz == ""))
3298+ let gz = gm(nf, fx(io[bk]), true, nil)
3299+ let gA = split(lB[p], ";")[1]
3300+ let ao = if ((gA == ""))
33013301 then 0
33023302 else {
3303- let gA = split(gz, ",")[0]
3304- if ((gA == ""))
3303+ let gB = split(gA, ",")[0]
3304+ if ((gB == ""))
33053305 then 0
33063306 else {
3307- let fL = split(gA, ":")
3308- let cZ = fL[0]
3309- let gB = fL[1]
3310- if (if (if (if (if ((cZ == "06"))
3307+ let fM = split(gB, ":")
3308+ let da = fM[0]
3309+ let gC = fM[1]
3310+ if (if (if (if (if ((da == "06"))
33113311 then true
3312- else (cZ == "07"))
3312+ else (da == "07"))
33133313 then true
3314- else (cZ == "08"))
3315- then (gB != "")
3314+ else (da == "08"))
3315+ then (gC != "")
33163316 else false)
3317- then (parseIntValue(gB) > 0)
3317+ then (parseIntValue(gC) > 0)
33183318 else false)
3319- then parseIntValue(split(aS[parseIntValue(cZ)], "_")[aU])
3319+ then parseIntValue(split(aS[parseIntValue(da)], "_")[aU])
33203320 else 0
33213321 }
33223322 }
3323- let gg = am(this, A, ao, true)
3324- let gC = gl(lA, gy, false, gg)
3325- let nf = fB(gC)
3326- $Tuple2(([StringEntry(gw, nd), StringEntry(hK, makeString_2C([in[bh], in[bi], in[bj], nf], ":")), StringEntry(L(A), makeString([toString(gg[7]), toString(gg[8]), toString(gg[9]), toString(gg[10]), toString(gg[11])], "_"))] ++ lj), 0)
3323+ let gh = am(this, A, ao, true)
3324+ let gD = gm(lB, gz, false, gh)
3325+ let ng = fC(gD)
3326+ $Tuple2(([StringEntry(gx, ne), StringEntry(hL, makeString_2C([io[bh], io[bi], io[bj], ng], ":")), StringEntry(L(A), makeString([toString(gh[7]), toString(gh[8]), toString(gh[9]), toString(gh[10]), toString(gh[11])], "_"))] ++ lk), 0)
33273327 }
33283328 }
33293329 }
33303330 }
33313331
33323332
33333333
3334-@Callable(gJ)
3335-func fortificateLand (P,ng) = {
3336- let lj = lf(gJ)
3337- if ((size(gJ.payments) != 0))
3334+@Callable(gK)
3335+func fortificateLand (P,nh) = {
3336+ let lk = lg(gK)
3337+ if ((size(gK.payments) != 0))
33383338 then throw("No payments required")
33393339 else {
3340- let c = toString(gJ.originCaller)
3340+ let c = toString(gK.originCaller)
33413341 let A = valueOrElse(getString(bH(c)), "")
3342- let fG = am(this, A, 0, false)
3343- let nh = bz(P)
3344- let ni = split(valueOrElse(getString(nh), ":0_15:0_18:0"), "_")
3345- let jr = value(assetInfo(fromBase58String(P)))
3346- let hY = (dG(split(jr.description, "_")[dh]) / cE)
3347- let hZ = valueOrElse(getInteger(by(P)), 0)
3348- let hX = bx(P)
3349- let ic = hW(hX, hY, hZ)
3350- let nj = split(ic[bc], "_")
3351- let nk = parseIntValue(nj[be])
3352- let nl = parseIntValue(nj[bf])
3353- let nm = split(ng, "_")
3354- let nn = gs(ni, fw(ic[bb]), nk, nl, true, nil)
3355- let gy = nn._1
3356- let no = nn._2
3357- let np = nn._3
3358- let nq = gs(nm, gy, no, np, false, fG)
3359- let gC = nq._1
3360- let nr = nq._2
3361- let ns = nq._3
3362- let nf = fB(gC)
3363- let jX = makeString([nj[bd], toString(nr), toString(ns), nj[bg]], "_")
3364- $Tuple2(([StringEntry(nh, ng), StringEntry(hX, makeString_2C([ic[aY], ic[aZ], ic[ba], nf, jX], ":"))] ++ lj), 0)
3365- }
3366- }
3367-
3368-
3369-
3370-@Callable(gJ)
3371-func initDuckTourAttempt (A) = if ((gJ.caller != de))
3342+ let fH = am(this, A, 0, false)
3343+ let ni = bz(P)
3344+ let nj = split(valueOrElse(getString(ni), ":0_15:0_18:0"), "_")
3345+ let js = value(assetInfo(fromBase58String(P)))
3346+ let hZ = (dH(split(js.description, "_")[di]) / cF)
3347+ let ia = valueOrElse(getInteger(by(P)), 0)
3348+ let hY = bx(P)
3349+ let id = hX(hY, hZ, ia)
3350+ let nk = split(id[bc], "_")
3351+ let nl = parseIntValue(nk[be])
3352+ let nm = parseIntValue(nk[bf])
3353+ let nn = split(nh, "_")
3354+ let no = gt(nj, fx(id[bb]), nl, nm, true, nil)
3355+ let gz = no._1
3356+ let np = no._2
3357+ let nq = no._3
3358+ let nr = gt(nn, gz, np, nq, false, fH)
3359+ let gD = nr._1
3360+ let ns = nr._2
3361+ let nt = nr._3
3362+ let ng = fC(gD)
3363+ let jY = makeString([nk[bd], toString(ns), toString(nt), nk[bg]], "_")
3364+ $Tuple2(([StringEntry(ni, nh), StringEntry(hY, makeString_2C([id[aY], id[aZ], id[ba], ng, jY], ":"))] ++ lk), 0)
3365+ }
3366+ }
3367+
3368+
3369+
3370+@Callable(gK)
3371+func initDuckTourAttempt (A) = if ((gK.caller != df))
33723372 then throw("Access denied")
33733373 else {
3374- let ja = z(A)
3375- let jb = ag(valueOrElse(getInteger(D(A)), 0))
3376- let ks = valueOrElse(getInteger(ja), jb)
3377- let nt = bJ(A)
3378- let jp = valueOrElse(getString(nt), aJ)
3379- let ce = valueOrElse(getInteger(de, bP), 0)
3380- let nu = (toString(ce) + "_T_0")
3381- $Tuple2([IntegerEntry(J(A), ks), IntegerEntry(ja, jb), StringEntry(K(A), jp), StringEntry(nt, nu)], nu)
3374+ let jb = z(A)
3375+ let jc = ag(valueOrElse(getInteger(D(A)), 0))
3376+ let kt = valueOrElse(getInteger(jb), jc)
3377+ let nu = bJ(A)
3378+ let jq = valueOrElse(getString(nu), aJ)
3379+ let ce = valueOrElse(getInteger(df, bP), 0)
3380+ let nv = (toString(ce) + "_T_0")
3381+ $Tuple2([IntegerEntry(J(A), kt), IntegerEntry(jb, jc), StringEntry(K(A), jq), StringEntry(nu, nv)], nv)
33823382 }
33833383
33843384
33853385
3386-@Callable(gJ)
3386+@Callable(gK)
33873387 func breakAttempt () = {
3388- let lj = lf(gJ)
3389- let A = valueOrErrorMessage(getString(bH(toString(gJ.caller))), "You don't have a duck staked")
3390- let nt = bJ(A)
3391- let jp = valueOrElse(getString(nt), aJ)
3392- if ((split(jp, "_")[bm] != "T"))
3388+ let lk = lg(gK)
3389+ let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked")
3390+ let nu = bJ(A)
3391+ let jq = valueOrElse(getString(nu), aJ)
3392+ if ((split(jq, "_")[bm] != "T"))
33933393 then throw("Your duck is not in the tournament")
33943394 else {
3395- let kx = getIntegerValue(J(A))
3396- let ky = getStringValue(K(A))
3397- $Tuple2(((lj :+ IntegerEntry(z(A), kx)) :+ StringEntry(nt, ky)), jp)
3398- }
3399- }
3400-
3401-
3402-
3403-@Callable(gJ)
3404-func exitTournamentInternal (A) = if ((gJ.caller != this))
3395+ let ky = getIntegerValue(J(A))
3396+ let kz = getStringValue(K(A))
3397+ $Tuple2(((lk :+ IntegerEntry(z(A), ky)) :+ StringEntry(nu, kz)), jq)
3398+ }
3399+ }
3400+
3401+
3402+
3403+@Callable(gK)
3404+func exitTournamentInternal (A) = if ((gK.caller != this))
34053405 then throw("Access denied")
34063406 else {
3407- let kx = getIntegerValue(J(A))
3408- let ky = getStringValue(K(A))
3409- $Tuple2([IntegerEntry(z(A), kx), StringEntry(bJ(A), ky)], false)
3407+ let ky = getIntegerValue(J(A))
3408+ let kz = getStringValue(K(A))
3409+ $Tuple2([IntegerEntry(z(A), ky), StringEntry(bJ(A), kz)], false)
34103410 }
34113411
34123412
34133413
3414-@Callable(gJ)
3415-func exitDeliveryInternal (A) = if ((gJ.caller != this))
3414+@Callable(gK)
3415+func exitDeliveryInternal (A) = if ((gK.caller != this))
34163416 then throw("Access denied")
34173417 else {
3418- let mg = kq(A)
3419- $Tuple2((mg._1 ++ mg._2), false)
3418+ let mh = kr(A)
3419+ $Tuple2((mh._1 ++ mh._2), false)
34203420 }
34213421
34223422
34233423
3424-@Callable(gJ)
3425-func autoExitDelivery (A) = if ((gJ.caller != this))
3424+@Callable(gK)
3425+func autoExitDelivery (A) = if ((gK.caller != this))
34263426 then throw("Access denied")
34273427 else {
3428- let mg = kq(A)
3429- $Tuple2(mg._1, $Tuple2(mg._3, mg._4))
3428+ let mh = kr(A)
3429+ $Tuple2(mh._1, $Tuple2(mh._3, mh._4))
34303430 }
34313431
34323432
34333433
3434-@Callable(gJ)
3435-func prepareRobbery (iP,iQ) = {
3436- let lj = lf(gJ)
3437- if (!(sigVerify_8Kb(iP, iQ, dY)))
3434+@Callable(gK)
3435+func prepareRobbery (iQ,iR) = {
3436+ let lk = lg(gK)
3437+ if (!(sigVerify_8Kb(iQ, iR, dZ)))
34383438 then throw("signature does not match")
3439- else if ((size(gJ.payments) != 1))
3439+ else if ((size(gK.payments) != 1))
34403440 then throw("exactly 1 payment must be attached")
34413441 else {
3442- let lk = gJ.payments[0]
3443- let nv = lk.amount
3444- if (if (!(isDefined(lk.assetId)))
3442+ let ll = gK.payments[0]
3443+ let nw = ll.amount
3444+ if (if (!(isDefined(ll.assetId)))
34453445 then true
3446- else (value(lk.assetId) != dl))
3446+ else (value(ll.assetId) != dm))
34473447 then throw("WLGOLD payments only!")
34483448 else {
3449- let fo = split(toUtf8String(iP), "|")
3450- if ((size(fo) != 2))
3449+ let fp = split(toUtf8String(iQ), "|")
3450+ if ((size(fp) != 2))
34513451 then throw("Wrong message format")
34523452 else {
3453- let A = fo[0]
3454- if (ko(A))
3453+ let A = fp[0]
3454+ if (kp(A))
34553455 then throw("prepareRobbery_checkTournament")
3456- else if (kp(A))
3456+ else if (kq(A))
34573457 then throw("prepareRobbery_checkDelivery")
34583458 else {
34593459 let ay = au(this, A)._1
3460- if ((ay > nv))
3461- then throw(((("Payment " + toString(nv)) + " < required ") + toString(ay)))
3460+ if ((ay > nw))
3461+ then throw(((("Payment " + toString(nw)) + " < required ") + toString(ay)))
34623462 else {
3463- let nw = split(fo[1], "_")
3463+ let nx = split(fp[1], "_")
34643464 let ax = lastBlock.timestamp
34653465 let az = valueOrElse(getInteger(R(A)), 0)
34663466 let aA = valueOrElse(getString(S(A)), "")
34673467 let aB = valueOrElse(getInteger(Q(aA)), 0)
34683468 if (if ((az != x))
34693469 then (aB > ax)
34703470 else false)
34713471 then throw(("You already started robbing, wait till " + toString(aB)))
34723472 else {
3473- func nx (eQ,P) = {
3474- let ny = valueOrElse(getInteger(O(P)), 0)
3475- let nz = valueOrElse(getInteger(Q(P)), 0)
3476- if ((ny > size(u)))
3473+ func ny (eR,P) = {
3474+ let nz = valueOrElse(getInteger(O(P)), 0)
3475+ let nA = valueOrElse(getInteger(Q(P)), 0)
3476+ if ((nz > size(u)))
34773477 then throw("Invalid state")
3478- else if ((ax > nz))
3478+ else if ((ax > nA))
34793479 then {
3480- let nA = valueOrElse(getInteger(br(P)), 0)
3481- if ((0 >= nA))
3482- then eQ
3480+ let nB = valueOrElse(getInteger(br(P)), 0)
3481+ if ((0 >= nB))
3482+ then eR
34833483 else {
3484- let gq = value(assetInfo(fromBase58String(P)))
3485- let jv = split(gq.description, "_")
3486- let jh = dG(jv[dh])
3487- let nB = jg(P, jh)
3488- let gP = (ax - nA)
3489- let jy = fraction(gP, (nB * jh), a)
3490- if ((v > jy))
3491- then eQ
3492- else (eQ :+ P)
3484+ let gr = value(assetInfo(fromBase58String(P)))
3485+ let jw = split(gr.description, "_")
3486+ let ji = dH(jw[di])
3487+ let nC = jh(P, ji)
3488+ let gQ = (ax - nB)
3489+ let jz = fraction(gQ, (nC * ji), a)
3490+ if ((v > jz))
3491+ then eR
3492+ else (eR :+ P)
34933493 }
34943494 }
3495- else eQ
3495+ else eR
34963496 }
34973497
3498- let nC = {
3499- let eS = nw
3500- let eT = size(eS)
3501- let eU = nil
3502- func eV (eW,eX) = if ((eX >= eT))
3503- then eW
3504- else nx(eW, eS[eX])
3505-
3506- func eY (eW,eX) = if ((eX >= eT))
3507- then eW
3498+ let nD = {
3499+ let eT = nx
3500+ let eU = size(eT)
3501+ let eV = nil
3502+ func eW (eX,eY) = if ((eY >= eU))
3503+ then eX
3504+ else ny(eX, eT[eY])
3505+
3506+ func eZ (eX,eY) = if ((eY >= eU))
3507+ then eX
35083508 else throw("List size exceeds 10")
35093509
3510- eY(eV(eV(eV(eV(eV(eV(eV(eV(eV(eV(eU, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
3510+ eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
35113511 }
3512- if ((size(nC) == 0))
3512+ if ((size(nD) == 0))
35133513 then throw("No candidates for robbery")
35143514 else {
3515- let nD = dQ(size(nC), height, (iQ + gJ.transactionId))
3516- let P = nC[nD]
3517- $Tuple2(([IntegerEntry(O(P), w), IntegerEntry(Q(P), (ax + u[w])), IntegerEntry(R(A), y), StringEntry(S(A), P)] ++ lj), P)
3515+ let nE = dR(size(nD), height, (iR + gK.transactionId))
3516+ let P = nD[nE]
3517+ $Tuple2(([IntegerEntry(O(P), w), IntegerEntry(Q(P), (ax + u[w])), IntegerEntry(R(A), y), StringEntry(S(A), P)] ++ lk), P)
35183518 }
35193519 }
35203520 }
35213521 }
35223522 }
35233523 }
35243524 }
35253525 }
35263526
35273527
35283528
3529-@Callable(gJ)
3530-func robLand (iP,iQ) = {
3531- let lj = lf(gJ)
3532- if (!(sigVerify_8Kb(iP, iQ, dY)))
3529+@Callable(gK)
3530+func robLand (iQ,iR) = {
3531+ let lk = lg(gK)
3532+ if (!(sigVerify_8Kb(iQ, iR, dZ)))
35333533 then throw("signature does not match")
35343534 else {
3535- let bL = toString(gJ.caller)
3535+ let bL = toString(gK.caller)
35363536 let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked")
35373537 let ax = lastBlock.timestamp
3538- $Tuple2((lj :+ IntegerEntry(M(A), ax)), 0)
3539- }
3540- }
3541-
3542-
3543-
3544-@Callable(gJ)
3545-func acceptDelivery () = if (!(cu))
3538+ $Tuple2((lk :+ IntegerEntry(M(A), ax)), 0)
3539+ }
3540+ }
3541+
3542+
3543+
3544+@Callable(gK)
3545+func acceptDelivery () = if (!(cv))
35463546 then throw("Delivery feature is turned off!")
35473547 else {
3548- let lj = lf(gJ)
3549- let bL = toString(gJ.caller)
3548+ let lk = lg(gK)
3549+ let bL = toString(gK.caller)
35503550 let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked")
3551- let nE = valueOrElse(getInteger(db, bN), 0)
3552- let kv = valueOrElse(getInteger(db, bO), 0)
3553- if ((aM > (nE - kv)))
3554- then throw(((("Delivery is not available, fund=" + dL(nE, 6)) + ", locked=") + dL(kv, 6)))
3551+ let nF = valueOrElse(getInteger(dc, bN), 0)
3552+ let kw = valueOrElse(getInteger(dc, bO), 0)
3553+ if ((aM > (nF - kw)))
3554+ then throw(((("Delivery is not available, fund=" + dM(nF, 6)) + ", locked=") + dM(kw, 6)))
35553555 else {
35563556 let ax = lastBlock.timestamp
3557- let nF = valueOrElse(getInteger(T(A)), 0)
3558- if ((nF > ax))
3559- then throw(("Delivery is forbidden for your duck until " + toString(nF)))
3560- else if (ko(A))
3557+ let nG = valueOrElse(getInteger(T(A)), 0)
3558+ if ((nG > ax))
3559+ then throw(("Delivery is forbidden for your duck until " + toString(nG)))
3560+ else if (kp(A))
35613561 then throw("acceptDelivery_checkTournament")
3562- else if (kp(A))
3562+ else if (kq(A))
35633563 then throw("acceptDelivery_checkDelivery")
35643564 else {
3565- let nG = dy(invoke(db, "updateDeliveryLocked", [(kv + aM)], nil))
3566- let ja = z(A)
3567- let jb = ag(valueOrElse(getInteger(D(A)), 0))
3568- let ks = valueOrElse(getInteger(ja), jb)
3569- let nt = bJ(A)
3570- let jp = valueOrElse(getString(nt), aJ)
3571- let nH = (toString(ax) + "_D_0")
3572- $Tuple2(([IntegerEntry(J(A), ks), IntegerEntry(ja, jb), StringEntry(K(A), jp), StringEntry(nt, nH)] ++ lj), $Tuple2(nH, nG))
3565+ let nH = dz(invoke(dc, "updateDeliveryLocked", [(kw + aM)], nil))
3566+ let jb = z(A)
3567+ let jc = ag(valueOrElse(getInteger(D(A)), 0))
3568+ let kt = valueOrElse(getInteger(jb), jc)
3569+ let nu = bJ(A)
3570+ let jq = valueOrElse(getString(nu), aJ)
3571+ let nI = (toString(ax) + "_D_0")
3572+ $Tuple2(([IntegerEntry(J(A), kt), IntegerEntry(jb, jc), StringEntry(K(A), jq), StringEntry(nu, nI)] ++ lk), $Tuple2(nI, nH))
35733573 }
35743574 }
35753575 }
35763576
35773577

github/deemru/w8io/169f3d6 
1680.76 ms