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