tx · GDxD543q1G9Y5wC3iSormwi3GmE7txvjuWqTv7TWucry

3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm:  -0.10800000 Waves

2023.10.11 17:26 [2794069] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves

{ "type": 13, "id": "GDxD543q1G9Y5wC3iSormwi3GmE7txvjuWqTv7TWucry", "fee": 10800000, "feeAssetId": null, "timestamp": 1697034361507, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "3meMvYM6Kby8eV3HKHbzQziTV57SkxQedPWZewcV3b6p6FMe8Uw9enan5m3qwNmNDR2xDKRe8agKCDnJ33RZkPWa" ], "script": "base64:BgLkAQgCEgMKAQgSBAoCCAESAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASABIECgICAhIAEgMKAQgSBAoCCAgSAwoBGBIECgIICBIECgIICBIDCgEIEgMKARgSAwoBCBIFCgMICAgSBAoCCAgSBwoFAQEBAQESAwoBARIFCgMBAQgSAwoBCBIDCgEIEgASBAoCCAESBAoCCAESAwoBCBIECgIICBIDCgEIEgASAwoBCBIDCgEIEgYKBAgBCAESBAoCAgISBAoCAgISAKICAAlEQVlNSUxMSVMAgLiZKQEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBGFkZHIJAKwCAgIQbGFzdEFyYlRpbWVVc2VyXwUEYWRkcgEaa2V5QWNyZXNTdGFrZWRBbW91bnRCeVVzZXIBBGFkZHIJAKwCAgIYYWNyZXNTdGFrZWRBbW91bnRCeVVzZXJfBQRhZGRyAAZTQ0FMRTgAgMLXLwAMeHBMZXZlbFNjYWxlAIAZAA94cExldmVsUmVjaXBQb3cAoB8AEm51bVBvaW50c09uTGV2ZWxVcAADAA5yb2JiZXJ5Q29zdE1pbgCAwtcvABRyb2JiZXJ5Q29vbGRvd25Db2VmZgCQAwAMcmVxdWlyZW1lbnRzCQDMCAICCFN0cmVuZ3RoCQDMCAICCEFjY3VyYWN5CQDMCAICCUludGVsbGVjdAkAzAgCAglFbmR1cmFuY2UJAMwIAgIJRGV4dGVyaXR5CQDMCAICBUxldmVsCQDMCAICBkhlYWx0aAUDbmlsAAxjaGFyU3RyZW5ndGgAAAAMY2hhckFjY3VyYWN5AAEADWNoYXJJbnRlbGxlY3QAAgANY2hhckVuZHVyYW5jZQADAA1jaGFyRGV4dGVyaXR5AAQAC3NlZ0JhY2twYWNrAAAAC05VTVNFR01FTlRTAAYACk5VTU1BSU5BVVgAAgAITUFYU0xPVFMAAgANTUFYUFJPRElOU0xPVAAeABBsYW5kUm9iQ29vbGRvd25zCQDMCAIAAAkAzAgCAMDPJAkAzAgCAKD3NgkAzAgCAIDczBQJAMwIAgCArqYKBQNuaWwADk1JTl9SRVNfVE9fUk9CAIDaxAkADHJvYklkeExvY2tlZAABAAtkdWNrSWR4RnJlZQAAABBkdWNrSWR4UHJlcGFyaW5nAAEBDWtleUR1Y2tIZWFsdGgBC2R1Y2tBc3NldElkCQCsAgICC2R1Y2tIZWFsdGhfBQtkdWNrQXNzZXRJZAEMa2V5RHVja0NoYXJzAQtkdWNrQXNzZXRJZAkArAICAgpkdWNrQ2hhcnNfBQtkdWNrQXNzZXRJZAEJa2V5RHVja1hQAQtkdWNrQXNzZXRJZAkArAICAgdkdWNrWFBfBQtkdWNrQXNzZXRJZAEMa2V5RHVja0xldmVsAQtkdWNrQXNzZXRJZAkArAICAgpkdWNrTGV2ZWxfBQtkdWNrQXNzZXRJZAERa2V5RHVja0ZyZWVQb2ludHMBC2R1Y2tBc3NldElkCQCsAgICD2R1Y2tGcmVlUG9pbnRzXwULZHVja0Fzc2V0SWQBEGtleUR1Y2tFcXVpcG1lbnQBC2R1Y2tBc3NldElkCQCsAgICDmR1Y2tFcXVpcG1lbnRfBQtkdWNrQXNzZXRJZAEJa2V5VXNlclhQAQRhZGRyCQCsAgICB3VzZXJYUF8FBGFkZHIBDGtleVVzZXJMZXZlbAEEYWRkcgkArAICAgp1c2VyTGV2ZWxfBQRhZGRyARFrZXlVc2VyRnJlZVBvaW50cwEEYWRkcgkArAICAg91c2VyRnJlZVBvaW50c18FBGFkZHIBDmtleVNhdmVkSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgxzYXZlZEhlYWx0aF8FC2R1Y2tBc3NldElkARBrZXlTYXZlZExvY2F0aW9uAQtkdWNrQXNzZXRJZAkArAICAg5zYXZlZExvY2F0aW9uXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tCdWZmcwELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0J1ZmZzXwULZHVja0Fzc2V0SWQBGGtleUxhc3RSb2JiZXJ5VGltZUJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIQbGFzdFJvYmJlcnlUaW1lXwULZHVja0Fzc2V0SWQBGGtleUxhc3RSb2JiZXJ5Q29zdEJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIQbGFzdFJvYmJlcnlDb3N0XwULZHVja0Fzc2V0SWQBE2tleUxhbmRSb2JiZXJ5U3RhdGUBC2xhbmRBc3NldElkCQCsAgICEWxhbmRSb2JiZXJ5U3RhdGVfBQtsYW5kQXNzZXRJZAESa2V5TGFuZENvb2xkb3duRVRBAQtsYW5kQXNzZXRJZAkArAICAhBsYW5kQ29vbGRvd25FVEFfBQtsYW5kQXNzZXRJZAETa2V5RHVja1JvYmJlcnlTdGF0ZQELZHVja0Fzc2V0SWQJAKwCAgIRZHVja1JvYmJlcnlTdGF0ZV8FC2R1Y2tBc3NldElkARNrZXlMb2NrZWRMYW5kQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAhFsb2NrZWRMYW5kQnlEdWNrXwULZHVja0Fzc2V0SWQBFmtleURlbGl2ZXJ5RGVsYXlCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICFGRlbGl2ZXJ5RGVsYXlCeUR1Y2tfBQtkdWNrQXNzZXRJZAEUa2V5VXNlckRlbGl2ZXJ5Q291bnQBBGFkZHIJAKwCAgISdXNlckRlbGl2ZXJ5Q291bnRfBQRhZGRyARZrZXlVc2VyTGFzdERlbGl2ZXJ5RGF5AQRhZGRyCQCsAgICFHVzZXJMYXN0RGVsaXZlcnlEYXlfBQRhZGRyAAd4cENsYWltAJBOAA94cFN1Y2Nlc3NGbGlnaHQAkE4ADHhwRmFpbEZsaWdodADQDwAIeHBDYWxsRVMAoI0GAAx4cEN1c3RvbU5hbWUAwIQ9AAp4cE5ld1NMYW5kAMCWsQIADnhwVXBncmFkZUluZnJhAJBOAAd4cE1lcmdlAMCEPQAJeHBPbmJvYXJkAMCEPQAGeHBIZWFsAJBOAQlsZXZlbEJ5WFABAnhwCQBrAwUMeHBMZXZlbFNjYWxlCQBsBgUCeHAABAUPeHBMZXZlbFJlY2lwUG93AAQABAUERE9XTgUGU0NBTEU4AQltYXhIZWFsdGgBBWxldmVsCQBkAgBkBQVsZXZlbAEHbGV2ZWxVcAIJY3VyckxldmVsBW5ld1hQBAhuZXdMZXZlbAkBCWxldmVsQnlYUAEFBW5ld1hQCQDMCAIFCG5ld0xldmVsCQDMCAIJAGgCBRJudW1Qb2ludHNPbkxldmVsVXAJAGUCBQhuZXdMZXZlbAUJY3VyckxldmVsBQNuaWwBDGdldER1Y2tTdGF0cwQPc3Rha2luZ0NvbnRyYWN0C2R1Y2tBc3NldElkCmJ1ZmZFZmZlY3QKZm9yY2VCdWZmcwQFY2hhcnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrQ2hhcnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wAgFfBANsdmwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQGaGVhbHRoCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAkBCW1heEhlYWx0aAEFA2x2bAQKc3RhdGVCdWZmcwkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzACAV8JAM4IAgkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJTdHJlbmd0aAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJBY2N1cmFjeQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJJbnRlbGxlY3QJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRW5kdXJhbmNlCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckRleHRlcml0eQkAzAgCBQNsdmwJAMwIAgUGaGVhbHRoBQNuaWwDBQpmb3JjZUJ1ZmZzCQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAUDbmlsCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQxjaGFyU3RyZW5ndGgJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDGNoYXJBY2N1cmFjeQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUNY2hhckludGVsbGVjdAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUNY2hhckVuZHVyYW5jZQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUNY2hhckRleHRlcml0eQUDbmlsAQ5nZXRSb2JiZXJ5RGF0YQIPc3Rha2luZ0NvbnRyYWN0C2R1Y2tBc3NldElkBAtsYXN0Um9iQ29zdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARhrZXlMYXN0Um9iYmVyeUNvc3RCeUR1Y2sBBQtkdWNrQXNzZXRJZAAABAtsYXN0Um9iVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBBQtkdWNrQXNzZXRJZAAABANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAdyb2JDb3N0CQCWAwEJAMwIAgUOcm9iYmVyeUNvc3RNaW4JAMwIAgkAZQIFC2xhc3RSb2JDb3N0CQBoAgUUcm9iYmVyeUNvb2xkb3duQ29lZmYJAGUCBQNub3cFC2xhc3RSb2JUaW1lBQNuaWwECWR1Y2tTdGF0ZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARNrZXlEdWNrUm9iYmVyeVN0YXRlAQULZHVja0Fzc2V0SWQAAAQKbG9ja2VkTGFuZAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARNrZXlMb2NrZWRMYW5kQnlEdWNrAQULZHVja0Fzc2V0SWQCAAQHbGFuZEVUQQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARJrZXlMYW5kQ29vbGRvd25FVEEBBQpsb2NrZWRMYW5kAAAJAJcKBQUHcm9iQ29zdAULbGFzdFJvYlRpbWUFCWR1Y2tTdGF0ZQUKbG9ja2VkTGFuZAUHbGFuZEVUQQAKTEFORFBSRUZJWAIETEFORAAKRFVDS1BSRUZJWAIERFVDSwAKQVJUUFJFU0FMRQIHUFJFU0FMRQAGTlVNUkVTAAYAGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgAZAA9EQUlMWVJFU0JZUElFQ0UAgPjSAQAMV0hNVUxUSVBMSUVSAIDIr6AlAA9ERUZBVUxUTE9DQVRJT04CD0FmcmljYV9GX0FmcmljYQAQUkVTT1VSQ0VQUklDRU1JTgDVtQIACkVTU0VMTENPRUYACgAVTUlOX1VTRFRfRkVFX0RFTElWRVJZANCGAwASVEVOX01JTlVURVNfTUlMTElTAMDPJAAXQUxMT1dFRF9GUkVFX0RFTElWRVJJRVMAAwAaQUNSRVNfRk9SX0RFTElWRVJZX0FUVEVNUFQAgNrECQAJcHJvZFR5cGVzCQDMCAICEEZpcnN0IEFpZCBLaXQgTDEJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMgkAzAgCAhBGaXJzdCBBaWQgS2l0IEwzCQDMCAICC0JhY2twYWNrIEwxCQDMCAICC0JhY2twYWNrIEwyCQDMCAICC0JhY2twYWNrIEwzCQDMCAICDkZvb2QgUmF0aW9uIEwxCQDMCAICDkZvb2QgUmF0aW9uIEwyCQDMCAICDkZvb2QgUmF0aW9uIEwzCQDMCAICC0pldCBQYWNrIEwxCQDMCAICC0pldCBQYWNrIEwyCQDMCAICC0pldCBQYWNrIEwzCQDMCAICCVNoaWVsZCBMMQkAzAgCAglTaGllbGQgTDIJAMwIAgIJU2hpZWxkIEwzCQDMCAICB01pbmUgTDEJAMwIAgIHTWluZSBMMgkAzAgCAgdNaW5lIEwzCQDMCAICB1RyYXAgTDEJAMwIAgIHVHJhcCBMMgkAzAgCAgdUcmFwIEwzBQNuaWwACmNvbnRpbmVudHMJAMwIAgIIQW1lcmljYXMJAMwIAgIGRXVyb3BlCQDMCAICBEFzaWEJAMwIAgIGQWZyaWNhCQDMCAICB09jZWFuaWEFA25pbAAJQ09FRkYyTUFUAICt4gQAEGZvcnRBbGxvd2VkUHJvZHMJAMwIAgAPCQDMCAIAEAkAzAgCABEJAMwIAgASCQDMCAIAEwkAzAgCABQFA25pbAAQcHJvZHVjdGlvbk1hdHJpeAkAzAgCAiU4XzhfOF8xN18xN180Ml8xMl8wXzMwXzAsMCwwLDAsMCwwLDBfCQDMCAICJThfOF84XzE3XzE3XzQyXzI0XzBfNjBfMCwwLDUsMiwwLDAsMF8JAMwIAgInOF84XzhfMTdfMTdfNDJfMzZfMF8xMjBfMCwwLDEwLDQsMCwwLDBfCQDMCAICKThfMTlfMTlfOF8yN18xOV8yNl8xXzIwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICKThfMTlfMTlfOF8yN18xOV81Ml8xXzQwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICKThfMTlfMTlfOF8yN18xOV83OF8xXzgwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICJThfOF84XzhfOF82MF8xM18yXzJfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzI2XzJfNF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAiU4XzhfOF84XzhfNjBfMzlfMl84XzAsMCwwLDAsMCwwLDBfMDExCQDMCAICKTMwXzMwXzNfMTdfMTdfM18zMF8zXzMwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKTMwXzMwXzNfMTdfMTdfM182MF8zXzUwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKTMwXzMwXzNfMTdfMTdfM185MF8zXzcwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzExXzRfMTBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMjJfNF8yMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8zM180XzMwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKjRfMTNfMjJfNF8zNV8yMl8yM18wXzUwLDEsMF8wLDAsMCwwLDAsMCwwXwkAzAgCAio0XzEzXzIyXzRfMzVfMjJfNDZfMF81MCwxLDFfMCwyLDUsMCwwLDAsMF8JAMwIAgIrNF8xM18yMl80XzM1XzIyXzY5XzBfNTAsMiwxXzAsNSwxMCwwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfMjBfMV8zMCwxLDFfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzQwXzFfMzAsMSwyXzIsMSwzLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV82MF8xXzMwLDEsM181LDIsOCwwLDAsMCwwXwUDbmlsAAlySWR4Q29lZmYABgAKcklkeEVmZmVjdAAIABBySWR4UmVxdWlyZW1lbnRzAAkACXJJZHhTbG90cwAKAA5QUk9EVUNUUEtHU0laRQAKAAt3aElkeExldmVscwAAAAh3aElkeFJlcwABAAh3aElkeE1hdAACAAl3aElkeFByb2QAAwAJd2hJZHhMT0ZUAAQACXZvbExvY2tlZAAAAAt2b2xPY2N1cGllZAABAAd2b2xGcmVlAAIACHZvbFRvdGFsAAMACmJwSWR4TGV2ZWwAAAAIYnBJZHhSZXMAAQAIYnBJZHhNYXQAAgAJYnBJZHhQcm9kAAMAD2xvY0lkeENvbnRpbmVudAAAAApsb2NJZHhUeXBlAAEACGxvY0lkeElkAAIBFWtleUxhbmRBc3NldElkVG9Pd25lcgEHYXNzZXRJZAkArAICAgNub18FB2Fzc2V0SWQBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQdhc3NldElkCQCsAgICBWxjbmFfBQdhc3NldElkARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQdhc3NldElkCQCsAgICA3N0XwUHYXNzZXRJZAEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBHR5cGUHYXNzZXRJZAkAuQkCCQDMCAICA2xhcwkAzAgCBQR0eXBlCQDMCAIFB2Fzc2V0SWQFA25pbAIBXwEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMHbmZ0VHlwZQdhc3NldElkCW93bmVyQWRkcgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBnN0dGFvXwUHbmZ0VHlwZQIBXwUHYXNzZXRJZAIBXwUJb3duZXJBZGRyARJrZXlXYXJlaG91c2VCeUxhbmQBC2xhbmRBc3NldElkCQCsAgICA3doXwULbGFuZEFzc2V0SWQBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBB2Fzc2V0SWQJAKwCAgILaW5mcmFMZXZlbF8FB2Fzc2V0SWQBF2tleUZvcnRpZmljYXRpb25zQnlMYW5kAQtsYW5kQXNzZXRJZAkArAICAg9mb3J0aWZpY2F0aW9uc18FC2xhbmRBc3NldElkARprZXlEdWNrQXNzZXRJZFRvQ3VzdG9tTmFtZQEHYXNzZXRJZAkArAICAhhkdWNrQ3VzdG9tTmFtZUJ5QXNzZXRJZF8FB2Fzc2V0SWQBFmtleUFkZHJlc3NUb0N1c3RvbU5hbWUBBGFkZHIJAKwCAgIYYWNjb3VudEN1c3RvbU5hbWVCeUFkZHJfBQRhZGRyAQ9rZXlBZGRyZXNzUmVmQnkBBGFkZHIJAKwCAgIJYWNjUmVmQnlfBQRhZGRyARxrZXlPbmJvYXJkQXJ0QWN0aXZhdGVkT25EdWNrAQtkdWNrQXNzZXRJZAkArAICAhpvbmJvYXJkQXJ0QWN0aXZhdGVkT25EdWNrXwULZHVja0Fzc2V0SWQBHGtleU9uYm9hcmRBcnREdWNrQWN0aXZhdGVkQnkBBGFkZHIJAKwCAgIab25ib2FyZEFydEFjdGl2YXRlZER1Y2tCeV8FBGFkZHIBE2tleUFkZHJlc3NSZWZlcnJhbHMBBGFkZHIJAKwCAgINYWNjUmVmZXJyYWxzXwUEYWRkcgEQa2V5RHVja0lkVG9Pd25lcgEHYXNzZXRJZAkArAICAgpkdWNrT3duZXJfBQdhc3NldElkARRrZXlTdGFrZWREdWNrQnlPd25lcgEJb3duZXJBZGRyCQCsAgICEnN0YWtlZER1Y2tCeU93bmVyXwUJb3duZXJBZGRyARFrZXlCYWNrcGFja0J5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIJYmFja1BhY2tfBQtkdWNrQXNzZXRJZAEPa2V5RHVja0xvY2F0aW9uAQtkdWNrQXNzZXRJZAkArAICAg1kdWNrTG9jYXRpb25fBQtkdWNrQXNzZXRJZAEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQh1c2VyQWRkcgkArAICAholcyVzX191c2VyR3dsUmVsZWFzZVRpbWVfXwUIdXNlckFkZHIBDmtleUVzV2FyZWhvdXNlAAIaZW1lcmdlbmN5V2FyZWhvdXNlUHJvZHVjdHMAD2RlbGl2ZXJ5RnVuZEtleQIMZGVsaXZlcnlGdW5kABFkZWxpdmVyeUxvY2tlZEtleQIOZGVsaXZlcnlMb2NrZWQADWxhc3RUb3VySWRLZXkCDiVzX19sYXN0VG91cklkARVrZXlUb3VyU3RhdGljRGF0YUJ5SWQBA3RJZAkArAICAhYlcyVkX190b3VyU3RhdGljRGF0YV9fCQCkAwEFA3RJZAEWa2V5VG91ckR5bmFtaWNEYXRhQnlJZAEDdElkCQCsAgICFyVzJWRfX3RvdXJEeW5hbWljRGF0YV9fCQCkAwEFA3RJZAEaa2V5QmVzdFJlc3VsdEJ5VG91ckFuZER1Y2sCA3RJZAtkdWNrQXNzZXRJZAkAuQkCCQDMCAICHyVzJWQlc19fYmVzdFJlc3VsdEJ5VG91ckFuZER1Y2sJAMwIAgkApAMBBQN0SWQJAMwIAgULZHVja0Fzc2V0SWQFA25pbAICX18ACWlkeFN0YXRpYwAAAAppZHhEeW5hbWljAAEACnRTdGF0aWNFbmQABgAOdER5bmFtaWNTdGF0dXMAAQELZ2V0VG91ckRhdGECDHRvdXJDb250cmFjdAN0SWQEBnN0YXRpYwkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUMdG91ckNvbnRyYWN0CQEVa2V5VG91clN0YXRpY0RhdGFCeUlkAQUDdElkCQCsAgIJAKwCAgIZRXJyb3IgcmVhZGluZyB0b3VybmFtZW50IAkApAMBBQN0SWQCBSBkYXRhAgJfXwQHZHluYW1pYwkAvAkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUMdG91ckNvbnRyYWN0CQEWa2V5VG91ckR5bmFtaWNEYXRhQnlJZAEFA3RJZAkArAICCQCsAgICGUVycm9yIHJlYWRpbmcgdG91cm5hbWVudCAJAKQDAQUDdElkAgUgZGF0YQICX18JAMwIAgUGc3RhdGljCQDMCAIFB2R5bmFtaWMFA25pbAEOaXNJblRvdXJuYW1lbnQCDHRvdXJDb250cmFjdAhsb2NhdGlvbgQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFDHRvdXJDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABANsb2MJALUJAgUIbG9jYXRpb24CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBXREYXRhCQELZ2V0VG91ckRhdGECBQx0b3VyQ29udHJhY3QFBmxhc3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMDAwMJAAACCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBVAkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFD2xvY0lkeENvbnRpbmVudAUGbGFzdElkBwkAAAIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MHCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbm93BwEMaXNJbkRlbGl2ZXJ5AQhsb2NhdGlvbgQDbG9jCQC1CQIFCGxvY2F0aW9uAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlzdGFydFRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFD2xvY0lkeENvbnRpbmVudAQIZGlzdGFuY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFCGxvY0lkeElkAwMJAAACCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBRAkAZgIJAGQCBQlzdGFydFRpbWUFElRFTl9NSU5VVEVTX01JTExJUwUDbm93BwkAZwIAAwUIZGlzdGFuY2UHAQ9pc1VzdWFsTG9jYXRpb24BCGxvY2F0aW9uBAdsb2NUeXBlCQCRAwIJALUJAgUIbG9jYXRpb24CAV8FCmxvY0lkeFR5cGUDCQECIT0CBQdsb2NUeXBlAgFUCQECIT0CBQdsb2NUeXBlAgFEBwEJb25NaXNzaW9uAgx0b3VyQ29udHJhY3QIbG9jYXRpb24EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQx0b3VyQ29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQDbG9jCQC1CQIFCGxvY2F0aW9uAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUMdG91ckNvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljBAdsb2NUeXBlCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQMJAAACBQdsb2NUeXBlAgFEBgMDAwkAAAIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFUCQAAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUPbG9jSWR4Q29udGluZW50BQZsYXN0SWQHCQAAAgkAkQMCBQdkeW5hbWljBQ50RHluYW1pY1N0YXR1cwIKSU5QUk9HUkVTUwcJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQNub3cHARJnZXRSZWNpcGVNYXRlcmlhbHMBBnJlY2lwZQkAaAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZyZWNpcGUFCXJJZHhDb2VmZgUJQ09FRkYyTUFUAQxjaGVhdEF0dGVtcHQDBm9sZExvYwZuZXdMb2MJY2hlYXRDYXNlCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICFkNoZWF0IGF0dGVtcHQ6IG9sZExvYz0FBm9sZExvYwIJLCBuZXdMb2M9BQZuZXdMb2MCBywgY2FzZT0JAKQDAQUJY2hlYXRDYXNlABZLU19TRVBBUkFURV9QVUJMSUNfS0VZBwAYS1NfQUxMT1dfQklHX0lORlJBX01FUkdFBwARS1NfQUxMT1dfREVMSVZFUlkGAApEQVlfTUlMTElTAIC4mSkABWNoYWluCQDJAQIJAMoBAggFBHRoaXMFYnl0ZXMAAQABAAt1c2R0QXNzZXRJZAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAEghNp6sggDP07Ru8qO7ouTvMmC3Qtd+geWqNQj+agP/7kDCQAAAgEBVAUHJG1hdGNoMAEgVbHYn3KHgu/l41uNrAWrZd6aQ6EvFrsF8xq3h6XxxRgJAAIBAg1Vbmtub3duIGNoYWluABVkZWZhdWx0UmVzdEFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQUUN1dkZidmg0TGtQVW5yblUxejNqbmJBMXA5bTNXTmh2AwkAAAIBAVQFByRtYXRjaDACIzNNdW1rR0d6dENLQVhwV0RxeGtkZG9mcVhTVWJxUWt2U0p5CQACAQINVW5rbm93biBjaGFpbgARSW5mcmFVcGdyYWRlQ29zdFMEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAgMivoCUDCQAAAgEBVAUHJG1hdGNoMACAwtcvCQACAQINVW5rbm93biBjaGFpbgAOYXJiaXRyYWdlRGVsYXkEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAFCkRBWV9NSUxMSVMDCQAAAgEBVAUHJG1hdGNoMADg1AMJAAIBAg1Vbmtub3duIGNoYWluABNERUxJVkVSWV9QVU5JU0hNRU5UBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwBQpEQVlfTUlMTElTAwkAAAIBAVQFByRtYXRjaDAAwM8kCQACAQINVW5rbm93biBjaGFpbgADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAAVTU0laRQAZAAVNU0laRQBkAAVMU0laRQDhAQAGWExTSVpFAJADAAdYWExTSVpFAPEEAAVJVEVSNgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQUDbmlsAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAARSWR4Q2ZnU3Rha2luZ0RhcHAAAQARSWR4Q2ZnRWNvbm9teURhcHAAAgAUSWR4Q2ZnR292ZXJuYW5jZURhcHAAAwANSWR4Q2ZnV2xnRGFwcAAEABRJZHhDZmdUb3VybmFtZW50RGFwcAAHAA9JZHhDZmdBY3Jlc0RhcHAACAEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ5rZXlSZXN0QWRkcmVzcwACDCVzX19yZXN0QWRkcgERcmVhZFJlc3RDZmdPckZhaWwBBHJlc3QJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHJlc3QJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCB3Jlc3RDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdyZXN0Q2ZnBQNpZHgJAKwCAgIqUmVzdCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAMcmVzdENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlSZXN0QWRkcmVzcwAFFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgAHcmVzdENmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAQUMcmVzdENvbnRyYWN0AA9zdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdTdGFraW5nRGFwcAAPZWNvbm9teUNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnRWNvbm9teURhcHAAC2dvdkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnR292ZXJuYW5jZURhcHAAC3dsZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUNSWR4Q2ZnV2xnRGFwcAASdG91cm5hbWVudENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnVG91cm5hbWVudERhcHAADWFjcmVzQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBQ9JZHhDZmdBY3Jlc0RhcHAACnJlY0xhbmROdW0AAAALcmVjTGFuZFNpemUAAQALcmVjVGVycmFpbnMAAgAMcmVjQ29udGluZW50AAMADXdsZ0Fzc2V0SWRLZXkCC3dsZ19hc3NldElkAAp3bGdBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgULd2xnQ29udHJhY3QFDXdsZ0Fzc2V0SWRLZXkCGFdMR09MRCBpcyBub3QgaXNzdWVkIHlldAAPYWNyZXNBc3NldElkS2V5AgxhY3Jlc0Fzc2V0SWQADGFjcmVzQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFDWFjcmVzQ29udHJhY3QFD2FjcmVzQXNzZXRJZEtleQIXQUNSRVMgaXMgbm90IGlzc3VlZCB5ZXQAC3JhbmRvbURlbGF5AAIBCWtleUNvbW1pdAEHYWRkcmVzcwkArAICAhNmaW5pc2hCbG9ja0ZvckFkZHJfBQdhZGRyZXNzARFrZXlSZXNQcm9wb3J0aW9ucwACE3Jlc1R5cGVzUHJvcG9ydGlvbnMBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBCWNvbnRpbmVudAkArAICAhRyZXNUeXBlc0J5Q29udGluZW50XwUJY29udGluZW50ARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBCW93bmVyQWRkcgkArAICAhNzdGFrZWRMYW5kc0J5T3duZXJfBQlvd25lckFkZHIBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBCW93bmVyQWRkcgkArAICAhRzdGFrZWRQaWVjZXNCeU93bmVyXwUJb3duZXJBZGRyAQhhc1N0cmluZwEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBbgUHJG1hdGNoMAUBbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEJYXNBbnlMaXN0AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACCUxpc3RbQW55XQQBbAUHJG1hdGNoMAUBbAkAAgECG2ZhaWwgdG8gY2FzdCBpbnRvIExpc3RbQW55XQEJYXNCb29sZWFuAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAXMFByRtYXRjaDAFAXMJAAIBAhlmYWlsIHRvIGNhc3QgaW50byBCb29sZWFuAQ9udW1QaWVjZXNCeVNpemUBCGxhbmRTaXplBAckbWF0Y2gwBQhsYW5kU2l6ZQMJAAACAgFTBQckbWF0Y2gwBQVTU0laRQMJAAACAgFNBQckbWF0Y2gwBQVNU0laRQMJAAACAgFMBQckbWF0Y2gwBQVMU0laRQMJAAACAgJYTAUHJG1hdGNoMAUGWExTSVpFAwkAAAICA1hYTAUHJG1hdGNoMAUHWFhMU0laRQkAAgECEVVua25vd24gbGFuZCBzaXplAQdpc0RpZ2l0AQFzCQEJaXNEZWZpbmVkAQkAtgkBBQFzAQprZXlCbG9ja2VkAAIQY29udHJhY3RzQmxvY2tlZAERa2V5TGFzdFR4SWRCeVVzZXIBBGFkZHIJAKwCAgIPbGFzdFR4SWRCeVVzZXJfBQRhZGRyAQpmaXhlZFBvaW50AgN2YWwIZGVjaW1hbHMEBnRlblBvdwkAbAYACgAABQhkZWNpbWFscwAAAAAFBERPV04EB2xvd1BhcnQJAKQDAQkAagIFA3ZhbAUGdGVuUG93BAZ6ZXJvZXMJALACAgkApAMBBQZ0ZW5Qb3cJAGQCAAEJALECAQUHbG93UGFydAkArAICCQCsAgIJAKwCAgkApAMBCQBpAgUDdmFsBQZ0ZW5Qb3cCAS4FBnplcm9lcwUHbG93UGFydAEPZ2V0UmFuZG9tTnVtYmVyAwhtYXhWYWx1ZQxmaW5pc2hIZWlnaHQKYXV4RW50cm9weQQPcmFuZG9tU2VlZEJsb2NrCQEFdmFsdWUBCQDtBwEFDGZpbmlzaEhlaWdodAQKcmFuZG9tSGFzaAkA9wMBCQDLAQIJAQV2YWx1ZQEIBQ9yYW5kb21TZWVkQmxvY2sDdnJmBQphdXhFbnRyb3B5CQBqAgkAsQkBBQpyYW5kb21IYXNoBQhtYXhWYWx1ZQANaW5jdWJhdG9yQWRkcgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BFa3RWdXgyUmhjaFNONjNEc0RvNGI0bXo0UXF6S1NlRHYDCQAAAgEBVAUHJG1hdGNoMAUEdGhpcwkAAgECDVVua25vd24gY2hhaW4AC2JyZWVkZXJBZGRyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUERWdVU0NUg3RWg1ZG10TmJuUk5SU3RHd1VMQTdOWTZIYgMJAAACAQFUBQckbWF0Y2gwBQR0aGlzCQACAQINVW5rbm93biBjaGFpbgADcHViBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAwUWS1NfU0VQQVJBVEVfUFVCTElDX0tFWQEgqxdXjxVn41lUQbDWcutmm8Sj02Ze1ZmGUN+YNx+yCQgBIE9T4ho/VKjWnVJOEx1GJ1W9s1PzLHvJVFSw/0PBtBQoAwkAAAIBAVQFByRtYXRjaDABIE9T4ho/VKjWnVJOEx1GJ1W9s1PzLHvJVFSw/0PBtBQoCQACAQINVW5rbm93biBjaGFpbgAMRU1QVFlfUFJPRDUwAZADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARRklWRU1JTlVURVNNSUxMSVMA4KcSAAxSRU5BTUlOR0NPU1QAwJaxAgAKTUFYTkFNRUxFTgAyABVJbmZyYVVwZ3JhZGVDb3N0U1VzZHQAgK3iBAAMRVhQTUFURVJJQUxTBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAKbdgu2rBwMJAAACAQFUBQckbWF0Y2gwAKqngbMJCQACAQINVW5rbm93biBjaGFpbgAHRVhQVVNEVAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACA5Zp3AwkAAAIBAVQFByRtYXRjaDAAgOWadwkAAgECDVVua25vd24gY2hhaW4ADFNfQ09TVF9BQ1JFUwCA8ouoCQAFRklWRVgJALYCAQAFAAdUV0VOVFlYCQC2AgEAFAAIVFdFTlRZMlgJALYCAQkAaAIAFAAUAAhUV0VOVFkzWAkAtgIBCQBoAgkAaAIAFAAUABQACFRXRU5UWTRYCQC2AgEJAGgCCQBoAgkAaAIAFAAUABQAFAAIVFdFTlRZNVgJALYCAQkAaAIJAGgCCQBoAgkAaAIAFAAUABQAFAAUAA9QUkVTQUxFTlVNTEFORFMA9AMBEmtleU5leHRGcmVlTGFuZE51bQACC25leHRMYW5kTnVtARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEEbmFtZQkArAICAgRsY25fBQRuYW1lARBrZXlMYW5kVG9Bc3NldElkAQdsYW5kTnVtCQCsAgICA2xhXwUHbGFuZE51bQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgdhc3NldElkCW93bmVyQWRkcgkArAICCQCsAgIJAKwCAgIFaWxhb18FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgERa2V5TGFuZE51bVRvT3duZXIBB2xhbmROdW0JAKwCAgIDbG9fBQdsYW5kTnVtARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEEbmFtZQkArAICAhFkdWNrQnlDdXN0b21OYW1lXwUEbmFtZQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEEbmFtZQkArAICAhRhY2NvdW50QnlDdXN0b21OYW1lXwUEbmFtZQEJa2V5T2xkaWVzAAIKb2xkaWVzTGlzdAALY2xhaW1Nb2RlV2gAAAANY2xhaW1Nb2RlRHVjawABABNjbGFpbU1vZGVXaFRoZW5EdWNrAAIACGZsSGVhbHRoAAAAC2ZsVGltZXN0YW1wAAUAB2ZsQm9udXMABgALZmxQcm9kc1VzZWQABwEHbmZ0TmFtZQIHbGFuZE51bQhsYW5kU2l6ZQkArAICCQCsAgIFCkxBTkRQUkVGSVgFB2xhbmROdW0FCGxhbmRTaXplAQh0b1ZvbHVtZQIGYW1vdW50B3BrZ1NpemUEBHBrZ3MDCQBnAgUGYW1vdW50AAAJAGkCCQBlAgkAZAIFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQEBLQEJAGkCCQBlAgkAZAIJAQEtAQUGYW1vdW50BQdwa2dTaXplAAEFB3BrZ1NpemUJAGgCBQRwa2dzBQVNVUxUOAETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFdG90YWwHd2VpZ2h0cwQDc3VtCQBkAgkAZAIJAGQCCQBkAgkAZAIJAJEDAgUHd2VpZ2h0cwAACQCRAwIFB3dlaWdodHMAAQkAkQMCBQd3ZWlnaHRzAAIJAJEDAgUHd2VpZ2h0cwADCQCRAwIFB3dlaWdodHMABAkAkQMCBQd3ZWlnaHRzAAUDCQBnAgAABQNzdW0JAAIBAhBaZXJvIHdlaWdodHMgc3VtBAVub3JtNgkAawMFBXRvdGFsBQVNVUxUNgUDc3VtCgEKbm9ybWFsaXplcgIDYWNjBGVsZW0JAM0IAgUDYWNjCQBrAwUEZWxlbQUFbm9ybTYFBU1VTFQ2CgACJGwFB3dlaWdodHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCm5vcm1hbGl6ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEmdldE5lZWRlZE1hdGVyaWFscwEFdG90YWwEBXByb3BzCQC1CQIJAQV2YWx1ZQEJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAIBXwMJAQIhPQIJAJADAQUFcHJvcHMFBk5VTVJFUwkAAgECFldyb25nIHByb3BvcnRpb25zIGRhdGEEAXIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAAJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAEJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAMJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAQJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAUFA25pbAkBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBQV0b3RhbAUBcgERc3VidHJhY3RNYXRlcmlhbHMDDHNob3VsZFVzZU1hdANoYXMJdG90YWxOZWVkBARuZWVkCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUJdG90YWxOZWVkCgEKc3VidHJhY3RvcgIDYWNjA2lkeAQGcmVzdWx0CQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2hhcwUDaWR4CQCRAwIFBG5lZWQFA2lkeAMJAGYCAAAFBnJlc3VsdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhhOb3QgZW5vdWdoIG1hdGVyaWFsIGlkeD0JAKQDAQUDaWR4AgssIHlvdSBoYXZlIAkAkQMCBQNoYXMFA2lkeAILLCBidXQgbmVlZCAJAKQDAQkAkQMCBQRuZWVkBQNpZHgJAM0IAgUDYWNjCQCkAwEFBnJlc3VsdAMFDHNob3VsZFVzZU1hdAoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKc3VidHJhY3RvcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgUDaGFzARFzdWJ0cmFjdEVxdWlwbWVudAIFb2xkRXEFcFVzZWQDCQAAAgUFcFVzZWQCAAkAlAoCBQVvbGRFcQcKAQdzdWJVc2VkAgNhY2MGaWR4QW10BAVwYXJ0cwkAtQkCBQZpZHhBbXQCASwDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAihJbmNvcnJlY3QgZm9ybWF0LCBzaG91bGQgYmUgaW5kZXgsYW1vdW50BANpZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAAAwMJAGYCAAAFA2lkeAYJAGcCBQNpZHgJAJADAQUQcHJvZHVjdGlvbk1hdHJpeAkAAgECE1Vua25vd24gcHJvZHVjdCBpZHgEA2FtdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEEB2VxUGFydHMJALUJAggFA2FjYwJfMQkArAICCQCRAwIFBXBhcnRzAAACAToDCQECIT0CCQCQAwEFB2VxUGFydHMAAgkAAgEJAKwCAgkArAICAg9Zb3UgZG9uJ3QgaGF2ZSAJAJEDAgUJcHJvZFR5cGVzBQNpZHgCCSBlcXVpcHBlZAQDdG1wCQCRAwIFB2VxUGFydHMAAQQGbnVtTGVuAwkBB2lzRGlnaXQBCQCvAgIJALACAgUDdG1wAAEAAQACAAEEBGN1cnIJAQ1wYXJzZUludFZhbHVlAQkArwICBQN0bXAFBm51bUxlbgQEdGFpbAkAsAICBQN0bXAFBm51bUxlbgQGbmV3QW10AwkAZwIFBGN1cnIFA2FtdAkAZQIFBGN1cnIFA2FtdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg1Zb3UgZXF1aXBwZWQgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQNpZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUDYW10CQCUCgIJAKwCAgkArAICCQCsAgIJAKwCAgkAkQMCBQdlcVBhcnRzAAAJAJEDAgUFcGFydHMAAAIBOgkApAMBBQZuZXdBbXQFBHRhaWwDCAUDYWNjAl8yBgMDCQBnAgUDaWR4AAYJAGcCAAgFA2lkeAcJAAACBQZuZXdBbXQAAAcKAAIkbAkAtQkCBQVwVXNlZAIBXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUFb2xkRXEHCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzdWJVc2VkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAQ5wcm9kU3RyVG9CeXRlcwEHcHJvZFN0cgQFcExpc3QDCQAAAgUHcHJvZFN0cgIABQNuaWwJALwJAgUHcHJvZFN0cgIBXwoBBHRvQlYCA2FjYwZyZWNpcGUEAWoJAGkCCQDIAQEFA2FjYwAIBARjdXJyAwkAZgIJAJADAQUFcExpc3QFAWoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwTGlz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AhRDYW4ndCBwdXQgbW9yZSB0aGFuIAkApAMBBQ1NQVhQUk9ESU5TTE9UAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAMJAAACBQVjb3VudAAACQCVCgMFBXBMaXN0BQhvY2N1cGllZAUEZnJlZQQEaGVhZAkAyQECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAQEY3VycgkAsQkBCQDJAQIJAMoBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgACAQEdGFpbAkAygECBQVwTGlzdAkAaAIACAkAZAIFCnByb2R1Y3RJZHgAAQQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAUKcHJvZHVjdElkeAIBXwMDCQEBIQEFCmlzUG9zaXRpdmUJAGYCBQVjb3VudAUEY3VycgcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJWW91IGhhdmUgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AhMsIGJ1dCB0cmllZCB0byB1c2UgCQCkAwEFBWNvdW50BAZuZXdBbXQDAwkBASEBBQppc1Bvc2l0aXZlCQEVY2hlY2tTdGF0UmVxdWlyZW1lbnRzAgUJZHVja1N0YXRzCQC1CQIJAJEDAgUGcmVjaXBlBRBySWR4UmVxdWlyZW1lbnRzAgEsBwkAZQIFBGN1cnIFBWNvdW50CQBkAgUEY3VycgUFY291bnQECGRlbHRhVm9sCQBlAgkBCHRvVm9sdW1lAgUGbmV3QW10BQ5QUk9EVUNUUEtHU0laRQkBCHRvVm9sdW1lAgUEY3VycgUOUFJPRFVDVFBLR1NJWkUJAJUKAwkAywECCQDLAQIFBGhlYWQJAJoDAQUGbmV3QW10BQR0YWlsCQBkAgUIb2NjdXBpZWQFCGRlbHRhVm9sCQBlAgUEZnJlZQUIZGVsdGFWb2wBCGFkZFByb2RCBwZpZHhDbnQFcExpc3QKaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgEc2xvdAlkdWNrU3RhdHMEBXBhcnRzCQC1CQIFBmlkeENudAIBOgMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleDphbW91bnQDAwkBASEBBQppc1Bvc2l0aXZlCQECIT0CCQCxAgEJAJEDAgUFcGFydHMAAAACBwkAAgECK1Byb2R1Y3QgaWR4IHNob3VsZCBiZSAyIGRpZ2l0cywgemVybyBwYWRkZWQECnByb2R1Y3RJZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAABAVjb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEDAwkAZgIAAAUKcHJvZHVjdElkeAYJAGcCBQpwcm9kdWN0SWR4CQCQAwEFEHByb2R1Y3Rpb25NYXRyaXgJAAIBAhNVbmtub3duIHByb2R1Y3QgaWR4AwkAZgIAAAUFY291bnQJAAIBAhdDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZQMJAGYCBQVjb3VudAUNTUFYUFJPRElOU0xPVAkAAgEJAKwCAgkArAICCQCsAgICFENhbid0IHB1dCBtb3JlIHRoYW4gCQCkAwEFDU1BWFBST0RJTlNMT1QCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AwkAAAIFBWNvdW50AAAJAJQKAgUFcExpc3QHBARoZWFkCQDJAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4BARjdXJyCQCxCQEJAMkBAgkAygECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAAIBAR0YWlsCQDKAQIFBXBMaXN0CQBoAgAICQBkAgUKcHJvZHVjdElkeAABBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQpwcm9kdWN0SWR4AgFfAwMJAQEhAQUKaXNQb3NpdGl2ZQkAZgIFBWNvdW50BQRjdXJyBwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglZb3UgaGF2ZSAJAKQDAQUEY3VycgIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUFY291bnQECWlzQmlnSXRlbQMDCQEBIQEFCmlzUG9zaXRpdmUJARVjaGVja1N0YXRSZXF1aXJlbWVudHMCBQlkdWNrU3RhdHMJALUJAgkAkQMCBQZyZWNpcGUFEHJJZHhSZXF1aXJlbWVudHMCASwHBAZjb21wYXQJAJEDAgUGcmVjaXBlBQlySWR4U2xvdHMDCQAAAgUGY29tcGF0AgAJAAIBAhdJdGVtIGNhbm5vdCBiZSBlcXVpcHBlZAQBYwkBDXBhcnNlSW50VmFsdWUBBQZjb21wYXQEBGNTZWcJAGkCBQFjAGQDCQECIT0CBQdzZWdtZW50BQRjU2VnCQACAQIUU2VnbWVudCBpbmNvbXBhdGlibGUECGNNYWluQXV4CQBpAgkAagIFAWMAZAAKAwkBAiE9AgUHbWFpbkF1eAUIY01haW5BdXgJAAIBAhFTbG90IGluY29tcGF0aWJsZQQJY051bVNsb3RzCQBqAgUBYwAKAwMJAQIhPQIFBHNsb3QAAAkAZgIFCWNOdW1TbG90cwABBwkAAgECHkJpZyBpdGVtcyBzaG91bGQgb2NjdXB5IHNsb3QgMAkAZgIFCWNOdW1TbG90cwABBwkAlAoCCQDLAQIJAMsBAgUEaGVhZAkAmgMBCQBkAgUEY3VycgMFCmlzUG9zaXRpdmUFBWNvdW50CQEBLQEFBWNvdW50BQR0YWlsBQlpc0JpZ0l0ZW0BC3Nsb3RzR3JvdXBCBgFnBGJwSW4KaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgFc3RhdHMDCQECIT0CBQFnAgAEBXNsb3RzCQC1CQIFAWcCASwDCQBmAgkAkAMBBQVzbG90cwUITUFYU0xPVFMJAAIBAhJXcm9uZyBzbG90cyBmb3JtYXQEAnMwCQCRAwIFBXNsb3RzAAAEAnMxAwkAZgIJAJADAQUFc2xvdHMAAQkAkQMCBQVzbG90cwABAgADAwkAAAIFAnMwAgAJAAACBQJzMQIABwUEYnBJbgQFdG1wUzADCQECIT0CBQJzMAIACQEIYWRkUHJvZEIHBQJzMAUEYnBJbgUKaXNQb3NpdGl2ZQUHc2VnbWVudAUHbWFpbkF1eAAABQVzdGF0cwkAlAoCBQRicEluBwMJAQIhPQIFAnMxAgADCAUFdG1wUzACXzIJAAIBAh5CaWcgaXRlbSBhbHJlYWR5IG9jY3VwaWVzIHNsb3QICQEIYWRkUHJvZEIHBQJzMQgFBXRtcFMwAl8xBQppc1Bvc2l0aXZlBQdzZWdtZW50BQdtYWluQXV4AAEFBXN0YXRzAl8xCAUFdG1wUzACXzEFBGJwSW4B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DXBhcnNlSW50VmFsdWUBBQNpZHgCAV8FCnJJZHhFZmZlY3QAAAQFc3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAUKYnVmZkVmZmVjdAYECG5ld1Byb2RCCQEGZHJlc3NCBAUGY3VyckVxBQl0ZW1wUHJvZEIHBQVzdGF0cwkAAAIFCG5ld1Byb2RCBQhuZXdQcm9kQgEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIcHJvcExpc3QNdGVycmFpbkNvdW50cw1sYW5kU2l6ZUluZGV4BHNpZ24DCQECIT0CCQCQAwEFCHByb3BMaXN0BQZOVU1SRVMJAAIBAhZXcm9uZyBwcm9wb3J0aW9ucyBkYXRhCgEHdXBkYXRlcgIDYWNjAWkEBnJlc3VsdAkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9wTGlzdAUBaQkAaAIJAGgCBQRzaWduCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkFDWxhbmRTaXplSW5kZXgDCQBmAgAABQZyZXN1bHQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICFlBhbmljISBQaWVjZXMgb2YgdHlwZT0JAKQDAQUBaQIHLCBzaWduPQkApAMBBQRzaWduAhMsIHRlcnJhaW5Db3VudHNbaV09CQCkAwEJAJEDAgUNdGVycmFpbkNvdW50cwUBaQIQLCBsYW5kU2l6ZUluZGV4PQkApAMBBQ1sYW5kU2l6ZUluZGV4CQDNCAIFA2FjYwkApAMBBQZyZXN1bHQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3VwZGF0ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEXVwZGF0ZVByb3BvcnRpb25zAw10ZXJyYWluQ291bnRzDWxhbmRTaXplSW5kZXgEc2lnbgQIcHJvcExpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCHByb3BMaXN0BQ10ZXJyYWluQ291bnRzBQ1sYW5kU2l6ZUluZGV4BQRzaWduAgFfAQ1jb3VudFRlcnJhaW5zAQh0ZXJyYWlucwkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFBAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBQgABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUMAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFEAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBRQABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUYAAQUDbmlsAQZhZGRSZXMFCmN1cnJlbnRSZXMNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUNbGFuZFNpemVJbmRleBdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwoBBWFkZGVyAgNhY2MBaQQJcmVzT2ZUeXBlCQBoAgkAaAIJAGsDBQlkZWx0YVRpbWUFF2RhaWx5QnlQaWVjZVdpdGhCb251c2VzBQlEQVlNSUxMSVMJAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAkAzQgCBQNhY2MJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpjdXJyZW50UmVzBQFpBQlyZXNPZlR5cGUEAXIKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCQC5CQIFAXICAV8BCXZpcnRDbGFpbQQNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUNbGFuZFNpemVJbmRleBdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwoBBWFkZGVyAgNhY2MBaQQJcmVzT2ZUeXBlCQBoAgkAaAIJAGsDBQlkZWx0YVRpbWUFF2RhaWx5QnlQaWVjZVdpdGhCb251c2VzBQlEQVlNSUxMSVMJAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAkAlAoCCQDNCAIIBQNhY2MCXzEFCXJlc09mVHlwZQkAZAIIBQNhY2MCXzIFCXJlc09mVHlwZQoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAQ1kaXN0cmlidXRlUmVzBAxjdXJyZW50V2hSZXMOY3VycmVudFBhY2tSZXMKcmVzVG9DbGFpbQt3aFNwYWNlTGVmdAQOcmVzTGlzdFRvQ2xhaW0IBQpyZXNUb0NsYWltAl8xBAxyZXNBbVRvQ2xhaW0IBQpyZXNUb0NsYWltAl8yAwkAAAIFDHJlc0FtVG9DbGFpbQAACQCUCgIJALkJAgUMY3VycmVudFdoUmVzAgFfCQC5CQIFDmN1cnJlbnRQYWNrUmVzAgFfAwkAZwIFC3doU3BhY2VMZWZ0BQxyZXNBbVRvQ2xhaW0KAQhhZGRMaXN0cwIDYWNjAWkJAM0IAgUDYWNjCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUMY3VycmVudFdoUmVzBQFpCQCRAwIFDnJlc0xpc3RUb0NsYWltBQFpBAFyCgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmls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eAppbmZyYUxldmVsBAl2b2xQcmVmaXgJAKwCAgkArAICCQCkAwEFCWxhbmRJbmRleAIBXwkApAMBBQppbmZyYUxldmVsBAd3aFRvdGFsCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBBQl2b2xQcmVmaXgEBXdoU3RyCQELdmFsdWVPckVsc2UCCQCiCAEFBXdoS2V5CQCsAgIFCXZvbFByZWZpeAIbOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOjowBAJ3aAkAvAkCBQV3aFN0cgIBOgQKd2hPY2N1cGllZAkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBndoTG9mdAMJAGYCAAUJAJADAQUCd2gJALkJAgkAzAgCAgEwCQDMCAIJAKQDAQUKd2hPY2N1cGllZAkAzAgCCQCkAwEJAGUCBQd3aFRvdGFsBQp3aE9jY3VwaWVkCQDMCAIJAKQDAQUHd2hUb3RhbAUDbmlsAgFfBARsb2Z0CQC1CQIJAJEDAgUCd2gFCXdoSWR4TE9GVAIBXwQId2hMb2NrZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQEA29jYwMJAGYCCQCQAwEFBGxvZnQAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkBQp3aE9jY3VwaWVkCQC5CQIJAMwIAgkApAMBBQh3aExvY2tlZAkAzAgCCQCkAwEFA29jYwkAzAgCCQCkAwEJAGUCCQBlAgUHd2hUb3RhbAUId2hMb2NrZWQFA29jYwkAzAgCCQCkAwEFB3doVG90YWwFA25pbAIBXwkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAndoBQh3aElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAndoBQh3aElkeFJlcwILMF8wXzBfMF8wXzAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCBQZ3aExvZnQFA25pbAEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQljdXJyZW50V2gEC29jY3VwaWVkVm9sCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQljdXJyZW50V2gED2N1cnJXaExvY2tlZFZvbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkCQBlAgkAZQIJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwULb2NjdXBpZWRWb2wFD2N1cnJXaExvY2tlZFZvbAEJbW92ZVN0dWZmAwpjYXJnb1BhcnRzCWN1cnJlbnRXaAtjdXJyZW50UGFjawMJAQIhPQIJAJADAQUKY2FyZ29QYXJ0cwADCQACAQI0Y2FyZ29MaXN0U3RyIHNob3VsZCBjb250YWluIGV4YWN0bHkgMiAnOicgc2VwYXJhdG9ycwQIcmVzUGFydHMJALUJAgkAkQMCBQpjYXJnb1BhcnRzAAACAV8ECG1hdFBhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwABAgFfBAlwcm9kUGFydHMDCQAAAgkAkQMCBQpjYXJnb1BhcnRzAAICAAUDbmlsCQC8CQIJAJEDAgUKY2FyZ29QYXJ0cwACAgFfAwkBAiE9AgkAkAMBBQhyZXNQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgcmVzb3VyY2VzIHNob3VsZCBiZSBwYXNzZWQDCQECIT0CCQCQAwEFCG1hdFBhcnRzBQZOVU1SRVMJAAIBAiBBbGwgNiBtYXRlcmlhbHMgc2hvdWxkIGJlIHBhc3NlZAQLd2hTcGFjZUxlZnQJARVnZXRXYXJlaG91c2VTcGFjZUxlZnQBBQljdXJyZW50V2gECWN1cnJXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8ECWN1cnJXaE1hdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8ECmN1cnJXaFByb2QDCQAAAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIBXwQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDmN1cnJlbnRQYWNrTWF0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBA9jdXJyZW50UGFja1Byb2QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8KAQNtdlICA2FjYwRpdGVtBAFpCAUDYWNjAl8xBAJhbQkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAN3aHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQljdXJyV2hSZXMFAWkEA2JwcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpAwkAAAIFAmFtAAAJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCRAwIFCWN1cnJXaFJlcwUBaQkAzQgCCAUDYWNjAl8zCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpCAUDYWNjAl80AwkAZgIFAmFtAAADCQBmAgUCYW0FA2JwcgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAUEaXRlbQIZIGZyb20gYmFja3BhY2ssIGJ1dCBvbmx5IAkApAMBBQNicHICCiBhdmFpbGFibGUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHIFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcgUCYW0JAGQCCAUDYWNjAl80BQJhbQMJAGYCCQEBLQEFAmFtBQN3aHIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAJAKQDAQkBAS0BBQJhbQIaIGZyb20gd2FyZWhvdXNlLCBidXQgb25seSAJAKQDAQUDd2hyAgogYXZhaWxhYmxlCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hyBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicHIFAmFtCQBkAggFA2FjYwJfNAUCYW0EAXIKAAIkbAUIcmVzUGFydHMKAAIkcwkAkAMBBQIkbAoABSRhY2Mw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AQUHYXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQkAzAgCBQVpc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0FAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQJpZAUIdXNlckFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUIdXNlckFkZHIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUCaWQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFAmlkBQh1c2VyQWRkcgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgABBQdhc3NldElkBQNuaWwJAJQKAgUCaWQFCWNvbnRpbmVudAEMZmxpZ2h0Q29tbW9uAwh1c2VyQWRkcgdtZXNzYWdlA3NpZwMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAQFcGFydHMJALwJAgkAsAkBBQdtZXNzYWdlAgE7BAlmbGlnaHRMb2cJALwJAgkAkQMCBQVwYXJ0cwAAAgF8BAJocAkAtQkCCQCRAwIFCWZsaWdodExvZwUIZmxIZWFsdGgCAV8EBWN1ckhQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAAQFbmV3SFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAABBAtuZXdMb2NUeFZlcgkAtQkCCQCRAwIFBXBhcnRzAAECAToEC25ld0xvY2F0aW9uCQCRAwIFC25ld0xvY1R4VmVyAAAEBHRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlmbGlnaHRMb2cFC2ZsVGltZXN0YW1wAwMJAGYCBQR0aW1lCQBkAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBgkAZgIJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMFBHRpbWUJAAIBCQCsAgIJAKwCAgkArAICAhxzaWduYXR1cmUgb3V0ZGF0ZWQ6IGxvZ1RpbWU9CQCkAwEFBHRpbWUCCSwgYmNUaW1lPQkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJdHhGcm9tTXNnCQCRAwIFC25ld0xvY1R4VmVyAAEEBmxhc3RUeAkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5TGFzdFR4SWRCeVVzZXIBBQh1c2VyQWRkcgIAAwkBAiE9AgUGbGFzdFR4BQl0eEZyb21Nc2cJAAIBCQCsAgIJAKwCAgkArAICAh5UeCBpZHMgZG9uJ3QgbWF0Y2ghIEluIHN0YXRlOiAFBmxhc3RUeAIKLCBpbiBtc2c6IAUJdHhGcm9tTXNnBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQMb2xkRnJvbVN0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQECIT0CBQxvbGRGcm9tU3RhdGUFBWN1ckhQCQACAQkArAICCQCsAgIJAKwCAgIKb2xkSGVhbHRoPQkApAMBBQxvbGRGcm9tU3RhdGUCLyBmcm9tIHN0YXRlIGRvZXMgbm90IG1hdGNoIG9uZSBmcm9tIGZsaWdodCBsb2c9CQCkAwEFBWN1ckhQAwkAZwIAAAUFY3VySFAJAAIBAh5Zb3UgY2FuJ3QgZmx5IHdpdGggemVybyBoZWFsdGgDCQEBIQEJARdjYW5XZWFyQ3VycmVudEVxdWlwbWVudAEFC2R1Y2tBc3NldElkCQACAQIWRXF1aXBtZW50IGluY29tcGF0aWJsZQQFYm9udXMDCQBmAgkAkAMBBQlmbGlnaHRMb2cFB2ZsQm9udXMJAJEDAgUJZmxpZ2h0TG9nBQdmbEJvbnVzAgAECHByb2RVc2VkAwkAZgIJAJADAQUJZmxpZ2h0TG9nBQtmbFByb2RzVXNlZAkAkQMCBQlmbGlnaHRMb2cFC2ZsUHJvZHNVc2VkAgAECnNlbnRBbW91bnQDAwkAZgIFBW5ld0hQAAAJAAACBQVib251cwIBJAcJAQVhc0ludAEJAPwHBAUMcmVzdENvbnRyYWN0Ag1zZW5kVXNkdFByaXplCQDMCAIFCHVzZXJBZGRyBQNuaWwFA25pbAAACQCXCgUFBW5ld0hQBQtkdWNrQXNzZXRJZAUKc2VudEFtb3VudAULbmV3TG9jYXRpb24FCHByb2RVc2VkAQxhcHBseUJvbnVzZXMCC2xhbmRBc3NldElkBnBpZWNlcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECWFydFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABARhZGQ2CQBpAgUKaW5mcmFMZXZlbAAGBARhZGQ3CQBpAgUKaW5mcmFMZXZlbAAHCQBkAgkAZAIFD0RBSUxZUkVTQllQSUVDRQkAawMFD0RBSUxZUkVTQllQSUVDRQkAZAIJAGQCBQppbmZyYUxldmVsBQRhZGQ2CQBoAgACBQRhZGQ3AAUJAGsDBQ9EQUlMWVJFU0JZUElFQ0UFCWFydFBpZWNlcwkAaAIFBnBpZWNlcwAFARRjaGVja0NsYWltQ29uZGl0aW9ucwMEYWRkcgljbGFpbU1vZGUNbGFuZEFzc2V0SWRJbgQNJHQwMzM3MzgzNDI3NwMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQCUCgIFDWxhbmRBc3NldElkSW4JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OBANsb2MJALUJAgkBBXZhbHVlAQULY3VyTG9jYXRpb24CAV8DCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBTAkAAgEJAKwCAgkArAICAhZEdWNrIGxvY2F0aW9uIHR5cGUgaXMgCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIRLCBidXQgc2hvdWxkIGJlIEwJAJQKAgkAkQMCBQNsb2MFCGxvY0lkeElkBQtkdWNrQXNzZXRJZAQLbGFuZEFzc2V0SWQIBQ0kdDAzMzczODM0Mjc3Al8xBAZkdWNrSWQIBQ0kdDAzMzczODM0Mjc3Al8yBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQd0aW1lS2V5CQCsAgIJAKwCAgIFTGFuZCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfCQCWCgQFBmR1Y2tJZAULbGFuZEFzc2V0SWQFAWQFCXNhdmVkVGltZQEQY2xhaW1SZXNJbnRlcm5hbAQEYWRkcgZhbW91bnQJY2xhaW1Nb2RlDWxhbmRBc3NldElkSW4DCQBmAgAABQZhbW91bnQJAAIBAg9OZWdhdGl2ZSBhbW91bnQEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFCWNsYWltTW9kZQUNbGFuZEFzc2V0SWRJbgQIbGFuZFNpemUJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAggFAWMCXzMFC3JlY1RlcnJhaW5zBAlkZWx0YVRpbWUJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAgFAWMCXzQDCQBmAgAABQlkZWx0YVRpbWUJAAIBCQCsAgIJAKwCAgkArAICAiZTYXZlZCB0aW1lc3RhbXAgaXMgaW4gZnV0dXJlLCBzYXZlZCA9IAkApAMBCAUBYwJfNAIMLCBjdXJyZW50ID0gCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBBQhsYW5kU2l6ZQQWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDGFwcGx5Qm9udXNlcwIIBQFjAl8yBQZwaWVjZXMECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQUGcGllY2VzBQlEQVlNSUxMSVMDCQBmAgUGYW1vdW50BQhhdmFpbFJlcwkAAgEJAKwCAgkArAICCQCsAgICIk5vdCBlbm91Z2ggcmVzb3VyY2VzLCBhdmFpbGFibGUgPSAJAKQDAQUIYXZhaWxSZXMCDiwgcmVxdWVzdGVkID0gCQCkAwEFBmFtb3VudAQMbmV3RGVsdGFUaW1lCQBrAwkAZQIFCGF2YWlsUmVzBQZhbW91bnQFCURBWU1JTExJUwkAaAIFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UFBnBpZWNlcwQMbmV3VGltZXN0YW1wCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFDG5ld0RlbHRhVGltZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQKcmVzVG9DbGFpbQkBCXZpcnRDbGFpbQQFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEIBQFjAl8yBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQgFAWMCXzIAAAQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQEbG9mdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBAt3aFNwYWNlTGVmdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUDAwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAGYCBQZhbW91bnQFC3doU3BhY2VMZWZ0BwkAAgEJAKwCAgkArAICAgVPbmx5IAkApAMBBQt3aFNwYWNlTGVmdAIYIHNwYWNlIGxlZnQgaW4gd2FyZWhvdXNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDGN1cnJlbnRXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8EDSR0MDM2NjUxMzc1MjIDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAlgoECQEGYWRkUmVzBQUMY3VycmVudFdoUmVzBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQIBQpyZXNUb0NsYWltAl8yCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUIBQpyZXNUb0NsYWltAl8yAwkAAAIFCWNsYWltTW9kZQUNY2xhaW1Nb2RlRHVjawkAlgoECQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMJAQZhZGRSZXMFBQ5jdXJyZW50UGFja1JlcwUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUEBWRpc3RyCQENZGlzdHJpYnV0ZVJlcwQFDGN1cnJlbnRXaFJlcwUOY3VycmVudFBhY2tSZXMFCnJlc1RvQ2xhaW0FC3doU3BhY2VMZWZ0BAR3aEFtCQCXAwEJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUJAMwIAggFCnJlc1RvQ2xhaW0CXzIFA25pbAkAlgoECAUFZGlzdHICXzEIBQVkaXN0cgJfMgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAUEd2hBbQkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBQR3aEFtBAV3aFJlcwgFDSR0MDM2NjUxMzc1MjICXzEEBWJwUmVzCAUNJHQwMzY2NTEzNzUyMgJfMgQFbG9mdE8IBQ0kdDAzNjY1MTM3NTIyAl8zBAVsb2Z0RggFDSR0MDM2NjUxMzc1MjICXzQJAJcKBQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBCAUBYwJfMgUMbmV3VGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgIBQFjAl8yBQRhZGRyBQxuZXdUaW1lc3RhbXAFA25pbAUFYnBLZXkJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCBQVicFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAUFd2hLZXkJAMwIAgkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzCQDMCAIFBXdoUmVzCQDMCAIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAkAzAgCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCCQCRAwIFBGxvZnQFCXZvbExvY2tlZAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkAkQMCBQRsb2Z0BQh2b2xUb3RhbAUDbmlsAgFfBQNuaWwBCGNsYWltQWxsBARhZGRyC2xhbmRBc3NldElkBnBpZWNlcwljbGFpbU1vZGUEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBBXZhbHVlAQkAnwgBBQd0aW1lS2V5BAhhdmFpbFJlcwkAaAIJAGsDCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCXNhdmVkVGltZQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMFCURBWU1JTExJUwUGcGllY2VzCQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFCGF2YWlsUmVzBQljbGFpbU1vZGUFC2xhbmRBc3NldElkAQ11cEluZnJhQ29tbW9uBAxzaG91bGRVc2VNYXQGY2FsbGVyDXBheW1lbnRBbW91bnQLbGFuZEFzc2V0SWQEBGFkZHIJAKUIAQUGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBRNjbGFpbU1vZGVXaFRoZW5EdWNrBQtsYW5kQXNzZXRJZAQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUECGluZnJhS2V5CQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEIBQFjAl8yBAhjdXJMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQhpbmZyYUtleQAAAwMJAQEhAQUYS1NfQUxMT1dfQklHX0lORlJBX01FUkdFCQBnAgUIY3VyTGV2ZWwAAwcJAAIBAiZDdXJyZW50bHkgbWF4IGluZnJhc3RydWN0dXJlIGxldmVsID0gMwQIbWF4SW5mcmEJAGQCCQBpAgkBBHNxcnQEBQZwaWVjZXMAAAAABQRET1dOAAUAAgQIbmV3TGV2ZWwJAGQCBQhjdXJMZXZlbAABAwMFGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQkAZgIFCG5ld0xldmVsBQhtYXhJbmZyYQcJAAIBCQCsAgICJUN1cnJlbnRseSBtYXggaW5mcmFzdHJ1Y3R1cmUgbGV2ZWwgPSAJAKQDAQUIbWF4SW5mcmEEBGNvc3QJAGsDBRVJbmZyYVVwZ3JhZGVDb3N0U1VzZHQJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQMDCQEBIQEFDHNob3VsZFVzZU1hdAkBAiE9AgUNcGF5bWVudEFtb3VudAUEY29zdAcJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQRjb3N0BAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbUxpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EB21hdFVzZWQJAGsDBRFJbmZyYVVwZ3JhZGVDb3N0UwkAaAIFBnBpZWNlcwUIbmV3TGV2ZWwFBVNTSVpFBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwUMc2hvdWxkVXNlTWF0BQVtTGlzdAUHbWF0VXNlZAIBXwQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIIBQFjAl8yBQZwaWVjZXMFE2NsYWltTW9kZVdoVGhlbkR1Y2sEBndoRGF0YQgFC2NsYWltUmVzdWx0Al81BAZvbGRWb2wJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUGd2hEYXRhBQt3aElkeExldmVscwQKbmV3Vm9sRGF0YQkAuQkCCQDMCAIJAJEDAgkAtQkCCQCRAwIFBndoRGF0YQULd2hJZHhMZXZlbHMCAV8AAAkAzAgCCQCkAwEFCG5ld0xldmVsBQNuaWwCAV8EBm5ld1ZvbAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQUKbmV3Vm9sRGF0YQQEbG9mdAkAtQkCCQCRAwIFBndoRGF0YQUJd2hJZHhMT0ZUAgFfBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAkAzAgCCQCkAwEJAGUCCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUFBm5ld1ZvbAUGb2xkVm9sCQDMCAIJAKQDAQUGbmV3Vm9sBQNuaWwCAV8JAJUKAwkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhpbmZyYUtleQUIbmV3TGV2ZWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICCAUBYwJfMgUEYWRkcgUIbmV3TGV2ZWwJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAggFC2NsYWltUmVzdWx0Al8zBQhicElkeFJlcwkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al80CQC5CQIJAMwIAgUKbmV3Vm9sRGF0YQkAzAgCCQCRAwIFBndoRGF0YQUId2hJZHhSZXMJAMwIAgkAkQMCBQZ3aERhdGEFCHdoSWR4TWF0CQDMCAIJAJEDAgUGd2hEYXRhBQl3aElkeFByb2QJAMwIAgUKbmV3TG9mdFN0cgUDbmlsAgE6BQNuaWwIBQtjbGFpbVJlc3VsdAJfMQUIbmV3TGV2ZWwFB21hdFVzZWQBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgtkdWNrQXNzZXRJZAdkZWx0YVhQBAZsdmxLZXkJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAQFeHBLZXkJAQlrZXlEdWNrWFABBQtkdWNrQXNzZXRJZAQCeHAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUFeHBLZXkAAAQFbmV3WFAJAGQCBQJ4cAUHZGVsdGFYUAQJbHZsUG9pbnRzCQEHbGV2ZWxVcAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUGbHZsS2V5AAAFBW5ld1hQBAlrZXlQb2ludHMJARFrZXlEdWNrRnJlZVBvaW50cwEFC2R1Y2tBc3NldElkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFBmx2bEtleQkAkQMCBQlsdmxQb2ludHMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUFeHBLZXkFBW5ld1hQCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlQb2ludHMJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleVBvaW50cwAACQCRAwIFCWx2bFBvaW50cwABBQNuaWwFBW5ld1hQARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgRhZGRyB2RlbHRhWFAEBmx2bEtleQkBDGtleVVzZXJMZXZlbAEFBGFkZHIEBXhwS2V5CQEJa2V5VXNlclhQAQUEYWRkcgQCeHAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUFeHBLZXkAAAQFbmV3WFAJAGQCBQJ4cAUHZGVsdGFYUAQJbHZsUG9pbnRzCQEHbGV2ZWxVcAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUGbHZsS2V5AAAFBW5ld1hQBAlrZXlQb2ludHMJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUGbHZsS2V5CQCRAwIFCWx2bFBvaW50cwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQV4cEtleQUFbmV3WFAJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleVBvaW50cwkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5UG9pbnRzAAAJAJEDAgUJbHZsUG9pbnRzAAEFA25pbAUFbmV3WFABEmFjdGl2YXRlT25ib2FyZEFydAEEYWRkcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFBGFkZHIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwkBASEBCQEJaXNEZWZpbmVkAQUFcmVmQnkJAAIBAilZb3UgYXJlIG5vdCBlbGlnaWJsZSBmb3IgT05CT0FSRCBhcnRpZmFjdAQGYXJ0S2V5CQEca2V5T25ib2FyZEFydER1Y2tBY3RpdmF0ZWRCeQEFBGFkZHIEB2FydER1Y2sJAKIIAQUGYXJ0S2V5AwkBCWlzRGVmaW5lZAEFB2FydER1Y2sJAAIBCQCsAgICL1lvdSBhbHJlYWR5IHVzZWQgeW91ciBPTkJPQVJEIGFydGlmYWN0IG9uIGR1Y2sgCQEFdmFsdWUBBQdhcnREdWNrBBBkdWNrQWN0aXZhdG9yS2V5CQEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawEFC2R1Y2tBc3NldElkBA1kdWNrQWN0aXZhdG9yCQCiCAEFEGR1Y2tBY3RpdmF0b3JLZXkDCQEJaXNEZWZpbmVkAQUNZHVja0FjdGl2YXRvcgkAAgEJAKwCAgkArAICCQCsAgICCVRoZSBkdWNrIAULZHVja0Fzc2V0SWQCNCBhbHJlYWR5IGdvdCBwb2ludHMgZnJvbSBPTkJPQVJEIGFydGlmYWN0IGZyb20gdXNlciAJAQV2YWx1ZQEFDWR1Y2tBY3RpdmF0b3IJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZhcnRLZXkFC2R1Y2tBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFEGR1Y2tBY3RpdmF0b3JLZXkFBGFkZHIFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQl4cE9uYm9hcmQCXzEBEmFjdGl2YXRlUHJlc2FsZUFydAIEYWRkcg1sYW5kQXNzZXRJZEluBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBRNjbGFpbU1vZGVXaFRoZW5EdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBA1hY3RpdmF0aW9uS2V5CQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAMJAGYCCQELdmFsdWVPckVsc2UCCQCfCAEFDWFjdGl2YXRpb25LZXkAAAAACQACAQIlUHJlc2FsZSBhcnRpZmFjdCBpcyBhbHJlYWR5IGFjdGl2YXRlZAMJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAggFAWMCXzMFCnJlY0xhbmROdW0FD1BSRVNBTEVOVU1MQU5EUwkAAgEJAKwCAgkArAICCQCsAgIFCkxBTkRQUkVGSVgCASAFC2xhbmRBc3NldElkAiUgaXMgbm90IGVsaWdpYmxlIGZvciBwcmVzYWxlIGFydGlmYWN0BAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUTY2xhaW1Nb2RlV2hUaGVuRHVjawkAzQgCCQDNCAIJAM0IAggFC2NsYWltUmVzdWx0Al8xCQEMSW50ZWdlckVudHJ5AgUNYWN0aXZhdGlvbktleQUGcGllY2VzCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzIJALkJAggFC2NsYWltUmVzdWx0Al8zAgE6CQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzQJALkJAggFC2NsYWltUmVzdWx0Al81AgE6AQ9jaGVja1RvdXJuYW1lbnQBC2R1Y2tBc3NldElkBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBXREYXRhCQELZ2V0VG91ckRhdGECBRJ0b3VybmFtZW50Q29udHJhY3QFBmxhc3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMDCQECIT0CCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlAgFUBwMDAwkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUPbG9jSWR4Q29udGluZW50BQZsYXN0SWQJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcJAAIBAipZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gdGhlIHRvdXJuYW1lbnQJAQlhc0Jvb2xlYW4BCQD8BwQFBHRoaXMCFmV4aXRUb3VybmFtZW50SW50ZXJuYWwJAMwIAgULZHVja0Fzc2V0SWQFA25pbAUDbmlsAQ1jaGVja0RlbGl2ZXJ5AQtkdWNrQXNzZXRJZAMJAQEhAQURS1NfQUxMT1dfREVMSVZFUlkHBAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBRAcECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQ9sb2NJZHhDb250aW5lbnQECGRpc3RhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FCGxvY0lkeElkAwMJAGYCCQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMFA25vdwkAZgIAAwUIZGlzdGFuY2UHCQACAQIgWW91ciBkdWNrIGlzIG9uIGRlbGl2ZXJ5IG1pc3Npb24JAQlhc0Jvb2xlYW4BCQD8BwQFBHRoaXMCFGV4aXREZWxpdmVyeUludGVybmFsCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAESZXhpdERlbGl2ZXJ5Q29tbW9uBAtkdWNrQXNzZXRJZAVjaGVjawVuZXdIUAVzY29yZQQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJc3RhcnRUaW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FD2xvY0lkeENvbnRpbmVudAQIZGlzdGFuY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUIbG9jSWR4SWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQtkdWNrQXNzZXRJZAIUTkZUIGR1Y2sgaXMgb3JwaGFuZWQECWhlYWx0aEtleQkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQJY3VySGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBBQloZWFsdGhLZXkEDm91dGNvbWVBY3Rpb25zAwMJAGcCBQhkaXN0YW5jZQADBgMDBQVjaGVjawkAZwIFBXNjb3JlAAMHCQBmAgUFbmV3SFAAAAcEBnJld2FyZAkA/AcEBQ9lY29ub215Q29udHJhY3QCEnNlbmREZWxpdmVyeVJld2FyZAkAzAgCBQVvd25lcgUDbmlsBQNuaWwDCQAAAgUGcmV3YXJkBQZyZXdhcmQECGNvdW50S2V5CQEUa2V5VXNlckRlbGl2ZXJ5Q291bnQBBQVvd25lcgkAzAgCCQEMSW50ZWdlckVudHJ5AgUIY291bnRLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCGNvdW50S2V5AAAAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVVzZXJMYXN0RGVsaXZlcnlEYXkBBQVvd25lcgkAaQIFCXN0YXJ0VGltZQUJREFZTUlMTElTBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DAwMFBWNoZWNrCQBmAgUFbmV3SFAAAAcJAGYCCQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMFA25vdwcJAAIBAiZZb3VyIGR1Y2sgaXMgc3RpbGwgb24gZGVsaXZlcnkgbWlzc2lvbgQLbG9ja2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BRFkZWxpdmVyeUxvY2tlZEtleQAABAZ1bmxvY2sJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhR1cGRhdGVEZWxpdmVyeUxvY2tlZAkAzAgCCQBlAgULbG9ja2VkVG90YWwFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUDbmlsBQNuaWwDCQAAAgUGdW5sb2NrBQZ1bmxvY2sDAwMFBWNoZWNrCQBnAgAABQVuZXdIUAcGCQBnAgAABQljdXJIZWFsdGgFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleURlbGl2ZXJ5RGVsYXlCeUR1Y2sBBQtkdWNrQXNzZXRJZAkAZAIFCXN0YXJ0VGltZQUTREVMSVZFUllfUFVOSVNITUVOVAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBA1zYXZlZExvY2F0aW9uCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQCVCgMFDm91dGNvbWVBY3Rpb25zCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUNc2F2ZWRMb2NhdGlvbgUDbmlsBQ1zYXZlZExvY2F0aW9uAQ1tZXJnZUludGVybmFsBgtuZXdMYW5kU2l6ZQhuZXdMZXZlbAdmb3JtdWxhBGFkZHIMbGFuZEFzc2V0SWRzB25lZWRNYXQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECHW1lcmdlSW50ZXJuYWxfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECG21lcmdlSW50ZXJuYWxfY2hlY2tEZWxpdmVyeQoBCmNoZWNrTWVyZ2UCA2FjYwtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUHdGltZUtleQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBAljb250aW5lbnQJAJEDAgUBZAUMcmVjQ29udGluZW50AwMJAQIhPQIIBQNhY2MCXzMCAAkBAiE9AggFA2FjYwJfMwUJY29udGluZW50BwkAAgECLkxhbmRzIHNob3VsZCBiZSBvbiB0aGUgc2FtZSBjb250aW5lbnQgdG8gbWVyZ2UECGxhbmRTaXplCQCRAwIFAWQFC3JlY0xhbmRTaXplBAdzaXplc0luCAUDYWNjAl8xBAFpCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALMJAgUHc2l6ZXNJbgUIbGFuZFNpemUCJ1lvdSBoYXZlbid0IHBhc3NlZCBhbGwgdGhlIGxhbmRzIG5lZWRlZAQIc2l6ZXNPdXQJAKwCAgkArwICBQdzaXplc0luBQFpCQCwAgIFB3NpemVzSW4JAGQCBQFpAAEEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEFCGxhbmRTaXplBARhcnRzCQBkAggFA2FjYwJfMgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQIcmVxTGV2ZWwEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAAAwMJAAACAgFNBQckbWF0Y2gwAAQDCQAAAgIBTAUHJG1hdGNoMAAFAwkAAAICAlhMBQckbWF0Y2gwAAYJAAIBAhpPbmx5IFMsIE0sIEwsIFhMIGNhbiBtZXJnZQMJAQIhPQIFCmluZnJhTGV2ZWwFCHJlcUxldmVsCQACAQIiQWxsIGxhbmRzIHNob3VsZCBiZSBtYXhlZCB0byBtZXJnZQQHbGFuZE51bQkAkQMCBQFkBQpyZWNMYW5kTnVtBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMECWRlbHRhVGltZQkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQlzYXZlZFRpbWUDCQBmAgAABQlkZWx0YVRpbWUJAAIBCQCsAgIJAKwCAgkArAICAiZTYXZlZCB0aW1lc3RhbXAgaXMgaW4gZnV0dXJlLCBzYXZlZCA9IAkApAMBBQlzYXZlZFRpbWUCDCwgY3VycmVudCA9IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBWJwUmVzCQEGYWRkUmVzBQkAtQkCCAUDYWNjAl80AgFfBQ10ZXJyYWluQ291bnRzBQlkZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQQFcHJvcHMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwJfNgUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEBmNQcm9wcwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjA18xMAUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEC3N1bVRlcnJhaW5zCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MCXzkFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABBAVsYW5kcwgFA2FjYwJfNwQDaWR4CQDPCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEFA2lkeAkAAgEJAKwCAgIgWW91ciBzdGFrZWQgbGFuZHMgZG9uJ3QgY29udGFpbiAFC2xhbmRBc3NldElkBAljdXN0b21LZXkJARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEFC2xhbmRBc3NldElkBApjdXN0b21OYW1lCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1c3RvbUtleQIACQCcCgoFCHNpemVzT3V0BQRhcnRzBQljb250aW5lbnQFBWJwUmVzCQDOCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCAUDYWNjAl81CQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQRhZGRyCQELRGVsZXRlRW50cnkBCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0JAQtEZWxldGVFbnRyeQEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFC2xhbmRBc3NldElkBQRhZGRyCQELRGVsZXRlRW50cnkBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQkBC0RlbGV0ZUVudHJ5AQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBBQljdXN0b21LZXkJAQRCdXJuAgkA2QQBBQtsYW5kQXNzZXRJZAABAwkBAiE9AgUKY3VzdG9tTmFtZQIACQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUFA25pbAUDbmlsBQVwcm9wcwkA0QgCBQVsYW5kcwkBBXZhbHVlAQUDaWR4CQBkAggFA2FjYwJfOAUGcGllY2VzBQtzdW1UZXJyYWlucwUGY1Byb3BzBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvcExpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQRhZGRyBAhsYW5kc1N0cgkAoggBBQhsYW5kc0tleQQHbGFuZHNJbgMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsBAVjb250MAkAkQMCCQC1CQIICQEFdmFsdWUBCQDsBwEJANkEAQkAkQMCBQxsYW5kQXNzZXRJZHMAAAtkZXNjcmlwdGlvbgIBXwUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEFBWNvbnQwAgswXzBfMF8wXzBfMAIBXwQBcgoAAiRsBQxsYW5kQXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCcCgoFB2Zvcm11bGEAAAIACQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwUDbmlsBQhwcm9wTGlzdAUHbGFuZHNJbgAACQC1CQICCzBfMF8wXzBfMF8wAgFfBQljb250UHJvcHMKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCmNoZWNrTWVyZ2UCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFBAljb250aW5lbnQIBQFyAl8zBAxjb250aW5lbnRJZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAzwgCBQpjb250aW5lbnRzBQljb250aW5lbnQJAKwCAgITVW5rbm93biBjb250aW5lbnQ6IAUJY29udGluZW50BAh0ZXJyYWlucwkBE2dlblRlcnJhaW5zRm9yTWVyZ2UCCAUBcgJfOQkAaQIJAQ9udW1QaWVjZXNCeVNpemUBBQtuZXdMYW5kU2l6ZQUFU1NJWkUEB2ZyZWVOdW0JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQ9QUkVTQUxFTlVNTEFORFMAAQQKbmV3TGFuZE51bQkApAMBBQdmcmVlTnVtBAVpc3N1ZQkAwggFCQEHbmZ0TmFtZQIFCm5ld0xhbmROdW0FC25ld0xhbmRTaXplCQC5CQIJAMwIAgUKbmV3TGFuZE51bQkAzAgCBQtuZXdMYW5kU2l6ZQkAzAgCBQh0ZXJyYWlucwkAzAgCBQljb250aW5lbnQFA25pbAIBXwABAAAHBAdhc3NldElkCQC4CAEFBWlzc3VlBA5uZXdMYW5kQXNzZXRJZAkA2AQBBQdhc3NldElkBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwkAZgIFB25lZWRNYXQAAAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwUHbmVlZE1hdAIBXwQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAkAlAoCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCAUBcgJfNQMJAGYCCQCQAwEIBQFyAl83AAAJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIIBQFyAl83AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQMJAGYCCAUBcgJfOAUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMIBQFyAl84CQEMSW50ZWdlckVudHJ5AgkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQdmcmVlTnVtAAEFBWlzc3VlCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFCm5ld0xhbmROdW0FDm5ld0xhbmRBc3NldElkCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUObmV3TGFuZEFzc2V0SWQFBGFkZHIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFCm5ld0xhbmROdW0FBGFkZHIJAQxJbnRlZ2VyRW50cnkCCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQ5uZXdMYW5kQXNzZXRJZAgFAXICXzIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFDm5ld0xhbmRBc3NldElkBQhuZXdMZXZlbAkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQ5uZXdMYW5kQXNzZXRJZAUEYWRkcgUIbmV3TGV2ZWwJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCAUBcgJfNAkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAJALkJAggFAXICXzYCAV8JAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUJY29udGluZW50CQC5CQIIBQFyA18xMAIBXwkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAgUJY29udGluZW50CQDMCAICAUwJAMwIAgUObmV3TGFuZEFzc2V0SWQFA25pbAIBXwkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUEYWRkcgABBQdhc3NldElkBQ5uZXdMYW5kQXNzZXRJZAEDczJtAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgFNAAMCBFNTU1MFBGFkZHIFDGxhbmRBc3NldElkcwAAAQNtMmwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAUwABAIDU01NBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwAEAQRsMnhsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgJYTAAFAgVTU1NNTAUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMALwEGeGwyeHhsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgNYWEwABgIDTFhMBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwA2AQttZXJnZUNvbW1vbgIEYWRkcgxsYW5kQXNzZXRJZHMEByRtYXRjaDAJAJADAQUMbGFuZEFzc2V0SWRzAwkAAAIABAUHJG1hdGNoMAkBA3MybQIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAMFByRtYXRjaDAJAQNtMmwCBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgAFBQckbWF0Y2gwCQEEbDJ4bAIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAIFByRtYXRjaDAJAQZ4bDJ4eGwCBQRhZGRyBQxsYW5kQXNzZXRJZHMJAAIBAg1Vbmtub3duIG1lcmdlARVjaGVja091dGRhdGVkRGVsaXZlcnkBCHVzZXJBZGRyBARkdWNrCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAwMFEUtTX0FMTE9XX0RFTElWRVJZCQEJaXNEZWZpbmVkAQUEZHVjawcEC2R1Y2tBc3NldElkCQEFdmFsdWUBBQRkdWNrBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQDbG9jCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04CAV8ECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUPbG9jSWR4Q29udGluZW50AwMJAQIhPQIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFEBgkAZgIJAGQCBQlzdGFydFRpbWUFElRFTl9NSU5VVEVTX01JTExJUwgFCWxhc3RCbG9jawl0aW1lc3RhbXAFA25pbAQJaGVhbHRoS2V5CQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkAwkAZwIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFCGxvY0lkeElkAAMEBnJld2FyZAkA/AcEBQ9lY29ub215Q29udHJhY3QCEnNlbmREZWxpdmVyeVJld2FyZAkAzAgCBQh1c2VyQWRkcgUDbmlsBQNuaWwDCQAAAgUGcmV3YXJkBQZyZXdhcmQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzQgCCQDNCAIEC2xvY2tlZFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFD2Vjb25vbXlDb250cmFjdAURZGVsaXZlcnlMb2NrZWRLZXkAAAQGdW5sb2NrCQD8BwQFD2Vjb25vbXlDb250cmFjdAIUdXBkYXRlRGVsaXZlcnlMb2NrZWQJAMwIAgkAZQIFC2xvY2tlZFRvdGFsBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFA25pbAUDbmlsAwkAAAIFBnVubG9jawUGdW5sb2NrAwkAZwIAAAkBEUBleHRyTmF0aXZlKDEwNTUpAQUJaGVhbHRoS2V5BQNuaWwECnB1bmlzaG1lbnQJAPwHBAUEdGhpcwILc2F2ZUludGVnZXIJAMwIAgkBFmtleURlbGl2ZXJ5RGVsYXlCeUR1Y2sBBQtkdWNrQXNzZXRJZAkAzAgCCQBkAgUJc3RhcnRUaW1lBRNERUxJVkVSWV9QVU5JU0hNRU5UBQNuaWwFA25pbAMJAAACBQpwdW5pc2htZW50BQpwdW5pc2htZW50BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAQxJbnRlZ2VyRW50cnkCBQloZWFsdGhLZXkJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkCQELU3RyaW5nRW50cnkCBQZsb2NLZXkJARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFA25pbAEGcHJvbG9nAQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUMcmVzdENvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQQIdXNlckFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyCQDNCAIJARVjaGVja091dGRhdGVkRGVsaXZlcnkBBQh1c2VyQWRkcgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhc3RUeElkQnlVc2VyAQUIdXNlckFkZHIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAEMcHJvbG9nRmxpZ2h0AQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUMcmVzdENvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5TGFzdFR4SWRCeVVzZXIBCQClCAEIBQFpDG9yaWdpbkNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBQNuaWwtAWkBDWNvbnN0cnVjdG9yVjEBCHJlc3RBZGRyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVJlc3RBZGRyZXNzAAUIcmVzdEFkZHIFA25pbAFpAQtzYXZlSW50ZWdlcgIDa2V5BmFtb3VudAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECIHNhdmVJbnRlZ2VyIGlzIG5vdCBwdWJsaWMgbWV0aG9kCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQNrZXkFBmFtb3VudAUDbmlsAWkBCnNldEJsb2NrZWQBCWlzQmxvY2tlZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQxCb29sZWFuRW50cnkCCQEKa2V5QmxvY2tlZAAFCWlzQmxvY2tlZAUDbmlsAWkBCXN0YWtlTGFuZAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkxBTkRQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMJAQIhPQIIBQVhc3NldAZpc3N1ZXIFBHRoaXMJAAIBAhdVbmtub3duIGlzc3VlciBvZiB0b2tlbgMJAQEhAQkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFCkxBTkRQUkVGSVgJAAIBCQCsAgIJAKwCAgIJT25seSBORlQgBQpMQU5EUFJFRklYAhQgdG9rZW5zIGFyZSBhY2NlcHRlZAQLbGFuZE51bVNpemUJALACAggFBWFzc2V0BG5hbWUABAQHbGFuZE51bQMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgNYWEwJALMCAgULbGFuZE51bVNpemUAAwMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgJYTAkAswICBQtsYW5kTnVtU2l6ZQACCQCzAgIFC2xhbmROdW1TaXplAAEDCQEBIQEJAQlpc0RlZmluZWQBCQC2CQEFB2xhbmROdW0JAAIBCQCsAgICHkNhbm5vdCBwYXJzZSBsYW5kIG51bWJlciBmcm9tIAgFBWFzc2V0BG5hbWUEC2xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQDCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAhIgaXMgYWxyZWFkeSBzdGFrZWQEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBXByb3BzCQERdXBkYXRlUHJvcG9ydGlvbnMDBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQQMcmVzQnlDb250S2V5CQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJAJEDAgUBZAUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQxyZXNCeUNvbnRLZXkCCzBfMF8wXzBfMF8wAgFfBBB1cGRhdGVkQ29udFByb3BzCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUJY29udFByb3BzBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQIBXwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQdhZGRyZXNzBAhsYW5kc1N0cgkAoggBBQhsYW5kc0tleQQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQVsYW5kcwULbGFuZEFzc2V0SWQJAAIBCQCsAgICIllvdXIgc3Rha2VkIGxhbmRzIGFscmVhZHkgY29udGFpbiAFC2xhbmRBc3NldElkAwkAZwIJAJADAQUFbGFuZHMFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgkAAgEJAKwCAgkArAICAhlZb3VyIGFscmVhZHkgc3Rha2VkIG1heCAoCQCkAwEFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgIHKSBsYW5kcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQdhZGRyZXNzBAlvbGRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIJAM0IAgUFbGFuZHMFC2xhbmRBc3NldElkAgFfCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkJAGQCBQlvbGRQaWVjZXMFBnBpZWNlcwkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUHYWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFC2xhbmRBc3NldElkBQdhZGRyZXNzBQppbmZyYUxldmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAFBXByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIFDHJlc0J5Q29udEtleQUQdXBkYXRlZENvbnRQcm9wcwUDbmlsBQ1wcm9sb2dBY3Rpb25zBQl3bGdSZXN1bHQBaQELdW5zdGFrZUxhbmQBDWxhbmRBc3NldElkSW4EDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQ1jbGFpbU1vZGVEdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEAWQIBQFjAl8zBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFcHJvcHMJARF1cGRhdGVQcm9wb3J0aW9ucwMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAxyZXNCeUNvbnRLZXkJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQkAkQMCBQFkBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFDHJlc0J5Q29udEtleQILMF8wXzBfMF8wXzACAV8EEHVwZGF0ZWRDb250UHJvcHMJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BAgFfBAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUNY2xhaW1Nb2RlRHVjawQFbGFuZHMJAL0JAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQhsYW5kc0tleQIAAgFfBANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEDmdvdlJlbGVhc2VUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFC2dvdkNvbnRyYWN0CQEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQUEYWRkcgAAAwkAZwIFDmdvdlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICOVlvdXIgZ1dMIGFyZSB0YWtpbmcgcGFydCBpbiB2b3RpbmcsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5nb3ZSZWxlYXNlVGltZQQOYXJiUmVsZWFzZVRpbWUJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFC3dsZ0NvbnRyYWN0CQEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBQRhZGRyAAAFDmFyYml0cmFnZURlbGF5AwkAZgIFDmFyYlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICP1lvdXIgc3Rha2VkIGxhbmRzIHRvb2sgcGFydCBpbiBhcmJpdHJhZ2UsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5hcmJSZWxlYXNlVGltZQQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAQJbmV3UGllY2VzAwkAZgIFBnBpZWNlcwUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMFBnBpZWNlcwQJd2xnUmVzdWx0CQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUEYWRkcgUDbmlsBQNuaWwJAJQKAgkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMABQVwcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCBQxyZXNCeUNvbnRLZXkFEHVwZGF0ZWRDb250UHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al8yCQC5CQIIBQtjbGFpbVJlc3VsdAJfMwIBOgkAzAgCAwkAZgIJAJADAQUFbGFuZHMAAQkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAgkA0QgCBQVsYW5kcwkBBXZhbHVlAQUDaWR4AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5BQluZXdQaWVjZXMFA25pbAUNcHJvbG9nQWN0aW9ucwUJd2xnUmVzdWx0AWkBCXN0YWtlRHVjawAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkRVQ0tQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMDCQECIT0CCAUFYXNzZXQGaXNzdWVyBQ1pbmN1YmF0b3JBZGRyCQECIT0CCAUFYXNzZXQGaXNzdWVyBQticmVlZGVyQWRkcgcJAAIBCQCsAgIJAKwCAgISVW5rbm93biBpc3N1ZXIgb2YgBQpEVUNLUFJFRklYAgYgdG9rZW4DCQEBIQEJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQpEVUNLUFJFRklYCQACAQkArAICCQCsAgICCU9ubHkgTkZUIAUKRFVDS1BSRUZJWAIUIHRva2VucyBhcmUgYWNjZXB0ZWQECmFzc2V0SWRTdHIJANgEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQphc3NldElkU3RyAwkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQISIGlzIGFscmVhZHkgc3Rha2VkAwkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgIdWW91IGFscmVhZHkgc3Rha2VkIG9uZSBkdWNrOiAIBQVhc3NldARuYW1lBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQphc3NldElkU3RyBAhsb2NhdGlvbgkAoggBBQZsb2NLZXkEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQphc3NldElkU3RyBAhiYWNrcGFjawkAoggBBQVicEtleQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFCmFzc2V0SWRTdHIEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQUKYXNzZXRJZFN0cgAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd0aW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYCQDYBAEFB2Fzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlEdWNrSWRUb093bmVyAQUKYXNzZXRJZFN0cgUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzBQphc3NldElkU3RyBQNuaWwDCQEJaXNEZWZpbmVkAQUIbG9jYXRpb24FA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQUPREVGQVVMVExPQ0FUSU9OBQNuaWwDCQEJaXNEZWZpbmVkAQUIYmFja3BhY2sFA25pbAkAzggCCQDNCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkCGjA6MF8wXzBfMF8wXzA6MF8wXzBfMF8wXzA6BQNuaWwJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFCWN1ckhlYWx0aAUNcHJvbG9nQWN0aW9ucwFpAQt1bnN0YWtlRHVjawEKYXNzZXRJZFN0cgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQHYXNzZXRJZAkA2QQBBQphc3NldElkU3RyBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQphc3NldElkU3RyAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgkArAICAglUaGUgZHVjayAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFB2FkZHJlc3MJAAIBAhdTdGFrZWQgTkZUIGlzIG5vdCB5b3VycwMJAQ9jaGVja1RvdXJuYW1lbnQBBQphc3NldElkU3RyCQACAQIbdW5zdGFrZUR1Y2tfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQphc3NldElkU3RyCQACAQIZdW5zdGFrZUR1Y2tfY2hlY2tEZWxpdmVyeQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFCmFzc2V0SWRTdHIEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQUKYXNzZXRJZFN0cgAABAZoZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGYCBQVtYXhIUAUGaGVhbHRoCQACAQkArAICCQCsAgICGVBsZWFzZSBoZWFsIHlvdXIgZHVjayB0byAJAKQDAQUFbWF4SFACE2hwIGJlZm9yZSB1bnN0YWtpbmcJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBBQd0aW1lS2V5CQDMCAIJAQtEZWxldGVFbnRyeQEFCWtleUhlYWx0aAkAzAgCCQELRGVsZXRlRW50cnkBCQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MFA25pbAUNcHJvbG9nQWN0aW9ucwFpAQhjbGFpbVJlcwIGYW1vdW50DmxhbmRBc3NldElkU3RyBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAUNY2xhaW1Nb2RlRHVjawUObGFuZEFzc2V0SWRTdHIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDOCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQ1wcm9sb2dBY3Rpb25zCQCRAwIIBQZyZXN1bHQCXzMFCGJwSWR4UmVzAWkBDGNsYWltUmVzVG9XSAIGYW1vdW50DmxhbmRBc3NldElkU3RyBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAULY2xhaW1Nb2RlV2gFDmxhbmRBc3NldElkU3RyCQCUCgIJAM4IAgkAzQgCCQDNCAIJAM4IAggFBnJlc3VsdAJfMQgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQ1wcm9sb2dBY3Rpb25zCQCRAwIIBQZyZXN1bHQCXzUFCHdoSWR4UmVzAWkBBmZsaWdodAIHbWVzc2FnZQNzaWcEDXByb2xvZ0FjdGlvbnMJAQxwcm9sb2dGbGlnaHQBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQBZgkBDGZsaWdodENvbW1vbgMFCHVzZXJBZGRyBQdtZXNzYWdlBQNzaWcEBW5ld0hQCAUBZgJfMQQLZHVja0Fzc2V0SWQIBQFmAl8yBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04EC25ld0xvY2F0aW9uCAUBZgJfNAMJAAACBQtuZXdMb2NhdGlvbgULY3VyTG9jYXRpb24JAAIBAiJZb3UgY2FuJ3QgZmx5IHRvIHRoZSBzYW1lIGxvY2F0aW9uBAZuZXdMb2MJALUJAgULbmV3TG9jYXRpb24CAV8EBmlzVG91cgkAAAIJAJEDAgUGbmV3TG9jBQpsb2NJZHhUeXBlAgFUBAdpc0RlbGl2CQAAAgkAkQMCBQZuZXdMb2MFCmxvY0lkeFR5cGUCAUQEBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAljdXJyZW50RXEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssBA0kdDA3MDQ2ODcwNTY1CQERc3VidHJhY3RFcXVpcG1lbnQCBQljdXJyZW50RXEIBQFmAl81BAVuZXdFcQgFDSR0MDcwNDY4NzA1NjUCXzEED3Nob3VsZFplcm9CdWZmcwgFDSR0MDcwNDY4NzA1NjUCXzIEDSR0MDcwNTY4NzM2ODADCQEBIQEJAQlvbk1pc3Npb24CBRJ0b3VybmFtZW50Q29udHJhY3QFC2N1ckxvY2F0aW9uAwkBASEBCQEPaXNVc3VhbExvY2F0aW9uAQULbmV3TG9jYXRpb24JAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ABQMJAGYCBQVuZXdIUAAACQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAkAlAoCBQtjdXJMb2NhdGlvbgAAAwkBDmlzSW5Ub3VybmFtZW50AgUSdG91cm5hbWVudENvbnRyYWN0BQtjdXJMb2NhdGlvbgMJAQEhAQkBDmlzSW5Ub3VybmFtZW50AgUSdG91cm5hbWVudENvbnRyYWN0BQtuZXdMb2NhdGlvbgkAAgECKllvdXIgZHVjayBpcyB0YWtpbmcgcGFydCBpbiB0aGUgdG91cm5hbWVudAQFc2NvcmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZuZXdMb2MFCGxvY0lkeElkBAZjdXJMb2MJALUJAgULY3VyTG9jYXRpb24CAV8EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAMJAQIhPQIFBXNjb3JlCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBmN1ckxvYwUIbG9jSWR4SWQAAQkBDGNoZWF0QXR0ZW1wdAMFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgAHAwkAZgIFBW5ld0hQAAAECWxvY2FsQmVzdAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QJARprZXlCZXN0UmVzdWx0QnlUb3VyQW5kRHVjawIFBmxhc3RJZAULZHVja0Fzc2V0SWQAAAQIdXBkTG9jYWwDCQBmAgUFc2NvcmUFCWxvY2FsQmVzdAkA/AcEBRJ0b3VybmFtZW50Q29udHJhY3QCDnNhdmVEdWNrUmVzdWx0CQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFBXNjb3JlBQNuaWwFA25pbAUEdW5pdAMJAAACBQh1cGRMb2NhbAUIdXBkTG9jYWwJAJQKAgULbmV3TG9jYXRpb24FBW5ld0hQCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIFC2N1ckxvY2F0aW9uAAADCQEBIQEJAQxpc0luRGVsaXZlcnkBBQtjdXJMb2NhdGlvbgQIc2F2ZWRMb2MJAQhhc1N0cmluZwEJAPwHBAUEdGhpcwIQYXV0b0V4aXREZWxpdmVyeQkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQVuZXdIUAkAzAgCAwUHaXNEZWxpdgICMTACAjExCQDMCAIAAAUDbmlsBQNuaWwDCQAAAgUIc2F2ZWRMb2MFCHNhdmVkTG9jAwUHaXNEZWxpdgkAlAoCBQhzYXZlZExvYwUFbmV3SFADCQBmAgUFbmV3SFAAAAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAJAJQKAgUIc2F2ZWRMb2MAAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAQEhAQUHaXNEZWxpdgkAAgECJFlvdXIgZHVjayBpcyB0YWtpbmcgcGFydCBpbiBkZWxpdmVyeQMJAQEhAQkBDGlzSW5EZWxpdmVyeQEFC25ld0xvY2F0aW9uCQEMY2hlYXRBdHRlbXB0AwULY3VyTG9jYXRpb24FC25ld0xvY2F0aW9uAA0EBXNjb3JlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGbmV3TG9jBQhsb2NJZHhJZAQGY3VyTG9jCQC1CQIFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgUFc2NvcmUJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGY3VyTG9jBQhsb2NJZHhJZAABCQEMY2hlYXRBdHRlbXB0AwULY3VyTG9jYXRpb24FC25ld0xvY2F0aW9uAA4DAwkAZgIFBW5ld0hQAAAJAGYCAAMFBXNjb3JlBwkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAECHNhdmVkTG9jCQEIYXNTdHJpbmcBCQD8BwQFBHRoaXMCEGF1dG9FeGl0RGVsaXZlcnkJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUFbmV3SFAJAMwIAgIFMTUtMTcJAMwIAgUFc2NvcmUFA25pbAUDbmlsAwkAAAIFCHNhdmVkTG9jBQhzYXZlZExvYwkAlAoCBQhzYXZlZExvYwUFbmV3SFAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ECWxvY1RvU2F2ZQgFDSR0MDcwNTY4NzM2ODACXzEECGhwVG9TYXZlCAUNJHQwNzA1Njg3MzY4MAJfMgkAlAoCCQDOCAIJAM4IAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQUJbG9jVG9TYXZlCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAUIaHBUb1NhdmUFA25pbAUNcHJvbG9nQWN0aW9ucwMFD3Nob3VsZFplcm9CdWZmcwkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAUDbmlsBQNuaWwICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAMJAGYCBQVuZXdIUAAABQ94cFN1Y2Nlc3NGbGlnaHQFDHhwRmFpbEZsaWdodAJfMQgFAWYCXzMBaQEEaGVhbAMKcXVhbnRpdHlMMQpxdWFudGl0eUwyCnF1YW50aXR5TDMEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwMDCQBmAgAABQpxdWFudGl0eUwxBgkAZgIAAAUKcXVhbnRpdHlMMgYJAGYCAAAFCnF1YW50aXR5TDMJAAIBAhtRdWFudGl0eSBjYW5ub3QgYmUgbmVnYXRpdmUEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhRoZWFsX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhJoZWFsX2NoZWNrRGVsaXZlcnkEA3F0cwkAzAgCBQpxdWFudGl0eUwxCQDMCAIFCnF1YW50aXR5TDIJAMwIAgUKcXVhbnRpdHlMMwUDbmlsBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJb2xkSGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBnAgUJb2xkSGVhbHRoBQVtYXhIUAkAAgEJAKwCAgkArAICAg9IUCBzaG91bGQgYmUgPCAJAKQDAQUFbWF4SFACCCB0byBoZWFsBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8KAQtpdGVyYXRlUHJvZAIDYWNjBnJlY2lwZQQB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ZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIWaGVhbEVTX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhRoZWFsRVNfY2hlY2tEZWxpdmVyeQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAECW9sZEhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkAZgIFCW9sZEhlYWx0aAAACQACAQIoSFAgc2hvdWxkIGJlIDAgdG8gY2FsbCBFbWVyZ2VuY3kgU2VydmljZQQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkECHByb2RMaXN0AwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfBA1tZWRLaXRBbW91bnQxAwkAZgIJAJADAQUIcHJvZExpc3QAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAAAAAQNbWVkS2l0QW1vdW50MgMJAGYCCQCQAwEFCHByb2RMaXN0AAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAABAAAEDW1lZEtpdEFtb3VudDMDCQBmAgkAkAMBBQhwcm9kTGlzdAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAgAAAwMDCQBmAgUNbWVkS2l0QW1vdW50MQAABgkAZgIFDW1lZEtpdEFtb3VudDIAAAYJAGYCBQ1tZWRLaXRBbW91bnQzAAAJAAIBAh9Zb3UgaGF2ZSB0byB1c2Ugb3duIE1lZGljYWwgS2l0BAhleGlzdFN0cgkAnQgCBQ9lY29ub215Q29udHJhY3QJAQ5rZXlFc1dhcmVob3VzZQAEDGV4aXN0QW1vdW50cwMJAQlpc0RlZmluZWQBBQhleGlzdFN0cgkAvAkCCQEFdmFsdWUBBQhleGlzdFN0cgIBXwUDbmlsBAtleGlzdEFtb3VudAMJAGYCCQCQAwEFDGV4aXN0QW1vdW50cwAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUMZXhpc3RBbW91bnRzAAAAAAMJAGcCAAAFC2V4aXN0QW1vdW50CQACAQI5VGhlcmUgYXJlIG5vIE1lZGljYWwgS2l0cyBMMSBhdCBFbWVyZ2VuY3kgU2VydmljZSBzdG9yYWdlBAluZXdIZWFsdGgJAGQCBQlvbGRIZWFsdGgJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAAAAgFfBQpySWR4RWZmZWN0BAVuZXdFUwkAuQkCCQDMCAIJAKQDAQkAZQIFC2V4aXN0QW1vdW50AAEJANEIAgUMZXhpc3RBbW91bnRzAAACAV8EBnJlY2lwZQkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgAAAIBXwQIdG90YWxNYXQJARJnZXRSZWNpcGVNYXRlcmlhbHMBBQZyZWNpcGUECXNlbGxQcmljZQkAawMJAGgCBQh0b3RhbE1hdAUKRVNTRUxMQ09FRgUQUkVTT1VSQ0VQUklDRU1JTgkAaAIFBU1VTFQ4BQ5QUk9EVUNUUEtHU0laRQMJAQIhPQIIBQNwbXQGYW1vdW50BQlzZWxsUHJpY2UJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQlzZWxsUHJpY2UEBnJlc3VsdAkBCGFzU3RyaW5nAQkA/AcEBQ9lY29ub215Q29udHJhY3QCD3VwZGF0ZUVzU3RvcmFnZQkAzAgCBQVuZXdFUwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQt1c2R0QXNzZXRJZAUJc2VsbFByaWNlBQNuaWwJAJQKAgkAzggCCQDNCAIFDXByb2xvZ0FjdGlvbnMJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFCW5ld0hlYWx0aAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQh4cENhbGxFUwJfMQUGcmVzdWx0AWkBDnVwZGF0ZUJhY2twYWNrAgtkdWNrQXNzZXRJZAduZXdQYWNrAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBQduZXdQYWNrBQNuaWwFB25ld1BhY2sBaQEPY29tbWl0Rm9yUmFuZG9tAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkEC2ZpbmlzaEJsb2NrCQBkAgUGaGVpZ2h0BQtyYW5kb21EZWxheQQEYWRkcgkApQgBCAUBaQZjYWxsZXIJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEJa2V5Q29tbWl0AQUEYWRkcgULZmluaXNoQmxvY2sFA25pbAUNcHJvbG9nQWN0aW9ucwULZmluaXNoQmxvY2sBaQEIYnV5U0xhbmQABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhAwkBAiE9AggFA3BtdAZhbW91bnQFB0VYUFVTRFQJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQdFWFBVU0RUBAZyZXN1bHQJARJleHBlZGl0aW9uSW50ZXJuYWwCCAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQEC2FjcmVzUmVzdWx0CQEFYXNJbnQBCQD8BwQFDWFjcmVzQ29udHJhY3QCCWJ1cm5BY3JlcwkAzAgCBQxTX0NPU1RfQUNSRVMFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCCQDNCAIIBQZyZXN1bHQCXzEJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCCQClCAEIBQFpBmNhbGxlcgUKeHBOZXdTTGFuZAJfMQUNcHJvbG9nQWN0aW9ucwkAlAoCCAgFBnJlc3VsdAJfMgJfMQULYWNyZXNSZXN1bHQBaQEKZXhwZWRpdGlvbgIHbWVzc2FnZQNzaWcEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQBZgkBDGZsaWdodENvbW1vbgMFCHVzZXJBZGRyBQdtZXNzYWdlBQNzaWcEC2R1Y2tBc3NldElkCAUBZgJfMgQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbUxpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDBgUFbUxpc3QFDEVYUE1BVEVSSUFMUwIBXwQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQECWN1cnJlbnRFcQkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywEDSR0MDgxMTIwODEyMTcJARFzdWJ0cmFjdEVxdWlwbWVudAIFCWN1cnJlbnRFcQgFAWYCXzUEBW5ld0VxCAUNJHQwODExMjA4MTIxNwJfMQQPc2hvdWxkWmVyb0J1ZmZzCAUNJHQwODExMjA4MTIxNwJfMgQBZQkBEmV4cGVkaXRpb25JbnRlcm5hbAIIBQFpBmNhbGxlcggFAWkNdHJhbnNhY3Rpb25JZAQCaWQICAUBZQJfMgJfMQQGcmVzdWx0AwkAZwIAAAgFAWYCXzEJAJUKAwkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxBQNuaWwCAAAACQCVCgMJAM4IAggFAWUCXzEDBQ9zaG91bGRaZXJvQnVmZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzAFA25pbAkAzQgCCQDNCAIJAM0IAgkAzQgCBQNuaWwJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIICAUBZQJfMgJfMgkAzAgCAgFMCQDMCAIFAmlkBQNuaWwCAV8JAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgIBQFmAl8xCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToFAmlkCAUBZgJfMwMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECGmV4cGVkaXRpb25fY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECGGV4cGVkaXRpb25fY2hlY2tEZWxpdmVyeQQLYWNyZXNSZXN1bHQJAQVhc0ludAEJAPwHBAUNYWNyZXNDb250cmFjdAIJYnVybkFjcmVzCQDMCAIFDFNfQ09TVF9BQ1JFUwUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUKeHBOZXdTTGFuZAJfMQUNcHJvbG9nQWN0aW9ucwkAlQoDCAUGcmVzdWx0Al8yCAUGcmVzdWx0Al8zBQthY3Jlc1Jlc3VsdAFpARBidXlTTGFuZEZvckFjcmVzAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFDGFjcmVzQXNzZXRJZAkAAgECFEFDUkVTIHBheW1lbnRzIG9ubHkhAwkBAiE9AgUDYW10BQxTX0NPU1RfQUNSRVMJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQxTX0NPU1RfQUNSRVMEBnJlc3VsdAkBEmV4cGVkaXRpb25JbnRlcm5hbAIIBQFpBmNhbGxlcggFAWkNdHJhbnNhY3Rpb25JZAQLYWNyZXNSZXN1bHQJAQVhc0ludAEJAPwHBAUNYWNyZXNDb250cmFjdAIJYnVybkFjcmVzCQDMCAIFDFNfQ09TVF9BQ1JFUwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQxhY3Jlc0Fzc2V0SWQFA2FtdAUDbmlsCQCUCgIJAM4IAgkAzggCCAUGcmVzdWx0Al8xCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCCQClCAEIBQFpBmNhbGxlcgUKeHBOZXdTTGFuZAJfMQUNcHJvbG9nQWN0aW9ucwkAlAoCCAgFBnJlc3VsdAJfMgJfMQULYWNyZXNSZXN1bHQBaQEMdXBncmFkZUluZnJhAQtsYW5kQXNzZXRJZAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQGcmVzdWx0CQENdXBJbmZyYUNvbW1vbgQGCAUBaQZjYWxsZXIAAAULbGFuZEFzc2V0SWQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEFDXByb2xvZ0FjdGlvbnMICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFDnhwVXBncmFkZUluZnJhCAUGcmVzdWx0Al8zBQVNVUxUOAJfMQgFBnJlc3VsdAJfMgFpARBhY3RpdmF0ZUFydGlmYWN0AgdhcnROYW1lDmxhbmRBc3NldElkT3B0BA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpBmNhbGxlcgQGcmVzdWx0BAckbWF0Y2gwBQdhcnROYW1lAwkAAAICB1BSRVNBTEUFByRtYXRjaDAJARJhY3RpdmF0ZVByZXNhbGVBcnQCBQRhZGRyBQ5sYW5kQXNzZXRJZE9wdAMJAAACAgdPTkJPQVJEBQckbWF0Y2gwCQESYWN0aXZhdGVPbmJvYXJkQXJ0AQUEYWRkcgkAAgECEFVua25vd24gYXJ0aWZhY3QJAM4IAgUGcmVzdWx0BQ1wcm9sb2dBY3Rpb25zAWkBCm1lcmdlTGFuZHMBDGxhbmRBc3NldElkcwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQGcmVzdWx0CQELbWVyZ2VDb21tb24CCQClCAEIBQFpBmNhbGxlcgUMbGFuZEFzc2V0SWRzCQCUCgIJAM4IAgkAzggCCAUGcmVzdWx0Al8xBQ1wcm9sb2dBY3Rpb25zCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCCQClCAEIBQFpBmNhbGxlcgUHeHBNZXJnZQJfMQgFBnJlc3VsdAJfMgFpAQ1jYXJnb0V4Y2hhbmdlAgxjYXJnb0xpc3RTdHILbGFuZEFzc2V0SWQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECmNhcmdvUGFydHMJALwJAgUMY2FyZ29MaXN0U3RyAgE6BARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04EA2xvYwkAtQkCCQEFdmFsdWUBBQtjdXJMb2NhdGlvbgIBXwMJAQIhPQIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFMCQACAQkArAICCQCsAgICFkR1Y2sgbG9jYXRpb24gdHlwZSBpcyAJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAhEsIGJ1dCBzaG91bGQgYmUgTAMJAQIhPQIJAJEDAgUDbG9jBQhsb2NJZHhJZAULbGFuZEFzc2V0SWQJAAIBCQCsAgICG0R1Y2sgc2hvdWxkIGJlIG9uIHRoZSBsYW5kIAULbGFuZEFzc2V0SWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQECWN1cnJlbnRXaAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAZyZXN1bHQJAQltb3ZlU3R1ZmYDBQpjYXJnb1BhcnRzBQljdXJyZW50V2gFC2N1cnJlbnRQYWNrBARsb2Z0CQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8EBWxvZnRPCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCAUGcmVzdWx0Al83BAVsb2Z0RgkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCAUGcmVzdWx0Al83CQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIIBQZyZXN1bHQCXzQJAMwIAggFBnJlc3VsdAJfNQkAzAgCCAUGcmVzdWx0Al82BQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkJALoJAgkAzAgCCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMJAMwIAggFBnJlc3VsdAJfMQkAzAgCCAUGcmVzdWx0Al8yCQDMCAIIBQZyZXN1bHQCXzMJAMwIAgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCRAwIFBGxvZnQFCHZvbFRvdGFsBQNuaWwCAV8FA25pbAIBOgUDbmlsBQ1wcm9sb2dBY3Rpb25zAWkBDXNhdmVXYXJlaG91c2UCBXdoU3RyC2xhbmRBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAJ3aAkAvAkCBQV3aFN0cgIBOgMJAQIhPQIJAJADAQUCd2gABQkAAgECMHdhcmVob3VzZSBzdHJpbmcgc2hvdWxkIGNvbnRhaW4gNCAnOicgc2VwYXJhdG9ycwQFbG9mdEwJAJEDAgkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8FCXZvbExvY2tlZAQFbG9mdE8JARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEFAndoBAVsb2Z0VAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQJ3aAULd2hJZHhMZXZlbHMEBWxvZnRGCQBlAgkAZQIFBWxvZnRUCQENcGFyc2VJbnRWYWx1ZQEFBWxvZnRMBQVsb2Z0TwQIbmV3V2hTdHIJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIFBWxvZnRMCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCkAwEFBWxvZnRUBQNuaWwCAV8FA25pbAIBOgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5BQhuZXdXaFN0cgUDbmlsBQhuZXdXaFN0cgFpARJmaXhXYXJlaG91c2VGb3JtYXQBC2xhbmRBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQxyZXN0Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQCd2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBAVsb2Z0TAkBBWFzSW50AQkA/AcEBQ9lY29ub215Q29udHJhY3QCGnJlY2FsY0xvY2tlZFZvbHVtZVJFQURPTkxZCQDMCAIFC2xhbmRBc3NldElkCQDMCAIFAndoBQNuaWwFA25pbAQFbG9mdE8JARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEFAndoBAVsb2Z0VAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQJ3aAULd2hJZHhMZXZlbHMEBWxvZnRGCQBlAgkAZQIFBWxvZnRUBQVsb2Z0TAUFbG9mdE8ECG5ld1doU3RyCQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgkAkQMCBQJ3aAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCCQCkAwEFBWxvZnRMCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCkAwEFBWxvZnRUBQNuaWwCAV8FA25pbAIBOgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5BQhuZXdXaFN0cgUDbmlsBQhuZXdXaFN0cgFpARdmaXhDb250aW5lbnRQcm9wb3J0aW9ucwEMbGFuZEFzc2V0SWRzAwkBAiE9AggFAWkGY2FsbGVyBQxyZXN0Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkCgEIZ2V0UHJvcHMCA2FjYwRjb250CQDNCAIFA2FjYwkBC3ZhbHVlT3JFbHNlAgkAoggBCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEFBGNvbnQCCzBfMF8wXzBfMF8wBAFwCgACJGwFCmNvbnRpbmVudHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGdldFByb3BzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQoBCXByb2Nlc3NvcgIDYWNjC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUFBVNTSVpFBARjb250CQCRAwIFAWQFDHJlY0NvbnRpbmVudAQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAxjb250aW5lbnRJZHgJAQV2YWx1ZQEJAM8IAgUKY29udGluZW50cwUEY29udAQJY29udFByb3BzCQC1CQIJAJEDAgUDYWNjBQxjb250aW5lbnRJZHgCAV8EB3VwZGF0ZWQJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABAgFfBAckbWF0Y2gwBQRjb250AwkAAAICCEFtZXJpY2FzBQckbWF0Y2gwCQDMCAIFB3VwZGF0ZWQJAMwIAgkAkQMCBQNhY2MAAQkAzAgCCQCRAwIFA2FjYwACCQDMCAIJAJEDAgUDYWNjAAMJAMwIAgkAkQMCBQNhY2MABAUDbmlsAwkAAAICBkV1cm9wZQUHJG1hdGNoMAkAzAgCCQCRAwIFA2FjYwAACQDMCAIFB3VwZGF0ZWQJAMwIAgkAkQMCBQNhY2MAAgkAzAgCCQCRAwIFA2FjYwADCQDMCAIJAJEDAgUDYWNjAAQFA25pbAMJAAACAgRBc2lhBQckbWF0Y2gwCQDMCAIJAJEDAgUDYWNjAAAJAMwIAgkAkQMCBQNhY2MAAQkAzAgCBQd1cGRhdGVkCQDMCAIJAJEDAgUDYWNjAAMJAMwIAgkAkQMCBQNhY2MABAUDbmlsAwkAAAICBkFmcmljYQUHJG1hdGNoMAkAzAgCCQCRAwIFA2FjYwAACQDMCAIJAJEDAgUDYWNjAAEJAMwIAgkAkQMCBQNhY2MAAgkAzAgCBQd1cGRhdGVk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cm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEDCQECIT0CCAUDcG10BmFtb3VudAUMUkVOQU1JTkdDT1NUCQACAQkArAICAhJQYXltZW50IHNob3VsZCBiZSAJAKQDAQUMUkVOQU1JTkdDT1NUAwkBCGNvbnRhaW5zAgUKY3VzdG9tTmFtZQICX18JAAIBCQCsAgICHk5hbWUgc2hvdWxkIG5vdCBjb250YWluICdfXyc6IAUKY3VzdG9tTmFtZQMJAGYCCQCxAgEFCmN1c3RvbU5hbWUFCk1BWE5BTUVMRU4JAAIBCQCsAgICGU5hbWUgdG9vIGxvbmcsIG1heExlbmd0aD0JAKQDAQUKTUFYTkFNRUxFTgQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEB2FjdGlvbnMEByRtYXRjaDAFBHR5cGUDCQAAAgIHQUNDT1VOVAUHJG1hdGNoMAQKcmV2ZXJzZUtleQkBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDWFkZHJUb05hbWVLZXkJARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQUEYWRkcgQHb2xkTmFtZQkAoggBBQ1hZGRyVG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBCQEFdmFsdWUBBQdvbGROYW1lBQNuaWwFA25pbAkAzggCCQDNCAIJAM0IAgUHZnJlZU9sZAkBC1N0cmluZ0VudHJ5AgUNYWRkclRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUEYWRkcggJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgUMeHBDdXN0b21OYW1lAl8xAwkAAAICBExBTkQFByRtYXRjaDAEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQdhc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFB2Fzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMECnJldmVyc2VLZXkJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQOYXNzZXRUb05hbWVLZXkJARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEFB2Fzc2V0SWQEB29sZE5hbWUJAKIIAQUOYXNzZXRUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBCQEFdmFsdWUBBQdvbGROYW1lBQNuaWwFA25pbAkAzggCCQDNCAIJAM0IAgUHZnJlZU9sZAkBC1N0cmluZ0VudHJ5AgUOYXNzZXRUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFB2Fzc2V0SWQICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFDHhwQ3VzdG9tTmFtZQJfMQMJAAACAgREVUNLBQckbWF0Y2gwBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUHYXNzZXRJZAMDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkGCQEBIQEJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHIJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEFB2Fzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkRVQ0tQUkVGSVgCDSBpcyBub3QgeW91cnMECnJldmVyc2VLZXkJARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQOYXNzZXRUb05hbWVLZXkJARprZXlEdWNrQXNzZXRJZFRvQ3VzdG9tTmFtZQEFB2Fzc2V0SWQEB29sZE5hbWUJAKIIAQUOYXNzZXRUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBCQEFdmFsdWUBBQdvbGROYW1lBQNuaWwFA25pbAkAzggCCQDNCAIJAM0IAgUHZnJlZU9sZAkBC1N0cmluZ0VudHJ5AgUOYXNzZXRUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFB2Fzc2V0SWQICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQdhc3NldElkBQx4cEN1c3RvbU5hbWUCXzEJAAIBAhNVbmtub3duIGVudGl0eSB0eXBlCQCUCgIJAM4IAgkAzQgCBQdhY3Rpb25zCQEOU2NyaXB0VHJhbnNmZXIDBQ9lY29ub215Q29udHJhY3QIBQNwbXQGYW1vdW50BQt1c2R0QXNzZXRJZAUNcHJvbG9nQWN0aW9ucwAAAWkBDHNldFJlZmVycmFscwIJb2xkUGxheWVyCW5ld1BsYXllcgMJAQIhPQIIBQFpD2NhbGxlclB1YmxpY0tleQUDcHViCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFCW9sZFBsYXllcgkAAgEJAKwCAgIRSW52YWxpZCBhZGRyZXNzOiAFCW9sZFBsYXllcgMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUJbmV3UGxheWVyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJbmV3UGxheWVyBAdvbGRzS2V5CQEJa2V5T2xkaWVzAAQEb2xkcwkAoggBBQdvbGRzS2V5BAZvbGRpZXMDCQEJaXNEZWZpbmVkAQUEb2xkcwkAvAkCCQEFdmFsdWUBBQRvbGRzAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUGb2xkaWVzBQluZXdQbGF5ZXIJAAIBCQCsAgIFCW5ld1BsYXllcgImIGlzIG5vdCBuZXdiaWUgKGFscmVhZHkgaGFzIHJlZmVycmFscykECHJlZkJ5S2V5CQEPa2V5QWRkcmVzc1JlZkJ5AQUJbmV3UGxheWVyBAVyZWZCeQkAoggBBQhyZWZCeUtleQMDCQEJaXNEZWZpbmVkAQUFcmVmQnkJAQlpc0RlZmluZWQBCQCmCAEJAQV2YWx1ZQEFBXJlZkJ5BwkAAgEJAKwCAgkArAICBQluZXdQbGF5ZXICFCBhbHJlYWR5IGhhcyByZWZCeTogCQEFdmFsdWUBBQVyZWZCeQQHcmVmc0tleQkBE2tleUFkZHJlc3NSZWZlcnJhbHMBBQlvbGRQbGF5ZXIEBHJlZnMJAKIIAQUHcmVmc0tleQQJcmVmc0FycmF5AwkBCWlzRGVmaW5lZAEFBHJlZnMJALwJAgkBBXZhbHVlAQUEcmVmcwIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFCXJlZnNBcnJheQUJbmV3UGxheWVyCQACAQkArAICCQCsAgIJAKwCAgUJb2xkUGxheWVyAhIgYWxyZWFkeSBjb250YWlucyAFCW5ld1BsYXllcgIRIHdpdGhpbiByZWZlcnJhbHMEB25ld1JlZnMJALoJAgkAzQgCBQlyZWZzQXJyYXkFCW5ld1BsYXllcgIBXwQHbmV3T2xkcwMJAQ9jb250YWluc0VsZW1lbnQCBQZvbGRpZXMFCW9sZFBsYXllcgkBBXZhbHVlAQUEb2xkcwkAugkCCQDNCAIFBm9sZGllcwUJb2xkUGxheWVyAgFfCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQhyZWZCeUtleQUJb2xkUGxheWVyCQDMCAIJAQtTdHJpbmdFbnRyeQIFB3JlZnNLZXkFB25ld1JlZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgUHb2xkc0tleQUHbmV3T2xkcwUDbmlsBQ1wcm9sb2dBY3Rpb25zAAABaQEQZGlzdHJpYnV0ZVBvaW50cwUIc3RyZW5ndGgIYWNjdXJhY3kJaW50ZWxsZWN0CWVuZHVyYW5jZQlkZXh0ZXJpdHkEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAt2aXJ0V2xnRGF0YQkBCWFzQW55TGlzdAEJAPwHBAULd2xnQ29udHJhY3QCEmNoZWNrV2xnWHBSRUFET05MWQkAzAgCBQRhZGRyBQNuaWwFA25pbAQNdmlydFdsZ1BvaW50cwkBBWFzSW50AQkAkQMCBQt2aXJ0V2xnRGF0YQABBA0kdDA5NjYwMjk2OTkyAwkAZwIAAAUNdmlydFdsZ1BvaW50cwkAlAoCAAAFA25pbAQHZGVsdGFYUAkBBWFzSW50AQkA/AcEBQt3bGdDb250cmFjdAIJdGFrZVdsZ1hwCQDMCAIFBGFkZHIFA25pbAUDbmlsAwkAAAIFB2RlbHRhWFAFB2RlbHRhWFAJAJQKAgUNdmlydFdsZ1BvaW50cwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDGtleVVzZXJMZXZlbAEFBGFkZHIJAQVhc0ludAEJAJEDAgULdmlydFdsZ0RhdGEAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCWtleVVzZXJYUAEFBGFkZHIJAQVhc0ludAEJAJEDAgULdmlydFdsZ0RhdGEAAgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAl3bGdQb2ludHMIBQ0kdDA5NjYwMjk2OTkyAl8xBAp3bGdBY3Rpb25zCAUNJHQwOTY2MDI5Njk5MgJfMgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBApmcmVlS2V5QWNjCQERa2V5VXNlckZyZWVQb2ludHMBBQRhZGRyBA1mcmVlUG9pbnRzQWNjCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQpmcmVlS2V5QWNjAAAFCXdsZ1BvaW50cwQLZnJlZUtleUR1Y2sJARFrZXlEdWNrRnJlZVBvaW50cwEFC2R1Y2tBc3NldElkBA5mcmVlUG9pbnRzRHVjawkBC3ZhbHVlT3JFbHNlAgkAnwgBBQtmcmVlS2V5RHVjawAABAdzdW1GcmVlCQBkAgUNZnJlZVBvaW50c0FjYwUOZnJlZVBvaW50c0R1Y2sED3N1bVRvRGlzdHJpYnV0ZQkAZAIJAGQCCQBkAgkAZAIFCHN0cmVuZ3RoBQhhY2N1cmFjeQUJaW50ZWxsZWN0BQllbmR1cmFuY2UFCWRleHRlcml0eQMJAGYCBQ9zdW1Ub0Rpc3RyaWJ1dGUFB3N1bUZyZWUJAAIBCQCsAgIJAKwCAgIPVGhlcmUgYXJlIG9ubHkgCQCkAwEFB3N1bUZyZWUCGiBmcmVlIHBvaW50cyB0byBkaXN0cmlidXRlBAhjaGFyc0tleQkBDGtleUR1Y2tDaGFycwEFC2R1Y2tBc3NldElkBAVjaGFycwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFCGNoYXJzS2V5AgkwXzBfMF8wXzACAV8EBm5ld0FjYwkAZQIFDWZyZWVQb2ludHNBY2MFD3N1bVRvRGlzdHJpYnV0ZQkAlAoCCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUKZnJlZUtleUFjYwMJAGYCAAAFBm5ld0FjYwAABQZuZXdBY2MJAMwIAgkBDEludGVnZXJFbnRyeQIFC2ZyZWVLZXlEdWNrAwkAZgIAAAUGbmV3QWNjCQBkAgUOZnJlZVBvaW50c0R1Y2sFBm5ld0FjYwUOZnJlZVBvaW50c0R1Y2sJAMwIAgkBC1N0cmluZ0VudHJ5AgUIY2hhcnNLZXkJALkJAgkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJTdHJlbmd0aAUIc3RyZW5ndGgJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyQWNjdXJhY3kFCGFjY3VyYWN5CQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckludGVsbGVjdAUJaW50ZWxsZWN0CQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckVuZHVyYW5jZQUJZW5kdXJhbmNlCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckRleHRlcml0eQUJZGV4dGVyaXR5BQNuaWwCAV8FA25pbAUNcHJvbG9nQWN0aW9ucwUKd2xnQWN0aW9ucwAAAWkBHHNwbGl0QnlHbG9iYWxXZWlnaHRzUkVBRE9OTFkBBmFtb3VudAkAlAoCBQNuaWwJARJnZXROZWVkZWRNYXRlcmlhbHMBBQZhbW91bnQBaQEkc3BsaXRCeUdsb2JhbEFuZExvY2FsV2VpZ2h0c1JFQURPTkxZAwltYXRBbW91bnQJcmVzQW1vdW50CHRlcnJhaW5zBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEFCHRlcnJhaW5zCQCUCgIFA25pbAkAlAoCCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUJbWF0QW1vdW50CQETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFCXJlc0Ftb3VudAUNdGVycmFpbkNvdW50cwFpARNnZXRCYWNrcGFja1JFQURPTkxZAQtkdWNrQXNzZXRJZAkAlAoCBQNuaWwJALkJAgkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQCAToBaQEUZ2V0V2FyZWhvdXNlUkVBRE9OTFkBC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAkAlAoCBQNuaWwJALoJAgkBDGdldFdhcmVob3VzZQMJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAUJbGFuZEluZGV4BQppbmZyYUxldmVsAgE6AWkBCnNhdmVMYXN0VHgAAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQt3bGdDb250cmFjdAkAzAgCBQ9lY29ub215Q29udHJhY3QJAMwIAgUSdG91cm5hbWVudENvbnRyYWN0CQDMCAIFDWFjcmVzQ29udHJhY3QFA25pbAgFAWkGY2FsbGVyCQACAQINQWNjZXNzIGRlbmllZAkAlAoCCQEGcHJvbG9nAQUBaQAqAWkBD3VwZGF0ZUR1Y2tTdGF0cwILZHVja0Fzc2V0SWQHZGVsdGFYUAMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFB2RlbHRhWFABaQEOdXBkYXRlQWNjU3RhdHMCBGFkZHIHZGVsdGFYUAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUPZWNvbm9teUNvbnRyYWN0CQDMCAIFDWFjcmVzQ29udHJhY3QFA25pbAgFAWkGY2FsbGVyCQACAQINQWNjZXNzIGRlbmllZAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQdkZWx0YVhQAWkBCWVxdWlwRHVjawEJZXF1aXBtZW50BA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIZZXF1aXBEdWNrX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhdlcXVpcER1Y2tfY2hlY2tEZWxpdmVyeQQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQEC2N1cnJlbnRTZWdzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssAgFfBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbmV3RXEJALUJAgUJZXF1aXBtZW50AgFfAwkBAiE9AgkAkAMBBQVuZXdFcQULTlVNU0VHTUVOVFMJAAIBAhZXcm9uZyBlcXVpcG1lbnQgc3RyaW5nBAl0ZW1wUHJvZEIJAQZkcmVzc0IEBQtjdXJyZW50U2VncwkBDnByb2RTdHJUb0J5dGVzAQkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBgUDbmlsBAhzZWdCcEF1eAkAkQMCCQC1CQIJAJEDAgUFbmV3RXEFC3NlZ0JhY2twYWNrAgE7AAEECmJ1ZmZFZmZlY3QDCQAAAgUIc2VnQnBBdXgCAAAABARhdXgwCQCRAwIJALUJAgUIc2VnQnBBdXgCASwAAAMJAAACBQRhdXgwAgAAAAQGaWR4Q250CQC1CQIFBGF1eDACAToEA2lkeAkAkQMCBQZpZHhDbnQAAAQDY250CQCRAwIFBmlkeENudAABAwMDAwMJAAACBQNpZHgCAjA2BgkAAAIFA2lkeAICMDcGCQAAAgUDaWR4AgIwOAkBAiE9AgUDY250AgAHCQBmAgkBDXBhcnNlSW50VmFsdWUBBQNjbnQAAAcJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAkBDXBhcnNlSW50VmFsdWUBBQNpZHgCAV8FCnJJZHhFZmZlY3QAAAQFc3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAUKYnVmZkVmZmVjdAYECG5ld1Byb2RCCQEGZHJlc3NCBAUFbmV3RXEFCXRlbXBQcm9kQgcFBXN0YXRzBApuZXdQcm9kU3RyCQEOYnl0ZXNUb1Byb2RTdHIBBQhuZXdQcm9kQgkAlAoCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFCWVxdWlwbWVudAkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgUKbmV3UHJvZFN0cgUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAHCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAICQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAJCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAKCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwALBQNuaWwCAV8FA25pbAUNcHJvbG9nQWN0aW9ucwAAAWkBD2ZvcnRpZmljYXRlTGFuZAILbGFuZEFzc2V0SWQEcGxhbgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC2R1Y2tBc3NldElkCQELdmFsdWVPckVsc2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICAAQJZHVja1N0YXRzCQEMZ2V0RHVja1N0YXRzBAUEdGhpcwULZHVja0Fzc2V0SWQAAAcEB2ZvcnRLZXkJARdrZXlGb3J0aWZpY2F0aW9uc0J5TGFuZAEFC2xhbmRBc3NldElkBAxjdXJyZW50Rm9ydHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQdmb3J0S2V5Agw6MF8xNTowXzE4OjACAV8EBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAJ3aAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEB2N1ckxvZnQJALUJAgkAkQMCBQJ3aAUJd2hJZHhMT0ZUAgFfBARjdXJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHY3VyTG9mdAULdm9sT2NjdXBpZWQEBGN1ckYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdjdXJMb2Z0BQd2b2xGcmVlBAhuZXdGb3J0cwkAtQkCBQRwbGFuAgFfBA8kdDAxMDM4MzAxMDM5NDUJAQVmb3J0QgYFDGN1cnJlbnRGb3J0cwkBDnByb2RTdHJUb0J5dGVzAQkAkQMCBQJ3aAUJd2hJZHhQcm9kBQRjdXJPBQRjdXJGBgUDbmlsBAl0ZW1wUHJvZEIIBQ8kdDAxMDM4MzAxMDM5NDUCXzEEBXRlbXBPCAUPJHQwMTAzODMwMTAzOTQ1Al8yBAV0ZW1wRggFDyR0MDEwMzgzMDEwMzk0NQJfMwQPJHQwMTAzOTQ4MTA0MDQ0CQEFZm9ydEIGBQhuZXdGb3J0cwUJdGVtcFByb2RCBQV0ZW1wTwUFdGVtcEYHBQlkdWNrU3RhdHMECG5ld1Byb2RCCAUPJHQwMTAzOTQ4MTA0MDQ0Al8xBARuZXdPCAUPJHQwMTAzOTQ4MTA0MDQ0Al8yBARuZXdGCAUPJHQwMTAzOTQ4MTA0MDQ0Al8zBApuZXdQcm9kU3RyCQEOYnl0ZXNUb1Byb2RTdHIBBQhuZXdQcm9kQgQKbmV3TG9mdFN0cgkAuQkCCQDMCAIJAJEDAgUHY3VyTG9mdAUJdm9sTG9ja2VkCQDMCAIJAKQDAQUEbmV3TwkAzAgCCQCkAwEFBG5ld0YJAMwIAgkAkQMCBQdjdXJMb2Z0BQh2b2xUb3RhbAUDbmlsAgFfCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQdmb3J0S2V5BQRwbGFuCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5CQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgUKbmV3UHJvZFN0cgkAzAgCBQpuZXdMb2Z0U3RyBQNuaWwCAToFA25pbAUNcHJvbG9nQWN0aW9ucwAAAWkBE2luaXREdWNrVG91ckF0dGVtcHQBC2R1Y2tBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBRJ0b3VybmFtZW50Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJY3VySGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFAECWN1ckxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXJMb2NLZXkFD0RFRkFVTFRMT0NBVElPTgQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABAx0b3VyTG9jYXRpb24JAKwCAgkApAMBBQZsYXN0SWQCBF9UXzAJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQFCWN1ckhlYWx0aAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQVtYXhIUAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQtjdXJMb2NhdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCBQljdXJMb2NLZXkFDHRvdXJMb2NhdGlvbgUDbmlsBQx0b3VyTG9jYXRpb24BaQEMYnJlYWtBdHRlbXB0AAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECWN1ckxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXJMb2NLZXkFD0RFRkFVTFRMT0NBVElPTgMJAQIhPQIJAJEDAgkAtQkCBQtjdXJMb2NhdGlvbgIBXwUKbG9jSWR4VHlwZQIBVAkAAgECIllvdXIgZHVjayBpcyBub3QgaW4gdGhlIHRvdXJuYW1lbnQEC3NhdmVkSGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAQNc2F2ZWRMb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAlAoCCQDNCAIJAM0IAgUNcHJvbG9nQWN0aW9ucwkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFC3NhdmVkSGVhbHRoCQELU3RyaW5nRW50cnkCBQljdXJMb2NLZXkFDXNhdmVkTG9jYXRpb24FC2N1ckxvY2F0aW9uAWkBFmV4aXRUb3VybmFtZW50SW50ZXJuYWwBC2R1Y2tBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQINQWNjZXNzIGRlbmllZAQLc2F2ZWRIZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBA1zYXZlZExvY2F0aW9uCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFC3NhdmVkSGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUNc2F2ZWRMb2NhdGlvbgUDbmlsBwFpARRleGl0RGVsaXZlcnlJbnRlcm5hbAELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg1BY2Nlc3MgZGVuaWVkBAFlCQESZXhpdERlbGl2ZXJ5Q29tbW9uBAULZHVja0Fzc2V0SWQHAAAAAAkAlAoCCQDOCAIIBQFlAl8xCAUBZQJfMgcBaQEQYXV0b0V4aXREZWxpdmVyeQQLZHVja0Fzc2V0SWQFbmV3SFAGcmVhc29uBXNjb3JlAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQINQWNjZXNzIGRlbmllZAQBZQkBEmV4aXREZWxpdmVyeUNvbW1vbgQFC2R1Y2tBc3NldElkBgUFbmV3SFAFBXNjb3JlCQCUCgIIBQFlAl8xCAUBZQJfMwFpAQ5wcmVwYXJlUm9iYmVyeQIHbWVzc2FnZQNzaWcEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBASEBCQDEEwMFB21lc3NhZ2UFA3NpZwUDcHViCQACAQIYc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEBndsZ0FtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQp3bGdBc3NldElkCQACAQIVV0xHT0xEIHBheW1lbnRzIG9ubHkhBAVwYXJ0cwkAtQkCCQCwCQEFB21lc3NhZ2UCAXwDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAhRXcm9uZyBtZXNzYWdlIGZvcm1hdAQLZHVja0Fzc2V0SWQJAJEDAgUFcGFydHMAAAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECHnByZXBhcmVSb2JiZXJ5X2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhxwcmVwYXJlUm9iYmVyeV9jaGVja0RlbGl2ZXJ5BAdyb2JDb3N0CAkBDmdldFJvYmJlcnlEYXRhAgUEdGhpcwULZHVja0Fzc2V0SWQCXzEDCQBmAgUHcm9iQ29zdAUGd2xnQW10CQACAQkArAICCQCsAgIJAKwCAgIIUGF5bWVudCAJAKQDAQUGd2xnQW10AgwgPCByZXF1aXJlZCAJAKQDAQUHcm9iQ29zdAQKY2FuZGlkYXRlcwkAtQkCCQCRAwIFBXBhcnRzAAECAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECWR1Y2tTdGF0ZQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQETa2V5RHVja1JvYmJlcnlTdGF0ZQEFC2R1Y2tBc3NldElkAAAECmxvY2tlZExhbmQJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBE2tleUxvY2tlZExhbmRCeUR1Y2sBBQtkdWNrQXNzZXRJZAIABAdsYW5kRVRBCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlMYW5kQ29vbGRvd25FVEEBBQpsb2NrZWRMYW5kAAADAwkBAiE9AgUJZHVja1N0YXRlBQtkdWNrSWR4RnJlZQkAZgIFB2xhbmRFVEEFA25vdwcJAAIBCQCsAgICJ1lvdSBhbHJlYWR5IHN0YXJ0ZWQgcm9iYmluZywgd2FpdCB0aWxsIAkApAMBBQdsYW5kRVRBCgEHY2hlY2tlcgIDYWNjC2xhbmRBc3NldElkBAVzdGF0ZQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQETa2V5TGFuZFJvYmJlcnlTdGF0ZQEFC2xhbmRBc3NldElkAAAEC2Nvb2xkb3duRVRBCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlMYW5kQ29vbGRvd25FVEEBBQtsYW5kQXNzZXRJZAAAAwkAZgIFBXN0YXRlCQCQAwEFEGxhbmRSb2JDb29sZG93bnMJAAIBAg1JbnZhbGlkIHN0YXRlAwkAZgIFA25vdwULY29vbGRvd25FVEEECnN0YWtlZFRpbWUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAAAwkAZwIAAAUKc3Rha2VkVGltZQUDYWNjBAFhCQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEAWQJALUJAggFAWELZGVzY3JpcHRpb24CAV8EBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUEDHByb2R1Y3Rpdml0eQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMECWRlbHRhVGltZQkAZQIFA25vdwUKc3Rha2VkVGltZQQIYXZhaWxSZXMJAGsDBQlkZWx0YVRpbWUJAGgCBQxwcm9kdWN0aXZpdHkFBnBpZWNlcwUJREFZTUlMTElTAwkAZgIFDk1JTl9SRVNfVE9fUk9CBQhhdmFpbFJlcwUDYWNjCQDNCAIFA2FjYwULbGFuZEFzc2V0SWQFA2FjYwQIZmlsdGVyZWQKAAIkbAUKY2FuZGlkYXRlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHY2hlY2tlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgMJAAACCQCQAwEFCGZpbHRlcmVkAAAJAAIBAhlObyBjYW5kaWRhdGVzIGZvciByb2JiZXJ5BAZybmRJZHgJAQ9nZXRSYW5kb21OdW1iZXIDCQCQAwEFCGZpbHRlcmVkBQZoZWlnaHQJAMsBAgUDc2lnCAUBaQ10cmFuc2FjdGlvbklkBAtsYW5kQXNzZXRJZAkAkQMCBQhmaWx0ZXJlZAUGcm5kSWR4CQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBE2tleUxhbmRSb2JiZXJ5U3RhdGUBBQtsYW5kQXNzZXRJZAUMcm9iSWR4TG9ja2VkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5TGFuZENvb2xkb3duRVRBAQULbGFuZEFzc2V0SWQJAGQCBQNub3cJAJEDAgUQbGFuZFJvYkNvb2xkb3ducwUMcm9iSWR4TG9ja2VkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQETa2V5RHVja1JvYmJlcnlTdGF0ZQEFC2R1Y2tBc3NldElkBRBkdWNrSWR4UHJlcGFyaW5nCQDMCAIJAQtTdHJpbmdFbnRyeQIJARNrZXlMb2NrZWRMYW5kQnlEdWNrAQULZHVja0Fzc2V0SWQFC2xhbmRBc3NldElkBQNuaWwFDXByb2xvZ0FjdGlvbnMFC2xhbmRBc3NldElkAWkBB3JvYkxhbmQCB21lc3NhZ2UDc2lnBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQCUCgIJAM0IAgUNcHJvbG9nQWN0aW9ucwkBDEludGVnZXJFbnRyeQIJARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBBQtkdWNrQXNzZXRJZAUDbm93AAABaQEOYWNjZXB0RGVsaXZlcnkAAwkBASEBBRFLU19BTExPV19ERUxJVkVSWQkAAgECH0RlbGl2ZXJ5IGZlYXR1cmUgaXMgdHVybmVkIG9mZiEEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpBAh1c2VyQWRkcgkApQgBCAUBaQZjYWxsZXIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUIdXNlckFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECWZ1bmRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9lY29ub215Q29udHJhY3QFD2RlbGl2ZXJ5RnVuZEtleQAABAtsb2NrZWRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9lY29ub215Q29udHJhY3QFEWRlbGl2ZXJ5TG9ja2VkS2V5AAADCQBmAgUVTUlOX1VTRFRfRkVFX0RFTElWRVJZCQBlAgUJZnVuZFRvdGFsBQtsb2NrZWRUb3RhbAkAAgEJAKwCAgkArAICCQCsAgICIERlbGl2ZXJ5IGlzIG5vdCBhdmFpbGFibGUsIGZ1bmQ9CQEKZml4ZWRQb2ludAIFCWZ1bmRUb3RhbAAGAgksIGxvY2tlZD0JAQpmaXhlZFBvaW50AgULbG9ja2VkVG90YWwABgQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQIZGVsYXlFVEEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleURlbGl2ZXJ5RGVsYXlCeUR1Y2sBBQtkdWNrQXNzZXRJZAAAAwkAZgIFCGRlbGF5RVRBBQNub3cJAAIBCQCsAgICKkRlbGl2ZXJ5IGlzIGZvcmJpZGRlbiBmb3IgeW91ciBkdWNrIHVudGlsIAkApAMBBQhkZWxheUVUQQQFY291bnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFGtleVVzZXJEZWxpdmVyeUNvdW50AQUIdXNlckFkZHIAAAQHbGFzdERheQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5VXNlckxhc3REZWxpdmVyeURheQEFCHVzZXJBZGRyAAAEBXRvZGF5CQBpAgUDbm93BQlEQVlNSUxMSVMEBWFjcmVzCQELdmFsdWVPckVsc2UCCQCaCAIFDWFjcmVzQ29udHJhY3QJARprZXlBY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcgEFCHVzZXJBZGRyAAAEEWFsbG93ZWREZWxpdmVyaWVzCQBkAgUXQUxMT1dFRF9GUkVFX0RFTElWRVJJRVMJAGkCBQVhY3JlcwUaQUNSRVNfRk9SX0RFTElWRVJZX0FUVEVNUFQDAwkAZwIFBWNvdW50BRFhbGxvd2VkRGVsaXZlcmllcwkAZwIFB2xhc3REYXkFBXRvZGF5BwkAAgEJAKwCAgkArAICAhFZb3UgYWxyZWFkeSB1c2VkIAkApAMBBRFhbGxvd2VkRGVsaXZlcmllcwIcIGRlbGl2ZXJ5IGF0dGVtcHRzIGZvciB0b2RheQMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECHmFjY2VwdERlbGl2ZXJ5X2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhxhY2NlcHREZWxpdmVyeV9jaGVja0RlbGl2ZXJ5BA5uZXdMb2NrZWRUb3RhbAkBBWFzSW50AQkA/AcEBQ9lY29ub215Q29udHJhY3QCFHVwZGF0ZURlbGl2ZXJ5TG9ja2VkCQDMCAIJAGQCBQtsb2NrZWRUb3RhbAUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQNuaWwFA25pbAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OBBBkZWxpdmVyeUxvY2F0aW9uCQCsAgIJAKQDAQUDbm93AgRfRF8wCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQtjdXJMb2NhdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCBQljdXJMb2NLZXkFEGRlbGl2ZXJ5TG9jYXRpb24FA25pbAUNcHJvbG9nQWN0aW9ucwkAlAoCBRBkZWxpdmVyeUxvY2F0aW9uBQ5uZXdMb2NrZWRUb3RhbACKYcdP", "height": 2794069, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AJWsqJF692chTzKrxu1vnN55pnoLTwjr66f4oDFWwuUw Next: 2EvYQi8mtbkfrFiEZUEUrwAneZUVr446MqpzLQRBXSQP Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 86400000
55
6-let b = 60000
7-
8-func c (d) = ("lastArbTimeUser_" + d)
9-
10-
11-func e (d) = ("acresStakedAmountByUser_" + d)
12-
13-
14-let f = 100000000
15-
16-let g = 3200
17-
18-let h = 4000
19-
20-let i = 3
21-
22-let j = 100000000
23-
24-let k = 400
25-
26-let l = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
27-
28-let m = 0
29-
30-let n = 1
31-
32-let o = 2
33-
34-let p = 3
35-
36-let q = 4
37-
38-let r = 0
39-
40-let s = 6
6+func b (c) = ("lastArbTimeUser_" + c)
7+
8+
9+func d (c) = ("acresStakedAmountByUser_" + c)
10+
11+
12+let e = 100000000
13+
14+let f = 3200
15+
16+let g = 4000
17+
18+let h = 3
19+
20+let i = 100000000
21+
22+let j = 400
23+
24+let k = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
25+
26+let l = 0
27+
28+let m = 1
29+
30+let n = 2
31+
32+let o = 3
33+
34+let p = 4
35+
36+let q = 0
37+
38+let r = 6
39+
40+let s = 2
4141
4242 let t = 2
4343
44-let u = 2
45-
46-let v = 30
47-
48-let w = [0, 600000, 900000, 43200000, 21600000]
49-
50-let x = 20000000
51-
52-let y = 1
53-
54-let z = 0
55-
56-let A = 1
57-
58-func B (C) = ("duckHealth_" + C)
59-
60-
61-func D (C) = ("duckChars_" + C)
62-
63-
64-func E (C) = ("duckXP_" + C)
65-
66-
67-func F (C) = ("duckLevel_" + C)
68-
69-
70-func G (C) = ("duckFreePoints_" + C)
71-
72-
73-func H (C) = ("duckEquipment_" + C)
74-
75-
76-func I (d) = ("userXP_" + d)
77-
78-
79-func J (d) = ("userLevel_" + d)
80-
81-
82-func K (d) = ("userFreePoints_" + d)
83-
84-
85-func L (C) = ("savedHealth_" + C)
86-
87-
88-func M (C) = ("savedLocation_" + C)
89-
90-
91-func N (C) = ("duckBuffs_" + C)
92-
93-
94-func O (C) = ("lastRobberyTime_" + C)
95-
96-
97-func P (C) = ("lastRobberyCost_" + C)
98-
99-
100-func Q (R) = ("landRobberyState_" + R)
101-
102-
103-func S (R) = ("landCooldownETA_" + R)
104-
105-
106-func T (C) = ("duckRobberyState_" + C)
107-
108-
109-func U (C) = ("lockedLandByDuck_" + C)
110-
111-
112-func V (C) = ("deliveryDelayByDuck_" + C)
113-
114-
115-func W (d) = ("userDeliveryCount_" + d)
116-
117-
118-func X (d) = ("userLastDeliveryDay_" + d)
119-
44+let u = 30
45+
46+let v = [0, 600000, 900000, 43200000, 21600000]
47+
48+let w = 20000000
49+
50+let x = 1
51+
52+let y = 0
53+
54+let z = 1
55+
56+func A (B) = ("duckHealth_" + B)
57+
58+
59+func C (B) = ("duckChars_" + B)
60+
61+
62+func D (B) = ("duckXP_" + B)
63+
64+
65+func E (B) = ("duckLevel_" + B)
66+
67+
68+func F (B) = ("duckFreePoints_" + B)
69+
70+
71+func G (B) = ("duckEquipment_" + B)
72+
73+
74+func H (c) = ("userXP_" + c)
75+
76+
77+func I (c) = ("userLevel_" + c)
78+
79+
80+func J (c) = ("userFreePoints_" + c)
81+
82+
83+func K (B) = ("savedHealth_" + B)
84+
85+
86+func L (B) = ("savedLocation_" + B)
87+
88+
89+func M (B) = ("duckBuffs_" + B)
90+
91+
92+func N (B) = ("lastRobberyTime_" + B)
93+
94+
95+func O (B) = ("lastRobberyCost_" + B)
96+
97+
98+func P (Q) = ("landRobberyState_" + Q)
99+
100+
101+func R (Q) = ("landCooldownETA_" + Q)
102+
103+
104+func S (B) = ("duckRobberyState_" + B)
105+
106+
107+func T (B) = ("lockedLandByDuck_" + B)
108+
109+
110+func U (B) = ("deliveryDelayByDuck_" + B)
111+
112+
113+func V (c) = ("userDeliveryCount_" + c)
114+
115+
116+func W (c) = ("userLastDeliveryDay_" + c)
117+
118+
119+let X = 10000
120120
121121 let Y = 10000
122122
123-let Z = 10000
124-
125-let aa = 2000
126-
127-let ab = 100000
128-
129-let ac = 1000000
130-
131-let ad = 5000000
132-
133-let ae = 10000
123+let Z = 2000
124+
125+let aa = 100000
126+
127+let ab = 1000000
128+
129+let ac = 5000000
130+
131+let ad = 10000
132+
133+let ae = 1000000
134134
135135 let af = 1000000
136136
137-let ag = 1000000
138-
139-let ah = 10000
140-
141-func ai (aj) = fraction(g, pow(aj, 4, h, 4, 4, DOWN), f)
142-
143-
144-func ak (al) = (100 + al)
145-
146-
147-func am (an,ao) = {
148- let ap = ai(ao)
149-[ap, (i * (ap - an))]
150- }
151-
152-
153-func aq (ar,C,as,at) = {
154- let au = split(valueOrElse(getString(ar, D(C)), "0_0_0_0_0"), "_")
155- let av = valueOrElse(getInteger(ar, F(C)), 0)
156- let aw = valueOrElse(getInteger(ar, B(C)), ak(av))
157- let ax = split(valueOrElse(getString(ar, N(C)), "0_0_0_0_0"), "_")
158- ([parseIntValue(au[m]), parseIntValue(au[n]), parseIntValue(au[o]), parseIntValue(au[p]), parseIntValue(au[q]), av, aw] ++ (if (at)
159- then [as, as, as, as, as]
160- else [parseIntValue(ax[m]), parseIntValue(ax[n]), parseIntValue(ax[o]), parseIntValue(ax[p]), parseIntValue(ax[q])]))
161- }
162-
163-
164-func ay (ar,C) = {
165- let az = valueOrElse(getInteger(ar, P(C)), 0)
166- let aA = valueOrElse(getInteger(ar, O(C)), 0)
167- let aB = lastBlock.timestamp
168- let aC = max([j, (az - (k * (aB - aA)))])
169- let aD = valueOrElse(getInteger(ar, T(C)), 0)
170- let aE = valueOrElse(getString(ar, U(C)), "")
171- let aF = valueOrElse(getInteger(ar, S(aE)), 0)
172- $Tuple5(aC, aA, aD, aE, aF)
173- }
174-
175-
176-let aG = "LAND"
177-
178-let aH = "DUCK"
179-
180-let aI = "PRESALE"
181-
182-let aJ = 6
183-
184-let aK = 25
185-
186-let aL = 3456000
187-
188-let aM = 10000000000
189-
190-let aN = "Africa_F_Africa"
191-
192-let aO = 39637
193-
194-let aP = 10
195-
196-let aQ = 50000
197-
198-let aR = 600000
199-
200-let aS = 3
201-
202-let aT = 20000000
203-
204-let aU = ["First Aid Kit L1", "First Aid Kit L2", "First Aid Kit L3", "Backpack L1", "Backpack L2", "Backpack L3", "Food Ration L1", "Food Ration L2", "Food Ration L3", "Jet Pack L1", "Jet Pack L2", "Jet Pack L3", "Shield L1", "Shield L2", "Shield L3", "Mine L1", "Mine L2", "Mine L3", "Trap L1", "Trap L2", "Trap L3"]
205-
206-let aV = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
207-
208-let aW = 10000000
209-
210-let aX = [15, 16, 17, 18, 19, 20]
211-
212-let aY = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_"]
213-
214-let aZ = 6
215-
216-let ba = 8
217-
218-let bb = 9
137+let ag = 10000
138+
139+func ah (ai) = fraction(f, pow(ai, 4, g, 4, 4, DOWN), e)
140+
141+
142+func aj (ak) = (100 + ak)
143+
144+
145+func al (am,an) = {
146+ let ao = ah(an)
147+[ao, (h * (ao - am))]
148+ }
149+
150+
151+func ap (aq,B,ar,as) = {
152+ let at = split(valueOrElse(getString(aq, C(B)), "0_0_0_0_0"), "_")
153+ let au = valueOrElse(getInteger(aq, E(B)), 0)
154+ let av = valueOrElse(getInteger(aq, A(B)), aj(au))
155+ let aw = split(valueOrElse(getString(aq, M(B)), "0_0_0_0_0"), "_")
156+ ([parseIntValue(at[l]), parseIntValue(at[m]), parseIntValue(at[n]), parseIntValue(at[o]), parseIntValue(at[p]), au, av] ++ (if (as)
157+ then [ar, ar, ar, ar, ar]
158+ else [parseIntValue(aw[l]), parseIntValue(aw[m]), parseIntValue(aw[n]), parseIntValue(aw[o]), parseIntValue(aw[p])]))
159+ }
160+
161+
162+func ax (aq,B) = {
163+ let ay = valueOrElse(getInteger(aq, O(B)), 0)
164+ let az = valueOrElse(getInteger(aq, N(B)), 0)
165+ let aA = lastBlock.timestamp
166+ let aB = max([i, (ay - (j * (aA - az)))])
167+ let aC = valueOrElse(getInteger(aq, S(B)), 0)
168+ let aD = valueOrElse(getString(aq, T(B)), "")
169+ let aE = valueOrElse(getInteger(aq, R(aD)), 0)
170+ $Tuple5(aB, az, aC, aD, aE)
171+ }
172+
173+
174+let aF = "LAND"
175+
176+let aG = "DUCK"
177+
178+let aH = "PRESALE"
179+
180+let aI = 6
181+
182+let aJ = 25
183+
184+let aK = 3456000
185+
186+let aL = 10000000000
187+
188+let aM = "Africa_F_Africa"
189+
190+let aN = 39637
191+
192+let aO = 10
193+
194+let aP = 50000
195+
196+let aQ = 600000
197+
198+let aR = 3
199+
200+let aS = 20000000
201+
202+let aT = ["First Aid Kit L1", "First Aid Kit L2", "First Aid Kit L3", "Backpack L1", "Backpack L2", "Backpack L3", "Food Ration L1", "Food Ration L2", "Food Ration L3", "Jet Pack L1", "Jet Pack L2", "Jet Pack L3", "Shield L1", "Shield L2", "Shield L3", "Mine L1", "Mine L2", "Mine L3", "Trap L1", "Trap L2", "Trap L3"]
203+
204+let aU = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
205+
206+let aV = 10000000
207+
208+let aW = [15, 16, 17, 18, 19, 20]
209+
210+let aX = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_"]
211+
212+let aY = 6
213+
214+let aZ = 8
215+
216+let ba = 9
217+
218+let bb = 10
219219
220220 let bc = 10
221221
222-let bd = 10
223-
224-let be = 0
225-
226-let bf = 1
227-
228-let bg = 2
229-
230-let bh = 3
231-
232-let bi = 4
233-
234-let bj = 0
235-
236-let bk = 1
237-
238-let bl = 2
239-
240-let bm = 3
241-
242-let bn = 0
243-
244-let bo = 1
245-
246-let bp = 2
247-
248-let bq = 3
249-
250-let br = 0
251-
252-let bs = 1
253-
254-let bt = 2
255-
256-func bu (bv) = ("no_" + bv)
257-
258-
259-func bw (bv) = ("lcna_" + bv)
260-
261-
262-func bx (bv) = ("st_" + bv)
263-
264-
265-func by (bz,bv) = makeString(["las", bz, bv], "_")
266-
267-
268-func bA (bB,bv,bC) = ((((("sttao_" + bB) + "_") + bv) + "_") + bC)
269-
270-
271-func bD (R) = ("wh_" + R)
272-
273-
274-func bE (bv) = ("infraLevel_" + bv)
275-
276-
277-func bF (R) = ("fortifications_" + R)
278-
279-
280-func bG (bv) = ("duckCustomNameByAssetId_" + bv)
281-
282-
283-func bH (d) = ("accountCustomNameByAddr_" + d)
284-
285-
286-func bI (d) = ("accRefBy_" + d)
287-
288-
289-func bJ (C) = ("onboardArtActivatedOnDuck_" + C)
290-
291-
292-func bK (d) = ("onboardArtActivatedDuckBy_" + d)
293-
294-
295-func bL (d) = ("accReferrals_" + d)
296-
297-
298-func bM (bv) = ("duckOwner_" + bv)
299-
300-
301-func bN (bC) = ("stakedDuckByOwner_" + bC)
302-
303-
304-func bO (C) = ("backPack_" + C)
305-
306-
307-func bP (C) = ("duckLocation_" + C)
308-
309-
310-func bQ (bR) = ("%s%s__userGwlReleaseTime__" + bR)
311-
312-
313-func bS () = "emergencyWarehouseProducts"
314-
315-
316-let bT = "deliveryFund"
317-
318-let bU = "deliveryLocked"
319-
320-let bV = "%s__lastTourId"
321-
322-func bW (bX) = ("%s%d__tourStaticData__" + toString(bX))
323-
324-
325-func bY (bX) = ("%s%d__tourDynamicData__" + toString(bX))
326-
327-
328-func bZ (bX,C) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bX), C], "__")
329-
330-
331-let ca = 0
332-
333-let cb = 1
334-
335-let cc = 6
336-
337-let cd = 1
338-
339-func ce (cf,bX) = {
340- let cg = split(valueOrErrorMessage(getString(cf, bW(bX)), (("Error reading tournament " + toString(bX)) + " data")), "__")
341- let ch = split_4C(valueOrErrorMessage(getString(cf, bY(bX)), (("Error reading tournament " + toString(bX)) + " data")), "__")
342-[cg, ch]
343- }
344-
345-
346-func ci (cf,cj) = {
347- let ck = valueOrElse(getInteger(cf, bV), 0)
348- let cl = split(cj, "_")
349- let aB = lastBlock.timestamp
350- let cm = ce(cf, ck)
351- let cg = cm[ca]
352- let ch = cm[cb]
353- if (if (if ((cl[bs] == "T"))
354- then (parseIntValue(cl[br]) == ck)
222+let bd = 0
223+
224+let be = 1
225+
226+let bf = 2
227+
228+let bg = 3
229+
230+let bh = 4
231+
232+let bi = 0
233+
234+let bj = 1
235+
236+let bk = 2
237+
238+let bl = 3
239+
240+let bm = 0
241+
242+let bn = 1
243+
244+let bo = 2
245+
246+let bp = 3
247+
248+let bq = 0
249+
250+let br = 1
251+
252+let bs = 2
253+
254+func bt (bu) = ("no_" + bu)
255+
256+
257+func bv (bu) = ("lcna_" + bu)
258+
259+
260+func bw (bu) = ("st_" + bu)
261+
262+
263+func bx (by,bu) = makeString(["las", by, bu], "_")
264+
265+
266+func bz (bA,bu,bB) = ((((("sttao_" + bA) + "_") + bu) + "_") + bB)
267+
268+
269+func bC (Q) = ("wh_" + Q)
270+
271+
272+func bD (bu) = ("infraLevel_" + bu)
273+
274+
275+func bE (Q) = ("fortifications_" + Q)
276+
277+
278+func bF (bu) = ("duckCustomNameByAssetId_" + bu)
279+
280+
281+func bG (c) = ("accountCustomNameByAddr_" + c)
282+
283+
284+func bH (c) = ("accRefBy_" + c)
285+
286+
287+func bI (B) = ("onboardArtActivatedOnDuck_" + B)
288+
289+
290+func bJ (c) = ("onboardArtActivatedDuckBy_" + c)
291+
292+
293+func bK (c) = ("accReferrals_" + c)
294+
295+
296+func bL (bu) = ("duckOwner_" + bu)
297+
298+
299+func bM (bB) = ("stakedDuckByOwner_" + bB)
300+
301+
302+func bN (B) = ("backPack_" + B)
303+
304+
305+func bO (B) = ("duckLocation_" + B)
306+
307+
308+func bP (bQ) = ("%s%s__userGwlReleaseTime__" + bQ)
309+
310+
311+func bR () = "emergencyWarehouseProducts"
312+
313+
314+let bS = "deliveryFund"
315+
316+let bT = "deliveryLocked"
317+
318+let bU = "%s__lastTourId"
319+
320+func bV (bW) = ("%s%d__tourStaticData__" + toString(bW))
321+
322+
323+func bX (bW) = ("%s%d__tourDynamicData__" + toString(bW))
324+
325+
326+func bY (bW,B) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bW), B], "__")
327+
328+
329+let bZ = 0
330+
331+let ca = 1
332+
333+let cb = 6
334+
335+let cc = 1
336+
337+func cd (ce,bW) = {
338+ let cf = split(valueOrErrorMessage(getString(ce, bV(bW)), (("Error reading tournament " + toString(bW)) + " data")), "__")
339+ let cg = split_4C(valueOrErrorMessage(getString(ce, bX(bW)), (("Error reading tournament " + toString(bW)) + " data")), "__")
340+[cf, cg]
341+ }
342+
343+
344+func ch (ce,ci) = {
345+ let cj = valueOrElse(getInteger(ce, bU), 0)
346+ let ck = split(ci, "_")
347+ let aA = lastBlock.timestamp
348+ let cl = cd(ce, cj)
349+ let cf = cl[bZ]
350+ let cg = cl[ca]
351+ if (if (if ((ck[br] == "T"))
352+ then (parseIntValue(ck[bq]) == cj)
355353 else false)
356- then (ch[cd] == "INPROGRESS")
354+ then (cg[cc] == "INPROGRESS")
357355 else false)
358- then (parseIntValue(cg[cc]) > aB)
356+ then (parseIntValue(cf[cb]) > aA)
359357 else false
360358 }
361359
362360
363-func cn (cj) = {
364- let cl = split(cj, "_")
365- let aB = lastBlock.timestamp
366- let co = parseIntValue(cl[br])
367- let cp = parseIntValue(cl[bt])
368- if (if ((cl[bs] == "D"))
369- then ((co + aR) > aB)
361+func cm (ci) = {
362+ let ck = split(ci, "_")
363+ let aA = lastBlock.timestamp
364+ let cn = parseIntValue(ck[bq])
365+ let co = parseIntValue(ck[bs])
366+ if (if ((ck[br] == "D"))
367+ then ((cn + aQ) > aA)
370368 else false)
371- then (3 >= cp)
369+ then (3 >= co)
372370 else false
373371 }
374372
375373
376-func cq (cj) = {
377- let cr = split(cj, "_")[bs]
378- if ((cr != "T"))
379- then (cr != "D")
374+func cp (ci) = {
375+ let cq = split(ci, "_")[br]
376+ if ((cq != "T"))
377+ then (cq != "D")
380378 else false
381379 }
382380
383381
384-func cs (cf,cj) = {
385- let ck = valueOrElse(getInteger(cf, bV), 0)
386- let cl = split(cj, "_")
387- let aB = lastBlock.timestamp
388- let cm = ce(cf, ck)
389- let cg = cm[ca]
390- let ch = cm[cb]
391- let cr = cl[bs]
392- if ((cr == "D"))
382+func cr (ce,ci) = {
383+ let cj = valueOrElse(getInteger(ce, bU), 0)
384+ let ck = split(ci, "_")
385+ let aA = lastBlock.timestamp
386+ let cl = cd(ce, cj)
387+ let cf = cl[bZ]
388+ let cg = cl[ca]
389+ let cq = ck[br]
390+ if ((cq == "D"))
393391 then true
394- else if (if (if ((cl[bs] == "T"))
395- then (parseIntValue(cl[br]) == ck)
392+ else if (if (if ((ck[br] == "T"))
393+ then (parseIntValue(ck[bq]) == cj)
396394 else false)
397- then (ch[cd] == "INPROGRESS")
395+ then (cg[cc] == "INPROGRESS")
398396 else false)
399- then (parseIntValue(cg[cc]) > aB)
397+ then (parseIntValue(cf[cb]) > aA)
400398 else false
401399 }
402400
403401
404-func ct (cu) = (parseIntValue(cu[aZ]) * aW)
405-
406-
407-func cv (cw,cx,cy) = throw(((((("Cheat attempt: oldLoc=" + cw) + ", newLoc=") + cx) + ", case=") + toString(cy)))
408-
402+func cs (ct) = (parseIntValue(ct[aY]) * aV)
403+
404+
405+func cu (cv,cw,cx) = throw(((((("Cheat attempt: oldLoc=" + cv) + ", newLoc=") + cw) + ", case=") + toString(cx)))
406+
407+
408+let cy = false
409409
410410 let cz = false
411411
412-let cA = false
413-
414-let cB = true
412+let cA = true
413+
414+let cB = 86400000
415415
416416 let cC = take(drop(this.bytes, 1), 1)
417417
445445 let cH = {
446446 let cE = cC
447447 if ((base58'2W' == cE))
448- then 86400000
448+ then cB
449449 else if ((base58'2T' == cE))
450450 then 60000
451451 else throw("Unknown chain")
452452 }
453453
454-let cI = "__"
455-
456-let cJ = 1000000
457-
458-let cK = 100000000
459-
460-let cL = 25
461-
462-let cM = 100
463-
464-let cN = 225
465-
466-let cO = 400
467-
468-let cP = 625
469-
470-let cQ = [0, 1, 2, 3, 4, 5]
471-
472-func cR (cS,cT) = valueOrErrorMessage(getString(cS, cT), makeString(["mandatory ", toString(cS), ".", cT, " is not defined"], ""))
473-
474-
475-let cU = 1
476-
477-let cV = 2
478-
479-let cW = 3
480-
481-let cX = 4
482-
483-let cY = 7
484-
485-let cZ = 8
486-
487-func da () = "%s__restConfig"
488-
489-
490-func db () = "%s__restAddr"
491-
492-
493-func dc (dd) = split_4C(cR(dd, da()), cI)
494-
495-
496-func de (df,dg) = valueOrErrorMessage(addressFromString(df[dg]), ("Rest cfg doesn't contain address at index " + toString(dg)))
497-
498-
499-let dh = addressFromStringValue(valueOrElse(getString(this, db()), cF))
500-
501-let df = dc(dh)
502-
503-let ar = de(df, cU)
504-
505-let di = de(df, cV)
506-
507-let dj = de(df, cW)
508-
509-let dk = de(df, cX)
510-
511-let dl = de(df, cY)
512-
513-let dm = de(df, cZ)
514-
515-let dn = 0
516-
517-let do = 1
518-
519-let dp = 2
520-
521-let dq = 3
522-
523-let dr = "wlg_assetId"
524-
525-let ds = valueOrErrorMessage(getBinary(dk, dr), "WLGOLD is not issued yet")
526-
527-let dt = "acresAssetId"
528-
529-let du = valueOrErrorMessage(getBinary(dm, dt), "ACRES is not issued yet")
530-
531-let dv = 2
532-
533-func dw (cS) = ("finishBlockForAddr_" + cS)
534-
535-
536-func dx () = "resTypesProportions"
537-
538-
539-func dy (dz) = ("resTypesByContinent_" + dz)
540-
541-
542-func dA (bC) = ("stakedLandsByOwner_" + bC)
543-
544-
545-func dB (bC) = ("stakedPiecesByOwner_" + bC)
546-
547-
548-func dC (dD) = {
549- let cE = dD
454+let cI = {
455+ let cE = cC
456+ if ((base58'2W' == cE))
457+ then cB
458+ else if ((base58'2T' == cE))
459+ then 600000
460+ else throw("Unknown chain")
461+ }
462+
463+let cJ = "__"
464+
465+let cK = 1000000
466+
467+let cL = 100000000
468+
469+let cM = 25
470+
471+let cN = 100
472+
473+let cO = 225
474+
475+let cP = 400
476+
477+let cQ = 625
478+
479+let cR = [0, 1, 2, 3, 4, 5]
480+
481+func cS (cT,cU) = valueOrErrorMessage(getString(cT, cU), makeString(["mandatory ", toString(cT), ".", cU, " is not defined"], ""))
482+
483+
484+let cV = 1
485+
486+let cW = 2
487+
488+let cX = 3
489+
490+let cY = 4
491+
492+let cZ = 7
493+
494+let da = 8
495+
496+func db () = "%s__restConfig"
497+
498+
499+func dc () = "%s__restAddr"
500+
501+
502+func dd (de) = split_4C(cS(de, db()), cJ)
503+
504+
505+func df (dg,dh) = valueOrErrorMessage(addressFromString(dg[dh]), ("Rest cfg doesn't contain address at index " + toString(dh)))
506+
507+
508+let di = addressFromStringValue(valueOrElse(getString(this, dc()), cF))
509+
510+let dg = dd(di)
511+
512+let aq = df(dg, cV)
513+
514+let dj = df(dg, cW)
515+
516+let dk = df(dg, cX)
517+
518+let dl = df(dg, cY)
519+
520+let dm = df(dg, cZ)
521+
522+let dn = df(dg, da)
523+
524+let do = 0
525+
526+let dp = 1
527+
528+let dq = 2
529+
530+let dr = 3
531+
532+let ds = "wlg_assetId"
533+
534+let dt = valueOrErrorMessage(getBinary(dl, ds), "WLGOLD is not issued yet")
535+
536+let du = "acresAssetId"
537+
538+let dv = valueOrErrorMessage(getBinary(dn, du), "ACRES is not issued yet")
539+
540+let dw = 2
541+
542+func dx (cT) = ("finishBlockForAddr_" + cT)
543+
544+
545+func dy () = "resTypesProportions"
546+
547+
548+func dz (dA) = ("resTypesByContinent_" + dA)
549+
550+
551+func dB (bB) = ("stakedLandsByOwner_" + bB)
552+
553+
554+func dC (bB) = ("stakedPiecesByOwner_" + bB)
555+
556+
557+func dD (dE) = {
558+ let cE = dE
550559 if ($isInstanceOf(cE, "String"))
551560 then {
552- let dE = cE
553- dE
561+ let dF = cE
562+ dF
554563 }
555564 else throw("fail to cast into String")
556565 }
557566
558567
559-func dF (dD) = {
560- let cE = dD
568+func dG (dE) = {
569+ let cE = dE
561570 if ($isInstanceOf(cE, "Int"))
562571 then {
563- let dG = cE
564- dG
572+ let dH = cE
573+ dH
565574 }
566575 else throw("fail to cast into Int")
567576 }
568577
569578
570-func dH (dD) = {
571- let cE = dD
579+func dI (dE) = {
580+ let cE = dE
572581 if ($isInstanceOf(cE, "List[Any]"))
573582 then {
574- let dI = cE
575- dI
583+ let dJ = cE
584+ dJ
576585 }
577586 else throw("fail to cast into List[Any]")
578587 }
579588
580589
581-func dJ (dD) = {
582- let cE = dD
590+func dK (dE) = {
591+ let cE = dE
583592 if ($isInstanceOf(cE, "Boolean"))
584593 then {
585- let dE = cE
586- dE
594+ let dF = cE
595+ dF
587596 }
588597 else throw("fail to cast into Boolean")
589598 }
590599
591600
592-func dK (dL) = {
593- let cE = dL
594- if ($isInstanceOf(cE, "(String, Int)"))
595- then {
596- let dM = cE
597- dM
598- }
599- else throw("fail to cast into (String, Int)")
600- }
601-
602-
603-func dN (dO) = {
604- let cE = dO
601+func dL (dM) = {
602+ let cE = dM
605603 if (("S" == cE))
606- then cL
604+ then cM
607605 else if (("M" == cE))
608- then cM
606+ then cN
609607 else if (("L" == cE))
610- then cN
608+ then cO
611609 else if (("XL" == cE))
612- then cO
610+ then cP
613611 else if (("XXL" == cE))
614- then cP
612+ then cQ
615613 else throw("Unknown land size")
616614 }
617615
618616
619-func dP (dE) = isDefined(parseInt(dE))
620-
621-
622-func dQ () = "contractsBlocked"
623-
624-
625-func dR (d) = ("lastTxIdByUser_" + d)
626-
627-
628-func dS (dL,dT) = {
629- let dU = pow(10, 0, dT, 0, 0, DOWN)
630- let dV = toString((dL % dU))
631- let dW = drop(toString(dU), (1 + size(dV)))
632- (((toString((dL / dU)) + ".") + dW) + dV)
633- }
634-
635-
636-func dX (dY,dZ,ea) = {
637- let eb = value(blockInfoByHeight(dZ))
638- let ec = sha256((value(eb.vrf) + ea))
639- (toInt(ec) % dY)
640- }
641-
642-
643-let ed = {
617+func dN (dF) = isDefined(parseInt(dF))
618+
619+
620+func dO () = "contractsBlocked"
621+
622+
623+func dP (c) = ("lastTxIdByUser_" + c)
624+
625+
626+func dQ (dR,dS) = {
627+ let dT = pow(10, 0, dS, 0, 0, DOWN)
628+ let dU = toString((dR % dT))
629+ let dV = drop(toString(dT), (1 + size(dU)))
630+ (((toString((dR / dT)) + ".") + dV) + dU)
631+ }
632+
633+
634+func dW (dX,dY,dZ) = {
635+ let ea = value(blockInfoByHeight(dY))
636+ let eb = sha256((value(ea.vrf) + dZ))
637+ (toInt(eb) % dX)
638+ }
639+
640+
641+let ec = {
644642 let cE = cC
645643 if ((base58'2W' == cE))
646644 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
649647 else throw("Unknown chain")
650648 }
651649
652-let ee = {
650+let ed = {
653651 let cE = cC
654652 if ((base58'2W' == cE))
655653 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
658656 else throw("Unknown chain")
659657 }
660658
661-let ef = {
659+let ee = {
662660 let cE = cC
663661 if ((base58'2W' == cE))
664- then if (cz)
662+ then if (cy)
665663 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
666664 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
667665 else if ((base58'2T' == cE))
669667 else throw("Unknown chain")
670668 }
671669
672-let eg = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
673-
674-let eh = 300000
675-
676-let ei = 5000000
677-
678-let ej = 50
679-
680-let ek = 10000000
681-
682-let el = {
670+let ef = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
671+
672+let eg = 300000
673+
674+let eh = 5000000
675+
676+let ei = 50
677+
678+let ej = 10000000
679+
680+let ek = {
683681 let cE = cC
684682 if ((base58'2W' == cE))
685683 then 252289527462
688686 else throw("Unknown chain")
689687 }
690688
691-let em = {
689+let el = {
692690 let cE = cC
693691 if ((base58'2W' == cE))
694692 then 250000000
697695 else throw("Unknown chain")
698696 }
699697
700-let en = 2500000000
701-
702-let eo = toBigInt(5)
703-
704-let ep = toBigInt(20)
705-
706-let eq = toBigInt((20 * 20))
707-
708-let er = toBigInt(((20 * 20) * 20))
709-
710-let es = toBigInt((((20 * 20) * 20) * 20))
711-
712-let et = toBigInt(((((20 * 20) * 20) * 20) * 20))
713-
714-let eu = 500
715-
716-func ev () = "nextLandNum"
717-
718-
719-func ew (ex) = ("lcn_" + ex)
720-
721-
722-func ey (ez) = ("la_" + ez)
723-
724-
725-func eA (bv,bC) = ((("ilao_" + bv) + "_") + bC)
726-
727-
728-func eB (ez) = ("lo_" + ez)
729-
730-
731-func eC (ex) = ("duckByCustomName_" + ex)
732-
733-
734-func eD (ex) = ("accountByCustomName_" + ex)
735-
736-
737-func eE () = "oldiesList"
738-
739-
740-let eF = 0
741-
742-let eG = 1
743-
744-let eH = 2
745-
746-let eI = 0
747-
748-let eJ = 5
749-
750-let eK = 6
751-
752-let eL = 7
753-
754-func eM (ez,dO) = ((aG + ez) + dO)
755-
756-
757-func eN (eO,eP) = {
758- let eQ = if ((eO >= 0))
759- then (((eO + eP) - 1) / eP)
760- else -((((-(eO) + eP) - 1) / eP))
761- (eQ * cK)
762- }
763-
764-
765-func eR (eS,eT) = {
766- let eU = (((((eT[0] + eT[1]) + eT[2]) + eT[3]) + eT[4]) + eT[5])
767- if ((0 >= eU))
698+let em = 2500000000
699+
700+let en = toBigInt(5)
701+
702+let eo = toBigInt(20)
703+
704+let ep = toBigInt((20 * 20))
705+
706+let eq = toBigInt(((20 * 20) * 20))
707+
708+let er = toBigInt((((20 * 20) * 20) * 20))
709+
710+let es = toBigInt(((((20 * 20) * 20) * 20) * 20))
711+
712+let et = 500
713+
714+func eu () = "nextLandNum"
715+
716+
717+func ev (ew) = ("lcn_" + ew)
718+
719+
720+func ex (ey) = ("la_" + ey)
721+
722+
723+func ez (bu,bB) = ((("ilao_" + bu) + "_") + bB)
724+
725+
726+func eA (ey) = ("lo_" + ey)
727+
728+
729+func eB (ew) = ("duckByCustomName_" + ew)
730+
731+
732+func eC (ew) = ("accountByCustomName_" + ew)
733+
734+
735+func eD () = "oldiesList"
736+
737+
738+let eE = 0
739+
740+let eF = 1
741+
742+let eG = 2
743+
744+let eH = 0
745+
746+let eI = 5
747+
748+let eJ = 6
749+
750+let eK = 7
751+
752+func eL (ey,dM) = ((aF + ey) + dM)
753+
754+
755+func eM (eN,eO) = {
756+ let eP = if ((eN >= 0))
757+ then (((eN + eO) - 1) / eO)
758+ else -((((-(eN) + eO) - 1) / eO))
759+ (eP * cL)
760+ }
761+
762+
763+func eQ (eR,eS) = {
764+ let eT = (((((eS[0] + eS[1]) + eS[2]) + eS[3]) + eS[4]) + eS[5])
765+ if ((0 >= eT))
768766 then throw("Zero weights sum")
769767 else {
770- let eV = fraction(eS, cJ, eU)
771- func eW (eX,eY) = (eX :+ fraction(eY, eV, cJ))
772-
773- let eZ = eT
774- let fa = size(eZ)
775- let fb = nil
776- func fc (fd,fe) = if ((fe >= fa))
777- then fd
778- else eW(fd, eZ[fe])
779-
780- func ff (fd,fe) = if ((fe >= fa))
781- then fd
768+ let eU = fraction(eR, cK, eT)
769+ func eV (eW,eX) = (eW :+ fraction(eX, eU, cK))
770+
771+ let eY = eS
772+ let eZ = size(eY)
773+ let fa = nil
774+ func fb (fc,fd) = if ((fd >= eZ))
775+ then fc
776+ else eV(fc, eY[fd])
777+
778+ func fe (fc,fd) = if ((fd >= eZ))
779+ then fc
782780 else throw("List size exceeds 6")
783781
784- ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
785- }
786- }
787-
788-
789-func fg (eS) = {
790- let fh = split(value(getString(dx())), "_")
791- if ((size(fh) != aJ))
782+ fe(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6)
783+ }
784+ }
785+
786+
787+func ff (eR) = {
788+ let fg = split(value(getString(dy())), "_")
789+ if ((size(fg) != aI))
792790 then throw("Wrong proportions data")
793791 else {
794- let fi = [parseIntValue(fh[0]), parseIntValue(fh[1]), parseIntValue(fh[2]), parseIntValue(fh[3]), parseIntValue(fh[4]), parseIntValue(fh[5])]
795- eR(eS, fi)
796- }
797- }
798-
799-
800-func fj (fk,fl,fm) = {
801- let fn = fg(fm)
802- func fo (eX,dg) = {
803- let fp = (parseIntValue(fl[dg]) - fn[dg])
804- if ((0 > fp))
805- then throw(((((("Not enough material idx=" + toString(dg)) + ", you have ") + fl[dg]) + ", but need ") + toString(fn[dg])))
806- else (eX :+ toString(fp))
792+ let fh = [parseIntValue(fg[0]), parseIntValue(fg[1]), parseIntValue(fg[2]), parseIntValue(fg[3]), parseIntValue(fg[4]), parseIntValue(fg[5])]
793+ eQ(eR, fh)
794+ }
795+ }
796+
797+
798+func fi (fj,fk,fl) = {
799+ let fm = ff(fl)
800+ func fn (eW,dh) = {
801+ let fo = (parseIntValue(fk[dh]) - fm[dh])
802+ if ((0 > fo))
803+ then throw(((((("Not enough material idx=" + toString(dh)) + ", you have ") + fk[dh]) + ", but need ") + toString(fm[dh])))
804+ else (eW :+ toString(fo))
807805 }
808806
809- if (fk)
807+ if (fj)
810808 then {
811- let eZ = cQ
812- let fa = size(eZ)
813- let fb = nil
814- func fc (fd,fe) = if ((fe >= fa))
815- then fd
816- else fo(fd, eZ[fe])
817-
818- func ff (fd,fe) = if ((fe >= fa))
819- then fd
809+ let eY = cR
810+ let eZ = size(eY)
811+ let fa = nil
812+ func fb (fc,fd) = if ((fd >= eZ))
813+ then fc
814+ else fn(fc, eY[fd])
815+
816+ func fe (fc,fd) = if ((fd >= eZ))
817+ then fc
820818 else throw("List size exceeds 6")
821819
822- ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
823- }
824- else fl
825- }
826-
827-
828-func fq (fr,fs) = if ((fs == ""))
829- then $Tuple2(fr, false)
820+ fe(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6)
821+ }
822+ else fk
823+ }
824+
825+
826+func fp (fq,fr) = if ((fr == ""))
827+ then $Tuple2(fq, false)
830828 else {
831- func ft (eX,fu) = {
832- let fv = split(fu, ",")
833- if ((size(fv) != 2))
829+ func fs (eW,ft) = {
830+ let fu = split(ft, ",")
831+ if ((size(fu) != 2))
834832 then throw("Incorrect format, should be index,amount")
835833 else {
836- let dg = parseIntValue(fv[0])
837- if (if ((0 > dg))
834+ let dh = parseIntValue(fu[0])
835+ if (if ((0 > dh))
838836 then true
839- else (dg >= size(aY)))
837+ else (dh >= size(aX)))
840838 then throw("Unknown product idx")
841839 else {
842- let fw = parseIntValue(fv[1])
843- let fx = split(eX._1, (fv[0] + ":"))
844- if ((size(fx) != 2))
845- then throw((("You don't have " + aU[dg]) + " equipped"))
840+ let fv = parseIntValue(fu[1])
841+ let fw = split(eW._1, (fu[0] + ":"))
842+ if ((size(fw) != 2))
843+ then throw((("You don't have " + aT[dh]) + " equipped"))
846844 else {
847- let fy = fx[1]
848- let fz = if (dP(take(drop(fy, 1), 1)))
845+ let fx = fw[1]
846+ let fy = if (dN(take(drop(fx, 1), 1)))
849847 then 2
850848 else 1
851- let fA = parseIntValue(take(fy, fz))
852- let fB = drop(fy, fz)
853- let fC = if ((fA >= fw))
854- then (fA - fw)
855- else throw(((((("You equipped " + toString(fA)) + " of ") + aU[dg]) + ", but tried to use ") + toString(fw)))
856- $Tuple2(((((fx[0] + fv[0]) + ":") + toString(fC)) + fB), if (eX._2)
849+ let fz = parseIntValue(take(fx, fy))
850+ let fA = drop(fx, fy)
851+ let fB = if ((fz >= fv))
852+ then (fz - fv)
853+ else throw(((((("You equipped " + toString(fz)) + " of ") + aT[dh]) + ", but tried to use ") + toString(fv)))
854+ $Tuple2(((((fw[0] + fu[0]) + ":") + toString(fB)) + fA), if (eW._2)
857855 then true
858- else if (if ((dg >= 6))
859- then (8 >= dg)
856+ else if (if ((dh >= 6))
857+ then (8 >= dh)
860858 else false)
861- then (fC == 0)
859+ then (fB == 0)
862860 else false)
863861 }
864862 }
865863 }
866864 }
867865
868- let eZ = split(fs, "_")
869- let fa = size(eZ)
870- let fb = $Tuple2(fr, false)
871- func fc (fd,fe) = if ((fe >= fa))
872- then fd
873- else ft(fd, eZ[fe])
874-
875- func ff (fd,fe) = if ((fe >= fa))
876- then fd
866+ let eY = split(fr, "_")
867+ let eZ = size(eY)
868+ let fa = $Tuple2(fq, false)
869+ func fb (fc,fd) = if ((fd >= eZ))
870+ then fc
871+ else fs(fc, eY[fd])
872+
873+ func fe (fc,fd) = if ((fd >= eZ))
874+ then fc
877875 else throw("List size exceeds 10")
878876
879- ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
877+ fe(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
880878 }
881879
882880
883-func fD (fE) = {
884- let fF = if ((fE == ""))
881+func fC (fD) = {
882+ let fE = if ((fD == ""))
885883 then nil
886- else split_4C(fE, "_")
887- func fG (eX,cu) = {
888- let fH = (size(eX) / 8)
889- let fA = if ((size(fF) > fH))
890- then parseIntValue(fF[fH])
884+ else split_4C(fD, "_")
885+ func fF (eW,ct) = {
886+ let fG = (size(eW) / 8)
887+ let fz = if ((size(fE) > fG))
888+ then parseIntValue(fE[fG])
891889 else 0
892- (eX + toBytes(fA))
890+ (eW + toBytes(fz))
893891 }
894892
895- let eZ = aY
896- let fa = size(eZ)
897- let fb = base58''
898- func fc (fd,fe) = if ((fe >= fa))
899- then fd
900- else fG(fd, eZ[fe])
901-
902- func ff (fd,fe) = if ((fe >= fa))
903- then fd
893+ let eY = aX
894+ let eZ = size(eY)
895+ let fa = base58''
896+ func fb (fc,fd) = if ((fd >= eZ))
897+ then fc
898+ else fF(fc, eY[fd])
899+
900+ func fe (fc,fd) = if ((fd >= eZ))
901+ then fc
904902 else throw("List size exceeds 50")
905903
906- ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 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)
907- }
908-
909-
910-func fI (fJ) = {
911- func fK (eX,cu) = {
912- let fH = size(eX)
913- let fL = take(drop(fJ, (8 * fH)), 8)
914- (eX :+ toString(toInt(fL)))
904+ fe(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fa, 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)
905+ }
906+
907+
908+func fH (fI) = {
909+ func fJ (eW,ct) = {
910+ let fG = size(eW)
911+ let fK = take(drop(fI, (8 * fG)), 8)
912+ (eW :+ toString(toInt(fK)))
915913 }
916914
917915 makeString_2C({
918- let eZ = aY
919- let fa = size(eZ)
920- let fb = nil
921- func fc (fd,fe) = if ((fe >= fa))
922- then fd
923- else fK(fd, eZ[fe])
924-
925- func ff (fd,fe) = if ((fe >= fa))
926- then fd
916+ let eY = aX
917+ let eZ = size(eY)
918+ let fa = nil
919+ func fb (fc,fd) = if ((fd >= eZ))
920+ then fc
921+ else fJ(fc, eY[fd])
922+
923+ func fe (fc,fd) = if ((fd >= eZ))
924+ then fc
927925 else throw("List size exceeds 50")
928926
929- ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 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)
927+ fe(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fa, 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)
930928 }, "_")
931929 }
932930
933931
934-func fM (fN,fO) = {
935- func fP (eX,fH) = {
936- let fQ = if ((size(fN) > (7 + fH)))
937- then fN[(7 + fH)]
932+func fL (fM,fN) = {
933+ func fO (eW,fG) = {
934+ let fP = if ((size(fM) > (7 + fG)))
935+ then fM[(7 + fG)]
938936 else 0
939- if ((parseIntValue(fO[fH]) > (fN[fH] + fQ)))
940- then throw(("Requirement not satisfied: " + l[fH]))
937+ if ((parseIntValue(fN[fG]) > (fM[fG] + fP)))
938+ then throw(("Requirement not satisfied: " + k[fG]))
941939 else true
942940 }
943941
944- let eZ = [0, 1, 2, 3, 4, 5, 6]
945- let fa = size(eZ)
946- let fb = false
947- func fc (fd,fe) = if ((fe >= fa))
948- then fd
949- else fP(fd, eZ[fe])
950-
951- func ff (fd,fe) = if ((fe >= fa))
952- then fd
942+ let eY = [0, 1, 2, 3, 4, 5, 6]
943+ let eZ = size(eY)
944+ let fa = false
945+ func fb (fc,fd) = if ((fd >= eZ))
946+ then fc
947+ else fO(fc, eY[fd])
948+
949+ func fe (fc,fd) = if ((fd >= eZ))
950+ then fc
953951 else throw("List size exceeds 7")
954952
955- ff(fc(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6), 7)
956- }
957-
958-
959-func fR (fS,fF,fT,fN,fU,fV) = {
960- let fv = split(fS, ":")
961- if ((size(fv) != 2))
953+ fe(fb(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6), 7)
954+ }
955+
956+
957+func fQ (fR,fE,fS,fM,fT,fU) = {
958+ let fu = split(fR, ":")
959+ if ((size(fu) != 2))
962960 then throw("Incorrect format, should be index:amount")
963- else if (if (!(fT))
964- then (size(fv[0]) != 2)
961+ else if (if (!(fS))
962+ then (size(fu[0]) != 2)
965963 else false)
966964 then throw("Product idx should be 2 digits, zero padded")
967965 else {
968- let fW = parseIntValue(fv[0])
969- let fX = parseIntValue(fv[1])
970- if (!(containsElement(aX, fW)))
971- then throw((("Product '" + aU[fW]) + "' cannot be used for land defense"))
972- else if ((0 > fX))
966+ let fV = parseIntValue(fu[0])
967+ let fW = parseIntValue(fu[1])
968+ if (!(containsElement(aW, fV)))
969+ then throw((("Product '" + aT[fV]) + "' cannot be used for land defense"))
970+ else if ((0 > fW))
973971 then throw("Count can't be negative")
974- else if ((fX > v))
975- then throw(((("Can't put more than " + toString(v)) + " of ") + aU[fW]))
976- else if ((fX == 0))
977- then $Tuple3(fF, fU, fV)
972+ else if ((fW > u))
973+ then throw(((("Can't put more than " + toString(u)) + " of ") + aT[fV]))
974+ else if ((fW == 0))
975+ then $Tuple3(fE, fT, fU)
978976 else {
979- let fY = take(fF, (8 * fW))
980- let fA = toInt(take(drop(fF, (8 * fW)), 8))
981- let fB = drop(fF, (8 * (fW + 1)))
982- let cu = split(aY[fW], "_")
983- if (if (!(fT))
984- then (fX > fA)
977+ let fX = take(fE, (8 * fV))
978+ let fz = toInt(take(drop(fE, (8 * fV)), 8))
979+ let fA = drop(fE, (8 * (fV + 1)))
980+ let ct = split(aX[fV], "_")
981+ if (if (!(fS))
982+ then (fW > fz)
985983 else false)
986- then throw(((((("You have " + toString(fA)) + " of ") + aU[fW]) + ", but tried to use ") + toString(fX)))
984+ then throw(((((("You have " + toString(fz)) + " of ") + aT[fV]) + ", but tried to use ") + toString(fW)))
987985 else {
988- let fC = if (if (!(fT))
989- then fM(fN, split(cu[bb], ","))
986+ let fB = if (if (!(fS))
987+ then fL(fM, split(ct[ba], ","))
990988 else false)
991- then (fA - fX)
992- else (fA + fX)
993- let fZ = (eN(fC, bd) - eN(fA, bd))
994- $Tuple3(((fY + toBytes(fC)) + fB), (fU + fZ), (fV - fZ))
989+ then (fz - fW)
990+ else (fz + fW)
991+ let fY = (eM(fB, bc) - eM(fz, bc))
992+ $Tuple3(((fX + toBytes(fB)) + fA), (fT + fY), (fU - fY))
995993 }
996994 }
997995 }
998996 }
999997
1000998
1001-func ga (fS,fF,fT,gb,gc,gd,fN) = {
1002- let fv = split(fS, ":")
1003- if ((size(fv) != 2))
999+func fZ (fR,fE,fS,ga,gb,gc,fM) = {
1000+ let fu = split(fR, ":")
1001+ if ((size(fu) != 2))
10041002 then throw("Incorrect format, should be index:amount")
1005- else if (if (!(fT))
1006- then (size(fv[0]) != 2)
1003+ else if (if (!(fS))
1004+ then (size(fu[0]) != 2)
10071005 else false)
10081006 then throw("Product idx should be 2 digits, zero padded")
10091007 else {
1010- let fW = parseIntValue(fv[0])
1011- let fX = parseIntValue(fv[1])
1012- if (if ((0 > fW))
1008+ let fV = parseIntValue(fu[0])
1009+ let fW = parseIntValue(fu[1])
1010+ if (if ((0 > fV))
10131011 then true
1014- else (fW >= size(aY)))
1012+ else (fV >= size(aX)))
10151013 then throw("Unknown product idx")
1016- else if ((0 > fX))
1014+ else if ((0 > fW))
10171015 then throw("Count can't be negative")
1018- else if ((fX > v))
1019- then throw(((("Can't put more than " + toString(v)) + " of ") + aU[fW]))
1020- else if ((fX == 0))
1021- then $Tuple2(fF, false)
1016+ else if ((fW > u))
1017+ then throw(((("Can't put more than " + toString(u)) + " of ") + aT[fV]))
1018+ else if ((fW == 0))
1019+ then $Tuple2(fE, false)
10221020 else {
1023- let fY = take(fF, (8 * fW))
1024- let fA = toInt(take(drop(fF, (8 * fW)), 8))
1025- let fB = drop(fF, (8 * (fW + 1)))
1026- let cu = split(aY[fW], "_")
1027- if (if (!(fT))
1028- then (fX > fA)
1021+ let fX = take(fE, (8 * fV))
1022+ let fz = toInt(take(drop(fE, (8 * fV)), 8))
1023+ let fA = drop(fE, (8 * (fV + 1)))
1024+ let ct = split(aX[fV], "_")
1025+ if (if (!(fS))
1026+ then (fW > fz)
10291027 else false)
1030- then throw(((((("You have " + toString(fA)) + " of ") + aU[fW]) + ", but tried to use ") + toString(fX)))
1028+ then throw(((((("You have " + toString(fz)) + " of ") + aT[fV]) + ", but tried to use ") + toString(fW)))
10311029 else {
1032- let ge = if (if (!(fT))
1033- then fM(fN, split(cu[bb], ","))
1030+ let gd = if (if (!(fS))
1031+ then fL(fM, split(ct[ba], ","))
10341032 else false)
10351033 then {
1036- let gf = cu[bc]
1037- if ((gf == ""))
1034+ let ge = ct[bb]
1035+ if ((ge == ""))
10381036 then throw("Item cannot be equipped")
10391037 else {
1040- let gg = parseIntValue(gf)
1041- let gh = (gg / 100)
1042- if ((gb != gh))
1038+ let gf = parseIntValue(ge)
1039+ let gg = (gf / 100)
1040+ if ((ga != gg))
10431041 then throw("Segment incompatible")
10441042 else {
1045- let gi = ((gg % 100) / 10)
1046- if ((gc != gi))
1043+ let gh = ((gf % 100) / 10)
1044+ if ((gb != gh))
10471045 then throw("Slot incompatible")
10481046 else {
1049- let gj = (gg % 10)
1050- if (if ((gd != 0))
1051- then (gj > 1)
1047+ let gi = (gf % 10)
1048+ if (if ((gc != 0))
1049+ then (gi > 1)
10521050 else false)
10531051 then throw("Big items should occupy slot 0")
1054- else (gj > 1)
1052+ else (gi > 1)
10551053 }
10561054 }
10571055 }
10581056 }
10591057 else false
1060- $Tuple2(((fY + toBytes((fA + (if (fT)
1061- then fX
1062- else -(fX))))) + fB), ge)
1058+ $Tuple2(((fX + toBytes((fz + (if (fS)
1059+ then fW
1060+ else -(fW))))) + fA), gd)
10631061 }
10641062 }
10651063 }
10661064 }
10671065
10681066
1069-func gk (gl,gm,fT,gb,gc,gn) = if ((gl != ""))
1067+func gj (gk,gl,fS,ga,gb,gm) = if ((gk != ""))
10701068 then {
1071- let go = split(gl, ",")
1072- if ((size(go) > u))
1069+ let gn = split(gk, ",")
1070+ if ((size(gn) > t))
10731071 then throw("Wrong slots format")
10741072 else {
1075- let gp = go[0]
1076- let gq = if ((size(go) > 1))
1077- then go[1]
1073+ let go = gn[0]
1074+ let gp = if ((size(gn) > 1))
1075+ then gn[1]
10781076 else ""
1079- if (if ((gp == ""))
1080- then (gq == "")
1077+ if (if ((go == ""))
1078+ then (gp == "")
10811079 else false)
1082- then gm
1080+ then gl
10831081 else {
1084- let gr = if ((gp != ""))
1085- then ga(gp, gm, fT, gb, gc, 0, gn)
1086- else $Tuple2(gm, false)
1087- if ((gq != ""))
1088- then if (gr._2)
1082+ let gq = if ((go != ""))
1083+ then fZ(go, gl, fS, ga, gb, 0, gm)
1084+ else $Tuple2(gl, false)
1085+ if ((gp != ""))
1086+ then if (gq._2)
10891087 then throw("Big item already occupies slot")
1090- else ga(gq, gr._1, fT, gb, gc, 1, gn)._1
1091- else gr._1
1088+ else fZ(gp, gq._1, fS, ga, gb, 1, gm)._1
1089+ else gq._1
10921090 }
10931091 }
10941092 }
1095- else gm
1096-
1097-
1098-func gs (gt,gu,fT,gn) = {
1099- func gb (eX,gv) = {
1100- let fH = eX._1
1101- let gc = split(gv, ";")
1102- if ((size(gc) != t))
1093+ else gl
1094+
1095+
1096+func gr (gs,gt,fS,gm) = {
1097+ func ga (eW,gu) = {
1098+ let fG = eW._1
1099+ let gb = split(gu, ";")
1100+ if ((size(gb) != s))
11031101 then throw("Wrong segment format")
11041102 else {
1105- let gw = gc[0]
1106- let gx = gc[1]
1107- if (if ((gw == ""))
1108- then (gx == "")
1103+ let gv = gb[0]
1104+ let gw = gb[1]
1105+ if (if ((gv == ""))
1106+ then (gw == "")
11091107 else false)
1110- then $Tuple2((fH + 1), eX._2)
1108+ then $Tuple2((fG + 1), eW._2)
11111109 else {
1112- let gy = gk(gw, eX._2, fT, fH, 0, gn)
1113- $Tuple2((fH + 1), gk(gx, gy, fT, fH, 1, gn))
1110+ let gx = gj(gv, eW._2, fS, fG, 0, gm)
1111+ $Tuple2((fG + 1), gj(gw, gx, fS, fG, 1, gm))
11141112 }
11151113 }
11161114 }
11171115
1118-( let eZ = gt
1119- let fa = size(eZ)
1120- let fb = $Tuple2(0, gu)
1121- func fc (fd,fe) = if ((fe >= fa))
1122- then fd
1123- else gb(fd, eZ[fe])
1124-
1125- func ff (fd,fe) = if ((fe >= fa))
1126- then fd
1116+( let eY = gs
1117+ let eZ = size(eY)
1118+ let fa = $Tuple2(0, gt)
1119+ func fb (fc,fd) = if ((fd >= eZ))
1120+ then fc
1121+ else ga(fc, eY[fd])
1122+
1123+ func fe (fc,fd) = if ((fd >= eZ))
1124+ then fc
11271125 else throw("List size exceeds 6")
11281126
1129- ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6))._2
1130- }
1131-
1132-
1133-func gz (gt,gu,fU,fV,fT,fN) = if ((3 > size(gt)))
1127+ fe(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6))._2
1128+ }
1129+
1130+
1131+func gy (gs,gt,fT,fU,fS,fM) = if ((3 > size(gs)))
11341132 then throw("At least duck, mines and traps parts are required")
11351133 else {
1136- func gb (eX,gv) = {
1137- let fH = eX._1
1138- if ((fH == 0))
1139- then $Tuple4((fH + 1), eX._2, eX._3, eX._4)
1134+ func ga (eW,gu) = {
1135+ let fG = eW._1
1136+ if ((fG == 0))
1137+ then $Tuple4((fG + 1), eW._2, eW._3, eW._4)
11401138 else {
1141- let gA = fR(gv, eX._2, fT, fN, eX._3, eX._4)
1142- $Tuple4((fH + 1), gA._1, gA._2, gA._3)
1139+ let gz = fQ(gu, eW._2, fS, fM, eW._3, eW._4)
1140+ $Tuple4((fG + 1), gz._1, gz._2, gz._3)
11431141 }
11441142 }
11451143
1146- let gB = {
1147- let eZ = gt
1148- let fa = size(eZ)
1149- let fb = $Tuple4(0, gu, fU, fV)
1150- func fc (fd,fe) = if ((fe >= fa))
1151- then fd
1152- else gb(fd, eZ[fe])
1153-
1154- func ff (fd,fe) = if ((fe >= fa))
1155- then fd
1144+ let gA = {
1145+ let eY = gs
1146+ let eZ = size(eY)
1147+ let fa = $Tuple4(0, gt, fT, fU)
1148+ func fb (fc,fd) = if ((fd >= eZ))
1149+ then fc
1150+ else ga(fc, eY[fd])
1151+
1152+ func fe (fc,fd) = if ((fd >= eZ))
1153+ then fc
11561154 else throw("List size exceeds 10")
11571155
1158- ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1159- }
1160- $Tuple3(gB._2, gB._3, gB._4)
1156+ fe(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1157+ }
1158+ $Tuple3(gA._2, gA._3, gA._4)
11611159 }
11621160
11631161
1164-func gC (C) = {
1165- let gD = H(C)
1166- let gE = split(valueOrElse(getString(gD), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1167- let gF = gs(gE, eg, true, nil)
1168- let gG = split(gE[r], ";")[1]
1169- let as = if ((gG == ""))
1162+func gB (B) = {
1163+ let gC = G(B)
1164+ let gD = split(valueOrElse(getString(gC), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1165+ let gE = gr(gD, ef, true, nil)
1166+ let gF = split(gD[q], ";")[1]
1167+ let ar = if ((gF == ""))
11701168 then 0
11711169 else {
1172- let gH = split(gG, ",")[0]
1173- if ((gH == ""))
1170+ let gG = split(gF, ",")[0]
1171+ if ((gG == ""))
11741172 then 0
11751173 else {
1176- let fS = split(gH, ":")
1177- let dg = fS[0]
1178- let gI = fS[1]
1179- if (if (if (if (if ((dg == "06"))
1174+ let fR = split(gG, ":")
1175+ let dh = fR[0]
1176+ let gH = fR[1]
1177+ if (if (if (if (if ((dh == "06"))
11801178 then true
1181- else (dg == "07"))
1179+ else (dh == "07"))
11821180 then true
1183- else (dg == "08"))
1184- then (gI != "")
1181+ else (dh == "08"))
1182+ then (gH != "")
11851183 else false)
1186- then (parseIntValue(gI) > 0)
1184+ then (parseIntValue(gH) > 0)
11871185 else false)
1188- then parseIntValue(split(aY[parseIntValue(dg)], "_")[ba])
1186+ then parseIntValue(split(aX[parseIntValue(dh)], "_")[aZ])
11891187 else 0
11901188 }
11911189 }
1192- let gn = aq(this, C, as, true)
1193- let gJ = gs(gE, gF, false, gn)
1194- (gJ == gJ)
1195- }
1196-
1197-
1198-func gK (gL,gM,gN,gO) = if ((size(gL) != aJ))
1190+ let gm = ap(this, B, ar, true)
1191+ let gI = gr(gD, gE, false, gm)
1192+ (gI == gI)
1193+ }
1194+
1195+
1196+func gJ (gK,gL,gM,gN) = if ((size(gK) != aI))
11991197 then throw("Wrong proportions data")
12001198 else {
1201- func gP (eX,gQ) = {
1202- let fp = (parseIntValue(gL[gQ]) + ((gO * gM[gQ]) * gN))
1203- if ((0 > fp))
1204- then throw(((((((("Panic! Pieces of type=" + toString(gQ)) + ", sign=") + toString(gO)) + ", terrainCounts[i]=") + toString(gM[gQ])) + ", landSizeIndex=") + toString(gN)))
1205- else (eX :+ toString(fp))
1206- }
1207-
1208- let eZ = cQ
1209- let fa = size(eZ)
1210- let fb = nil
1211- func fc (fd,fe) = if ((fe >= fa))
1212- then fd
1213- else gP(fd, eZ[fe])
1214-
1215- func ff (fd,fe) = if ((fe >= fa))
1216- then fd
1199+ func gO (eW,gP) = {
1200+ let fo = (parseIntValue(gK[gP]) + ((gN * gL[gP]) * gM))
1201+ if ((0 > fo))
1202+ then throw(((((((("Panic! Pieces of type=" + toString(gP)) + ", sign=") + toString(gN)) + ", terrainCounts[i]=") + toString(gL[gP])) + ", landSizeIndex=") + toString(gM)))
1203+ else (eW :+ toString(fo))
1204+ }
1205+
1206+ let eY = cR
1207+ let eZ = size(eY)
1208+ let fa = nil
1209+ func fb (fc,fd) = if ((fd >= eZ))
1210+ then fc
1211+ else gO(fc, eY[fd])
1212+
1213+ func fe (fc,fd) = if ((fd >= eZ))
1214+ then fc
12171215 else throw("List size exceeds 6")
12181216
1219- ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
1217+ fe(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6)
12201218 }
12211219
12221220
1223-func gR (gM,gN,gO) = {
1224- let gL = split(valueOrElse(getString(dx()), "0_0_0_0_0_0"), "_")
1225- makeString(gK(gL, gM, gN, gO), "_")
1226- }
1227-
1228-
1229-func gS (gT) = [(size(split(gT, "A")) - 1), (size(split(gT, "B")) - 1), (size(split(gT, "C")) - 1), (size(split(gT, "D")) - 1), (size(split(gT, "E")) - 1), (size(split(gT, "F")) - 1)]
1230-
1231-
1232-func gU (gV,gM,gW,gN,gX) = {
1233- func gY (eX,gQ) = {
1234- let gZ = ((fraction(gW, gX, a) * gM[gQ]) * gN)
1235- (eX :+ toString((parseIntValue(gV[gQ]) + gZ)))
1221+func gQ (gL,gM,gN) = {
1222+ let gK = split(valueOrElse(getString(dy()), "0_0_0_0_0_0"), "_")
1223+ makeString(gJ(gK, gL, gM, gN), "_")
1224+ }
1225+
1226+
1227+func gR (gS) = [(size(split(gS, "A")) - 1), (size(split(gS, "B")) - 1), (size(split(gS, "C")) - 1), (size(split(gS, "D")) - 1), (size(split(gS, "E")) - 1), (size(split(gS, "F")) - 1)]
1228+
1229+
1230+func gT (gU,gL,gV,gM,gW) = {
1231+ func gX (eW,gP) = {
1232+ let gY = ((fraction(gV, gW, a) * gL[gP]) * gM)
1233+ (eW :+ toString((parseIntValue(gU[gP]) + gY)))
12361234 }
12371235
1238- let fi = {
1239- let eZ = cQ
1240- let fa = size(eZ)
1241- let fb = nil
1242- func fc (fd,fe) = if ((fe >= fa))
1243- then fd
1244- else gY(fd, eZ[fe])
1245-
1246- func ff (fd,fe) = if ((fe >= fa))
1247- then fd
1236+ let fh = {
1237+ let eY = cR
1238+ let eZ = size(eY)
1239+ let fa = nil
1240+ func fb (fc,fd) = if ((fd >= eZ))
1241+ then fc
1242+ else gX(fc, eY[fd])
1243+
1244+ func fe (fc,fd) = if ((fd >= eZ))
1245+ then fc
12481246 else throw("List size exceeds 6")
12491247
1250- ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
1248+ fe(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6)
12511249 }
1252- makeString(fi, "_")
1253- }
1254-
1255-
1256-func ha (gM,gW,gN,gX) = {
1257- func gY (eX,gQ) = {
1258- let gZ = ((fraction(gW, gX, a) * gM[gQ]) * gN)
1259- $Tuple2((eX._1 :+ gZ), (eX._2 + gZ))
1250+ makeString(fh, "_")
1251+ }
1252+
1253+
1254+func gZ (gL,gV,gM,gW) = {
1255+ func gX (eW,gP) = {
1256+ let gY = ((fraction(gV, gW, a) * gL[gP]) * gM)
1257+ $Tuple2((eW._1 :+ gY), (eW._2 + gY))
12601258 }
12611259
1262- let eZ = cQ
1263- let fa = size(eZ)
1264- let fb = $Tuple2(nil, 0)
1265- func fc (fd,fe) = if ((fe >= fa))
1266- then fd
1267- else gY(fd, eZ[fe])
1268-
1269- func ff (fd,fe) = if ((fe >= fa))
1270- then fd
1260+ let eY = cR
1261+ let eZ = size(eY)
1262+ let fa = $Tuple2(nil, 0)
1263+ func fb (fc,fd) = if ((fd >= eZ))
1264+ then fc
1265+ else gX(fc, eY[fd])
1266+
1267+ func fe (fc,fd) = if ((fd >= eZ))
1268+ then fc
12711269 else throw("List size exceeds 6")
12721270
1273- ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
1274- }
1275-
1276-
1277-func hb (hc,hd,he,hf) = {
1278- let hg = he._1
1279- let hh = he._2
1280- if ((hh == 0))
1281- then $Tuple2(makeString(hc, "_"), makeString(hd, "_"))
1282- else if ((hf >= hh))
1271+ fe(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6)
1272+ }
1273+
1274+
1275+func ha (hb,hc,hd,he) = {
1276+ let hf = hd._1
1277+ let hg = hd._2
1278+ if ((hg == 0))
1279+ then $Tuple2(makeString(hb, "_"), makeString(hc, "_"))
1280+ else if ((he >= hg))
12831281 then {
1284- func hi (eX,gQ) = (eX :+ toString((parseIntValue(hc[gQ]) + hg[gQ])))
1285-
1286- let fi = {
1287- let eZ = cQ
1288- let fa = size(eZ)
1289- let fb = nil
1290- func fc (fd,fe) = if ((fe >= fa))
1291- then fd
1292- else hi(fd, eZ[fe])
1293-
1294- func ff (fd,fe) = if ((fe >= fa))
1295- then fd
1282+ func hh (eW,gP) = (eW :+ toString((parseIntValue(hb[gP]) + hf[gP])))
1283+
1284+ let fh = {
1285+ let eY = cR
1286+ let eZ = size(eY)
1287+ let fa = nil
1288+ func fb (fc,fd) = if ((fd >= eZ))
1289+ then fc
1290+ else hh(fc, eY[fd])
1291+
1292+ func fe (fc,fd) = if ((fd >= eZ))
1293+ then fc
12961294 else throw("List size exceeds 6")
12971295
1298- ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
1296+ fe(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6)
12991297 }
1300- $Tuple2(makeString(fi, "_"), makeString(hd, "_"))
1298+ $Tuple2(makeString(fh, "_"), makeString(hc, "_"))
13011299 }
13021300 else {
1303- func hj (eX,gQ) = {
1304- let hk = fraction(hg[gQ], hf, hh)
1305- $Tuple2((eX._1 :+ toString((parseIntValue(hc[gQ]) + hk))), (eX._2 :+ toString(((parseIntValue(hd[gQ]) + hg[gQ]) - hk))))
1301+ func hi (eW,gP) = {
1302+ let hj = fraction(hf[gP], he, hg)
1303+ $Tuple2((eW._1 :+ toString((parseIntValue(hb[gP]) + hj))), (eW._2 :+ toString(((parseIntValue(hc[gP]) + hf[gP]) - hj))))
13061304 }
13071305
1308- let fi = {
1309- let eZ = cQ
1310- let fa = size(eZ)
1311- let fb = $Tuple2(nil, nil)
1312- func fc (fd,fe) = if ((fe >= fa))
1313- then fd
1314- else hj(fd, eZ[fe])
1315-
1316- func ff (fd,fe) = if ((fe >= fa))
1317- then fd
1306+ let fh = {
1307+ let eY = cR
1308+ let eZ = size(eY)
1309+ let fa = $Tuple2(nil, nil)
1310+ func fb (fc,fd) = if ((fd >= eZ))
1311+ then fc
1312+ else hi(fc, eY[fd])
1313+
1314+ func fe (fc,fd) = if ((fd >= eZ))
1315+ then fc
13181316 else throw("List size exceeds 6")
13191317
1320- ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
1318+ fe(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6)
13211319 }
1322- $Tuple2(makeString(fi._1, "_"), makeString(fi._2, "_"))
1320+ $Tuple2(makeString(fh._1, "_"), makeString(fh._2, "_"))
13231321 }
13241322 }
13251323
13261324
1327-func hl (hm) = if ((hm >= toBigInt(0)))
1328- then hm
1329- else -(hm)
1330-
1331-
1332-let hn = [[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]]
1333-
1334-func ho (dG,hp) = {
1335- let hq = toInt((dG % ep))
1336- let hr = if ((hp[0] > hq))
1325+func hk (hl) = if ((hl >= toBigInt(0)))
1326+ then hl
1327+ else -(hl)
1328+
1329+
1330+let hm = [[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]]
1331+
1332+func hn (dH,ho) = {
1333+ let hp = toInt((dH % eo))
1334+ let hq = if ((ho[0] > hp))
13371335 then "A"
1338- else if ((hp[1] > hq))
1336+ else if ((ho[1] > hp))
13391337 then "B"
1340- else if ((hp[2] > hq))
1338+ else if ((ho[2] > hp))
13411339 then "C"
1342- else if ((hp[3] > hq))
1340+ else if ((ho[3] > hp))
13431341 then "D"
1344- else if ((hp[4] > hq))
1342+ else if ((ho[4] > hp))
13451343 then "E"
13461344 else "F"
1347- hr
1348- }
1349-
1350-
1351-func hs (ht,hu) = {
1352- let hv = hn[hu]
1353- func hw (eX,eY) = $Tuple2((((((eX._1 + ho(eX._2, hv)) + ho((eX._2 / ep), hv)) + ho((eX._2 / eq), hv)) + ho((eX._2 / er), hv)) + ho((eX._2 / es), hv)), (eX._2 / et))
1354-
1355- let gB = {
1356- let eZ = [1, 2, 3, 4, 5]
1357- let fa = size(eZ)
1358- let fb = $Tuple2("", (ht / eo))
1359- func fc (fd,fe) = if ((fe >= fa))
1360- then fd
1361- else hw(fd, eZ[fe])
1362-
1363- func ff (fd,fe) = if ((fe >= fa))
1364- then fd
1345+ hq
1346+ }
1347+
1348+
1349+func hr (hs,ht) = {
1350+ let hu = hm[ht]
1351+ func hv (eW,eX) = $Tuple2((((((eW._1 + hn(eW._2, hu)) + hn((eW._2 / eo), hu)) + hn((eW._2 / ep), hu)) + hn((eW._2 / eq), hu)) + hn((eW._2 / er), hu)), (eW._2 / es))
1352+
1353+ let gA = {
1354+ let eY = [1, 2, 3, 4, 5]
1355+ let eZ = size(eY)
1356+ let fa = $Tuple2("", (hs / en))
1357+ func fb (fc,fd) = if ((fd >= eZ))
1358+ then fc
1359+ else hv(fc, eY[fd])
1360+
1361+ func fe (fc,fd) = if ((fd >= eZ))
1362+ then fc
13651363 else throw("List size exceeds 5")
13661364
1367- ff(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5)
1365+ fe(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5)
13681366 }
1369- gB._1
1370- }
1371-
1372-
1373-let hx = [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]
1374-
1375-let hy = ["A", "B", "C", "D", "E", "F"]
1376-
1377-func hz (hA,gN) = {
1378- func hB (eX,dE) = {
1379- let fH = eX._2
1380- let hC = parseIntValue(dE)
1381- let hm = if ((hC == 0))
1367+ gA._1
1368+ }
1369+
1370+
1371+let hw = [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]
1372+
1373+let hx = ["A", "B", "C", "D", "E", "F"]
1374+
1375+func hy (hz,gM) = {
1376+ func hA (eW,dF) = {
1377+ let fG = eW._2
1378+ let hB = parseIntValue(dF)
1379+ let hl = if ((hB == 0))
13821380 then 0
1383- else if ((hC >= (4 * gN)))
1384- then (hC / gN)
1385- else if ((hC > (3 * gN)))
1381+ else if ((hB >= (4 * gM)))
1382+ then (hB / gM)
1383+ else if ((hB > (3 * gM)))
13861384 then 3
1387- else (((hC - 1) / gN) + 1)
1388- $Tuple3((eX._1 :+ hm), (eX._2 + 1), (eX._3 + hm))
1385+ else (((hB - 1) / gM) + 1)
1386+ $Tuple3((eW._1 :+ hl), (eW._2 + 1), (eW._3 + hl))
13891387 }
13901388
1391- let gB = {
1392- let eZ = hA
1393- let fa = size(eZ)
1394- let fb = $Tuple3(nil, 0, 0)
1395- func fc (fd,fe) = if ((fe >= fa))
1396- then fd
1397- else hB(fd, eZ[fe])
1398-
1399- func ff (fd,fe) = if ((fe >= fa))
1400- then fd
1389+ let gA = {
1390+ let eY = hz
1391+ let eZ = size(eY)
1392+ let fa = $Tuple3(nil, 0, 0)
1393+ func fb (fc,fd) = if ((fd >= eZ))
1394+ then fc
1395+ else hA(fc, eY[fd])
1396+
1397+ func fe (fc,fd) = if ((fd >= eZ))
1398+ then fc
14011399 else throw("List size exceeds 6")
14021400
1403- ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
1401+ fe(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6)
14041402 }
1405- let hD = gB._1
1406- let hE = value(indexOf(hD, max(hD)))
1407- let hF = (gB._3 - 25)
1408- func hG (eX,dg) = {
1409- let dL = if ((dg == hE))
1410- then (hD[dg] - hF)
1411- else hD[dg]
1412- let dW = if ((dL == 0))
1403+ let hC = gA._1
1404+ let hD = value(indexOf(hC, max(hC)))
1405+ let hE = (gA._3 - 25)
1406+ func hF (eW,dh) = {
1407+ let dR = if ((dh == hD))
1408+ then (hC[dh] - hE)
1409+ else hC[dh]
1410+ let dV = if ((dR == 0))
14131411 then nil
1414- else split(drop(toString(pow(10, 0, dL, 0, 0, DOWN)), 1), "")
1415- let gg = hy[dg]
1416- func hH (hI,hJ) = (hI :+ gg)
1417-
1418- let hK = {
1419- let eZ = dW
1420- let fa = size(eZ)
1421- let fb = nil
1422- func hL (fd,fe) = if ((fe >= fa))
1423- then fd
1424- else hH(fd, eZ[fe])
1425-
1426- func hM (fd,fe) = if ((fe >= fa))
1427- then fd
1412+ else split(drop(toString(pow(10, 0, dR, 0, 0, DOWN)), 1), "")
1413+ let gf = hx[dh]
1414+ func hG (hH,hI) = (hH :+ gf)
1415+
1416+ let hJ = {
1417+ let eY = dV
1418+ let eZ = size(eY)
1419+ let fa = nil
1420+ func hK (fc,fd) = if ((fd >= eZ))
1421+ then fc
1422+ else hG(fc, eY[fd])
1423+
1424+ func hL (fc,fd) = if ((fd >= eZ))
1425+ then fc
14281426 else throw("List size exceeds 25")
14291427
1430- hM(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(fb, 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)
1431- }
1432- (eX ++ hK)
1428+ hL(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(fa, 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)
1429+ }
1430+ (eW ++ hJ)
14331431 }
14341432
1435- let fi = {
1436- let eZ = cQ
1437- let fa = size(eZ)
1438- let fb = nil
1439- func hL (fd,fe) = if ((fe >= fa))
1440- then fd
1441- else hG(fd, eZ[fe])
1442-
1443- func hM (fd,fe) = if ((fe >= fa))
1444- then fd
1433+ let fh = {
1434+ let eY = cR
1435+ let eZ = size(eY)
1436+ let fa = nil
1437+ func hK (fc,fd) = if ((fd >= eZ))
1438+ then fc
1439+ else hF(fc, eY[fd])
1440+
1441+ func hL (fc,fd) = if ((fd >= eZ))
1442+ then fc
14451443 else throw("List size exceeds 6")
14461444
1447- hM(hL(hL(hL(hL(hL(hL(fb, 0), 1), 2), 3), 4), 5), 6)
1445+ hL(hK(hK(hK(hK(hK(hK(fa, 0), 1), 2), 3), 4), 5), 6)
14481446 }
1449- func hN (eX,fH) = (eX + fi[fH])
1450-
1451- let eZ = hx
1452- let fa = size(eZ)
1453- let fb = ""
1454- func hO (fd,fe) = if ((fe >= fa))
1455- then fd
1456- else hN(fd, eZ[fe])
1457-
1458- func hP (fd,fe) = if ((fe >= fa))
1459- then fd
1447+ func hM (eW,fG) = (eW + fh[fG])
1448+
1449+ let eY = hw
1450+ let eZ = size(eY)
1451+ let fa = ""
1452+ func hN (fc,fd) = if ((fd >= eZ))
1453+ then fc
1454+ else hM(fc, eY[fd])
1455+
1456+ func hO (fc,fd) = if ((fd >= eZ))
1457+ then fc
14601458 else throw("List size exceeds 25")
14611459
1462- hP(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(fb, 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)
1463- }
1464-
1465-
1466-func hQ (hR) = {
1467- let gA = split(valueOrElse(getString(hR), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1468-[toString(valueOrElse(parseInt(gA[bn]), 0)), if ((size(split(gA[bo], "_")) == aJ))
1469- then gA[bo]
1470- else "0_0_0_0_0_0", if ((size(split(gA[bp], "_")) == aJ))
1471- then gA[bp]
1472- else "0_0_0_0_0_0", gA[bq]]
1473- }
1474-
1475-
1476-func hS (hT) = {
1477- let fv = split(hT, "_")
1478- ((aM * (parseIntValue(fv[1]) + 1)) * parseIntValue(fv[0]))
1479- }
1480-
1481-
1482-func hU (hV) = {
1483- let hW = hV[bh]
1484- func hX (eX,hY) = (eX + parseIntValue(hY))
1485-
1486- func hZ (eX,hY) = {
1487- let dg = eX._1
1488- let eQ = (((parseIntValue(hY) + bd) - 1) / bd)
1489- $Tuple2((dg + 1), (eX._2 + (eQ * cK)))
1460+ hO(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(fa, 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)
1461+ }
1462+
1463+
1464+func hP (hQ) = {
1465+ let gz = split(valueOrElse(getString(hQ), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1466+[toString(valueOrElse(parseInt(gz[bm]), 0)), if ((size(split(gz[bn], "_")) == aI))
1467+ then gz[bn]
1468+ else "0_0_0_0_0_0", if ((size(split(gz[bo], "_")) == aI))
1469+ then gz[bo]
1470+ else "0_0_0_0_0_0", gz[bp]]
1471+ }
1472+
1473+
1474+func hR (hS) = {
1475+ let fu = split(hS, "_")
1476+ ((aL * (parseIntValue(fu[1]) + 1)) * parseIntValue(fu[0]))
1477+ }
1478+
1479+
1480+func hT (hU) = {
1481+ let hV = hU[bg]
1482+ func hW (eW,hX) = (eW + parseIntValue(hX))
1483+
1484+ func hY (eW,hX) = {
1485+ let dh = eW._1
1486+ let eP = (((parseIntValue(hX) + bc) - 1) / bc)
1487+ $Tuple2((dh + 1), (eW._2 + (eP * cL)))
14901488 }
14911489
1490+ let hZ = {
1491+ let eY = split(hU[be], "_")
1492+ let eZ = size(eY)
1493+ let fa = 0
1494+ func fb (fc,fd) = if ((fd >= eZ))
1495+ then fc
1496+ else hW(fc, eY[fd])
1497+
1498+ func fe (fc,fd) = if ((fd >= eZ))
1499+ then fc
1500+ else throw("List size exceeds 6")
1501+
1502+ fe(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6)
1503+ }
14921504 let ia = {
1493- let eZ = split(hV[bf], "_")
1494- let fa = size(eZ)
1495- let fb = 0
1496- func fc (fd,fe) = if ((fe >= fa))
1497- then fd
1498- else hX(fd, eZ[fe])
1499-
1500- func ff (fd,fe) = if ((fe >= fa))
1501- then fd
1505+ let eY = split(hU[bf], "_")
1506+ let eZ = size(eY)
1507+ let fa = 0
1508+ func hK (fc,fd) = if ((fd >= eZ))
1509+ then fc
1510+ else hW(fc, eY[fd])
1511+
1512+ func hL (fc,fd) = if ((fd >= eZ))
1513+ then fc
15021514 else throw("List size exceeds 6")
15031515
1504- ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
1516+ hL(hK(hK(hK(hK(hK(hK(fa, 0), 1), 2), 3), 4), 5), 6)
15051517 }
1506- let ib = {
1507- let eZ = split(hV[bg], "_")
1508- let fa = size(eZ)
1509- let fb = 0
1510- func hL (fd,fe) = if ((fe >= fa))
1511- then fd
1512- else hX(fd, eZ[fe])
1513-
1514- func hM (fd,fe) = if ((fe >= fa))
1515- then fd
1516- else throw("List size exceeds 6")
1517-
1518- hM(hL(hL(hL(hL(hL(hL(fb, 0), 1), 2), 3), 4), 5), 6)
1519- }
1520- let ic = if ((hW == ""))
1518+ let ib = if ((hV == ""))
15211519 then 0
1522- else ( let eZ = split_4C(hW, "_")
1523- let fa = size(eZ)
1524- let fb = $Tuple2(0, 0)
1525- func hO (fd,fe) = if ((fe >= fa))
1526- then fd
1527- else hZ(fd, eZ[fe])
1528-
1529- func hP (fd,fe) = if ((fe >= fa))
1530- then fd
1520+ else ( let eY = split_4C(hV, "_")
1521+ let eZ = size(eY)
1522+ let fa = $Tuple2(0, 0)
1523+ func hN (fc,fd) = if ((fd >= eZ))
1524+ then fc
1525+ else hY(fc, eY[fd])
1526+
1527+ func hO (fc,fd) = if ((fd >= eZ))
1528+ then fc
15311529 else throw("List size exceeds 50")
15321530
1533- hP(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(fb, 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
1534- ((ia + ib) + ic)
1535- }
1536-
1537-
1538-func id (ie,if,ig) = {
1539- let hT = ((toString(if) + "_") + toString(ig))
1540- let ih = hS(hT)
1541- let ii = valueOrElse(getString(ie), (hT + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1542- let ij = split_4C(ii, ":")
1543- let ik = hU(ij)
1544- let il = if ((5 > size(ij)))
1545- then makeString(["0", toString(ik), toString((ih - ik)), toString(ih)], "_")
1531+ hO(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(fa, 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
1532+ ((hZ + ia) + ib)
1533+ }
1534+
1535+
1536+func ic (id,ie,if) = {
1537+ let hS = ((toString(ie) + "_") + toString(if))
1538+ let ig = hR(hS)
1539+ let ih = valueOrElse(getString(id), (hS + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1540+ let ii = split_4C(ih, ":")
1541+ let ij = hT(ii)
1542+ let ik = if ((5 > size(ii)))
1543+ then makeString(["0", toString(ij), toString((ig - ij)), toString(ig)], "_")
15461544 else {
1547- let im = split(ij[bi], "_")
1548- let in = parseIntValue(im[bj])
1549- let io = if ((size(im) > 1))
1550- then parseIntValue(im[bk])
1551- else ik
1552- makeString([toString(in), toString(io), toString(((ih - in) - io)), toString(ih)], "_")
1553- }
1554-[ij[be], if ((size(split(ij[bf], "_")) == aJ))
1555- then ij[bf]
1556- else "0_0_0_0_0_0", if ((size(split(ij[bg], "_")) == aJ))
1557- then ij[bg]
1558- else "0_0_0_0_0_0", ij[bh], il]
1559- }
1560-
1561-
1562-func ip (hV) = {
1563- let iq = hU(hV)
1564- let ir = parseIntValue(split(hV[bi], "_")[bj])
1565- ((hS(hV[be]) - iq) - ir)
1566- }
1567-
1568-
1569-func is (it,hV,iu) = if ((size(it) != 3))
1545+ let il = split(ii[bh], "_")
1546+ let im = parseIntValue(il[bi])
1547+ let in = if ((size(il) > 1))
1548+ then parseIntValue(il[bj])
1549+ else ij
1550+ makeString([toString(im), toString(in), toString(((ig - im) - in)), toString(ig)], "_")
1551+ }
1552+[ii[bd], if ((size(split(ii[be], "_")) == aI))
1553+ then ii[be]
1554+ else "0_0_0_0_0_0", if ((size(split(ii[bf], "_")) == aI))
1555+ then ii[bf]
1556+ else "0_0_0_0_0_0", ii[bg], ik]
1557+ }
1558+
1559+
1560+func io (hU) = {
1561+ let ip = hT(hU)
1562+ let iq = parseIntValue(split(hU[bh], "_")[bi])
1563+ ((hR(hU[bd]) - ip) - iq)
1564+ }
1565+
1566+
1567+func ir (is,hU,it) = if ((size(is) != 3))
15701568 then throw("cargoListStr should contain exactly 2 ':' separators")
15711569 else {
1572- let iv = split(it[0], "_")
1573- let iw = split(it[1], "_")
1574- let ix = if ((it[2] == ""))
1570+ let iu = split(is[0], "_")
1571+ let iv = split(is[1], "_")
1572+ let iw = if ((is[2] == ""))
15751573 then nil
1576- else split_4C(it[2], "_")
1577- if ((size(iv) != aJ))
1574+ else split_4C(is[2], "_")
1575+ if ((size(iu) != aI))
15781576 then throw("All 6 resources should be passed")
1579- else if ((size(iw) != aJ))
1577+ else if ((size(iv) != aI))
15801578 then throw("All 6 materials should be passed")
15811579 else {
1582- let hf = ip(hV)
1583- let iy = split(hV[bf], "_")
1584- let iz = split(hV[bg], "_")
1585- let iA = if ((hV[bh] == ""))
1580+ let he = io(hU)
1581+ let ix = split(hU[be], "_")
1582+ let iy = split(hU[bf], "_")
1583+ let iz = if ((hU[bg] == ""))
15861584 then nil
1587- else split_4C(hV[bh], "_")
1588- let hd = split(iu[bo], "_")
1589- let iB = split(iu[bp], "_")
1590- let iC = if ((iu[bq] == ""))
1585+ else split_4C(hU[bg], "_")
1586+ let hc = split(it[bn], "_")
1587+ let iA = split(it[bo], "_")
1588+ let iB = if ((it[bp] == ""))
15911589 then nil
1592- else split_4C(iu[bq], "_")
1593- func iD (eX,hY) = {
1594- let gQ = eX._1
1595- let iE = parseIntValue(hY)
1596- let iF = parseIntValue(iy[gQ])
1597- let iG = parseIntValue(hd[gQ])
1598- if ((iE == 0))
1599- then $Tuple4((gQ + 1), (eX._2 :+ iy[gQ]), (eX._3 :+ hd[gQ]), eX._4)
1600- else if ((iE > 0))
1601- then if ((iE > iG))
1602- then throw((((("Attempt to take " + hY) + " from backpack, but only ") + toString(iG)) + " available"))
1603- else $Tuple4((gQ + 1), (eX._2 :+ toString((iF + iE))), (eX._3 :+ toString((iG - iE))), (eX._4 + iE))
1604- else if ((-(iE) > iF))
1605- then throw((((("Attempt to take " + toString(-(iE))) + " from warehouse, but only ") + toString(iF)) + " available"))
1606- else $Tuple4((gQ + 1), (eX._2 :+ toString((iF + iE))), (eX._3 :+ toString((iG - iE))), (eX._4 + iE))
1590+ else split_4C(it[bp], "_")
1591+ func iC (eW,hX) = {
1592+ let gP = eW._1
1593+ let iD = parseIntValue(hX)
1594+ let iE = parseIntValue(ix[gP])
1595+ let iF = parseIntValue(hc[gP])
1596+ if ((iD == 0))
1597+ then $Tuple4((gP + 1), (eW._2 :+ ix[gP]), (eW._3 :+ hc[gP]), eW._4)
1598+ else if ((iD > 0))
1599+ then if ((iD > iF))
1600+ then throw((((("Attempt to take " + hX) + " from backpack, but only ") + toString(iF)) + " available"))
1601+ else $Tuple4((gP + 1), (eW._2 :+ toString((iE + iD))), (eW._3 :+ toString((iF - iD))), (eW._4 + iD))
1602+ else if ((-(iD) > iE))
1603+ then throw((((("Attempt to take " + toString(-(iD))) + " from warehouse, but only ") + toString(iE)) + " available"))
1604+ else $Tuple4((gP + 1), (eW._2 :+ toString((iE + iD))), (eW._3 :+ toString((iF - iD))), (eW._4 + iD))
16071605 }
16081606
1609- let fi = {
1610- let eZ = iv
1611- let fa = size(eZ)
1612- let fb = $Tuple4(0, nil, nil, 0)
1613- func fc (fd,fe) = if ((fe >= fa))
1614- then fd
1615- else iD(fd, eZ[fe])
1616-
1617- func ff (fd,fe) = if ((fe >= fa))
1618- then fd
1607+ let fh = {
1608+ let eY = iu
1609+ let eZ = size(eY)
1610+ let fa = $Tuple4(0, nil, nil, 0)
1611+ func fb (fc,fd) = if ((fd >= eZ))
1612+ then fc
1613+ else iC(fc, eY[fd])
1614+
1615+ func fe (fc,fd) = if ((fd >= eZ))
1616+ then fc
16191617 else throw("List size exceeds 6")
16201618
1621- ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
1619+ fe(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6)
16221620 }
1623- func iH (eX,hY) = {
1624- let gQ = eX._1
1625- let iE = parseIntValue(hY)
1626- let iI = parseIntValue(iz[gQ])
1627- let iJ = parseIntValue(iB[gQ])
1628- if ((iE == 0))
1629- then $Tuple4((gQ + 1), (eX._2 :+ iz[gQ]), (eX._3 :+ iB[gQ]), eX._4)
1630- else if ((iE > 0))
1631- then if ((iE > iJ))
1632- then throw((((("Attempt to take " + hY) + " from backpack, but only ") + toString(iJ)) + " available"))
1633- else $Tuple4((gQ + 1), (eX._2 :+ toString((iI + iE))), (eX._3 :+ toString((iJ - iE))), (eX._4 + iE))
1634- else if ((-(iE) > iI))
1635- then throw((((("Attempt to take " + toString(-(iE))) + " from warehouse, but only ") + toString(iI)) + " available"))
1636- else $Tuple4((gQ + 1), (eX._2 :+ toString((iI + iE))), (eX._3 :+ toString((iJ - iE))), (eX._4 + iE))
1621+ func iG (eW,hX) = {
1622+ let gP = eW._1
1623+ let iD = parseIntValue(hX)
1624+ let iH = parseIntValue(iy[gP])
1625+ let iI = parseIntValue(iA[gP])
1626+ if ((iD == 0))
1627+ then $Tuple4((gP + 1), (eW._2 :+ iy[gP]), (eW._3 :+ iA[gP]), eW._4)
1628+ else if ((iD > 0))
1629+ then if ((iD > iI))
1630+ then throw((((("Attempt to take " + hX) + " from backpack, but only ") + toString(iI)) + " available"))
1631+ else $Tuple4((gP + 1), (eW._2 :+ toString((iH + iD))), (eW._3 :+ toString((iI - iD))), (eW._4 + iD))
1632+ else if ((-(iD) > iH))
1633+ then throw((((("Attempt to take " + toString(-(iD))) + " from warehouse, but only ") + toString(iH)) + " available"))
1634+ else $Tuple4((gP + 1), (eW._2 :+ toString((iH + iD))), (eW._3 :+ toString((iI - iD))), (eW._4 + iD))
16371635 }
16381636
1639- let gw = {
1640- let eZ = iw
1641- let fa = size(eZ)
1642- let fb = $Tuple4(0, nil, nil, fi._4)
1643- func hL (fd,fe) = if ((fe >= fa))
1644- then fd
1645- else iH(fd, eZ[fe])
1646-
1647- func hM (fd,fe) = if ((fe >= fa))
1648- then fd
1637+ let gv = {
1638+ let eY = iv
1639+ let eZ = size(eY)
1640+ let fa = $Tuple4(0, nil, nil, fh._4)
1641+ func hK (fc,fd) = if ((fd >= eZ))
1642+ then fc
1643+ else iG(fc, eY[fd])
1644+
1645+ func hL (fc,fd) = if ((fd >= eZ))
1646+ then fc
16491647 else throw("List size exceeds 6")
16501648
1651- hM(hL(hL(hL(hL(hL(hL(fb, 0), 1), 2), 3), 4), 5), 6)
1649+ hL(hK(hK(hK(hK(hK(hK(fa, 0), 1), 2), 3), 4), 5), 6)
16521650 }
1653- func iK (eX,hY) = {
1654- let gQ = eX._1
1655- let iE = parseIntValue(hY)
1656- let iL = if ((size(iA) > gQ))
1657- then parseIntValue(iA[gQ])
1651+ func iJ (eW,hX) = {
1652+ let gP = eW._1
1653+ let iD = parseIntValue(hX)
1654+ let iK = if ((size(iz) > gP))
1655+ then parseIntValue(iz[gP])
16581656 else 0
1659- let iM = if ((size(iC) > gQ))
1660- then parseIntValue(iC[gQ])
1657+ let iL = if ((size(iB) > gP))
1658+ then parseIntValue(iB[gP])
16611659 else 0
1662- if ((iE == 0))
1663- then $Tuple4((gQ + 1), (eX._2 :+ toString(iL)), (eX._3 :+ toString(iM)), eX._4)
1664- else if ((iE > 0))
1665- then if ((iE > iM))
1666- then throw((((("Attempt to take " + hY) + " from backpack, but only ") + toString(iM)) + " available"))
1660+ if ((iD == 0))
1661+ then $Tuple4((gP + 1), (eW._2 :+ toString(iK)), (eW._3 :+ toString(iL)), eW._4)
1662+ else if ((iD > 0))
1663+ then if ((iD > iL))
1664+ then throw((((("Attempt to take " + hX) + " from backpack, but only ") + toString(iL)) + " available"))
16671665 else {
1668- let fZ = (eN((iL + iE), bd) - eN(iL, bd))
1669- $Tuple4((gQ + 1), (eX._2 :+ toString((iL + iE))), (eX._3 :+ toString((iM - iE))), (eX._4 + fZ))
1666+ let fY = (eM((iK + iD), bc) - eM(iK, bc))
1667+ $Tuple4((gP + 1), (eW._2 :+ toString((iK + iD))), (eW._3 :+ toString((iL - iD))), (eW._4 + fY))
16701668 }
1671- else if ((-(iE) > iL))
1672- then throw((((("Attempt to take " + toString(-(iE))) + " from warehouse, but only ") + toString(iL)) + " available"))
1669+ else if ((-(iD) > iK))
1670+ then throw((((("Attempt to take " + toString(-(iD))) + " from warehouse, but only ") + toString(iK)) + " available"))
16731671 else {
1674- let fZ = (eN((iL + iE), bd) - eN(iL, bd))
1675- $Tuple4((gQ + 1), (eX._2 :+ toString((iL + iE))), (eX._3 :+ toString((iM - iE))), (eX._4 + fZ))
1672+ let fY = (eM((iK + iD), bc) - eM(iK, bc))
1673+ $Tuple4((gP + 1), (eW._2 :+ toString((iK + iD))), (eW._3 :+ toString((iL - iD))), (eW._4 + fY))
16761674 }
16771675 }
16781676
1679- let gA = if ((size(ix) != 0))
1677+ let gz = if ((size(iw) != 0))
16801678 then {
1681- let eZ = ix
1682- let fa = size(eZ)
1683- let fb = $Tuple4(0, nil, nil, gw._4)
1684- func hO (fd,fe) = if ((fe >= fa))
1685- then fd
1686- else iK(fd, eZ[fe])
1687-
1688- func hP (fd,fe) = if ((fe >= fa))
1689- then fd
1679+ let eY = iw
1680+ let eZ = size(eY)
1681+ let fa = $Tuple4(0, nil, nil, gv._4)
1682+ func hN (fc,fd) = if ((fd >= eZ))
1683+ then fc
1684+ else iJ(fc, eY[fd])
1685+
1686+ func hO (fc,fd) = if ((fd >= eZ))
1687+ then fc
16901688 else throw("List size exceeds 50")
16911689
1692- hP(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(fb, 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)
1690+ hO(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(fa, 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)
16931691 }
1694- else $Tuple4(0, iA, iC, gw._4)
1695- let iN = gA._4
1696- if ((iN > hf))
1697- then throw((((("Attempt to put total " + toString(iN)) + " stuff, but only ") + toString(hf)) + " warehouse space left"))
1698- else $Tuple7(makeString(fi._2, "_"), makeString(gw._2, "_"), makeString_2C(gA._2, "_"), makeString(fi._3, "_"), makeString(gw._3, "_"), makeString_2C(gA._3, "_"), iN)
1692+ else $Tuple4(0, iz, iB, gv._4)
1693+ let iM = gz._4
1694+ if ((iM > he))
1695+ then throw((((("Attempt to put total " + toString(iM)) + " stuff, but only ") + toString(he)) + " warehouse space left"))
1696+ else $Tuple7(makeString(fh._2, "_"), makeString(gv._2, "_"), makeString_2C(gz._2, "_"), makeString(fh._3, "_"), makeString(gv._3, "_"), makeString_2C(gz._3, "_"), iM)
16991697 }
17001698 }
17011699
17021700
1703-func iO (iP,iQ) = {
1704- let bR = toString(iP)
1705- let iR = hl(toBigInt(iQ))
1706- let iS = valueOrElse(getInteger(ev()), (eu + 1))
1707- let ez = toString(iS)
1708- let hu = toInt((iR % eo))
1709- let gT = hs(iR, hu)
1710- let dz = aV[hu]
1711- let iT = Issue(eM(ez, "S"), makeString([ez, "S", gT, dz], "_"), 1, 0, false)
1712- let bv = calculateAssetId(iT)
1713- let iU = toBase58String(bv)
1714- $Tuple2([IntegerEntry(ev(), (iS + 1)), iT, StringEntry(ey(ez), iU), StringEntry(bu(iU), bR), StringEntry(eB(ez), bR), IntegerEntry(bE(iU), 0), IntegerEntry(eA(iU, bR), 0), ScriptTransfer(iP, 1, bv)], $Tuple2(iU, dz))
1715- }
1716-
1717-
1718-func iV (bR,iW,iX) = if (!(sigVerify_8Kb(iW, iX, ef)))
1701+func iN (iO,iP) = {
1702+ let bQ = toString(iO)
1703+ let iQ = hk(toBigInt(iP))
1704+ let iR = valueOrElse(getInteger(eu()), (et + 1))
1705+ let ey = toString(iR)
1706+ let ht = toInt((iQ % en))
1707+ let gS = hr(iQ, ht)
1708+ let dA = aU[ht]
1709+ let iS = Issue(eL(ey, "S"), makeString([ey, "S", gS, dA], "_"), 1, 0, false)
1710+ let bu = calculateAssetId(iS)
1711+ let iT = toBase58String(bu)
1712+ $Tuple2([IntegerEntry(eu(), (iR + 1)), iS, StringEntry(ex(ey), iT), StringEntry(bt(iT), bQ), StringEntry(eA(ey), bQ), IntegerEntry(bD(iT), 0), IntegerEntry(ez(iT, bQ), 0), ScriptTransfer(iO, 1, bu)], $Tuple2(iT, dA))
1713+ }
1714+
1715+
1716+func iU (bQ,iV,iW) = if (!(sigVerify_8Kb(iV, iW, ee)))
17191717 then throw("signature does not match")
17201718 else {
1721- let fv = split_4C(toUtf8String(iW), ";")
1722- let iY = split_4C(fv[0], "|")
1723- let iZ = split(iY[eI], "_")
1724- let ja = parseIntValue(iZ[0])
1725- let jb = parseIntValue(iZ[1])
1726- let jc = split(fv[1], ":")
1727- let jd = jc[0]
1728- let je = parseIntValue(iY[eJ])
1729- if (if ((je > (lastBlock.timestamp + eh)))
1719+ let fu = split_4C(toUtf8String(iV), ";")
1720+ let iX = split_4C(fu[0], "|")
1721+ let iY = split(iX[eH], "_")
1722+ let iZ = parseIntValue(iY[0])
1723+ let ja = parseIntValue(iY[1])
1724+ let jb = split(fu[1], ":")
1725+ let jc = jb[0]
1726+ let jd = parseIntValue(iX[eI])
1727+ if (if ((jd > (lastBlock.timestamp + eg)))
17301728 then true
1731- else ((lastBlock.timestamp - eh) > je))
1732- then throw(((("signature outdated: logTime=" + toString(je)) + ", bcTime=") + toString(lastBlock.timestamp)))
1729+ else ((lastBlock.timestamp - eg) > jd))
1730+ then throw(((("signature outdated: logTime=" + toString(jd)) + ", bcTime=") + toString(lastBlock.timestamp)))
17331731 else {
1734- let jf = jc[1]
1735- let jg = valueOrElse(getString(dR(bR)), "")
1736- if ((jg != jf))
1737- then throw(((("Tx ids don't match! In state: " + jg) + ", in msg: ") + jf))
1732+ let je = jb[1]
1733+ let jf = valueOrElse(getString(dP(bQ)), "")
1734+ if ((jf != je))
1735+ then throw(((("Tx ids don't match! In state: " + jf) + ", in msg: ") + je))
17381736 else {
1739- let C = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
1740- let jh = B(C)
1741- let ji = ak(valueOrElse(getInteger(F(C)), 0))
1742- let jj = valueOrElse(getInteger(jh), ji)
1743- if ((jj != ja))
1744- then throw(((("oldHealth=" + toString(jj)) + " from state does not match one from flight log=") + toString(ja)))
1745- else if ((0 >= ja))
1737+ let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked")
1738+ let jg = A(B)
1739+ let jh = aj(valueOrElse(getInteger(E(B)), 0))
1740+ let ji = valueOrElse(getInteger(jg), jh)
1741+ if ((ji != iZ))
1742+ then throw(((("oldHealth=" + toString(ji)) + " from state does not match one from flight log=") + toString(iZ)))
1743+ else if ((0 >= iZ))
17461744 then throw("You can't fly with zero health")
1747- else if (!(gC(C)))
1745+ else if (!(gB(B)))
17481746 then throw("Equipment incompatible")
17491747 else {
1750- let jk = if ((size(iY) > eK))
1751- then iY[eK]
1748+ let jj = if ((size(iX) > eJ))
1749+ then iX[eJ]
17521750 else ""
1753- let jl = if ((size(iY) > eL))
1754- then iY[eL]
1751+ let jk = if ((size(iX) > eK))
1752+ then iX[eK]
17551753 else ""
1756- let jm = if (if ((jb > 0))
1757- then (jk == "$")
1754+ let jl = if (if ((ja > 0))
1755+ then (jj == "$")
17581756 else false)
1759- then dF(invoke(dh, "sendUsdtPrize", [bR], nil))
1757+ then dG(invoke(di, "sendUsdtPrize", [bQ], nil))
17601758 else 0
1761- $Tuple5(jb, C, jm, jd, jl)
1759+ $Tuple5(ja, B, jl, jc, jk)
17621760 }
17631761 }
17641762 }
17651763 }
17661764
17671765
1768-func jn (R,jo) = {
1769- let ig = valueOrElse(getInteger(bE(R)), 0)
1770- let jp = valueOrElse(getInteger(by(aI, R)), 0)
1771- let jq = (ig / 6)
1772- let jr = (ig / 7)
1773- ((aL + fraction(aL, ((ig + jq) + (2 * jr)), 5)) + fraction(aL, jp, (jo * 5)))
1774- }
1775-
1776-
1777-func js (d,jt,ju) = {
1778- let jv = if ((jt == eF))
1779- then $Tuple2(ju, valueOrElse(getString(bN(d)), ""))
1766+func jm (Q,jn) = {
1767+ let if = valueOrElse(getInteger(bD(Q)), 0)
1768+ let jo = valueOrElse(getInteger(bx(aH, Q)), 0)
1769+ let jp = (if / 6)
1770+ let jq = (if / 7)
1771+ ((aK + fraction(aK, ((if + jp) + (2 * jq)), 5)) + fraction(aK, jo, (jn * 5)))
1772+ }
1773+
1774+
1775+func jr (c,js,jt) = {
1776+ let ju = if ((js == eE))
1777+ then $Tuple2(jt, valueOrElse(getString(bM(c)), ""))
17801778 else {
1781- let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
1782- let jw = valueOrElse(getString(bP(C)), aN)
1783- let cl = split(value(jw), "_")
1784- if ((cl[bs] != "L"))
1785- then throw((("Duck location type is " + cl[bs]) + ", but should be L"))
1786- else $Tuple2(cl[bt], C)
1787- }
1788- let R = jv._1
1789- let jx = jv._2
1790- let jy = value(assetInfo(fromBase58String(R)))
1791- let jz = bx(R)
1792- let jA = valueOrErrorMessage(getInteger(jz), (("Land " + jy.name) + " is not staked"))
1793- let jB = valueOrErrorMessage(getString(bu(R)), (("NFT " + jy.name) + " is orphaned"))
1794- if ((jB != d))
1795- then throw((aG + " is not yours"))
1779+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
1780+ let jv = valueOrElse(getString(bO(B)), aM)
1781+ let ck = split(value(jv), "_")
1782+ if ((ck[br] != "L"))
1783+ then throw((("Duck location type is " + ck[br]) + ", but should be L"))
1784+ else $Tuple2(ck[bs], B)
1785+ }
1786+ let Q = ju._1
1787+ let jw = ju._2
1788+ let jx = value(assetInfo(fromBase58String(Q)))
1789+ let jy = bw(Q)
1790+ let jz = valueOrErrorMessage(getInteger(jy), (("Land " + jx.name) + " is not staked"))
1791+ let jA = valueOrErrorMessage(getString(bt(Q)), (("NFT " + jx.name) + " is orphaned"))
1792+ if ((jA != c))
1793+ then throw((aF + " is not yours"))
17961794 else {
1797- let jC = split(jy.description, "_")
1798- $Tuple4(jx, R, jC, jA)
1799- }
1800- }
1801-
1802-
1803-func jD (d,eO,jt,ju) = if ((0 > eO))
1795+ let jB = split(jx.description, "_")
1796+ $Tuple4(jw, Q, jB, jz)
1797+ }
1798+ }
1799+
1800+
1801+func jC (c,eN,js,jt) = if ((0 > eN))
18041802 then throw("Negative amount")
18051803 else {
1806- let gg = js(d, jt, ju)
1807- let dO = gg._3[do]
1808- let gM = gS(gg._3[dp])
1809- let gW = (lastBlock.timestamp - gg._4)
1810- if ((0 > gW))
1811- then throw(((("Saved timestamp is in future, saved = " + toString(gg._4)) + ", current = ") + toString(lastBlock.timestamp)))
1804+ let gf = jr(c, js, jt)
1805+ let dM = gf._3[dp]
1806+ let gL = gR(gf._3[dq])
1807+ let gV = (lastBlock.timestamp - gf._4)
1808+ if ((0 > gV))
1809+ then throw(((("Saved timestamp is in future, saved = " + toString(gf._4)) + ", current = ") + toString(lastBlock.timestamp)))
18121810 else {
1813- let jo = dN(dO)
1814- let jE = jn(gg._2, jo)
1815- let jF = fraction(gW, (jE * jo), a)
1816- if ((eO > jF))
1817- then throw(((("Not enough resources, available = " + toString(jF)) + ", requested = ") + toString(eO)))
1811+ let jn = dL(dM)
1812+ let jD = jm(gf._2, jn)
1813+ let jE = fraction(gV, (jD * jn), a)
1814+ if ((eN > jE))
1815+ then throw(((("Not enough resources, available = " + toString(jE)) + ", requested = ") + toString(eN)))
18181816 else {
1819- let jG = fraction((jF - eO), a, (jE * jo))
1820- let jH = (lastBlock.timestamp - jG)
1821- let if = (jo / cL)
1822- let he = ha(gM, (gW - jG), if, jE)
1823- let ie = bD(gg._2)
1824- let ig = valueOrElse(getInteger(bE(gg._2)), 0)
1825- let hV = id(ie, if, ig)
1826- let im = split(hV[bi], "_")
1827- let hf = parseIntValue(im[bl])
1828- if (if ((jt == eF))
1829- then (eO > hf)
1817+ let jF = fraction((jE - eN), a, (jD * jn))
1818+ let jG = (lastBlock.timestamp - jF)
1819+ let ie = (jn / cM)
1820+ let hd = gZ(gL, (gV - jF), ie, jD)
1821+ let id = bC(gf._2)
1822+ let if = valueOrElse(getInteger(bD(gf._2)), 0)
1823+ let hU = ic(id, ie, if)
1824+ let il = split(hU[bh], "_")
1825+ let he = parseIntValue(il[bk])
1826+ if (if ((js == eE))
1827+ then (eN > he)
18301828 else false)
1831- then throw((("Only " + toString(hf)) + " space left in warehouse"))
1829+ then throw((("Only " + toString(he)) + " space left in warehouse"))
18321830 else {
1833- let hR = bO(gg._1)
1834- let iu = hQ(hR)
1835- let hd = split(iu[bo], "_")
1836- let hc = split(hV[bf], "_")
1837- let jI = if ((jt == eF))
1838- then $Tuple4(gU(hc, gM, (gW - jG), if, jE), iu[bo], (parseIntValue(im[bk]) + he._2), (parseIntValue(im[bl]) - he._2))
1839- else if ((jt == eG))
1840- then $Tuple4(hV[bf], gU(hd, gM, (gW - jG), if, jE), parseIntValue(im[bk]), parseIntValue(im[bl]))
1831+ let hQ = bN(gf._1)
1832+ let it = hP(hQ)
1833+ let hc = split(it[bn], "_")
1834+ let hb = split(hU[be], "_")
1835+ let jH = if ((js == eE))
1836+ then $Tuple4(gT(hb, gL, (gV - jF), ie, jD), it[bn], (parseIntValue(il[bj]) + hd._2), (parseIntValue(il[bk]) - hd._2))
1837+ else if ((js == eF))
1838+ then $Tuple4(hU[be], gT(hc, gL, (gV - jF), ie, jD), parseIntValue(il[bj]), parseIntValue(il[bk]))
18411839 else {
1842- let jJ = hb(hc, hd, he, hf)
1843- let jK = min([parseIntValue(im[bl]), he._2])
1844- $Tuple4(jJ._1, jJ._2, (parseIntValue(im[bk]) + jK), (parseIntValue(im[bl]) - jK))
1840+ let jI = ha(hb, hc, hd, he)
1841+ let jJ = min([parseIntValue(il[bk]), hd._2])
1842+ $Tuple4(jI._1, jI._2, (parseIntValue(il[bj]) + jJ), (parseIntValue(il[bk]) - jJ))
18451843 }
1846- let jL = jI._1
1847- let jM = jI._2
1848- let jN = jI._3
1849- let jO = jI._4
1850- $Tuple5([IntegerEntry(bx(gg._2), jH), IntegerEntry(bA(aG, gg._2, d), jH)], hR, [iu[bn], jM, iu[bp], iu[bq]], ie, [hV[be], jL, hV[bg], hV[bh], makeString([im[bj], toString(jN), toString(jO), im[bm]], "_")])
1844+ let jK = jH._1
1845+ let jL = jH._2
1846+ let jM = jH._3
1847+ let jN = jH._4
1848+ $Tuple5([IntegerEntry(bw(gf._2), jG), IntegerEntry(bz(aF, gf._2, c), jG)], hQ, [it[bm], jL, it[bo], it[bp]], id, [hU[bd], jK, hU[bf], hU[bg], makeString([il[bi], toString(jM), toString(jN), il[bl]], "_")])
18511849 }
18521850 }
18531851 }
18541852 }
18551853
18561854
1857-func jP (d,R,jo,jt) = {
1858- let jz = bx(R)
1859- let jA = value(getInteger(jz))
1860- let jF = (fraction((lastBlock.timestamp - jA), jn(R, jo), a) * jo)
1861- jD(d, jF, jt, R)
1862- }
1863-
1864-
1865-func jQ (fk,iP,jR,R) = {
1866- let d = toString(iP)
1867- let gg = js(d, eH, R)
1868- let jo = dN(gg._3[do])
1869- let jS = bE(gg._2)
1870- let jT = valueOrElse(getInteger(jS), 0)
1871- if (if (!(cA))
1872- then (jT >= 3)
1855+func jO (c,Q,jn,js) = {
1856+ let jy = bw(Q)
1857+ let jz = value(getInteger(jy))
1858+ let jE = (fraction((lastBlock.timestamp - jz), jm(Q, jn), a) * jn)
1859+ jC(c, jE, js, Q)
1860+ }
1861+
1862+
1863+func jP (fj,iO,jQ,Q) = {
1864+ let c = toString(iO)
1865+ let gf = jr(c, eG, Q)
1866+ let jn = dL(gf._3[dp])
1867+ let jR = bD(gf._2)
1868+ let jS = valueOrElse(getInteger(jR), 0)
1869+ if (if (!(cz))
1870+ then (jS >= 3)
18731871 else false)
18741872 then throw("Currently max infrastructure level = 3")
18751873 else {
1876- let jU = ((sqrt(jo, 0, 0, DOWN) / 5) + 2)
1877- let ap = (jT + 1)
1878- if (if (cA)
1879- then (ap > jU)
1874+ let jT = ((sqrt(jn, 0, 0, DOWN) / 5) + 2)
1875+ let ao = (jS + 1)
1876+ if (if (cz)
1877+ then (ao > jT)
18801878 else false)
1881- then throw(("Currently max infrastructure level = " + toString(jU)))
1879+ then throw(("Currently max infrastructure level = " + toString(jT)))
18821880 else {
1883- let jV = fraction(ek, (jo * ap), cL)
1884- if (if (!(fk))
1885- then (jR != jV)
1881+ let jU = fraction(ej, (jn * ao), cM)
1882+ if (if (!(fj))
1883+ then (jQ != jU)
18861884 else false)
1887- then throw(("Payment attached should be " + toString(jV)))
1885+ then throw(("Payment attached should be " + toString(jU)))
18881886 else {
1889- let hR = bO(gg._1)
1890- let iu = hQ(hR)
1891- let jW = split(iu[bp], "_")
1892- let jX = fraction(cG, (jo * ap), cL)
1893- let jY = makeString(fj(fk, jW, jX), "_")
1894- let jZ = jP(d, gg._2, jo, eH)
1895- let ka = jZ._5
1896- let kb = hS(ka[be])
1897- let kc = makeString([split(ka[be], "_")[0], toString(ap)], "_")
1898- let kd = hS(kc)
1899- let im = split(ka[bi], "_")
1900- let ke = makeString([im[bj], im[bk], toString(((parseIntValue(im[bl]) + kd) - kb)), toString(kd)], "_")
1901- $Tuple3(([IntegerEntry(jS, ap), IntegerEntry(eA(gg._2, d), ap), StringEntry(hR, makeString([iu[bn], jZ._3[bo], jY, iu[bq]], ":")), StringEntry(jZ._4, makeString([kc, ka[bf], ka[bg], ka[bh], ke], ":"))] ++ jZ._1), ap, jX)
1887+ let hQ = bN(gf._1)
1888+ let it = hP(hQ)
1889+ let jV = split(it[bo], "_")
1890+ let jW = fraction(cG, (jn * ao), cM)
1891+ let jX = makeString(fi(fj, jV, jW), "_")
1892+ let jY = jO(c, gf._2, jn, eG)
1893+ let jZ = jY._5
1894+ let ka = hR(jZ[bd])
1895+ let kb = makeString([split(jZ[bd], "_")[0], toString(ao)], "_")
1896+ let kc = hR(kb)
1897+ let il = split(jZ[bh], "_")
1898+ let kd = makeString([il[bi], il[bj], toString(((parseIntValue(il[bk]) + kc) - ka)), toString(kc)], "_")
1899+ $Tuple3(([IntegerEntry(jR, ao), IntegerEntry(ez(gf._2, c), ao), StringEntry(hQ, makeString([it[bm], jY._3[bn], jX, it[bp]], ":")), StringEntry(jY._4, makeString([kb, jZ[be], jZ[bf], jZ[bg], kd], ":"))] ++ jY._1), ao, jW)
19021900 }
19031901 }
19041902 }
19051903 }
19061904
19071905
1908-func kf (C,kg) = {
1909- let kh = F(C)
1910- let ki = E(C)
1911- let aj = valueOrElse(getInteger(ki), 0)
1912- let ao = (aj + kg)
1913- let kj = am(valueOrElse(getInteger(kh), 0), ao)
1914- let kk = G(C)
1915- $Tuple2([IntegerEntry(kh, kj[0]), IntegerEntry(ki, ao), IntegerEntry(kk, (valueOrElse(getInteger(kk), 0) + kj[1]))], ao)
1916- }
1917-
1918-
1919-func kl (d,kg) = {
1920- let kh = J(d)
1921- let ki = I(d)
1922- let aj = valueOrElse(getInteger(ki), 0)
1923- let ao = (aj + kg)
1924- let kj = am(valueOrElse(getInteger(kh), 0), ao)
1925- let kk = K(d)
1926- $Tuple2([IntegerEntry(kh, kj[0]), IntegerEntry(ki, ao), IntegerEntry(kk, (valueOrElse(getInteger(kk), 0) + kj[1]))], ao)
1927- }
1928-
1929-
1930-func km (d) = {
1931- let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
1932- let kn = bI(d)
1933- let ko = getString(kn)
1934- if (!(isDefined(ko)))
1906+func ke (B,kf) = {
1907+ let kg = E(B)
1908+ let kh = D(B)
1909+ let ai = valueOrElse(getInteger(kh), 0)
1910+ let an = (ai + kf)
1911+ let ki = al(valueOrElse(getInteger(kg), 0), an)
1912+ let kj = F(B)
1913+ $Tuple2([IntegerEntry(kg, ki[0]), IntegerEntry(kh, an), IntegerEntry(kj, (valueOrElse(getInteger(kj), 0) + ki[1]))], an)
1914+ }
1915+
1916+
1917+func kk (c,kf) = {
1918+ let kg = I(c)
1919+ let kh = H(c)
1920+ let ai = valueOrElse(getInteger(kh), 0)
1921+ let an = (ai + kf)
1922+ let ki = al(valueOrElse(getInteger(kg), 0), an)
1923+ let kj = J(c)
1924+ $Tuple2([IntegerEntry(kg, ki[0]), IntegerEntry(kh, an), IntegerEntry(kj, (valueOrElse(getInteger(kj), 0) + ki[1]))], an)
1925+ }
1926+
1927+
1928+func kl (c) = {
1929+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
1930+ let km = bH(c)
1931+ let kn = getString(km)
1932+ if (!(isDefined(kn)))
19351933 then throw("You are not eligible for ONBOARD artifact")
19361934 else {
1937- let kp = bK(d)
1938- let kq = getString(kp)
1939- if (isDefined(kq))
1940- then throw(("You already used your ONBOARD artifact on duck " + value(kq)))
1935+ let ko = bJ(c)
1936+ let kp = getString(ko)
1937+ if (isDefined(kp))
1938+ then throw(("You already used your ONBOARD artifact on duck " + value(kp)))
19411939 else {
1942- let kr = bJ(C)
1943- let ks = getString(kr)
1944- if (isDefined(ks))
1945- then throw(((("The duck " + C) + " already got points from ONBOARD artifact from user ") + value(ks)))
1946- else ([StringEntry(kp, C), StringEntry(kr, d)] ++ kf(C, ag)._1)
1940+ let kq = bI(B)
1941+ let kr = getString(kq)
1942+ if (isDefined(kr))
1943+ then throw(((("The duck " + B) + " already got points from ONBOARD artifact from user ") + value(kr)))
1944+ else ([StringEntry(ko, B), StringEntry(kq, c)] ++ ke(B, af)._1)
19471945 }
19481946 }
19491947 }
19501948
19511949
1952-func kt (d,ju) = {
1953- let gg = js(d, eH, ju)
1954- let R = gg._2
1955- let jo = dN(gg._3[do])
1956- let ku = by(aI, R)
1957- if ((valueOrElse(getInteger(ku), 0) > 0))
1950+func ks (c,jt) = {
1951+ let gf = jr(c, eG, jt)
1952+ let Q = gf._2
1953+ let jn = dL(gf._3[dp])
1954+ let kt = bx(aH, Q)
1955+ if ((valueOrElse(getInteger(kt), 0) > 0))
19581956 then throw("Presale artifact is already activated")
1959- else if ((parseIntValue(gg._3[dn]) > eu))
1960- then throw((((aG + " ") + R) + " is not eligible for presale artifact"))
1957+ else if ((parseIntValue(gf._3[do]) > et))
1958+ then throw((((aF + " ") + Q) + " is not eligible for presale artifact"))
19611959 else {
1962- let jZ = jP(d, R, jo, eH)
1963- (((jZ._1 :+ IntegerEntry(ku, jo)) :+ StringEntry(jZ._2, makeString(jZ._3, ":"))) :+ StringEntry(jZ._4, makeString(jZ._5, ":")))
1960+ let jY = jO(c, Q, jn, eG)
1961+ (((jY._1 :+ IntegerEntry(kt, jn)) :+ StringEntry(jY._2, makeString(jY._3, ":"))) :+ StringEntry(jY._4, makeString(jY._5, ":")))
19641962 }
19651963 }
19661964
19671965
1968-func kv (C) = {
1969- let ck = valueOrElse(getInteger(dl, bV), 0)
1970- let jw = split(valueOrElse(getString(bP(C)), aN), "_")
1971- let aB = lastBlock.timestamp
1972- let cm = ce(dl, ck)
1973- let cg = cm[ca]
1974- let ch = cm[cb]
1975- if ((jw[bs] != "T"))
1966+func ku (B) = {
1967+ let cj = valueOrElse(getInteger(dm, bU), 0)
1968+ let jv = split(valueOrElse(getString(bO(B)), aM), "_")
1969+ let aA = lastBlock.timestamp
1970+ let cl = cd(dm, cj)
1971+ let cf = cl[bZ]
1972+ let cg = cl[ca]
1973+ if ((jv[br] != "T"))
19761974 then false
1977- else if (if (if ((parseIntValue(jw[br]) == ck))
1978- then (ch[cd] == "INPROGRESS")
1975+ else if (if (if ((parseIntValue(jv[bq]) == cj))
1976+ then (cg[cc] == "INPROGRESS")
19791977 else false)
1980- then (parseIntValue(cg[cc]) > aB)
1978+ then (parseIntValue(cf[cb]) > aA)
19811979 else false)
19821980 then throw("Your duck is taking part in the tournament")
1983- else dJ(invoke(this, "exitTournamentInternal", [C], nil))
1984- }
1985-
1986-
1987-func kw (C) = if (!(cB))
1981+ else dK(invoke(this, "exitTournamentInternal", [B], nil))
1982+ }
1983+
1984+
1985+func kv (B) = if (!(cA))
19881986 then false
19891987 else {
1990- let jw = split(valueOrElse(getString(bP(C)), aN), "_")
1991- let aB = lastBlock.timestamp
1992- if ((jw[bs] != "D"))
1988+ let jv = split(valueOrElse(getString(bO(B)), aM), "_")
1989+ let aA = lastBlock.timestamp
1990+ if ((jv[br] != "D"))
19931991 then false
19941992 else {
1995- let co = parseIntValue(jw[br])
1996- let cp = parseIntValue(jw[bt])
1997- if (if ((aB > (co + aR)))
1998- then (3 > cp)
1993+ let cn = parseIntValue(jv[bq])
1994+ let co = parseIntValue(jv[bs])
1995+ if (if (((cn + aQ) > aA))
1996+ then (3 > co)
19991997 else false)
20001998 then throw("Your duck is on delivery mission")
2001- else dJ(invoke(this, "exitDeliveryInternal", [C], nil))
1999+ else dK(invoke(this, "exitDeliveryInternal", [B], nil))
20022000 }
20032001 }
20042002
20052003
2006-func kx (C,fP,jb,ky) = {
2007- let jw = split(valueOrElse(getString(bP(C)), aN), "_")
2008- let aB = lastBlock.timestamp
2009- let co = parseIntValue(jw[br])
2010- let cp = parseIntValue(jw[bt])
2011- let jB = valueOrErrorMessage(getString(bM(C)), "NFT duck is orphaned")
2012- let kz = B(C)
2013- let kA = getIntegerValue(kz)
2014- let kB = if (if ((cp >= 3))
2004+func kw (B,fO,ja,kx) = {
2005+ let jv = split(valueOrElse(getString(bO(B)), aM), "_")
2006+ let aA = lastBlock.timestamp
2007+ let cn = parseIntValue(jv[bq])
2008+ let co = parseIntValue(jv[bs])
2009+ let jA = valueOrErrorMessage(getString(bL(B)), "NFT duck is orphaned")
2010+ let ky = A(B)
2011+ let kz = getIntegerValue(ky)
2012+ let kA = if (if ((co >= 3))
20152013 then true
2016- else if (if (fP)
2017- then (ky >= 3)
2014+ else if (if (fO)
2015+ then (kx >= 3)
20182016 else false)
2019- then (jb > 0)
2017+ then (ja > 0)
20202018 else false)
20212019 then {
2022- let kC = invoke(di, "sendDeliveryReward", [jB], nil)
2023- if ((kC == kC))
2020+ let kB = invoke(dj, "sendDeliveryReward", [jA], nil)
2021+ if ((kB == kB))
20242022 then {
2025- let kD = W(jB)
2026-[IntegerEntry(kD, (valueOrElse(getInteger(kD), 0) + 1)), IntegerEntry(X(jB), (co / a))]
2023+ let kC = V(jA)
2024+[IntegerEntry(kC, (valueOrElse(getInteger(kC), 0) + 1)), IntegerEntry(W(jA), (cn / a))]
20272025 }
20282026 else throw("Strict value is not equal to itself.")
20292027 }
2030- else if (if (if (fP)
2031- then (jb > 0)
2028+ else if (if (if (fO)
2029+ then (ja > 0)
20322030 else false)
2033- then ((co + aR) > aB)
2031+ then ((cn + aQ) > aA)
20342032 else false)
20352033 then throw("Your duck is still on delivery mission")
20362034 else {
2037- let kE = valueOrElse(getInteger(di, bU), 0)
2038- let kF = invoke(di, "updateDeliveryLocked", [(kE - aQ)], nil)
2039- if ((kF == kF))
2040- then if (if (if (fP)
2041- then (0 >= jb)
2035+ let kD = valueOrElse(getInteger(dj, bT), 0)
2036+ let kE = invoke(dj, "updateDeliveryLocked", [(kD - aP)], nil)
2037+ if ((kE == kE))
2038+ then if (if (if (fO)
2039+ then (0 >= ja)
20422040 else false)
20432041 then true
2044- else (0 >= kA))
2042+ else (0 >= kz))
20452043 then nil
2046- else [IntegerEntry(V(C), (co + b))]
2044+ else [IntegerEntry(U(B), (cn + cI))]
20472045 else throw("Strict value is not equal to itself.")
20482046 }
2049- let kG = getIntegerValue(L(C))
2050- let kH = getStringValue(M(C))
2051- $Tuple4(kB, [IntegerEntry(kz, kG), StringEntry(bP(C), kH)], kH, kG)
2052- }
2053-
2054-
2055-func kI (kJ,ap,kK,d,kL,kM) = {
2056- let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
2057- if (kv(C))
2047+ let kF = getStringValue(L(B))
2048+ $Tuple3(kA, [StringEntry(bO(B), kF)], kF)
2049+ }
2050+
2051+
2052+func kG (kH,ao,kI,c,kJ,kK) = {
2053+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
2054+ if (ku(B))
20582055 then throw("mergeInternal_checkTournament")
2059- else if (kw(C))
2056+ else if (kv(B))
20602057 then throw("mergeInternal_checkDelivery")
20612058 else {
2062- func kN (eX,R) = {
2063- let jy = value(assetInfo(fromBase58String(R)))
2064- let jz = bx(R)
2065- let jA = valueOrErrorMessage(getInteger(jz), (("NFT " + jy.name) + " is not staked"))
2066- let jB = valueOrErrorMessage(getString(bu(R)), (("NFT " + jy.name) + " is orphaned"))
2067- if ((jB != d))
2068- then throw((aG + " is not yours"))
2059+ func kL (eW,Q) = {
2060+ let jx = value(assetInfo(fromBase58String(Q)))
2061+ let jy = bw(Q)
2062+ let jz = valueOrErrorMessage(getInteger(jy), (("NFT " + jx.name) + " is not staked"))
2063+ let jA = valueOrErrorMessage(getString(bt(Q)), (("NFT " + jx.name) + " is orphaned"))
2064+ if ((jA != c))
2065+ then throw((aF + " is not yours"))
20692066 else {
2070- let jC = split(jy.description, "_")
2071- let dz = jC[dq]
2072- if (if ((eX._3 != ""))
2073- then (eX._3 != dz)
2067+ let jB = split(jx.description, "_")
2068+ let dA = jB[dr]
2069+ if (if ((eW._3 != ""))
2070+ then (eW._3 != dA)
20742071 else false)
20752072 then throw("Lands should be on the same continent to merge")
20762073 else {
2077- let dO = jC[do]
2078- let kO = eX._1
2079- let gQ = valueOrErrorMessage(indexOf(kO, dO), "You haven't passed all the lands needed")
2080- let kP = (take(kO, gQ) + drop(kO, (gQ + 1)))
2081- let jo = dN(dO)
2082- let kQ = (eX._2 + valueOrElse(getInteger(by(aI, R)), 0))
2083- let ig = valueOrElse(getInteger(bE(R)), 0)
2084- let kR = {
2085- let cE = dO
2074+ let dM = jB[dp]
2075+ let kM = eW._1
2076+ let gP = valueOrErrorMessage(indexOf(kM, dM), "You haven't passed all the lands needed")
2077+ let kN = (take(kM, gP) + drop(kM, (gP + 1)))
2078+ let jn = dL(dM)
2079+ let kO = (eW._2 + valueOrElse(getInteger(bx(aH, Q)), 0))
2080+ let if = valueOrElse(getInteger(bD(Q)), 0)
2081+ let kP = {
2082+ let cE = dM
20862083 if (("S" == cE))
20872084 then 3
20882085 else if (("M" == cE))
20932090 then 6
20942091 else throw("Only S, M, L, XL can merge")
20952092 }
2096- if ((ig != kR))
2093+ if ((if != kP))
20972094 then throw("All lands should be maxed to merge")
20982095 else {
2099- let ez = jC[dn]
2100- let gM = gS(jC[dp])
2101- let gW = (lastBlock.timestamp - jA)
2102- if ((0 > gW))
2103- then throw(((("Saved timestamp is in future, saved = " + toString(jA)) + ", current = ") + toString(lastBlock.timestamp)))
2096+ let ey = jB[do]
2097+ let gL = gR(jB[dq])
2098+ let gV = (lastBlock.timestamp - jz)
2099+ if ((0 > gV))
2100+ then throw(((("Saved timestamp is in future, saved = " + toString(jz)) + ", current = ") + toString(lastBlock.timestamp)))
21042101 else {
2105- let jE = jn(R, jo)
2106- let if = (jo / cL)
2107- let jM = gU(split(eX._4, "_"), gM, gW, if, jE)
2108- let fh = gK(eX._6, gM, if, -1)
2109- let kS = gK(eX._10, gM, if, -1)
2110- let hA = gK(eX._9, gM, if, 1)
2111- let kT = eX._7
2112- let dg = indexOf(kT, R)
2113- if (!(isDefined(dg)))
2114- then throw(("Your staked lands don't contain " + R))
2102+ let jD = jm(Q, jn)
2103+ let ie = (jn / cM)
2104+ let jL = gT(split(eW._4, "_"), gL, gV, ie, jD)
2105+ let fg = gJ(eW._6, gL, ie, -1)
2106+ let kQ = gJ(eW._10, gL, ie, -1)
2107+ let hz = gJ(eW._9, gL, ie, 1)
2108+ let kR = eW._7
2109+ let dh = indexOf(kR, Q)
2110+ if (!(isDefined(dh)))
2111+ then throw(("Your staked lands don't contain " + Q))
21152112 else {
2116- let kU = bw(R)
2117- let kV = valueOrElse(getString(kU), "")
2118- $Tuple10(kP, kQ, dz, jM, ((((((((((((eX._5 :+ DeleteEntry(bx(R))) :+ DeleteEntry(bA(aG, R, d))) :+ DeleteEntry(ey(ez))) :+ DeleteEntry(bu(R))) :+ DeleteEntry(bE(R))) :+ DeleteEntry(eA(R, d))) :+ DeleteEntry(by(aI, R))) :+ DeleteEntry(eB(ez))) :+ DeleteEntry(bD(R))) :+ DeleteEntry(kU)) :+ Burn(fromBase58String(R), 1)) ++ (if ((kV != ""))
2119- then [DeleteEntry(ew(kV))]
2120- else nil)), fh, removeByIndex(kT, value(dg)), (eX._8 + jo), hA, kS)
2113+ let kS = bv(Q)
2114+ let kT = valueOrElse(getString(kS), "")
2115+ $Tuple10(kN, kO, dA, jL, ((((((((((((eW._5 :+ DeleteEntry(bw(Q))) :+ DeleteEntry(bz(aF, Q, c))) :+ DeleteEntry(ex(ey))) :+ DeleteEntry(bt(Q))) :+ DeleteEntry(bD(Q))) :+ DeleteEntry(ez(Q, c))) :+ DeleteEntry(bx(aH, Q))) :+ DeleteEntry(eA(ey))) :+ DeleteEntry(bC(Q))) :+ DeleteEntry(kS)) :+ Burn(fromBase58String(Q), 1)) ++ (if ((kT != ""))
2116+ then [DeleteEntry(ev(kT))]
2117+ else nil)), fg, removeByIndex(kR, value(dh)), (eW._8 + jn), hz, kQ)
21212118 }
21222119 }
21232120 }
21252122 }
21262123 }
21272124
2128- let hR = bO(C)
2129- let iu = hQ(hR)
2130- let gL = split(valueOrElse(getString(dx()), "0_0_0_0_0_0"), "_")
2131- let kW = dA(d)
2132- let kX = getString(kW)
2133- let kY = if (isDefined(kX))
2134- then split_51C(value(kX), "_")
2125+ let hQ = bN(B)
2126+ let it = hP(hQ)
2127+ let gK = split(valueOrElse(getString(dy()), "0_0_0_0_0_0"), "_")
2128+ let kU = dB(c)
2129+ let kV = getString(kU)
2130+ let kW = if (isDefined(kV))
2131+ then split_51C(value(kV), "_")
21352132 else nil
2136- let kZ = split(value(assetInfo(fromBase58String(kL[0]))).description, "_")[dq]
2137- let la = split(valueOrElse(getString(dy(kZ)), "0_0_0_0_0_0"), "_")
2138- let fi = {
2139- let eZ = kL
2140- let fa = size(eZ)
2141- let fb = $Tuple10(kK, 0, "", iu[bo], nil, gL, kY, 0, split("0_0_0_0_0_0", "_"), la)
2142- func fc (fd,fe) = if ((fe >= fa))
2143- then fd
2144- else kN(fd, eZ[fe])
2145-
2146- func ff (fd,fe) = if ((fe >= fa))
2147- then fd
2133+ let kX = split(value(assetInfo(fromBase58String(kJ[0]))).description, "_")[dr]
2134+ let kY = split(valueOrElse(getString(dz(kX)), "0_0_0_0_0_0"), "_")
2135+ let fh = {
2136+ let eY = kJ
2137+ let eZ = size(eY)
2138+ let fa = $Tuple10(kI, 0, "", it[bn], nil, gK, kW, 0, split("0_0_0_0_0_0", "_"), kY)
2139+ func fb (fc,fd) = if ((fd >= eZ))
2140+ then fc
2141+ else kL(fc, eY[fd])
2142+
2143+ func fe (fc,fd) = if ((fd >= eZ))
2144+ then fc
21482145 else throw("List size exceeds 5")
21492146
2150- ff(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5)
2147+ fe(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5)
21512148 }
2152- let dz = fi._3
2153- let hu = valueOrErrorMessage(indexOf(aV, dz), ("Unknown continent: " + dz))
2154- let gT = hz(fi._9, (dN(kJ) / cL))
2155- let iS = valueOrElse(getInteger(ev()), (eu + 1))
2156- let lb = toString(iS)
2157- let iT = Issue(eM(lb, kJ), makeString([lb, kJ, gT, dz], "_"), 1, 0, false)
2158- let bv = calculateAssetId(iT)
2159- let lc = toBase58String(bv)
2160- let jY = makeString(fj((kM > 0), split(iu[bp], "_"), kM), "_")
2161- let ld = dB(d)
2162- let le = valueOrElse(getInteger(ld), 0)
2163- $Tuple2((((((((((((((((fi._5 :+ (if ((size(fi._7) > 0))
2164- then StringEntry(kW, makeString_11C(fi._7, "_"))
2165- else DeleteEntry(kW))) :+ IntegerEntry(ld, if ((fi._8 > le))
2149+ let dA = fh._3
2150+ let ht = valueOrErrorMessage(indexOf(aU, dA), ("Unknown continent: " + dA))
2151+ let gS = hy(fh._9, (dL(kH) / cM))
2152+ let iR = valueOrElse(getInteger(eu()), (et + 1))
2153+ let kZ = toString(iR)
2154+ let iS = Issue(eL(kZ, kH), makeString([kZ, kH, gS, dA], "_"), 1, 0, false)
2155+ let bu = calculateAssetId(iS)
2156+ let la = toBase58String(bu)
2157+ let jX = makeString(fi((kK > 0), split(it[bo], "_"), kK), "_")
2158+ let lb = dC(c)
2159+ let lc = valueOrElse(getInteger(lb), 0)
2160+ $Tuple2((((((((((((((((fh._5 :+ (if ((size(fh._7) > 0))
2161+ then StringEntry(kU, makeString_11C(fh._7, "_"))
2162+ else DeleteEntry(kU))) :+ IntegerEntry(lb, if ((fh._8 > lc))
21662163 then 0
2167- else (le - fi._8))) :+ IntegerEntry(ev(), (iS + 1))) :+ iT) :+ StringEntry(ey(lb), lc)) :+ StringEntry(bu(lc), d)) :+ StringEntry(eB(lb), d)) :+ IntegerEntry(by(aI, lc), fi._2)) :+ IntegerEntry(bE(lc), ap)) :+ IntegerEntry(eA(lc, d), ap)) :+ StringEntry(hR, makeString([iu[bn], fi._4, jY, iu[bq]], ":"))) :+ StringEntry(dx(), makeString(fi._6, "_"))) :+ StringEntry(dy(dz), makeString(fi._10, "_"))) :+ StringEntry(bP(C), makeString([dz, "L", lc], "_"))) :+ ScriptTransfer(addressFromStringValue(d), 1, bv)), lc)
2164+ else (lc - fh._8))) :+ IntegerEntry(eu(), (iR + 1))) :+ iS) :+ StringEntry(ex(kZ), la)) :+ StringEntry(bt(la), c)) :+ StringEntry(eA(kZ), c)) :+ IntegerEntry(bx(aH, la), fh._2)) :+ IntegerEntry(bD(la), ao)) :+ IntegerEntry(ez(la, c), ao)) :+ StringEntry(hQ, makeString([it[bm], fh._4, jX, it[bp]], ":"))) :+ StringEntry(dy(), makeString(fh._6, "_"))) :+ StringEntry(dz(dA), makeString(fh._10, "_"))) :+ StringEntry(bO(B), makeString([dA, "L", la], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bu)), la)
21682165 }
21692166 }
21702167
21712168
2172-func lf (d,kL) = kI("M", 3, "SSSS", d, kL, 0)
2173-
2174-
2175-func lg (d,kL) = kI("L", 4, "SMM", d, kL, (cG * 4))
2176-
2177-
2178-func lh (d,kL) = kI("XL", 5, "SSSML", d, kL, (cG * 47))
2179-
2180-
2181-func li (d,kL) = kI("XXL", 6, "LXL", d, kL, (cG * 54))
2182-
2183-
2184-func lj (d,kL) = {
2185- let cE = size(kL)
2169+func ld (c,kJ) = kG("M", 3, "SSSS", c, kJ, 0)
2170+
2171+
2172+func le (c,kJ) = kG("L", 4, "SMM", c, kJ, (cG * 4))
2173+
2174+
2175+func lf (c,kJ) = kG("XL", 5, "SSSML", c, kJ, (cG * 47))
2176+
2177+
2178+func lg (c,kJ) = kG("XXL", 6, "LXL", c, kJ, (cG * 54))
2179+
2180+
2181+func lh (c,kJ) = {
2182+ let cE = size(kJ)
21862183 if ((4 == cE))
2187- then lf(d, kL)
2184+ then ld(c, kJ)
21882185 else if ((3 == cE))
2189- then lg(d, kL)
2186+ then le(c, kJ)
21902187 else if ((5 == cE))
2191- then lh(d, kL)
2188+ then lf(c, kJ)
21922189 else if ((2 == cE))
2193- then li(d, kL)
2190+ then lg(c, kJ)
21942191 else throw("Unknown merge")
21952192 }
21962193
21972194
2198-func lk (bR) = {
2199- let ll = getString(bN(bR))
2200- if (if (cB)
2201- then isDefined(ll)
2195+func li (bQ) = {
2196+ let lj = getString(bM(bQ))
2197+ if (if (cA)
2198+ then isDefined(lj)
22022199 else false)
22032200 then {
2204- let C = value(ll)
2205- let lm = bP(C)
2206- let cl = split(valueOrElse(getString(lm), aN), "_")
2207- let co = parseIntValue(cl[br])
2208- if (if ((cl[bs] != "D"))
2201+ let B = value(lj)
2202+ let lk = bO(B)
2203+ let ck = split(valueOrElse(getString(lk), aM), "_")
2204+ let cn = parseIntValue(ck[bq])
2205+ if (if ((ck[br] != "D"))
22092206 then true
2210- else (lastBlock.timestamp > (co + aR)))
2207+ else ((cn + aQ) > lastBlock.timestamp))
22112208 then nil
22122209 else {
2213- let kz = B(C)
2214- if ((parseIntValue(cl[bt]) >= 3))
2210+ let ky = A(B)
2211+ if ((parseIntValue(ck[bs]) >= 3))
22152212 then {
2216- let kC = invoke(di, "sendDeliveryReward", [bR], nil)
2217- if ((kC == kC))
2213+ let kB = invoke(dj, "sendDeliveryReward", [bQ], nil)
2214+ if ((kB == kB))
22182215 then nil
22192216 else throw("Strict value is not equal to itself.")
22202217 }
22212218 else (({
2222- let kE = valueOrElse(getInteger(di, bU), 0)
2223- let kF = invoke(di, "updateDeliveryLocked", [(kE - aQ)], nil)
2224- if ((kF == kF))
2225- then if ((0 >= getIntegerValue(kz)))
2219+ let kD = valueOrElse(getInteger(dj, bT), 0)
2220+ let kE = invoke(dj, "updateDeliveryLocked", [(kD - aP)], nil)
2221+ if ((kE == kE))
2222+ then if ((0 >= getIntegerValue(ky)))
22262223 then nil
22272224 else {
2228- let ln = invoke(this, "saveInteger", [V(C), (co + b)], nil)
2229- if ((ln == ln))
2225+ let ll = invoke(this, "saveInteger", [U(B), (cn + cI)], nil)
2226+ if ((ll == ll))
22302227 then nil
22312228 else throw("Strict value is not equal to itself.")
22322229 }
22332230 else throw("Strict value is not equal to itself.")
2234- } :+ IntegerEntry(kz, getIntegerValue(L(C)))) :+ StringEntry(lm, getStringValue(M(C))))
2231+ } :+ IntegerEntry(ky, getIntegerValue(K(B)))) :+ StringEntry(lk, getStringValue(L(B))))
22352232 }
22362233 }
22372234 else nil
22382235 }
22392236
22402237
2241-func lo (gQ) = if (if ((gQ.originCaller != dh))
2242- then valueOrElse(getBoolean(dQ()), false)
2238+func lm (gP) = if (if ((gP.originCaller != di))
2239+ then valueOrElse(getBoolean(dO()), false)
22432240 else false)
22442241 then throw("Contracts are under maintenance")
22452242 else {
2246- let bR = toString(gQ.originCaller)
2247- (lk(bR) :+ StringEntry(dR(bR), toBase58String(gQ.transactionId)))
2243+ let bQ = toString(gP.originCaller)
2244+ (li(bQ) :+ StringEntry(dP(bQ), toBase58String(gP.transactionId)))
22482245 }
22492246
22502247
2251-func lp (gQ) = if (if ((gQ.originCaller != dh))
2252- then valueOrElse(getBoolean(dQ()), false)
2248+func ln (gP) = if (if ((gP.originCaller != di))
2249+ then valueOrElse(getBoolean(dO()), false)
22532250 else false)
22542251 then throw("Contracts are under maintenance")
2255- else [StringEntry(dR(toString(gQ.originCaller)), toBase58String(gQ.transactionId))]
2256-
2257-
2258-@Callable(gQ)
2259-func constructorV1 (lq) = if ((gQ.caller != this))
2252+ else [StringEntry(dP(toString(gP.originCaller)), toBase58String(gP.transactionId))]
2253+
2254+
2255+@Callable(gP)
2256+func constructorV1 (lo) = if ((gP.caller != this))
22602257 then throw("Permission denied")
2261- else [StringEntry(db(), lq)]
2262-
2263-
2264-
2265-@Callable(gQ)
2266-func saveInteger (cT,eO) = if ((gQ.caller != this))
2258+ else [StringEntry(dc(), lo)]
2259+
2260+
2261+
2262+@Callable(gP)
2263+func saveInteger (cU,eN) = if ((gP.caller != this))
22672264 then throw("saveInteger is not public method")
2268- else [IntegerEntry(cT, eO)]
2269-
2270-
2271-
2272-@Callable(gQ)
2273-func setBlocked (lr) = if ((gQ.caller != this))
2265+ else [IntegerEntry(cU, eN)]
2266+
2267+
2268+
2269+@Callable(gP)
2270+func setBlocked (lp) = if ((gP.caller != this))
22742271 then throw("permission denied")
2275- else [BooleanEntry(dQ(), lr)]
2276-
2277-
2278-
2279-@Callable(gQ)
2272+ else [BooleanEntry(dO(), lp)]
2273+
2274+
2275+
2276+@Callable(gP)
22802277 func stakeLand () = {
2281- let ls = lo(gQ)
2282- if ((size(gQ.payments) != 1))
2278+ let lq = lm(gP)
2279+ if ((size(gP.payments) != 1))
22832280 then throw("Exactly one payment required")
22842281 else {
2285- let lt = value(gQ.payments[0])
2286- let bv = value(lt.assetId)
2287- let cS = toString(gQ.caller)
2288- if ((lt.amount != 1))
2289- then throw((("NFT " + aG) + " token should be attached as payment"))
2282+ let lr = value(gP.payments[0])
2283+ let bu = value(lr.assetId)
2284+ let cT = toString(gP.caller)
2285+ if ((lr.amount != 1))
2286+ then throw((("NFT " + aF) + " token should be attached as payment"))
22902287 else {
2291- let jy = value(assetInfo(bv))
2292- if ((jy.issuer != this))
2288+ let jx = value(assetInfo(bu))
2289+ if ((jx.issuer != this))
22932290 then throw("Unknown issuer of token")
2294- else if (!(contains(jy.name, aG)))
2295- then throw((("Only NFT " + aG) + " tokens are accepted"))
2291+ else if (!(contains(jx.name, aF)))
2292+ then throw((("Only NFT " + aF) + " tokens are accepted"))
22962293 else {
2297- let lu = drop(jy.name, 4)
2298- let ez = if (contains(lu, "XXL"))
2299- then dropRight(lu, 3)
2300- else if (contains(lu, "XL"))
2301- then dropRight(lu, 2)
2302- else dropRight(lu, 1)
2303- if (!(isDefined(parseInt(ez))))
2304- then throw(("Cannot parse land number from " + jy.name))
2294+ let ls = drop(jx.name, 4)
2295+ let ey = if (contains(ls, "XXL"))
2296+ then dropRight(ls, 3)
2297+ else if (contains(ls, "XL"))
2298+ then dropRight(ls, 2)
2299+ else dropRight(ls, 1)
2300+ if (!(isDefined(parseInt(ey))))
2301+ then throw(("Cannot parse land number from " + jx.name))
23052302 else {
2306- let R = toBase58String(bv)
2307- let jz = bx(R)
2308- if (isDefined(getInteger(jz)))
2309- then throw((("NFT " + jy.name) + " is already staked"))
2303+ let Q = toBase58String(bu)
2304+ let jy = bw(Q)
2305+ if (isDefined(getInteger(jy)))
2306+ then throw((("NFT " + jx.name) + " is already staked"))
23102307 else {
2311- let jC = split(jy.description, "_")
2312- let gM = gS(jC[dp])
2313- let jo = dN(jC[do])
2314- let if = (jo / cL)
2315- let fh = gR(gM, if, 1)
2316- let lv = dy(jC[dq])
2317- let la = split(valueOrElse(getString(lv), "0_0_0_0_0_0"), "_")
2318- let lw = makeString(gK(la, gM, if, 1), "_")
2319- let kW = dA(cS)
2320- let kX = getString(kW)
2321- let kT = if (isDefined(kX))
2322- then split_51C(value(kX), "_")
2308+ let jB = split(jx.description, "_")
2309+ let gL = gR(jB[dq])
2310+ let jn = dL(jB[dp])
2311+ let ie = (jn / cM)
2312+ let fg = gQ(gL, ie, 1)
2313+ let lt = dz(jB[dr])
2314+ let kY = split(valueOrElse(getString(lt), "0_0_0_0_0_0"), "_")
2315+ let lu = makeString(gJ(kY, gL, ie, 1), "_")
2316+ let kU = dB(cT)
2317+ let kV = getString(kU)
2318+ let kR = if (isDefined(kV))
2319+ then split_51C(value(kV), "_")
23232320 else nil
2324- if (containsElement(kT, R))
2325- then throw(("Your staked lands already contain " + R))
2326- else if ((size(kT) >= aK))
2327- then throw((("Your already staked max (" + toString(aK)) + ") lands"))
2321+ if (containsElement(kR, Q))
2322+ then throw(("Your staked lands already contain " + Q))
2323+ else if ((size(kR) >= aJ))
2324+ then throw((("Your already staked max (" + toString(aJ)) + ") lands"))
23282325 else {
2329- let ig = valueOrElse(getInteger(bE(R)), 0)
2330- let ld = dB(cS)
2331- let lx = valueOrElse(getInteger(ld), 0)
2332- let ly = invoke(dk, "onStakeUnstakeLand", [cS], nil)
2333- $Tuple2(([IntegerEntry(jz, lastBlock.timestamp), IntegerEntry(bA(aG, R, cS), lastBlock.timestamp), StringEntry(kW, makeString_11C((kT :+ R), "_")), IntegerEntry(ld, (lx + jo)), StringEntry(bu(R), cS), StringEntry(eB(ez), cS), IntegerEntry(eA(R, cS), ig), StringEntry(dx(), fh), StringEntry(lv, lw)] ++ ls), ly)
2326+ let if = valueOrElse(getInteger(bD(Q)), 0)
2327+ let lb = dC(cT)
2328+ let lv = valueOrElse(getInteger(lb), 0)
2329+ let lw = invoke(dl, "onStakeUnstakeLand", [cT], nil)
2330+ $Tuple2(([IntegerEntry(jy, lastBlock.timestamp), IntegerEntry(bz(aF, Q, cT), lastBlock.timestamp), StringEntry(kU, makeString_11C((kR :+ Q), "_")), IntegerEntry(lb, (lv + jn)), StringEntry(bt(Q), cT), StringEntry(eA(ey), cT), IntegerEntry(ez(Q, cT), if), StringEntry(dy(), fg), StringEntry(lt, lu)] ++ lq), lw)
23342331 }
23352332 }
23362333 }
23412338
23422339
23432340
2344-@Callable(gQ)
2345-func unstakeLand (ju) = {
2346- let ls = lo(gQ)
2347- if ((size(gQ.payments) != 0))
2341+@Callable(gP)
2342+func unstakeLand (jt) = {
2343+ let lq = lm(gP)
2344+ if ((size(gP.payments) != 0))
23482345 then throw("No payments required")
23492346 else {
2350- let d = toString(gQ.caller)
2351- let gg = js(d, eG, ju)
2352- let R = gg._2
2353- let jC = gg._3
2354- let kW = dA(d)
2355- let gM = gS(jC[dp])
2356- let jo = dN(jC[do])
2357- let if = (jo / cL)
2358- let fh = gR(gM, if, -1)
2359- let lv = dy(jC[dq])
2360- let la = split(valueOrElse(getString(lv), "0_0_0_0_0_0"), "_")
2361- let lw = makeString(gK(la, gM, if, -1), "_")
2362- let jZ = jP(d, R, jo, eG)
2363- let kT = split_51C(valueOrElse(getString(kW), ""), "_")
2364- let dg = indexOf(kT, R)
2365- if (!(isDefined(dg)))
2366- then throw(("Your staked lands don't contain " + R))
2347+ let c = toString(gP.caller)
2348+ let gf = jr(c, eF, jt)
2349+ let Q = gf._2
2350+ let jB = gf._3
2351+ let kU = dB(c)
2352+ let gL = gR(jB[dq])
2353+ let jn = dL(jB[dp])
2354+ let ie = (jn / cM)
2355+ let fg = gQ(gL, ie, -1)
2356+ let lt = dz(jB[dr])
2357+ let kY = split(valueOrElse(getString(lt), "0_0_0_0_0_0"), "_")
2358+ let lu = makeString(gJ(kY, gL, ie, -1), "_")
2359+ let jY = jO(c, Q, jn, eF)
2360+ let kR = split_51C(valueOrElse(getString(kU), ""), "_")
2361+ let dh = indexOf(kR, Q)
2362+ if (!(isDefined(dh)))
2363+ then throw(("Your staked lands don't contain " + Q))
23672364 else {
2368- let aB = lastBlock.timestamp
2369- let lz = valueOrElse(getInteger(dj, bQ(d)), 0)
2370- if ((lz >= aB))
2371- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lz)))
2365+ let aA = lastBlock.timestamp
2366+ let lx = valueOrElse(getInteger(dk, bP(c)), 0)
2367+ if ((lx >= aA))
2368+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lx)))
23722369 else {
2373- let lA = (valueOrElse(getInteger(dk, c(d)), 0) + cH)
2374- if ((lA > aB))
2375- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lA)))
2370+ let ly = (valueOrElse(getInteger(dl, b(c)), 0) + cH)
2371+ if ((ly > aA))
2372+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(ly)))
23762373 else {
2377- let ld = dB(d)
2378- let le = valueOrElse(getInteger(ld), 0)
2379- let lB = if ((jo > le))
2374+ let lb = dC(c)
2375+ let lc = valueOrElse(getInteger(lb), 0)
2376+ let lz = if ((jn > lc))
23802377 then 0
2381- else (le - jo)
2382- let ly = invoke(dk, "onStakeUnstakeLand", [d], nil)
2383- $Tuple2(([ScriptTransfer(gQ.caller, 1, fromBase58String(R)), DeleteEntry(bx(R)), DeleteEntry(bA(aG, R, d)), StringEntry(dx(), fh), StringEntry(lv, lw), StringEntry(jZ._2, makeString(jZ._3, ":")), if ((size(kT) > 1))
2384- then StringEntry(kW, makeString_11C(removeByIndex(kT, value(dg)), "_"))
2385- else DeleteEntry(kW), IntegerEntry(ld, lB)] ++ ls), ly)
2378+ else (lc - jn)
2379+ let lw = invoke(dl, "onStakeUnstakeLand", [c], nil)
2380+ $Tuple2(([ScriptTransfer(gP.caller, 1, fromBase58String(Q)), DeleteEntry(bw(Q)), DeleteEntry(bz(aF, Q, c)), StringEntry(dy(), fg), StringEntry(lt, lu), StringEntry(jY._2, makeString(jY._3, ":")), if ((size(kR) > 1))
2381+ then StringEntry(kU, makeString_11C(removeByIndex(kR, value(dh)), "_"))
2382+ else DeleteEntry(kU), IntegerEntry(lb, lz)] ++ lq), lw)
23862383 }
23872384 }
23882385 }
23912388
23922389
23932390
2394-@Callable(gQ)
2391+@Callable(gP)
23952392 func stakeDuck () = {
2396- let ls = lo(gQ)
2397- if ((size(gQ.payments) != 1))
2393+ let lq = lm(gP)
2394+ if ((size(gP.payments) != 1))
23982395 then throw("Exactly one payment required")
23992396 else {
2400- let lt = value(gQ.payments[0])
2401- let bv = value(lt.assetId)
2402- let cS = toString(gQ.caller)
2403- if ((lt.amount != 1))
2404- then throw((("NFT " + aH) + " token should be attached as payment"))
2397+ let lr = value(gP.payments[0])
2398+ let bu = value(lr.assetId)
2399+ let cT = toString(gP.caller)
2400+ if ((lr.amount != 1))
2401+ then throw((("NFT " + aG) + " token should be attached as payment"))
24052402 else {
2406- let jy = value(assetInfo(bv))
2407- if (if ((jy.issuer != ed))
2408- then (jy.issuer != ee)
2403+ let jx = value(assetInfo(bu))
2404+ if (if ((jx.issuer != ec))
2405+ then (jx.issuer != ed)
24092406 else false)
2410- then throw((("Unknown issuer of " + aH) + " token"))
2411- else if (!(contains(jy.name, aH)))
2412- then throw((("Only NFT " + aH) + " tokens are accepted"))
2407+ then throw((("Unknown issuer of " + aG) + " token"))
2408+ else if (!(contains(jx.name, aG)))
2409+ then throw((("Only NFT " + aG) + " tokens are accepted"))
24132410 else {
2414- let lC = toBase58String(bv)
2415- let jz = bx(lC)
2416- if (isDefined(getInteger(jz)))
2417- then throw((("NFT " + jy.name) + " is already staked"))
2418- else if (isDefined(getString(bN(cS))))
2419- then throw(("You already staked one duck: " + jy.name))
2411+ let lA = toBase58String(bu)
2412+ let jy = bw(lA)
2413+ if (isDefined(getInteger(jy)))
2414+ then throw((("NFT " + jx.name) + " is already staked"))
2415+ else if (isDefined(getString(bM(cT))))
2416+ then throw(("You already staked one duck: " + jx.name))
24202417 else {
2421- let lm = bP(lC)
2422- let cj = getString(lm)
2423- let hR = bO(lC)
2424- let lD = getString(hR)
2425- let jh = B(lC)
2426- let ji = ak(valueOrElse(getInteger(F(lC)), 0))
2427- let kA = valueOrElse(getInteger(jh), ji)
2428- ([IntegerEntry(jz, lastBlock.timestamp), IntegerEntry(bA(aH, toBase58String(bv), cS), lastBlock.timestamp), StringEntry(bM(lC), cS), StringEntry(bN(cS), lC)] ++ (if (isDefined(cj))
2418+ let lk = bO(lA)
2419+ let ci = getString(lk)
2420+ let hQ = bN(lA)
2421+ let lB = getString(hQ)
2422+ let jg = A(lA)
2423+ let jh = aj(valueOrElse(getInteger(E(lA)), 0))
2424+ let kz = valueOrElse(getInteger(jg), jh)
2425+ ([IntegerEntry(jy, lastBlock.timestamp), IntegerEntry(bz(aG, toBase58String(bu), cT), lastBlock.timestamp), StringEntry(bL(lA), cT), StringEntry(bM(cT), lA)] ++ (if (isDefined(ci))
24292426 then nil
2430- else ([StringEntry(lm, aN)] ++ (if (isDefined(lD))
2427+ else ([StringEntry(lk, aM)] ++ (if (isDefined(lB))
24312428 then nil
2432- else (([StringEntry(hR, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jh, kA)) ++ ls)))))
2429+ else (([StringEntry(hQ, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jg, kz)) ++ lq)))))
24332430 }
24342431 }
24352432 }
24382435
24392436
24402437
2441-@Callable(gQ)
2442-func unstakeDuck (lC) = {
2443- let ls = lo(gQ)
2444- if ((size(gQ.payments) != 0))
2438+@Callable(gP)
2439+func unstakeDuck (lA) = {
2440+ let lq = lm(gP)
2441+ if ((size(gP.payments) != 0))
24452442 then throw("No payments required")
24462443 else {
2447- let bv = fromBase58String(lC)
2448- let cS = toString(gQ.caller)
2449- let jy = value(assetInfo(bv))
2450- let jz = bx(lC)
2451- if (!(isDefined(getInteger(jz))))
2452- then throw((("NFT " + jy.name) + " is not staked"))
2453- else if (!(isDefined(getString(bN(cS)))))
2454- then throw((("The duck " + jy.name) + " is not staked"))
2444+ let bu = fromBase58String(lA)
2445+ let cT = toString(gP.caller)
2446+ let jx = value(assetInfo(bu))
2447+ let jy = bw(lA)
2448+ if (!(isDefined(getInteger(jy))))
2449+ then throw((("NFT " + jx.name) + " is not staked"))
2450+ else if (!(isDefined(getString(bM(cT)))))
2451+ then throw((("The duck " + jx.name) + " is not staked"))
24552452 else {
2456- let jB = valueOrErrorMessage(getString(bM(lC)), (("NFT " + jy.name) + " is orphaned"))
2457- if ((jB != cS))
2453+ let jA = valueOrErrorMessage(getString(bL(lA)), (("NFT " + jx.name) + " is orphaned"))
2454+ if ((jA != cT))
24582455 then throw("Staked NFT is not yours")
2459- else if (kv(lC))
2456+ else if (ku(lA))
24602457 then throw("unstakeDuck_checkTournament")
2461- else if (kw(lC))
2458+ else if (kv(lA))
24622459 then throw("unstakeDuck_checkDelivery")
24632460 else {
2464- let jh = B(lC)
2465- let ji = ak(valueOrElse(getInteger(F(lC)), 0))
2466- let aw = valueOrElse(getInteger(jh), ji)
2467- if ((ji > aw))
2468- then throw((("Please heal your duck to " + toString(ji)) + "hp before unstaking"))
2469- else ([ScriptTransfer(gQ.caller, 1, bv), DeleteEntry(jz), DeleteEntry(jh), DeleteEntry(bP(lC)), DeleteEntry(bM(lC)), DeleteEntry(bA(aH, lC, cS)), DeleteEntry(bN(cS))] ++ ls)
2461+ let jg = A(lA)
2462+ let jh = aj(valueOrElse(getInteger(E(lA)), 0))
2463+ let av = valueOrElse(getInteger(jg), jh)
2464+ if ((jh > av))
2465+ then throw((("Please heal your duck to " + toString(jh)) + "hp before unstaking"))
2466+ else ([ScriptTransfer(gP.caller, 1, bu), DeleteEntry(jy), DeleteEntry(jg), DeleteEntry(bO(lA)), DeleteEntry(bL(lA)), DeleteEntry(bz(aG, lA, cT)), DeleteEntry(bM(cT))] ++ lq)
24702467 }
24712468 }
24722469 }
24742471
24752472
24762473
2477-@Callable(gQ)
2478-func claimRes (eO,lE) = {
2479- let ls = lo(gQ)
2480- if ((size(gQ.payments) != 0))
2474+@Callable(gP)
2475+func claimRes (eN,lC) = {
2476+ let lq = lm(gP)
2477+ if ((size(gP.payments) != 0))
24812478 then throw("No payments required")
24822479 else {
2483- let d = toString(gQ.originCaller)
2484- let fp = jD(d, eO, eG, lE)
2485- let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
2486- $Tuple2(((((fp._1 ++ kf(C, fraction(Y, eO, cK))._1) :+ StringEntry(fp._2, makeString(fp._3, ":"))) :+ StringEntry(fp._4, makeString(fp._5, ":"))) ++ ls), fp._3[bo])
2487- }
2488- }
2489-
2490-
2491-
2492-@Callable(gQ)
2493-func claimResToWH (eO,lE) = {
2494- let ls = lo(gQ)
2495- if ((size(gQ.payments) != 0))
2480+ let c = toString(gP.originCaller)
2481+ let fo = jC(c, eN, eF, lC)
2482+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
2483+ $Tuple2(((((fo._1 ++ ke(B, fraction(X, eN, cL))._1) :+ StringEntry(fo._2, makeString(fo._3, ":"))) :+ StringEntry(fo._4, makeString(fo._5, ":"))) ++ lq), fo._3[bn])
2484+ }
2485+ }
2486+
2487+
2488+
2489+@Callable(gP)
2490+func claimResToWH (eN,lC) = {
2491+ let lq = lm(gP)
2492+ if ((size(gP.payments) != 0))
24962493 then throw("No payments required")
24972494 else {
2498- let d = toString(gQ.originCaller)
2499- let fp = jD(d, eO, eF, lE)
2500- $Tuple2(((((fp._1 ++ kl(d, fraction(Y, eO, cK))._1) :+ StringEntry(fp._2, makeString(fp._3, ":"))) :+ StringEntry(fp._4, makeString(fp._5, ":"))) ++ ls), fp._5[bf])
2501- }
2502- }
2503-
2504-
2505-
2506-@Callable(gQ)
2507-func flight (iW,iX) = {
2508- let ls = lp(gQ)
2509- if ((size(gQ.payments) != 0))
2495+ let c = toString(gP.originCaller)
2496+ let fo = jC(c, eN, eE, lC)
2497+ $Tuple2(((((fo._1 ++ kk(c, fraction(X, eN, cL))._1) :+ StringEntry(fo._2, makeString(fo._3, ":"))) :+ StringEntry(fo._4, makeString(fo._5, ":"))) ++ lq), fo._5[be])
2498+ }
2499+ }
2500+
2501+
2502+
2503+@Callable(gP)
2504+func flight (iV,iW) = {
2505+ let lq = ln(gP)
2506+ if ((size(gP.payments) != 0))
25102507 then throw("No payments required")
25112508 else {
2512- let bR = toString(gQ.caller)
2513- let hv = iV(bR, iW, iX)
2514- let jb = hv._1
2515- let C = hv._2
2516- let lm = bP(C)
2517- let jw = valueOrElse(getString(lm), aN)
2518- let jd = hv._4
2519- if ((jd == jw))
2509+ let bQ = toString(gP.caller)
2510+ let hu = iU(bQ, iV, iW)
2511+ let ja = hu._1
2512+ let B = hu._2
2513+ let lk = bO(B)
2514+ let jv = valueOrElse(getString(lk), aM)
2515+ let jc = hu._4
2516+ if ((jc == jv))
25202517 then throw("You can't fly to the same location")
25212518 else {
2522- let cx = split(jd, "_")
2523- let lF = (cx[bs] == "T")
2524- let lG = (cx[bs] == "D")
2525- let gD = H(C)
2526- let lH = valueOrElse(getString(gD), ",;,_,;,_,;,_,;,_,;,_,;,")
2527- let lI = fq(lH, hv._5)
2528- let lJ = lI._1
2529- let lK = lI._2
2530- let lL = if (!(cs(dl, jw)))
2531- then if (!(cq(jd)))
2532- then cv(jw, jd, 5)
2533- else if ((jb > 0))
2534- then $Tuple2(jd, jb)
2535- else $Tuple2(jw, 0)
2536- else if (ci(dl, jw))
2537- then if (!(ci(dl, jd)))
2519+ let cw = split(jc, "_")
2520+ let lD = (cw[br] == "T")
2521+ let lE = (cw[br] == "D")
2522+ let gC = G(B)
2523+ let lF = valueOrElse(getString(gC), ",;,_,;,_,;,_,;,_,;,_,;,")
2524+ let lG = fp(lF, hu._5)
2525+ let lH = lG._1
2526+ let lI = lG._2
2527+ let lJ = if (!(cr(dm, jv)))
2528+ then if (!(cp(jc)))
2529+ then cu(jv, jc, 5)
2530+ else if ((ja > 0))
2531+ then $Tuple2(jc, ja)
2532+ else $Tuple2(jv, 0)
2533+ else if (ch(dm, jv))
2534+ then if (!(ch(dm, jc)))
25382535 then throw("Your duck is taking part in the tournament")
25392536 else {
2540- let ky = parseIntValue(cx[bt])
2541- let lM = split(jw, "_")
2542- let ck = valueOrElse(getInteger(dl, bV), 0)
2543- if ((ky != (parseIntValue(lM[bt]) + 1)))
2544- then cv(jw, jd, 7)
2545- else if ((jb > 0))
2537+ let kx = parseIntValue(cw[bs])
2538+ let lK = split(jv, "_")
2539+ let cj = valueOrElse(getInteger(dm, bU), 0)
2540+ if ((kx != (parseIntValue(lK[bs]) + 1)))
2541+ then cu(jv, jc, 7)
2542+ else if ((ja > 0))
25462543 then {
2547- let lN = valueOrElse(getInteger(dl, bZ(ck, C)), 0)
2548- let lO = if ((ky > lN))
2549- then invoke(dl, "saveDuckResult", [C, ky], nil)
2544+ let lL = valueOrElse(getInteger(dm, bY(cj, B)), 0)
2545+ let lM = if ((kx > lL))
2546+ then invoke(dm, "saveDuckResult", [B, kx], nil)
25502547 else unit
2551- if ((lO == lO))
2552- then $Tuple2(jd, jb)
2548+ if ((lM == lM))
2549+ then $Tuple2(jc, ja)
25532550 else throw("Strict value is not equal to itself.")
25542551 }
2555- else $Tuple2(jw, 0)
2552+ else $Tuple2(jv, 0)
25562553 }
2557- else if (!(cn(jw)))
2554+ else if (!(cm(jv)))
25582555 then {
2559- let lP = dK(invoke(this, "autoExitDelivery", [C, jb, if (lG)
2556+ let lN = dD(invoke(this, "autoExitDelivery", [B, ja, if (lE)
25602557 then "10"
25612558 else "11", 0], nil))
2562- if ((lP == lP))
2563- then if (lG)
2564- then lP
2565- else if ((jb > 0))
2566- then $Tuple2(jd, jb)
2567- else $Tuple2(lP._1, 0)
2559+ if ((lN == lN))
2560+ then if (lE)
2561+ then $Tuple2(lN, ja)
2562+ else if ((ja > 0))
2563+ then $Tuple2(jc, ja)
2564+ else $Tuple2(lN, 0)
25682565 else throw("Strict value is not equal to itself.")
25692566 }
2570- else if (!(lG))
2567+ else if (!(lE))
25712568 then throw("Your duck is taking part in delivery")
2572- else if (!(cn(jd)))
2573- then cv(jw, jd, 13)
2569+ else if (!(cm(jc)))
2570+ then cu(jv, jc, 13)
25742571 else {
2575- let ky = parseIntValue(cx[bt])
2576- let lM = split(jw, "_")
2577- if ((ky != (parseIntValue(lM[bt]) + 1)))
2578- then cv(jw, jd, 14)
2579- else if (if ((jb > 0))
2580- then (3 > ky)
2572+ let kx = parseIntValue(cw[bs])
2573+ let lK = split(jv, "_")
2574+ if ((kx != (parseIntValue(lK[bs]) + 1)))
2575+ then cu(jv, jc, 14)
2576+ else if (if ((ja > 0))
2577+ then (3 > kx)
25812578 else false)
2582- then $Tuple2(jd, jb)
2579+ then $Tuple2(jc, ja)
25832580 else {
2584- let lP = dK(invoke(this, "autoExitDelivery", [C, jb, "15-17", ky], nil))
2585- if ((lP == lP))
2586- then lP
2581+ let lN = dD(invoke(this, "autoExitDelivery", [B, ja, "15-17", kx], nil))
2582+ if ((lN == lN))
2583+ then $Tuple2(lN, ja)
25872584 else throw("Strict value is not equal to itself.")
25882585 }
25892586 }
2590- let lQ = lL._1
2591- let lR = lL._2
2592- $Tuple2(((([StringEntry(lm, lQ), StringEntry(gD, lJ), IntegerEntry(B(C), lR)] ++ ls) ++ (if (lK)
2593- then [StringEntry(N(C), "0_0_0_0_0")]
2594- else nil)) ++ kf(C, if ((jb > 0))
2595- then Z
2596- else aa)._1), hv._3)
2587+ let lO = lJ._1
2588+ let lP = lJ._2
2589+ $Tuple2(((([StringEntry(lk, lO), StringEntry(gC, lH), IntegerEntry(A(B), lP)] ++ lq) ++ (if (lI)
2590+ then [StringEntry(M(B), "0_0_0_0_0")]
2591+ else nil)) ++ ke(B, if ((ja > 0))
2592+ then Y
2593+ else Z)._1), hu._3)
25972594 }
25982595 }
25992596 }
26002597
26012598
26022599
2603-@Callable(gQ)
2604-func heal (lS,lT,lU) = {
2605- let ls = lo(gQ)
2606- if (if (if ((0 > lS))
2600+@Callable(gP)
2601+func heal (lQ,lR,lS) = {
2602+ let lq = lm(gP)
2603+ if (if (if ((0 > lQ))
26072604 then true
2608- else (0 > lT))
2605+ else (0 > lR))
26092606 then true
2610- else (0 > lU))
2607+ else (0 > lS))
26112608 then throw("Quantity cannot be negative")
26122609 else {
2613- let C = valueOrErrorMessage(getString(bN(toString(gQ.caller))), "You don't have a duck staked")
2614- if (kv(C))
2610+ let B = valueOrErrorMessage(getString(bM(toString(gP.caller))), "You don't have a duck staked")
2611+ if (ku(B))
26152612 then throw("heal_checkTournament")
2616- else if (kw(C))
2613+ else if (kv(B))
26172614 then throw("heal_checkDelivery")
26182615 else {
2619- let lV = [lS, lT, lU]
2620- let jh = B(C)
2621- let ji = ak(valueOrElse(getInteger(F(C)), 0))
2622- let lW = valueOrElse(getInteger(jh), ji)
2623- if ((lW >= ji))
2624- then throw((("HP should be < " + toString(ji)) + " to heal"))
2616+ let lT = [lQ, lR, lS]
2617+ let jg = A(B)
2618+ let jh = aj(valueOrElse(getInteger(E(B)), 0))
2619+ let lU = valueOrElse(getInteger(jg), jh)
2620+ if ((lU >= jh))
2621+ then throw((("HP should be < " + toString(jh)) + " to heal"))
26252622 else {
2626- let hR = bO(C)
2627- let iu = hQ(hR)
2628- let lX = if ((iu[bq] == ""))
2623+ let hQ = bN(B)
2624+ let it = hP(hQ)
2625+ let lV = if ((it[bp] == ""))
26292626 then nil
2630- else split_4C(iu[bq], "_")
2631- func lY (eX,cu) = {
2632- let dG = eX._2
2633- let hm = if ((size(lX) > dG))
2634- then parseIntValue(lX[dG])
2627+ else split_4C(it[bp], "_")
2628+ func lW (eW,ct) = {
2629+ let dH = eW._2
2630+ let hl = if ((size(lV) > dH))
2631+ then parseIntValue(lV[dH])
26352632 else 0
2636- if ((3 > dG))
2633+ if ((3 > dH))
26372634 then {
2638- let lZ = lV[dG]
2639- if ((lZ > hm))
2640- then throw(((("You have only " + toString(hm)) + " of ") + aU[dG]))
2641- else $Tuple3((eX._1 :+ toString((hm - lZ))), (dG + 1), (eX._3 + (parseIntValue(split(cu, "_")[ba]) * lZ)))
2635+ let lX = lT[dH]
2636+ if ((lX > hl))
2637+ then throw(((("You have only " + toString(hl)) + " of ") + aT[dH]))
2638+ else $Tuple3((eW._1 :+ toString((hl - lX))), (dH + 1), (eW._3 + (parseIntValue(split(ct, "_")[aZ]) * lX)))
26422639 }
2643- else $Tuple3((eX._1 :+ toString(hm)), (dG + 1), eX._3)
2640+ else $Tuple3((eW._1 :+ toString(hl)), (dH + 1), eW._3)
26442641 }
26452642
2646- let fp = {
2647- let eZ = aY
2648- let fa = size(eZ)
2649- let fb = $Tuple3(nil, 0, 0)
2650- func fc (fd,fe) = if ((fe >= fa))
2651- then fd
2652- else lY(fd, eZ[fe])
2653-
2654- func ff (fd,fe) = if ((fe >= fa))
2655- then fd
2643+ let fo = {
2644+ let eY = aX
2645+ let eZ = size(eY)
2646+ let fa = $Tuple3(nil, 0, 0)
2647+ func fb (fc,fd) = if ((fd >= eZ))
2648+ then fc
2649+ else lW(fc, eY[fd])
2650+
2651+ func fe (fc,fd) = if ((fd >= eZ))
2652+ then fc
26562653 else throw("List size exceeds 50")
26572654
2658- ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 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)
2655+ fe(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fa, 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)
26592656 }
2660- let ma = min([ji, (lW + fp._3)])
2661- $Tuple2((([IntegerEntry(jh, ma), StringEntry(hR, makeString_2C([iu[bn], iu[bo], iu[bp], makeString(fp._1, "_")], ":"))] ++ ls) ++ kf(C, (ah * ((lS + lT) + lU)))._1), ma)
2657+ let lY = min([jh, (lU + fo._3)])
2658+ $Tuple2((([IntegerEntry(jg, lY), StringEntry(hQ, makeString_2C([it[bm], it[bn], it[bo], makeString(fo._1, "_")], ":"))] ++ lq) ++ ke(B, (ag * ((lQ + lR) + lS)))._1), lY)
26622659 }
26632660 }
26642661 }
26662663
26672664
26682665
2669-@Callable(gQ)
2666+@Callable(gP)
26702667 func healES () = {
2671- let ls = lo(gQ)
2672- if ((size(gQ.payments) != 1))
2668+ let lq = lm(gP)
2669+ if ((size(gP.payments) != 1))
26732670 then throw("Exactly one payment required")
26742671 else {
2675- let lt = value(gQ.payments[0])
2676- if ((lt.assetId != cD))
2672+ let lr = value(gP.payments[0])
2673+ if ((lr.assetId != cD))
26772674 then throw("Allowed USDT payment only!")
26782675 else {
2679- let C = valueOrErrorMessage(getString(bN(toString(gQ.caller))), "You don't have a duck staked")
2680- if (kv(C))
2676+ let B = valueOrErrorMessage(getString(bM(toString(gP.caller))), "You don't have a duck staked")
2677+ if (ku(B))
26812678 then throw("healES_checkTournament")
2682- else if (kw(C))
2679+ else if (kv(B))
26832680 then throw("healES_checkDelivery")
26842681 else {
2685- let jh = B(C)
2686- let ji = ak(valueOrElse(getInteger(F(C)), 0))
2687- let lW = valueOrElse(getInteger(jh), ji)
2688- if ((lW > 0))
2682+ let jg = A(B)
2683+ let jh = aj(valueOrElse(getInteger(E(B)), 0))
2684+ let lU = valueOrElse(getInteger(jg), jh)
2685+ if ((lU > 0))
26892686 then throw("HP should be 0 to call Emergency Service")
26902687 else {
2691- let hR = bO(C)
2692- let iu = hQ(hR)
2693- let lX = if ((iu[bq] == ""))
2688+ let hQ = bN(B)
2689+ let it = hP(hQ)
2690+ let lV = if ((it[bp] == ""))
26942691 then nil
2695- else split_4C(iu[bq], "_")
2696- let mb = if ((size(lX) > 0))
2697- then parseIntValue(lX[0])
2692+ else split_4C(it[bp], "_")
2693+ let lZ = if ((size(lV) > 0))
2694+ then parseIntValue(lV[0])
26982695 else 0
2699- let mc = if ((size(lX) > 1))
2700- then parseIntValue(lX[1])
2696+ let ma = if ((size(lV) > 1))
2697+ then parseIntValue(lV[1])
27012698 else 0
2702- let md = if ((size(lX) > 2))
2703- then parseIntValue(lX[2])
2699+ let mb = if ((size(lV) > 2))
2700+ then parseIntValue(lV[2])
27042701 else 0
2705- if (if (if ((mb > 0))
2702+ if (if (if ((lZ > 0))
27062703 then true
2707- else (mc > 0))
2704+ else (ma > 0))
27082705 then true
2709- else (md > 0))
2706+ else (mb > 0))
27102707 then throw("You have to use own Medical Kit")
27112708 else {
2712- let me = getString(di, bS())
2713- let mf = if (isDefined(me))
2714- then split_4C(value(me), "_")
2709+ let mc = getString(dj, bR())
2710+ let md = if (isDefined(mc))
2711+ then split_4C(value(mc), "_")
27152712 else nil
2716- let mg = if ((size(mf) > 0))
2717- then parseIntValue(mf[0])
2713+ let me = if ((size(md) > 0))
2714+ then parseIntValue(md[0])
27182715 else 0
2719- if ((0 >= mg))
2716+ if ((0 >= me))
27202717 then throw("There are no Medical Kits L1 at Emergency Service storage")
27212718 else {
2722- let ma = (lW + parseIntValue(split(aY[0], "_")[ba]))
2723- let mh = makeString([toString((mg - 1)), removeByIndex(mf, 0)], "_")
2724- let cu = split(aY[0], "_")
2725- let mi = ct(cu)
2726- let mj = fraction((mi * aP), aO, (cK * bd))
2727- if ((lt.amount != mj))
2728- then throw(("Payment attached should be " + toString(mj)))
2719+ let lY = (lU + parseIntValue(split(aX[0], "_")[aZ]))
2720+ let mf = makeString([toString((me - 1)), removeByIndex(md, 0)], "_")
2721+ let ct = split(aX[0], "_")
2722+ let mg = cs(ct)
2723+ let mh = fraction((mg * aO), aN, (cL * bc))
2724+ if ((lr.amount != mh))
2725+ then throw(("Payment attached should be " + toString(mh)))
27292726 else {
2730- let fp = dC(invoke(di, "updateEsStorage", [mh], [AttachedPayment(cD, mj)]))
2731- $Tuple2(((ls :+ IntegerEntry(jh, ma)) ++ kf(C, ab)._1), fp)
2727+ let fo = dD(invoke(dj, "updateEsStorage", [mf], [AttachedPayment(cD, mh)]))
2728+ $Tuple2(((lq :+ IntegerEntry(jg, lY)) ++ ke(B, aa)._1), fo)
27322729 }
27332730 }
27342731 }
27402737
27412738
27422739
2743-@Callable(gQ)
2744-func updateBackpack (C,mk) = if ((gQ.caller != di))
2740+@Callable(gP)
2741+func updateBackpack (B,mi) = if ((gP.caller != dj))
27452742 then throw("permission denied")
2746- else $Tuple2([StringEntry(bO(C), mk)], mk)
2747-
2748-
2749-
2750-@Callable(gQ)
2743+ else $Tuple2([StringEntry(bN(B), mi)], mi)
2744+
2745+
2746+
2747+@Callable(gP)
27512748 func commitForRandom () = {
2752- let ls = lo(gQ)
2753- let ml = (height + dv)
2754- let d = toString(gQ.caller)
2755- $Tuple2(([IntegerEntry(dw(d), ml)] ++ ls), ml)
2756- }
2757-
2758-
2759-
2760-@Callable(gQ)
2749+ let lq = lm(gP)
2750+ let mj = (height + dw)
2751+ let c = toString(gP.caller)
2752+ $Tuple2(([IntegerEntry(dx(c), mj)] ++ lq), mj)
2753+ }
2754+
2755+
2756+
2757+@Callable(gP)
27612758 func buySLand () = {
2762- let ls = lo(gQ)
2763- if ((size(gQ.payments) != 1))
2759+ let lq = lm(gP)
2760+ if ((size(gP.payments) != 1))
27642761 then throw("Exactly one payment required")
27652762 else {
2766- let lt = value(gQ.payments[0])
2767- if ((lt.assetId != cD))
2763+ let lr = value(gP.payments[0])
2764+ if ((lr.assetId != cD))
27682765 then throw("Allowed USDT payment only!")
2769- else if ((lt.amount != em))
2766+ else if ((lr.amount != el))
2767+ then throw(("Payment attached should be " + toString(el)))
2768+ else {
2769+ let fo = iN(gP.caller, gP.transactionId)
2770+ let mk = dG(invoke(dn, "burnAcres", [em], nil))
2771+ $Tuple2((((fo._1 :+ ScriptTransfer(dj, lr.amount, cD)) ++ kk(toString(gP.caller), ac)._1) ++ lq), $Tuple2(fo._2._1, mk))
2772+ }
2773+ }
2774+ }
2775+
2776+
2777+
2778+@Callable(gP)
2779+func expedition (iV,iW) = {
2780+ let lq = lm(gP)
2781+ if ((size(gP.payments) != 0))
2782+ then throw("No payments required")
2783+ else {
2784+ let bQ = toString(gP.caller)
2785+ let hu = iU(bQ, iV, iW)
2786+ let B = hu._2
2787+ let jg = A(B)
2788+ let hQ = bN(B)
2789+ let it = hP(hQ)
2790+ let jV = split(it[bo], "_")
2791+ let jX = makeString(fi(true, jV, ek), "_")
2792+ let gC = G(B)
2793+ let lF = valueOrElse(getString(gC), ",;,_,;,_,;,_,;,_,;,_,;,")
2794+ let ml = fp(lF, hu._5)
2795+ let lH = ml._1
2796+ let lI = ml._2
2797+ let mm = iN(gP.caller, gP.transactionId)
2798+ let iT = mm._2._1
2799+ let fo = if ((0 >= hu._1))
2800+ then $Tuple3([IntegerEntry(jg, 0), StringEntry(gC, lH)], "", 0)
2801+ else $Tuple3((mm._1 ++ (if (lI)
2802+ then [StringEntry(M(B), "0_0_0_0_0")]
2803+ else ((((nil :+ StringEntry(bO(B), makeString([mm._2._2, "L", iT], "_"))) :+ IntegerEntry(jg, hu._1)) :+ StringEntry(gC, lH)) :+ StringEntry(hQ, makeString([it[bm], it[bn], jX, it[bp]], ":"))))), iT, hu._3)
2804+ if (ku(B))
2805+ then throw("expedition_checkTournament")
2806+ else if (kv(B))
2807+ then throw("expedition_checkDelivery")
2808+ else {
2809+ let mk = dG(invoke(dn, "burnAcres", [em], nil))
2810+ $Tuple2(((fo._1 ++ ke(B, ac)._1) ++ lq), $Tuple3(fo._2, fo._3, mk))
2811+ }
2812+ }
2813+ }
2814+
2815+
2816+
2817+@Callable(gP)
2818+func buySLandForAcres () = {
2819+ let lq = lm(gP)
2820+ if ((size(gP.payments) != 1))
2821+ then throw("exactly 1 payment must be attached")
2822+ else {
2823+ let lr = gP.payments[0]
2824+ let fv = lr.amount
2825+ if (if (!(isDefined(lr.assetId)))
2826+ then true
2827+ else (value(lr.assetId) != dv))
2828+ then throw("ACRES payments only!")
2829+ else if ((fv != em))
27702830 then throw(("Payment attached should be " + toString(em)))
27712831 else {
2772- let fp = iO(gQ.caller, gQ.transactionId)
2773- let mm = dF(invoke(dm, "burnAcres", [en], nil))
2774- $Tuple2((((fp._1 :+ ScriptTransfer(di, lt.amount, cD)) ++ kl(toString(gQ.caller), ad)._1) ++ ls), $Tuple2(fp._2._1, mm))
2832+ let fo = iN(gP.caller, gP.transactionId)
2833+ let mk = dG(invoke(dn, "burnAcres", [em], [AttachedPayment(dv, fv)]))
2834+ $Tuple2(((fo._1 ++ kk(toString(gP.caller), ac)._1) ++ lq), $Tuple2(fo._2._1, mk))
27752835 }
27762836 }
27772837 }
27782838
27792839
27802840
2781-@Callable(gQ)
2782-func expedition (iW,iX) = {
2783- let ls = lo(gQ)
2784- if ((size(gQ.payments) != 0))
2841+@Callable(gP)
2842+func upgradeInfra (Q) = {
2843+ let lq = lm(gP)
2844+ if ((size(gP.payments) != 0))
27852845 then throw("No payments required")
27862846 else {
2787- let bR = toString(gQ.caller)
2788- let hv = iV(bR, iW, iX)
2789- let C = hv._2
2790- let jh = B(C)
2791- let hR = bO(C)
2792- let iu = hQ(hR)
2793- let jW = split(iu[bp], "_")
2794- let jY = makeString(fj(true, jW, el), "_")
2795- let gD = H(C)
2796- let lH = valueOrElse(getString(gD), ",;,_,;,_,;,_,;,_,;,_,;,")
2797- let mn = fq(lH, hv._5)
2798- let lJ = mn._1
2799- let lK = mn._2
2800- let mo = iO(gQ.caller, gQ.transactionId)
2801- let iU = mo._2._1
2802- let fp = if ((0 >= hv._1))
2803- then $Tuple3([IntegerEntry(jh, 0), StringEntry(gD, lJ)], "", 0)
2804- else $Tuple3((mo._1 ++ (if (lK)
2805- then [StringEntry(N(C), "0_0_0_0_0")]
2806- else ((((nil :+ StringEntry(bP(C), makeString([mo._2._2, "L", iU], "_"))) :+ IntegerEntry(jh, hv._1)) :+ StringEntry(gD, lJ)) :+ StringEntry(hR, makeString([iu[bn], iu[bo], jY, iu[bq]], ":"))))), iU, hv._3)
2807- if (kv(C))
2808- then throw("expedition_checkTournament")
2809- else if (kw(C))
2810- then throw("expedition_checkDelivery")
2811- else {
2812- let mm = dF(invoke(dm, "burnAcres", [en], nil))
2813- $Tuple2(((fp._1 ++ kf(C, ad)._1) ++ ls), $Tuple3(fp._2, fp._3, mm))
2814- }
2815- }
2816- }
2817-
2818-
2819-
2820-@Callable(gQ)
2821-func buySLandForAcres () = {
2822- let ls = lo(gQ)
2823- if ((size(gQ.payments) != 1))
2824- then throw("exactly 1 payment must be attached")
2825- else {
2826- let lt = gQ.payments[0]
2827- let fw = lt.amount
2828- if (if (!(isDefined(lt.assetId)))
2829- then true
2830- else (value(lt.assetId) != du))
2831- then throw("ACRES payments only!")
2832- else if ((fw != en))
2833- then throw(("Payment attached should be " + toString(en)))
2834- else {
2835- let fp = iO(gQ.caller, gQ.transactionId)
2836- let mm = dF(invoke(dm, "burnAcres", [en], [AttachedPayment(du, fw)]))
2837- $Tuple2(((fp._1 ++ kl(toString(gQ.caller), ad)._1) ++ ls), $Tuple2(fp._2._1, mm))
2838- }
2839- }
2840- }
2841-
2842-
2843-
2844-@Callable(gQ)
2845-func upgradeInfra (R) = {
2846- let ls = lo(gQ)
2847- if ((size(gQ.payments) != 0))
2847+ let fo = jP(true, gP.caller, 0, Q)
2848+ let B = valueOrErrorMessage(getString(bM(toString(gP.caller))), "You don't have a duck staked")
2849+ $Tuple2(((fo._1 ++ lq) ++ ke(B, fraction(ad, fo._3, cL))._1), fo._2)
2850+ }
2851+ }
2852+
2853+
2854+
2855+@Callable(gP)
2856+func activateArtifact (mn,mo) = {
2857+ let lq = lm(gP)
2858+ if ((size(gP.payments) != 0))
28482859 then throw("No payments required")
28492860 else {
2850- let fp = jQ(true, gQ.caller, 0, R)
2851- let C = valueOrErrorMessage(getString(bN(toString(gQ.caller))), "You don't have a duck staked")
2852- $Tuple2(((fp._1 ++ ls) ++ kf(C, fraction(ae, fp._3, cK))._1), fp._2)
2853- }
2854- }
2855-
2856-
2857-
2858-@Callable(gQ)
2859-func activateArtifact (mp,mq) = {
2860- let ls = lo(gQ)
2861- if ((size(gQ.payments) != 0))
2861+ let c = toString(gP.caller)
2862+ let fo = {
2863+ let cE = mn
2864+ if (("PRESALE" == cE))
2865+ then ks(c, mo)
2866+ else if (("ONBOARD" == cE))
2867+ then kl(c)
2868+ else throw("Unknown artifact")
2869+ }
2870+ (fo ++ lq)
2871+ }
2872+ }
2873+
2874+
2875+
2876+@Callable(gP)
2877+func mergeLands (kJ) = {
2878+ let lq = lm(gP)
2879+ if ((size(gP.payments) != 0))
28622880 then throw("No payments required")
28632881 else {
2864- let d = toString(gQ.caller)
2865- let fp = {
2866- let cE = mp
2867- if (("PRESALE" == cE))
2868- then kt(d, mq)
2869- else if (("ONBOARD" == cE))
2870- then km(d)
2871- else throw("Unknown artifact")
2872- }
2873- (fp ++ ls)
2874- }
2875- }
2876-
2877-
2878-
2879-@Callable(gQ)
2880-func mergeLands (kL) = {
2881- let ls = lo(gQ)
2882- if ((size(gQ.payments) != 0))
2882+ let fo = lh(toString(gP.caller), kJ)
2883+ $Tuple2(((fo._1 ++ lq) ++ kk(toString(gP.caller), ae)._1), fo._2)
2884+ }
2885+ }
2886+
2887+
2888+
2889+@Callable(gP)
2890+func cargoExchange (mp,Q) = {
2891+ let lq = lm(gP)
2892+ if ((size(gP.payments) != 0))
28832893 then throw("No payments required")
28842894 else {
2885- let fp = lj(toString(gQ.caller), kL)
2886- $Tuple2(((fp._1 ++ ls) ++ kl(toString(gQ.caller), af)._1), fp._2)
2887- }
2888- }
2889-
2890-
2891-
2892-@Callable(gQ)
2893-func cargoExchange (mr,R) = {
2894- let ls = lo(gQ)
2895- if ((size(gQ.payments) != 0))
2896- then throw("No payments required")
2897- else {
2898- let it = split_4C(mr, ":")
2899- let d = toString(gQ.originCaller)
2900- let jy = value(assetInfo(fromBase58String(R)))
2901- let jz = bx(R)
2902- if (!(isDefined(getInteger(jz))))
2903- then throw((jy.name + " is not staked"))
2895+ let is = split_4C(mp, ":")
2896+ let c = toString(gP.originCaller)
2897+ let jx = value(assetInfo(fromBase58String(Q)))
2898+ let jy = bw(Q)
2899+ if (!(isDefined(getInteger(jy))))
2900+ then throw((jx.name + " is not staked"))
29042901 else {
2905- let jB = valueOrErrorMessage(getString(bu(R)), (("NFT " + jy.name) + " is orphaned"))
2906- if ((jB != d))
2907- then throw((aG + " is not yours"))
2902+ let jA = valueOrErrorMessage(getString(bt(Q)), (("NFT " + jx.name) + " is orphaned"))
2903+ if ((jA != c))
2904+ then throw((aF + " is not yours"))
29082905 else {
2909- let if = (dN(split(jy.description, "_")[do]) / cL)
2910- let ig = valueOrElse(getInteger(bE(R)), 0)
2911- let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
2912- let jw = valueOrElse(getString(bP(C)), aN)
2913- let cl = split(value(jw), "_")
2914- if ((cl[bs] != "L"))
2915- then throw((("Duck location type is " + cl[bs]) + ", but should be L"))
2916- else if ((cl[bt] != R))
2917- then throw(("Duck should be on the land " + R))
2906+ let ie = (dL(split(jx.description, "_")[dp]) / cM)
2907+ let if = valueOrElse(getInteger(bD(Q)), 0)
2908+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
2909+ let jv = valueOrElse(getString(bO(B)), aM)
2910+ let ck = split(value(jv), "_")
2911+ if ((ck[br] != "L"))
2912+ then throw((("Duck location type is " + ck[br]) + ", but should be L"))
2913+ else if ((ck[bs] != Q))
2914+ then throw(("Duck should be on the land " + Q))
29182915 else {
2919- let ie = bD(R)
2920- let hV = id(ie, if, ig)
2921- let hR = bO(C)
2922- let iu = hQ(hR)
2923- let fp = is(it, hV, iu)
2924- let im = split(hV[bi], "_")
2925- let jN = (parseIntValue(im[bk]) + fp._7)
2926- let jO = (parseIntValue(im[bl]) - fp._7)
2927- ([StringEntry(hR, makeString_2C([iu[bn], fp._4, fp._5, fp._6], ":")), StringEntry(ie, makeString_2C([hV[be], fp._1, fp._2, fp._3, makeString([im[bj], toString(jN), toString(jO), im[bm]], "_")], ":"))] ++ ls)
2916+ let id = bC(Q)
2917+ let hU = ic(id, ie, if)
2918+ let hQ = bN(B)
2919+ let it = hP(hQ)
2920+ let fo = ir(is, hU, it)
2921+ let il = split(hU[bh], "_")
2922+ let jM = (parseIntValue(il[bj]) + fo._7)
2923+ let jN = (parseIntValue(il[bk]) - fo._7)
2924+ ([StringEntry(hQ, makeString_2C([it[bm], fo._4, fo._5, fo._6], ":")), StringEntry(id, makeString_2C([hU[bd], fo._1, fo._2, fo._3, makeString([il[bi], toString(jM), toString(jN), il[bl]], "_")], ":"))] ++ lq)
29282925 }
29292926 }
29302927 }
29332930
29342931
29352932
2936-@Callable(gQ)
2937-func saveWarehouse (ii,R) = if ((gQ.caller != di))
2933+@Callable(gP)
2934+func saveWarehouse (ih,Q) = if ((gP.caller != dj))
29382935 then throw("Access denied")
29392936 else {
2940- let ie = bD(R)
2941- let ij = split_4C(ii, ":")
2942- if ((size(ij) != 5))
2937+ let id = bC(Q)
2938+ let ii = split_4C(ih, ":")
2939+ if ((size(ii) != 5))
29432940 then throw("warehouse string should contain 4 ':' separators")
29442941 else {
2945- let ms = split(ij[bi], "_")[bj]
2946- let jN = hU(ij)
2947- let mt = hS(ij[be])
2948- let jO = ((mt - parseIntValue(ms)) - jN)
2949- let mu = makeString_2C([ij[be], ij[bf], ij[bg], ij[bh], makeString([ms, toString(jN), toString(jO), toString(mt)], "_")], ":")
2950- $Tuple2([StringEntry(ie, mu)], mu)
2942+ let mq = split(ii[bh], "_")[bi]
2943+ let jM = hT(ii)
2944+ let mr = hR(ii[bd])
2945+ let jN = ((mr - parseIntValue(mq)) - jM)
2946+ let ms = makeString_2C([ii[bd], ii[be], ii[bf], ii[bg], makeString([mq, toString(jM), toString(jN), toString(mr)], "_")], ":")
2947+ $Tuple2([StringEntry(id, ms)], ms)
29512948 }
29522949 }
29532950
29542951
29552952
2956-@Callable(gQ)
2957-func fixWarehouseFormat (R) = if ((gQ.caller != dh))
2953+@Callable(gP)
2954+func fixWarehouseFormat (Q) = if ((gP.caller != di))
29582955 then throw("Access denied")
29592956 else {
2960- let ie = bD(R)
2961- let jy = value(assetInfo(fromBase58String(R)))
2962- let if = (dN(split(jy.description, "_")[do]) / cL)
2963- let ig = valueOrElse(getInteger(bE(R)), 0)
2964- let ij = id(ie, if, ig)
2965- let ms = dF(invoke(di, "recalcLockedVolumeREADONLY", [R, ij], nil))
2966- let jN = hU(ij)
2967- let mt = hS(ij[be])
2968- let jO = ((mt - ms) - jN)
2969- let mu = makeString_2C([ij[be], ij[bf], ij[bg], ij[bh], makeString([toString(ms), toString(jN), toString(jO), toString(mt)], "_")], ":")
2970- $Tuple2([StringEntry(ie, mu)], mu)
2957+ let id = bC(Q)
2958+ let jx = value(assetInfo(fromBase58String(Q)))
2959+ let ie = (dL(split(jx.description, "_")[dp]) / cM)
2960+ let if = valueOrElse(getInteger(bD(Q)), 0)
2961+ let ii = ic(id, ie, if)
2962+ let mq = dG(invoke(dj, "recalcLockedVolumeREADONLY", [Q, ii], nil))
2963+ let jM = hT(ii)
2964+ let mr = hR(ii[bd])
2965+ let jN = ((mr - mq) - jM)
2966+ let ms = makeString_2C([ii[bd], ii[be], ii[bf], ii[bg], makeString([toString(mq), toString(jM), toString(jN), toString(mr)], "_")], ":")
2967+ $Tuple2([StringEntry(id, ms)], ms)
29712968 }
29722969
29732970
29742971
2975-@Callable(gQ)
2976-func fixContinentProportions (kL) = if ((gQ.caller != dh))
2972+@Callable(gP)
2973+func fixContinentProportions (kJ) = if ((gP.caller != di))
29772974 then throw("Access denied")
29782975 else {
2979- func mv (eX,mw) = (eX :+ valueOrElse(getString(dy(mw)), "0_0_0_0_0_0"))
2980-
2981- let gA = {
2982- let eZ = aV
2983- let fa = size(eZ)
2984- let fb = nil
2985- func fc (fd,fe) = if ((fe >= fa))
2986- then fd
2987- else mv(fd, eZ[fe])
2988-
2989- func ff (fd,fe) = if ((fe >= fa))
2990- then fd
2976+ func mt (eW,mu) = (eW :+ valueOrElse(getString(dz(mu)), "0_0_0_0_0_0"))
2977+
2978+ let gz = {
2979+ let eY = aU
2980+ let eZ = size(eY)
2981+ let fa = nil
2982+ func fb (fc,fd) = if ((fd >= eZ))
2983+ then fc
2984+ else mt(fc, eY[fd])
2985+
2986+ func fe (fc,fd) = if ((fd >= eZ))
2987+ then fc
29912988 else throw("List size exceeds 5")
29922989
2993- ff(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5)
2994- }
2995- func mx (eX,R) = {
2996- let jy = value(assetInfo(fromBase58String(R)))
2997- let jC = split(jy.description, "_")
2998- let if = (dN(jC[do]) / cL)
2999- let mw = jC[dq]
3000- let gM = gS(jC[dp])
3001- let hu = value(indexOf(aV, mw))
3002- let la = split(eX[hu], "_")
3003- let my = makeString(gK(la, gM, if, 1), "_")
3004- let cE = mw
2990+ fe(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5)
2991+ }
2992+ func mv (eW,Q) = {
2993+ let jx = value(assetInfo(fromBase58String(Q)))
2994+ let jB = split(jx.description, "_")
2995+ let ie = (dL(jB[dp]) / cM)
2996+ let mu = jB[dr]
2997+ let gL = gR(jB[dq])
2998+ let ht = value(indexOf(aU, mu))
2999+ let kY = split(eW[ht], "_")
3000+ let mw = makeString(gJ(kY, gL, ie, 1), "_")
3001+ let cE = mu
30053002 if (("Americas" == cE))
3006- then [my, eX[1], eX[2], eX[3], eX[4]]
3003+ then [mw, eW[1], eW[2], eW[3], eW[4]]
30073004 else if (("Europe" == cE))
3008- then [eX[0], my, eX[2], eX[3], eX[4]]
3005+ then [eW[0], mw, eW[2], eW[3], eW[4]]
30093006 else if (("Asia" == cE))
3010- then [eX[0], eX[1], my, eX[3], eX[4]]
3007+ then [eW[0], eW[1], mw, eW[3], eW[4]]
30113008 else if (("Africa" == cE))
3012- then [eX[0], eX[1], eX[2], my, eX[4]]
3009+ then [eW[0], eW[1], eW[2], mw, eW[4]]
30133010 else if (("Oceania" == cE))
3014- then [eX[0], eX[1], eX[2], eX[3], my]
3011+ then [eW[0], eW[1], eW[2], eW[3], mw]
30153012 else throw("wrong continent")
30163013 }
30173014
3018- let fi = {
3019- let eZ = kL
3020- let fa = size(eZ)
3021- let fb = gA
3022- func hL (fd,fe) = if ((fe >= fa))
3023- then fd
3024- else mx(fd, eZ[fe])
3025-
3026- func hM (fd,fe) = if ((fe >= fa))
3027- then fd
3015+ let fh = {
3016+ let eY = kJ
3017+ let eZ = size(eY)
3018+ let fa = gz
3019+ func hK (fc,fd) = if ((fd >= eZ))
3020+ then fc
3021+ else mv(fc, eY[fd])
3022+
3023+ func hL (fc,fd) = if ((fd >= eZ))
3024+ then fc
30283025 else throw("List size exceeds 100")
30293026
3030- hM(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(fb, 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)
3031- }
3032- $Tuple2([StringEntry(dy("Americas"), fi[0]), StringEntry(dy("Europe"), fi[1]), StringEntry(dy("Asia"), fi[2]), StringEntry(dy("Africa"), fi[3]), StringEntry(dy("Oceania"), fi[4])], 0)
3027+ hL(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(fa, 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)
3028+ }
3029+ $Tuple2([StringEntry(dz("Americas"), fh[0]), StringEntry(dz("Europe"), fh[1]), StringEntry(dz("Asia"), fh[2]), StringEntry(dz("Africa"), fh[3]), StringEntry(dz("Oceania"), fh[4])], 0)
30333030 }
30343031
30353032
30363033
3037-@Callable(gQ)
3038-func fixStakedPieces (cS) = if ((gQ.caller != dh))
3034+@Callable(gP)
3035+func fixStakedPieces (cT) = if ((gP.caller != di))
30393036 then throw("Access denied")
30403037 else {
3041- let le = if ((cS == ""))
3038+ let lc = if ((cT == ""))
30423039 then 0
30433040 else {
3044- let kX = getString(ar, dA(cS))
3045- let kT = if (isDefined(kX))
3046- then split_51C(value(kX), "_")
3041+ let kV = getString(aq, dB(cT))
3042+ let kR = if (isDefined(kV))
3043+ then split_51C(value(kV), "_")
30473044 else nil
3048- func mz (eX,R) = {
3049- let jy = value(assetInfo(fromBase58String(R)))
3050- let dO = split(jy.description, "_")[do]
3051- (eX + dN(dO))
3045+ func mx (eW,Q) = {
3046+ let jx = value(assetInfo(fromBase58String(Q)))
3047+ let dM = split(jx.description, "_")[dp]
3048+ (eW + dL(dM))
30523049 }
30533050
3054- let eZ = kT
3055- let fa = size(eZ)
3056- let fb = 0
3057- func fc (fd,fe) = if ((fe >= fa))
3058- then fd
3059- else mz(fd, eZ[fe])
3060-
3061- func ff (fd,fe) = if ((fe >= fa))
3062- then fd
3051+ let eY = kR
3052+ let eZ = size(eY)
3053+ let fa = 0
3054+ func fb (fc,fd) = if ((fd >= eZ))
3055+ then fc
3056+ else mx(fc, eY[fd])
3057+
3058+ func fe (fc,fd) = if ((fd >= eZ))
3059+ then fc
30633060 else throw("List size exceeds 100")
30643061
3065- ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 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)
3062+ fe(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fa, 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)
30663063 }
3067- $Tuple2([IntegerEntry(dB(cS), le)], le)
3064+ $Tuple2([IntegerEntry(dC(cT), lc)], lc)
30683065 }
30693066
30703067
30713068
3072-@Callable(gQ)
3073-func setCustomName (bv,kV,bz) = {
3074- let ls = lo(gQ)
3075- if ((size(gQ.payments) != 1))
3069+@Callable(gP)
3070+func setCustomName (bu,kT,by) = {
3071+ let lq = lm(gP)
3072+ if ((size(gP.payments) != 1))
30763073 then throw("Exactly one payment required")
30773074 else {
3078- let lt = value(gQ.payments[0])
3079- if ((lt.assetId != cD))
3075+ let lr = value(gP.payments[0])
3076+ if ((lr.assetId != cD))
30803077 then throw("Allowed USDT payment only!")
3081- else if ((lt.amount != ei))
3082- then throw(("Payment should be " + toString(ei)))
3083- else if (contains(kV, "__"))
3084- then throw(("Name should not contain '__': " + kV))
3085- else if ((size(kV) > ej))
3086- then throw(("Name too long, maxLength=" + toString(ej)))
3078+ else if ((lr.amount != eh))
3079+ then throw(("Payment should be " + toString(eh)))
3080+ else if (contains(kT, "__"))
3081+ then throw(("Name should not contain '__': " + kT))
3082+ else if ((size(kT) > ei))
3083+ then throw(("Name too long, maxLength=" + toString(ei)))
30873084 else {
3088- let d = toString(gQ.originCaller)
3089- let mA = {
3090- let cE = bz
3085+ let c = toString(gP.originCaller)
3086+ let my = {
3087+ let cE = by
30913088 if (("ACCOUNT" == cE))
30923089 then {
3093- let mB = eD(kV)
3094- let mC = getString(mB)
3095- if (isDefined(mC))
3096- then throw(("Name already registered: " + kV))
3090+ let mz = eC(kT)
3091+ let mA = getString(mz)
3092+ if (isDefined(mA))
3093+ then throw(("Name already registered: " + kT))
30973094 else {
3098- let mD = bH(d)
3099- let mE = getString(mD)
3100- let mF = if (isDefined(mE))
3101- then [DeleteEntry(eD(value(mE)))]
3095+ let mB = bG(c)
3096+ let mC = getString(mB)
3097+ let mD = if (isDefined(mC))
3098+ then [DeleteEntry(eC(value(mC)))]
31023099 else nil
3103- (((mF :+ StringEntry(mD, kV)) :+ StringEntry(mB, d)) ++ kl(d, ac)._1)
3100+ (((mD :+ StringEntry(mB, kT)) :+ StringEntry(mz, c)) ++ kk(c, ab)._1)
31043101 }
31053102 }
31063103 else if (("LAND" == cE))
31073104 then {
3108- let jy = value(assetInfo(fromBase58String(bv)))
3109- let jz = bx(bv)
3110- if (!(isDefined(getInteger(jz))))
3111- then throw((jy.name + " is not staked"))
3105+ let jx = value(assetInfo(fromBase58String(bu)))
3106+ let jy = bw(bu)
3107+ if (!(isDefined(getInteger(jy))))
3108+ then throw((jx.name + " is not staked"))
31123109 else {
3113- let jB = valueOrErrorMessage(getString(bu(bv)), (("NFT " + jy.name) + " is orphaned"))
3114- if ((jB != d))
3115- then throw((aG + " is not yours"))
3110+ let jA = valueOrErrorMessage(getString(bt(bu)), (("NFT " + jx.name) + " is orphaned"))
3111+ if ((jA != c))
3112+ then throw((aF + " is not yours"))
31163113 else {
3117- let mB = ew(kV)
3118- let mC = getString(mB)
3119- if (isDefined(mC))
3120- then throw(("Name already registered: " + kV))
3114+ let mz = ev(kT)
3115+ let mA = getString(mz)
3116+ if (isDefined(mA))
3117+ then throw(("Name already registered: " + kT))
31213118 else {
3122- let mG = bw(bv)
3123- let mE = getString(mG)
3124- let mF = if (isDefined(mE))
3125- then [DeleteEntry(ew(value(mE)))]
3119+ let mE = bv(bu)
3120+ let mC = getString(mE)
3121+ let mD = if (isDefined(mC))
3122+ then [DeleteEntry(ev(value(mC)))]
31263123 else nil
3127- (((mF :+ StringEntry(mG, kV)) :+ StringEntry(mB, bv)) ++ kl(d, ac)._1)
3124+ (((mD :+ StringEntry(mE, kT)) :+ StringEntry(mz, bu)) ++ kk(c, ab)._1)
31283125 }
31293126 }
31303127 }
31313128 }
31323129 else if (("DUCK" == cE))
31333130 then {
3134- let jy = value(assetInfo(fromBase58String(bv)))
3135- let jz = bx(bv)
3136- if (if (!(isDefined(getInteger(jz))))
3131+ let jx = value(assetInfo(fromBase58String(bu)))
3132+ let jy = bw(bu)
3133+ if (if (!(isDefined(getInteger(jy))))
31373134 then true
3138- else !(isDefined(getString(bN(d)))))
3139- then throw((jy.name + " is not staked"))
3135+ else !(isDefined(getString(bM(c)))))
3136+ then throw((jx.name + " is not staked"))
31403137 else {
3141- let jB = valueOrErrorMessage(getString(bM(bv)), (("NFT " + jy.name) + " is orphaned"))
3142- if ((jB != d))
3143- then throw((aH + " is not yours"))
3138+ let jA = valueOrErrorMessage(getString(bL(bu)), (("NFT " + jx.name) + " is orphaned"))
3139+ if ((jA != c))
3140+ then throw((aG + " is not yours"))
31443141 else {
3145- let mB = eC(kV)
3146- let mC = getString(mB)
3147- if (isDefined(mC))
3148- then throw(("Name already registered: " + kV))
3142+ let mz = eB(kT)
3143+ let mA = getString(mz)
3144+ if (isDefined(mA))
3145+ then throw(("Name already registered: " + kT))
31493146 else {
3150- let mG = bG(bv)
3151- let mE = getString(mG)
3152- let mF = if (isDefined(mE))
3153- then [DeleteEntry(eC(value(mE)))]
3147+ let mE = bF(bu)
3148+ let mC = getString(mE)
3149+ let mD = if (isDefined(mC))
3150+ then [DeleteEntry(eB(value(mC)))]
31543151 else nil
3155- (((mF :+ StringEntry(mG, kV)) :+ StringEntry(mB, bv)) ++ kf(bv, ac)._1)
3152+ (((mD :+ StringEntry(mE, kT)) :+ StringEntry(mz, bu)) ++ ke(bu, ab)._1)
31563153 }
31573154 }
31583155 }
31593156 }
31603157 else throw("Unknown entity type")
31613158 }
3162- $Tuple2(((mA :+ ScriptTransfer(di, lt.amount, cD)) ++ ls), 0)
3159+ $Tuple2(((my :+ ScriptTransfer(dj, lr.amount, cD)) ++ lq), 0)
31633160 }
31643161 }
31653162 }
31663163
31673164
31683165
3169-@Callable(gQ)
3170-func setReferrals (mH,mI) = if ((gQ.callerPublicKey != ef))
3166+@Callable(gP)
3167+func setReferrals (mF,mG) = if ((gP.callerPublicKey != ee))
31713168 then throw("Permission denied")
31723169 else {
3173- let ls = lo(gQ)
3174- if ((size(gQ.payments) != 0))
3170+ let lq = lm(gP)
3171+ if ((size(gP.payments) != 0))
31753172 then throw("No payments required")
3176- else if (!(isDefined(addressFromString(mH))))
3177- then throw(("Invalid address: " + mH))
3178- else if (!(isDefined(addressFromString(mI))))
3179- then throw(("Invalid address: " + mI))
3173+ else if (!(isDefined(addressFromString(mF))))
3174+ then throw(("Invalid address: " + mF))
3175+ else if (!(isDefined(addressFromString(mG))))
3176+ then throw(("Invalid address: " + mG))
31803177 else {
3181- let mJ = eE()
3182- let mK = getString(mJ)
3183- let mL = if (isDefined(mK))
3184- then split_4C(value(mK), "_")
3178+ let mH = eD()
3179+ let mI = getString(mH)
3180+ let mJ = if (isDefined(mI))
3181+ then split_4C(value(mI), "_")
31853182 else nil
3186- if (containsElement(mL, mI))
3187- then throw((mI + " is not newbie (already has referrals)"))
3183+ if (containsElement(mJ, mG))
3184+ then throw((mG + " is not newbie (already has referrals)"))
31883185 else {
3189- let kn = bI(mI)
3190- let ko = getString(kn)
3191- if (if (isDefined(ko))
3192- then isDefined(addressFromString(value(ko)))
3186+ let km = bH(mG)
3187+ let kn = getString(km)
3188+ if (if (isDefined(kn))
3189+ then isDefined(addressFromString(value(kn)))
31933190 else false)
3194- then throw(((mI + " already has refBy: ") + value(ko)))
3191+ then throw(((mG + " already has refBy: ") + value(kn)))
31953192 else {
3196- let mM = bL(mH)
3197- let mN = getString(mM)
3198- let mO = if (isDefined(mN))
3199- then split_4C(value(mN), "_")
3193+ let mK = bK(mF)
3194+ let mL = getString(mK)
3195+ let mM = if (isDefined(mL))
3196+ then split_4C(value(mL), "_")
32003197 else nil
3201- if (containsElement(mO, mI))
3202- then throw((((mH + " already contains ") + mI) + " within referrals"))
3198+ if (containsElement(mM, mG))
3199+ then throw((((mF + " already contains ") + mG) + " within referrals"))
32033200 else {
3204- let mP = makeString_2C((mO :+ mI), "_")
3205- let mQ = if (containsElement(mL, mH))
3206- then value(mK)
3207- else makeString_2C((mL :+ mH), "_")
3208- $Tuple2(([StringEntry(kn, mH), StringEntry(mM, mP), StringEntry(mJ, mQ)] ++ ls), 0)
3201+ let mN = makeString_2C((mM :+ mG), "_")
3202+ let mO = if (containsElement(mJ, mF))
3203+ then value(mI)
3204+ else makeString_2C((mJ :+ mF), "_")
3205+ $Tuple2(([StringEntry(km, mF), StringEntry(mK, mN), StringEntry(mH, mO)] ++ lq), 0)
32093206 }
32103207 }
32113208 }
32143211
32153212
32163213
3217-@Callable(gQ)
3218-func distributePoints (mR,mS,mT,mU,mV) = {
3219- let ls = lo(gQ)
3220- if ((size(gQ.payments) != 0))
3214+@Callable(gP)
3215+func distributePoints (mP,mQ,mR,mS,mT) = {
3216+ let lq = lm(gP)
3217+ if ((size(gP.payments) != 0))
32213218 then throw("No payments required")
32223219 else {
3223- let d = toString(gQ.originCaller)
3224- let mW = dH(invoke(dk, "checkWlgXpREADONLY", [d], nil))
3225- let mX = dF(mW[1])
3226- let mY = if ((0 >= mX))
3220+ let c = toString(gP.originCaller)
3221+ let mU = dI(invoke(dl, "checkWlgXpREADONLY", [c], nil))
3222+ let mV = dG(mU[1])
3223+ let mW = if ((0 >= mV))
32273224 then $Tuple2(0, nil)
32283225 else {
3229- let kg = dF(invoke(dk, "takeWlgXp", [d], nil))
3230- if ((kg == kg))
3231- then $Tuple2(mX, [IntegerEntry(J(d), dF(mW[0])), IntegerEntry(I(d), dF(mW[2]))])
3226+ let kf = dG(invoke(dl, "takeWlgXp", [c], nil))
3227+ if ((kf == kf))
3228+ then $Tuple2(mV, [IntegerEntry(I(c), dG(mU[0])), IntegerEntry(H(c), dG(mU[2]))])
32323229 else throw("Strict value is not equal to itself.")
32333230 }
3234- let mZ = mY._1
3235- let na = mY._2
3236- let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
3237- let nb = K(d)
3238- let nc = (valueOrElse(getInteger(nb), 0) + mZ)
3239- let nd = G(C)
3240- let ne = valueOrElse(getInteger(nd), 0)
3241- let nf = (nc + ne)
3242- let ng = ((((mR + mS) + mT) + mU) + mV)
3243- if ((ng > nf))
3244- then throw((("There are only " + toString(nf)) + " free points to distribute"))
3231+ let mX = mW._1
3232+ let mY = mW._2
3233+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
3234+ let mZ = J(c)
3235+ let na = (valueOrElse(getInteger(mZ), 0) + mX)
3236+ let nb = F(B)
3237+ let nc = valueOrElse(getInteger(nb), 0)
3238+ let nd = (na + nc)
3239+ let ne = ((((mP + mQ) + mR) + mS) + mT)
3240+ if ((ne > nd))
3241+ then throw((("There are only " + toString(nd)) + " free points to distribute"))
32453242 else {
3246- let nh = D(C)
3247- let au = split(valueOrElse(getString(nh), "0_0_0_0_0"), "_")
3248- let ni = (nc - ng)
3249- $Tuple2((([IntegerEntry(nb, if ((0 > ni))
3243+ let nf = C(B)
3244+ let at = split(valueOrElse(getString(nf), "0_0_0_0_0"), "_")
3245+ let ng = (na - ne)
3246+ $Tuple2((([IntegerEntry(mZ, if ((0 > ng))
32503247 then 0
3251- else ni), IntegerEntry(nd, if ((0 > ni))
3252- then (ne + ni)
3253- else ne), StringEntry(nh, makeString([toString((parseIntValue(au[m]) + mR)), toString((parseIntValue(au[n]) + mS)), toString((parseIntValue(au[o]) + mT)), toString((parseIntValue(au[p]) + mU)), toString((parseIntValue(au[q]) + mV))], "_"))] ++ ls) ++ na), 0)
3248+ else ng), IntegerEntry(nb, if ((0 > ng))
3249+ then (nc + ng)
3250+ else nc), StringEntry(nf, makeString([toString((parseIntValue(at[l]) + mP)), toString((parseIntValue(at[m]) + mQ)), toString((parseIntValue(at[n]) + mR)), toString((parseIntValue(at[o]) + mS)), toString((parseIntValue(at[p]) + mT))], "_"))] ++ lq) ++ mY), 0)
32543251 }
32553252 }
32563253 }
32573254
32583255
32593256
3260-@Callable(gQ)
3261-func splitByGlobalWeightsREADONLY (eO) = $Tuple2(nil, fg(eO))
3262-
3263-
3264-
3265-@Callable(gQ)
3266-func splitByGlobalAndLocalWeightsREADONLY (nj,nk,gT) = {
3267- let gM = gS(gT)
3268- $Tuple2(nil, $Tuple2(fg(nj), eR(nk, gM)))
3269- }
3270-
3271-
3272-
3273-@Callable(gQ)
3274-func getBackpackREADONLY (C) = $Tuple2(nil, makeString(hQ(bO(C)), ":"))
3275-
3276-
3277-
3278-@Callable(gQ)
3279-func getWarehouseREADONLY (R) = {
3280- let jy = value(assetInfo(fromBase58String(R)))
3281- let if = (dN(split(jy.description, "_")[do]) / cL)
3282- let ig = valueOrElse(getInteger(bE(R)), 0)
3283- $Tuple2(nil, makeString_2C(id(bD(R), if, ig), ":"))
3284- }
3285-
3286-
3287-
3288-@Callable(gQ)
3289-func saveLastTx () = if (!(containsElement([dk, di, dl, dm], gQ.caller)))
3257+@Callable(gP)
3258+func splitByGlobalWeightsREADONLY (eN) = $Tuple2(nil, ff(eN))
3259+
3260+
3261+
3262+@Callable(gP)
3263+func splitByGlobalAndLocalWeightsREADONLY (nh,ni,gS) = {
3264+ let gL = gR(gS)
3265+ $Tuple2(nil, $Tuple2(ff(nh), eQ(ni, gL)))
3266+ }
3267+
3268+
3269+
3270+@Callable(gP)
3271+func getBackpackREADONLY (B) = $Tuple2(nil, makeString(hP(bN(B)), ":"))
3272+
3273+
3274+
3275+@Callable(gP)
3276+func getWarehouseREADONLY (Q) = {
3277+ let jx = value(assetInfo(fromBase58String(Q)))
3278+ let ie = (dL(split(jx.description, "_")[dp]) / cM)
3279+ let if = valueOrElse(getInteger(bD(Q)), 0)
3280+ $Tuple2(nil, makeString_2C(ic(bC(Q), ie, if), ":"))
3281+ }
3282+
3283+
3284+
3285+@Callable(gP)
3286+func saveLastTx () = if (!(containsElement([dl, dj, dm, dn], gP.caller)))
32903287 then throw("Access denied")
3291- else $Tuple2(lo(gQ), 42)
3292-
3293-
3294-
3295-@Callable(gQ)
3296-func updateDuckStats (C,kg) = if ((gQ.caller != di))
3288+ else $Tuple2(lm(gP), 42)
3289+
3290+
3291+
3292+@Callable(gP)
3293+func updateDuckStats (B,kf) = if ((gP.caller != dj))
32973294 then throw("Access denied")
3298- else kf(C, kg)
3299-
3300-
3301-
3302-@Callable(gQ)
3303-func updateAccStats (d,kg) = if (!(containsElement([dk, di, dm], gQ.caller)))
3295+ else ke(B, kf)
3296+
3297+
3298+
3299+@Callable(gP)
3300+func updateAccStats (c,kf) = if (!(containsElement([dl, dj, dn], gP.caller)))
33043301 then throw("Access denied")
3305- else kl(d, kg)
3306-
3307-
3308-
3309-@Callable(gQ)
3310-func equipDuck (nl) = {
3311- let ls = lo(gQ)
3312- if ((size(gQ.payments) != 0))
3302+ else kk(c, kf)
3303+
3304+
3305+
3306+@Callable(gP)
3307+func equipDuck (nj) = {
3308+ let lq = lm(gP)
3309+ if ((size(gP.payments) != 0))
33133310 then throw("No payments required")
33143311 else {
3315- let d = toString(gQ.originCaller)
3316- let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
3317- if (kv(C))
3312+ let c = toString(gP.originCaller)
3313+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
3314+ if (ku(B))
33183315 then throw("equipDuck_checkTournament")
3319- else if (kw(C))
3316+ else if (kv(B))
33203317 then throw("equipDuck_checkDelivery")
33213318 else {
3322- let gD = H(C)
3323- let nm = split(valueOrElse(getString(gD), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3324- let hR = bO(C)
3325- let iu = hQ(hR)
3326- let lJ = split(nl, "_")
3327- if ((size(lJ) != s))
3319+ let gC = G(B)
3320+ let nk = split(valueOrElse(getString(gC), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3321+ let hQ = bN(B)
3322+ let it = hP(hQ)
3323+ let lH = split(nj, "_")
3324+ if ((size(lH) != r))
33283325 then throw("Wrong equipment string")
33293326 else {
3330- let gF = gs(nm, fD(iu[bq]), true, nil)
3331- let gG = split(lJ[r], ";")[1]
3332- let as = if ((gG == ""))
3327+ let gE = gr(nk, fC(it[bp]), true, nil)
3328+ let gF = split(lH[q], ";")[1]
3329+ let ar = if ((gF == ""))
33333330 then 0
33343331 else {
3335- let gH = split(gG, ",")[0]
3336- if ((gH == ""))
3332+ let gG = split(gF, ",")[0]
3333+ if ((gG == ""))
33373334 then 0
33383335 else {
3339- let fS = split(gH, ":")
3340- let dg = fS[0]
3341- let gI = fS[1]
3342- if (if (if (if (if ((dg == "06"))
3336+ let fR = split(gG, ":")
3337+ let dh = fR[0]
3338+ let gH = fR[1]
3339+ if (if (if (if (if ((dh == "06"))
33433340 then true
3344- else (dg == "07"))
3341+ else (dh == "07"))
33453342 then true
3346- else (dg == "08"))
3347- then (gI != "")
3343+ else (dh == "08"))
3344+ then (gH != "")
33483345 else false)
3349- then (parseIntValue(gI) > 0)
3346+ then (parseIntValue(gH) > 0)
33503347 else false)
3351- then parseIntValue(split(aY[parseIntValue(dg)], "_")[ba])
3348+ then parseIntValue(split(aX[parseIntValue(dh)], "_")[aZ])
33523349 else 0
33533350 }
33543351 }
3355- let gn = aq(this, C, as, true)
3356- let gJ = gs(lJ, gF, false, gn)
3357- let nn = fI(gJ)
3358- $Tuple2(([StringEntry(gD, nl), StringEntry(hR, makeString_2C([iu[bn], iu[bo], iu[bp], nn], ":")), StringEntry(N(C), makeString([toString(gn[7]), toString(gn[8]), toString(gn[9]), toString(gn[10]), toString(gn[11])], "_"))] ++ ls), 0)
3352+ let gm = ap(this, B, ar, true)
3353+ let gI = gr(lH, gE, false, gm)
3354+ let nl = fH(gI)
3355+ $Tuple2(([StringEntry(gC, nj), StringEntry(hQ, makeString_2C([it[bm], it[bn], it[bo], nl], ":")), StringEntry(M(B), makeString([toString(gm[7]), toString(gm[8]), toString(gm[9]), toString(gm[10]), toString(gm[11])], "_"))] ++ lq), 0)
33593356 }
33603357 }
33613358 }
33633360
33643361
33653362
3366-@Callable(gQ)
3367-func fortificateLand (R,no) = {
3368- let ls = lo(gQ)
3369- if ((size(gQ.payments) != 0))
3363+@Callable(gP)
3364+func fortificateLand (Q,nm) = {
3365+ let lq = lm(gP)
3366+ if ((size(gP.payments) != 0))
33703367 then throw("No payments required")
33713368 else {
3372- let d = toString(gQ.originCaller)
3373- let C = valueOrElse(getString(bN(d)), "")
3374- let fN = aq(this, C, 0, false)
3375- let np = bF(R)
3376- let nq = split(valueOrElse(getString(np), ":0_15:0_18:0"), "_")
3377- let jy = value(assetInfo(fromBase58String(R)))
3378- let if = (dN(split(jy.description, "_")[do]) / cL)
3379- let ig = valueOrElse(getInteger(bE(R)), 0)
3380- let ie = bD(R)
3381- let ij = id(ie, if, ig)
3382- let nr = split(ij[bi], "_")
3383- let ns = parseIntValue(nr[bk])
3384- let nt = parseIntValue(nr[bl])
3385- let nu = split(no, "_")
3386- let nv = gz(nq, fD(ij[bh]), ns, nt, true, nil)
3387- let gF = nv._1
3388- let nw = nv._2
3389- let nx = nv._3
3390- let ny = gz(nu, gF, nw, nx, false, fN)
3391- let gJ = ny._1
3392- let nz = ny._2
3393- let nA = ny._3
3394- let nn = fI(gJ)
3395- let ke = makeString([nr[bj], toString(nz), toString(nA), nr[bm]], "_")
3396- $Tuple2(([StringEntry(np, no), StringEntry(ie, makeString_2C([ij[be], ij[bf], ij[bg], nn, ke], ":"))] ++ ls), 0)
3397- }
3398- }
3399-
3400-
3401-
3402-@Callable(gQ)
3403-func initDuckTourAttempt (C) = if ((gQ.caller != dl))
3369+ let c = toString(gP.originCaller)
3370+ let B = valueOrElse(getString(bM(c)), "")
3371+ let fM = ap(this, B, 0, false)
3372+ let nn = bE(Q)
3373+ let no = split(valueOrElse(getString(nn), ":0_15:0_18:0"), "_")
3374+ let jx = value(assetInfo(fromBase58String(Q)))
3375+ let ie = (dL(split(jx.description, "_")[dp]) / cM)
3376+ let if = valueOrElse(getInteger(bD(Q)), 0)
3377+ let id = bC(Q)
3378+ let ii = ic(id, ie, if)
3379+ let np = split(ii[bh], "_")
3380+ let nq = parseIntValue(np[bj])
3381+ let nr = parseIntValue(np[bk])
3382+ let ns = split(nm, "_")
3383+ let nt = gy(no, fC(ii[bg]), nq, nr, true, nil)
3384+ let gE = nt._1
3385+ let nu = nt._2
3386+ let nv = nt._3
3387+ let nw = gy(ns, gE, nu, nv, false, fM)
3388+ let gI = nw._1
3389+ let nx = nw._2
3390+ let ny = nw._3
3391+ let nl = fH(gI)
3392+ let kd = makeString([np[bi], toString(nx), toString(ny), np[bl]], "_")
3393+ $Tuple2(([StringEntry(nn, nm), StringEntry(id, makeString_2C([ii[bd], ii[be], ii[bf], nl, kd], ":"))] ++ lq), 0)
3394+ }
3395+ }
3396+
3397+
3398+
3399+@Callable(gP)
3400+func initDuckTourAttempt (B) = if ((gP.caller != dm))
34043401 then throw("Access denied")
34053402 else {
3406- let jh = B(C)
3407- let ji = ak(valueOrElse(getInteger(F(C)), 0))
3408- let kA = valueOrElse(getInteger(jh), ji)
3409- let nB = bP(C)
3410- let jw = valueOrElse(getString(nB), aN)
3411- let ck = valueOrElse(getInteger(dl, bV), 0)
3412- let nC = (toString(ck) + "_T_0")
3413- $Tuple2([IntegerEntry(L(C), kA), IntegerEntry(jh, ji), StringEntry(M(C), jw), StringEntry(nB, nC)], nC)
3403+ let jg = A(B)
3404+ let jh = aj(valueOrElse(getInteger(E(B)), 0))
3405+ let kz = valueOrElse(getInteger(jg), jh)
3406+ let nz = bO(B)
3407+ let jv = valueOrElse(getString(nz), aM)
3408+ let cj = valueOrElse(getInteger(dm, bU), 0)
3409+ let nA = (toString(cj) + "_T_0")
3410+ $Tuple2([IntegerEntry(K(B), kz), IntegerEntry(jg, jh), StringEntry(L(B), jv), StringEntry(nz, nA)], nA)
34143411 }
34153412
34163413
34173414
3418-@Callable(gQ)
3415+@Callable(gP)
34193416 func breakAttempt () = {
3420- let ls = lo(gQ)
3421- let C = valueOrErrorMessage(getString(bN(toString(gQ.caller))), "You don't have a duck staked")
3422- let nB = bP(C)
3423- let jw = valueOrElse(getString(nB), aN)
3424- if ((split(jw, "_")[bs] != "T"))
3417+ let lq = lm(gP)
3418+ let B = valueOrErrorMessage(getString(bM(toString(gP.caller))), "You don't have a duck staked")
3419+ let nz = bO(B)
3420+ let jv = valueOrElse(getString(nz), aM)
3421+ if ((split(jv, "_")[br] != "T"))
34253422 then throw("Your duck is not in the tournament")
34263423 else {
3427- let kG = getIntegerValue(L(C))
3428- let kH = getStringValue(M(C))
3429- $Tuple2(((ls :+ IntegerEntry(B(C), kG)) :+ StringEntry(nB, kH)), jw)
3430- }
3431- }
3432-
3433-
3434-
3435-@Callable(gQ)
3436-func exitTournamentInternal (C) = if ((gQ.caller != this))
3424+ let nB = getIntegerValue(K(B))
3425+ let kF = getStringValue(L(B))
3426+ $Tuple2(((lq :+ IntegerEntry(A(B), nB)) :+ StringEntry(nz, kF)), jv)
3427+ }
3428+ }
3429+
3430+
3431+
3432+@Callable(gP)
3433+func exitTournamentInternal (B) = if ((gP.caller != this))
34373434 then throw("Access denied")
34383435 else {
3439- let kG = getIntegerValue(L(C))
3440- let kH = getStringValue(M(C))
3441- $Tuple2([IntegerEntry(B(C), kG), StringEntry(bP(C), kH)], false)
3436+ let nB = getIntegerValue(K(B))
3437+ let kF = getStringValue(L(B))
3438+ $Tuple2([IntegerEntry(A(B), nB), StringEntry(bO(B), kF)], false)
34423439 }
34433440
34443441
34453442
3446-@Callable(gQ)
3447-func exitDeliveryInternal (C) = if ((gQ.caller != this))
3443+@Callable(gP)
3444+func exitDeliveryInternal (B) = if ((gP.caller != this))
34483445 then throw("Access denied")
34493446 else {
3450- let mo = kx(C, false, 0, 0)
3451- $Tuple2((mo._1 ++ mo._2), false)
3447+ let mm = kw(B, false, 0, 0)
3448+ $Tuple2((mm._1 ++ mm._2), false)
34523449 }
34533450
34543451
34553452
3456-@Callable(gQ)
3457-func autoExitDelivery (C,jb,nD,ky) = if ((gQ.caller != this))
3453+@Callable(gP)
3454+func autoExitDelivery (B,ja,nC,kx) = if ((gP.caller != this))
34583455 then throw("Access denied")
34593456 else {
3460- let mo = kx(C, true, jb, ky)
3461- $Tuple2(mo._1, $Tuple2(mo._3, mo._4))
3457+ let mm = kw(B, true, ja, kx)
3458+ $Tuple2(mm._1, mm._3)
34623459 }
34633460
34643461
34653462
3466-@Callable(gQ)
3467-func prepareRobbery (iW,iX) = {
3468- let ls = lo(gQ)
3469- if (!(sigVerify_8Kb(iW, iX, ef)))
3463+@Callable(gP)
3464+func prepareRobbery (iV,iW) = {
3465+ let lq = lm(gP)
3466+ if (!(sigVerify_8Kb(iV, iW, ee)))
34703467 then throw("signature does not match")
3471- else if ((size(gQ.payments) != 1))
3468+ else if ((size(gP.payments) != 1))
34723469 then throw("exactly 1 payment must be attached")
34733470 else {
3474- let lt = gQ.payments[0]
3475- let nE = lt.amount
3476- if (if (!(isDefined(lt.assetId)))
3471+ let lr = gP.payments[0]
3472+ let nD = lr.amount
3473+ if (if (!(isDefined(lr.assetId)))
34773474 then true
3478- else (value(lt.assetId) != ds))
3475+ else (value(lr.assetId) != dt))
34793476 then throw("WLGOLD payments only!")
34803477 else {
3481- let fv = split(toUtf8String(iW), "|")
3482- if ((size(fv) != 2))
3478+ let fu = split(toUtf8String(iV), "|")
3479+ if ((size(fu) != 2))
34833480 then throw("Wrong message format")
34843481 else {
3485- let C = fv[0]
3486- if (kv(C))
3482+ let B = fu[0]
3483+ if (ku(B))
34873484 then throw("prepareRobbery_checkTournament")
3488- else if (kw(C))
3485+ else if (kv(B))
34893486 then throw("prepareRobbery_checkDelivery")
34903487 else {
3491- let aC = ay(this, C)._1
3492- if ((aC > nE))
3493- then throw(((("Payment " + toString(nE)) + " < required ") + toString(aC)))
3488+ let aB = ax(this, B)._1
3489+ if ((aB > nD))
3490+ then throw(((("Payment " + toString(nD)) + " < required ") + toString(aB)))
34943491 else {
3495- let nF = split(fv[1], "_")
3496- let aB = lastBlock.timestamp
3497- let aD = valueOrElse(getInteger(T(C)), 0)
3498- let aE = valueOrElse(getString(U(C)), "")
3499- let aF = valueOrElse(getInteger(S(aE)), 0)
3500- if (if ((aD != z))
3501- then (aF > aB)
3492+ let nE = split(fu[1], "_")
3493+ let aA = lastBlock.timestamp
3494+ let aC = valueOrElse(getInteger(S(B)), 0)
3495+ let aD = valueOrElse(getString(T(B)), "")
3496+ let aE = valueOrElse(getInteger(R(aD)), 0)
3497+ if (if ((aC != y))
3498+ then (aE > aA)
35023499 else false)
3503- then throw(("You already started robbing, wait till " + toString(aF)))
3500+ then throw(("You already started robbing, wait till " + toString(aE)))
35043501 else {
3505- func nG (eX,R) = {
3506- let nH = valueOrElse(getInteger(Q(R)), 0)
3507- let nI = valueOrElse(getInteger(S(R)), 0)
3508- if ((nH > size(w)))
3502+ func nF (eW,Q) = {
3503+ let nG = valueOrElse(getInteger(P(Q)), 0)
3504+ let nH = valueOrElse(getInteger(R(Q)), 0)
3505+ if ((nG > size(v)))
35093506 then throw("Invalid state")
3510- else if ((aB > nI))
3507+ else if ((aA > nH))
35113508 then {
3512- let nJ = valueOrElse(getInteger(bx(R)), 0)
3513- if ((0 >= nJ))
3514- then eX
3509+ let nI = valueOrElse(getInteger(bw(Q)), 0)
3510+ if ((0 >= nI))
3511+ then eW
35153512 else {
3516- let gx = value(assetInfo(fromBase58String(R)))
3517- let jC = split(gx.description, "_")
3518- let jo = dN(jC[do])
3519- let nK = jn(R, jo)
3520- let gW = (aB - nJ)
3521- let jF = fraction(gW, (nK * jo), a)
3522- if ((x > jF))
3523- then eX
3524- else (eX :+ R)
3513+ let gw = value(assetInfo(fromBase58String(Q)))
3514+ let jB = split(gw.description, "_")
3515+ let jn = dL(jB[dp])
3516+ let nJ = jm(Q, jn)
3517+ let gV = (aA - nI)
3518+ let jE = fraction(gV, (nJ * jn), a)
3519+ if ((w > jE))
3520+ then eW
3521+ else (eW :+ Q)
35253522 }
35263523 }
3527- else eX
3524+ else eW
35283525 }
35293526
3530- let nL = {
3531- let eZ = nF
3532- let fa = size(eZ)
3533- let fb = nil
3534- func fc (fd,fe) = if ((fe >= fa))
3535- then fd
3536- else nG(fd, eZ[fe])
3537-
3538- func ff (fd,fe) = if ((fe >= fa))
3539- then fd
3527+ let nK = {
3528+ let eY = nE
3529+ let eZ = size(eY)
3530+ let fa = nil
3531+ func fb (fc,fd) = if ((fd >= eZ))
3532+ then fc
3533+ else nF(fc, eY[fd])
3534+
3535+ func fe (fc,fd) = if ((fd >= eZ))
3536+ then fc
35403537 else throw("List size exceeds 10")
35413538
3542- ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
3539+ fe(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
35433540 }
3544- if ((size(nL) == 0))
3541+ if ((size(nK) == 0))
35453542 then throw("No candidates for robbery")
35463543 else {
3547- let nM = dX(size(nL), height, (iX + gQ.transactionId))
3548- let R = nL[nM]
3549- $Tuple2(([IntegerEntry(Q(R), y), IntegerEntry(S(R), (aB + w[y])), IntegerEntry(T(C), A), StringEntry(U(C), R)] ++ ls), R)
3544+ let nL = dW(size(nK), height, (iW + gP.transactionId))
3545+ let Q = nK[nL]
3546+ $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (aA + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ lq), Q)
35503547 }
35513548 }
35523549 }
35583555
35593556
35603557
3561-@Callable(gQ)
3562-func robLand (iW,iX) = {
3563- let ls = lo(gQ)
3564- if (!(sigVerify_8Kb(iW, iX, ef)))
3558+@Callable(gP)
3559+func robLand (iV,iW) = {
3560+ let lq = lm(gP)
3561+ if (!(sigVerify_8Kb(iV, iW, ee)))
35653562 then throw("signature does not match")
35663563 else {
3567- let bR = toString(gQ.caller)
3568- let C = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
3569- let aB = lastBlock.timestamp
3570- $Tuple2((ls :+ IntegerEntry(O(C), aB)), 0)
3571- }
3572- }
3573-
3574-
3575-
3576-@Callable(gQ)
3577-func acceptDelivery () = if (!(cB))
3564+ let bQ = toString(gP.caller)
3565+ let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked")
3566+ let aA = lastBlock.timestamp
3567+ $Tuple2((lq :+ IntegerEntry(N(B), aA)), 0)
3568+ }
3569+ }
3570+
3571+
3572+
3573+@Callable(gP)
3574+func acceptDelivery () = if (!(cA))
35783575 then throw("Delivery feature is turned off!")
35793576 else {
3580- let ls = lo(gQ)
3581- let bR = toString(gQ.caller)
3582- let C = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
3583- let nN = valueOrElse(getInteger(di, bT), 0)
3584- let kE = valueOrElse(getInteger(di, bU), 0)
3585- if ((aQ > (nN - kE)))
3586- then throw(((("Delivery is not available, fund=" + dS(nN, 6)) + ", locked=") + dS(kE, 6)))
3577+ let lq = lm(gP)
3578+ let bQ = toString(gP.caller)
3579+ let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked")
3580+ let nM = valueOrElse(getInteger(dj, bS), 0)
3581+ let kD = valueOrElse(getInteger(dj, bT), 0)
3582+ if ((aP > (nM - kD)))
3583+ then throw(((("Delivery is not available, fund=" + dQ(nM, 6)) + ", locked=") + dQ(kD, 6)))
35873584 else {
3588- let aB = lastBlock.timestamp
3589- let nO = valueOrElse(getInteger(V(C)), 0)
3590- if ((nO > aB))
3591- then throw(("Delivery is forbidden for your duck until " + toString(nO)))
3585+ let aA = lastBlock.timestamp
3586+ let nN = valueOrElse(getInteger(U(B)), 0)
3587+ if ((nN > aA))
3588+ then throw(("Delivery is forbidden for your duck until " + toString(nN)))
35923589 else {
3593- let fX = valueOrElse(getInteger(W(bR)), 0)
3594- let nP = valueOrElse(getInteger(X(bR)), 0)
3595- let nQ = (aB / a)
3596- let nR = valueOrElse(getInteger(dm, e(bR)), 0)
3597- let nS = (aS + (nR / aT))
3598- if (if ((fX >= nS))
3599- then (nP >= nQ)
3590+ let fW = valueOrElse(getInteger(V(bQ)), 0)
3591+ let nO = valueOrElse(getInteger(W(bQ)), 0)
3592+ let nP = (aA / a)
3593+ let nQ = valueOrElse(getInteger(dn, d(bQ)), 0)
3594+ let nR = (aR + (nQ / aS))
3595+ if (if ((fW >= nR))
3596+ then (nO >= nP)
36003597 else false)
3601- then throw((("You already used " + toString(nS)) + " delivery attempts for today"))
3602- else if (kv(C))
3598+ then throw((("You already used " + toString(nR)) + " delivery attempts for today"))
3599+ else if (ku(B))
36033600 then throw("acceptDelivery_checkTournament")
3604- else if (kw(C))
3601+ else if (kv(B))
36053602 then throw("acceptDelivery_checkDelivery")
36063603 else {
3607- let nT = dF(invoke(di, "updateDeliveryLocked", [(kE + aQ)], nil))
3608- let jh = B(C)
3609- let ji = ak(valueOrElse(getInteger(F(C)), 0))
3610- let kA = valueOrElse(getInteger(jh), ji)
3611- let nB = bP(C)
3612- let jw = valueOrElse(getString(nB), aN)
3613- let nU = (toString(aB) + "_D_0")
3614- $Tuple2(([IntegerEntry(L(C), kA), IntegerEntry(jh, ji), StringEntry(M(C), jw), StringEntry(nB, nU)] ++ ls), $Tuple2(nU, nT))
3604+ let nS = dG(invoke(dj, "updateDeliveryLocked", [(kD + aP)], nil))
3605+ let nz = bO(B)
3606+ let jv = valueOrElse(getString(nz), aM)
3607+ let nT = (toString(aA) + "_D_0")
3608+ $Tuple2(([StringEntry(L(B), jv), StringEntry(nz, nT)] ++ lq), $Tuple2(nT, nS))
36153609 }
36163610 }
36173611 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 86400000
55
6-let b = 60000
7-
8-func c (d) = ("lastArbTimeUser_" + d)
9-
10-
11-func e (d) = ("acresStakedAmountByUser_" + d)
12-
13-
14-let f = 100000000
15-
16-let g = 3200
17-
18-let h = 4000
19-
20-let i = 3
21-
22-let j = 100000000
23-
24-let k = 400
25-
26-let l = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
27-
28-let m = 0
29-
30-let n = 1
31-
32-let o = 2
33-
34-let p = 3
35-
36-let q = 4
37-
38-let r = 0
39-
40-let s = 6
6+func b (c) = ("lastArbTimeUser_" + c)
7+
8+
9+func d (c) = ("acresStakedAmountByUser_" + c)
10+
11+
12+let e = 100000000
13+
14+let f = 3200
15+
16+let g = 4000
17+
18+let h = 3
19+
20+let i = 100000000
21+
22+let j = 400
23+
24+let k = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
25+
26+let l = 0
27+
28+let m = 1
29+
30+let n = 2
31+
32+let o = 3
33+
34+let p = 4
35+
36+let q = 0
37+
38+let r = 6
39+
40+let s = 2
4141
4242 let t = 2
4343
44-let u = 2
45-
46-let v = 30
47-
48-let w = [0, 600000, 900000, 43200000, 21600000]
49-
50-let x = 20000000
51-
52-let y = 1
53-
54-let z = 0
55-
56-let A = 1
57-
58-func B (C) = ("duckHealth_" + C)
59-
60-
61-func D (C) = ("duckChars_" + C)
62-
63-
64-func E (C) = ("duckXP_" + C)
65-
66-
67-func F (C) = ("duckLevel_" + C)
68-
69-
70-func G (C) = ("duckFreePoints_" + C)
71-
72-
73-func H (C) = ("duckEquipment_" + C)
74-
75-
76-func I (d) = ("userXP_" + d)
77-
78-
79-func J (d) = ("userLevel_" + d)
80-
81-
82-func K (d) = ("userFreePoints_" + d)
83-
84-
85-func L (C) = ("savedHealth_" + C)
86-
87-
88-func M (C) = ("savedLocation_" + C)
89-
90-
91-func N (C) = ("duckBuffs_" + C)
92-
93-
94-func O (C) = ("lastRobberyTime_" + C)
95-
96-
97-func P (C) = ("lastRobberyCost_" + C)
98-
99-
100-func Q (R) = ("landRobberyState_" + R)
101-
102-
103-func S (R) = ("landCooldownETA_" + R)
104-
105-
106-func T (C) = ("duckRobberyState_" + C)
107-
108-
109-func U (C) = ("lockedLandByDuck_" + C)
110-
111-
112-func V (C) = ("deliveryDelayByDuck_" + C)
113-
114-
115-func W (d) = ("userDeliveryCount_" + d)
116-
117-
118-func X (d) = ("userLastDeliveryDay_" + d)
119-
44+let u = 30
45+
46+let v = [0, 600000, 900000, 43200000, 21600000]
47+
48+let w = 20000000
49+
50+let x = 1
51+
52+let y = 0
53+
54+let z = 1
55+
56+func A (B) = ("duckHealth_" + B)
57+
58+
59+func C (B) = ("duckChars_" + B)
60+
61+
62+func D (B) = ("duckXP_" + B)
63+
64+
65+func E (B) = ("duckLevel_" + B)
66+
67+
68+func F (B) = ("duckFreePoints_" + B)
69+
70+
71+func G (B) = ("duckEquipment_" + B)
72+
73+
74+func H (c) = ("userXP_" + c)
75+
76+
77+func I (c) = ("userLevel_" + c)
78+
79+
80+func J (c) = ("userFreePoints_" + c)
81+
82+
83+func K (B) = ("savedHealth_" + B)
84+
85+
86+func L (B) = ("savedLocation_" + B)
87+
88+
89+func M (B) = ("duckBuffs_" + B)
90+
91+
92+func N (B) = ("lastRobberyTime_" + B)
93+
94+
95+func O (B) = ("lastRobberyCost_" + B)
96+
97+
98+func P (Q) = ("landRobberyState_" + Q)
99+
100+
101+func R (Q) = ("landCooldownETA_" + Q)
102+
103+
104+func S (B) = ("duckRobberyState_" + B)
105+
106+
107+func T (B) = ("lockedLandByDuck_" + B)
108+
109+
110+func U (B) = ("deliveryDelayByDuck_" + B)
111+
112+
113+func V (c) = ("userDeliveryCount_" + c)
114+
115+
116+func W (c) = ("userLastDeliveryDay_" + c)
117+
118+
119+let X = 10000
120120
121121 let Y = 10000
122122
123-let Z = 10000
124-
125-let aa = 2000
126-
127-let ab = 100000
128-
129-let ac = 1000000
130-
131-let ad = 5000000
132-
133-let ae = 10000
123+let Z = 2000
124+
125+let aa = 100000
126+
127+let ab = 1000000
128+
129+let ac = 5000000
130+
131+let ad = 10000
132+
133+let ae = 1000000
134134
135135 let af = 1000000
136136
137-let ag = 1000000
138-
139-let ah = 10000
140-
141-func ai (aj) = fraction(g, pow(aj, 4, h, 4, 4, DOWN), f)
142-
143-
144-func ak (al) = (100 + al)
145-
146-
147-func am (an,ao) = {
148- let ap = ai(ao)
149-[ap, (i * (ap - an))]
150- }
151-
152-
153-func aq (ar,C,as,at) = {
154- let au = split(valueOrElse(getString(ar, D(C)), "0_0_0_0_0"), "_")
155- let av = valueOrElse(getInteger(ar, F(C)), 0)
156- let aw = valueOrElse(getInteger(ar, B(C)), ak(av))
157- let ax = split(valueOrElse(getString(ar, N(C)), "0_0_0_0_0"), "_")
158- ([parseIntValue(au[m]), parseIntValue(au[n]), parseIntValue(au[o]), parseIntValue(au[p]), parseIntValue(au[q]), av, aw] ++ (if (at)
159- then [as, as, as, as, as]
160- else [parseIntValue(ax[m]), parseIntValue(ax[n]), parseIntValue(ax[o]), parseIntValue(ax[p]), parseIntValue(ax[q])]))
161- }
162-
163-
164-func ay (ar,C) = {
165- let az = valueOrElse(getInteger(ar, P(C)), 0)
166- let aA = valueOrElse(getInteger(ar, O(C)), 0)
167- let aB = lastBlock.timestamp
168- let aC = max([j, (az - (k * (aB - aA)))])
169- let aD = valueOrElse(getInteger(ar, T(C)), 0)
170- let aE = valueOrElse(getString(ar, U(C)), "")
171- let aF = valueOrElse(getInteger(ar, S(aE)), 0)
172- $Tuple5(aC, aA, aD, aE, aF)
173- }
174-
175-
176-let aG = "LAND"
177-
178-let aH = "DUCK"
179-
180-let aI = "PRESALE"
181-
182-let aJ = 6
183-
184-let aK = 25
185-
186-let aL = 3456000
187-
188-let aM = 10000000000
189-
190-let aN = "Africa_F_Africa"
191-
192-let aO = 39637
193-
194-let aP = 10
195-
196-let aQ = 50000
197-
198-let aR = 600000
199-
200-let aS = 3
201-
202-let aT = 20000000
203-
204-let aU = ["First Aid Kit L1", "First Aid Kit L2", "First Aid Kit L3", "Backpack L1", "Backpack L2", "Backpack L3", "Food Ration L1", "Food Ration L2", "Food Ration L3", "Jet Pack L1", "Jet Pack L2", "Jet Pack L3", "Shield L1", "Shield L2", "Shield L3", "Mine L1", "Mine L2", "Mine L3", "Trap L1", "Trap L2", "Trap L3"]
205-
206-let aV = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
207-
208-let aW = 10000000
209-
210-let aX = [15, 16, 17, 18, 19, 20]
211-
212-let aY = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_"]
213-
214-let aZ = 6
215-
216-let ba = 8
217-
218-let bb = 9
137+let ag = 10000
138+
139+func ah (ai) = fraction(f, pow(ai, 4, g, 4, 4, DOWN), e)
140+
141+
142+func aj (ak) = (100 + ak)
143+
144+
145+func al (am,an) = {
146+ let ao = ah(an)
147+[ao, (h * (ao - am))]
148+ }
149+
150+
151+func ap (aq,B,ar,as) = {
152+ let at = split(valueOrElse(getString(aq, C(B)), "0_0_0_0_0"), "_")
153+ let au = valueOrElse(getInteger(aq, E(B)), 0)
154+ let av = valueOrElse(getInteger(aq, A(B)), aj(au))
155+ let aw = split(valueOrElse(getString(aq, M(B)), "0_0_0_0_0"), "_")
156+ ([parseIntValue(at[l]), parseIntValue(at[m]), parseIntValue(at[n]), parseIntValue(at[o]), parseIntValue(at[p]), au, av] ++ (if (as)
157+ then [ar, ar, ar, ar, ar]
158+ else [parseIntValue(aw[l]), parseIntValue(aw[m]), parseIntValue(aw[n]), parseIntValue(aw[o]), parseIntValue(aw[p])]))
159+ }
160+
161+
162+func ax (aq,B) = {
163+ let ay = valueOrElse(getInteger(aq, O(B)), 0)
164+ let az = valueOrElse(getInteger(aq, N(B)), 0)
165+ let aA = lastBlock.timestamp
166+ let aB = max([i, (ay - (j * (aA - az)))])
167+ let aC = valueOrElse(getInteger(aq, S(B)), 0)
168+ let aD = valueOrElse(getString(aq, T(B)), "")
169+ let aE = valueOrElse(getInteger(aq, R(aD)), 0)
170+ $Tuple5(aB, az, aC, aD, aE)
171+ }
172+
173+
174+let aF = "LAND"
175+
176+let aG = "DUCK"
177+
178+let aH = "PRESALE"
179+
180+let aI = 6
181+
182+let aJ = 25
183+
184+let aK = 3456000
185+
186+let aL = 10000000000
187+
188+let aM = "Africa_F_Africa"
189+
190+let aN = 39637
191+
192+let aO = 10
193+
194+let aP = 50000
195+
196+let aQ = 600000
197+
198+let aR = 3
199+
200+let aS = 20000000
201+
202+let aT = ["First Aid Kit L1", "First Aid Kit L2", "First Aid Kit L3", "Backpack L1", "Backpack L2", "Backpack L3", "Food Ration L1", "Food Ration L2", "Food Ration L3", "Jet Pack L1", "Jet Pack L2", "Jet Pack L3", "Shield L1", "Shield L2", "Shield L3", "Mine L1", "Mine L2", "Mine L3", "Trap L1", "Trap L2", "Trap L3"]
203+
204+let aU = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
205+
206+let aV = 10000000
207+
208+let aW = [15, 16, 17, 18, 19, 20]
209+
210+let aX = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_"]
211+
212+let aY = 6
213+
214+let aZ = 8
215+
216+let ba = 9
217+
218+let bb = 10
219219
220220 let bc = 10
221221
222-let bd = 10
223-
224-let be = 0
225-
226-let bf = 1
227-
228-let bg = 2
229-
230-let bh = 3
231-
232-let bi = 4
233-
234-let bj = 0
235-
236-let bk = 1
237-
238-let bl = 2
239-
240-let bm = 3
241-
242-let bn = 0
243-
244-let bo = 1
245-
246-let bp = 2
247-
248-let bq = 3
249-
250-let br = 0
251-
252-let bs = 1
253-
254-let bt = 2
255-
256-func bu (bv) = ("no_" + bv)
257-
258-
259-func bw (bv) = ("lcna_" + bv)
260-
261-
262-func bx (bv) = ("st_" + bv)
263-
264-
265-func by (bz,bv) = makeString(["las", bz, bv], "_")
266-
267-
268-func bA (bB,bv,bC) = ((((("sttao_" + bB) + "_") + bv) + "_") + bC)
269-
270-
271-func bD (R) = ("wh_" + R)
272-
273-
274-func bE (bv) = ("infraLevel_" + bv)
275-
276-
277-func bF (R) = ("fortifications_" + R)
278-
279-
280-func bG (bv) = ("duckCustomNameByAssetId_" + bv)
281-
282-
283-func bH (d) = ("accountCustomNameByAddr_" + d)
284-
285-
286-func bI (d) = ("accRefBy_" + d)
287-
288-
289-func bJ (C) = ("onboardArtActivatedOnDuck_" + C)
290-
291-
292-func bK (d) = ("onboardArtActivatedDuckBy_" + d)
293-
294-
295-func bL (d) = ("accReferrals_" + d)
296-
297-
298-func bM (bv) = ("duckOwner_" + bv)
299-
300-
301-func bN (bC) = ("stakedDuckByOwner_" + bC)
302-
303-
304-func bO (C) = ("backPack_" + C)
305-
306-
307-func bP (C) = ("duckLocation_" + C)
308-
309-
310-func bQ (bR) = ("%s%s__userGwlReleaseTime__" + bR)
311-
312-
313-func bS () = "emergencyWarehouseProducts"
314-
315-
316-let bT = "deliveryFund"
317-
318-let bU = "deliveryLocked"
319-
320-let bV = "%s__lastTourId"
321-
322-func bW (bX) = ("%s%d__tourStaticData__" + toString(bX))
323-
324-
325-func bY (bX) = ("%s%d__tourDynamicData__" + toString(bX))
326-
327-
328-func bZ (bX,C) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bX), C], "__")
329-
330-
331-let ca = 0
332-
333-let cb = 1
334-
335-let cc = 6
336-
337-let cd = 1
338-
339-func ce (cf,bX) = {
340- let cg = split(valueOrErrorMessage(getString(cf, bW(bX)), (("Error reading tournament " + toString(bX)) + " data")), "__")
341- let ch = split_4C(valueOrErrorMessage(getString(cf, bY(bX)), (("Error reading tournament " + toString(bX)) + " data")), "__")
342-[cg, ch]
343- }
344-
345-
346-func ci (cf,cj) = {
347- let ck = valueOrElse(getInteger(cf, bV), 0)
348- let cl = split(cj, "_")
349- let aB = lastBlock.timestamp
350- let cm = ce(cf, ck)
351- let cg = cm[ca]
352- let ch = cm[cb]
353- if (if (if ((cl[bs] == "T"))
354- then (parseIntValue(cl[br]) == ck)
222+let bd = 0
223+
224+let be = 1
225+
226+let bf = 2
227+
228+let bg = 3
229+
230+let bh = 4
231+
232+let bi = 0
233+
234+let bj = 1
235+
236+let bk = 2
237+
238+let bl = 3
239+
240+let bm = 0
241+
242+let bn = 1
243+
244+let bo = 2
245+
246+let bp = 3
247+
248+let bq = 0
249+
250+let br = 1
251+
252+let bs = 2
253+
254+func bt (bu) = ("no_" + bu)
255+
256+
257+func bv (bu) = ("lcna_" + bu)
258+
259+
260+func bw (bu) = ("st_" + bu)
261+
262+
263+func bx (by,bu) = makeString(["las", by, bu], "_")
264+
265+
266+func bz (bA,bu,bB) = ((((("sttao_" + bA) + "_") + bu) + "_") + bB)
267+
268+
269+func bC (Q) = ("wh_" + Q)
270+
271+
272+func bD (bu) = ("infraLevel_" + bu)
273+
274+
275+func bE (Q) = ("fortifications_" + Q)
276+
277+
278+func bF (bu) = ("duckCustomNameByAssetId_" + bu)
279+
280+
281+func bG (c) = ("accountCustomNameByAddr_" + c)
282+
283+
284+func bH (c) = ("accRefBy_" + c)
285+
286+
287+func bI (B) = ("onboardArtActivatedOnDuck_" + B)
288+
289+
290+func bJ (c) = ("onboardArtActivatedDuckBy_" + c)
291+
292+
293+func bK (c) = ("accReferrals_" + c)
294+
295+
296+func bL (bu) = ("duckOwner_" + bu)
297+
298+
299+func bM (bB) = ("stakedDuckByOwner_" + bB)
300+
301+
302+func bN (B) = ("backPack_" + B)
303+
304+
305+func bO (B) = ("duckLocation_" + B)
306+
307+
308+func bP (bQ) = ("%s%s__userGwlReleaseTime__" + bQ)
309+
310+
311+func bR () = "emergencyWarehouseProducts"
312+
313+
314+let bS = "deliveryFund"
315+
316+let bT = "deliveryLocked"
317+
318+let bU = "%s__lastTourId"
319+
320+func bV (bW) = ("%s%d__tourStaticData__" + toString(bW))
321+
322+
323+func bX (bW) = ("%s%d__tourDynamicData__" + toString(bW))
324+
325+
326+func bY (bW,B) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bW), B], "__")
327+
328+
329+let bZ = 0
330+
331+let ca = 1
332+
333+let cb = 6
334+
335+let cc = 1
336+
337+func cd (ce,bW) = {
338+ let cf = split(valueOrErrorMessage(getString(ce, bV(bW)), (("Error reading tournament " + toString(bW)) + " data")), "__")
339+ let cg = split_4C(valueOrErrorMessage(getString(ce, bX(bW)), (("Error reading tournament " + toString(bW)) + " data")), "__")
340+[cf, cg]
341+ }
342+
343+
344+func ch (ce,ci) = {
345+ let cj = valueOrElse(getInteger(ce, bU), 0)
346+ let ck = split(ci, "_")
347+ let aA = lastBlock.timestamp
348+ let cl = cd(ce, cj)
349+ let cf = cl[bZ]
350+ let cg = cl[ca]
351+ if (if (if ((ck[br] == "T"))
352+ then (parseIntValue(ck[bq]) == cj)
355353 else false)
356- then (ch[cd] == "INPROGRESS")
354+ then (cg[cc] == "INPROGRESS")
357355 else false)
358- then (parseIntValue(cg[cc]) > aB)
356+ then (parseIntValue(cf[cb]) > aA)
359357 else false
360358 }
361359
362360
363-func cn (cj) = {
364- let cl = split(cj, "_")
365- let aB = lastBlock.timestamp
366- let co = parseIntValue(cl[br])
367- let cp = parseIntValue(cl[bt])
368- if (if ((cl[bs] == "D"))
369- then ((co + aR) > aB)
361+func cm (ci) = {
362+ let ck = split(ci, "_")
363+ let aA = lastBlock.timestamp
364+ let cn = parseIntValue(ck[bq])
365+ let co = parseIntValue(ck[bs])
366+ if (if ((ck[br] == "D"))
367+ then ((cn + aQ) > aA)
370368 else false)
371- then (3 >= cp)
369+ then (3 >= co)
372370 else false
373371 }
374372
375373
376-func cq (cj) = {
377- let cr = split(cj, "_")[bs]
378- if ((cr != "T"))
379- then (cr != "D")
374+func cp (ci) = {
375+ let cq = split(ci, "_")[br]
376+ if ((cq != "T"))
377+ then (cq != "D")
380378 else false
381379 }
382380
383381
384-func cs (cf,cj) = {
385- let ck = valueOrElse(getInteger(cf, bV), 0)
386- let cl = split(cj, "_")
387- let aB = lastBlock.timestamp
388- let cm = ce(cf, ck)
389- let cg = cm[ca]
390- let ch = cm[cb]
391- let cr = cl[bs]
392- if ((cr == "D"))
382+func cr (ce,ci) = {
383+ let cj = valueOrElse(getInteger(ce, bU), 0)
384+ let ck = split(ci, "_")
385+ let aA = lastBlock.timestamp
386+ let cl = cd(ce, cj)
387+ let cf = cl[bZ]
388+ let cg = cl[ca]
389+ let cq = ck[br]
390+ if ((cq == "D"))
393391 then true
394- else if (if (if ((cl[bs] == "T"))
395- then (parseIntValue(cl[br]) == ck)
392+ else if (if (if ((ck[br] == "T"))
393+ then (parseIntValue(ck[bq]) == cj)
396394 else false)
397- then (ch[cd] == "INPROGRESS")
395+ then (cg[cc] == "INPROGRESS")
398396 else false)
399- then (parseIntValue(cg[cc]) > aB)
397+ then (parseIntValue(cf[cb]) > aA)
400398 else false
401399 }
402400
403401
404-func ct (cu) = (parseIntValue(cu[aZ]) * aW)
405-
406-
407-func cv (cw,cx,cy) = throw(((((("Cheat attempt: oldLoc=" + cw) + ", newLoc=") + cx) + ", case=") + toString(cy)))
408-
402+func cs (ct) = (parseIntValue(ct[aY]) * aV)
403+
404+
405+func cu (cv,cw,cx) = throw(((((("Cheat attempt: oldLoc=" + cv) + ", newLoc=") + cw) + ", case=") + toString(cx)))
406+
407+
408+let cy = false
409409
410410 let cz = false
411411
412-let cA = false
413-
414-let cB = true
412+let cA = true
413+
414+let cB = 86400000
415415
416416 let cC = take(drop(this.bytes, 1), 1)
417417
418418 let cD = {
419419 let cE = cC
420420 if ((base58'2W' == cE))
421421 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
422422 else if ((base58'2T' == cE))
423423 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
424424 else throw("Unknown chain")
425425 }
426426
427427 let cF = {
428428 let cE = cC
429429 if ((base58'2W' == cE))
430430 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
431431 else if ((base58'2T' == cE))
432432 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
433433 else throw("Unknown chain")
434434 }
435435
436436 let cG = {
437437 let cE = cC
438438 if ((base58'2W' == cE))
439439 then 10000000000
440440 else if ((base58'2T' == cE))
441441 then 100000000
442442 else throw("Unknown chain")
443443 }
444444
445445 let cH = {
446446 let cE = cC
447447 if ((base58'2W' == cE))
448- then 86400000
448+ then cB
449449 else if ((base58'2T' == cE))
450450 then 60000
451451 else throw("Unknown chain")
452452 }
453453
454-let cI = "__"
455-
456-let cJ = 1000000
457-
458-let cK = 100000000
459-
460-let cL = 25
461-
462-let cM = 100
463-
464-let cN = 225
465-
466-let cO = 400
467-
468-let cP = 625
469-
470-let cQ = [0, 1, 2, 3, 4, 5]
471-
472-func cR (cS,cT) = valueOrErrorMessage(getString(cS, cT), makeString(["mandatory ", toString(cS), ".", cT, " is not defined"], ""))
473-
474-
475-let cU = 1
476-
477-let cV = 2
478-
479-let cW = 3
480-
481-let cX = 4
482-
483-let cY = 7
484-
485-let cZ = 8
486-
487-func da () = "%s__restConfig"
488-
489-
490-func db () = "%s__restAddr"
491-
492-
493-func dc (dd) = split_4C(cR(dd, da()), cI)
494-
495-
496-func de (df,dg) = valueOrErrorMessage(addressFromString(df[dg]), ("Rest cfg doesn't contain address at index " + toString(dg)))
497-
498-
499-let dh = addressFromStringValue(valueOrElse(getString(this, db()), cF))
500-
501-let df = dc(dh)
502-
503-let ar = de(df, cU)
504-
505-let di = de(df, cV)
506-
507-let dj = de(df, cW)
508-
509-let dk = de(df, cX)
510-
511-let dl = de(df, cY)
512-
513-let dm = de(df, cZ)
514-
515-let dn = 0
516-
517-let do = 1
518-
519-let dp = 2
520-
521-let dq = 3
522-
523-let dr = "wlg_assetId"
524-
525-let ds = valueOrErrorMessage(getBinary(dk, dr), "WLGOLD is not issued yet")
526-
527-let dt = "acresAssetId"
528-
529-let du = valueOrErrorMessage(getBinary(dm, dt), "ACRES is not issued yet")
530-
531-let dv = 2
532-
533-func dw (cS) = ("finishBlockForAddr_" + cS)
534-
535-
536-func dx () = "resTypesProportions"
537-
538-
539-func dy (dz) = ("resTypesByContinent_" + dz)
540-
541-
542-func dA (bC) = ("stakedLandsByOwner_" + bC)
543-
544-
545-func dB (bC) = ("stakedPiecesByOwner_" + bC)
546-
547-
548-func dC (dD) = {
549- let cE = dD
454+let cI = {
455+ let cE = cC
456+ if ((base58'2W' == cE))
457+ then cB
458+ else if ((base58'2T' == cE))
459+ then 600000
460+ else throw("Unknown chain")
461+ }
462+
463+let cJ = "__"
464+
465+let cK = 1000000
466+
467+let cL = 100000000
468+
469+let cM = 25
470+
471+let cN = 100
472+
473+let cO = 225
474+
475+let cP = 400
476+
477+let cQ = 625
478+
479+let cR = [0, 1, 2, 3, 4, 5]
480+
481+func cS (cT,cU) = valueOrErrorMessage(getString(cT, cU), makeString(["mandatory ", toString(cT), ".", cU, " is not defined"], ""))
482+
483+
484+let cV = 1
485+
486+let cW = 2
487+
488+let cX = 3
489+
490+let cY = 4
491+
492+let cZ = 7
493+
494+let da = 8
495+
496+func db () = "%s__restConfig"
497+
498+
499+func dc () = "%s__restAddr"
500+
501+
502+func dd (de) = split_4C(cS(de, db()), cJ)
503+
504+
505+func df (dg,dh) = valueOrErrorMessage(addressFromString(dg[dh]), ("Rest cfg doesn't contain address at index " + toString(dh)))
506+
507+
508+let di = addressFromStringValue(valueOrElse(getString(this, dc()), cF))
509+
510+let dg = dd(di)
511+
512+let aq = df(dg, cV)
513+
514+let dj = df(dg, cW)
515+
516+let dk = df(dg, cX)
517+
518+let dl = df(dg, cY)
519+
520+let dm = df(dg, cZ)
521+
522+let dn = df(dg, da)
523+
524+let do = 0
525+
526+let dp = 1
527+
528+let dq = 2
529+
530+let dr = 3
531+
532+let ds = "wlg_assetId"
533+
534+let dt = valueOrErrorMessage(getBinary(dl, ds), "WLGOLD is not issued yet")
535+
536+let du = "acresAssetId"
537+
538+let dv = valueOrErrorMessage(getBinary(dn, du), "ACRES is not issued yet")
539+
540+let dw = 2
541+
542+func dx (cT) = ("finishBlockForAddr_" + cT)
543+
544+
545+func dy () = "resTypesProportions"
546+
547+
548+func dz (dA) = ("resTypesByContinent_" + dA)
549+
550+
551+func dB (bB) = ("stakedLandsByOwner_" + bB)
552+
553+
554+func dC (bB) = ("stakedPiecesByOwner_" + bB)
555+
556+
557+func dD (dE) = {
558+ let cE = dE
550559 if ($isInstanceOf(cE, "String"))
551560 then {
552- let dE = cE
553- dE
561+ let dF = cE
562+ dF
554563 }
555564 else throw("fail to cast into String")
556565 }
557566
558567
559-func dF (dD) = {
560- let cE = dD
568+func dG (dE) = {
569+ let cE = dE
561570 if ($isInstanceOf(cE, "Int"))
562571 then {
563- let dG = cE
564- dG
572+ let dH = cE
573+ dH
565574 }
566575 else throw("fail to cast into Int")
567576 }
568577
569578
570-func dH (dD) = {
571- let cE = dD
579+func dI (dE) = {
580+ let cE = dE
572581 if ($isInstanceOf(cE, "List[Any]"))
573582 then {
574- let dI = cE
575- dI
583+ let dJ = cE
584+ dJ
576585 }
577586 else throw("fail to cast into List[Any]")
578587 }
579588
580589
581-func dJ (dD) = {
582- let cE = dD
590+func dK (dE) = {
591+ let cE = dE
583592 if ($isInstanceOf(cE, "Boolean"))
584593 then {
585- let dE = cE
586- dE
594+ let dF = cE
595+ dF
587596 }
588597 else throw("fail to cast into Boolean")
589598 }
590599
591600
592-func dK (dL) = {
593- let cE = dL
594- if ($isInstanceOf(cE, "(String, Int)"))
595- then {
596- let dM = cE
597- dM
598- }
599- else throw("fail to cast into (String, Int)")
600- }
601-
602-
603-func dN (dO) = {
604- let cE = dO
601+func dL (dM) = {
602+ let cE = dM
605603 if (("S" == cE))
606- then cL
604+ then cM
607605 else if (("M" == cE))
608- then cM
606+ then cN
609607 else if (("L" == cE))
610- then cN
608+ then cO
611609 else if (("XL" == cE))
612- then cO
610+ then cP
613611 else if (("XXL" == cE))
614- then cP
612+ then cQ
615613 else throw("Unknown land size")
616614 }
617615
618616
619-func dP (dE) = isDefined(parseInt(dE))
620-
621-
622-func dQ () = "contractsBlocked"
623-
624-
625-func dR (d) = ("lastTxIdByUser_" + d)
626-
627-
628-func dS (dL,dT) = {
629- let dU = pow(10, 0, dT, 0, 0, DOWN)
630- let dV = toString((dL % dU))
631- let dW = drop(toString(dU), (1 + size(dV)))
632- (((toString((dL / dU)) + ".") + dW) + dV)
633- }
634-
635-
636-func dX (dY,dZ,ea) = {
637- let eb = value(blockInfoByHeight(dZ))
638- let ec = sha256((value(eb.vrf) + ea))
639- (toInt(ec) % dY)
640- }
641-
642-
643-let ed = {
617+func dN (dF) = isDefined(parseInt(dF))
618+
619+
620+func dO () = "contractsBlocked"
621+
622+
623+func dP (c) = ("lastTxIdByUser_" + c)
624+
625+
626+func dQ (dR,dS) = {
627+ let dT = pow(10, 0, dS, 0, 0, DOWN)
628+ let dU = toString((dR % dT))
629+ let dV = drop(toString(dT), (1 + size(dU)))
630+ (((toString((dR / dT)) + ".") + dV) + dU)
631+ }
632+
633+
634+func dW (dX,dY,dZ) = {
635+ let ea = value(blockInfoByHeight(dY))
636+ let eb = sha256((value(ea.vrf) + dZ))
637+ (toInt(eb) % dX)
638+ }
639+
640+
641+let ec = {
644642 let cE = cC
645643 if ((base58'2W' == cE))
646644 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
647645 else if ((base58'2T' == cE))
648646 then this
649647 else throw("Unknown chain")
650648 }
651649
652-let ee = {
650+let ed = {
653651 let cE = cC
654652 if ((base58'2W' == cE))
655653 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
656654 else if ((base58'2T' == cE))
657655 then this
658656 else throw("Unknown chain")
659657 }
660658
661-let ef = {
659+let ee = {
662660 let cE = cC
663661 if ((base58'2W' == cE))
664- then if (cz)
662+ then if (cy)
665663 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
666664 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
667665 else if ((base58'2T' == cE))
668666 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
669667 else throw("Unknown chain")
670668 }
671669
672-let eg = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
673-
674-let eh = 300000
675-
676-let ei = 5000000
677-
678-let ej = 50
679-
680-let ek = 10000000
681-
682-let el = {
670+let ef = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
671+
672+let eg = 300000
673+
674+let eh = 5000000
675+
676+let ei = 50
677+
678+let ej = 10000000
679+
680+let ek = {
683681 let cE = cC
684682 if ((base58'2W' == cE))
685683 then 252289527462
686684 else if ((base58'2T' == cE))
687685 then 2522895274
688686 else throw("Unknown chain")
689687 }
690688
691-let em = {
689+let el = {
692690 let cE = cC
693691 if ((base58'2W' == cE))
694692 then 250000000
695693 else if ((base58'2T' == cE))
696694 then 250000000
697695 else throw("Unknown chain")
698696 }
699697
700-let en = 2500000000
701-
702-let eo = toBigInt(5)
703-
704-let ep = toBigInt(20)
705-
706-let eq = toBigInt((20 * 20))
707-
708-let er = toBigInt(((20 * 20) * 20))
709-
710-let es = toBigInt((((20 * 20) * 20) * 20))
711-
712-let et = toBigInt(((((20 * 20) * 20) * 20) * 20))
713-
714-let eu = 500
715-
716-func ev () = "nextLandNum"
717-
718-
719-func ew (ex) = ("lcn_" + ex)
720-
721-
722-func ey (ez) = ("la_" + ez)
723-
724-
725-func eA (bv,bC) = ((("ilao_" + bv) + "_") + bC)
726-
727-
728-func eB (ez) = ("lo_" + ez)
729-
730-
731-func eC (ex) = ("duckByCustomName_" + ex)
732-
733-
734-func eD (ex) = ("accountByCustomName_" + ex)
735-
736-
737-func eE () = "oldiesList"
738-
739-
740-let eF = 0
741-
742-let eG = 1
743-
744-let eH = 2
745-
746-let eI = 0
747-
748-let eJ = 5
749-
750-let eK = 6
751-
752-let eL = 7
753-
754-func eM (ez,dO) = ((aG + ez) + dO)
755-
756-
757-func eN (eO,eP) = {
758- let eQ = if ((eO >= 0))
759- then (((eO + eP) - 1) / eP)
760- else -((((-(eO) + eP) - 1) / eP))
761- (eQ * cK)
762- }
763-
764-
765-func eR (eS,eT) = {
766- let eU = (((((eT[0] + eT[1]) + eT[2]) + eT[3]) + eT[4]) + eT[5])
767- if ((0 >= eU))
698+let em = 2500000000
699+
700+let en = toBigInt(5)
701+
702+let eo = toBigInt(20)
703+
704+let ep = toBigInt((20 * 20))
705+
706+let eq = toBigInt(((20 * 20) * 20))
707+
708+let er = toBigInt((((20 * 20) * 20) * 20))
709+
710+let es = toBigInt(((((20 * 20) * 20) * 20) * 20))
711+
712+let et = 500
713+
714+func eu () = "nextLandNum"
715+
716+
717+func ev (ew) = ("lcn_" + ew)
718+
719+
720+func ex (ey) = ("la_" + ey)
721+
722+
723+func ez (bu,bB) = ((("ilao_" + bu) + "_") + bB)
724+
725+
726+func eA (ey) = ("lo_" + ey)
727+
728+
729+func eB (ew) = ("duckByCustomName_" + ew)
730+
731+
732+func eC (ew) = ("accountByCustomName_" + ew)
733+
734+
735+func eD () = "oldiesList"
736+
737+
738+let eE = 0
739+
740+let eF = 1
741+
742+let eG = 2
743+
744+let eH = 0
745+
746+let eI = 5
747+
748+let eJ = 6
749+
750+let eK = 7
751+
752+func eL (ey,dM) = ((aF + ey) + dM)
753+
754+
755+func eM (eN,eO) = {
756+ let eP = if ((eN >= 0))
757+ then (((eN + eO) - 1) / eO)
758+ else -((((-(eN) + eO) - 1) / eO))
759+ (eP * cL)
760+ }
761+
762+
763+func eQ (eR,eS) = {
764+ let eT = (((((eS[0] + eS[1]) + eS[2]) + eS[3]) + eS[4]) + eS[5])
765+ if ((0 >= eT))
768766 then throw("Zero weights sum")
769767 else {
770- let eV = fraction(eS, cJ, eU)
771- func eW (eX,eY) = (eX :+ fraction(eY, eV, cJ))
772-
773- let eZ = eT
774- let fa = size(eZ)
775- let fb = nil
776- func fc (fd,fe) = if ((fe >= fa))
777- then fd
778- else eW(fd, eZ[fe])
779-
780- func ff (fd,fe) = if ((fe >= fa))
781- then fd
768+ let eU = fraction(eR, cK, eT)
769+ func eV (eW,eX) = (eW :+ fraction(eX, eU, cK))
770+
771+ let eY = eS
772+ let eZ = size(eY)
773+ let fa = nil
774+ func fb (fc,fd) = if ((fd >= eZ))
775+ then fc
776+ else eV(fc, eY[fd])
777+
778+ func fe (fc,fd) = if ((fd >= eZ))
779+ then fc
782780 else throw("List size exceeds 6")
783781
784- ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
785- }
786- }
787-
788-
789-func fg (eS) = {
790- let fh = split(value(getString(dx())), "_")
791- if ((size(fh) != aJ))
782+ fe(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6)
783+ }
784+ }
785+
786+
787+func ff (eR) = {
788+ let fg = split(value(getString(dy())), "_")
789+ if ((size(fg) != aI))
792790 then throw("Wrong proportions data")
793791 else {
794- let fi = [parseIntValue(fh[0]), parseIntValue(fh[1]), parseIntValue(fh[2]), parseIntValue(fh[3]), parseIntValue(fh[4]), parseIntValue(fh[5])]
795- eR(eS, fi)
796- }
797- }
798-
799-
800-func fj (fk,fl,fm) = {
801- let fn = fg(fm)
802- func fo (eX,dg) = {
803- let fp = (parseIntValue(fl[dg]) - fn[dg])
804- if ((0 > fp))
805- then throw(((((("Not enough material idx=" + toString(dg)) + ", you have ") + fl[dg]) + ", but need ") + toString(fn[dg])))
806- else (eX :+ toString(fp))
792+ let fh = [parseIntValue(fg[0]), parseIntValue(fg[1]), parseIntValue(fg[2]), parseIntValue(fg[3]), parseIntValue(fg[4]), parseIntValue(fg[5])]
793+ eQ(eR, fh)
794+ }
795+ }
796+
797+
798+func fi (fj,fk,fl) = {
799+ let fm = ff(fl)
800+ func fn (eW,dh) = {
801+ let fo = (parseIntValue(fk[dh]) - fm[dh])
802+ if ((0 > fo))
803+ then throw(((((("Not enough material idx=" + toString(dh)) + ", you have ") + fk[dh]) + ", but need ") + toString(fm[dh])))
804+ else (eW :+ toString(fo))
807805 }
808806
809- if (fk)
807+ if (fj)
810808 then {
811- let eZ = cQ
812- let fa = size(eZ)
813- let fb = nil
814- func fc (fd,fe) = if ((fe >= fa))
815- then fd
816- else fo(fd, eZ[fe])
817-
818- func ff (fd,fe) = if ((fe >= fa))
819- then fd
809+ let eY = cR
810+ let eZ = size(eY)
811+ let fa = nil
812+ func fb (fc,fd) = if ((fd >= eZ))
813+ then fc
814+ else fn(fc, eY[fd])
815+
816+ func fe (fc,fd) = if ((fd >= eZ))
817+ then fc
820818 else throw("List size exceeds 6")
821819
822- ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
823- }
824- else fl
825- }
826-
827-
828-func fq (fr,fs) = if ((fs == ""))
829- then $Tuple2(fr, false)
820+ fe(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6)
821+ }
822+ else fk
823+ }
824+
825+
826+func fp (fq,fr) = if ((fr == ""))
827+ then $Tuple2(fq, false)
830828 else {
831- func ft (eX,fu) = {
832- let fv = split(fu, ",")
833- if ((size(fv) != 2))
829+ func fs (eW,ft) = {
830+ let fu = split(ft, ",")
831+ if ((size(fu) != 2))
834832 then throw("Incorrect format, should be index,amount")
835833 else {
836- let dg = parseIntValue(fv[0])
837- if (if ((0 > dg))
834+ let dh = parseIntValue(fu[0])
835+ if (if ((0 > dh))
838836 then true
839- else (dg >= size(aY)))
837+ else (dh >= size(aX)))
840838 then throw("Unknown product idx")
841839 else {
842- let fw = parseIntValue(fv[1])
843- let fx = split(eX._1, (fv[0] + ":"))
844- if ((size(fx) != 2))
845- then throw((("You don't have " + aU[dg]) + " equipped"))
840+ let fv = parseIntValue(fu[1])
841+ let fw = split(eW._1, (fu[0] + ":"))
842+ if ((size(fw) != 2))
843+ then throw((("You don't have " + aT[dh]) + " equipped"))
846844 else {
847- let fy = fx[1]
848- let fz = if (dP(take(drop(fy, 1), 1)))
845+ let fx = fw[1]
846+ let fy = if (dN(take(drop(fx, 1), 1)))
849847 then 2
850848 else 1
851- let fA = parseIntValue(take(fy, fz))
852- let fB = drop(fy, fz)
853- let fC = if ((fA >= fw))
854- then (fA - fw)
855- else throw(((((("You equipped " + toString(fA)) + " of ") + aU[dg]) + ", but tried to use ") + toString(fw)))
856- $Tuple2(((((fx[0] + fv[0]) + ":") + toString(fC)) + fB), if (eX._2)
849+ let fz = parseIntValue(take(fx, fy))
850+ let fA = drop(fx, fy)
851+ let fB = if ((fz >= fv))
852+ then (fz - fv)
853+ else throw(((((("You equipped " + toString(fz)) + " of ") + aT[dh]) + ", but tried to use ") + toString(fv)))
854+ $Tuple2(((((fw[0] + fu[0]) + ":") + toString(fB)) + fA), if (eW._2)
857855 then true
858- else if (if ((dg >= 6))
859- then (8 >= dg)
856+ else if (if ((dh >= 6))
857+ then (8 >= dh)
860858 else false)
861- then (fC == 0)
859+ then (fB == 0)
862860 else false)
863861 }
864862 }
865863 }
866864 }
867865
868- let eZ = split(fs, "_")
869- let fa = size(eZ)
870- let fb = $Tuple2(fr, false)
871- func fc (fd,fe) = if ((fe >= fa))
872- then fd
873- else ft(fd, eZ[fe])
874-
875- func ff (fd,fe) = if ((fe >= fa))
876- then fd
866+ let eY = split(fr, "_")
867+ let eZ = size(eY)
868+ let fa = $Tuple2(fq, false)
869+ func fb (fc,fd) = if ((fd >= eZ))
870+ then fc
871+ else fs(fc, eY[fd])
872+
873+ func fe (fc,fd) = if ((fd >= eZ))
874+ then fc
877875 else throw("List size exceeds 10")
878876
879- ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
877+ fe(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
880878 }
881879
882880
883-func fD (fE) = {
884- let fF = if ((fE == ""))
881+func fC (fD) = {
882+ let fE = if ((fD == ""))
885883 then nil
886- else split_4C(fE, "_")
887- func fG (eX,cu) = {
888- let fH = (size(eX) / 8)
889- let fA = if ((size(fF) > fH))
890- then parseIntValue(fF[fH])
884+ else split_4C(fD, "_")
885+ func fF (eW,ct) = {
886+ let fG = (size(eW) / 8)
887+ let fz = if ((size(fE) > fG))
888+ then parseIntValue(fE[fG])
891889 else 0
892- (eX + toBytes(fA))
890+ (eW + toBytes(fz))
893891 }
894892
895- let eZ = aY
896- let fa = size(eZ)
897- let fb = base58''
898- func fc (fd,fe) = if ((fe >= fa))
899- then fd
900- else fG(fd, eZ[fe])
901-
902- func ff (fd,fe) = if ((fe >= fa))
903- then fd
893+ let eY = aX
894+ let eZ = size(eY)
895+ let fa = base58''
896+ func fb (fc,fd) = if ((fd >= eZ))
897+ then fc
898+ else fF(fc, eY[fd])
899+
900+ func fe (fc,fd) = if ((fd >= eZ))
901+ then fc
904902 else throw("List size exceeds 50")
905903
906- ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 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)
907- }
908-
909-
910-func fI (fJ) = {
911- func fK (eX,cu) = {
912- let fH = size(eX)
913- let fL = take(drop(fJ, (8 * fH)), 8)
914- (eX :+ toString(toInt(fL)))
904+ fe(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fa, 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)
905+ }
906+
907+
908+func fH (fI) = {
909+ func fJ (eW,ct) = {
910+ let fG = size(eW)
911+ let fK = take(drop(fI, (8 * fG)), 8)
912+ (eW :+ toString(toInt(fK)))
915913 }
916914
917915 makeString_2C({
918- let eZ = aY
919- let fa = size(eZ)
920- let fb = nil
921- func fc (fd,fe) = if ((fe >= fa))
922- then fd
923- else fK(fd, eZ[fe])
924-
925- func ff (fd,fe) = if ((fe >= fa))
926- then fd
916+ let eY = aX
917+ let eZ = size(eY)
918+ let fa = nil
919+ func fb (fc,fd) = if ((fd >= eZ))
920+ then fc
921+ else fJ(fc, eY[fd])
922+
923+ func fe (fc,fd) = if ((fd >= eZ))
924+ then fc
927925 else throw("List size exceeds 50")
928926
929- ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 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)
927+ fe(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fa, 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)
930928 }, "_")
931929 }
932930
933931
934-func fM (fN,fO) = {
935- func fP (eX,fH) = {
936- let fQ = if ((size(fN) > (7 + fH)))
937- then fN[(7 + fH)]
932+func fL (fM,fN) = {
933+ func fO (eW,fG) = {
934+ let fP = if ((size(fM) > (7 + fG)))
935+ then fM[(7 + fG)]
938936 else 0
939- if ((parseIntValue(fO[fH]) > (fN[fH] + fQ)))
940- then throw(("Requirement not satisfied: " + l[fH]))
937+ if ((parseIntValue(fN[fG]) > (fM[fG] + fP)))
938+ then throw(("Requirement not satisfied: " + k[fG]))
941939 else true
942940 }
943941
944- let eZ = [0, 1, 2, 3, 4, 5, 6]
945- let fa = size(eZ)
946- let fb = false
947- func fc (fd,fe) = if ((fe >= fa))
948- then fd
949- else fP(fd, eZ[fe])
950-
951- func ff (fd,fe) = if ((fe >= fa))
952- then fd
942+ let eY = [0, 1, 2, 3, 4, 5, 6]
943+ let eZ = size(eY)
944+ let fa = false
945+ func fb (fc,fd) = if ((fd >= eZ))
946+ then fc
947+ else fO(fc, eY[fd])
948+
949+ func fe (fc,fd) = if ((fd >= eZ))
950+ then fc
953951 else throw("List size exceeds 7")
954952
955- ff(fc(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6), 7)
956- }
957-
958-
959-func fR (fS,fF,fT,fN,fU,fV) = {
960- let fv = split(fS, ":")
961- if ((size(fv) != 2))
953+ fe(fb(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6), 7)
954+ }
955+
956+
957+func fQ (fR,fE,fS,fM,fT,fU) = {
958+ let fu = split(fR, ":")
959+ if ((size(fu) != 2))
962960 then throw("Incorrect format, should be index:amount")
963- else if (if (!(fT))
964- then (size(fv[0]) != 2)
961+ else if (if (!(fS))
962+ then (size(fu[0]) != 2)
965963 else false)
966964 then throw("Product idx should be 2 digits, zero padded")
967965 else {
968- let fW = parseIntValue(fv[0])
969- let fX = parseIntValue(fv[1])
970- if (!(containsElement(aX, fW)))
971- then throw((("Product '" + aU[fW]) + "' cannot be used for land defense"))
972- else if ((0 > fX))
966+ let fV = parseIntValue(fu[0])
967+ let fW = parseIntValue(fu[1])
968+ if (!(containsElement(aW, fV)))
969+ then throw((("Product '" + aT[fV]) + "' cannot be used for land defense"))
970+ else if ((0 > fW))
973971 then throw("Count can't be negative")
974- else if ((fX > v))
975- then throw(((("Can't put more than " + toString(v)) + " of ") + aU[fW]))
976- else if ((fX == 0))
977- then $Tuple3(fF, fU, fV)
972+ else if ((fW > u))
973+ then throw(((("Can't put more than " + toString(u)) + " of ") + aT[fV]))
974+ else if ((fW == 0))
975+ then $Tuple3(fE, fT, fU)
978976 else {
979- let fY = take(fF, (8 * fW))
980- let fA = toInt(take(drop(fF, (8 * fW)), 8))
981- let fB = drop(fF, (8 * (fW + 1)))
982- let cu = split(aY[fW], "_")
983- if (if (!(fT))
984- then (fX > fA)
977+ let fX = take(fE, (8 * fV))
978+ let fz = toInt(take(drop(fE, (8 * fV)), 8))
979+ let fA = drop(fE, (8 * (fV + 1)))
980+ let ct = split(aX[fV], "_")
981+ if (if (!(fS))
982+ then (fW > fz)
985983 else false)
986- then throw(((((("You have " + toString(fA)) + " of ") + aU[fW]) + ", but tried to use ") + toString(fX)))
984+ then throw(((((("You have " + toString(fz)) + " of ") + aT[fV]) + ", but tried to use ") + toString(fW)))
987985 else {
988- let fC = if (if (!(fT))
989- then fM(fN, split(cu[bb], ","))
986+ let fB = if (if (!(fS))
987+ then fL(fM, split(ct[ba], ","))
990988 else false)
991- then (fA - fX)
992- else (fA + fX)
993- let fZ = (eN(fC, bd) - eN(fA, bd))
994- $Tuple3(((fY + toBytes(fC)) + fB), (fU + fZ), (fV - fZ))
989+ then (fz - fW)
990+ else (fz + fW)
991+ let fY = (eM(fB, bc) - eM(fz, bc))
992+ $Tuple3(((fX + toBytes(fB)) + fA), (fT + fY), (fU - fY))
995993 }
996994 }
997995 }
998996 }
999997
1000998
1001-func ga (fS,fF,fT,gb,gc,gd,fN) = {
1002- let fv = split(fS, ":")
1003- if ((size(fv) != 2))
999+func fZ (fR,fE,fS,ga,gb,gc,fM) = {
1000+ let fu = split(fR, ":")
1001+ if ((size(fu) != 2))
10041002 then throw("Incorrect format, should be index:amount")
1005- else if (if (!(fT))
1006- then (size(fv[0]) != 2)
1003+ else if (if (!(fS))
1004+ then (size(fu[0]) != 2)
10071005 else false)
10081006 then throw("Product idx should be 2 digits, zero padded")
10091007 else {
1010- let fW = parseIntValue(fv[0])
1011- let fX = parseIntValue(fv[1])
1012- if (if ((0 > fW))
1008+ let fV = parseIntValue(fu[0])
1009+ let fW = parseIntValue(fu[1])
1010+ if (if ((0 > fV))
10131011 then true
1014- else (fW >= size(aY)))
1012+ else (fV >= size(aX)))
10151013 then throw("Unknown product idx")
1016- else if ((0 > fX))
1014+ else if ((0 > fW))
10171015 then throw("Count can't be negative")
1018- else if ((fX > v))
1019- then throw(((("Can't put more than " + toString(v)) + " of ") + aU[fW]))
1020- else if ((fX == 0))
1021- then $Tuple2(fF, false)
1016+ else if ((fW > u))
1017+ then throw(((("Can't put more than " + toString(u)) + " of ") + aT[fV]))
1018+ else if ((fW == 0))
1019+ then $Tuple2(fE, false)
10221020 else {
1023- let fY = take(fF, (8 * fW))
1024- let fA = toInt(take(drop(fF, (8 * fW)), 8))
1025- let fB = drop(fF, (8 * (fW + 1)))
1026- let cu = split(aY[fW], "_")
1027- if (if (!(fT))
1028- then (fX > fA)
1021+ let fX = take(fE, (8 * fV))
1022+ let fz = toInt(take(drop(fE, (8 * fV)), 8))
1023+ let fA = drop(fE, (8 * (fV + 1)))
1024+ let ct = split(aX[fV], "_")
1025+ if (if (!(fS))
1026+ then (fW > fz)
10291027 else false)
1030- then throw(((((("You have " + toString(fA)) + " of ") + aU[fW]) + ", but tried to use ") + toString(fX)))
1028+ then throw(((((("You have " + toString(fz)) + " of ") + aT[fV]) + ", but tried to use ") + toString(fW)))
10311029 else {
1032- let ge = if (if (!(fT))
1033- then fM(fN, split(cu[bb], ","))
1030+ let gd = if (if (!(fS))
1031+ then fL(fM, split(ct[ba], ","))
10341032 else false)
10351033 then {
1036- let gf = cu[bc]
1037- if ((gf == ""))
1034+ let ge = ct[bb]
1035+ if ((ge == ""))
10381036 then throw("Item cannot be equipped")
10391037 else {
1040- let gg = parseIntValue(gf)
1041- let gh = (gg / 100)
1042- if ((gb != gh))
1038+ let gf = parseIntValue(ge)
1039+ let gg = (gf / 100)
1040+ if ((ga != gg))
10431041 then throw("Segment incompatible")
10441042 else {
1045- let gi = ((gg % 100) / 10)
1046- if ((gc != gi))
1043+ let gh = ((gf % 100) / 10)
1044+ if ((gb != gh))
10471045 then throw("Slot incompatible")
10481046 else {
1049- let gj = (gg % 10)
1050- if (if ((gd != 0))
1051- then (gj > 1)
1047+ let gi = (gf % 10)
1048+ if (if ((gc != 0))
1049+ then (gi > 1)
10521050 else false)
10531051 then throw("Big items should occupy slot 0")
1054- else (gj > 1)
1052+ else (gi > 1)
10551053 }
10561054 }
10571055 }
10581056 }
10591057 else false
1060- $Tuple2(((fY + toBytes((fA + (if (fT)
1061- then fX
1062- else -(fX))))) + fB), ge)
1058+ $Tuple2(((fX + toBytes((fz + (if (fS)
1059+ then fW
1060+ else -(fW))))) + fA), gd)
10631061 }
10641062 }
10651063 }
10661064 }
10671065
10681066
1069-func gk (gl,gm,fT,gb,gc,gn) = if ((gl != ""))
1067+func gj (gk,gl,fS,ga,gb,gm) = if ((gk != ""))
10701068 then {
1071- let go = split(gl, ",")
1072- if ((size(go) > u))
1069+ let gn = split(gk, ",")
1070+ if ((size(gn) > t))
10731071 then throw("Wrong slots format")
10741072 else {
1075- let gp = go[0]
1076- let gq = if ((size(go) > 1))
1077- then go[1]
1073+ let go = gn[0]
1074+ let gp = if ((size(gn) > 1))
1075+ then gn[1]
10781076 else ""
1079- if (if ((gp == ""))
1080- then (gq == "")
1077+ if (if ((go == ""))
1078+ then (gp == "")
10811079 else false)
1082- then gm
1080+ then gl
10831081 else {
1084- let gr = if ((gp != ""))
1085- then ga(gp, gm, fT, gb, gc, 0, gn)
1086- else $Tuple2(gm, false)
1087- if ((gq != ""))
1088- then if (gr._2)
1082+ let gq = if ((go != ""))
1083+ then fZ(go, gl, fS, ga, gb, 0, gm)
1084+ else $Tuple2(gl, false)
1085+ if ((gp != ""))
1086+ then if (gq._2)
10891087 then throw("Big item already occupies slot")
1090- else ga(gq, gr._1, fT, gb, gc, 1, gn)._1
1091- else gr._1
1088+ else fZ(gp, gq._1, fS, ga, gb, 1, gm)._1
1089+ else gq._1
10921090 }
10931091 }
10941092 }
1095- else gm
1096-
1097-
1098-func gs (gt,gu,fT,gn) = {
1099- func gb (eX,gv) = {
1100- let fH = eX._1
1101- let gc = split(gv, ";")
1102- if ((size(gc) != t))
1093+ else gl
1094+
1095+
1096+func gr (gs,gt,fS,gm) = {
1097+ func ga (eW,gu) = {
1098+ let fG = eW._1
1099+ let gb = split(gu, ";")
1100+ if ((size(gb) != s))
11031101 then throw("Wrong segment format")
11041102 else {
1105- let gw = gc[0]
1106- let gx = gc[1]
1107- if (if ((gw == ""))
1108- then (gx == "")
1103+ let gv = gb[0]
1104+ let gw = gb[1]
1105+ if (if ((gv == ""))
1106+ then (gw == "")
11091107 else false)
1110- then $Tuple2((fH + 1), eX._2)
1108+ then $Tuple2((fG + 1), eW._2)
11111109 else {
1112- let gy = gk(gw, eX._2, fT, fH, 0, gn)
1113- $Tuple2((fH + 1), gk(gx, gy, fT, fH, 1, gn))
1110+ let gx = gj(gv, eW._2, fS, fG, 0, gm)
1111+ $Tuple2((fG + 1), gj(gw, gx, fS, fG, 1, gm))
11141112 }
11151113 }
11161114 }
11171115
1118-( let eZ = gt
1119- let fa = size(eZ)
1120- let fb = $Tuple2(0, gu)
1121- func fc (fd,fe) = if ((fe >= fa))
1122- then fd
1123- else gb(fd, eZ[fe])
1124-
1125- func ff (fd,fe) = if ((fe >= fa))
1126- then fd
1116+( let eY = gs
1117+ let eZ = size(eY)
1118+ let fa = $Tuple2(0, gt)
1119+ func fb (fc,fd) = if ((fd >= eZ))
1120+ then fc
1121+ else ga(fc, eY[fd])
1122+
1123+ func fe (fc,fd) = if ((fd >= eZ))
1124+ then fc
11271125 else throw("List size exceeds 6")
11281126
1129- ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6))._2
1130- }
1131-
1132-
1133-func gz (gt,gu,fU,fV,fT,fN) = if ((3 > size(gt)))
1127+ fe(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6))._2
1128+ }
1129+
1130+
1131+func gy (gs,gt,fT,fU,fS,fM) = if ((3 > size(gs)))
11341132 then throw("At least duck, mines and traps parts are required")
11351133 else {
1136- func gb (eX,gv) = {
1137- let fH = eX._1
1138- if ((fH == 0))
1139- then $Tuple4((fH + 1), eX._2, eX._3, eX._4)
1134+ func ga (eW,gu) = {
1135+ let fG = eW._1
1136+ if ((fG == 0))
1137+ then $Tuple4((fG + 1), eW._2, eW._3, eW._4)
11401138 else {
1141- let gA = fR(gv, eX._2, fT, fN, eX._3, eX._4)
1142- $Tuple4((fH + 1), gA._1, gA._2, gA._3)
1139+ let gz = fQ(gu, eW._2, fS, fM, eW._3, eW._4)
1140+ $Tuple4((fG + 1), gz._1, gz._2, gz._3)
11431141 }
11441142 }
11451143
1146- let gB = {
1147- let eZ = gt
1148- let fa = size(eZ)
1149- let fb = $Tuple4(0, gu, fU, fV)
1150- func fc (fd,fe) = if ((fe >= fa))
1151- then fd
1152- else gb(fd, eZ[fe])
1153-
1154- func ff (fd,fe) = if ((fe >= fa))
1155- then fd
1144+ let gA = {
1145+ let eY = gs
1146+ let eZ = size(eY)
1147+ let fa = $Tuple4(0, gt, fT, fU)
1148+ func fb (fc,fd) = if ((fd >= eZ))
1149+ then fc
1150+ else ga(fc, eY[fd])
1151+
1152+ func fe (fc,fd) = if ((fd >= eZ))
1153+ then fc
11561154 else throw("List size exceeds 10")
11571155
1158- ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1159- }
1160- $Tuple3(gB._2, gB._3, gB._4)
1156+ fe(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1157+ }
1158+ $Tuple3(gA._2, gA._3, gA._4)
11611159 }
11621160
11631161
1164-func gC (C) = {
1165- let gD = H(C)
1166- let gE = split(valueOrElse(getString(gD), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1167- let gF = gs(gE, eg, true, nil)
1168- let gG = split(gE[r], ";")[1]
1169- let as = if ((gG == ""))
1162+func gB (B) = {
1163+ let gC = G(B)
1164+ let gD = split(valueOrElse(getString(gC), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1165+ let gE = gr(gD, ef, true, nil)
1166+ let gF = split(gD[q], ";")[1]
1167+ let ar = if ((gF == ""))
11701168 then 0
11711169 else {
1172- let gH = split(gG, ",")[0]
1173- if ((gH == ""))
1170+ let gG = split(gF, ",")[0]
1171+ if ((gG == ""))
11741172 then 0
11751173 else {
1176- let fS = split(gH, ":")
1177- let dg = fS[0]
1178- let gI = fS[1]
1179- if (if (if (if (if ((dg == "06"))
1174+ let fR = split(gG, ":")
1175+ let dh = fR[0]
1176+ let gH = fR[1]
1177+ if (if (if (if (if ((dh == "06"))
11801178 then true
1181- else (dg == "07"))
1179+ else (dh == "07"))
11821180 then true
1183- else (dg == "08"))
1184- then (gI != "")
1181+ else (dh == "08"))
1182+ then (gH != "")
11851183 else false)
1186- then (parseIntValue(gI) > 0)
1184+ then (parseIntValue(gH) > 0)
11871185 else false)
1188- then parseIntValue(split(aY[parseIntValue(dg)], "_")[ba])
1186+ then parseIntValue(split(aX[parseIntValue(dh)], "_")[aZ])
11891187 else 0
11901188 }
11911189 }
1192- let gn = aq(this, C, as, true)
1193- let gJ = gs(gE, gF, false, gn)
1194- (gJ == gJ)
1195- }
1196-
1197-
1198-func gK (gL,gM,gN,gO) = if ((size(gL) != aJ))
1190+ let gm = ap(this, B, ar, true)
1191+ let gI = gr(gD, gE, false, gm)
1192+ (gI == gI)
1193+ }
1194+
1195+
1196+func gJ (gK,gL,gM,gN) = if ((size(gK) != aI))
11991197 then throw("Wrong proportions data")
12001198 else {
1201- func gP (eX,gQ) = {
1202- let fp = (parseIntValue(gL[gQ]) + ((gO * gM[gQ]) * gN))
1203- if ((0 > fp))
1204- then throw(((((((("Panic! Pieces of type=" + toString(gQ)) + ", sign=") + toString(gO)) + ", terrainCounts[i]=") + toString(gM[gQ])) + ", landSizeIndex=") + toString(gN)))
1205- else (eX :+ toString(fp))
1206- }
1207-
1208- let eZ = cQ
1209- let fa = size(eZ)
1210- let fb = nil
1211- func fc (fd,fe) = if ((fe >= fa))
1212- then fd
1213- else gP(fd, eZ[fe])
1214-
1215- func ff (fd,fe) = if ((fe >= fa))
1216- then fd
1199+ func gO (eW,gP) = {
1200+ let fo = (parseIntValue(gK[gP]) + ((gN * gL[gP]) * gM))
1201+ if ((0 > fo))
1202+ then throw(((((((("Panic! Pieces of type=" + toString(gP)) + ", sign=") + toString(gN)) + ", terrainCounts[i]=") + toString(gL[gP])) + ", landSizeIndex=") + toString(gM)))
1203+ else (eW :+ toString(fo))
1204+ }
1205+
1206+ let eY = cR
1207+ let eZ = size(eY)
1208+ let fa = nil
1209+ func fb (fc,fd) = if ((fd >= eZ))
1210+ then fc
1211+ else gO(fc, eY[fd])
1212+
1213+ func fe (fc,fd) = if ((fd >= eZ))
1214+ then fc
12171215 else throw("List size exceeds 6")
12181216
1219- ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
1217+ fe(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6)
12201218 }
12211219
12221220
1223-func gR (gM,gN,gO) = {
1224- let gL = split(valueOrElse(getString(dx()), "0_0_0_0_0_0"), "_")
1225- makeString(gK(gL, gM, gN, gO), "_")
1226- }
1227-
1228-
1229-func gS (gT) = [(size(split(gT, "A")) - 1), (size(split(gT, "B")) - 1), (size(split(gT, "C")) - 1), (size(split(gT, "D")) - 1), (size(split(gT, "E")) - 1), (size(split(gT, "F")) - 1)]
1230-
1231-
1232-func gU (gV,gM,gW,gN,gX) = {
1233- func gY (eX,gQ) = {
1234- let gZ = ((fraction(gW, gX, a) * gM[gQ]) * gN)
1235- (eX :+ toString((parseIntValue(gV[gQ]) + gZ)))
1221+func gQ (gL,gM,gN) = {
1222+ let gK = split(valueOrElse(getString(dy()), "0_0_0_0_0_0"), "_")
1223+ makeString(gJ(gK, gL, gM, gN), "_")
1224+ }
1225+
1226+
1227+func gR (gS) = [(size(split(gS, "A")) - 1), (size(split(gS, "B")) - 1), (size(split(gS, "C")) - 1), (size(split(gS, "D")) - 1), (size(split(gS, "E")) - 1), (size(split(gS, "F")) - 1)]
1228+
1229+
1230+func gT (gU,gL,gV,gM,gW) = {
1231+ func gX (eW,gP) = {
1232+ let gY = ((fraction(gV, gW, a) * gL[gP]) * gM)
1233+ (eW :+ toString((parseIntValue(gU[gP]) + gY)))
12361234 }
12371235
1238- let fi = {
1239- let eZ = cQ
1240- let fa = size(eZ)
1241- let fb = nil
1242- func fc (fd,fe) = if ((fe >= fa))
1243- then fd
1244- else gY(fd, eZ[fe])
1245-
1246- func ff (fd,fe) = if ((fe >= fa))
1247- then fd
1236+ let fh = {
1237+ let eY = cR
1238+ let eZ = size(eY)
1239+ let fa = nil
1240+ func fb (fc,fd) = if ((fd >= eZ))
1241+ then fc
1242+ else gX(fc, eY[fd])
1243+
1244+ func fe (fc,fd) = if ((fd >= eZ))
1245+ then fc
12481246 else throw("List size exceeds 6")
12491247
1250- ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
1248+ fe(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6)
12511249 }
1252- makeString(fi, "_")
1253- }
1254-
1255-
1256-func ha (gM,gW,gN,gX) = {
1257- func gY (eX,gQ) = {
1258- let gZ = ((fraction(gW, gX, a) * gM[gQ]) * gN)
1259- $Tuple2((eX._1 :+ gZ), (eX._2 + gZ))
1250+ makeString(fh, "_")
1251+ }
1252+
1253+
1254+func gZ (gL,gV,gM,gW) = {
1255+ func gX (eW,gP) = {
1256+ let gY = ((fraction(gV, gW, a) * gL[gP]) * gM)
1257+ $Tuple2((eW._1 :+ gY), (eW._2 + gY))
12601258 }
12611259
1262- let eZ = cQ
1263- let fa = size(eZ)
1264- let fb = $Tuple2(nil, 0)
1265- func fc (fd,fe) = if ((fe >= fa))
1266- then fd
1267- else gY(fd, eZ[fe])
1268-
1269- func ff (fd,fe) = if ((fe >= fa))
1270- then fd
1260+ let eY = cR
1261+ let eZ = size(eY)
1262+ let fa = $Tuple2(nil, 0)
1263+ func fb (fc,fd) = if ((fd >= eZ))
1264+ then fc
1265+ else gX(fc, eY[fd])
1266+
1267+ func fe (fc,fd) = if ((fd >= eZ))
1268+ then fc
12711269 else throw("List size exceeds 6")
12721270
1273- ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
1274- }
1275-
1276-
1277-func hb (hc,hd,he,hf) = {
1278- let hg = he._1
1279- let hh = he._2
1280- if ((hh == 0))
1281- then $Tuple2(makeString(hc, "_"), makeString(hd, "_"))
1282- else if ((hf >= hh))
1271+ fe(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6)
1272+ }
1273+
1274+
1275+func ha (hb,hc,hd,he) = {
1276+ let hf = hd._1
1277+ let hg = hd._2
1278+ if ((hg == 0))
1279+ then $Tuple2(makeString(hb, "_"), makeString(hc, "_"))
1280+ else if ((he >= hg))
12831281 then {
1284- func hi (eX,gQ) = (eX :+ toString((parseIntValue(hc[gQ]) + hg[gQ])))
1285-
1286- let fi = {
1287- let eZ = cQ
1288- let fa = size(eZ)
1289- let fb = nil
1290- func fc (fd,fe) = if ((fe >= fa))
1291- then fd
1292- else hi(fd, eZ[fe])
1293-
1294- func ff (fd,fe) = if ((fe >= fa))
1295- then fd
1282+ func hh (eW,gP) = (eW :+ toString((parseIntValue(hb[gP]) + hf[gP])))
1283+
1284+ let fh = {
1285+ let eY = cR
1286+ let eZ = size(eY)
1287+ let fa = nil
1288+ func fb (fc,fd) = if ((fd >= eZ))
1289+ then fc
1290+ else hh(fc, eY[fd])
1291+
1292+ func fe (fc,fd) = if ((fd >= eZ))
1293+ then fc
12961294 else throw("List size exceeds 6")
12971295
1298- ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
1296+ fe(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6)
12991297 }
1300- $Tuple2(makeString(fi, "_"), makeString(hd, "_"))
1298+ $Tuple2(makeString(fh, "_"), makeString(hc, "_"))
13011299 }
13021300 else {
1303- func hj (eX,gQ) = {
1304- let hk = fraction(hg[gQ], hf, hh)
1305- $Tuple2((eX._1 :+ toString((parseIntValue(hc[gQ]) + hk))), (eX._2 :+ toString(((parseIntValue(hd[gQ]) + hg[gQ]) - hk))))
1301+ func hi (eW,gP) = {
1302+ let hj = fraction(hf[gP], he, hg)
1303+ $Tuple2((eW._1 :+ toString((parseIntValue(hb[gP]) + hj))), (eW._2 :+ toString(((parseIntValue(hc[gP]) + hf[gP]) - hj))))
13061304 }
13071305
1308- let fi = {
1309- let eZ = cQ
1310- let fa = size(eZ)
1311- let fb = $Tuple2(nil, nil)
1312- func fc (fd,fe) = if ((fe >= fa))
1313- then fd
1314- else hj(fd, eZ[fe])
1315-
1316- func ff (fd,fe) = if ((fe >= fa))
1317- then fd
1306+ let fh = {
1307+ let eY = cR
1308+ let eZ = size(eY)
1309+ let fa = $Tuple2(nil, nil)
1310+ func fb (fc,fd) = if ((fd >= eZ))
1311+ then fc
1312+ else hi(fc, eY[fd])
1313+
1314+ func fe (fc,fd) = if ((fd >= eZ))
1315+ then fc
13181316 else throw("List size exceeds 6")
13191317
1320- ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
1318+ fe(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6)
13211319 }
1322- $Tuple2(makeString(fi._1, "_"), makeString(fi._2, "_"))
1320+ $Tuple2(makeString(fh._1, "_"), makeString(fh._2, "_"))
13231321 }
13241322 }
13251323
13261324
1327-func hl (hm) = if ((hm >= toBigInt(0)))
1328- then hm
1329- else -(hm)
1330-
1331-
1332-let hn = [[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]]
1333-
1334-func ho (dG,hp) = {
1335- let hq = toInt((dG % ep))
1336- let hr = if ((hp[0] > hq))
1325+func hk (hl) = if ((hl >= toBigInt(0)))
1326+ then hl
1327+ else -(hl)
1328+
1329+
1330+let hm = [[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]]
1331+
1332+func hn (dH,ho) = {
1333+ let hp = toInt((dH % eo))
1334+ let hq = if ((ho[0] > hp))
13371335 then "A"
1338- else if ((hp[1] > hq))
1336+ else if ((ho[1] > hp))
13391337 then "B"
1340- else if ((hp[2] > hq))
1338+ else if ((ho[2] > hp))
13411339 then "C"
1342- else if ((hp[3] > hq))
1340+ else if ((ho[3] > hp))
13431341 then "D"
1344- else if ((hp[4] > hq))
1342+ else if ((ho[4] > hp))
13451343 then "E"
13461344 else "F"
1347- hr
1348- }
1349-
1350-
1351-func hs (ht,hu) = {
1352- let hv = hn[hu]
1353- func hw (eX,eY) = $Tuple2((((((eX._1 + ho(eX._2, hv)) + ho((eX._2 / ep), hv)) + ho((eX._2 / eq), hv)) + ho((eX._2 / er), hv)) + ho((eX._2 / es), hv)), (eX._2 / et))
1354-
1355- let gB = {
1356- let eZ = [1, 2, 3, 4, 5]
1357- let fa = size(eZ)
1358- let fb = $Tuple2("", (ht / eo))
1359- func fc (fd,fe) = if ((fe >= fa))
1360- then fd
1361- else hw(fd, eZ[fe])
1362-
1363- func ff (fd,fe) = if ((fe >= fa))
1364- then fd
1345+ hq
1346+ }
1347+
1348+
1349+func hr (hs,ht) = {
1350+ let hu = hm[ht]
1351+ func hv (eW,eX) = $Tuple2((((((eW._1 + hn(eW._2, hu)) + hn((eW._2 / eo), hu)) + hn((eW._2 / ep), hu)) + hn((eW._2 / eq), hu)) + hn((eW._2 / er), hu)), (eW._2 / es))
1352+
1353+ let gA = {
1354+ let eY = [1, 2, 3, 4, 5]
1355+ let eZ = size(eY)
1356+ let fa = $Tuple2("", (hs / en))
1357+ func fb (fc,fd) = if ((fd >= eZ))
1358+ then fc
1359+ else hv(fc, eY[fd])
1360+
1361+ func fe (fc,fd) = if ((fd >= eZ))
1362+ then fc
13651363 else throw("List size exceeds 5")
13661364
1367- ff(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5)
1365+ fe(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5)
13681366 }
1369- gB._1
1370- }
1371-
1372-
1373-let hx = [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]
1374-
1375-let hy = ["A", "B", "C", "D", "E", "F"]
1376-
1377-func hz (hA,gN) = {
1378- func hB (eX,dE) = {
1379- let fH = eX._2
1380- let hC = parseIntValue(dE)
1381- let hm = if ((hC == 0))
1367+ gA._1
1368+ }
1369+
1370+
1371+let hw = [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]
1372+
1373+let hx = ["A", "B", "C", "D", "E", "F"]
1374+
1375+func hy (hz,gM) = {
1376+ func hA (eW,dF) = {
1377+ let fG = eW._2
1378+ let hB = parseIntValue(dF)
1379+ let hl = if ((hB == 0))
13821380 then 0
1383- else if ((hC >= (4 * gN)))
1384- then (hC / gN)
1385- else if ((hC > (3 * gN)))
1381+ else if ((hB >= (4 * gM)))
1382+ then (hB / gM)
1383+ else if ((hB > (3 * gM)))
13861384 then 3
1387- else (((hC - 1) / gN) + 1)
1388- $Tuple3((eX._1 :+ hm), (eX._2 + 1), (eX._3 + hm))
1385+ else (((hB - 1) / gM) + 1)
1386+ $Tuple3((eW._1 :+ hl), (eW._2 + 1), (eW._3 + hl))
13891387 }
13901388
1391- let gB = {
1392- let eZ = hA
1393- let fa = size(eZ)
1394- let fb = $Tuple3(nil, 0, 0)
1395- func fc (fd,fe) = if ((fe >= fa))
1396- then fd
1397- else hB(fd, eZ[fe])
1398-
1399- func ff (fd,fe) = if ((fe >= fa))
1400- then fd
1389+ let gA = {
1390+ let eY = hz
1391+ let eZ = size(eY)
1392+ let fa = $Tuple3(nil, 0, 0)
1393+ func fb (fc,fd) = if ((fd >= eZ))
1394+ then fc
1395+ else hA(fc, eY[fd])
1396+
1397+ func fe (fc,fd) = if ((fd >= eZ))
1398+ then fc
14011399 else throw("List size exceeds 6")
14021400
1403- ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
1401+ fe(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6)
14041402 }
1405- let hD = gB._1
1406- let hE = value(indexOf(hD, max(hD)))
1407- let hF = (gB._3 - 25)
1408- func hG (eX,dg) = {
1409- let dL = if ((dg == hE))
1410- then (hD[dg] - hF)
1411- else hD[dg]
1412- let dW = if ((dL == 0))
1403+ let hC = gA._1
1404+ let hD = value(indexOf(hC, max(hC)))
1405+ let hE = (gA._3 - 25)
1406+ func hF (eW,dh) = {
1407+ let dR = if ((dh == hD))
1408+ then (hC[dh] - hE)
1409+ else hC[dh]
1410+ let dV = if ((dR == 0))
14131411 then nil
1414- else split(drop(toString(pow(10, 0, dL, 0, 0, DOWN)), 1), "")
1415- let gg = hy[dg]
1416- func hH (hI,hJ) = (hI :+ gg)
1417-
1418- let hK = {
1419- let eZ = dW
1420- let fa = size(eZ)
1421- let fb = nil
1422- func hL (fd,fe) = if ((fe >= fa))
1423- then fd
1424- else hH(fd, eZ[fe])
1425-
1426- func hM (fd,fe) = if ((fe >= fa))
1427- then fd
1412+ else split(drop(toString(pow(10, 0, dR, 0, 0, DOWN)), 1), "")
1413+ let gf = hx[dh]
1414+ func hG (hH,hI) = (hH :+ gf)
1415+
1416+ let hJ = {
1417+ let eY = dV
1418+ let eZ = size(eY)
1419+ let fa = nil
1420+ func hK (fc,fd) = if ((fd >= eZ))
1421+ then fc
1422+ else hG(fc, eY[fd])
1423+
1424+ func hL (fc,fd) = if ((fd >= eZ))
1425+ then fc
14281426 else throw("List size exceeds 25")
14291427
1430- hM(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(fb, 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)
1431- }
1432- (eX ++ hK)
1428+ hL(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(fa, 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)
1429+ }
1430+ (eW ++ hJ)
14331431 }
14341432
1435- let fi = {
1436- let eZ = cQ
1437- let fa = size(eZ)
1438- let fb = nil
1439- func hL (fd,fe) = if ((fe >= fa))
1440- then fd
1441- else hG(fd, eZ[fe])
1442-
1443- func hM (fd,fe) = if ((fe >= fa))
1444- then fd
1433+ let fh = {
1434+ let eY = cR
1435+ let eZ = size(eY)
1436+ let fa = nil
1437+ func hK (fc,fd) = if ((fd >= eZ))
1438+ then fc
1439+ else hF(fc, eY[fd])
1440+
1441+ func hL (fc,fd) = if ((fd >= eZ))
1442+ then fc
14451443 else throw("List size exceeds 6")
14461444
1447- hM(hL(hL(hL(hL(hL(hL(fb, 0), 1), 2), 3), 4), 5), 6)
1445+ hL(hK(hK(hK(hK(hK(hK(fa, 0), 1), 2), 3), 4), 5), 6)
14481446 }
1449- func hN (eX,fH) = (eX + fi[fH])
1450-
1451- let eZ = hx
1452- let fa = size(eZ)
1453- let fb = ""
1454- func hO (fd,fe) = if ((fe >= fa))
1455- then fd
1456- else hN(fd, eZ[fe])
1457-
1458- func hP (fd,fe) = if ((fe >= fa))
1459- then fd
1447+ func hM (eW,fG) = (eW + fh[fG])
1448+
1449+ let eY = hw
1450+ let eZ = size(eY)
1451+ let fa = ""
1452+ func hN (fc,fd) = if ((fd >= eZ))
1453+ then fc
1454+ else hM(fc, eY[fd])
1455+
1456+ func hO (fc,fd) = if ((fd >= eZ))
1457+ then fc
14601458 else throw("List size exceeds 25")
14611459
1462- hP(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(fb, 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)
1463- }
1464-
1465-
1466-func hQ (hR) = {
1467- let gA = split(valueOrElse(getString(hR), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1468-[toString(valueOrElse(parseInt(gA[bn]), 0)), if ((size(split(gA[bo], "_")) == aJ))
1469- then gA[bo]
1470- else "0_0_0_0_0_0", if ((size(split(gA[bp], "_")) == aJ))
1471- then gA[bp]
1472- else "0_0_0_0_0_0", gA[bq]]
1473- }
1474-
1475-
1476-func hS (hT) = {
1477- let fv = split(hT, "_")
1478- ((aM * (parseIntValue(fv[1]) + 1)) * parseIntValue(fv[0]))
1479- }
1480-
1481-
1482-func hU (hV) = {
1483- let hW = hV[bh]
1484- func hX (eX,hY) = (eX + parseIntValue(hY))
1485-
1486- func hZ (eX,hY) = {
1487- let dg = eX._1
1488- let eQ = (((parseIntValue(hY) + bd) - 1) / bd)
1489- $Tuple2((dg + 1), (eX._2 + (eQ * cK)))
1460+ hO(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(fa, 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)
1461+ }
1462+
1463+
1464+func hP (hQ) = {
1465+ let gz = split(valueOrElse(getString(hQ), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1466+[toString(valueOrElse(parseInt(gz[bm]), 0)), if ((size(split(gz[bn], "_")) == aI))
1467+ then gz[bn]
1468+ else "0_0_0_0_0_0", if ((size(split(gz[bo], "_")) == aI))
1469+ then gz[bo]
1470+ else "0_0_0_0_0_0", gz[bp]]
1471+ }
1472+
1473+
1474+func hR (hS) = {
1475+ let fu = split(hS, "_")
1476+ ((aL * (parseIntValue(fu[1]) + 1)) * parseIntValue(fu[0]))
1477+ }
1478+
1479+
1480+func hT (hU) = {
1481+ let hV = hU[bg]
1482+ func hW (eW,hX) = (eW + parseIntValue(hX))
1483+
1484+ func hY (eW,hX) = {
1485+ let dh = eW._1
1486+ let eP = (((parseIntValue(hX) + bc) - 1) / bc)
1487+ $Tuple2((dh + 1), (eW._2 + (eP * cL)))
14901488 }
14911489
1490+ let hZ = {
1491+ let eY = split(hU[be], "_")
1492+ let eZ = size(eY)
1493+ let fa = 0
1494+ func fb (fc,fd) = if ((fd >= eZ))
1495+ then fc
1496+ else hW(fc, eY[fd])
1497+
1498+ func fe (fc,fd) = if ((fd >= eZ))
1499+ then fc
1500+ else throw("List size exceeds 6")
1501+
1502+ fe(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6)
1503+ }
14921504 let ia = {
1493- let eZ = split(hV[bf], "_")
1494- let fa = size(eZ)
1495- let fb = 0
1496- func fc (fd,fe) = if ((fe >= fa))
1497- then fd
1498- else hX(fd, eZ[fe])
1499-
1500- func ff (fd,fe) = if ((fe >= fa))
1501- then fd
1505+ let eY = split(hU[bf], "_")
1506+ let eZ = size(eY)
1507+ let fa = 0
1508+ func hK (fc,fd) = if ((fd >= eZ))
1509+ then fc
1510+ else hW(fc, eY[fd])
1511+
1512+ func hL (fc,fd) = if ((fd >= eZ))
1513+ then fc
15021514 else throw("List size exceeds 6")
15031515
1504- ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
1516+ hL(hK(hK(hK(hK(hK(hK(fa, 0), 1), 2), 3), 4), 5), 6)
15051517 }
1506- let ib = {
1507- let eZ = split(hV[bg], "_")
1508- let fa = size(eZ)
1509- let fb = 0
1510- func hL (fd,fe) = if ((fe >= fa))
1511- then fd
1512- else hX(fd, eZ[fe])
1513-
1514- func hM (fd,fe) = if ((fe >= fa))
1515- then fd
1516- else throw("List size exceeds 6")
1517-
1518- hM(hL(hL(hL(hL(hL(hL(fb, 0), 1), 2), 3), 4), 5), 6)
1519- }
1520- let ic = if ((hW == ""))
1518+ let ib = if ((hV == ""))
15211519 then 0
1522- else ( let eZ = split_4C(hW, "_")
1523- let fa = size(eZ)
1524- let fb = $Tuple2(0, 0)
1525- func hO (fd,fe) = if ((fe >= fa))
1526- then fd
1527- else hZ(fd, eZ[fe])
1528-
1529- func hP (fd,fe) = if ((fe >= fa))
1530- then fd
1520+ else ( let eY = split_4C(hV, "_")
1521+ let eZ = size(eY)
1522+ let fa = $Tuple2(0, 0)
1523+ func hN (fc,fd) = if ((fd >= eZ))
1524+ then fc
1525+ else hY(fc, eY[fd])
1526+
1527+ func hO (fc,fd) = if ((fd >= eZ))
1528+ then fc
15311529 else throw("List size exceeds 50")
15321530
1533- hP(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(fb, 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
1534- ((ia + ib) + ic)
1535- }
1536-
1537-
1538-func id (ie,if,ig) = {
1539- let hT = ((toString(if) + "_") + toString(ig))
1540- let ih = hS(hT)
1541- let ii = valueOrElse(getString(ie), (hT + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1542- let ij = split_4C(ii, ":")
1543- let ik = hU(ij)
1544- let il = if ((5 > size(ij)))
1545- then makeString(["0", toString(ik), toString((ih - ik)), toString(ih)], "_")
1531+ hO(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(fa, 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
1532+ ((hZ + ia) + ib)
1533+ }
1534+
1535+
1536+func ic (id,ie,if) = {
1537+ let hS = ((toString(ie) + "_") + toString(if))
1538+ let ig = hR(hS)
1539+ let ih = valueOrElse(getString(id), (hS + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1540+ let ii = split_4C(ih, ":")
1541+ let ij = hT(ii)
1542+ let ik = if ((5 > size(ii)))
1543+ then makeString(["0", toString(ij), toString((ig - ij)), toString(ig)], "_")
15461544 else {
1547- let im = split(ij[bi], "_")
1548- let in = parseIntValue(im[bj])
1549- let io = if ((size(im) > 1))
1550- then parseIntValue(im[bk])
1551- else ik
1552- makeString([toString(in), toString(io), toString(((ih - in) - io)), toString(ih)], "_")
1553- }
1554-[ij[be], if ((size(split(ij[bf], "_")) == aJ))
1555- then ij[bf]
1556- else "0_0_0_0_0_0", if ((size(split(ij[bg], "_")) == aJ))
1557- then ij[bg]
1558- else "0_0_0_0_0_0", ij[bh], il]
1559- }
1560-
1561-
1562-func ip (hV) = {
1563- let iq = hU(hV)
1564- let ir = parseIntValue(split(hV[bi], "_")[bj])
1565- ((hS(hV[be]) - iq) - ir)
1566- }
1567-
1568-
1569-func is (it,hV,iu) = if ((size(it) != 3))
1545+ let il = split(ii[bh], "_")
1546+ let im = parseIntValue(il[bi])
1547+ let in = if ((size(il) > 1))
1548+ then parseIntValue(il[bj])
1549+ else ij
1550+ makeString([toString(im), toString(in), toString(((ig - im) - in)), toString(ig)], "_")
1551+ }
1552+[ii[bd], if ((size(split(ii[be], "_")) == aI))
1553+ then ii[be]
1554+ else "0_0_0_0_0_0", if ((size(split(ii[bf], "_")) == aI))
1555+ then ii[bf]
1556+ else "0_0_0_0_0_0", ii[bg], ik]
1557+ }
1558+
1559+
1560+func io (hU) = {
1561+ let ip = hT(hU)
1562+ let iq = parseIntValue(split(hU[bh], "_")[bi])
1563+ ((hR(hU[bd]) - ip) - iq)
1564+ }
1565+
1566+
1567+func ir (is,hU,it) = if ((size(is) != 3))
15701568 then throw("cargoListStr should contain exactly 2 ':' separators")
15711569 else {
1572- let iv = split(it[0], "_")
1573- let iw = split(it[1], "_")
1574- let ix = if ((it[2] == ""))
1570+ let iu = split(is[0], "_")
1571+ let iv = split(is[1], "_")
1572+ let iw = if ((is[2] == ""))
15751573 then nil
1576- else split_4C(it[2], "_")
1577- if ((size(iv) != aJ))
1574+ else split_4C(is[2], "_")
1575+ if ((size(iu) != aI))
15781576 then throw("All 6 resources should be passed")
1579- else if ((size(iw) != aJ))
1577+ else if ((size(iv) != aI))
15801578 then throw("All 6 materials should be passed")
15811579 else {
1582- let hf = ip(hV)
1583- let iy = split(hV[bf], "_")
1584- let iz = split(hV[bg], "_")
1585- let iA = if ((hV[bh] == ""))
1580+ let he = io(hU)
1581+ let ix = split(hU[be], "_")
1582+ let iy = split(hU[bf], "_")
1583+ let iz = if ((hU[bg] == ""))
15861584 then nil
1587- else split_4C(hV[bh], "_")
1588- let hd = split(iu[bo], "_")
1589- let iB = split(iu[bp], "_")
1590- let iC = if ((iu[bq] == ""))
1585+ else split_4C(hU[bg], "_")
1586+ let hc = split(it[bn], "_")
1587+ let iA = split(it[bo], "_")
1588+ let iB = if ((it[bp] == ""))
15911589 then nil
1592- else split_4C(iu[bq], "_")
1593- func iD (eX,hY) = {
1594- let gQ = eX._1
1595- let iE = parseIntValue(hY)
1596- let iF = parseIntValue(iy[gQ])
1597- let iG = parseIntValue(hd[gQ])
1598- if ((iE == 0))
1599- then $Tuple4((gQ + 1), (eX._2 :+ iy[gQ]), (eX._3 :+ hd[gQ]), eX._4)
1600- else if ((iE > 0))
1601- then if ((iE > iG))
1602- then throw((((("Attempt to take " + hY) + " from backpack, but only ") + toString(iG)) + " available"))
1603- else $Tuple4((gQ + 1), (eX._2 :+ toString((iF + iE))), (eX._3 :+ toString((iG - iE))), (eX._4 + iE))
1604- else if ((-(iE) > iF))
1605- then throw((((("Attempt to take " + toString(-(iE))) + " from warehouse, but only ") + toString(iF)) + " available"))
1606- else $Tuple4((gQ + 1), (eX._2 :+ toString((iF + iE))), (eX._3 :+ toString((iG - iE))), (eX._4 + iE))
1590+ else split_4C(it[bp], "_")
1591+ func iC (eW,hX) = {
1592+ let gP = eW._1
1593+ let iD = parseIntValue(hX)
1594+ let iE = parseIntValue(ix[gP])
1595+ let iF = parseIntValue(hc[gP])
1596+ if ((iD == 0))
1597+ then $Tuple4((gP + 1), (eW._2 :+ ix[gP]), (eW._3 :+ hc[gP]), eW._4)
1598+ else if ((iD > 0))
1599+ then if ((iD > iF))
1600+ then throw((((("Attempt to take " + hX) + " from backpack, but only ") + toString(iF)) + " available"))
1601+ else $Tuple4((gP + 1), (eW._2 :+ toString((iE + iD))), (eW._3 :+ toString((iF - iD))), (eW._4 + iD))
1602+ else if ((-(iD) > iE))
1603+ then throw((((("Attempt to take " + toString(-(iD))) + " from warehouse, but only ") + toString(iE)) + " available"))
1604+ else $Tuple4((gP + 1), (eW._2 :+ toString((iE + iD))), (eW._3 :+ toString((iF - iD))), (eW._4 + iD))
16071605 }
16081606
1609- let fi = {
1610- let eZ = iv
1611- let fa = size(eZ)
1612- let fb = $Tuple4(0, nil, nil, 0)
1613- func fc (fd,fe) = if ((fe >= fa))
1614- then fd
1615- else iD(fd, eZ[fe])
1616-
1617- func ff (fd,fe) = if ((fe >= fa))
1618- then fd
1607+ let fh = {
1608+ let eY = iu
1609+ let eZ = size(eY)
1610+ let fa = $Tuple4(0, nil, nil, 0)
1611+ func fb (fc,fd) = if ((fd >= eZ))
1612+ then fc
1613+ else iC(fc, eY[fd])
1614+
1615+ func fe (fc,fd) = if ((fd >= eZ))
1616+ then fc
16191617 else throw("List size exceeds 6")
16201618
1621- ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
1619+ fe(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6)
16221620 }
1623- func iH (eX,hY) = {
1624- let gQ = eX._1
1625- let iE = parseIntValue(hY)
1626- let iI = parseIntValue(iz[gQ])
1627- let iJ = parseIntValue(iB[gQ])
1628- if ((iE == 0))
1629- then $Tuple4((gQ + 1), (eX._2 :+ iz[gQ]), (eX._3 :+ iB[gQ]), eX._4)
1630- else if ((iE > 0))
1631- then if ((iE > iJ))
1632- then throw((((("Attempt to take " + hY) + " from backpack, but only ") + toString(iJ)) + " available"))
1633- else $Tuple4((gQ + 1), (eX._2 :+ toString((iI + iE))), (eX._3 :+ toString((iJ - iE))), (eX._4 + iE))
1634- else if ((-(iE) > iI))
1635- then throw((((("Attempt to take " + toString(-(iE))) + " from warehouse, but only ") + toString(iI)) + " available"))
1636- else $Tuple4((gQ + 1), (eX._2 :+ toString((iI + iE))), (eX._3 :+ toString((iJ - iE))), (eX._4 + iE))
1621+ func iG (eW,hX) = {
1622+ let gP = eW._1
1623+ let iD = parseIntValue(hX)
1624+ let iH = parseIntValue(iy[gP])
1625+ let iI = parseIntValue(iA[gP])
1626+ if ((iD == 0))
1627+ then $Tuple4((gP + 1), (eW._2 :+ iy[gP]), (eW._3 :+ iA[gP]), eW._4)
1628+ else if ((iD > 0))
1629+ then if ((iD > iI))
1630+ then throw((((("Attempt to take " + hX) + " from backpack, but only ") + toString(iI)) + " available"))
1631+ else $Tuple4((gP + 1), (eW._2 :+ toString((iH + iD))), (eW._3 :+ toString((iI - iD))), (eW._4 + iD))
1632+ else if ((-(iD) > iH))
1633+ then throw((((("Attempt to take " + toString(-(iD))) + " from warehouse, but only ") + toString(iH)) + " available"))
1634+ else $Tuple4((gP + 1), (eW._2 :+ toString((iH + iD))), (eW._3 :+ toString((iI - iD))), (eW._4 + iD))
16371635 }
16381636
1639- let gw = {
1640- let eZ = iw
1641- let fa = size(eZ)
1642- let fb = $Tuple4(0, nil, nil, fi._4)
1643- func hL (fd,fe) = if ((fe >= fa))
1644- then fd
1645- else iH(fd, eZ[fe])
1646-
1647- func hM (fd,fe) = if ((fe >= fa))
1648- then fd
1637+ let gv = {
1638+ let eY = iv
1639+ let eZ = size(eY)
1640+ let fa = $Tuple4(0, nil, nil, fh._4)
1641+ func hK (fc,fd) = if ((fd >= eZ))
1642+ then fc
1643+ else iG(fc, eY[fd])
1644+
1645+ func hL (fc,fd) = if ((fd >= eZ))
1646+ then fc
16491647 else throw("List size exceeds 6")
16501648
1651- hM(hL(hL(hL(hL(hL(hL(fb, 0), 1), 2), 3), 4), 5), 6)
1649+ hL(hK(hK(hK(hK(hK(hK(fa, 0), 1), 2), 3), 4), 5), 6)
16521650 }
1653- func iK (eX,hY) = {
1654- let gQ = eX._1
1655- let iE = parseIntValue(hY)
1656- let iL = if ((size(iA) > gQ))
1657- then parseIntValue(iA[gQ])
1651+ func iJ (eW,hX) = {
1652+ let gP = eW._1
1653+ let iD = parseIntValue(hX)
1654+ let iK = if ((size(iz) > gP))
1655+ then parseIntValue(iz[gP])
16581656 else 0
1659- let iM = if ((size(iC) > gQ))
1660- then parseIntValue(iC[gQ])
1657+ let iL = if ((size(iB) > gP))
1658+ then parseIntValue(iB[gP])
16611659 else 0
1662- if ((iE == 0))
1663- then $Tuple4((gQ + 1), (eX._2 :+ toString(iL)), (eX._3 :+ toString(iM)), eX._4)
1664- else if ((iE > 0))
1665- then if ((iE > iM))
1666- then throw((((("Attempt to take " + hY) + " from backpack, but only ") + toString(iM)) + " available"))
1660+ if ((iD == 0))
1661+ then $Tuple4((gP + 1), (eW._2 :+ toString(iK)), (eW._3 :+ toString(iL)), eW._4)
1662+ else if ((iD > 0))
1663+ then if ((iD > iL))
1664+ then throw((((("Attempt to take " + hX) + " from backpack, but only ") + toString(iL)) + " available"))
16671665 else {
1668- let fZ = (eN((iL + iE), bd) - eN(iL, bd))
1669- $Tuple4((gQ + 1), (eX._2 :+ toString((iL + iE))), (eX._3 :+ toString((iM - iE))), (eX._4 + fZ))
1666+ let fY = (eM((iK + iD), bc) - eM(iK, bc))
1667+ $Tuple4((gP + 1), (eW._2 :+ toString((iK + iD))), (eW._3 :+ toString((iL - iD))), (eW._4 + fY))
16701668 }
1671- else if ((-(iE) > iL))
1672- then throw((((("Attempt to take " + toString(-(iE))) + " from warehouse, but only ") + toString(iL)) + " available"))
1669+ else if ((-(iD) > iK))
1670+ then throw((((("Attempt to take " + toString(-(iD))) + " from warehouse, but only ") + toString(iK)) + " available"))
16731671 else {
1674- let fZ = (eN((iL + iE), bd) - eN(iL, bd))
1675- $Tuple4((gQ + 1), (eX._2 :+ toString((iL + iE))), (eX._3 :+ toString((iM - iE))), (eX._4 + fZ))
1672+ let fY = (eM((iK + iD), bc) - eM(iK, bc))
1673+ $Tuple4((gP + 1), (eW._2 :+ toString((iK + iD))), (eW._3 :+ toString((iL - iD))), (eW._4 + fY))
16761674 }
16771675 }
16781676
1679- let gA = if ((size(ix) != 0))
1677+ let gz = if ((size(iw) != 0))
16801678 then {
1681- let eZ = ix
1682- let fa = size(eZ)
1683- let fb = $Tuple4(0, nil, nil, gw._4)
1684- func hO (fd,fe) = if ((fe >= fa))
1685- then fd
1686- else iK(fd, eZ[fe])
1687-
1688- func hP (fd,fe) = if ((fe >= fa))
1689- then fd
1679+ let eY = iw
1680+ let eZ = size(eY)
1681+ let fa = $Tuple4(0, nil, nil, gv._4)
1682+ func hN (fc,fd) = if ((fd >= eZ))
1683+ then fc
1684+ else iJ(fc, eY[fd])
1685+
1686+ func hO (fc,fd) = if ((fd >= eZ))
1687+ then fc
16901688 else throw("List size exceeds 50")
16911689
1692- hP(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(fb, 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)
1690+ hO(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(hN(fa, 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)
16931691 }
1694- else $Tuple4(0, iA, iC, gw._4)
1695- let iN = gA._4
1696- if ((iN > hf))
1697- then throw((((("Attempt to put total " + toString(iN)) + " stuff, but only ") + toString(hf)) + " warehouse space left"))
1698- else $Tuple7(makeString(fi._2, "_"), makeString(gw._2, "_"), makeString_2C(gA._2, "_"), makeString(fi._3, "_"), makeString(gw._3, "_"), makeString_2C(gA._3, "_"), iN)
1692+ else $Tuple4(0, iz, iB, gv._4)
1693+ let iM = gz._4
1694+ if ((iM > he))
1695+ then throw((((("Attempt to put total " + toString(iM)) + " stuff, but only ") + toString(he)) + " warehouse space left"))
1696+ else $Tuple7(makeString(fh._2, "_"), makeString(gv._2, "_"), makeString_2C(gz._2, "_"), makeString(fh._3, "_"), makeString(gv._3, "_"), makeString_2C(gz._3, "_"), iM)
16991697 }
17001698 }
17011699
17021700
1703-func iO (iP,iQ) = {
1704- let bR = toString(iP)
1705- let iR = hl(toBigInt(iQ))
1706- let iS = valueOrElse(getInteger(ev()), (eu + 1))
1707- let ez = toString(iS)
1708- let hu = toInt((iR % eo))
1709- let gT = hs(iR, hu)
1710- let dz = aV[hu]
1711- let iT = Issue(eM(ez, "S"), makeString([ez, "S", gT, dz], "_"), 1, 0, false)
1712- let bv = calculateAssetId(iT)
1713- let iU = toBase58String(bv)
1714- $Tuple2([IntegerEntry(ev(), (iS + 1)), iT, StringEntry(ey(ez), iU), StringEntry(bu(iU), bR), StringEntry(eB(ez), bR), IntegerEntry(bE(iU), 0), IntegerEntry(eA(iU, bR), 0), ScriptTransfer(iP, 1, bv)], $Tuple2(iU, dz))
1715- }
1716-
1717-
1718-func iV (bR,iW,iX) = if (!(sigVerify_8Kb(iW, iX, ef)))
1701+func iN (iO,iP) = {
1702+ let bQ = toString(iO)
1703+ let iQ = hk(toBigInt(iP))
1704+ let iR = valueOrElse(getInteger(eu()), (et + 1))
1705+ let ey = toString(iR)
1706+ let ht = toInt((iQ % en))
1707+ let gS = hr(iQ, ht)
1708+ let dA = aU[ht]
1709+ let iS = Issue(eL(ey, "S"), makeString([ey, "S", gS, dA], "_"), 1, 0, false)
1710+ let bu = calculateAssetId(iS)
1711+ let iT = toBase58String(bu)
1712+ $Tuple2([IntegerEntry(eu(), (iR + 1)), iS, StringEntry(ex(ey), iT), StringEntry(bt(iT), bQ), StringEntry(eA(ey), bQ), IntegerEntry(bD(iT), 0), IntegerEntry(ez(iT, bQ), 0), ScriptTransfer(iO, 1, bu)], $Tuple2(iT, dA))
1713+ }
1714+
1715+
1716+func iU (bQ,iV,iW) = if (!(sigVerify_8Kb(iV, iW, ee)))
17191717 then throw("signature does not match")
17201718 else {
1721- let fv = split_4C(toUtf8String(iW), ";")
1722- let iY = split_4C(fv[0], "|")
1723- let iZ = split(iY[eI], "_")
1724- let ja = parseIntValue(iZ[0])
1725- let jb = parseIntValue(iZ[1])
1726- let jc = split(fv[1], ":")
1727- let jd = jc[0]
1728- let je = parseIntValue(iY[eJ])
1729- if (if ((je > (lastBlock.timestamp + eh)))
1719+ let fu = split_4C(toUtf8String(iV), ";")
1720+ let iX = split_4C(fu[0], "|")
1721+ let iY = split(iX[eH], "_")
1722+ let iZ = parseIntValue(iY[0])
1723+ let ja = parseIntValue(iY[1])
1724+ let jb = split(fu[1], ":")
1725+ let jc = jb[0]
1726+ let jd = parseIntValue(iX[eI])
1727+ if (if ((jd > (lastBlock.timestamp + eg)))
17301728 then true
1731- else ((lastBlock.timestamp - eh) > je))
1732- then throw(((("signature outdated: logTime=" + toString(je)) + ", bcTime=") + toString(lastBlock.timestamp)))
1729+ else ((lastBlock.timestamp - eg) > jd))
1730+ then throw(((("signature outdated: logTime=" + toString(jd)) + ", bcTime=") + toString(lastBlock.timestamp)))
17331731 else {
1734- let jf = jc[1]
1735- let jg = valueOrElse(getString(dR(bR)), "")
1736- if ((jg != jf))
1737- then throw(((("Tx ids don't match! In state: " + jg) + ", in msg: ") + jf))
1732+ let je = jb[1]
1733+ let jf = valueOrElse(getString(dP(bQ)), "")
1734+ if ((jf != je))
1735+ then throw(((("Tx ids don't match! In state: " + jf) + ", in msg: ") + je))
17381736 else {
1739- let C = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
1740- let jh = B(C)
1741- let ji = ak(valueOrElse(getInteger(F(C)), 0))
1742- let jj = valueOrElse(getInteger(jh), ji)
1743- if ((jj != ja))
1744- then throw(((("oldHealth=" + toString(jj)) + " from state does not match one from flight log=") + toString(ja)))
1745- else if ((0 >= ja))
1737+ let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked")
1738+ let jg = A(B)
1739+ let jh = aj(valueOrElse(getInteger(E(B)), 0))
1740+ let ji = valueOrElse(getInteger(jg), jh)
1741+ if ((ji != iZ))
1742+ then throw(((("oldHealth=" + toString(ji)) + " from state does not match one from flight log=") + toString(iZ)))
1743+ else if ((0 >= iZ))
17461744 then throw("You can't fly with zero health")
1747- else if (!(gC(C)))
1745+ else if (!(gB(B)))
17481746 then throw("Equipment incompatible")
17491747 else {
1750- let jk = if ((size(iY) > eK))
1751- then iY[eK]
1748+ let jj = if ((size(iX) > eJ))
1749+ then iX[eJ]
17521750 else ""
1753- let jl = if ((size(iY) > eL))
1754- then iY[eL]
1751+ let jk = if ((size(iX) > eK))
1752+ then iX[eK]
17551753 else ""
1756- let jm = if (if ((jb > 0))
1757- then (jk == "$")
1754+ let jl = if (if ((ja > 0))
1755+ then (jj == "$")
17581756 else false)
1759- then dF(invoke(dh, "sendUsdtPrize", [bR], nil))
1757+ then dG(invoke(di, "sendUsdtPrize", [bQ], nil))
17601758 else 0
1761- $Tuple5(jb, C, jm, jd, jl)
1759+ $Tuple5(ja, B, jl, jc, jk)
17621760 }
17631761 }
17641762 }
17651763 }
17661764
17671765
1768-func jn (R,jo) = {
1769- let ig = valueOrElse(getInteger(bE(R)), 0)
1770- let jp = valueOrElse(getInteger(by(aI, R)), 0)
1771- let jq = (ig / 6)
1772- let jr = (ig / 7)
1773- ((aL + fraction(aL, ((ig + jq) + (2 * jr)), 5)) + fraction(aL, jp, (jo * 5)))
1774- }
1775-
1776-
1777-func js (d,jt,ju) = {
1778- let jv = if ((jt == eF))
1779- then $Tuple2(ju, valueOrElse(getString(bN(d)), ""))
1766+func jm (Q,jn) = {
1767+ let if = valueOrElse(getInteger(bD(Q)), 0)
1768+ let jo = valueOrElse(getInteger(bx(aH, Q)), 0)
1769+ let jp = (if / 6)
1770+ let jq = (if / 7)
1771+ ((aK + fraction(aK, ((if + jp) + (2 * jq)), 5)) + fraction(aK, jo, (jn * 5)))
1772+ }
1773+
1774+
1775+func jr (c,js,jt) = {
1776+ let ju = if ((js == eE))
1777+ then $Tuple2(jt, valueOrElse(getString(bM(c)), ""))
17801778 else {
1781- let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
1782- let jw = valueOrElse(getString(bP(C)), aN)
1783- let cl = split(value(jw), "_")
1784- if ((cl[bs] != "L"))
1785- then throw((("Duck location type is " + cl[bs]) + ", but should be L"))
1786- else $Tuple2(cl[bt], C)
1787- }
1788- let R = jv._1
1789- let jx = jv._2
1790- let jy = value(assetInfo(fromBase58String(R)))
1791- let jz = bx(R)
1792- let jA = valueOrErrorMessage(getInteger(jz), (("Land " + jy.name) + " is not staked"))
1793- let jB = valueOrErrorMessage(getString(bu(R)), (("NFT " + jy.name) + " is orphaned"))
1794- if ((jB != d))
1795- then throw((aG + " is not yours"))
1779+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
1780+ let jv = valueOrElse(getString(bO(B)), aM)
1781+ let ck = split(value(jv), "_")
1782+ if ((ck[br] != "L"))
1783+ then throw((("Duck location type is " + ck[br]) + ", but should be L"))
1784+ else $Tuple2(ck[bs], B)
1785+ }
1786+ let Q = ju._1
1787+ let jw = ju._2
1788+ let jx = value(assetInfo(fromBase58String(Q)))
1789+ let jy = bw(Q)
1790+ let jz = valueOrErrorMessage(getInteger(jy), (("Land " + jx.name) + " is not staked"))
1791+ let jA = valueOrErrorMessage(getString(bt(Q)), (("NFT " + jx.name) + " is orphaned"))
1792+ if ((jA != c))
1793+ then throw((aF + " is not yours"))
17961794 else {
1797- let jC = split(jy.description, "_")
1798- $Tuple4(jx, R, jC, jA)
1799- }
1800- }
1801-
1802-
1803-func jD (d,eO,jt,ju) = if ((0 > eO))
1795+ let jB = split(jx.description, "_")
1796+ $Tuple4(jw, Q, jB, jz)
1797+ }
1798+ }
1799+
1800+
1801+func jC (c,eN,js,jt) = if ((0 > eN))
18041802 then throw("Negative amount")
18051803 else {
1806- let gg = js(d, jt, ju)
1807- let dO = gg._3[do]
1808- let gM = gS(gg._3[dp])
1809- let gW = (lastBlock.timestamp - gg._4)
1810- if ((0 > gW))
1811- then throw(((("Saved timestamp is in future, saved = " + toString(gg._4)) + ", current = ") + toString(lastBlock.timestamp)))
1804+ let gf = jr(c, js, jt)
1805+ let dM = gf._3[dp]
1806+ let gL = gR(gf._3[dq])
1807+ let gV = (lastBlock.timestamp - gf._4)
1808+ if ((0 > gV))
1809+ then throw(((("Saved timestamp is in future, saved = " + toString(gf._4)) + ", current = ") + toString(lastBlock.timestamp)))
18121810 else {
1813- let jo = dN(dO)
1814- let jE = jn(gg._2, jo)
1815- let jF = fraction(gW, (jE * jo), a)
1816- if ((eO > jF))
1817- then throw(((("Not enough resources, available = " + toString(jF)) + ", requested = ") + toString(eO)))
1811+ let jn = dL(dM)
1812+ let jD = jm(gf._2, jn)
1813+ let jE = fraction(gV, (jD * jn), a)
1814+ if ((eN > jE))
1815+ then throw(((("Not enough resources, available = " + toString(jE)) + ", requested = ") + toString(eN)))
18181816 else {
1819- let jG = fraction((jF - eO), a, (jE * jo))
1820- let jH = (lastBlock.timestamp - jG)
1821- let if = (jo / cL)
1822- let he = ha(gM, (gW - jG), if, jE)
1823- let ie = bD(gg._2)
1824- let ig = valueOrElse(getInteger(bE(gg._2)), 0)
1825- let hV = id(ie, if, ig)
1826- let im = split(hV[bi], "_")
1827- let hf = parseIntValue(im[bl])
1828- if (if ((jt == eF))
1829- then (eO > hf)
1817+ let jF = fraction((jE - eN), a, (jD * jn))
1818+ let jG = (lastBlock.timestamp - jF)
1819+ let ie = (jn / cM)
1820+ let hd = gZ(gL, (gV - jF), ie, jD)
1821+ let id = bC(gf._2)
1822+ let if = valueOrElse(getInteger(bD(gf._2)), 0)
1823+ let hU = ic(id, ie, if)
1824+ let il = split(hU[bh], "_")
1825+ let he = parseIntValue(il[bk])
1826+ if (if ((js == eE))
1827+ then (eN > he)
18301828 else false)
1831- then throw((("Only " + toString(hf)) + " space left in warehouse"))
1829+ then throw((("Only " + toString(he)) + " space left in warehouse"))
18321830 else {
1833- let hR = bO(gg._1)
1834- let iu = hQ(hR)
1835- let hd = split(iu[bo], "_")
1836- let hc = split(hV[bf], "_")
1837- let jI = if ((jt == eF))
1838- then $Tuple4(gU(hc, gM, (gW - jG), if, jE), iu[bo], (parseIntValue(im[bk]) + he._2), (parseIntValue(im[bl]) - he._2))
1839- else if ((jt == eG))
1840- then $Tuple4(hV[bf], gU(hd, gM, (gW - jG), if, jE), parseIntValue(im[bk]), parseIntValue(im[bl]))
1831+ let hQ = bN(gf._1)
1832+ let it = hP(hQ)
1833+ let hc = split(it[bn], "_")
1834+ let hb = split(hU[be], "_")
1835+ let jH = if ((js == eE))
1836+ then $Tuple4(gT(hb, gL, (gV - jF), ie, jD), it[bn], (parseIntValue(il[bj]) + hd._2), (parseIntValue(il[bk]) - hd._2))
1837+ else if ((js == eF))
1838+ then $Tuple4(hU[be], gT(hc, gL, (gV - jF), ie, jD), parseIntValue(il[bj]), parseIntValue(il[bk]))
18411839 else {
1842- let jJ = hb(hc, hd, he, hf)
1843- let jK = min([parseIntValue(im[bl]), he._2])
1844- $Tuple4(jJ._1, jJ._2, (parseIntValue(im[bk]) + jK), (parseIntValue(im[bl]) - jK))
1840+ let jI = ha(hb, hc, hd, he)
1841+ let jJ = min([parseIntValue(il[bk]), hd._2])
1842+ $Tuple4(jI._1, jI._2, (parseIntValue(il[bj]) + jJ), (parseIntValue(il[bk]) - jJ))
18451843 }
1846- let jL = jI._1
1847- let jM = jI._2
1848- let jN = jI._3
1849- let jO = jI._4
1850- $Tuple5([IntegerEntry(bx(gg._2), jH), IntegerEntry(bA(aG, gg._2, d), jH)], hR, [iu[bn], jM, iu[bp], iu[bq]], ie, [hV[be], jL, hV[bg], hV[bh], makeString([im[bj], toString(jN), toString(jO), im[bm]], "_")])
1844+ let jK = jH._1
1845+ let jL = jH._2
1846+ let jM = jH._3
1847+ let jN = jH._4
1848+ $Tuple5([IntegerEntry(bw(gf._2), jG), IntegerEntry(bz(aF, gf._2, c), jG)], hQ, [it[bm], jL, it[bo], it[bp]], id, [hU[bd], jK, hU[bf], hU[bg], makeString([il[bi], toString(jM), toString(jN), il[bl]], "_")])
18511849 }
18521850 }
18531851 }
18541852 }
18551853
18561854
1857-func jP (d,R,jo,jt) = {
1858- let jz = bx(R)
1859- let jA = value(getInteger(jz))
1860- let jF = (fraction((lastBlock.timestamp - jA), jn(R, jo), a) * jo)
1861- jD(d, jF, jt, R)
1862- }
1863-
1864-
1865-func jQ (fk,iP,jR,R) = {
1866- let d = toString(iP)
1867- let gg = js(d, eH, R)
1868- let jo = dN(gg._3[do])
1869- let jS = bE(gg._2)
1870- let jT = valueOrElse(getInteger(jS), 0)
1871- if (if (!(cA))
1872- then (jT >= 3)
1855+func jO (c,Q,jn,js) = {
1856+ let jy = bw(Q)
1857+ let jz = value(getInteger(jy))
1858+ let jE = (fraction((lastBlock.timestamp - jz), jm(Q, jn), a) * jn)
1859+ jC(c, jE, js, Q)
1860+ }
1861+
1862+
1863+func jP (fj,iO,jQ,Q) = {
1864+ let c = toString(iO)
1865+ let gf = jr(c, eG, Q)
1866+ let jn = dL(gf._3[dp])
1867+ let jR = bD(gf._2)
1868+ let jS = valueOrElse(getInteger(jR), 0)
1869+ if (if (!(cz))
1870+ then (jS >= 3)
18731871 else false)
18741872 then throw("Currently max infrastructure level = 3")
18751873 else {
1876- let jU = ((sqrt(jo, 0, 0, DOWN) / 5) + 2)
1877- let ap = (jT + 1)
1878- if (if (cA)
1879- then (ap > jU)
1874+ let jT = ((sqrt(jn, 0, 0, DOWN) / 5) + 2)
1875+ let ao = (jS + 1)
1876+ if (if (cz)
1877+ then (ao > jT)
18801878 else false)
1881- then throw(("Currently max infrastructure level = " + toString(jU)))
1879+ then throw(("Currently max infrastructure level = " + toString(jT)))
18821880 else {
1883- let jV = fraction(ek, (jo * ap), cL)
1884- if (if (!(fk))
1885- then (jR != jV)
1881+ let jU = fraction(ej, (jn * ao), cM)
1882+ if (if (!(fj))
1883+ then (jQ != jU)
18861884 else false)
1887- then throw(("Payment attached should be " + toString(jV)))
1885+ then throw(("Payment attached should be " + toString(jU)))
18881886 else {
1889- let hR = bO(gg._1)
1890- let iu = hQ(hR)
1891- let jW = split(iu[bp], "_")
1892- let jX = fraction(cG, (jo * ap), cL)
1893- let jY = makeString(fj(fk, jW, jX), "_")
1894- let jZ = jP(d, gg._2, jo, eH)
1895- let ka = jZ._5
1896- let kb = hS(ka[be])
1897- let kc = makeString([split(ka[be], "_")[0], toString(ap)], "_")
1898- let kd = hS(kc)
1899- let im = split(ka[bi], "_")
1900- let ke = makeString([im[bj], im[bk], toString(((parseIntValue(im[bl]) + kd) - kb)), toString(kd)], "_")
1901- $Tuple3(([IntegerEntry(jS, ap), IntegerEntry(eA(gg._2, d), ap), StringEntry(hR, makeString([iu[bn], jZ._3[bo], jY, iu[bq]], ":")), StringEntry(jZ._4, makeString([kc, ka[bf], ka[bg], ka[bh], ke], ":"))] ++ jZ._1), ap, jX)
1887+ let hQ = bN(gf._1)
1888+ let it = hP(hQ)
1889+ let jV = split(it[bo], "_")
1890+ let jW = fraction(cG, (jn * ao), cM)
1891+ let jX = makeString(fi(fj, jV, jW), "_")
1892+ let jY = jO(c, gf._2, jn, eG)
1893+ let jZ = jY._5
1894+ let ka = hR(jZ[bd])
1895+ let kb = makeString([split(jZ[bd], "_")[0], toString(ao)], "_")
1896+ let kc = hR(kb)
1897+ let il = split(jZ[bh], "_")
1898+ let kd = makeString([il[bi], il[bj], toString(((parseIntValue(il[bk]) + kc) - ka)), toString(kc)], "_")
1899+ $Tuple3(([IntegerEntry(jR, ao), IntegerEntry(ez(gf._2, c), ao), StringEntry(hQ, makeString([it[bm], jY._3[bn], jX, it[bp]], ":")), StringEntry(jY._4, makeString([kb, jZ[be], jZ[bf], jZ[bg], kd], ":"))] ++ jY._1), ao, jW)
19021900 }
19031901 }
19041902 }
19051903 }
19061904
19071905
1908-func kf (C,kg) = {
1909- let kh = F(C)
1910- let ki = E(C)
1911- let aj = valueOrElse(getInteger(ki), 0)
1912- let ao = (aj + kg)
1913- let kj = am(valueOrElse(getInteger(kh), 0), ao)
1914- let kk = G(C)
1915- $Tuple2([IntegerEntry(kh, kj[0]), IntegerEntry(ki, ao), IntegerEntry(kk, (valueOrElse(getInteger(kk), 0) + kj[1]))], ao)
1916- }
1917-
1918-
1919-func kl (d,kg) = {
1920- let kh = J(d)
1921- let ki = I(d)
1922- let aj = valueOrElse(getInteger(ki), 0)
1923- let ao = (aj + kg)
1924- let kj = am(valueOrElse(getInteger(kh), 0), ao)
1925- let kk = K(d)
1926- $Tuple2([IntegerEntry(kh, kj[0]), IntegerEntry(ki, ao), IntegerEntry(kk, (valueOrElse(getInteger(kk), 0) + kj[1]))], ao)
1927- }
1928-
1929-
1930-func km (d) = {
1931- let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
1932- let kn = bI(d)
1933- let ko = getString(kn)
1934- if (!(isDefined(ko)))
1906+func ke (B,kf) = {
1907+ let kg = E(B)
1908+ let kh = D(B)
1909+ let ai = valueOrElse(getInteger(kh), 0)
1910+ let an = (ai + kf)
1911+ let ki = al(valueOrElse(getInteger(kg), 0), an)
1912+ let kj = F(B)
1913+ $Tuple2([IntegerEntry(kg, ki[0]), IntegerEntry(kh, an), IntegerEntry(kj, (valueOrElse(getInteger(kj), 0) + ki[1]))], an)
1914+ }
1915+
1916+
1917+func kk (c,kf) = {
1918+ let kg = I(c)
1919+ let kh = H(c)
1920+ let ai = valueOrElse(getInteger(kh), 0)
1921+ let an = (ai + kf)
1922+ let ki = al(valueOrElse(getInteger(kg), 0), an)
1923+ let kj = J(c)
1924+ $Tuple2([IntegerEntry(kg, ki[0]), IntegerEntry(kh, an), IntegerEntry(kj, (valueOrElse(getInteger(kj), 0) + ki[1]))], an)
1925+ }
1926+
1927+
1928+func kl (c) = {
1929+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
1930+ let km = bH(c)
1931+ let kn = getString(km)
1932+ if (!(isDefined(kn)))
19351933 then throw("You are not eligible for ONBOARD artifact")
19361934 else {
1937- let kp = bK(d)
1938- let kq = getString(kp)
1939- if (isDefined(kq))
1940- then throw(("You already used your ONBOARD artifact on duck " + value(kq)))
1935+ let ko = bJ(c)
1936+ let kp = getString(ko)
1937+ if (isDefined(kp))
1938+ then throw(("You already used your ONBOARD artifact on duck " + value(kp)))
19411939 else {
1942- let kr = bJ(C)
1943- let ks = getString(kr)
1944- if (isDefined(ks))
1945- then throw(((("The duck " + C) + " already got points from ONBOARD artifact from user ") + value(ks)))
1946- else ([StringEntry(kp, C), StringEntry(kr, d)] ++ kf(C, ag)._1)
1940+ let kq = bI(B)
1941+ let kr = getString(kq)
1942+ if (isDefined(kr))
1943+ then throw(((("The duck " + B) + " already got points from ONBOARD artifact from user ") + value(kr)))
1944+ else ([StringEntry(ko, B), StringEntry(kq, c)] ++ ke(B, af)._1)
19471945 }
19481946 }
19491947 }
19501948
19511949
1952-func kt (d,ju) = {
1953- let gg = js(d, eH, ju)
1954- let R = gg._2
1955- let jo = dN(gg._3[do])
1956- let ku = by(aI, R)
1957- if ((valueOrElse(getInteger(ku), 0) > 0))
1950+func ks (c,jt) = {
1951+ let gf = jr(c, eG, jt)
1952+ let Q = gf._2
1953+ let jn = dL(gf._3[dp])
1954+ let kt = bx(aH, Q)
1955+ if ((valueOrElse(getInteger(kt), 0) > 0))
19581956 then throw("Presale artifact is already activated")
1959- else if ((parseIntValue(gg._3[dn]) > eu))
1960- then throw((((aG + " ") + R) + " is not eligible for presale artifact"))
1957+ else if ((parseIntValue(gf._3[do]) > et))
1958+ then throw((((aF + " ") + Q) + " is not eligible for presale artifact"))
19611959 else {
1962- let jZ = jP(d, R, jo, eH)
1963- (((jZ._1 :+ IntegerEntry(ku, jo)) :+ StringEntry(jZ._2, makeString(jZ._3, ":"))) :+ StringEntry(jZ._4, makeString(jZ._5, ":")))
1960+ let jY = jO(c, Q, jn, eG)
1961+ (((jY._1 :+ IntegerEntry(kt, jn)) :+ StringEntry(jY._2, makeString(jY._3, ":"))) :+ StringEntry(jY._4, makeString(jY._5, ":")))
19641962 }
19651963 }
19661964
19671965
1968-func kv (C) = {
1969- let ck = valueOrElse(getInteger(dl, bV), 0)
1970- let jw = split(valueOrElse(getString(bP(C)), aN), "_")
1971- let aB = lastBlock.timestamp
1972- let cm = ce(dl, ck)
1973- let cg = cm[ca]
1974- let ch = cm[cb]
1975- if ((jw[bs] != "T"))
1966+func ku (B) = {
1967+ let cj = valueOrElse(getInteger(dm, bU), 0)
1968+ let jv = split(valueOrElse(getString(bO(B)), aM), "_")
1969+ let aA = lastBlock.timestamp
1970+ let cl = cd(dm, cj)
1971+ let cf = cl[bZ]
1972+ let cg = cl[ca]
1973+ if ((jv[br] != "T"))
19761974 then false
1977- else if (if (if ((parseIntValue(jw[br]) == ck))
1978- then (ch[cd] == "INPROGRESS")
1975+ else if (if (if ((parseIntValue(jv[bq]) == cj))
1976+ then (cg[cc] == "INPROGRESS")
19791977 else false)
1980- then (parseIntValue(cg[cc]) > aB)
1978+ then (parseIntValue(cf[cb]) > aA)
19811979 else false)
19821980 then throw("Your duck is taking part in the tournament")
1983- else dJ(invoke(this, "exitTournamentInternal", [C], nil))
1984- }
1985-
1986-
1987-func kw (C) = if (!(cB))
1981+ else dK(invoke(this, "exitTournamentInternal", [B], nil))
1982+ }
1983+
1984+
1985+func kv (B) = if (!(cA))
19881986 then false
19891987 else {
1990- let jw = split(valueOrElse(getString(bP(C)), aN), "_")
1991- let aB = lastBlock.timestamp
1992- if ((jw[bs] != "D"))
1988+ let jv = split(valueOrElse(getString(bO(B)), aM), "_")
1989+ let aA = lastBlock.timestamp
1990+ if ((jv[br] != "D"))
19931991 then false
19941992 else {
1995- let co = parseIntValue(jw[br])
1996- let cp = parseIntValue(jw[bt])
1997- if (if ((aB > (co + aR)))
1998- then (3 > cp)
1993+ let cn = parseIntValue(jv[bq])
1994+ let co = parseIntValue(jv[bs])
1995+ if (if (((cn + aQ) > aA))
1996+ then (3 > co)
19991997 else false)
20001998 then throw("Your duck is on delivery mission")
2001- else dJ(invoke(this, "exitDeliveryInternal", [C], nil))
1999+ else dK(invoke(this, "exitDeliveryInternal", [B], nil))
20022000 }
20032001 }
20042002
20052003
2006-func kx (C,fP,jb,ky) = {
2007- let jw = split(valueOrElse(getString(bP(C)), aN), "_")
2008- let aB = lastBlock.timestamp
2009- let co = parseIntValue(jw[br])
2010- let cp = parseIntValue(jw[bt])
2011- let jB = valueOrErrorMessage(getString(bM(C)), "NFT duck is orphaned")
2012- let kz = B(C)
2013- let kA = getIntegerValue(kz)
2014- let kB = if (if ((cp >= 3))
2004+func kw (B,fO,ja,kx) = {
2005+ let jv = split(valueOrElse(getString(bO(B)), aM), "_")
2006+ let aA = lastBlock.timestamp
2007+ let cn = parseIntValue(jv[bq])
2008+ let co = parseIntValue(jv[bs])
2009+ let jA = valueOrErrorMessage(getString(bL(B)), "NFT duck is orphaned")
2010+ let ky = A(B)
2011+ let kz = getIntegerValue(ky)
2012+ let kA = if (if ((co >= 3))
20152013 then true
2016- else if (if (fP)
2017- then (ky >= 3)
2014+ else if (if (fO)
2015+ then (kx >= 3)
20182016 else false)
2019- then (jb > 0)
2017+ then (ja > 0)
20202018 else false)
20212019 then {
2022- let kC = invoke(di, "sendDeliveryReward", [jB], nil)
2023- if ((kC == kC))
2020+ let kB = invoke(dj, "sendDeliveryReward", [jA], nil)
2021+ if ((kB == kB))
20242022 then {
2025- let kD = W(jB)
2026-[IntegerEntry(kD, (valueOrElse(getInteger(kD), 0) + 1)), IntegerEntry(X(jB), (co / a))]
2023+ let kC = V(jA)
2024+[IntegerEntry(kC, (valueOrElse(getInteger(kC), 0) + 1)), IntegerEntry(W(jA), (cn / a))]
20272025 }
20282026 else throw("Strict value is not equal to itself.")
20292027 }
2030- else if (if (if (fP)
2031- then (jb > 0)
2028+ else if (if (if (fO)
2029+ then (ja > 0)
20322030 else false)
2033- then ((co + aR) > aB)
2031+ then ((cn + aQ) > aA)
20342032 else false)
20352033 then throw("Your duck is still on delivery mission")
20362034 else {
2037- let kE = valueOrElse(getInteger(di, bU), 0)
2038- let kF = invoke(di, "updateDeliveryLocked", [(kE - aQ)], nil)
2039- if ((kF == kF))
2040- then if (if (if (fP)
2041- then (0 >= jb)
2035+ let kD = valueOrElse(getInteger(dj, bT), 0)
2036+ let kE = invoke(dj, "updateDeliveryLocked", [(kD - aP)], nil)
2037+ if ((kE == kE))
2038+ then if (if (if (fO)
2039+ then (0 >= ja)
20422040 else false)
20432041 then true
2044- else (0 >= kA))
2042+ else (0 >= kz))
20452043 then nil
2046- else [IntegerEntry(V(C), (co + b))]
2044+ else [IntegerEntry(U(B), (cn + cI))]
20472045 else throw("Strict value is not equal to itself.")
20482046 }
2049- let kG = getIntegerValue(L(C))
2050- let kH = getStringValue(M(C))
2051- $Tuple4(kB, [IntegerEntry(kz, kG), StringEntry(bP(C), kH)], kH, kG)
2052- }
2053-
2054-
2055-func kI (kJ,ap,kK,d,kL,kM) = {
2056- let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
2057- if (kv(C))
2047+ let kF = getStringValue(L(B))
2048+ $Tuple3(kA, [StringEntry(bO(B), kF)], kF)
2049+ }
2050+
2051+
2052+func kG (kH,ao,kI,c,kJ,kK) = {
2053+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
2054+ if (ku(B))
20582055 then throw("mergeInternal_checkTournament")
2059- else if (kw(C))
2056+ else if (kv(B))
20602057 then throw("mergeInternal_checkDelivery")
20612058 else {
2062- func kN (eX,R) = {
2063- let jy = value(assetInfo(fromBase58String(R)))
2064- let jz = bx(R)
2065- let jA = valueOrErrorMessage(getInteger(jz), (("NFT " + jy.name) + " is not staked"))
2066- let jB = valueOrErrorMessage(getString(bu(R)), (("NFT " + jy.name) + " is orphaned"))
2067- if ((jB != d))
2068- then throw((aG + " is not yours"))
2059+ func kL (eW,Q) = {
2060+ let jx = value(assetInfo(fromBase58String(Q)))
2061+ let jy = bw(Q)
2062+ let jz = valueOrErrorMessage(getInteger(jy), (("NFT " + jx.name) + " is not staked"))
2063+ let jA = valueOrErrorMessage(getString(bt(Q)), (("NFT " + jx.name) + " is orphaned"))
2064+ if ((jA != c))
2065+ then throw((aF + " is not yours"))
20692066 else {
2070- let jC = split(jy.description, "_")
2071- let dz = jC[dq]
2072- if (if ((eX._3 != ""))
2073- then (eX._3 != dz)
2067+ let jB = split(jx.description, "_")
2068+ let dA = jB[dr]
2069+ if (if ((eW._3 != ""))
2070+ then (eW._3 != dA)
20742071 else false)
20752072 then throw("Lands should be on the same continent to merge")
20762073 else {
2077- let dO = jC[do]
2078- let kO = eX._1
2079- let gQ = valueOrErrorMessage(indexOf(kO, dO), "You haven't passed all the lands needed")
2080- let kP = (take(kO, gQ) + drop(kO, (gQ + 1)))
2081- let jo = dN(dO)
2082- let kQ = (eX._2 + valueOrElse(getInteger(by(aI, R)), 0))
2083- let ig = valueOrElse(getInteger(bE(R)), 0)
2084- let kR = {
2085- let cE = dO
2074+ let dM = jB[dp]
2075+ let kM = eW._1
2076+ let gP = valueOrErrorMessage(indexOf(kM, dM), "You haven't passed all the lands needed")
2077+ let kN = (take(kM, gP) + drop(kM, (gP + 1)))
2078+ let jn = dL(dM)
2079+ let kO = (eW._2 + valueOrElse(getInteger(bx(aH, Q)), 0))
2080+ let if = valueOrElse(getInteger(bD(Q)), 0)
2081+ let kP = {
2082+ let cE = dM
20862083 if (("S" == cE))
20872084 then 3
20882085 else if (("M" == cE))
20892086 then 4
20902087 else if (("L" == cE))
20912088 then 5
20922089 else if (("XL" == cE))
20932090 then 6
20942091 else throw("Only S, M, L, XL can merge")
20952092 }
2096- if ((ig != kR))
2093+ if ((if != kP))
20972094 then throw("All lands should be maxed to merge")
20982095 else {
2099- let ez = jC[dn]
2100- let gM = gS(jC[dp])
2101- let gW = (lastBlock.timestamp - jA)
2102- if ((0 > gW))
2103- then throw(((("Saved timestamp is in future, saved = " + toString(jA)) + ", current = ") + toString(lastBlock.timestamp)))
2096+ let ey = jB[do]
2097+ let gL = gR(jB[dq])
2098+ let gV = (lastBlock.timestamp - jz)
2099+ if ((0 > gV))
2100+ then throw(((("Saved timestamp is in future, saved = " + toString(jz)) + ", current = ") + toString(lastBlock.timestamp)))
21042101 else {
2105- let jE = jn(R, jo)
2106- let if = (jo / cL)
2107- let jM = gU(split(eX._4, "_"), gM, gW, if, jE)
2108- let fh = gK(eX._6, gM, if, -1)
2109- let kS = gK(eX._10, gM, if, -1)
2110- let hA = gK(eX._9, gM, if, 1)
2111- let kT = eX._7
2112- let dg = indexOf(kT, R)
2113- if (!(isDefined(dg)))
2114- then throw(("Your staked lands don't contain " + R))
2102+ let jD = jm(Q, jn)
2103+ let ie = (jn / cM)
2104+ let jL = gT(split(eW._4, "_"), gL, gV, ie, jD)
2105+ let fg = gJ(eW._6, gL, ie, -1)
2106+ let kQ = gJ(eW._10, gL, ie, -1)
2107+ let hz = gJ(eW._9, gL, ie, 1)
2108+ let kR = eW._7
2109+ let dh = indexOf(kR, Q)
2110+ if (!(isDefined(dh)))
2111+ then throw(("Your staked lands don't contain " + Q))
21152112 else {
2116- let kU = bw(R)
2117- let kV = valueOrElse(getString(kU), "")
2118- $Tuple10(kP, kQ, dz, jM, ((((((((((((eX._5 :+ DeleteEntry(bx(R))) :+ DeleteEntry(bA(aG, R, d))) :+ DeleteEntry(ey(ez))) :+ DeleteEntry(bu(R))) :+ DeleteEntry(bE(R))) :+ DeleteEntry(eA(R, d))) :+ DeleteEntry(by(aI, R))) :+ DeleteEntry(eB(ez))) :+ DeleteEntry(bD(R))) :+ DeleteEntry(kU)) :+ Burn(fromBase58String(R), 1)) ++ (if ((kV != ""))
2119- then [DeleteEntry(ew(kV))]
2120- else nil)), fh, removeByIndex(kT, value(dg)), (eX._8 + jo), hA, kS)
2113+ let kS = bv(Q)
2114+ let kT = valueOrElse(getString(kS), "")
2115+ $Tuple10(kN, kO, dA, jL, ((((((((((((eW._5 :+ DeleteEntry(bw(Q))) :+ DeleteEntry(bz(aF, Q, c))) :+ DeleteEntry(ex(ey))) :+ DeleteEntry(bt(Q))) :+ DeleteEntry(bD(Q))) :+ DeleteEntry(ez(Q, c))) :+ DeleteEntry(bx(aH, Q))) :+ DeleteEntry(eA(ey))) :+ DeleteEntry(bC(Q))) :+ DeleteEntry(kS)) :+ Burn(fromBase58String(Q), 1)) ++ (if ((kT != ""))
2116+ then [DeleteEntry(ev(kT))]
2117+ else nil)), fg, removeByIndex(kR, value(dh)), (eW._8 + jn), hz, kQ)
21212118 }
21222119 }
21232120 }
21242121 }
21252122 }
21262123 }
21272124
2128- let hR = bO(C)
2129- let iu = hQ(hR)
2130- let gL = split(valueOrElse(getString(dx()), "0_0_0_0_0_0"), "_")
2131- let kW = dA(d)
2132- let kX = getString(kW)
2133- let kY = if (isDefined(kX))
2134- then split_51C(value(kX), "_")
2125+ let hQ = bN(B)
2126+ let it = hP(hQ)
2127+ let gK = split(valueOrElse(getString(dy()), "0_0_0_0_0_0"), "_")
2128+ let kU = dB(c)
2129+ let kV = getString(kU)
2130+ let kW = if (isDefined(kV))
2131+ then split_51C(value(kV), "_")
21352132 else nil
2136- let kZ = split(value(assetInfo(fromBase58String(kL[0]))).description, "_")[dq]
2137- let la = split(valueOrElse(getString(dy(kZ)), "0_0_0_0_0_0"), "_")
2138- let fi = {
2139- let eZ = kL
2140- let fa = size(eZ)
2141- let fb = $Tuple10(kK, 0, "", iu[bo], nil, gL, kY, 0, split("0_0_0_0_0_0", "_"), la)
2142- func fc (fd,fe) = if ((fe >= fa))
2143- then fd
2144- else kN(fd, eZ[fe])
2145-
2146- func ff (fd,fe) = if ((fe >= fa))
2147- then fd
2133+ let kX = split(value(assetInfo(fromBase58String(kJ[0]))).description, "_")[dr]
2134+ let kY = split(valueOrElse(getString(dz(kX)), "0_0_0_0_0_0"), "_")
2135+ let fh = {
2136+ let eY = kJ
2137+ let eZ = size(eY)
2138+ let fa = $Tuple10(kI, 0, "", it[bn], nil, gK, kW, 0, split("0_0_0_0_0_0", "_"), kY)
2139+ func fb (fc,fd) = if ((fd >= eZ))
2140+ then fc
2141+ else kL(fc, eY[fd])
2142+
2143+ func fe (fc,fd) = if ((fd >= eZ))
2144+ then fc
21482145 else throw("List size exceeds 5")
21492146
2150- ff(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5)
2147+ fe(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5)
21512148 }
2152- let dz = fi._3
2153- let hu = valueOrErrorMessage(indexOf(aV, dz), ("Unknown continent: " + dz))
2154- let gT = hz(fi._9, (dN(kJ) / cL))
2155- let iS = valueOrElse(getInteger(ev()), (eu + 1))
2156- let lb = toString(iS)
2157- let iT = Issue(eM(lb, kJ), makeString([lb, kJ, gT, dz], "_"), 1, 0, false)
2158- let bv = calculateAssetId(iT)
2159- let lc = toBase58String(bv)
2160- let jY = makeString(fj((kM > 0), split(iu[bp], "_"), kM), "_")
2161- let ld = dB(d)
2162- let le = valueOrElse(getInteger(ld), 0)
2163- $Tuple2((((((((((((((((fi._5 :+ (if ((size(fi._7) > 0))
2164- then StringEntry(kW, makeString_11C(fi._7, "_"))
2165- else DeleteEntry(kW))) :+ IntegerEntry(ld, if ((fi._8 > le))
2149+ let dA = fh._3
2150+ let ht = valueOrErrorMessage(indexOf(aU, dA), ("Unknown continent: " + dA))
2151+ let gS = hy(fh._9, (dL(kH) / cM))
2152+ let iR = valueOrElse(getInteger(eu()), (et + 1))
2153+ let kZ = toString(iR)
2154+ let iS = Issue(eL(kZ, kH), makeString([kZ, kH, gS, dA], "_"), 1, 0, false)
2155+ let bu = calculateAssetId(iS)
2156+ let la = toBase58String(bu)
2157+ let jX = makeString(fi((kK > 0), split(it[bo], "_"), kK), "_")
2158+ let lb = dC(c)
2159+ let lc = valueOrElse(getInteger(lb), 0)
2160+ $Tuple2((((((((((((((((fh._5 :+ (if ((size(fh._7) > 0))
2161+ then StringEntry(kU, makeString_11C(fh._7, "_"))
2162+ else DeleteEntry(kU))) :+ IntegerEntry(lb, if ((fh._8 > lc))
21662163 then 0
2167- else (le - fi._8))) :+ IntegerEntry(ev(), (iS + 1))) :+ iT) :+ StringEntry(ey(lb), lc)) :+ StringEntry(bu(lc), d)) :+ StringEntry(eB(lb), d)) :+ IntegerEntry(by(aI, lc), fi._2)) :+ IntegerEntry(bE(lc), ap)) :+ IntegerEntry(eA(lc, d), ap)) :+ StringEntry(hR, makeString([iu[bn], fi._4, jY, iu[bq]], ":"))) :+ StringEntry(dx(), makeString(fi._6, "_"))) :+ StringEntry(dy(dz), makeString(fi._10, "_"))) :+ StringEntry(bP(C), makeString([dz, "L", lc], "_"))) :+ ScriptTransfer(addressFromStringValue(d), 1, bv)), lc)
2164+ else (lc - fh._8))) :+ IntegerEntry(eu(), (iR + 1))) :+ iS) :+ StringEntry(ex(kZ), la)) :+ StringEntry(bt(la), c)) :+ StringEntry(eA(kZ), c)) :+ IntegerEntry(bx(aH, la), fh._2)) :+ IntegerEntry(bD(la), ao)) :+ IntegerEntry(ez(la, c), ao)) :+ StringEntry(hQ, makeString([it[bm], fh._4, jX, it[bp]], ":"))) :+ StringEntry(dy(), makeString(fh._6, "_"))) :+ StringEntry(dz(dA), makeString(fh._10, "_"))) :+ StringEntry(bO(B), makeString([dA, "L", la], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bu)), la)
21682165 }
21692166 }
21702167
21712168
2172-func lf (d,kL) = kI("M", 3, "SSSS", d, kL, 0)
2173-
2174-
2175-func lg (d,kL) = kI("L", 4, "SMM", d, kL, (cG * 4))
2176-
2177-
2178-func lh (d,kL) = kI("XL", 5, "SSSML", d, kL, (cG * 47))
2179-
2180-
2181-func li (d,kL) = kI("XXL", 6, "LXL", d, kL, (cG * 54))
2182-
2183-
2184-func lj (d,kL) = {
2185- let cE = size(kL)
2169+func ld (c,kJ) = kG("M", 3, "SSSS", c, kJ, 0)
2170+
2171+
2172+func le (c,kJ) = kG("L", 4, "SMM", c, kJ, (cG * 4))
2173+
2174+
2175+func lf (c,kJ) = kG("XL", 5, "SSSML", c, kJ, (cG * 47))
2176+
2177+
2178+func lg (c,kJ) = kG("XXL", 6, "LXL", c, kJ, (cG * 54))
2179+
2180+
2181+func lh (c,kJ) = {
2182+ let cE = size(kJ)
21862183 if ((4 == cE))
2187- then lf(d, kL)
2184+ then ld(c, kJ)
21882185 else if ((3 == cE))
2189- then lg(d, kL)
2186+ then le(c, kJ)
21902187 else if ((5 == cE))
2191- then lh(d, kL)
2188+ then lf(c, kJ)
21922189 else if ((2 == cE))
2193- then li(d, kL)
2190+ then lg(c, kJ)
21942191 else throw("Unknown merge")
21952192 }
21962193
21972194
2198-func lk (bR) = {
2199- let ll = getString(bN(bR))
2200- if (if (cB)
2201- then isDefined(ll)
2195+func li (bQ) = {
2196+ let lj = getString(bM(bQ))
2197+ if (if (cA)
2198+ then isDefined(lj)
22022199 else false)
22032200 then {
2204- let C = value(ll)
2205- let lm = bP(C)
2206- let cl = split(valueOrElse(getString(lm), aN), "_")
2207- let co = parseIntValue(cl[br])
2208- if (if ((cl[bs] != "D"))
2201+ let B = value(lj)
2202+ let lk = bO(B)
2203+ let ck = split(valueOrElse(getString(lk), aM), "_")
2204+ let cn = parseIntValue(ck[bq])
2205+ if (if ((ck[br] != "D"))
22092206 then true
2210- else (lastBlock.timestamp > (co + aR)))
2207+ else ((cn + aQ) > lastBlock.timestamp))
22112208 then nil
22122209 else {
2213- let kz = B(C)
2214- if ((parseIntValue(cl[bt]) >= 3))
2210+ let ky = A(B)
2211+ if ((parseIntValue(ck[bs]) >= 3))
22152212 then {
2216- let kC = invoke(di, "sendDeliveryReward", [bR], nil)
2217- if ((kC == kC))
2213+ let kB = invoke(dj, "sendDeliveryReward", [bQ], nil)
2214+ if ((kB == kB))
22182215 then nil
22192216 else throw("Strict value is not equal to itself.")
22202217 }
22212218 else (({
2222- let kE = valueOrElse(getInteger(di, bU), 0)
2223- let kF = invoke(di, "updateDeliveryLocked", [(kE - aQ)], nil)
2224- if ((kF == kF))
2225- then if ((0 >= getIntegerValue(kz)))
2219+ let kD = valueOrElse(getInteger(dj, bT), 0)
2220+ let kE = invoke(dj, "updateDeliveryLocked", [(kD - aP)], nil)
2221+ if ((kE == kE))
2222+ then if ((0 >= getIntegerValue(ky)))
22262223 then nil
22272224 else {
2228- let ln = invoke(this, "saveInteger", [V(C), (co + b)], nil)
2229- if ((ln == ln))
2225+ let ll = invoke(this, "saveInteger", [U(B), (cn + cI)], nil)
2226+ if ((ll == ll))
22302227 then nil
22312228 else throw("Strict value is not equal to itself.")
22322229 }
22332230 else throw("Strict value is not equal to itself.")
2234- } :+ IntegerEntry(kz, getIntegerValue(L(C)))) :+ StringEntry(lm, getStringValue(M(C))))
2231+ } :+ IntegerEntry(ky, getIntegerValue(K(B)))) :+ StringEntry(lk, getStringValue(L(B))))
22352232 }
22362233 }
22372234 else nil
22382235 }
22392236
22402237
2241-func lo (gQ) = if (if ((gQ.originCaller != dh))
2242- then valueOrElse(getBoolean(dQ()), false)
2238+func lm (gP) = if (if ((gP.originCaller != di))
2239+ then valueOrElse(getBoolean(dO()), false)
22432240 else false)
22442241 then throw("Contracts are under maintenance")
22452242 else {
2246- let bR = toString(gQ.originCaller)
2247- (lk(bR) :+ StringEntry(dR(bR), toBase58String(gQ.transactionId)))
2243+ let bQ = toString(gP.originCaller)
2244+ (li(bQ) :+ StringEntry(dP(bQ), toBase58String(gP.transactionId)))
22482245 }
22492246
22502247
2251-func lp (gQ) = if (if ((gQ.originCaller != dh))
2252- then valueOrElse(getBoolean(dQ()), false)
2248+func ln (gP) = if (if ((gP.originCaller != di))
2249+ then valueOrElse(getBoolean(dO()), false)
22532250 else false)
22542251 then throw("Contracts are under maintenance")
2255- else [StringEntry(dR(toString(gQ.originCaller)), toBase58String(gQ.transactionId))]
2256-
2257-
2258-@Callable(gQ)
2259-func constructorV1 (lq) = if ((gQ.caller != this))
2252+ else [StringEntry(dP(toString(gP.originCaller)), toBase58String(gP.transactionId))]
2253+
2254+
2255+@Callable(gP)
2256+func constructorV1 (lo) = if ((gP.caller != this))
22602257 then throw("Permission denied")
2261- else [StringEntry(db(), lq)]
2262-
2263-
2264-
2265-@Callable(gQ)
2266-func saveInteger (cT,eO) = if ((gQ.caller != this))
2258+ else [StringEntry(dc(), lo)]
2259+
2260+
2261+
2262+@Callable(gP)
2263+func saveInteger (cU,eN) = if ((gP.caller != this))
22672264 then throw("saveInteger is not public method")
2268- else [IntegerEntry(cT, eO)]
2269-
2270-
2271-
2272-@Callable(gQ)
2273-func setBlocked (lr) = if ((gQ.caller != this))
2265+ else [IntegerEntry(cU, eN)]
2266+
2267+
2268+
2269+@Callable(gP)
2270+func setBlocked (lp) = if ((gP.caller != this))
22742271 then throw("permission denied")
2275- else [BooleanEntry(dQ(), lr)]
2276-
2277-
2278-
2279-@Callable(gQ)
2272+ else [BooleanEntry(dO(), lp)]
2273+
2274+
2275+
2276+@Callable(gP)
22802277 func stakeLand () = {
2281- let ls = lo(gQ)
2282- if ((size(gQ.payments) != 1))
2278+ let lq = lm(gP)
2279+ if ((size(gP.payments) != 1))
22832280 then throw("Exactly one payment required")
22842281 else {
2285- let lt = value(gQ.payments[0])
2286- let bv = value(lt.assetId)
2287- let cS = toString(gQ.caller)
2288- if ((lt.amount != 1))
2289- then throw((("NFT " + aG) + " token should be attached as payment"))
2282+ let lr = value(gP.payments[0])
2283+ let bu = value(lr.assetId)
2284+ let cT = toString(gP.caller)
2285+ if ((lr.amount != 1))
2286+ then throw((("NFT " + aF) + " token should be attached as payment"))
22902287 else {
2291- let jy = value(assetInfo(bv))
2292- if ((jy.issuer != this))
2288+ let jx = value(assetInfo(bu))
2289+ if ((jx.issuer != this))
22932290 then throw("Unknown issuer of token")
2294- else if (!(contains(jy.name, aG)))
2295- then throw((("Only NFT " + aG) + " tokens are accepted"))
2291+ else if (!(contains(jx.name, aF)))
2292+ then throw((("Only NFT " + aF) + " tokens are accepted"))
22962293 else {
2297- let lu = drop(jy.name, 4)
2298- let ez = if (contains(lu, "XXL"))
2299- then dropRight(lu, 3)
2300- else if (contains(lu, "XL"))
2301- then dropRight(lu, 2)
2302- else dropRight(lu, 1)
2303- if (!(isDefined(parseInt(ez))))
2304- then throw(("Cannot parse land number from " + jy.name))
2294+ let ls = drop(jx.name, 4)
2295+ let ey = if (contains(ls, "XXL"))
2296+ then dropRight(ls, 3)
2297+ else if (contains(ls, "XL"))
2298+ then dropRight(ls, 2)
2299+ else dropRight(ls, 1)
2300+ if (!(isDefined(parseInt(ey))))
2301+ then throw(("Cannot parse land number from " + jx.name))
23052302 else {
2306- let R = toBase58String(bv)
2307- let jz = bx(R)
2308- if (isDefined(getInteger(jz)))
2309- then throw((("NFT " + jy.name) + " is already staked"))
2303+ let Q = toBase58String(bu)
2304+ let jy = bw(Q)
2305+ if (isDefined(getInteger(jy)))
2306+ then throw((("NFT " + jx.name) + " is already staked"))
23102307 else {
2311- let jC = split(jy.description, "_")
2312- let gM = gS(jC[dp])
2313- let jo = dN(jC[do])
2314- let if = (jo / cL)
2315- let fh = gR(gM, if, 1)
2316- let lv = dy(jC[dq])
2317- let la = split(valueOrElse(getString(lv), "0_0_0_0_0_0"), "_")
2318- let lw = makeString(gK(la, gM, if, 1), "_")
2319- let kW = dA(cS)
2320- let kX = getString(kW)
2321- let kT = if (isDefined(kX))
2322- then split_51C(value(kX), "_")
2308+ let jB = split(jx.description, "_")
2309+ let gL = gR(jB[dq])
2310+ let jn = dL(jB[dp])
2311+ let ie = (jn / cM)
2312+ let fg = gQ(gL, ie, 1)
2313+ let lt = dz(jB[dr])
2314+ let kY = split(valueOrElse(getString(lt), "0_0_0_0_0_0"), "_")
2315+ let lu = makeString(gJ(kY, gL, ie, 1), "_")
2316+ let kU = dB(cT)
2317+ let kV = getString(kU)
2318+ let kR = if (isDefined(kV))
2319+ then split_51C(value(kV), "_")
23232320 else nil
2324- if (containsElement(kT, R))
2325- then throw(("Your staked lands already contain " + R))
2326- else if ((size(kT) >= aK))
2327- then throw((("Your already staked max (" + toString(aK)) + ") lands"))
2321+ if (containsElement(kR, Q))
2322+ then throw(("Your staked lands already contain " + Q))
2323+ else if ((size(kR) >= aJ))
2324+ then throw((("Your already staked max (" + toString(aJ)) + ") lands"))
23282325 else {
2329- let ig = valueOrElse(getInteger(bE(R)), 0)
2330- let ld = dB(cS)
2331- let lx = valueOrElse(getInteger(ld), 0)
2332- let ly = invoke(dk, "onStakeUnstakeLand", [cS], nil)
2333- $Tuple2(([IntegerEntry(jz, lastBlock.timestamp), IntegerEntry(bA(aG, R, cS), lastBlock.timestamp), StringEntry(kW, makeString_11C((kT :+ R), "_")), IntegerEntry(ld, (lx + jo)), StringEntry(bu(R), cS), StringEntry(eB(ez), cS), IntegerEntry(eA(R, cS), ig), StringEntry(dx(), fh), StringEntry(lv, lw)] ++ ls), ly)
2326+ let if = valueOrElse(getInteger(bD(Q)), 0)
2327+ let lb = dC(cT)
2328+ let lv = valueOrElse(getInteger(lb), 0)
2329+ let lw = invoke(dl, "onStakeUnstakeLand", [cT], nil)
2330+ $Tuple2(([IntegerEntry(jy, lastBlock.timestamp), IntegerEntry(bz(aF, Q, cT), lastBlock.timestamp), StringEntry(kU, makeString_11C((kR :+ Q), "_")), IntegerEntry(lb, (lv + jn)), StringEntry(bt(Q), cT), StringEntry(eA(ey), cT), IntegerEntry(ez(Q, cT), if), StringEntry(dy(), fg), StringEntry(lt, lu)] ++ lq), lw)
23342331 }
23352332 }
23362333 }
23372334 }
23382335 }
23392336 }
23402337 }
23412338
23422339
23432340
2344-@Callable(gQ)
2345-func unstakeLand (ju) = {
2346- let ls = lo(gQ)
2347- if ((size(gQ.payments) != 0))
2341+@Callable(gP)
2342+func unstakeLand (jt) = {
2343+ let lq = lm(gP)
2344+ if ((size(gP.payments) != 0))
23482345 then throw("No payments required")
23492346 else {
2350- let d = toString(gQ.caller)
2351- let gg = js(d, eG, ju)
2352- let R = gg._2
2353- let jC = gg._3
2354- let kW = dA(d)
2355- let gM = gS(jC[dp])
2356- let jo = dN(jC[do])
2357- let if = (jo / cL)
2358- let fh = gR(gM, if, -1)
2359- let lv = dy(jC[dq])
2360- let la = split(valueOrElse(getString(lv), "0_0_0_0_0_0"), "_")
2361- let lw = makeString(gK(la, gM, if, -1), "_")
2362- let jZ = jP(d, R, jo, eG)
2363- let kT = split_51C(valueOrElse(getString(kW), ""), "_")
2364- let dg = indexOf(kT, R)
2365- if (!(isDefined(dg)))
2366- then throw(("Your staked lands don't contain " + R))
2347+ let c = toString(gP.caller)
2348+ let gf = jr(c, eF, jt)
2349+ let Q = gf._2
2350+ let jB = gf._3
2351+ let kU = dB(c)
2352+ let gL = gR(jB[dq])
2353+ let jn = dL(jB[dp])
2354+ let ie = (jn / cM)
2355+ let fg = gQ(gL, ie, -1)
2356+ let lt = dz(jB[dr])
2357+ let kY = split(valueOrElse(getString(lt), "0_0_0_0_0_0"), "_")
2358+ let lu = makeString(gJ(kY, gL, ie, -1), "_")
2359+ let jY = jO(c, Q, jn, eF)
2360+ let kR = split_51C(valueOrElse(getString(kU), ""), "_")
2361+ let dh = indexOf(kR, Q)
2362+ if (!(isDefined(dh)))
2363+ then throw(("Your staked lands don't contain " + Q))
23672364 else {
2368- let aB = lastBlock.timestamp
2369- let lz = valueOrElse(getInteger(dj, bQ(d)), 0)
2370- if ((lz >= aB))
2371- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lz)))
2365+ let aA = lastBlock.timestamp
2366+ let lx = valueOrElse(getInteger(dk, bP(c)), 0)
2367+ if ((lx >= aA))
2368+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lx)))
23722369 else {
2373- let lA = (valueOrElse(getInteger(dk, c(d)), 0) + cH)
2374- if ((lA > aB))
2375- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lA)))
2370+ let ly = (valueOrElse(getInteger(dl, b(c)), 0) + cH)
2371+ if ((ly > aA))
2372+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(ly)))
23762373 else {
2377- let ld = dB(d)
2378- let le = valueOrElse(getInteger(ld), 0)
2379- let lB = if ((jo > le))
2374+ let lb = dC(c)
2375+ let lc = valueOrElse(getInteger(lb), 0)
2376+ let lz = if ((jn > lc))
23802377 then 0
2381- else (le - jo)
2382- let ly = invoke(dk, "onStakeUnstakeLand", [d], nil)
2383- $Tuple2(([ScriptTransfer(gQ.caller, 1, fromBase58String(R)), DeleteEntry(bx(R)), DeleteEntry(bA(aG, R, d)), StringEntry(dx(), fh), StringEntry(lv, lw), StringEntry(jZ._2, makeString(jZ._3, ":")), if ((size(kT) > 1))
2384- then StringEntry(kW, makeString_11C(removeByIndex(kT, value(dg)), "_"))
2385- else DeleteEntry(kW), IntegerEntry(ld, lB)] ++ ls), ly)
2378+ else (lc - jn)
2379+ let lw = invoke(dl, "onStakeUnstakeLand", [c], nil)
2380+ $Tuple2(([ScriptTransfer(gP.caller, 1, fromBase58String(Q)), DeleteEntry(bw(Q)), DeleteEntry(bz(aF, Q, c)), StringEntry(dy(), fg), StringEntry(lt, lu), StringEntry(jY._2, makeString(jY._3, ":")), if ((size(kR) > 1))
2381+ then StringEntry(kU, makeString_11C(removeByIndex(kR, value(dh)), "_"))
2382+ else DeleteEntry(kU), IntegerEntry(lb, lz)] ++ lq), lw)
23862383 }
23872384 }
23882385 }
23892386 }
23902387 }
23912388
23922389
23932390
2394-@Callable(gQ)
2391+@Callable(gP)
23952392 func stakeDuck () = {
2396- let ls = lo(gQ)
2397- if ((size(gQ.payments) != 1))
2393+ let lq = lm(gP)
2394+ if ((size(gP.payments) != 1))
23982395 then throw("Exactly one payment required")
23992396 else {
2400- let lt = value(gQ.payments[0])
2401- let bv = value(lt.assetId)
2402- let cS = toString(gQ.caller)
2403- if ((lt.amount != 1))
2404- then throw((("NFT " + aH) + " token should be attached as payment"))
2397+ let lr = value(gP.payments[0])
2398+ let bu = value(lr.assetId)
2399+ let cT = toString(gP.caller)
2400+ if ((lr.amount != 1))
2401+ then throw((("NFT " + aG) + " token should be attached as payment"))
24052402 else {
2406- let jy = value(assetInfo(bv))
2407- if (if ((jy.issuer != ed))
2408- then (jy.issuer != ee)
2403+ let jx = value(assetInfo(bu))
2404+ if (if ((jx.issuer != ec))
2405+ then (jx.issuer != ed)
24092406 else false)
2410- then throw((("Unknown issuer of " + aH) + " token"))
2411- else if (!(contains(jy.name, aH)))
2412- then throw((("Only NFT " + aH) + " tokens are accepted"))
2407+ then throw((("Unknown issuer of " + aG) + " token"))
2408+ else if (!(contains(jx.name, aG)))
2409+ then throw((("Only NFT " + aG) + " tokens are accepted"))
24132410 else {
2414- let lC = toBase58String(bv)
2415- let jz = bx(lC)
2416- if (isDefined(getInteger(jz)))
2417- then throw((("NFT " + jy.name) + " is already staked"))
2418- else if (isDefined(getString(bN(cS))))
2419- then throw(("You already staked one duck: " + jy.name))
2411+ let lA = toBase58String(bu)
2412+ let jy = bw(lA)
2413+ if (isDefined(getInteger(jy)))
2414+ then throw((("NFT " + jx.name) + " is already staked"))
2415+ else if (isDefined(getString(bM(cT))))
2416+ then throw(("You already staked one duck: " + jx.name))
24202417 else {
2421- let lm = bP(lC)
2422- let cj = getString(lm)
2423- let hR = bO(lC)
2424- let lD = getString(hR)
2425- let jh = B(lC)
2426- let ji = ak(valueOrElse(getInteger(F(lC)), 0))
2427- let kA = valueOrElse(getInteger(jh), ji)
2428- ([IntegerEntry(jz, lastBlock.timestamp), IntegerEntry(bA(aH, toBase58String(bv), cS), lastBlock.timestamp), StringEntry(bM(lC), cS), StringEntry(bN(cS), lC)] ++ (if (isDefined(cj))
2418+ let lk = bO(lA)
2419+ let ci = getString(lk)
2420+ let hQ = bN(lA)
2421+ let lB = getString(hQ)
2422+ let jg = A(lA)
2423+ let jh = aj(valueOrElse(getInteger(E(lA)), 0))
2424+ let kz = valueOrElse(getInteger(jg), jh)
2425+ ([IntegerEntry(jy, lastBlock.timestamp), IntegerEntry(bz(aG, toBase58String(bu), cT), lastBlock.timestamp), StringEntry(bL(lA), cT), StringEntry(bM(cT), lA)] ++ (if (isDefined(ci))
24292426 then nil
2430- else ([StringEntry(lm, aN)] ++ (if (isDefined(lD))
2427+ else ([StringEntry(lk, aM)] ++ (if (isDefined(lB))
24312428 then nil
2432- else (([StringEntry(hR, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jh, kA)) ++ ls)))))
2429+ else (([StringEntry(hQ, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jg, kz)) ++ lq)))))
24332430 }
24342431 }
24352432 }
24362433 }
24372434 }
24382435
24392436
24402437
2441-@Callable(gQ)
2442-func unstakeDuck (lC) = {
2443- let ls = lo(gQ)
2444- if ((size(gQ.payments) != 0))
2438+@Callable(gP)
2439+func unstakeDuck (lA) = {
2440+ let lq = lm(gP)
2441+ if ((size(gP.payments) != 0))
24452442 then throw("No payments required")
24462443 else {
2447- let bv = fromBase58String(lC)
2448- let cS = toString(gQ.caller)
2449- let jy = value(assetInfo(bv))
2450- let jz = bx(lC)
2451- if (!(isDefined(getInteger(jz))))
2452- then throw((("NFT " + jy.name) + " is not staked"))
2453- else if (!(isDefined(getString(bN(cS)))))
2454- then throw((("The duck " + jy.name) + " is not staked"))
2444+ let bu = fromBase58String(lA)
2445+ let cT = toString(gP.caller)
2446+ let jx = value(assetInfo(bu))
2447+ let jy = bw(lA)
2448+ if (!(isDefined(getInteger(jy))))
2449+ then throw((("NFT " + jx.name) + " is not staked"))
2450+ else if (!(isDefined(getString(bM(cT)))))
2451+ then throw((("The duck " + jx.name) + " is not staked"))
24552452 else {
2456- let jB = valueOrErrorMessage(getString(bM(lC)), (("NFT " + jy.name) + " is orphaned"))
2457- if ((jB != cS))
2453+ let jA = valueOrErrorMessage(getString(bL(lA)), (("NFT " + jx.name) + " is orphaned"))
2454+ if ((jA != cT))
24582455 then throw("Staked NFT is not yours")
2459- else if (kv(lC))
2456+ else if (ku(lA))
24602457 then throw("unstakeDuck_checkTournament")
2461- else if (kw(lC))
2458+ else if (kv(lA))
24622459 then throw("unstakeDuck_checkDelivery")
24632460 else {
2464- let jh = B(lC)
2465- let ji = ak(valueOrElse(getInteger(F(lC)), 0))
2466- let aw = valueOrElse(getInteger(jh), ji)
2467- if ((ji > aw))
2468- then throw((("Please heal your duck to " + toString(ji)) + "hp before unstaking"))
2469- else ([ScriptTransfer(gQ.caller, 1, bv), DeleteEntry(jz), DeleteEntry(jh), DeleteEntry(bP(lC)), DeleteEntry(bM(lC)), DeleteEntry(bA(aH, lC, cS)), DeleteEntry(bN(cS))] ++ ls)
2461+ let jg = A(lA)
2462+ let jh = aj(valueOrElse(getInteger(E(lA)), 0))
2463+ let av = valueOrElse(getInteger(jg), jh)
2464+ if ((jh > av))
2465+ then throw((("Please heal your duck to " + toString(jh)) + "hp before unstaking"))
2466+ else ([ScriptTransfer(gP.caller, 1, bu), DeleteEntry(jy), DeleteEntry(jg), DeleteEntry(bO(lA)), DeleteEntry(bL(lA)), DeleteEntry(bz(aG, lA, cT)), DeleteEntry(bM(cT))] ++ lq)
24702467 }
24712468 }
24722469 }
24732470 }
24742471
24752472
24762473
2477-@Callable(gQ)
2478-func claimRes (eO,lE) = {
2479- let ls = lo(gQ)
2480- if ((size(gQ.payments) != 0))
2474+@Callable(gP)
2475+func claimRes (eN,lC) = {
2476+ let lq = lm(gP)
2477+ if ((size(gP.payments) != 0))
24812478 then throw("No payments required")
24822479 else {
2483- let d = toString(gQ.originCaller)
2484- let fp = jD(d, eO, eG, lE)
2485- let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
2486- $Tuple2(((((fp._1 ++ kf(C, fraction(Y, eO, cK))._1) :+ StringEntry(fp._2, makeString(fp._3, ":"))) :+ StringEntry(fp._4, makeString(fp._5, ":"))) ++ ls), fp._3[bo])
2487- }
2488- }
2489-
2490-
2491-
2492-@Callable(gQ)
2493-func claimResToWH (eO,lE) = {
2494- let ls = lo(gQ)
2495- if ((size(gQ.payments) != 0))
2480+ let c = toString(gP.originCaller)
2481+ let fo = jC(c, eN, eF, lC)
2482+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
2483+ $Tuple2(((((fo._1 ++ ke(B, fraction(X, eN, cL))._1) :+ StringEntry(fo._2, makeString(fo._3, ":"))) :+ StringEntry(fo._4, makeString(fo._5, ":"))) ++ lq), fo._3[bn])
2484+ }
2485+ }
2486+
2487+
2488+
2489+@Callable(gP)
2490+func claimResToWH (eN,lC) = {
2491+ let lq = lm(gP)
2492+ if ((size(gP.payments) != 0))
24962493 then throw("No payments required")
24972494 else {
2498- let d = toString(gQ.originCaller)
2499- let fp = jD(d, eO, eF, lE)
2500- $Tuple2(((((fp._1 ++ kl(d, fraction(Y, eO, cK))._1) :+ StringEntry(fp._2, makeString(fp._3, ":"))) :+ StringEntry(fp._4, makeString(fp._5, ":"))) ++ ls), fp._5[bf])
2501- }
2502- }
2503-
2504-
2505-
2506-@Callable(gQ)
2507-func flight (iW,iX) = {
2508- let ls = lp(gQ)
2509- if ((size(gQ.payments) != 0))
2495+ let c = toString(gP.originCaller)
2496+ let fo = jC(c, eN, eE, lC)
2497+ $Tuple2(((((fo._1 ++ kk(c, fraction(X, eN, cL))._1) :+ StringEntry(fo._2, makeString(fo._3, ":"))) :+ StringEntry(fo._4, makeString(fo._5, ":"))) ++ lq), fo._5[be])
2498+ }
2499+ }
2500+
2501+
2502+
2503+@Callable(gP)
2504+func flight (iV,iW) = {
2505+ let lq = ln(gP)
2506+ if ((size(gP.payments) != 0))
25102507 then throw("No payments required")
25112508 else {
2512- let bR = toString(gQ.caller)
2513- let hv = iV(bR, iW, iX)
2514- let jb = hv._1
2515- let C = hv._2
2516- let lm = bP(C)
2517- let jw = valueOrElse(getString(lm), aN)
2518- let jd = hv._4
2519- if ((jd == jw))
2509+ let bQ = toString(gP.caller)
2510+ let hu = iU(bQ, iV, iW)
2511+ let ja = hu._1
2512+ let B = hu._2
2513+ let lk = bO(B)
2514+ let jv = valueOrElse(getString(lk), aM)
2515+ let jc = hu._4
2516+ if ((jc == jv))
25202517 then throw("You can't fly to the same location")
25212518 else {
2522- let cx = split(jd, "_")
2523- let lF = (cx[bs] == "T")
2524- let lG = (cx[bs] == "D")
2525- let gD = H(C)
2526- let lH = valueOrElse(getString(gD), ",;,_,;,_,;,_,;,_,;,_,;,")
2527- let lI = fq(lH, hv._5)
2528- let lJ = lI._1
2529- let lK = lI._2
2530- let lL = if (!(cs(dl, jw)))
2531- then if (!(cq(jd)))
2532- then cv(jw, jd, 5)
2533- else if ((jb > 0))
2534- then $Tuple2(jd, jb)
2535- else $Tuple2(jw, 0)
2536- else if (ci(dl, jw))
2537- then if (!(ci(dl, jd)))
2519+ let cw = split(jc, "_")
2520+ let lD = (cw[br] == "T")
2521+ let lE = (cw[br] == "D")
2522+ let gC = G(B)
2523+ let lF = valueOrElse(getString(gC), ",;,_,;,_,;,_,;,_,;,_,;,")
2524+ let lG = fp(lF, hu._5)
2525+ let lH = lG._1
2526+ let lI = lG._2
2527+ let lJ = if (!(cr(dm, jv)))
2528+ then if (!(cp(jc)))
2529+ then cu(jv, jc, 5)
2530+ else if ((ja > 0))
2531+ then $Tuple2(jc, ja)
2532+ else $Tuple2(jv, 0)
2533+ else if (ch(dm, jv))
2534+ then if (!(ch(dm, jc)))
25382535 then throw("Your duck is taking part in the tournament")
25392536 else {
2540- let ky = parseIntValue(cx[bt])
2541- let lM = split(jw, "_")
2542- let ck = valueOrElse(getInteger(dl, bV), 0)
2543- if ((ky != (parseIntValue(lM[bt]) + 1)))
2544- then cv(jw, jd, 7)
2545- else if ((jb > 0))
2537+ let kx = parseIntValue(cw[bs])
2538+ let lK = split(jv, "_")
2539+ let cj = valueOrElse(getInteger(dm, bU), 0)
2540+ if ((kx != (parseIntValue(lK[bs]) + 1)))
2541+ then cu(jv, jc, 7)
2542+ else if ((ja > 0))
25462543 then {
2547- let lN = valueOrElse(getInteger(dl, bZ(ck, C)), 0)
2548- let lO = if ((ky > lN))
2549- then invoke(dl, "saveDuckResult", [C, ky], nil)
2544+ let lL = valueOrElse(getInteger(dm, bY(cj, B)), 0)
2545+ let lM = if ((kx > lL))
2546+ then invoke(dm, "saveDuckResult", [B, kx], nil)
25502547 else unit
2551- if ((lO == lO))
2552- then $Tuple2(jd, jb)
2548+ if ((lM == lM))
2549+ then $Tuple2(jc, ja)
25532550 else throw("Strict value is not equal to itself.")
25542551 }
2555- else $Tuple2(jw, 0)
2552+ else $Tuple2(jv, 0)
25562553 }
2557- else if (!(cn(jw)))
2554+ else if (!(cm(jv)))
25582555 then {
2559- let lP = dK(invoke(this, "autoExitDelivery", [C, jb, if (lG)
2556+ let lN = dD(invoke(this, "autoExitDelivery", [B, ja, if (lE)
25602557 then "10"
25612558 else "11", 0], nil))
2562- if ((lP == lP))
2563- then if (lG)
2564- then lP
2565- else if ((jb > 0))
2566- then $Tuple2(jd, jb)
2567- else $Tuple2(lP._1, 0)
2559+ if ((lN == lN))
2560+ then if (lE)
2561+ then $Tuple2(lN, ja)
2562+ else if ((ja > 0))
2563+ then $Tuple2(jc, ja)
2564+ else $Tuple2(lN, 0)
25682565 else throw("Strict value is not equal to itself.")
25692566 }
2570- else if (!(lG))
2567+ else if (!(lE))
25712568 then throw("Your duck is taking part in delivery")
2572- else if (!(cn(jd)))
2573- then cv(jw, jd, 13)
2569+ else if (!(cm(jc)))
2570+ then cu(jv, jc, 13)
25742571 else {
2575- let ky = parseIntValue(cx[bt])
2576- let lM = split(jw, "_")
2577- if ((ky != (parseIntValue(lM[bt]) + 1)))
2578- then cv(jw, jd, 14)
2579- else if (if ((jb > 0))
2580- then (3 > ky)
2572+ let kx = parseIntValue(cw[bs])
2573+ let lK = split(jv, "_")
2574+ if ((kx != (parseIntValue(lK[bs]) + 1)))
2575+ then cu(jv, jc, 14)
2576+ else if (if ((ja > 0))
2577+ then (3 > kx)
25812578 else false)
2582- then $Tuple2(jd, jb)
2579+ then $Tuple2(jc, ja)
25832580 else {
2584- let lP = dK(invoke(this, "autoExitDelivery", [C, jb, "15-17", ky], nil))
2585- if ((lP == lP))
2586- then lP
2581+ let lN = dD(invoke(this, "autoExitDelivery", [B, ja, "15-17", kx], nil))
2582+ if ((lN == lN))
2583+ then $Tuple2(lN, ja)
25872584 else throw("Strict value is not equal to itself.")
25882585 }
25892586 }
2590- let lQ = lL._1
2591- let lR = lL._2
2592- $Tuple2(((([StringEntry(lm, lQ), StringEntry(gD, lJ), IntegerEntry(B(C), lR)] ++ ls) ++ (if (lK)
2593- then [StringEntry(N(C), "0_0_0_0_0")]
2594- else nil)) ++ kf(C, if ((jb > 0))
2595- then Z
2596- else aa)._1), hv._3)
2587+ let lO = lJ._1
2588+ let lP = lJ._2
2589+ $Tuple2(((([StringEntry(lk, lO), StringEntry(gC, lH), IntegerEntry(A(B), lP)] ++ lq) ++ (if (lI)
2590+ then [StringEntry(M(B), "0_0_0_0_0")]
2591+ else nil)) ++ ke(B, if ((ja > 0))
2592+ then Y
2593+ else Z)._1), hu._3)
25972594 }
25982595 }
25992596 }
26002597
26012598
26022599
2603-@Callable(gQ)
2604-func heal (lS,lT,lU) = {
2605- let ls = lo(gQ)
2606- if (if (if ((0 > lS))
2600+@Callable(gP)
2601+func heal (lQ,lR,lS) = {
2602+ let lq = lm(gP)
2603+ if (if (if ((0 > lQ))
26072604 then true
2608- else (0 > lT))
2605+ else (0 > lR))
26092606 then true
2610- else (0 > lU))
2607+ else (0 > lS))
26112608 then throw("Quantity cannot be negative")
26122609 else {
2613- let C = valueOrErrorMessage(getString(bN(toString(gQ.caller))), "You don't have a duck staked")
2614- if (kv(C))
2610+ let B = valueOrErrorMessage(getString(bM(toString(gP.caller))), "You don't have a duck staked")
2611+ if (ku(B))
26152612 then throw("heal_checkTournament")
2616- else if (kw(C))
2613+ else if (kv(B))
26172614 then throw("heal_checkDelivery")
26182615 else {
2619- let lV = [lS, lT, lU]
2620- let jh = B(C)
2621- let ji = ak(valueOrElse(getInteger(F(C)), 0))
2622- let lW = valueOrElse(getInteger(jh), ji)
2623- if ((lW >= ji))
2624- then throw((("HP should be < " + toString(ji)) + " to heal"))
2616+ let lT = [lQ, lR, lS]
2617+ let jg = A(B)
2618+ let jh = aj(valueOrElse(getInteger(E(B)), 0))
2619+ let lU = valueOrElse(getInteger(jg), jh)
2620+ if ((lU >= jh))
2621+ then throw((("HP should be < " + toString(jh)) + " to heal"))
26252622 else {
2626- let hR = bO(C)
2627- let iu = hQ(hR)
2628- let lX = if ((iu[bq] == ""))
2623+ let hQ = bN(B)
2624+ let it = hP(hQ)
2625+ let lV = if ((it[bp] == ""))
26292626 then nil
2630- else split_4C(iu[bq], "_")
2631- func lY (eX,cu) = {
2632- let dG = eX._2
2633- let hm = if ((size(lX) > dG))
2634- then parseIntValue(lX[dG])
2627+ else split_4C(it[bp], "_")
2628+ func lW (eW,ct) = {
2629+ let dH = eW._2
2630+ let hl = if ((size(lV) > dH))
2631+ then parseIntValue(lV[dH])
26352632 else 0
2636- if ((3 > dG))
2633+ if ((3 > dH))
26372634 then {
2638- let lZ = lV[dG]
2639- if ((lZ > hm))
2640- then throw(((("You have only " + toString(hm)) + " of ") + aU[dG]))
2641- else $Tuple3((eX._1 :+ toString((hm - lZ))), (dG + 1), (eX._3 + (parseIntValue(split(cu, "_")[ba]) * lZ)))
2635+ let lX = lT[dH]
2636+ if ((lX > hl))
2637+ then throw(((("You have only " + toString(hl)) + " of ") + aT[dH]))
2638+ else $Tuple3((eW._1 :+ toString((hl - lX))), (dH + 1), (eW._3 + (parseIntValue(split(ct, "_")[aZ]) * lX)))
26422639 }
2643- else $Tuple3((eX._1 :+ toString(hm)), (dG + 1), eX._3)
2640+ else $Tuple3((eW._1 :+ toString(hl)), (dH + 1), eW._3)
26442641 }
26452642
2646- let fp = {
2647- let eZ = aY
2648- let fa = size(eZ)
2649- let fb = $Tuple3(nil, 0, 0)
2650- func fc (fd,fe) = if ((fe >= fa))
2651- then fd
2652- else lY(fd, eZ[fe])
2653-
2654- func ff (fd,fe) = if ((fe >= fa))
2655- then fd
2643+ let fo = {
2644+ let eY = aX
2645+ let eZ = size(eY)
2646+ let fa = $Tuple3(nil, 0, 0)
2647+ func fb (fc,fd) = if ((fd >= eZ))
2648+ then fc
2649+ else lW(fc, eY[fd])
2650+
2651+ func fe (fc,fd) = if ((fd >= eZ))
2652+ then fc
26562653 else throw("List size exceeds 50")
26572654
2658- ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 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)
2655+ fe(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fa, 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)
26592656 }
2660- let ma = min([ji, (lW + fp._3)])
2661- $Tuple2((([IntegerEntry(jh, ma), StringEntry(hR, makeString_2C([iu[bn], iu[bo], iu[bp], makeString(fp._1, "_")], ":"))] ++ ls) ++ kf(C, (ah * ((lS + lT) + lU)))._1), ma)
2657+ let lY = min([jh, (lU + fo._3)])
2658+ $Tuple2((([IntegerEntry(jg, lY), StringEntry(hQ, makeString_2C([it[bm], it[bn], it[bo], makeString(fo._1, "_")], ":"))] ++ lq) ++ ke(B, (ag * ((lQ + lR) + lS)))._1), lY)
26622659 }
26632660 }
26642661 }
26652662 }
26662663
26672664
26682665
2669-@Callable(gQ)
2666+@Callable(gP)
26702667 func healES () = {
2671- let ls = lo(gQ)
2672- if ((size(gQ.payments) != 1))
2668+ let lq = lm(gP)
2669+ if ((size(gP.payments) != 1))
26732670 then throw("Exactly one payment required")
26742671 else {
2675- let lt = value(gQ.payments[0])
2676- if ((lt.assetId != cD))
2672+ let lr = value(gP.payments[0])
2673+ if ((lr.assetId != cD))
26772674 then throw("Allowed USDT payment only!")
26782675 else {
2679- let C = valueOrErrorMessage(getString(bN(toString(gQ.caller))), "You don't have a duck staked")
2680- if (kv(C))
2676+ let B = valueOrErrorMessage(getString(bM(toString(gP.caller))), "You don't have a duck staked")
2677+ if (ku(B))
26812678 then throw("healES_checkTournament")
2682- else if (kw(C))
2679+ else if (kv(B))
26832680 then throw("healES_checkDelivery")
26842681 else {
2685- let jh = B(C)
2686- let ji = ak(valueOrElse(getInteger(F(C)), 0))
2687- let lW = valueOrElse(getInteger(jh), ji)
2688- if ((lW > 0))
2682+ let jg = A(B)
2683+ let jh = aj(valueOrElse(getInteger(E(B)), 0))
2684+ let lU = valueOrElse(getInteger(jg), jh)
2685+ if ((lU > 0))
26892686 then throw("HP should be 0 to call Emergency Service")
26902687 else {
2691- let hR = bO(C)
2692- let iu = hQ(hR)
2693- let lX = if ((iu[bq] == ""))
2688+ let hQ = bN(B)
2689+ let it = hP(hQ)
2690+ let lV = if ((it[bp] == ""))
26942691 then nil
2695- else split_4C(iu[bq], "_")
2696- let mb = if ((size(lX) > 0))
2697- then parseIntValue(lX[0])
2692+ else split_4C(it[bp], "_")
2693+ let lZ = if ((size(lV) > 0))
2694+ then parseIntValue(lV[0])
26982695 else 0
2699- let mc = if ((size(lX) > 1))
2700- then parseIntValue(lX[1])
2696+ let ma = if ((size(lV) > 1))
2697+ then parseIntValue(lV[1])
27012698 else 0
2702- let md = if ((size(lX) > 2))
2703- then parseIntValue(lX[2])
2699+ let mb = if ((size(lV) > 2))
2700+ then parseIntValue(lV[2])
27042701 else 0
2705- if (if (if ((mb > 0))
2702+ if (if (if ((lZ > 0))
27062703 then true
2707- else (mc > 0))
2704+ else (ma > 0))
27082705 then true
2709- else (md > 0))
2706+ else (mb > 0))
27102707 then throw("You have to use own Medical Kit")
27112708 else {
2712- let me = getString(di, bS())
2713- let mf = if (isDefined(me))
2714- then split_4C(value(me), "_")
2709+ let mc = getString(dj, bR())
2710+ let md = if (isDefined(mc))
2711+ then split_4C(value(mc), "_")
27152712 else nil
2716- let mg = if ((size(mf) > 0))
2717- then parseIntValue(mf[0])
2713+ let me = if ((size(md) > 0))
2714+ then parseIntValue(md[0])
27182715 else 0
2719- if ((0 >= mg))
2716+ if ((0 >= me))
27202717 then throw("There are no Medical Kits L1 at Emergency Service storage")
27212718 else {
2722- let ma = (lW + parseIntValue(split(aY[0], "_")[ba]))
2723- let mh = makeString([toString((mg - 1)), removeByIndex(mf, 0)], "_")
2724- let cu = split(aY[0], "_")
2725- let mi = ct(cu)
2726- let mj = fraction((mi * aP), aO, (cK * bd))
2727- if ((lt.amount != mj))
2728- then throw(("Payment attached should be " + toString(mj)))
2719+ let lY = (lU + parseIntValue(split(aX[0], "_")[aZ]))
2720+ let mf = makeString([toString((me - 1)), removeByIndex(md, 0)], "_")
2721+ let ct = split(aX[0], "_")
2722+ let mg = cs(ct)
2723+ let mh = fraction((mg * aO), aN, (cL * bc))
2724+ if ((lr.amount != mh))
2725+ then throw(("Payment attached should be " + toString(mh)))
27292726 else {
2730- let fp = dC(invoke(di, "updateEsStorage", [mh], [AttachedPayment(cD, mj)]))
2731- $Tuple2(((ls :+ IntegerEntry(jh, ma)) ++ kf(C, ab)._1), fp)
2727+ let fo = dD(invoke(dj, "updateEsStorage", [mf], [AttachedPayment(cD, mh)]))
2728+ $Tuple2(((lq :+ IntegerEntry(jg, lY)) ++ ke(B, aa)._1), fo)
27322729 }
27332730 }
27342731 }
27352732 }
27362733 }
27372734 }
27382735 }
27392736 }
27402737
27412738
27422739
2743-@Callable(gQ)
2744-func updateBackpack (C,mk) = if ((gQ.caller != di))
2740+@Callable(gP)
2741+func updateBackpack (B,mi) = if ((gP.caller != dj))
27452742 then throw("permission denied")
2746- else $Tuple2([StringEntry(bO(C), mk)], mk)
2747-
2748-
2749-
2750-@Callable(gQ)
2743+ else $Tuple2([StringEntry(bN(B), mi)], mi)
2744+
2745+
2746+
2747+@Callable(gP)
27512748 func commitForRandom () = {
2752- let ls = lo(gQ)
2753- let ml = (height + dv)
2754- let d = toString(gQ.caller)
2755- $Tuple2(([IntegerEntry(dw(d), ml)] ++ ls), ml)
2756- }
2757-
2758-
2759-
2760-@Callable(gQ)
2749+ let lq = lm(gP)
2750+ let mj = (height + dw)
2751+ let c = toString(gP.caller)
2752+ $Tuple2(([IntegerEntry(dx(c), mj)] ++ lq), mj)
2753+ }
2754+
2755+
2756+
2757+@Callable(gP)
27612758 func buySLand () = {
2762- let ls = lo(gQ)
2763- if ((size(gQ.payments) != 1))
2759+ let lq = lm(gP)
2760+ if ((size(gP.payments) != 1))
27642761 then throw("Exactly one payment required")
27652762 else {
2766- let lt = value(gQ.payments[0])
2767- if ((lt.assetId != cD))
2763+ let lr = value(gP.payments[0])
2764+ if ((lr.assetId != cD))
27682765 then throw("Allowed USDT payment only!")
2769- else if ((lt.amount != em))
2766+ else if ((lr.amount != el))
2767+ then throw(("Payment attached should be " + toString(el)))
2768+ else {
2769+ let fo = iN(gP.caller, gP.transactionId)
2770+ let mk = dG(invoke(dn, "burnAcres", [em], nil))
2771+ $Tuple2((((fo._1 :+ ScriptTransfer(dj, lr.amount, cD)) ++ kk(toString(gP.caller), ac)._1) ++ lq), $Tuple2(fo._2._1, mk))
2772+ }
2773+ }
2774+ }
2775+
2776+
2777+
2778+@Callable(gP)
2779+func expedition (iV,iW) = {
2780+ let lq = lm(gP)
2781+ if ((size(gP.payments) != 0))
2782+ then throw("No payments required")
2783+ else {
2784+ let bQ = toString(gP.caller)
2785+ let hu = iU(bQ, iV, iW)
2786+ let B = hu._2
2787+ let jg = A(B)
2788+ let hQ = bN(B)
2789+ let it = hP(hQ)
2790+ let jV = split(it[bo], "_")
2791+ let jX = makeString(fi(true, jV, ek), "_")
2792+ let gC = G(B)
2793+ let lF = valueOrElse(getString(gC), ",;,_,;,_,;,_,;,_,;,_,;,")
2794+ let ml = fp(lF, hu._5)
2795+ let lH = ml._1
2796+ let lI = ml._2
2797+ let mm = iN(gP.caller, gP.transactionId)
2798+ let iT = mm._2._1
2799+ let fo = if ((0 >= hu._1))
2800+ then $Tuple3([IntegerEntry(jg, 0), StringEntry(gC, lH)], "", 0)
2801+ else $Tuple3((mm._1 ++ (if (lI)
2802+ then [StringEntry(M(B), "0_0_0_0_0")]
2803+ else ((((nil :+ StringEntry(bO(B), makeString([mm._2._2, "L", iT], "_"))) :+ IntegerEntry(jg, hu._1)) :+ StringEntry(gC, lH)) :+ StringEntry(hQ, makeString([it[bm], it[bn], jX, it[bp]], ":"))))), iT, hu._3)
2804+ if (ku(B))
2805+ then throw("expedition_checkTournament")
2806+ else if (kv(B))
2807+ then throw("expedition_checkDelivery")
2808+ else {
2809+ let mk = dG(invoke(dn, "burnAcres", [em], nil))
2810+ $Tuple2(((fo._1 ++ ke(B, ac)._1) ++ lq), $Tuple3(fo._2, fo._3, mk))
2811+ }
2812+ }
2813+ }
2814+
2815+
2816+
2817+@Callable(gP)
2818+func buySLandForAcres () = {
2819+ let lq = lm(gP)
2820+ if ((size(gP.payments) != 1))
2821+ then throw("exactly 1 payment must be attached")
2822+ else {
2823+ let lr = gP.payments[0]
2824+ let fv = lr.amount
2825+ if (if (!(isDefined(lr.assetId)))
2826+ then true
2827+ else (value(lr.assetId) != dv))
2828+ then throw("ACRES payments only!")
2829+ else if ((fv != em))
27702830 then throw(("Payment attached should be " + toString(em)))
27712831 else {
2772- let fp = iO(gQ.caller, gQ.transactionId)
2773- let mm = dF(invoke(dm, "burnAcres", [en], nil))
2774- $Tuple2((((fp._1 :+ ScriptTransfer(di, lt.amount, cD)) ++ kl(toString(gQ.caller), ad)._1) ++ ls), $Tuple2(fp._2._1, mm))
2832+ let fo = iN(gP.caller, gP.transactionId)
2833+ let mk = dG(invoke(dn, "burnAcres", [em], [AttachedPayment(dv, fv)]))
2834+ $Tuple2(((fo._1 ++ kk(toString(gP.caller), ac)._1) ++ lq), $Tuple2(fo._2._1, mk))
27752835 }
27762836 }
27772837 }
27782838
27792839
27802840
2781-@Callable(gQ)
2782-func expedition (iW,iX) = {
2783- let ls = lo(gQ)
2784- if ((size(gQ.payments) != 0))
2841+@Callable(gP)
2842+func upgradeInfra (Q) = {
2843+ let lq = lm(gP)
2844+ if ((size(gP.payments) != 0))
27852845 then throw("No payments required")
27862846 else {
2787- let bR = toString(gQ.caller)
2788- let hv = iV(bR, iW, iX)
2789- let C = hv._2
2790- let jh = B(C)
2791- let hR = bO(C)
2792- let iu = hQ(hR)
2793- let jW = split(iu[bp], "_")
2794- let jY = makeString(fj(true, jW, el), "_")
2795- let gD = H(C)
2796- let lH = valueOrElse(getString(gD), ",;,_,;,_,;,_,;,_,;,_,;,")
2797- let mn = fq(lH, hv._5)
2798- let lJ = mn._1
2799- let lK = mn._2
2800- let mo = iO(gQ.caller, gQ.transactionId)
2801- let iU = mo._2._1
2802- let fp = if ((0 >= hv._1))
2803- then $Tuple3([IntegerEntry(jh, 0), StringEntry(gD, lJ)], "", 0)
2804- else $Tuple3((mo._1 ++ (if (lK)
2805- then [StringEntry(N(C), "0_0_0_0_0")]
2806- else ((((nil :+ StringEntry(bP(C), makeString([mo._2._2, "L", iU], "_"))) :+ IntegerEntry(jh, hv._1)) :+ StringEntry(gD, lJ)) :+ StringEntry(hR, makeString([iu[bn], iu[bo], jY, iu[bq]], ":"))))), iU, hv._3)
2807- if (kv(C))
2808- then throw("expedition_checkTournament")
2809- else if (kw(C))
2810- then throw("expedition_checkDelivery")
2811- else {
2812- let mm = dF(invoke(dm, "burnAcres", [en], nil))
2813- $Tuple2(((fp._1 ++ kf(C, ad)._1) ++ ls), $Tuple3(fp._2, fp._3, mm))
2814- }
2815- }
2816- }
2817-
2818-
2819-
2820-@Callable(gQ)
2821-func buySLandForAcres () = {
2822- let ls = lo(gQ)
2823- if ((size(gQ.payments) != 1))
2824- then throw("exactly 1 payment must be attached")
2825- else {
2826- let lt = gQ.payments[0]
2827- let fw = lt.amount
2828- if (if (!(isDefined(lt.assetId)))
2829- then true
2830- else (value(lt.assetId) != du))
2831- then throw("ACRES payments only!")
2832- else if ((fw != en))
2833- then throw(("Payment attached should be " + toString(en)))
2834- else {
2835- let fp = iO(gQ.caller, gQ.transactionId)
2836- let mm = dF(invoke(dm, "burnAcres", [en], [AttachedPayment(du, fw)]))
2837- $Tuple2(((fp._1 ++ kl(toString(gQ.caller), ad)._1) ++ ls), $Tuple2(fp._2._1, mm))
2838- }
2839- }
2840- }
2841-
2842-
2843-
2844-@Callable(gQ)
2845-func upgradeInfra (R) = {
2846- let ls = lo(gQ)
2847- if ((size(gQ.payments) != 0))
2847+ let fo = jP(true, gP.caller, 0, Q)
2848+ let B = valueOrErrorMessage(getString(bM(toString(gP.caller))), "You don't have a duck staked")
2849+ $Tuple2(((fo._1 ++ lq) ++ ke(B, fraction(ad, fo._3, cL))._1), fo._2)
2850+ }
2851+ }
2852+
2853+
2854+
2855+@Callable(gP)
2856+func activateArtifact (mn,mo) = {
2857+ let lq = lm(gP)
2858+ if ((size(gP.payments) != 0))
28482859 then throw("No payments required")
28492860 else {
2850- let fp = jQ(true, gQ.caller, 0, R)
2851- let C = valueOrErrorMessage(getString(bN(toString(gQ.caller))), "You don't have a duck staked")
2852- $Tuple2(((fp._1 ++ ls) ++ kf(C, fraction(ae, fp._3, cK))._1), fp._2)
2853- }
2854- }
2855-
2856-
2857-
2858-@Callable(gQ)
2859-func activateArtifact (mp,mq) = {
2860- let ls = lo(gQ)
2861- if ((size(gQ.payments) != 0))
2861+ let c = toString(gP.caller)
2862+ let fo = {
2863+ let cE = mn
2864+ if (("PRESALE" == cE))
2865+ then ks(c, mo)
2866+ else if (("ONBOARD" == cE))
2867+ then kl(c)
2868+ else throw("Unknown artifact")
2869+ }
2870+ (fo ++ lq)
2871+ }
2872+ }
2873+
2874+
2875+
2876+@Callable(gP)
2877+func mergeLands (kJ) = {
2878+ let lq = lm(gP)
2879+ if ((size(gP.payments) != 0))
28622880 then throw("No payments required")
28632881 else {
2864- let d = toString(gQ.caller)
2865- let fp = {
2866- let cE = mp
2867- if (("PRESALE" == cE))
2868- then kt(d, mq)
2869- else if (("ONBOARD" == cE))
2870- then km(d)
2871- else throw("Unknown artifact")
2872- }
2873- (fp ++ ls)
2874- }
2875- }
2876-
2877-
2878-
2879-@Callable(gQ)
2880-func mergeLands (kL) = {
2881- let ls = lo(gQ)
2882- if ((size(gQ.payments) != 0))
2882+ let fo = lh(toString(gP.caller), kJ)
2883+ $Tuple2(((fo._1 ++ lq) ++ kk(toString(gP.caller), ae)._1), fo._2)
2884+ }
2885+ }
2886+
2887+
2888+
2889+@Callable(gP)
2890+func cargoExchange (mp,Q) = {
2891+ let lq = lm(gP)
2892+ if ((size(gP.payments) != 0))
28832893 then throw("No payments required")
28842894 else {
2885- let fp = lj(toString(gQ.caller), kL)
2886- $Tuple2(((fp._1 ++ ls) ++ kl(toString(gQ.caller), af)._1), fp._2)
2887- }
2888- }
2889-
2890-
2891-
2892-@Callable(gQ)
2893-func cargoExchange (mr,R) = {
2894- let ls = lo(gQ)
2895- if ((size(gQ.payments) != 0))
2896- then throw("No payments required")
2897- else {
2898- let it = split_4C(mr, ":")
2899- let d = toString(gQ.originCaller)
2900- let jy = value(assetInfo(fromBase58String(R)))
2901- let jz = bx(R)
2902- if (!(isDefined(getInteger(jz))))
2903- then throw((jy.name + " is not staked"))
2895+ let is = split_4C(mp, ":")
2896+ let c = toString(gP.originCaller)
2897+ let jx = value(assetInfo(fromBase58String(Q)))
2898+ let jy = bw(Q)
2899+ if (!(isDefined(getInteger(jy))))
2900+ then throw((jx.name + " is not staked"))
29042901 else {
2905- let jB = valueOrErrorMessage(getString(bu(R)), (("NFT " + jy.name) + " is orphaned"))
2906- if ((jB != d))
2907- then throw((aG + " is not yours"))
2902+ let jA = valueOrErrorMessage(getString(bt(Q)), (("NFT " + jx.name) + " is orphaned"))
2903+ if ((jA != c))
2904+ then throw((aF + " is not yours"))
29082905 else {
2909- let if = (dN(split(jy.description, "_")[do]) / cL)
2910- let ig = valueOrElse(getInteger(bE(R)), 0)
2911- let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
2912- let jw = valueOrElse(getString(bP(C)), aN)
2913- let cl = split(value(jw), "_")
2914- if ((cl[bs] != "L"))
2915- then throw((("Duck location type is " + cl[bs]) + ", but should be L"))
2916- else if ((cl[bt] != R))
2917- then throw(("Duck should be on the land " + R))
2906+ let ie = (dL(split(jx.description, "_")[dp]) / cM)
2907+ let if = valueOrElse(getInteger(bD(Q)), 0)
2908+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
2909+ let jv = valueOrElse(getString(bO(B)), aM)
2910+ let ck = split(value(jv), "_")
2911+ if ((ck[br] != "L"))
2912+ then throw((("Duck location type is " + ck[br]) + ", but should be L"))
2913+ else if ((ck[bs] != Q))
2914+ then throw(("Duck should be on the land " + Q))
29182915 else {
2919- let ie = bD(R)
2920- let hV = id(ie, if, ig)
2921- let hR = bO(C)
2922- let iu = hQ(hR)
2923- let fp = is(it, hV, iu)
2924- let im = split(hV[bi], "_")
2925- let jN = (parseIntValue(im[bk]) + fp._7)
2926- let jO = (parseIntValue(im[bl]) - fp._7)
2927- ([StringEntry(hR, makeString_2C([iu[bn], fp._4, fp._5, fp._6], ":")), StringEntry(ie, makeString_2C([hV[be], fp._1, fp._2, fp._3, makeString([im[bj], toString(jN), toString(jO), im[bm]], "_")], ":"))] ++ ls)
2916+ let id = bC(Q)
2917+ let hU = ic(id, ie, if)
2918+ let hQ = bN(B)
2919+ let it = hP(hQ)
2920+ let fo = ir(is, hU, it)
2921+ let il = split(hU[bh], "_")
2922+ let jM = (parseIntValue(il[bj]) + fo._7)
2923+ let jN = (parseIntValue(il[bk]) - fo._7)
2924+ ([StringEntry(hQ, makeString_2C([it[bm], fo._4, fo._5, fo._6], ":")), StringEntry(id, makeString_2C([hU[bd], fo._1, fo._2, fo._3, makeString([il[bi], toString(jM), toString(jN), il[bl]], "_")], ":"))] ++ lq)
29282925 }
29292926 }
29302927 }
29312928 }
29322929 }
29332930
29342931
29352932
2936-@Callable(gQ)
2937-func saveWarehouse (ii,R) = if ((gQ.caller != di))
2933+@Callable(gP)
2934+func saveWarehouse (ih,Q) = if ((gP.caller != dj))
29382935 then throw("Access denied")
29392936 else {
2940- let ie = bD(R)
2941- let ij = split_4C(ii, ":")
2942- if ((size(ij) != 5))
2937+ let id = bC(Q)
2938+ let ii = split_4C(ih, ":")
2939+ if ((size(ii) != 5))
29432940 then throw("warehouse string should contain 4 ':' separators")
29442941 else {
2945- let ms = split(ij[bi], "_")[bj]
2946- let jN = hU(ij)
2947- let mt = hS(ij[be])
2948- let jO = ((mt - parseIntValue(ms)) - jN)
2949- let mu = makeString_2C([ij[be], ij[bf], ij[bg], ij[bh], makeString([ms, toString(jN), toString(jO), toString(mt)], "_")], ":")
2950- $Tuple2([StringEntry(ie, mu)], mu)
2942+ let mq = split(ii[bh], "_")[bi]
2943+ let jM = hT(ii)
2944+ let mr = hR(ii[bd])
2945+ let jN = ((mr - parseIntValue(mq)) - jM)
2946+ let ms = makeString_2C([ii[bd], ii[be], ii[bf], ii[bg], makeString([mq, toString(jM), toString(jN), toString(mr)], "_")], ":")
2947+ $Tuple2([StringEntry(id, ms)], ms)
29512948 }
29522949 }
29532950
29542951
29552952
2956-@Callable(gQ)
2957-func fixWarehouseFormat (R) = if ((gQ.caller != dh))
2953+@Callable(gP)
2954+func fixWarehouseFormat (Q) = if ((gP.caller != di))
29582955 then throw("Access denied")
29592956 else {
2960- let ie = bD(R)
2961- let jy = value(assetInfo(fromBase58String(R)))
2962- let if = (dN(split(jy.description, "_")[do]) / cL)
2963- let ig = valueOrElse(getInteger(bE(R)), 0)
2964- let ij = id(ie, if, ig)
2965- let ms = dF(invoke(di, "recalcLockedVolumeREADONLY", [R, ij], nil))
2966- let jN = hU(ij)
2967- let mt = hS(ij[be])
2968- let jO = ((mt - ms) - jN)
2969- let mu = makeString_2C([ij[be], ij[bf], ij[bg], ij[bh], makeString([toString(ms), toString(jN), toString(jO), toString(mt)], "_")], ":")
2970- $Tuple2([StringEntry(ie, mu)], mu)
2957+ let id = bC(Q)
2958+ let jx = value(assetInfo(fromBase58String(Q)))
2959+ let ie = (dL(split(jx.description, "_")[dp]) / cM)
2960+ let if = valueOrElse(getInteger(bD(Q)), 0)
2961+ let ii = ic(id, ie, if)
2962+ let mq = dG(invoke(dj, "recalcLockedVolumeREADONLY", [Q, ii], nil))
2963+ let jM = hT(ii)
2964+ let mr = hR(ii[bd])
2965+ let jN = ((mr - mq) - jM)
2966+ let ms = makeString_2C([ii[bd], ii[be], ii[bf], ii[bg], makeString([toString(mq), toString(jM), toString(jN), toString(mr)], "_")], ":")
2967+ $Tuple2([StringEntry(id, ms)], ms)
29712968 }
29722969
29732970
29742971
2975-@Callable(gQ)
2976-func fixContinentProportions (kL) = if ((gQ.caller != dh))
2972+@Callable(gP)
2973+func fixContinentProportions (kJ) = if ((gP.caller != di))
29772974 then throw("Access denied")
29782975 else {
2979- func mv (eX,mw) = (eX :+ valueOrElse(getString(dy(mw)), "0_0_0_0_0_0"))
2980-
2981- let gA = {
2982- let eZ = aV
2983- let fa = size(eZ)
2984- let fb = nil
2985- func fc (fd,fe) = if ((fe >= fa))
2986- then fd
2987- else mv(fd, eZ[fe])
2988-
2989- func ff (fd,fe) = if ((fe >= fa))
2990- then fd
2976+ func mt (eW,mu) = (eW :+ valueOrElse(getString(dz(mu)), "0_0_0_0_0_0"))
2977+
2978+ let gz = {
2979+ let eY = aU
2980+ let eZ = size(eY)
2981+ let fa = nil
2982+ func fb (fc,fd) = if ((fd >= eZ))
2983+ then fc
2984+ else mt(fc, eY[fd])
2985+
2986+ func fe (fc,fd) = if ((fd >= eZ))
2987+ then fc
29912988 else throw("List size exceeds 5")
29922989
2993- ff(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5)
2994- }
2995- func mx (eX,R) = {
2996- let jy = value(assetInfo(fromBase58String(R)))
2997- let jC = split(jy.description, "_")
2998- let if = (dN(jC[do]) / cL)
2999- let mw = jC[dq]
3000- let gM = gS(jC[dp])
3001- let hu = value(indexOf(aV, mw))
3002- let la = split(eX[hu], "_")
3003- let my = makeString(gK(la, gM, if, 1), "_")
3004- let cE = mw
2990+ fe(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5)
2991+ }
2992+ func mv (eW,Q) = {
2993+ let jx = value(assetInfo(fromBase58String(Q)))
2994+ let jB = split(jx.description, "_")
2995+ let ie = (dL(jB[dp]) / cM)
2996+ let mu = jB[dr]
2997+ let gL = gR(jB[dq])
2998+ let ht = value(indexOf(aU, mu))
2999+ let kY = split(eW[ht], "_")
3000+ let mw = makeString(gJ(kY, gL, ie, 1), "_")
3001+ let cE = mu
30053002 if (("Americas" == cE))
3006- then [my, eX[1], eX[2], eX[3], eX[4]]
3003+ then [mw, eW[1], eW[2], eW[3], eW[4]]
30073004 else if (("Europe" == cE))
3008- then [eX[0], my, eX[2], eX[3], eX[4]]
3005+ then [eW[0], mw, eW[2], eW[3], eW[4]]
30093006 else if (("Asia" == cE))
3010- then [eX[0], eX[1], my, eX[3], eX[4]]
3007+ then [eW[0], eW[1], mw, eW[3], eW[4]]
30113008 else if (("Africa" == cE))
3012- then [eX[0], eX[1], eX[2], my, eX[4]]
3009+ then [eW[0], eW[1], eW[2], mw, eW[4]]
30133010 else if (("Oceania" == cE))
3014- then [eX[0], eX[1], eX[2], eX[3], my]
3011+ then [eW[0], eW[1], eW[2], eW[3], mw]
30153012 else throw("wrong continent")
30163013 }
30173014
3018- let fi = {
3019- let eZ = kL
3020- let fa = size(eZ)
3021- let fb = gA
3022- func hL (fd,fe) = if ((fe >= fa))
3023- then fd
3024- else mx(fd, eZ[fe])
3025-
3026- func hM (fd,fe) = if ((fe >= fa))
3027- then fd
3015+ let fh = {
3016+ let eY = kJ
3017+ let eZ = size(eY)
3018+ let fa = gz
3019+ func hK (fc,fd) = if ((fd >= eZ))
3020+ then fc
3021+ else mv(fc, eY[fd])
3022+
3023+ func hL (fc,fd) = if ((fd >= eZ))
3024+ then fc
30283025 else throw("List size exceeds 100")
30293026
3030- hM(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(fb, 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)
3031- }
3032- $Tuple2([StringEntry(dy("Americas"), fi[0]), StringEntry(dy("Europe"), fi[1]), StringEntry(dy("Asia"), fi[2]), StringEntry(dy("Africa"), fi[3]), StringEntry(dy("Oceania"), fi[4])], 0)
3027+ hL(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(hK(fa, 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)
3028+ }
3029+ $Tuple2([StringEntry(dz("Americas"), fh[0]), StringEntry(dz("Europe"), fh[1]), StringEntry(dz("Asia"), fh[2]), StringEntry(dz("Africa"), fh[3]), StringEntry(dz("Oceania"), fh[4])], 0)
30333030 }
30343031
30353032
30363033
3037-@Callable(gQ)
3038-func fixStakedPieces (cS) = if ((gQ.caller != dh))
3034+@Callable(gP)
3035+func fixStakedPieces (cT) = if ((gP.caller != di))
30393036 then throw("Access denied")
30403037 else {
3041- let le = if ((cS == ""))
3038+ let lc = if ((cT == ""))
30423039 then 0
30433040 else {
3044- let kX = getString(ar, dA(cS))
3045- let kT = if (isDefined(kX))
3046- then split_51C(value(kX), "_")
3041+ let kV = getString(aq, dB(cT))
3042+ let kR = if (isDefined(kV))
3043+ then split_51C(value(kV), "_")
30473044 else nil
3048- func mz (eX,R) = {
3049- let jy = value(assetInfo(fromBase58String(R)))
3050- let dO = split(jy.description, "_")[do]
3051- (eX + dN(dO))
3045+ func mx (eW,Q) = {
3046+ let jx = value(assetInfo(fromBase58String(Q)))
3047+ let dM = split(jx.description, "_")[dp]
3048+ (eW + dL(dM))
30523049 }
30533050
3054- let eZ = kT
3055- let fa = size(eZ)
3056- let fb = 0
3057- func fc (fd,fe) = if ((fe >= fa))
3058- then fd
3059- else mz(fd, eZ[fe])
3060-
3061- func ff (fd,fe) = if ((fe >= fa))
3062- then fd
3051+ let eY = kR
3052+ let eZ = size(eY)
3053+ let fa = 0
3054+ func fb (fc,fd) = if ((fd >= eZ))
3055+ then fc
3056+ else mx(fc, eY[fd])
3057+
3058+ func fe (fc,fd) = if ((fd >= eZ))
3059+ then fc
30633060 else throw("List size exceeds 100")
30643061
3065- ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 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)
3062+ fe(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fa, 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)
30663063 }
3067- $Tuple2([IntegerEntry(dB(cS), le)], le)
3064+ $Tuple2([IntegerEntry(dC(cT), lc)], lc)
30683065 }
30693066
30703067
30713068
3072-@Callable(gQ)
3073-func setCustomName (bv,kV,bz) = {
3074- let ls = lo(gQ)
3075- if ((size(gQ.payments) != 1))
3069+@Callable(gP)
3070+func setCustomName (bu,kT,by) = {
3071+ let lq = lm(gP)
3072+ if ((size(gP.payments) != 1))
30763073 then throw("Exactly one payment required")
30773074 else {
3078- let lt = value(gQ.payments[0])
3079- if ((lt.assetId != cD))
3075+ let lr = value(gP.payments[0])
3076+ if ((lr.assetId != cD))
30803077 then throw("Allowed USDT payment only!")
3081- else if ((lt.amount != ei))
3082- then throw(("Payment should be " + toString(ei)))
3083- else if (contains(kV, "__"))
3084- then throw(("Name should not contain '__': " + kV))
3085- else if ((size(kV) > ej))
3086- then throw(("Name too long, maxLength=" + toString(ej)))
3078+ else if ((lr.amount != eh))
3079+ then throw(("Payment should be " + toString(eh)))
3080+ else if (contains(kT, "__"))
3081+ then throw(("Name should not contain '__': " + kT))
3082+ else if ((size(kT) > ei))
3083+ then throw(("Name too long, maxLength=" + toString(ei)))
30873084 else {
3088- let d = toString(gQ.originCaller)
3089- let mA = {
3090- let cE = bz
3085+ let c = toString(gP.originCaller)
3086+ let my = {
3087+ let cE = by
30913088 if (("ACCOUNT" == cE))
30923089 then {
3093- let mB = eD(kV)
3094- let mC = getString(mB)
3095- if (isDefined(mC))
3096- then throw(("Name already registered: " + kV))
3090+ let mz = eC(kT)
3091+ let mA = getString(mz)
3092+ if (isDefined(mA))
3093+ then throw(("Name already registered: " + kT))
30973094 else {
3098- let mD = bH(d)
3099- let mE = getString(mD)
3100- let mF = if (isDefined(mE))
3101- then [DeleteEntry(eD(value(mE)))]
3095+ let mB = bG(c)
3096+ let mC = getString(mB)
3097+ let mD = if (isDefined(mC))
3098+ then [DeleteEntry(eC(value(mC)))]
31023099 else nil
3103- (((mF :+ StringEntry(mD, kV)) :+ StringEntry(mB, d)) ++ kl(d, ac)._1)
3100+ (((mD :+ StringEntry(mB, kT)) :+ StringEntry(mz, c)) ++ kk(c, ab)._1)
31043101 }
31053102 }
31063103 else if (("LAND" == cE))
31073104 then {
3108- let jy = value(assetInfo(fromBase58String(bv)))
3109- let jz = bx(bv)
3110- if (!(isDefined(getInteger(jz))))
3111- then throw((jy.name + " is not staked"))
3105+ let jx = value(assetInfo(fromBase58String(bu)))
3106+ let jy = bw(bu)
3107+ if (!(isDefined(getInteger(jy))))
3108+ then throw((jx.name + " is not staked"))
31123109 else {
3113- let jB = valueOrErrorMessage(getString(bu(bv)), (("NFT " + jy.name) + " is orphaned"))
3114- if ((jB != d))
3115- then throw((aG + " is not yours"))
3110+ let jA = valueOrErrorMessage(getString(bt(bu)), (("NFT " + jx.name) + " is orphaned"))
3111+ if ((jA != c))
3112+ then throw((aF + " is not yours"))
31163113 else {
3117- let mB = ew(kV)
3118- let mC = getString(mB)
3119- if (isDefined(mC))
3120- then throw(("Name already registered: " + kV))
3114+ let mz = ev(kT)
3115+ let mA = getString(mz)
3116+ if (isDefined(mA))
3117+ then throw(("Name already registered: " + kT))
31213118 else {
3122- let mG = bw(bv)
3123- let mE = getString(mG)
3124- let mF = if (isDefined(mE))
3125- then [DeleteEntry(ew(value(mE)))]
3119+ let mE = bv(bu)
3120+ let mC = getString(mE)
3121+ let mD = if (isDefined(mC))
3122+ then [DeleteEntry(ev(value(mC)))]
31263123 else nil
3127- (((mF :+ StringEntry(mG, kV)) :+ StringEntry(mB, bv)) ++ kl(d, ac)._1)
3124+ (((mD :+ StringEntry(mE, kT)) :+ StringEntry(mz, bu)) ++ kk(c, ab)._1)
31283125 }
31293126 }
31303127 }
31313128 }
31323129 else if (("DUCK" == cE))
31333130 then {
3134- let jy = value(assetInfo(fromBase58String(bv)))
3135- let jz = bx(bv)
3136- if (if (!(isDefined(getInteger(jz))))
3131+ let jx = value(assetInfo(fromBase58String(bu)))
3132+ let jy = bw(bu)
3133+ if (if (!(isDefined(getInteger(jy))))
31373134 then true
3138- else !(isDefined(getString(bN(d)))))
3139- then throw((jy.name + " is not staked"))
3135+ else !(isDefined(getString(bM(c)))))
3136+ then throw((jx.name + " is not staked"))
31403137 else {
3141- let jB = valueOrErrorMessage(getString(bM(bv)), (("NFT " + jy.name) + " is orphaned"))
3142- if ((jB != d))
3143- then throw((aH + " is not yours"))
3138+ let jA = valueOrErrorMessage(getString(bL(bu)), (("NFT " + jx.name) + " is orphaned"))
3139+ if ((jA != c))
3140+ then throw((aG + " is not yours"))
31443141 else {
3145- let mB = eC(kV)
3146- let mC = getString(mB)
3147- if (isDefined(mC))
3148- then throw(("Name already registered: " + kV))
3142+ let mz = eB(kT)
3143+ let mA = getString(mz)
3144+ if (isDefined(mA))
3145+ then throw(("Name already registered: " + kT))
31493146 else {
3150- let mG = bG(bv)
3151- let mE = getString(mG)
3152- let mF = if (isDefined(mE))
3153- then [DeleteEntry(eC(value(mE)))]
3147+ let mE = bF(bu)
3148+ let mC = getString(mE)
3149+ let mD = if (isDefined(mC))
3150+ then [DeleteEntry(eB(value(mC)))]
31543151 else nil
3155- (((mF :+ StringEntry(mG, kV)) :+ StringEntry(mB, bv)) ++ kf(bv, ac)._1)
3152+ (((mD :+ StringEntry(mE, kT)) :+ StringEntry(mz, bu)) ++ ke(bu, ab)._1)
31563153 }
31573154 }
31583155 }
31593156 }
31603157 else throw("Unknown entity type")
31613158 }
3162- $Tuple2(((mA :+ ScriptTransfer(di, lt.amount, cD)) ++ ls), 0)
3159+ $Tuple2(((my :+ ScriptTransfer(dj, lr.amount, cD)) ++ lq), 0)
31633160 }
31643161 }
31653162 }
31663163
31673164
31683165
3169-@Callable(gQ)
3170-func setReferrals (mH,mI) = if ((gQ.callerPublicKey != ef))
3166+@Callable(gP)
3167+func setReferrals (mF,mG) = if ((gP.callerPublicKey != ee))
31713168 then throw("Permission denied")
31723169 else {
3173- let ls = lo(gQ)
3174- if ((size(gQ.payments) != 0))
3170+ let lq = lm(gP)
3171+ if ((size(gP.payments) != 0))
31753172 then throw("No payments required")
3176- else if (!(isDefined(addressFromString(mH))))
3177- then throw(("Invalid address: " + mH))
3178- else if (!(isDefined(addressFromString(mI))))
3179- then throw(("Invalid address: " + mI))
3173+ else if (!(isDefined(addressFromString(mF))))
3174+ then throw(("Invalid address: " + mF))
3175+ else if (!(isDefined(addressFromString(mG))))
3176+ then throw(("Invalid address: " + mG))
31803177 else {
3181- let mJ = eE()
3182- let mK = getString(mJ)
3183- let mL = if (isDefined(mK))
3184- then split_4C(value(mK), "_")
3178+ let mH = eD()
3179+ let mI = getString(mH)
3180+ let mJ = if (isDefined(mI))
3181+ then split_4C(value(mI), "_")
31853182 else nil
3186- if (containsElement(mL, mI))
3187- then throw((mI + " is not newbie (already has referrals)"))
3183+ if (containsElement(mJ, mG))
3184+ then throw((mG + " is not newbie (already has referrals)"))
31883185 else {
3189- let kn = bI(mI)
3190- let ko = getString(kn)
3191- if (if (isDefined(ko))
3192- then isDefined(addressFromString(value(ko)))
3186+ let km = bH(mG)
3187+ let kn = getString(km)
3188+ if (if (isDefined(kn))
3189+ then isDefined(addressFromString(value(kn)))
31933190 else false)
3194- then throw(((mI + " already has refBy: ") + value(ko)))
3191+ then throw(((mG + " already has refBy: ") + value(kn)))
31953192 else {
3196- let mM = bL(mH)
3197- let mN = getString(mM)
3198- let mO = if (isDefined(mN))
3199- then split_4C(value(mN), "_")
3193+ let mK = bK(mF)
3194+ let mL = getString(mK)
3195+ let mM = if (isDefined(mL))
3196+ then split_4C(value(mL), "_")
32003197 else nil
3201- if (containsElement(mO, mI))
3202- then throw((((mH + " already contains ") + mI) + " within referrals"))
3198+ if (containsElement(mM, mG))
3199+ then throw((((mF + " already contains ") + mG) + " within referrals"))
32033200 else {
3204- let mP = makeString_2C((mO :+ mI), "_")
3205- let mQ = if (containsElement(mL, mH))
3206- then value(mK)
3207- else makeString_2C((mL :+ mH), "_")
3208- $Tuple2(([StringEntry(kn, mH), StringEntry(mM, mP), StringEntry(mJ, mQ)] ++ ls), 0)
3201+ let mN = makeString_2C((mM :+ mG), "_")
3202+ let mO = if (containsElement(mJ, mF))
3203+ then value(mI)
3204+ else makeString_2C((mJ :+ mF), "_")
3205+ $Tuple2(([StringEntry(km, mF), StringEntry(mK, mN), StringEntry(mH, mO)] ++ lq), 0)
32093206 }
32103207 }
32113208 }
32123209 }
32133210 }
32143211
32153212
32163213
3217-@Callable(gQ)
3218-func distributePoints (mR,mS,mT,mU,mV) = {
3219- let ls = lo(gQ)
3220- if ((size(gQ.payments) != 0))
3214+@Callable(gP)
3215+func distributePoints (mP,mQ,mR,mS,mT) = {
3216+ let lq = lm(gP)
3217+ if ((size(gP.payments) != 0))
32213218 then throw("No payments required")
32223219 else {
3223- let d = toString(gQ.originCaller)
3224- let mW = dH(invoke(dk, "checkWlgXpREADONLY", [d], nil))
3225- let mX = dF(mW[1])
3226- let mY = if ((0 >= mX))
3220+ let c = toString(gP.originCaller)
3221+ let mU = dI(invoke(dl, "checkWlgXpREADONLY", [c], nil))
3222+ let mV = dG(mU[1])
3223+ let mW = if ((0 >= mV))
32273224 then $Tuple2(0, nil)
32283225 else {
3229- let kg = dF(invoke(dk, "takeWlgXp", [d], nil))
3230- if ((kg == kg))
3231- then $Tuple2(mX, [IntegerEntry(J(d), dF(mW[0])), IntegerEntry(I(d), dF(mW[2]))])
3226+ let kf = dG(invoke(dl, "takeWlgXp", [c], nil))
3227+ if ((kf == kf))
3228+ then $Tuple2(mV, [IntegerEntry(I(c), dG(mU[0])), IntegerEntry(H(c), dG(mU[2]))])
32323229 else throw("Strict value is not equal to itself.")
32333230 }
3234- let mZ = mY._1
3235- let na = mY._2
3236- let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
3237- let nb = K(d)
3238- let nc = (valueOrElse(getInteger(nb), 0) + mZ)
3239- let nd = G(C)
3240- let ne = valueOrElse(getInteger(nd), 0)
3241- let nf = (nc + ne)
3242- let ng = ((((mR + mS) + mT) + mU) + mV)
3243- if ((ng > nf))
3244- then throw((("There are only " + toString(nf)) + " free points to distribute"))
3231+ let mX = mW._1
3232+ let mY = mW._2
3233+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
3234+ let mZ = J(c)
3235+ let na = (valueOrElse(getInteger(mZ), 0) + mX)
3236+ let nb = F(B)
3237+ let nc = valueOrElse(getInteger(nb), 0)
3238+ let nd = (na + nc)
3239+ let ne = ((((mP + mQ) + mR) + mS) + mT)
3240+ if ((ne > nd))
3241+ then throw((("There are only " + toString(nd)) + " free points to distribute"))
32453242 else {
3246- let nh = D(C)
3247- let au = split(valueOrElse(getString(nh), "0_0_0_0_0"), "_")
3248- let ni = (nc - ng)
3249- $Tuple2((([IntegerEntry(nb, if ((0 > ni))
3243+ let nf = C(B)
3244+ let at = split(valueOrElse(getString(nf), "0_0_0_0_0"), "_")
3245+ let ng = (na - ne)
3246+ $Tuple2((([IntegerEntry(mZ, if ((0 > ng))
32503247 then 0
3251- else ni), IntegerEntry(nd, if ((0 > ni))
3252- then (ne + ni)
3253- else ne), StringEntry(nh, makeString([toString((parseIntValue(au[m]) + mR)), toString((parseIntValue(au[n]) + mS)), toString((parseIntValue(au[o]) + mT)), toString((parseIntValue(au[p]) + mU)), toString((parseIntValue(au[q]) + mV))], "_"))] ++ ls) ++ na), 0)
3248+ else ng), IntegerEntry(nb, if ((0 > ng))
3249+ then (nc + ng)
3250+ else nc), StringEntry(nf, makeString([toString((parseIntValue(at[l]) + mP)), toString((parseIntValue(at[m]) + mQ)), toString((parseIntValue(at[n]) + mR)), toString((parseIntValue(at[o]) + mS)), toString((parseIntValue(at[p]) + mT))], "_"))] ++ lq) ++ mY), 0)
32543251 }
32553252 }
32563253 }
32573254
32583255
32593256
3260-@Callable(gQ)
3261-func splitByGlobalWeightsREADONLY (eO) = $Tuple2(nil, fg(eO))
3262-
3263-
3264-
3265-@Callable(gQ)
3266-func splitByGlobalAndLocalWeightsREADONLY (nj,nk,gT) = {
3267- let gM = gS(gT)
3268- $Tuple2(nil, $Tuple2(fg(nj), eR(nk, gM)))
3269- }
3270-
3271-
3272-
3273-@Callable(gQ)
3274-func getBackpackREADONLY (C) = $Tuple2(nil, makeString(hQ(bO(C)), ":"))
3275-
3276-
3277-
3278-@Callable(gQ)
3279-func getWarehouseREADONLY (R) = {
3280- let jy = value(assetInfo(fromBase58String(R)))
3281- let if = (dN(split(jy.description, "_")[do]) / cL)
3282- let ig = valueOrElse(getInteger(bE(R)), 0)
3283- $Tuple2(nil, makeString_2C(id(bD(R), if, ig), ":"))
3284- }
3285-
3286-
3287-
3288-@Callable(gQ)
3289-func saveLastTx () = if (!(containsElement([dk, di, dl, dm], gQ.caller)))
3257+@Callable(gP)
3258+func splitByGlobalWeightsREADONLY (eN) = $Tuple2(nil, ff(eN))
3259+
3260+
3261+
3262+@Callable(gP)
3263+func splitByGlobalAndLocalWeightsREADONLY (nh,ni,gS) = {
3264+ let gL = gR(gS)
3265+ $Tuple2(nil, $Tuple2(ff(nh), eQ(ni, gL)))
3266+ }
3267+
3268+
3269+
3270+@Callable(gP)
3271+func getBackpackREADONLY (B) = $Tuple2(nil, makeString(hP(bN(B)), ":"))
3272+
3273+
3274+
3275+@Callable(gP)
3276+func getWarehouseREADONLY (Q) = {
3277+ let jx = value(assetInfo(fromBase58String(Q)))
3278+ let ie = (dL(split(jx.description, "_")[dp]) / cM)
3279+ let if = valueOrElse(getInteger(bD(Q)), 0)
3280+ $Tuple2(nil, makeString_2C(ic(bC(Q), ie, if), ":"))
3281+ }
3282+
3283+
3284+
3285+@Callable(gP)
3286+func saveLastTx () = if (!(containsElement([dl, dj, dm, dn], gP.caller)))
32903287 then throw("Access denied")
3291- else $Tuple2(lo(gQ), 42)
3292-
3293-
3294-
3295-@Callable(gQ)
3296-func updateDuckStats (C,kg) = if ((gQ.caller != di))
3288+ else $Tuple2(lm(gP), 42)
3289+
3290+
3291+
3292+@Callable(gP)
3293+func updateDuckStats (B,kf) = if ((gP.caller != dj))
32973294 then throw("Access denied")
3298- else kf(C, kg)
3299-
3300-
3301-
3302-@Callable(gQ)
3303-func updateAccStats (d,kg) = if (!(containsElement([dk, di, dm], gQ.caller)))
3295+ else ke(B, kf)
3296+
3297+
3298+
3299+@Callable(gP)
3300+func updateAccStats (c,kf) = if (!(containsElement([dl, dj, dn], gP.caller)))
33043301 then throw("Access denied")
3305- else kl(d, kg)
3306-
3307-
3308-
3309-@Callable(gQ)
3310-func equipDuck (nl) = {
3311- let ls = lo(gQ)
3312- if ((size(gQ.payments) != 0))
3302+ else kk(c, kf)
3303+
3304+
3305+
3306+@Callable(gP)
3307+func equipDuck (nj) = {
3308+ let lq = lm(gP)
3309+ if ((size(gP.payments) != 0))
33133310 then throw("No payments required")
33143311 else {
3315- let d = toString(gQ.originCaller)
3316- let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
3317- if (kv(C))
3312+ let c = toString(gP.originCaller)
3313+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
3314+ if (ku(B))
33183315 then throw("equipDuck_checkTournament")
3319- else if (kw(C))
3316+ else if (kv(B))
33203317 then throw("equipDuck_checkDelivery")
33213318 else {
3322- let gD = H(C)
3323- let nm = split(valueOrElse(getString(gD), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3324- let hR = bO(C)
3325- let iu = hQ(hR)
3326- let lJ = split(nl, "_")
3327- if ((size(lJ) != s))
3319+ let gC = G(B)
3320+ let nk = split(valueOrElse(getString(gC), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3321+ let hQ = bN(B)
3322+ let it = hP(hQ)
3323+ let lH = split(nj, "_")
3324+ if ((size(lH) != r))
33283325 then throw("Wrong equipment string")
33293326 else {
3330- let gF = gs(nm, fD(iu[bq]), true, nil)
3331- let gG = split(lJ[r], ";")[1]
3332- let as = if ((gG == ""))
3327+ let gE = gr(nk, fC(it[bp]), true, nil)
3328+ let gF = split(lH[q], ";")[1]
3329+ let ar = if ((gF == ""))
33333330 then 0
33343331 else {
3335- let gH = split(gG, ",")[0]
3336- if ((gH == ""))
3332+ let gG = split(gF, ",")[0]
3333+ if ((gG == ""))
33373334 then 0
33383335 else {
3339- let fS = split(gH, ":")
3340- let dg = fS[0]
3341- let gI = fS[1]
3342- if (if (if (if (if ((dg == "06"))
3336+ let fR = split(gG, ":")
3337+ let dh = fR[0]
3338+ let gH = fR[1]
3339+ if (if (if (if (if ((dh == "06"))
33433340 then true
3344- else (dg == "07"))
3341+ else (dh == "07"))
33453342 then true
3346- else (dg == "08"))
3347- then (gI != "")
3343+ else (dh == "08"))
3344+ then (gH != "")
33483345 else false)
3349- then (parseIntValue(gI) > 0)
3346+ then (parseIntValue(gH) > 0)
33503347 else false)
3351- then parseIntValue(split(aY[parseIntValue(dg)], "_")[ba])
3348+ then parseIntValue(split(aX[parseIntValue(dh)], "_")[aZ])
33523349 else 0
33533350 }
33543351 }
3355- let gn = aq(this, C, as, true)
3356- let gJ = gs(lJ, gF, false, gn)
3357- let nn = fI(gJ)
3358- $Tuple2(([StringEntry(gD, nl), StringEntry(hR, makeString_2C([iu[bn], iu[bo], iu[bp], nn], ":")), StringEntry(N(C), makeString([toString(gn[7]), toString(gn[8]), toString(gn[9]), toString(gn[10]), toString(gn[11])], "_"))] ++ ls), 0)
3352+ let gm = ap(this, B, ar, true)
3353+ let gI = gr(lH, gE, false, gm)
3354+ let nl = fH(gI)
3355+ $Tuple2(([StringEntry(gC, nj), StringEntry(hQ, makeString_2C([it[bm], it[bn], it[bo], nl], ":")), StringEntry(M(B), makeString([toString(gm[7]), toString(gm[8]), toString(gm[9]), toString(gm[10]), toString(gm[11])], "_"))] ++ lq), 0)
33593356 }
33603357 }
33613358 }
33623359 }
33633360
33643361
33653362
3366-@Callable(gQ)
3367-func fortificateLand (R,no) = {
3368- let ls = lo(gQ)
3369- if ((size(gQ.payments) != 0))
3363+@Callable(gP)
3364+func fortificateLand (Q,nm) = {
3365+ let lq = lm(gP)
3366+ if ((size(gP.payments) != 0))
33703367 then throw("No payments required")
33713368 else {
3372- let d = toString(gQ.originCaller)
3373- let C = valueOrElse(getString(bN(d)), "")
3374- let fN = aq(this, C, 0, false)
3375- let np = bF(R)
3376- let nq = split(valueOrElse(getString(np), ":0_15:0_18:0"), "_")
3377- let jy = value(assetInfo(fromBase58String(R)))
3378- let if = (dN(split(jy.description, "_")[do]) / cL)
3379- let ig = valueOrElse(getInteger(bE(R)), 0)
3380- let ie = bD(R)
3381- let ij = id(ie, if, ig)
3382- let nr = split(ij[bi], "_")
3383- let ns = parseIntValue(nr[bk])
3384- let nt = parseIntValue(nr[bl])
3385- let nu = split(no, "_")
3386- let nv = gz(nq, fD(ij[bh]), ns, nt, true, nil)
3387- let gF = nv._1
3388- let nw = nv._2
3389- let nx = nv._3
3390- let ny = gz(nu, gF, nw, nx, false, fN)
3391- let gJ = ny._1
3392- let nz = ny._2
3393- let nA = ny._3
3394- let nn = fI(gJ)
3395- let ke = makeString([nr[bj], toString(nz), toString(nA), nr[bm]], "_")
3396- $Tuple2(([StringEntry(np, no), StringEntry(ie, makeString_2C([ij[be], ij[bf], ij[bg], nn, ke], ":"))] ++ ls), 0)
3397- }
3398- }
3399-
3400-
3401-
3402-@Callable(gQ)
3403-func initDuckTourAttempt (C) = if ((gQ.caller != dl))
3369+ let c = toString(gP.originCaller)
3370+ let B = valueOrElse(getString(bM(c)), "")
3371+ let fM = ap(this, B, 0, false)
3372+ let nn = bE(Q)
3373+ let no = split(valueOrElse(getString(nn), ":0_15:0_18:0"), "_")
3374+ let jx = value(assetInfo(fromBase58String(Q)))
3375+ let ie = (dL(split(jx.description, "_")[dp]) / cM)
3376+ let if = valueOrElse(getInteger(bD(Q)), 0)
3377+ let id = bC(Q)
3378+ let ii = ic(id, ie, if)
3379+ let np = split(ii[bh], "_")
3380+ let nq = parseIntValue(np[bj])
3381+ let nr = parseIntValue(np[bk])
3382+ let ns = split(nm, "_")
3383+ let nt = gy(no, fC(ii[bg]), nq, nr, true, nil)
3384+ let gE = nt._1
3385+ let nu = nt._2
3386+ let nv = nt._3
3387+ let nw = gy(ns, gE, nu, nv, false, fM)
3388+ let gI = nw._1
3389+ let nx = nw._2
3390+ let ny = nw._3
3391+ let nl = fH(gI)
3392+ let kd = makeString([np[bi], toString(nx), toString(ny), np[bl]], "_")
3393+ $Tuple2(([StringEntry(nn, nm), StringEntry(id, makeString_2C([ii[bd], ii[be], ii[bf], nl, kd], ":"))] ++ lq), 0)
3394+ }
3395+ }
3396+
3397+
3398+
3399+@Callable(gP)
3400+func initDuckTourAttempt (B) = if ((gP.caller != dm))
34043401 then throw("Access denied")
34053402 else {
3406- let jh = B(C)
3407- let ji = ak(valueOrElse(getInteger(F(C)), 0))
3408- let kA = valueOrElse(getInteger(jh), ji)
3409- let nB = bP(C)
3410- let jw = valueOrElse(getString(nB), aN)
3411- let ck = valueOrElse(getInteger(dl, bV), 0)
3412- let nC = (toString(ck) + "_T_0")
3413- $Tuple2([IntegerEntry(L(C), kA), IntegerEntry(jh, ji), StringEntry(M(C), jw), StringEntry(nB, nC)], nC)
3403+ let jg = A(B)
3404+ let jh = aj(valueOrElse(getInteger(E(B)), 0))
3405+ let kz = valueOrElse(getInteger(jg), jh)
3406+ let nz = bO(B)
3407+ let jv = valueOrElse(getString(nz), aM)
3408+ let cj = valueOrElse(getInteger(dm, bU), 0)
3409+ let nA = (toString(cj) + "_T_0")
3410+ $Tuple2([IntegerEntry(K(B), kz), IntegerEntry(jg, jh), StringEntry(L(B), jv), StringEntry(nz, nA)], nA)
34143411 }
34153412
34163413
34173414
3418-@Callable(gQ)
3415+@Callable(gP)
34193416 func breakAttempt () = {
3420- let ls = lo(gQ)
3421- let C = valueOrErrorMessage(getString(bN(toString(gQ.caller))), "You don't have a duck staked")
3422- let nB = bP(C)
3423- let jw = valueOrElse(getString(nB), aN)
3424- if ((split(jw, "_")[bs] != "T"))
3417+ let lq = lm(gP)
3418+ let B = valueOrErrorMessage(getString(bM(toString(gP.caller))), "You don't have a duck staked")
3419+ let nz = bO(B)
3420+ let jv = valueOrElse(getString(nz), aM)
3421+ if ((split(jv, "_")[br] != "T"))
34253422 then throw("Your duck is not in the tournament")
34263423 else {
3427- let kG = getIntegerValue(L(C))
3428- let kH = getStringValue(M(C))
3429- $Tuple2(((ls :+ IntegerEntry(B(C), kG)) :+ StringEntry(nB, kH)), jw)
3430- }
3431- }
3432-
3433-
3434-
3435-@Callable(gQ)
3436-func exitTournamentInternal (C) = if ((gQ.caller != this))
3424+ let nB = getIntegerValue(K(B))
3425+ let kF = getStringValue(L(B))
3426+ $Tuple2(((lq :+ IntegerEntry(A(B), nB)) :+ StringEntry(nz, kF)), jv)
3427+ }
3428+ }
3429+
3430+
3431+
3432+@Callable(gP)
3433+func exitTournamentInternal (B) = if ((gP.caller != this))
34373434 then throw("Access denied")
34383435 else {
3439- let kG = getIntegerValue(L(C))
3440- let kH = getStringValue(M(C))
3441- $Tuple2([IntegerEntry(B(C), kG), StringEntry(bP(C), kH)], false)
3436+ let nB = getIntegerValue(K(B))
3437+ let kF = getStringValue(L(B))
3438+ $Tuple2([IntegerEntry(A(B), nB), StringEntry(bO(B), kF)], false)
34423439 }
34433440
34443441
34453442
3446-@Callable(gQ)
3447-func exitDeliveryInternal (C) = if ((gQ.caller != this))
3443+@Callable(gP)
3444+func exitDeliveryInternal (B) = if ((gP.caller != this))
34483445 then throw("Access denied")
34493446 else {
3450- let mo = kx(C, false, 0, 0)
3451- $Tuple2((mo._1 ++ mo._2), false)
3447+ let mm = kw(B, false, 0, 0)
3448+ $Tuple2((mm._1 ++ mm._2), false)
34523449 }
34533450
34543451
34553452
3456-@Callable(gQ)
3457-func autoExitDelivery (C,jb,nD,ky) = if ((gQ.caller != this))
3453+@Callable(gP)
3454+func autoExitDelivery (B,ja,nC,kx) = if ((gP.caller != this))
34583455 then throw("Access denied")
34593456 else {
3460- let mo = kx(C, true, jb, ky)
3461- $Tuple2(mo._1, $Tuple2(mo._3, mo._4))
3457+ let mm = kw(B, true, ja, kx)
3458+ $Tuple2(mm._1, mm._3)
34623459 }
34633460
34643461
34653462
3466-@Callable(gQ)
3467-func prepareRobbery (iW,iX) = {
3468- let ls = lo(gQ)
3469- if (!(sigVerify_8Kb(iW, iX, ef)))
3463+@Callable(gP)
3464+func prepareRobbery (iV,iW) = {
3465+ let lq = lm(gP)
3466+ if (!(sigVerify_8Kb(iV, iW, ee)))
34703467 then throw("signature does not match")
3471- else if ((size(gQ.payments) != 1))
3468+ else if ((size(gP.payments) != 1))
34723469 then throw("exactly 1 payment must be attached")
34733470 else {
3474- let lt = gQ.payments[0]
3475- let nE = lt.amount
3476- if (if (!(isDefined(lt.assetId)))
3471+ let lr = gP.payments[0]
3472+ let nD = lr.amount
3473+ if (if (!(isDefined(lr.assetId)))
34773474 then true
3478- else (value(lt.assetId) != ds))
3475+ else (value(lr.assetId) != dt))
34793476 then throw("WLGOLD payments only!")
34803477 else {
3481- let fv = split(toUtf8String(iW), "|")
3482- if ((size(fv) != 2))
3478+ let fu = split(toUtf8String(iV), "|")
3479+ if ((size(fu) != 2))
34833480 then throw("Wrong message format")
34843481 else {
3485- let C = fv[0]
3486- if (kv(C))
3482+ let B = fu[0]
3483+ if (ku(B))
34873484 then throw("prepareRobbery_checkTournament")
3488- else if (kw(C))
3485+ else if (kv(B))
34893486 then throw("prepareRobbery_checkDelivery")
34903487 else {
3491- let aC = ay(this, C)._1
3492- if ((aC > nE))
3493- then throw(((("Payment " + toString(nE)) + " < required ") + toString(aC)))
3488+ let aB = ax(this, B)._1
3489+ if ((aB > nD))
3490+ then throw(((("Payment " + toString(nD)) + " < required ") + toString(aB)))
34943491 else {
3495- let nF = split(fv[1], "_")
3496- let aB = lastBlock.timestamp
3497- let aD = valueOrElse(getInteger(T(C)), 0)
3498- let aE = valueOrElse(getString(U(C)), "")
3499- let aF = valueOrElse(getInteger(S(aE)), 0)
3500- if (if ((aD != z))
3501- then (aF > aB)
3492+ let nE = split(fu[1], "_")
3493+ let aA = lastBlock.timestamp
3494+ let aC = valueOrElse(getInteger(S(B)), 0)
3495+ let aD = valueOrElse(getString(T(B)), "")
3496+ let aE = valueOrElse(getInteger(R(aD)), 0)
3497+ if (if ((aC != y))
3498+ then (aE > aA)
35023499 else false)
3503- then throw(("You already started robbing, wait till " + toString(aF)))
3500+ then throw(("You already started robbing, wait till " + toString(aE)))
35043501 else {
3505- func nG (eX,R) = {
3506- let nH = valueOrElse(getInteger(Q(R)), 0)
3507- let nI = valueOrElse(getInteger(S(R)), 0)
3508- if ((nH > size(w)))
3502+ func nF (eW,Q) = {
3503+ let nG = valueOrElse(getInteger(P(Q)), 0)
3504+ let nH = valueOrElse(getInteger(R(Q)), 0)
3505+ if ((nG > size(v)))
35093506 then throw("Invalid state")
3510- else if ((aB > nI))
3507+ else if ((aA > nH))
35113508 then {
3512- let nJ = valueOrElse(getInteger(bx(R)), 0)
3513- if ((0 >= nJ))
3514- then eX
3509+ let nI = valueOrElse(getInteger(bw(Q)), 0)
3510+ if ((0 >= nI))
3511+ then eW
35153512 else {
3516- let gx = value(assetInfo(fromBase58String(R)))
3517- let jC = split(gx.description, "_")
3518- let jo = dN(jC[do])
3519- let nK = jn(R, jo)
3520- let gW = (aB - nJ)
3521- let jF = fraction(gW, (nK * jo), a)
3522- if ((x > jF))
3523- then eX
3524- else (eX :+ R)
3513+ let gw = value(assetInfo(fromBase58String(Q)))
3514+ let jB = split(gw.description, "_")
3515+ let jn = dL(jB[dp])
3516+ let nJ = jm(Q, jn)
3517+ let gV = (aA - nI)
3518+ let jE = fraction(gV, (nJ * jn), a)
3519+ if ((w > jE))
3520+ then eW
3521+ else (eW :+ Q)
35253522 }
35263523 }
3527- else eX
3524+ else eW
35283525 }
35293526
3530- let nL = {
3531- let eZ = nF
3532- let fa = size(eZ)
3533- let fb = nil
3534- func fc (fd,fe) = if ((fe >= fa))
3535- then fd
3536- else nG(fd, eZ[fe])
3537-
3538- func ff (fd,fe) = if ((fe >= fa))
3539- then fd
3527+ let nK = {
3528+ let eY = nE
3529+ let eZ = size(eY)
3530+ let fa = nil
3531+ func fb (fc,fd) = if ((fd >= eZ))
3532+ then fc
3533+ else nF(fc, eY[fd])
3534+
3535+ func fe (fc,fd) = if ((fd >= eZ))
3536+ then fc
35403537 else throw("List size exceeds 10")
35413538
3542- ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
3539+ fe(fb(fb(fb(fb(fb(fb(fb(fb(fb(fb(fa, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
35433540 }
3544- if ((size(nL) == 0))
3541+ if ((size(nK) == 0))
35453542 then throw("No candidates for robbery")
35463543 else {
3547- let nM = dX(size(nL), height, (iX + gQ.transactionId))
3548- let R = nL[nM]
3549- $Tuple2(([IntegerEntry(Q(R), y), IntegerEntry(S(R), (aB + w[y])), IntegerEntry(T(C), A), StringEntry(U(C), R)] ++ ls), R)
3544+ let nL = dW(size(nK), height, (iW + gP.transactionId))
3545+ let Q = nK[nL]
3546+ $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (aA + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ lq), Q)
35503547 }
35513548 }
35523549 }
35533550 }
35543551 }
35553552 }
35563553 }
35573554 }
35583555
35593556
35603557
3561-@Callable(gQ)
3562-func robLand (iW,iX) = {
3563- let ls = lo(gQ)
3564- if (!(sigVerify_8Kb(iW, iX, ef)))
3558+@Callable(gP)
3559+func robLand (iV,iW) = {
3560+ let lq = lm(gP)
3561+ if (!(sigVerify_8Kb(iV, iW, ee)))
35653562 then throw("signature does not match")
35663563 else {
3567- let bR = toString(gQ.caller)
3568- let C = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
3569- let aB = lastBlock.timestamp
3570- $Tuple2((ls :+ IntegerEntry(O(C), aB)), 0)
3571- }
3572- }
3573-
3574-
3575-
3576-@Callable(gQ)
3577-func acceptDelivery () = if (!(cB))
3564+ let bQ = toString(gP.caller)
3565+ let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked")
3566+ let aA = lastBlock.timestamp
3567+ $Tuple2((lq :+ IntegerEntry(N(B), aA)), 0)
3568+ }
3569+ }
3570+
3571+
3572+
3573+@Callable(gP)
3574+func acceptDelivery () = if (!(cA))
35783575 then throw("Delivery feature is turned off!")
35793576 else {
3580- let ls = lo(gQ)
3581- let bR = toString(gQ.caller)
3582- let C = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
3583- let nN = valueOrElse(getInteger(di, bT), 0)
3584- let kE = valueOrElse(getInteger(di, bU), 0)
3585- if ((aQ > (nN - kE)))
3586- then throw(((("Delivery is not available, fund=" + dS(nN, 6)) + ", locked=") + dS(kE, 6)))
3577+ let lq = lm(gP)
3578+ let bQ = toString(gP.caller)
3579+ let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked")
3580+ let nM = valueOrElse(getInteger(dj, bS), 0)
3581+ let kD = valueOrElse(getInteger(dj, bT), 0)
3582+ if ((aP > (nM - kD)))
3583+ then throw(((("Delivery is not available, fund=" + dQ(nM, 6)) + ", locked=") + dQ(kD, 6)))
35873584 else {
3588- let aB = lastBlock.timestamp
3589- let nO = valueOrElse(getInteger(V(C)), 0)
3590- if ((nO > aB))
3591- then throw(("Delivery is forbidden for your duck until " + toString(nO)))
3585+ let aA = lastBlock.timestamp
3586+ let nN = valueOrElse(getInteger(U(B)), 0)
3587+ if ((nN > aA))
3588+ then throw(("Delivery is forbidden for your duck until " + toString(nN)))
35923589 else {
3593- let fX = valueOrElse(getInteger(W(bR)), 0)
3594- let nP = valueOrElse(getInteger(X(bR)), 0)
3595- let nQ = (aB / a)
3596- let nR = valueOrElse(getInteger(dm, e(bR)), 0)
3597- let nS = (aS + (nR / aT))
3598- if (if ((fX >= nS))
3599- then (nP >= nQ)
3590+ let fW = valueOrElse(getInteger(V(bQ)), 0)
3591+ let nO = valueOrElse(getInteger(W(bQ)), 0)
3592+ let nP = (aA / a)
3593+ let nQ = valueOrElse(getInteger(dn, d(bQ)), 0)
3594+ let nR = (aR + (nQ / aS))
3595+ if (if ((fW >= nR))
3596+ then (nO >= nP)
36003597 else false)
3601- then throw((("You already used " + toString(nS)) + " delivery attempts for today"))
3602- else if (kv(C))
3598+ then throw((("You already used " + toString(nR)) + " delivery attempts for today"))
3599+ else if (ku(B))
36033600 then throw("acceptDelivery_checkTournament")
3604- else if (kw(C))
3601+ else if (kv(B))
36053602 then throw("acceptDelivery_checkDelivery")
36063603 else {
3607- let nT = dF(invoke(di, "updateDeliveryLocked", [(kE + aQ)], nil))
3608- let jh = B(C)
3609- let ji = ak(valueOrElse(getInteger(F(C)), 0))
3610- let kA = valueOrElse(getInteger(jh), ji)
3611- let nB = bP(C)
3612- let jw = valueOrElse(getString(nB), aN)
3613- let nU = (toString(aB) + "_D_0")
3614- $Tuple2(([IntegerEntry(L(C), kA), IntegerEntry(jh, ji), StringEntry(M(C), jw), StringEntry(nB, nU)] ++ ls), $Tuple2(nU, nT))
3604+ let nS = dG(invoke(dj, "updateDeliveryLocked", [(kD + aP)], nil))
3605+ let nz = bO(B)
3606+ let jv = valueOrElse(getString(nz), aM)
3607+ let nT = (toString(aA) + "_D_0")
3608+ $Tuple2(([StringEntry(L(B), jv), StringEntry(nz, nT)] ++ lq), $Tuple2(nT, nS))
36153609 }
36163610 }
36173611 }
36183612 }
36193613
36203614

github/deemru/w8io/169f3d6 
1618.98 ms