tx · 7YtfLVRpbiGN3Dc1uuTqV9RS47mUbvj6fWrGgoCDQrSV 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm: -0.10100000 Waves 2024.09.12 19:15 [3280649] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves
{ "type": 13, "id": "7YtfLVRpbiGN3Dc1uuTqV9RS47mUbvj6fWrGgoCDQrSV", "fee": 10100000, "feeAssetId": null, "timestamp": 1726157502292, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "5uRZtTwVfKpPcY6swos5YJC233KhFBDBHunL5qkt7378VnUFRqRF7UewHJv6hjv6C8MzAPMDVMhhvuXYGRYf57L5" ], "script": "base64:BgLlAQgCEgMKAQgSBAoCCAESAwoBBBIAEgMKAQgSBAoCCAgSBAoCCAgSAwoBCBIAEgMKAQgSBAoCCAgSBAoCCAgSBAoCAQgSBAoCAQgSBAoCAgISBQoDAQEBEgASBAoCCAgSABIDCgEBEgASBAoCAgISABIDCgEIEgQKAggIEgMKARgSBAoCCAgSBAoCCAgSBQoDCAgIEgQKAggIEgcKBQEBAQEBEgMKAQESBQoDAQEIEgMKAQgSAwoBCBIAEgQKAggBEgQKAggBEgMKAQgSAwoBCBIAEgASAwoBCBIDCgEIEgQKAgICEgCeAgAWS1NfU0VQQVJBVEVfUFVCTElDX0tFWQcAGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQcAE0tTX0FMTE9XX1JPQk9fRFVDS1MHAApEQVlfTUlMTElTAIC4mSkABWNoYWluCQDJAQIJAMoBAggFBHRoaXMFYnl0ZXMAAQABAANwdWIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDADBRZLU19TRVBBUkFURV9QVUJMSUNfS0VZASCrF1ePFWfjWVRBsNZy62abxKPTZl7VmYZQ35g3H7IJCAEgT1PiGj9UqNadUk4THUYnVb2zU/Mse8lUVLD/Q8G0FCgDCQAAAgEBVAUHJG1hdGNoMAEgT1PiGj9UqNadUk4THUYnVb2zU/Mse8lUVLD/Q8G0FCgJAAIBAg1Vbmtub3duIGNoYWluAAt1c2R0QXNzZXRJZAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAEghNp6sggDP07Ru8qO7ouTvMmC3Qtd+geWqNQj+agP/7kDCQAAAgEBVAUHJG1hdGNoMAEgVbHYn3KHgu/l41uNrAWrZd6aQ6EvFrsF8xq3h6XxxRgJAAIBAg1Vbmtub3duIGNoYWluABVkZWZhdWx0UmVzdEFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQUUN1dkZidmg0TGtQVW5yblUxejNqbmJBMXA5bTNXTmh2AwkAAAIBAVQFByRtYXRjaDACIzNNdW1rR0d6dENLQVhwV0RxeGtkZG9mcVhTVWJxUWt2U0p5CQACAQINVW5rbm93biBjaGFpbgAQYWNyZXMyQWRkcmVzc1N0cgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAIjM1A0VUgzVDluWHBNTnBVbVNtUWpQbUV6M0c4NXQzem42ZUEDCQAAAgEBVAUHJG1hdGNoMAIjM05CUHgxRmNpdTNKUU5FR1oyMWpTblRkdXRMTkdHQlVTWGgJAAIBAg1Vbmtub3duIGNoYWluABFJbmZyYVVwZ3JhZGVDb3N0UwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAyK+gJQMJAAACAQFUBQckbWF0Y2gwAIDC1y8JAAIBAg1Vbmtub3duIGNoYWluAA5hcmJpdHJhZ2VEZWxheQQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAUKREFZX01JTExJUwMJAAACAQFUBQckbWF0Y2gwAODUAwkAAgECDVVua25vd24gY2hhaW4AA1NFUAICX18ABU1VTFQ2AMCEPQAFTVVMVDgAgMLXLwAFU1NJWkUAGQAFTVNJWkUAZAAFTFNJWkUA4QEABlhMU0laRQCQAwAHWFhMU0laRQDxBAAFSVRFUjYJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUFA25pbAEPZ2V0U3RyaW5nT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgAAEUlkeENmZ1N0YWtpbmdEYXBwAAEAEUlkeENmZ0Vjb25vbXlEYXBwAAIAFElkeENmZ0dvdmVybmFuY2VEYXBwAAMADUlkeENmZ1dsZ0RhcHAABAAUSWR4Q2ZnVG91cm5hbWVudERhcHAABwAPSWR4Q2ZnQWNyZXNEYXBwAAgBCmtleVJlc3RDZmcAAg4lc19fcmVzdENvbmZpZwEOa2V5UmVzdEFkZHJlc3MAAgwlc19fcmVzdEFkZHIBEXJlYWRSZXN0Q2ZnT3JGYWlsAQRyZXN0CQC8CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQRyZXN0CQEKa2V5UmVzdENmZwAFA1NFUAEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgdyZXN0Q2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHcmVzdENmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgADHJlc3RDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5UmVzdEFkZHJlc3MABRVkZWZhdWx0UmVzdEFkZHJlc3NTdHIAB3Jlc3RDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDHJlc3RDb250cmFjdAAPc3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnU3Rha2luZ0RhcHAAD2Vjb25vbXlDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ0Vjb25vbXlEYXBwAAtnb3ZDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ0dvdmVybmFuY2VEYXBwAAt3bGdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFDUlkeENmZ1dsZ0RhcHAAEnRvdXJuYW1lbnRDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ1RvdXJuYW1lbnREYXBwAA1hY3Jlc0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUPSWR4Q2ZnQWNyZXNEYXBwAApyZWNMYW5kTnVtAAAAC3JlY0xhbmRTaXplAAEAC3JlY1RlcnJhaW5zAAIADHJlY0NvbnRpbmVudAADAA13bGdBc3NldElkS2V5Agt3bGdfYXNzZXRJZAAKd2xnQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFC3dsZ0NvbnRyYWN0BQ13bGdBc3NldElkS2V5AhhXTEdPTEQgaXMgbm90IGlzc3VlZCB5ZXQAD2FjcmVzQXNzZXRJZEtleQIMYWNyZXNBc3NldElkAAxhY3Jlc0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQ1hY3Jlc0NvbnRyYWN0BQ9hY3Jlc0Fzc2V0SWRLZXkCF0FDUkVTIGlzIG5vdCBpc3N1ZWQgeWV0AAtyYW5kb21EZWxheQACAQlrZXlDb21taXQBB2FkZHJlc3MJAKwCAgIPZmluaXNoQmxvY2tGb3JfBQdhZGRyZXNzARFrZXlSZXNQcm9wb3J0aW9ucwACE3Jlc1R5cGVzUHJvcG9ydGlvbnMBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBCWNvbnRpbmVudAkArAICAhRyZXNUeXBlc0J5Q29udGluZW50XwUJY29udGluZW50ARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBCW93bmVyQWRkcgkArAICAhNzdGFrZWRMYW5kc0J5T3duZXJfBQlvd25lckFkZHIBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBCW93bmVyQWRkcgkArAICAhRzdGFrZWRQaWVjZXNCeU93bmVyXwUJb3duZXJBZGRyAQhhc1N0cmluZwEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBbgUHJG1hdGNoMAUBbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEJYXNBbnlMaXN0AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACCUxpc3RbQW55XQQBbAUHJG1hdGNoMAUBbAkAAgECG2ZhaWwgdG8gY2FzdCBpbnRvIExpc3RbQW55XQEJYXNCb29sZWFuAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAXMFByRtYXRjaDAFAXMJAAIBAhlmYWlsIHRvIGNhc3QgaW50byBCb29sZWFuAQ9udW1QaWVjZXNCeVNpemUBCGxhbmRTaXplBAckbWF0Y2gwBQhsYW5kU2l6ZQMJAAACAgFTBQckbWF0Y2gwBQVTU0laRQMJAAACAgFNBQckbWF0Y2gwBQVNU0laRQMJAAACAgFMBQckbWF0Y2gwBQVMU0laRQMJAAACAgJYTAUHJG1hdGNoMAUGWExTSVpFAwkAAAICA1hYTAUHJG1hdGNoMAUHWFhMU0laRQkAAgECEVVua25vd24gbGFuZCBzaXplAQdpc0RpZ2l0AQFzCQEJaXNEZWZpbmVkAQkAtgkBBQFzAQprZXlCbG9ja2VkAAIQY29udHJhY3RzQmxvY2tlZAERa2V5TGFzdFR4SWRCeVVzZXIBBGFkZHIJAKwCAgIPbGFzdFR4SWRCeVVzZXJfBQRhZGRyAQpmaXhlZFBvaW50AgN2YWwIZGVjaW1hbHMEBnRlblBvdwkAbAYACgAABQhkZWNpbWFscwAAAAAFBERPV04EB2xvd1BhcnQJAKQDAQkAagIFA3ZhbAUGdGVuUG93BAZ6ZXJvZXMJALACAgkApAMBBQZ0ZW5Qb3cJAGQCAAEJALECAQUHbG93UGFydAkArAICCQCsAgIJAKwCAgkApAMBCQBpAgUDdmFsBQZ0ZW5Qb3cCAS4FBnplcm9lcwUHbG93UGFydAEPZ2V0UmFuZG9tTnVtYmVyAwhtYXhWYWx1ZQRzYWx0B2VudHJvcHkDCQBnAgAABQhtYXhWYWx1ZQkAAgECFm1heFZhbHVlIHNob3VsZCBiZSA+IDAECnJhbmRvbUhhc2gJAPcDAQkAywECBQRzYWx0BQdlbnRyb3B5CQBqAgkAsQkBBQpyYW5kb21IYXNoBQhtYXhWYWx1ZQEJZmluYWxUaW1lAAkAlwMBCQDMCAIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIAmNCBq6QyBQNuaWwACkxBTkRQUkVGSVgCBExBTkQACkRVQ0tQUkVGSVgCBERVQ0sAC1JPQk9fUFJFRklYAgRST0JPAApBUlRQUkVTQUxFAgdQUkVTQUxFAAZOVU1SRVMABgAYTUFYX0xBTkRTX1NUQUtFRF9CWV9VU0VSABkAD0RBSUxZUkVTQllQSUVDRQCA+NIBAAxXSE1VTFRJUExJRVIAgMivoCUAD0RFRkFVTFRMT0NBVElPTgIPQWZyaWNhX0ZfQWZyaWNhABBSRVNPVVJDRVBSSUNFTUlOANW1AgAKRVNTRUxMQ09FRgAKABVNSU5fVVNEVF9GRUVfREVMSVZFUlkA0IYDABVVU0RUMkFDUkVTX01VTFRJUExJRVIACgASTUlOX1dMR09MRF9ST0JCRVJZAIDC1y8AFkFMTE9XRURfRlJFRV9ST0JCRVJJRVMAAAAZQUNSRVNfRk9SX1JPQkJFUllfQVRURU1QVACAhK9fABdBTExPV0VEX0ZSRUVfREVMSVZFUklFUwAAABpBQ1JFU19GT1JfREVMSVZFUllfQVRURU1QVACAhK9fAAlwcm9kVHlwZXMJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMQkAzAgCAhBGaXJzdCBBaWQgS2l0IEwyCQDMCAICEEZpcnN0IEFpZCBLaXQgTDMJAMwIAgILQmFja3BhY2sgTDEJAMwIAgILQmFja3BhY2sgTDIJAMwIAgILQmFja3BhY2sgTDMJAMwIAgIORm9vZCBSYXRpb24gTDEJAMwIAgIORm9vZCBSYXRpb24gTDIJAMwIAgIORm9vZCBSYXRpb24gTDMJAMwIAgILSmV0IFBhY2sgTDEJAMwIAgILSmV0IFBhY2sgTDIJAMwIAgILSmV0IFBhY2sgTDMJAMwIAgIJU2hpZWxkIEwxCQDMCAICCVNoaWVsZCBMMgkAzAgCAglTaGllbGQgTDMJAMwIAgIHTWluZSBMMQkAzAgCAgdNaW5lIEwyCQDMCAICB01pbmUgTDMJAMwIAgIHVHJhcCBMMQkAzAgCAgdUcmFwIEwyCQDMCAICB1RyYXAgTDMJAMwIAgILQm9vbS1Eb2cgTDEJAMwIAgILQm9vbS1Eb2cgTDIJAMwIAgILQm9vbS1Eb2cgTDMFA25pbAAKY29udGluZW50cwkAzAgCAghBbWVyaWNhcwkAzAgCAgZFdXJvcGUJAMwIAgIEQXNpYQkAzAgCAgZBZnJpY2EJAMwIAgIHT2NlYW5pYQUDbmlsAAlDT0VGRjJNQVQAgK3iBAAQcHJvZHVjdGlvbk1hdHJpeAkAzAgCAiU4XzhfOF8xN18xN180Ml8xMl8wXzMwXzAsMCwwLDAsMCwwLDBfCQDMCAICJThfOF84XzE3XzE3XzQyXzI0XzBfNjBfMCwwLDUsMiwwLDAsMF8JAMwIAgInOF84XzhfMTdfMTdfNDJfMzZfMF8xMjBfMCwwLDEwLDQsMCwwLDBfCQDMCAICKThfMTlfMTlfOF8yN18xOV8yNl8xXzIwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICKThfMTlfMTlfOF8yN18xOV81Ml8xXzQwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICKThfMTlfMTlfOF8yN18xOV83OF8xXzgwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICJThfOF84XzhfOF82MF8xM18yXzJfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzI2XzJfNF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAiU4XzhfOF84XzhfNjBfMzlfMl84XzAsMCwwLDAsMCwwLDBfMDExCQDMCAICKTMwXzMwXzNfMTdfMTdfM18zMF8zXzMwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKTMwXzMwXzNfMTdfMTdfM182MF8zXzUwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKTMwXzMwXzNfMTdfMTdfM185MF8zXzcwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzExXzRfMTBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMjJfNF8yMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8zM180XzMwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKjRfMTNfMjJfNF8zNV8yMl8yM18wXzUwLDEsMF8wLDAsMCwwLDAsMCwwXwkAzAgCAio0XzEzXzIyXzRfMzVfMjJfNDZfMF81MCwxLDFfMCwyLDUsMCwwLDAsMF8JAMwIAgIrNF8xM18yMl80XzM1XzIyXzY5XzBfNTAsMiwxXzAsNSwxMCwwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfMjBfMV8zMCwxLDFfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzQwXzFfMzAsMSwyXzIsMSwzLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV82MF8xXzMwLDEsM181LDIsOCwwLDAsMCwwXwkAzAgCAicyM18yM181XzIwXzIzXzZfMzVfMl8xMDBfMCwwLDAsMCwwLDAsMF8JAMwIAgInMjNfMjNfNV8yMF8yM182XzcwXzJfMTUwXzAsMCwwLDAsMCwwLDBfCQDMCAICKDIzXzIzXzVfMjBfMjNfNl8xMDVfMl8yMDBfMCwwLDAsMCwwLDAsMF8FA25pbAAJcklkeENvZWZmAAYACnJJZHhFZmZlY3QACAAQcklkeFJlcXVpcmVtZW50cwAJAAlySWR4U2xvdHMACgAOUFJPRFVDVFBLR1NJWkUACgALd2hJZHhMZXZlbHMAAAAId2hJZHhSZXMAAQAId2hJZHhNYXQAAgAJd2hJZHhQcm9kAAMACXdoSWR4TE9GVAAEAAl2b2xMb2NrZWQAAAALdm9sT2NjdXBpZWQAAQAHdm9sRnJlZQACAAh2b2xUb3RhbAADAApicElkeExldmVsAAAACGJwSWR4UmVzAAEACGJwSWR4TWF0AAIACWJwSWR4UHJvZAADAA9sb2NJZHhDb250aW5lbnQAAAAKbG9jSWR4VHlwZQABAAhsb2NJZHhJZAACARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIDbm9fBQdhc3NldElkARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEHYXNzZXRJZAkArAICAgVsY25hXwUHYXNzZXRJZAEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgNzdF8FB2Fzc2V0SWQBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgR0eXBlB2Fzc2V0SWQJALkJAgkAzAgCAgNsYXMJAMwIAgUEdHlwZQkAzAgCBQdhc3NldElkBQNuaWwCAV8BImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDB25mdFR5cGUHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgZzdHRhb18FB25mdFR5cGUCAV8FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgESa2V5V2FyZWhvdXNlQnlMYW5kAQtsYW5kQXNzZXRJZAkArAICAgN3aF8FC2xhbmRBc3NldElkARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQdhc3NldElkCQCsAgICC2luZnJhTGV2ZWxfBQdhc3NldElkARprZXlEdWNrQXNzZXRJZFRvQ3VzdG9tTmFtZQEHYXNzZXRJZAkArAICAhhkdWNrQ3VzdG9tTmFtZUJ5QXNzZXRJZF8FB2Fzc2V0SWQBFmtleUFkZHJlc3NUb0N1c3RvbU5hbWUBBGFkZHIJAKwCAgIYYWNjb3VudEN1c3RvbU5hbWVCeUFkZHJfBQRhZGRyAQ9rZXlBZGRyZXNzUmVmQnkBBGFkZHIJAKwCAgIJYWNjUmVmQnlfBQRhZGRyARxrZXlPbmJvYXJkQXJ0QWN0aXZhdGVkT25EdWNrAQtkdWNrQXNzZXRJZAkArAICAhpvbmJvYXJkQXJ0QWN0aXZhdGVkT25EdWNrXwULZHVja0Fzc2V0SWQBHGtleU9uYm9hcmRBcnREdWNrQWN0aXZhdGVkQnkBBGFkZHIJAKwCAgIab25ib2FyZEFydEFjdGl2YXRlZER1Y2tCeV8FBGFkZHIBE2tleUFkZHJlc3NSZWZlcnJhbHMBBGFkZHIJAKwCAgINYWNjUmVmZXJyYWxzXwUEYWRkcgEQa2V5RHVja0lkVG9Pd25lcgEHYXNzZXRJZAkArAICAgpkdWNrT3duZXJfBQdhc3NldElkARRrZXlTdGFrZWREdWNrQnlPd25lcgEJb3duZXJBZGRyCQCsAgICEnN0YWtlZER1Y2tCeU93bmVyXwUJb3duZXJBZGRyARFrZXlCYWNrcGFja0J5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIJYmFja1BhY2tfBQtkdWNrQXNzZXRJZAEPa2V5RHVja0xvY2F0aW9uAQtkdWNrQXNzZXRJZAkArAICAg1kdWNrTG9jYXRpb25fBQtkdWNrQXNzZXRJZAEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQh1c2VyQWRkcgkArAICAholcyVzX191c2VyR3dsUmVsZWFzZVRpbWVfXwUIdXNlckFkZHIBDmtleUVzV2FyZWhvdXNlAAIaZW1lcmdlbmN5V2FyZWhvdXNlUHJvZHVjdHMAD2RlbGl2ZXJ5RnVuZEtleQIMZGVsaXZlcnlGdW5kAA1sYXN0VG91cklkS2V5Ag4lc19fbGFzdFRvdXJJZAEVa2V5VG91clN0YXRpY0RhdGFCeUlkAQN0SWQJAKwCAgIWJXMlZF9fdG91clN0YXRpY0RhdGFfXwkApAMBBQN0SWQBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBA3RJZAkArAICAhclcyVkX190b3VyRHluYW1pY0RhdGFfXwkApAMBBQN0SWQBGmtleUJlc3RSZXN1bHRCeVRvdXJBbmREdWNrAgN0SWQLZHVja0Fzc2V0SWQJALkJAgkAzAgCAh8lcyVkJXNfX2Jlc3RSZXN1bHRCeVRvdXJBbmREdWNrCQDMCAIJAKQDAQUDdElkCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwCAl9fAAlpZHhTdGF0aWMAAAAKaWR4RHluYW1pYwABAAp0U3RhdGljRW5kAAYADnREeW5hbWljU3RhdHVzAAEBC2dldFRvdXJEYXRhAgx0b3VyQ29udHJhY3QDdElkBAZzdGF0aWMJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDHRvdXJDb250cmFjdAkBFWtleVRvdXJTdGF0aWNEYXRhQnlJZAEFA3RJZAkArAICCQCsAgICGUVycm9yIHJlYWRpbmcgdG91cm5hbWVudCAJAKQDAQUDdElkAgUgZGF0YQICX18EB2R5bmFtaWMJALwJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDHRvdXJDb250cmFjdAkBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBBQN0SWQJAKwCAgkArAICAhlFcnJvciByZWFkaW5nIHRvdXJuYW1lbnQgCQCkAwEFA3RJZAIFIGRhdGECAl9fCQDMCAIFBnN0YXRpYwkAzAgCBQdkeW5hbWljBQNuaWwBDmlzSW5Ub3VybmFtZW50Agx0b3VyQ29udHJhY3QIbG9jYXRpb24EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQx0b3VyQ29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQDbG9jCQC1CQIFCGxvY2F0aW9uAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUMdG91ckNvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljAwMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAVQJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAcJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcBCW9uTWlzc2lvbgIMdG91ckNvbnRyYWN0CGxvY2F0aW9uBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMdG91ckNvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFDHRvdXJDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwQHbG9jVHlwZQkAkQMCBQNsb2MFCmxvY0lkeFR5cGUDAwMJAAACCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBVAkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFD2xvY0lkeENvbnRpbmVudAUGbGFzdElkBwkAAAIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MHCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbm93BwESZ2V0UmVjaXBlTWF0ZXJpYWxzAQZyZWNpcGUJAGgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGcmVjaXBlBQlySWR4Q29lZmYFCUNPRUZGMk1BVAEMY2hlYXRBdHRlbXB0AwZvbGRMb2MGbmV3TG9jCWNoZWF0Q2FzZQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhZDaGVhdCBhdHRlbXB0OiBvbGRMb2M9BQZvbGRMb2MCCSwgbmV3TG9jPQUGbmV3TG9jAgcsIGNhc2U9CQCkAwEFCWNoZWF0Q2FzZQAGU0NBTEU4AIDC1y8ADHhwTGV2ZWxTY2FsZQCAGQAPeHBMZXZlbFJlY2lwUG93AKAfABJudW1Qb2ludHNPbkxldmVsVXAAAwAMcmVxdWlyZW1lbnRzCQDMCAICCFN0cmVuZ3RoCQDMCAICCEFjY3VyYWN5CQDMCAICCUludGVsbGVjdAkAzAgCAglFbmR1cmFuY2UJAMwIAgIJRGV4dGVyaXR5CQDMCAICBUxldmVsCQDMCAICBkhlYWx0aAUDbmlsAAxjaGFyU3RyZW5ndGgAAAAMY2hhckFjY3VyYWN5AAEADWNoYXJJbnRlbGxlY3QAAgANY2hhckVuZHVyYW5jZQADAA1jaGFyRGV4dGVyaXR5AAQAC3NlZ0JhY2twYWNrAAAAC05VTVNFR01FTlRTAAYACk5VTU1BSU5BVVgAAgAITUFYU0xPVFMAAgANTUFYUFJPRElOU0xPVAAeAQ1rZXlEdWNrSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgtkdWNrSGVhbHRoXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tDaGFycwELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0NoYXJzXwULZHVja0Fzc2V0SWQBCWtleUR1Y2tYUAELZHVja0Fzc2V0SWQJAKwCAgIHZHVja1hQXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tMZXZlbAELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0xldmVsXwULZHVja0Fzc2V0SWQBEWtleUR1Y2tGcmVlUG9pbnRzAQtkdWNrQXNzZXRJZAkArAICAg9kdWNrRnJlZVBvaW50c18FC2R1Y2tBc3NldElkARBrZXlEdWNrRXF1aXBtZW50AQtkdWNrQXNzZXRJZAkArAICAg5kdWNrRXF1aXBtZW50XwULZHVja0Fzc2V0SWQBCWtleVVzZXJYUAEEYWRkcgkArAICAgd1c2VyWFBfBQRhZGRyAQxrZXlVc2VyTGV2ZWwBBGFkZHIJAKwCAgIKdXNlckxldmVsXwUEYWRkcgERa2V5VXNlckZyZWVQb2ludHMBBGFkZHIJAKwCAgIPdXNlckZyZWVQb2ludHNfBQRhZGRyAQ5rZXlTYXZlZEhlYWx0aAELZHVja0Fzc2V0SWQJAKwCAgIMc2F2ZWRIZWFsdGhfBQtkdWNrQXNzZXRJZAEQa2V5U2F2ZWRMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgIOc2F2ZWRMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQxrZXlEdWNrQnVmZnMBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tCdWZmc18FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5VGltZV8FC2R1Y2tBc3NldElkARNrZXlEdWNrUm9iYmVyeUNvdW50AQtkdWNrQXNzZXRJZAkArAICAhh0b3RhbFJvYmJlcnlDb3VudEJ5RHVja18FC2R1Y2tBc3NldElkARNrZXlVc2VyUm9iYmVyeUNvdW50AQRhZGRyCQCsAgICEXVzZXJSb2JiZXJ5Q291bnRfBQRhZGRyARVrZXlVc2VyTGFzdFJvYmJlcnlEYXkBBGFkZHIJAKwCAgITdXNlckxhc3RSb2JiZXJ5RGF5XwUEYWRkcgEUa2V5RHVja0RlbGl2ZXJ5Q291bnQBC2R1Y2tBc3NldElkCQCsAgICGXRvdGFsRGVsaXZlcnlDb3VudEJ5RHVja18FC2R1Y2tBc3NldElkARRrZXlVc2VyRGVsaXZlcnlDb3VudAEEYWRkcgkArAICAhJ1c2VyRGVsaXZlcnlDb3VudF8FBGFkZHIBFmtleVVzZXJMYXN0RGVsaXZlcnlEYXkBBGFkZHIJAKwCAgIUdXNlckxhc3REZWxpdmVyeURheV8FBGFkZHIAB3hwQ2xhaW0AkE4AD3hwU3VjY2Vzc0ZsaWdodACQTgAMeHBGYWlsRmxpZ2h0ANAPAAx4cFN1Y2Nlc3NSb2IAkE4ACXhwRmFpbFJvYgDQDwAIeHBDYWxsRVMAoI0GAAx4cEN1c3RvbU5hbWUAwIQ9AAp4cE5ld1NMYW5kAMCWsQIADnhwVXBncmFkZUluZnJhAJBOAAd4cE1lcmdlAMCEPQAJeHBPbmJvYXJkAMCEPQAGeHBIZWFsAJBOAQlsZXZlbEJ5WFABAnhwCQBrAwUMeHBMZXZlbFNjYWxlCQBsBgUCeHAABAUPeHBMZXZlbFJlY2lwUG93AAQABAUERE9XTgUGU0NBTEU4AQltYXhIZWFsdGgBBWxldmVsCQBkAgBkBQVsZXZlbAEHbGV2ZWxVcAIJY3VyckxldmVsBW5ld1hQBAhuZXdMZXZlbAkBCWxldmVsQnlYUAEFBW5ld1hQCQDMCAIFCG5ld0xldmVsCQDMCAIJAGgCBRJudW1Qb2ludHNPbkxldmVsVXAJAGUCBQhuZXdMZXZlbAUJY3VyckxldmVsBQNuaWwBDGdldER1Y2tTdGF0cwQPc3Rha2luZ0NvbnRyYWN0C2R1Y2tBc3NldElkCmJ1ZmZFZmZlY3QKZm9yY2VCdWZmcwQFY2hhcnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrQ2hhcnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wAgFfBANsdmwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQGaGVhbHRoCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAkBCW1heEhlYWx0aAEFA2x2bAQKc3RhdGVCdWZmcwkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzACAV8JAM4IAgkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJTdHJlbmd0aAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJBY2N1cmFjeQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJJbnRlbGxlY3QJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRW5kdXJhbmNlCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckRleHRlcml0eQkAzAgCBQNsdmwJAMwIAgUGaGVhbHRoBQNuaWwDBQpmb3JjZUJ1ZmZzCQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAUDbmlsCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQxjaGFyU3RyZW5ndGgJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDGNoYXJBY2N1cmFjeQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUNY2hhckludGVsbGVjdAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUNY2hhckVuZHVyYW5jZQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUNY2hhckRleHRlcml0eQUDbmlsAAlEQVlNSUxMSVMAgLiZKQEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBGFkZHIJAKwCAgIQbGFzdEFyYlRpbWVVc2VyXwUEYWRkcgEaa2V5QWNyZXNTdGFrZWRBbW91bnRCeVVzZXIBBGFkZHIJAKwCAgIYYWNyZXNTdGFrZWRBbW91bnRCeVVzZXJfBQRhZGRyAA1pbmN1YmF0b3JBZGRyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUEVrdFZ1eDJSaGNoU042M0RzRG80YjRtejRRcXpLU2VEdgMJAAACAQFUBQckbWF0Y2gwBQR0aGlzCQACAQINVW5rbm93biBjaGFpbgALYnJlZWRlckFkZHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQRFZ1VTQ1SDdFaDVkbXROYm5STlJTdEd3VUxBN05ZNkhiAwkAAAIBAVQFByRtYXRjaDAFBHRoaXMJAAIBAg1Vbmtub3duIGNoYWluABFGSVZFTUlOVVRFU01JTExJUwDgpxIADFJFTkFNSU5HQ09TVADAlrECAApNQVhOQU1FTEVOADIAFUluZnJhVXBncmFkZUNvc3RTVXNkdACAreIEAAxFWFBNQVRFUklBTFMEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAApt2C7asHAwkAAAIBAVQFByRtYXRjaDAAqqeBswkJAAIBAg1Vbmtub3duIGNoYWluAAdFWFBVU0RUBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAIDlmncDCQAAAgEBVAUHJG1hdGNoMACA5Zp3CQACAQINVW5rbm93biBjaGFpbgAOUk9CT19EVUNLX1VTRFQAoI0GAAxTX0NPU1RfQUNSRVMAgPKLqAkABUZJVkVYCQC2AgEABQAHVFdFTlRZWAkAtgIBABQACFRXRU5UWTJYCQC2AgEJAGgCABQAFAAIVFdFTlRZM1gJALYCAQkAaAIJAGgCABQAFAAUAAhUV0VOVFk0WAkAtgIBCQBoAgkAaAIJAGgCABQAFAAUABQACFRXRU5UWTVYCQC2AgEJAGgCCQBoAgkAaAIJAGgCABQAFAAUABQAFAAPUFJFU0FMRU5VTUxBTkRTAPQDARJrZXlOZXh0RnJlZUxhbmROdW0AAgtuZXh0TGFuZE51bQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBG5hbWUJAKwCAgIEbGNuXwUEbmFtZQEQa2V5TGFuZFRvQXNzZXRJZAEHbGFuZE51bQkArAICAgNsYV8FB2xhbmROdW0BHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgICBWlsYW9fBQdhc3NldElkAgFfBQlvd25lckFkZHIBEWtleUxhbmROdW1Ub093bmVyAQdsYW5kTnVtCQCsAgICA2xvXwUHbGFuZE51bQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBBG5hbWUJAKwCAgIRZHVja0J5Q3VzdG9tTmFtZV8FBG5hbWUBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBBG5hbWUJAKwCAgIUYWNjb3VudEJ5Q3VzdG9tTmFtZV8FBG5hbWUBCWtleU9sZGllcwACCm9sZGllc0xpc3QBD2tleU5leHRSb2JvRHVjawACDG5leHRSb2JvRHVjawALY2xhaW1Nb2RlV2gAAAANY2xhaW1Nb2RlRHVjawABABNjbGFpbU1vZGVXaFRoZW5EdWNrAAIACGZsSGVhbHRoAAAAC2ZsVGltZXN0YW1wAAUAB2ZsQm9udXMABgALZmxQcm9kc1VzZWQABwAIcmxIZWFsdGgAAAALcmxQcm9kc1VzZWQAAQAGcmxUeXBlAAAACHJsTGFzdFR4AAIAC3JsVGltZXN0YW1wAAMBB25mdE5hbWUCB2xhbmROdW0IbGFuZFNpemUJAKwCAgkArAICBQpMQU5EUFJFRklYBQdsYW5kTnVtBQhsYW5kU2l6ZQEIdG9Wb2x1bWUCBmFtb3VudAdwa2dTaXplBARwa2dzAwkAZwIFBmFtb3VudAAACQBpAgkAZQIJAGQCBQZhbW91bnQFB3BrZ1NpemUAAQUHcGtnU2l6ZQkBAS0BCQBpAgkAZQIJAGQCCQEBLQEFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQBoAgUEcGtncwUFTVVMVDgBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBXRvdGFsB3dlaWdodHMEA3N1bQkAZAIJAGQCCQBkAgkAZAIJAGQCCQCRAwIFB3dlaWdodHMAAAkAkQMCBQd3ZWlnaHRzAAEJAJEDAgUHd2VpZ2h0cwACCQCRAwIFB3dlaWdodHMAAwkAkQMCBQd3ZWlnaHRzAAQJAJEDAgUHd2VpZ2h0cwAFAwkAZwIAAAUDc3VtCQACAQIQWmVybyB3ZWlnaHRzIHN1bQQFbm9ybTYJAGsDBQV0b3RhbAUFTVVMVDYFA3N1bQoBCm5vcm1hbGl6ZXICA2FjYwRlbGVtCQDNCAIFA2FjYwkAawMFBGVsZW0FBW5vcm02BQVNVUxUNgoAAiRsBQd3ZWlnaHRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpub3JtYWxpemVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGARJnZXROZWVkZWRNYXRlcmlhbHMBBXRvdGFsBAVwcm9wcwkAtQkCCQEFdmFsdWUBCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACAV8DCQECIT0CCQCQAwEFBXByb3BzBQZOVU1SRVMJAAIBAhZXcm9uZyBwcm9wb3J0aW9ucyBkYXRhBAFyCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAACQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwABCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwACCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwADCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAECQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAFBQNuaWwJARNkaXN0cmlidXRlQnlXZWlnaHRzAgUFdG90YWwFAXIBEXN1YnRyYWN0TWF0ZXJpYWxzAwxzaG91bGRVc2VNYXQDaGFzCXRvdGFsTmVlZAQEbmVlZAkBEmdldE5lZWRlZE1hdGVyaWFscwEFCXRvdGFsTmVlZAoBCnN1YnRyYWN0b3ICA2FjYwNpZHgEBnJlc3VsdAkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNoYXMFA2lkeAkAkQMCBQRuZWVkBQNpZHgDCQBmAgAABQZyZXN1bHQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIYTm90IGVub3VnaCBtYXRlcmlhbCBpZHg9CQCkAwEFA2lkeAILLCB5b3UgaGF2ZSAJAJEDAgUDaGFzBQNpZHgCCywgYnV0IG5lZWQgCQCkAwEJAJEDAgUEbmVlZAUDaWR4CQDNCAIFA2FjYwkApAMBBQZyZXN1bHQDBQxzaG91bGRVc2VNYXQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCnN1YnRyYWN0b3ICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYFA2hhcwERc3VidHJhY3RFcXVpcG1lbnQCBW9sZEVxBXBVc2VkAwkAAAIFBXBVc2VkAgAJAJUKAwUFb2xkRXEHBwoBB3N1YlVzZWQCA2FjYwZpZHhBbXQEBXBhcnRzCQC1CQIFBmlkeEFtdAIBLAMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleCxhbW91bnQEA2lkeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAADAwkAZgIAAAUDaWR4BgkAZwIFA2lkeAkAkAMBBRBwcm9kdWN0aW9uTWF0cml4CQACAQITVW5rbm93biBwcm9kdWN0IGlkeAQDYW10CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQQHZXFQYXJ0cwkAtQkCCAUDYWNjAl8xCQCsAgIJAJEDAgUFcGFydHMAAAIBOgMJAQIhPQIJAJADAQUHZXFQYXJ0cwACCQACAQkArAICCQCsAgICD1lvdSBkb24ndCBoYXZlIAkAkQMCBQlwcm9kVHlwZXMFA2lkeAIJIGVxdWlwcGVkBAN0bXAJAJEDAgUHZXFQYXJ0cwABBAZudW1MZW4DCQEHaXNEaWdpdAEJAK8CAgkAsAICBQN0bXAAAQABAAIAAQQEY3VycgkBDXBhcnNlSW50VmFsdWUBCQCvAgIFA3RtcAUGbnVtTGVuBAR0YWlsCQCwAgIFA3RtcAUGbnVtTGVuBAZuZXdBbXQDCQBnAgUEY3VycgUDYW10CQBlAgUEY3VycgUDYW10CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDVlvdSBlcXVpcHBlZCAJAKQDAQUEY3VycgIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFA2lkeAITLCBidXQgdHJpZWQgdG8gdXNlIAkApAMBBQNhbXQJAJUKAwkArAICCQCsAgIJAKwCAgkArAICCQCRAwIFB2VxUGFydHMAAAkAkQMCBQVwYXJ0cwAAAgE6CQCkAwEFBm5ld0FtdAUEdGFpbAMIBQNhY2MCXzIGAwMJAGcCBQNpZHgABgkAZwIACAUDaWR4BwkAAAIFBm5ld0FtdAAABwMIBQNhY2MCXzMGAwMJAGcCBQNpZHgAAwkAZwIABQUDaWR4BwkAZgIFA2FtdAAABwoAAiRsCQC1CQIFBXBVc2VkAgFfCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQVvbGRFcQcHCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzdWJVc2VkAgUCJGEJAJED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CQACAQIrUHJvZHVjdCBpZHggc2hvdWxkIGJlIDIgZGlnaXRzLCB6ZXJvIHBhZGRlZAQKcHJvZHVjdElkeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAAEBWNvdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQMDCQBmAgAABQpwcm9kdWN0SWR4BgkAZwIFCnByb2R1Y3RJZHgJAJADAQUQcHJvZHVjdGlvbk1hdHJpeAkAAgECE1Vua25vd24gcHJvZHVjdCBpZHgDCQBmAgAABQVjb3VudAkAAgECF0NvdW50IGNhbid0IGJlIG5lZ2F0aXZlAwkAZgIFBWNvdW50BQ1NQVhQUk9ESU5TTE9UCQACAQkArAICCQCsAgIJAKwCAgIUQ2FuJ3QgcHV0IG1vcmUgdGhhbiAJAKQDAQUNTUFYUFJPRElOU0xPVAIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgDCQAAAgUFY291bnQAAAkAlAoCBQVwTGlzdAcEBGhlYWQJAMkBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgEBGN1cnIJALEJAQkAyQECCQDKAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4AAgEBHRhaWwJAMoBAgUFcExpc3QJAGgCAAgJAGQCBQpwcm9kdWN0SWR4AAEEBnJlY2lwZQkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgFCnByb2R1Y3RJZHgCAV8DAwkBASEBBQppc1Bvc2l0aXZlCQBmAgUFY291bnQFBGN1cnIHCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCVlvdSBoYXZlIAkApAMBBQRjdXJyAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAITLCBidXQgdHJpZWQgdG8gdXNlIAkApAMBBQVjb3VudAQJaXNCaWdJdGVtAwMJAQEhAQUKaXNQb3NpdGl2ZQkBFWNoZWNrU3RhdFJlcXVpcmVtZW50cwIFCWR1Y2tTdGF0cwkAtQkCCQCRAwIFBnJlY2lwZQUQcklkeFJlcXVpcmVtZW50cwIBLAcEBmNvbXBhdAkAkQMCBQZyZWNpcGUFCXJJZHhTbG90cwMJAAACBQZjb21wYXQCAAkAAgECF0l0ZW0gY2Fubm90IGJlIGVxdWlwcGVkBAFjCQENcGFyc2VJbnRWYWx1ZQEFBmNvbXBhdAQEY1NlZwkAaQIFAWMAZAMJAQIhPQIFB3NlZ21lbnQFBGNTZWcJAAIBAhRTZWdtZW50IGluY29tcGF0aWJsZQQIY01haW5BdXgJAGkCCQBqAgUBYwBkAAoDCQECIT0CBQdtYWluQXV4BQhjTWFpbkF1eAkAAgECEVNsb3QgaW5jb21wYXRpYmxlBAljTnVtU2xvdHMJAGoCBQFjAAoDAwkBAiE9AgUEc2xvdAAACQBmAgUJY051bVNsb3RzAAEHCQACAQIeQmlnIGl0ZW1zIHNob3VsZCBvY2N1cHkgc2xvdCAwCQBmAgUJY051bVNsb3RzAAEHCQCUCgIJAMsBAgkAywECBQRoZWFkCQCaAwEJAGQCBQRjdXJyAwUKaXNQb3NpdGl2ZQUFY291bnQJAQEtAQUFY291bnQFBHRhaWwFCWlzQmlnSXRlbQELc2xvdHNHcm91cEIGAWcEYnBJbgppc1Bvc2l0aXZlB3NlZ21lbnQHbWFpbkF1eAVzdGF0cwMJAQIhPQIFAWcCAAQFc2xvdHMJALUJAgUBZwIBLAMJAGYCCQCQAwEFBXNsb3RzBQhNQVhTTE9UUwkAAgECEldyb25nIHNsb3RzIGZvcm1hdAQCczAJAJEDAgUFc2xvdHMAAAQCczEDCQBmAgkAkAMBBQVzbG90cwABCQCRAwIFBXNsb3RzAAECAAMDCQAAAgUCczACAAkAAAIFAnMxAgAHBQRicEluBAV0bXBTMAMJAQIhPQIFAnMwAgAJAQhhZGRQcm9kQgcFAnMwBQRicEluBQppc1Bvc2l0aXZlBQdzZWdtZW50BQdtYWluQXV4AAAFBXN0YXRzCQCUCgIFBGJwSW4HAwkBAiE9AgUCczECAAMIBQV0bXBTMAJfMgkAAgECHkJpZyBpdGVtIGFscmVhZHkgb2NjdXBpZXMgc2xvdAgJAQhhZGRQcm9kQgcFAnMxCAUFdG1wUzACXzEFCmlzUG9zaXRpdmUFB3NlZ21lbnQFB21haW5BdXgAAQUFc3RhdHMCXzEIBQV0bXBTMAJfMQUEYnBJbgEGZHJlc3NCBAdzZWdMaXN0BnBCeXRlcwppc1Bvc2l0aXZlBXN0YXRzCgEHc2VnbWVudAIDYWNjA3Nl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AWkEBnJlc3VsdAkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9wTGlzdAUBaQkAaAIJAGgCBQRzaWduCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkFDWxhbmRTaXplSW5kZXgDCQBmAgAABQZyZXN1bHQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICFlBhbmljISBQaWVjZXMgb2YgdHlwZT0JAKQDAQUBaQIHLCBzaWduPQkApAMBBQRzaWduAhMsIHRlcnJhaW5Db3VudHNbaV09CQCkAwEJAJEDAgUNdGVycmFpbkNvdW50cwUBaQIQLCBsYW5kU2l6ZUluZGV4PQkApAMBBQ1sYW5kU2l6ZUluZGV4CQDNCAIFA2FjYwkApAMBBQZyZXN1bHQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3VwZGF0ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEXVwZGF0ZVByb3BvcnRpb25zAw10ZXJyYWluQ291bnRzDWxhbmRTaXplSW5kZXgEc2lnbgQIcHJvcExpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCHByb3BMaXN0BQ10ZXJyYWluQ291bnRzBQ1sYW5kU2l6ZUluZGV4BQRzaWduAgFfAQ1jb3VudFRlcnJhaW5zAQh0ZXJyYWlucwkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFBAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBQgABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUMAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFEAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBRQABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUYAAQUDbmlsAQZhZGRSZXMFCmN1cnJlbnRSZXMNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUNbGFuZFNpemVJbmRleBdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwoBBWFkZGVyAgNhY2MBaQQJcmVzT2ZUeXBlCQBoAgkAaAIJAGsDBQlkZWx0YVRpbWUFF2RhaWx5QnlQaWVjZVdpdGhCb251c2VzBQlEQVlNSUxMSVMJAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAkAzQgCBQNhY2MJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpjdXJyZW50UmVzBQFpBQlyZXNPZlR5cGUEAXIKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCQC5CQIFAXICAV8BD3ZpcnRDbGFpbUFkZFJlcwUKY3VycmVudFJlcw10ZXJyYWluQ291bnRzCWRlbHRhVGltZQ1sYW5kU2l6ZUluZGV4F2RhaWx5QnlQaWVjZVdpdGhCb251c2VzCgEFYWRkZXICA2FjYwFpBAlyZXNPZlR5cGUJAGgCCQBoAgkAawMFCWRlbHRhVGltZQUXZGFpbHlCeVBpZWNlV2l0aEJvbnVzZXMFCURBWU1JTExJUwkAkQMCBQ10ZXJyYWluQ291bnRzBQFpBQ1sYW5kU2l6ZUluZGV4BAx0b3RhbFJlc1R5cGUJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKY3VycmVudFJlcwUBaQUJcmVzT2ZUeXBlCQCUCgIJAM0IAggFA2FjYwJfMQUMdG90YWxSZXNUeXBlCQBkAggFA2FjYwJfMgUMdG90YWxSZXNUeXBlCgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFYWRkZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBCXZpcnRDbGFpbQQNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUNbGFuZFNpemVJbmRleBdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwoBBWFkZGVyAgNhY2MMdGVycmFpbkNvdW50BAlyZXNPZlR5cGUJAGgCCQBoAgkAawMFCWRlbHRhVGltZQUXZGFpbHlCeVBpZWNlV2l0aEJvbnVzZXMFCURBWU1JTExJUwUMdGVycmFpbkNvdW50BQ1sYW5kU2l6ZUluZGV4CQCUCgIJAM0IAggFA2FjYwJfMQUJcmVzT2ZUeXBlCQBkAggFA2FjYwJfMgUJcmVzT2ZUeXBlCgACJGwFDXRlcnJhaW5Db3VudHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQVhZGRlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgENZGlzdHJpYnV0ZVJlcwQMY3VycmVudFdoUmVzDmN1cnJlbnRQYWNrUmVzCnJlc1RvQ2xhaW0Ld2hTcGFjZUxlZnQEDnJlc0xpc3RUb0NsYWltCAUKcmVzVG9DbGFpbQJfMQQMcmVzQW1Ub0NsYWltCAUKcmVzVG9DbGFpbQJfMgMJAAACBQxyZXNBbVRvQ2xhaW0AAAkAlAoCCQC5CQIFDGN1cnJlbnRXaFJlcwIBXwkAuQkCBQ5jdXJyZW50UGFja1JlcwIBXwMJAGcCBQt3aFNwYWNlTGVmdAUMcmVzQW1Ub0NsYWltCgEIYWRkTGlzdHMCA2FjYwFpCQDNCAIFA2FjYwkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGN1cnJlbnRXaFJlcwUBaQkAkQMCBQ5yZXNMaXN0VG9DbGFpbQUBaQQBcgoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIYWRkTGlzdHMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYJAJQKAgkAuQkCBQFyAgFfCQC5CQIFDmN1cnJlbnRQYWNrUmVzAgFfCgEMYWRkUGFydExpc3RzAgNhY2MBaQQGd2hQYXJ0CQBrAwkAkQMCBQ5yZXNMaXN0VG9DbGFpbQUBaQULd2hTcGFjZUxlZnQFDHJlc0FtVG9DbGFpbQkAlAoCCQDNCAIIBQNhY2MCXzEJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQxjdXJyZW50V2hSZXMFAWkFBndoUGFydAkAzQgCCAUDYWNjAl8yCQCkAwEJAGUCCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpCQCRAwIFDnJlc0xpc3RUb0NsYWltBQFpBQZ3aFBhcnQEAXIKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQxhZGRQYXJ0TGlzdHMCBQIkYQkAkQMC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XzBfMF8wXzBfMDowXzBfMF8wXzBfMDoCAToJAMwIAgkApAMBCQELdmFsdWVPckVsc2UCCQC2CQEJAJEDAgUBcAUKYnBJZHhMZXZlbAAACQDMCAIDCQAAAgkAkAMBCQC1CQIJAJEDAgUBcAUIYnBJZHhSZXMCAV8FBk5VTVJFUwkAkQMCBQFwBQhicElkeFJlcwILMF8wXzBfMF8wXzAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQFwBQhicElkeE1hdAIBXwUGTlVNUkVTCQCRAwIFAXAFCGJwSWR4TWF0AgswXzBfMF8wXzBfMAkAzAgCCQCRAwIFAXAFCWJwSWR4UHJvZAUDbmlsARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJdm9sUHJlZml4BAVwYXJ0cwkAtQkCBQl2b2xQcmVmaXgCAV8JAGgCCQBoAgUMV0hNVUxUSVBMSUVSCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAABF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQljdXJyZW50V2gEBWdvb2RzCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kCgEJc3VtUmVzTWF0AgNhY2MEaXRlbQkAZAIFA2FjYwkBDXBhcnNlSW50VmFsdWUBBQRpdGVtCgEHc3VtUHJvZAIDYWNjBGl0ZW0EA2lkeAgFA2FjYwJfMQQEcGtncwkAaQIJAGUCCQBkAgkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBQ5QUk9EVUNUUEtHU0laRQABBQ5QUk9EVUNUUEtHU0laRQkAlAoCCQBkAgUDaWR4AAEJAGQCCAUDYWNjAl8yCQBoAgUEcGtncwUFTVVMVDgECHdoUmVzVm9sCgACJGwJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlzdW1SZXNNYXQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJ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a2VkBQNvY2MJAMwIAgkApAMBBQd3aFRvdGFsBQNuaWwCAV8JAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhSZXMCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhSZXMCCzBfMF8wXzBfMF8wCQDMCAIDCQAAAgkAkAMBCQC1CQIJAJEDAgUCd2gFCHdoSWR4TWF0AgFfBQZOVU1SRVMJAJEDAgUCd2gFCHdoSWR4TWF0AgswXzBfMF8wXzBfMAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgUGd2hMb2Z0BQNuaWwBFWdldFdhcmVob3VzZVNwYWNlTGVmdAEJY3VycmVudFdoBAtvY2N1cGllZFZvbAkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUJY3VycmVudFdoBA9jdXJyV2hMb2NrZWRWb2wJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8FCXZvbExvY2tlZAkAZQIJAGUCCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMFC29jY3VwaWVkVm9sBQ9jdXJyV2hMb2NrZWRWb2wBCW1vdmVTdHVmZgMKY2FyZ29QYXJ0cwljdXJyZW50V2gLY3VycmVudFBhY2sDCQECIT0CCQCQAwEFCmNhcmdvUGFydHMAAwkAAgECNGNhcmdvTGlzdFN0ciBzaG91bGQgY29udGFpbiBleGFjdGx5IDIgJzonIHNlcGFyYXRvcnMECHJlc1BhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwAAAgFfBAhtYXRQYXJ0cwkAtQkCCQCRAwIFCmNhcmdvUGFydHMAAQIBXwQJcHJvZFBhcnRzAwkAAAIJAJEDAgUKY2FyZ29QYXJ0cwACAgAFA25pbAkAvAkCCQCRAwIFCmNhcmdvUGFydHMAAgIBXwMJAQIhPQIJAJADAQUIcmVzUGFydHMFBk5VTVJFUwkAAgECIEFsbCA2IHJlc291cmNlcyBzaG91bGQgYmUgcGFzc2VkAwkBAiE9AgkAkAMBBQhtYXRQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgbWF0ZXJpYWxzIHNob3VsZCBiZSBwYXNzZWQEC3doU3BhY2VMZWZ0CQEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQUJY3VycmVudFdoBAljdXJyV2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBAljdXJyV2hNYXQJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0AgFfBApjdXJyV2hQcm9kAwkAAAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAV8EDmN1cnJlbnRQYWNrUmVzCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBA5jdXJyZW50UGFja01hdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQPY3VycmVudFBhY2tQcm9kAwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfCgEDbXZSAgNhY2MEaXRlbQQBaQgFA2FjYwJfMQQCYW0JAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQDd2hyCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJY3VycldoUmVzBQFpBANicHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5jdXJyZW50UGFja1JlcwUBaQMJAAACBQJhbQAACQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkAkQMCBQljdXJyV2hSZXMFAWkJAM0IAggFA2FjYwJfMwkAkQMCBQ5jdXJyZW50UGFja1JlcwUBaQgFA2FjYwJfNAMJAGYCBQJhbQAAAwkAZgIFAmFtBQNicHIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAFBGl0ZW0CGSBmcm9tIGJhY2twYWNrLCBidXQgb25seSAJAKQDAQUDYnByAgogYXZhaWxhYmxlCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hyBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJ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UwABBAdsYW5kTnVtCQCkAwEFB2ZyZWVOdW0EDGNvbnRpbmVudElkeAkAoAMBCQC7AgIFBmJpZ051bQUFRklWRVgECHRlcnJhaW5zCQELZ2VuVGVycmFpbnMCBQZiaWdOdW0FDGNvbnRpbmVudElkeAQJY29udGluZW50CQCRAwIFCmNvbnRpbmVudHMFDGNvbnRpbmVudElkeAQFaXNzdWUJAMIIBQkBB25mdE5hbWUCBQdsYW5kTnVtAgFTCQC5CQIJAMwIAgUHbGFuZE51bQkAzAgCAgFTCQDMCAIFCHRlcnJhaW5zCQDMCAIFCWNvbnRpbmVudAUDbmlsAgFfAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUEAmlkCQDYBAEFB2Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQdmcmVlTnVtAAEJAMwIAgUFaXNzdWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleUxhbmRUb0Fzc2V0SWQBBQdsYW5kTnVtBQJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUCaWQFCHVzZXJBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0FCHVzZXJBZGRyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFAmlkAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQJpZAUIdXNlckFkZHIAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIAAQUHYXNzZXRJZAUDbmlsCQCUCgIFAmlkBQljb250aW5lbnQBDGZsaWdodENvbW1vbgMIdXNlckFkZHIHbWVzc2FnZQNzaWcDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gEBXBhcnRzCQC8CQIJALAJAQUHbWVzc2FnZQIBOwQJZmxpZ2h0TG9nCQC8CQIJAJEDAgUFcGFydHMAAAIBfAQCaHAJALUJAgkAkQMCBQlmbGlnaHRMb2cFCGZsSGVhbHRoAgFfBAVjdXJIUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmhwAAAEBW5ld0hQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAQQLbmV3TG9jVHhWZXIJALUJAgkAkQMCBQVwYXJ0cwABAgE6BAtuZXdMb2NhdGlvbgkAkQMCBQtuZXdMb2NUeFZlcgAABAR0aW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJZmxpZ2h0TG9nBQtmbFRpbWVzdGFtcAMDCQBmAgUEdGltZQkAZAIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBRFGSVZFTUlOVVRFU01JTExJUwYJAGYCCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBQR0aW1lCQACAQkArAICCQCsAgIJAKwCAgIcc2lnbmF0dXJlIG91dGRhdGVkOiBsb2dUaW1lPQkApAMBBQR0aW1lAgksIGJjVGltZT0JAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAECXR4RnJvbU1zZwkAkQMCBQtuZXdMb2NUeFZlcgABBAZsYXN0VHgJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleUxhc3RUeElkQnlVc2VyAQUIdXNlckFkZHICAAMJAQIhPQIFBmxhc3RUeAUJdHhGcm9tTXNnCQACAQkArAICCQCsAgIJAKwCAgIeVHggaWRzIGRvbid0IG1hdGNoISBJbiBzdGF0ZTogBQZsYXN0VHgCCiwgaW4gbXNnOiAFCXR4RnJvbU1zZwQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAEDG9sZEZyb21TdGF0ZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkBAiE9AgUMb2xkRnJvbVN0YXRlBQVjdXJIUAkAAgEJAKwCAgkArAICCQCsAgICCm9sZEhlYWx0aD0JAKQDAQUMb2xkRnJvbVN0YXRlAi8gZnJvbSBzdGF0ZSBkb2VzIG5vdCBtYXRjaCBvbmUgZnJvbSBmbGlnaHQgbG9nPQkApAMBBQVjdXJIUAMJAGcCAAAFBWN1ckhQCQACAQIeWW91IGNhbid0IGZseSB3aXRoIHplcm8gaGVhbHRoAwkBASEBCQEXY2FuV2VhckN1cnJlbnRFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFkVxdWlwbWVudCBpbmNvbXBhdGlibGUEBWJvbnVzAwkAZgIJAJADAQUJZmxpZ2h0TG9nBQdmbEJvbnVzCQCRAwIFCWZsaWdodExvZwUHZmxCb251cwIABAhwcm9kVXNlZAMJAGYCCQCQAwEFCWZsaWdodExvZwULZmxQcm9kc1VzZWQJAJEDAgUJZmxpZ2h0TG9nBQtmbFByb2RzVXNlZAIABApzZW50QW1vdW50AwMJAGYCBQVuZXdIUAAACQAAAgUFYm9udXMCASQHCQEFYXNJbnQBCQD8BwQFDHJlc3RDb250cmFjdAINc2VuZFVzZHRQcml6ZQkAzAgCBQh1c2VyQWRkcgUDbmlsBQNuaWwAAAkAlwoFBQVuZXdIUAULZHVja0Fzc2V0SWQFCnNlbnRBbW91bnQFC25ld0xvY2F0aW9uBQhwcm9kVXNlZAEMYXBwbHlCb251c2VzAgtsYW5kQXNzZXRJZAZwaWVjZXMECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAlhcnRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQAAAQEYWRkNgkAaQIFCmluZnJhTGV2ZWwABgQEYWRkNwkAaQIFCmluZnJhTGV2ZWwABwkAZAIJAGQCBQ9EQUlMWVJFU0JZUElFQ0UJAGsDBQ9EQUlMWVJFU0JZUElFQ0UJAGQCCQBkAgUKaW5mcmFMZXZlbAUEYWRkNgkAaAIAAgUEYWRkNwAFCQBrAwUPREFJTFlSRVNCWVBJRUNFBQlhcnRQaWVjZXMJAGgCBQZwaWVjZXMABQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBGFkZHIJY2xhaW1Nb2RlDWxhbmRBc3NldElkSW4EDSR0MDM0MTUzMzQ2OTIDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAlAoCBQ1sYW5kQXNzZXRJZEluCQELdmFsdWVPckVsc2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMCQCUCgIJAJEDAgUDbG9jBQhsb2NJZHhJZAULZHVja0Fzc2V0SWQEC2xhbmRBc3NldElkCAUNJHQwMzQxNTMzNDY5MgJfMQQGZHVja0lkCAUNJHQwMzQxNTMzNDY5MgJfMgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUHdGltZUtleQkArAICCQCsAgICBUxhbmQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwkAlgoEBQZkdWNrSWQFC2xhbmRBc3NldElkBQFkBQlzYXZlZFRpbWUBEGNsYWltUmVzSW50ZXJuYWwEBGFkZHIGYW1vdW50CWNsYWltTW9kZQ1sYW5kQXNzZXRJZEluAwkAZgIAAAUGYW1vdW50CQACAQIPTmVnYXRpdmUgYW1vdW50BAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQljbGFpbU1vZGUFDWxhbmRBc3NldElkSW4ECGxhbmRTaXplCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIIBQFjAl8zBQtyZWNUZXJyYWlucwQJZGVsdGFUaW1lCQBlAgkBCWZpbmFsVGltZQAIBQFjAl80AwkAZgIAAAUJZGVsdGFUaW1lCQACAQkArAICCQCsAgIJAKwCAgImU2F2ZWQgdGltZXN0YW1wIGlzIGluIGZ1dHVyZSwgc2F2ZWQgPSAJAKQDAQgFAWMCXzQCCiwgZmluYWwgPSAJAKQDAQkBCWZpbmFsVGltZQAEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEFCGxhbmRTaXplBBZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQEMYXBwbHlCb251c2VzAggFAWMCXzIFBnBpZWNlcwQIYXZhaWxSZXMJAGsDBQlkZWx0YVRpbWUJAGgCBRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBQZwaWVjZXMFCURBWU1JTExJUwMJAGYCBQZhbW91bnQFCGF2YWlsUmVzCQACAQkArAICCQCsAgIJAKwCAgIiTm90IGVub3VnaCByZXNvdXJjZXMsIGF2YWlsYWJsZSA9IAkApAMBBQhhdmFpbFJlcwIOLCByZXF1ZXN0ZWQgPSAJAKQDAQUGYW1vdW50BAxuZXdEZWx0YVRpbWUJAGsDCQBlAgUIYXZhaWxSZXMFBmFtb3VudAUJREFZTUlMTElTCQBoAgUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQUGcGllY2VzBAxuZXdUaW1lc3RhbXAJAGUCCQEJZmluYWxUaW1lAAUMbmV3RGVsdGFUaW1lBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBApyZXNUb0NsYWltCQEJdmlydENsYWltBAUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQgFAWMCXzIECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBCAUBYwJfMgAABAljdXJyZW50V2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBARsb2Z0CQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8EC3doU3BhY2VMZWZ0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQMDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAZgIFBmFtb3VudAULd2hTcGFjZUxlZnQHCQACAQkArAICCQCsAgICBU9ubHkgCQCkAwEFC3doU3BhY2VMZWZ0Ahggc3BhY2UgbGVmdCBpbiB3YXJlaG91c2UEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBCAUBYwJfMQQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BA5jdXJyZW50UGFja1JlcwkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwIBXwQMY3VycmVudFdoUmVzCQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwIBXwQNJHQwMzcwNjIzNzkzMwMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQCWCgQJAQZhZGRSZXMFBQxjdXJyZW50V2hSZXMFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAgFCnJlc1RvQ2xhaW0CXzIJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQgFCnJlc1RvQ2xhaW0CXzIDCQAAAgUJY2xhaW1Nb2RlBQ1jbGFpbU1vZGVEdWNrCQCWCgQJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwkBBmFkZFJlcwUFDmN1cnJlbnRQYWNrUmVzBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQQFZGlzdHIJAQ1kaXN0cmlidXRlUmVzBAUMY3VycmVudFdoUmVzBQ5jdXJyZW50UGFja1JlcwUKcmVzVG9DbGFpbQULd2hTcGFjZUxlZnQEBHdoQW0JAJcDAQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQkAzAgCCAUKcmVzVG9DbGFpbQJfMgUDbmlsCQCWCgQIBQVkaXN0cgJfMQgFBWRpc3RyAl8yCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkBQR3aEFtCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUFBHdoQW0EBXdoUmVzCAUNJHQwMzcwNjIzNzkzMwJfMQQFYnBSZXMIBQ0kdDAzNzA2MjM3OTMzAl8yBAVsb2Z0TwgFDSR0MDM3MDYyMzc5MzMCXzMEBWxvZnRGCAUNJHQwMzcwNjIzNzkzMwJfNAkAlwoFCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEIBQFjAl8yBQxuZXdUaW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAgFAWMCXzIFBGFkZHIFDG5ld1RpbWVzdGFtcAUDbmlsBQVicEtleQkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIFBWJwUmVzCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsBQV3aEtleQkAzAgCCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMJAMwIAgUFd2hSZXMJAMwIAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0CQDMCAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCRAwIFBGxvZnQFCHZvbFRvdGFsBQNuaWwCAV8FA25pbAEIY2xhaW1BbGwEBGFkZHILbGFuZEFzc2V0SWQGcGllY2VzCWNsYWltTW9kZQQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQEFdmFsdWUBCQCfCAEFB3RpbWVLZXkECGF2YWlsUmVzCQBoAgkAawMJAGUCCQEJZmluYWxUaW1lAAUJc2F2ZWRUaW1lCQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwUJREFZTUlMTElTBQZwaWVjZXMJARBjbGFpbVJlc0ludGVybmFsBAUEYWRkcgUIYXZhaWxSZXMFCWNsYWltTW9kZQULbGFuZEFzc2V0SWQBDXVwSW5mcmFDb21tb24EDHNob3VsZFVzZU1hdAZjYWxsZXINcGF5bWVudEFtb3VudAtsYW5kQXNzZXRJZAQEYWRkcgkApQgBBQZjYWxsZXIEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFE2NsYWltTW9kZVdoVGhlbkR1Y2sFC2xhbmRBc3NldElkBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQIaW5mcmFLZXkJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQgFAWMCXzIECGN1ckxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEFCGluZnJhS2V5AAADAwkBASEBBRhLU19BTExPV19CSUdfSU5GUkFfTUVSR0UJAGcCBQhjdXJMZXZlbAADBwkAAgECJkN1cnJlbnRseSBtYXggaW5mcmFzdHJ1Y3R1cmUgbGV2ZWwgPSAzBAhtYXhJbmZyYQkAZAIJAGkCCQEEc3FydAQFBnBpZWNlcwAAAAAFBERPV04ABQACBAhuZXdMZXZlbAkAZAIFCGN1ckxldmVsAAEDAwUYS1NfQUxMT1dfQklHX0lORlJBX01FUkdFCQBmAgUIbmV3TGV2ZWwFCG1heEluZnJhBwkAAgEJAKwCAgIlQ3VycmVudGx5IG1heCBpbmZyYXN0cnVjdHVyZSBsZXZlbCA9IAkApAMBBQhtYXhJbmZyYQQEY29zdAkAawMFFUluZnJhVXBncmFkZUNvc3RTVXNkdAkAaAIFBnBpZWNlcwUIbmV3TGV2ZWwFBVNTSVpFAwMJAQEhAQUMc2hvdWxkVXNlTWF0CQECIT0CBQ1wYXltZW50QW1vdW50BQRjb3N0BwkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFBGNvc3QEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBCAUBYwJfMQQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVtTGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQHbWF0VXNlZAkAawMFEUluZnJhVXBncmFkZUNvc3RTCQBoAgUGcGllY2VzBQhuZXdMZXZlbAUFU1NJWkUEBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDBQxzaG91bGRVc2VNYXQFBW1MaXN0BQdtYXRVc2VkAgFfBAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcggFAWMCXzIFBnBpZWNlcwUTY2xhaW1Nb2RlV2hUaGVuRHVjawQGd2hEYXRhCAULY2xhaW1SZXN1bHQCXzUEBm9sZFZvbAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQZ3aERhdGEFC3doSWR4TGV2ZWxzBApuZXdWb2xEYXRhCQC5CQIJAMwIAgkAkQMCCQC1CQIJAJEDAgUGd2hEYXRhBQt3aElkeExldmVscwIBXwAACQDMCAIJAKQDAQUIbmV3TGV2ZWwFA25pbAIBXwQGbmV3Vm9sCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBBQpuZXdWb2xEYXRhBARsb2Z0CQC1CQIJAJEDAgUGd2hEYXRhBQl3aElkeExPRlQCAV8ECm5ld0xvZnRTdHIJALkJAgkAzAgCCQCRAwIFBGxvZnQFCXZvbExvY2tlZAkAzAgCCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCQDMCAIJAKQDAQkAZQIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQUGbmV3Vm9sBQZvbGRWb2wJAMwIAgkApAMBBQZuZXdWb2wFA25pbAIBXwkAlQoDCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCGluZnJhS2V5BQhuZXdMZXZlbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIIBQFjAl8yBQRhZGRyBQhuZXdMZXZlbAkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCCAULY2xhaW1SZXN1bHQCXzMFCGJwSWR4UmVzCQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgkAzAgCCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzQJALkJAgkAzAgCBQpuZXdWb2xEYXRhCQDMCAIJAJEDAgUGd2hEYXRhBQh3aElkeFJlcwkAzAgCCQCRAwIFBndoRGF0YQUId2hJZHhNYXQJAMwIAgkAkQMCBQZ3aERhdGEFCXdoSWR4UHJvZAkAzAgCBQpuZXdMb2Z0U3RyBQNuaWwCAToFA25pbAgFC2NsYWltUmVzdWx0Al8xBQhuZXdMZXZlbAUHbWF0VXNlZAETdXBkYXRlU3RhdHNJbnRlcm5hbAQGbHZsS2V5BXhwS2V5CXBvaW50c0tleQdkZWx0YVhQBAJ4cAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQV4cEtleQAABAVuZXdYUAkAZAIFAnhwBQdkZWx0YVhQBAlsdmxQb2ludHMJAQdsZXZlbFVwAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQZsdmxLZXkAAAUFbmV3WFAJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUGbHZsS2V5CQCRAwIFCWx2bFBvaW50cwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQV4cEtleQUFbmV3WFAJAMwIAgkBDEludGVnZXJFbnRyeQIFCXBvaW50c0tleQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcG9pbnRzS2V5AAAJAJEDAgUJbHZsUG9pbnRzAAEFA25pbAUFbmV3WFABF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgtkdWNrQXNzZXRJZAdkZWx0YVhQBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2R1Y2tBc3NldElkBARhZGRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQtkdWNrQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDAwMFE0tTX0FMTE9XX1JPQk9fRFVDS1MJAAACCAUFYXNzZXQGaXNzdWVyBQR0aGlzBwkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFC1JPQk9fUFJFRklYBwkBE3VwZGF0ZVN0YXRzSW50ZXJuYWwECQEMa2V5VXNlckxldmVsAQUEYWRkcgkBCWtleVVzZXJYUAEFBGFkZHIJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIFB2RlbHRhWFAJARN1cGRhdGVTdGF0c0ludGVybmFsBAkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkCQEJa2V5RHVja1hQAQULZHVja0Fzc2V0SWQJARFrZXlEdWNrRnJlZVBvaW50cwEFC2R1Y2tBc3NldElkBQdkZWx0YVhQARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgRhZGRyB2RlbHRhWFAJARN1cGRhdGVTdGF0c0ludGVybmFsBAkBDGtleVVzZXJMZXZlbAEFBGFkZHIJAQlrZXlVc2VyWFABBQRhZGRyCQERa2V5VXNlckZyZWVQb2ludHMBBQRhZGRyBQdkZWx0YVhQARJhY3RpdmF0ZU9uYm9hcmRBcnQBBGFkZHIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQIcmVmQnlLZXkJAQ9rZXlBZGRyZXNzUmVmQnkBBQRhZGRyBAVyZWZCeQkAoggBBQhyZWZCeUtleQMJAQEhAQkBCWlzRGVmaW5lZAEFBXJlZkJ5CQACAQIpWW91IGFyZSBub3QgZWxpZ2libGUgZm9yIE9OQk9BUkQgYXJ0aWZhY3QEBmFydEtleQkBHGtleU9uYm9hcmRBcnREdWNrQWN0aXZhdGVkQnkBBQRhZGRyBAdhcnREdWNrCQCiCAEFBmFydEtleQMJAQlpc0RlZmluZWQBBQdhcnREdWNrCQACAQkArAICAi9Zb3UgYWxyZWFkeSB1c2VkIHlvdXIgT05CT0FSRCBhcnRpZmFjdCBvbiBkdWNrIAkBBXZhbHVlAQUHYXJ0RHVjawQQZHVja0FjdGl2YXRvcktleQkBHGtleU9uYm9hcmRBcnRBY3RpdmF0ZWRPbkR1Y2sBBQtkdWNrQXNzZXRJZAQNZHVja0FjdGl2YXRvcgkAoggBBRBkdWNrQWN0aXZhdG9yS2V5AwkBCWlzRGVmaW5lZAEFDWR1Y2tBY3RpdmF0b3IJAAIBCQCsAgIJAKwCAgkArAICAglUaGUgZHVjayAFC2R1Y2tBc3NldElkAjQgYWxyZWFkeSBnb3QgcG9pbnRzIGZyb20gT05CT0FSRCBhcnRpZmFjdCBmcm9tIHVzZXIgCQEFdmFsdWUBBQ1kdWNrQWN0aXZhdG9yCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGYXJ0S2V5BQtkdWNrQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCBRBkdWNrQWN0aXZhdG9yS2V5BQRhZGRyBQNuaWwICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUJeHBPbmJvYXJkAl8xARJhY3RpdmF0ZVByZXNhbGVBcnQCBGFkZHINbGFuZEFzc2V0SWRJbgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUTY2xhaW1Nb2RlV2hUaGVuRHVjawUNbGFuZEFzc2V0SWRJbgQLbGFuZEFzc2V0SWQIBQFjAl8yBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQNYWN0aXZhdGlvbktleQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQDCQBmAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ1hY3RpdmF0aW9uS2V5AAAAAAkAAgECJVByZXNhbGUgYXJ0aWZhY3QgaXMgYWxyZWFkeSBhY3RpdmF0ZWQDCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIIBQFjAl8zBQpyZWNMYW5kTnVtBQ9QUkVTQUxFTlVNTEFORFMJAAIBCQCsAgIJAKwCAgkArAICBQpMQU5EUFJFRklYAgEgBQtsYW5kQXNzZXRJZAIlIGlzIG5vdCBlbGlnaWJsZSBmb3IgcHJlc2FsZSBhcnRpZmFjdAQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIFC2xhbmRBc3NldElkBQZwaWVjZXMFE2NsYWltTW9kZVdoVGhlbkR1Y2sJAM0IAgkAzQgCCQDNCAIIBQtjbGFpbVJlc3VsdAJfMQkBDEludGVnZXJFbnRyeQIFDWFjdGl2YXRpb25LZXkFBnBpZWNlcwkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al8yCQC5CQIIBQtjbGFpbVJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al80CQC5CQIIBQtjbGFpbVJlc3VsdAJfNQIBOgEPY2hlY2tUb3VybmFtZW50AQtkdWNrQXNzZXRJZAQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUSdG91cm5hbWVudENvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBVAcDAwMJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FD2xvY0lkeENvbnRpbmVudAUGbGFzdElkCQAAAgkAkQMCBQdkeW5hbWljBQ50RHluYW1pY1N0YXR1cwIKSU5QUk9HUkVTUwcJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQNub3cHCQACAQIqWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIHRoZSB0b3VybmFtZW50CQEJYXNCb29sZWFuAQkA/AcEBQR0aGlzAhZleGl0VG91cm5hbWVudEludGVybmFsCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAENbWVyZ2VJbnRlcm5hbAYLbmV3TGFuZFNpemUIbmV3TGV2ZWwHZm9ybXVsYQRhZGRyDGxhbmRBc3NldElkcwduZWVkTWF0BAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh1tZXJnZUludGVybmFsX2NoZWNrVG91cm5hbWVudAoBCmNoZWNrTWVyZ2UCA2FjYwtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUHdGltZUtleQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBAljb250aW5lbnQJAJEDAgUBZAUMcmVjQ29udGluZW50AwMJAQIhPQIIBQNhY2MCXzMCAAkBAiE9AggFA2FjYwJfMwUJY29udGluZW50BwkAAgECLkxhbmRzIHNob3VsZCBiZSBvbiB0aGUgc2FtZSBjb250aW5lbnQgdG8gbWVyZ2UECGxhbmRTaXplCQCRAwIFAWQFC3JlY0xhbmRTaXplBAdzaXplc0luCAUDYWNjAl8xBAFpCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALMJAgUHc2l6ZXNJbgUIbGFuZFNpemUCJ1lvdSBoYXZlbid0IHBhc3NlZCBhbGwgdGhlIGxhbmRzIG5lZWRlZAQIc2l6ZXNPdXQJAKwCAgkArwICBQdzaXplc0luBQFpCQCwAgIFB3NpemVzSW4JAGQCBQFpAAEEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEFCGxhbmRTaXplBARhcnRzCQBkAggFA2FjYwJfMgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQIcmVxTGV2ZWwEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAAAwMJAAACAgFNBQckbWF0Y2gwAAQDCQAAAgIBTAUHJG1hdGNoMAAFAwkAAAICAlhMBQckbWF0Y2gwAAYJAAIBAhpPbmx5IFMsIE0sIEwsIFhMIGNhbiBtZXJnZQMJAQIhPQIFCmluZnJhTGV2ZWwFCHJlcUxldmVsCQACAQIiQWxsIGxhbmRzIHNob3VsZCBiZSBtYXhlZCB0byBtZXJnZQQHbGFuZE51bQkAkQMCBQFkBQpyZWNMYW5kTnVtBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMECWRlbHRhVGltZQkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQlzYXZlZFRpbWUDCQBmAgAABQlkZWx0YVRpbWUJAAIBCQCsAgIJAKwCAgkArAICAiZTYXZlZCB0aW1lc3RhbXAgaXMgaW4gZnV0dXJlLCBzYXZlZCA9IAkApAMBBQlzYXZlZFRpbWUCDCwgY3VycmVudCA9IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBWJwUmVzCQEGYWRkUmVzBQkAtQkCCAUDYWNjAl80AgFfBQ10ZXJyYWluQ291bnRzBQlkZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQQFcHJvcHMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwJfNgUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEBmNQcm9wcwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjA18xMAUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEC3N1bVRlcnJhaW5zCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MCXzkFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABBAVsYW5kcwgFA2FjYwJfNwQDaWR4CQDPCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEFA2lkeAkAAgEJAKwCAgIgWW91ciBzdGFrZWQgbGFuZHMgZG9uJ3QgY29udGFpbiAFC2xhbmRBc3NldElkBAljdXN0b21LZXkJARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEFC2xhbmRBc3NldElkBApjdXN0b21OYW1lCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1c3RvbUtleQIACQCcCgoFCHNpemVzT3V0BQRhcnRzBQljb250aW5lbnQFBWJwUmVzCQDOCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCAUDYWNjAl81CQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQRhZGRyCQELRGVsZXRlRW50cnkBCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0JAQtEZWxldGVFbnRyeQEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFC2xhbmRBc3NldElkBQRhZGRyCQELRGVsZXRlRW50cnkBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQkBC0RlbGV0ZUVudHJ5AQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBBQljdXN0b21LZXkJAQRCdXJuAgkA2QQBBQtsYW5kQXNzZXRJZAABAwkBAiE9AgUKY3VzdG9tTmFtZQIACQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUFA25pbAUDbmlsBQVwcm9wcwkA0QgCBQVsYW5kcwkBBXZhbHVlAQUDaWR4CQBkAggFA2FjYwJfOAUGcGllY2VzBQtzdW1UZXJyYWlucwUGY1Byb3BzBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvcExpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQRhZGRyBAhsYW5kc1N0cgkAoggBBQhsYW5kc0tleQQHbGFuZHNJbgMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsBAVjb250MAkAkQMCCQC1CQIICQEFdmFsdWUBCQDsBwEJANkEAQkAkQMCBQxsYW5kQXNzZXRJZHMAAAtkZXNjcmlwdGlvbgIBXwUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEFBWNvbnQwAgswXzBfMF8wXzBfMAIBXwQBcgoAAiRsBQxsYW5kQXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCcCgoFB2Zvcm11bGEAAAIACQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwUDbmlsBQhwcm9wTGlzdAUHbGFuZHNJbgAACQC1CQICCzBfMF8wXzBfMF8wAgFfBQljb250UHJvcHMKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCmNoZWNrTWVyZ2UCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFBAljb250aW5lbnQIBQFyAl8zBAxjb250aW5lbnRJZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAzwgCBQpjb250aW5lbnRzBQljb250aW5lbnQJAKwCAgITVW5rbm93biBjb250aW5lbnQ6IAUJY29udGluZW50BAh0ZXJyYWlucwkBE2dlblRlcnJhaW5zRm9yTWVyZ2UCCAUBcgJfOQkAaQIJAQ9udW1QaWVjZXNCeVNpemUBBQtuZXdMYW5kU2l6ZQUFU1NJWkUEB2ZyZWVOdW0JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQ9QUkVTQUxFTlVNTEFORFMAAQQKbmV3TGFuZE51bQkApAMBBQdmcmVlTnVtBAVpc3N1ZQkAwggFCQEHbmZ0TmFtZQIFCm5ld0xhbmROdW0FC25ld0xhbmRTaXplCQC5CQIJAMwIAgUKbmV3TGFuZE51bQkAzAgCBQtuZXdMYW5kU2l6ZQkAzAgCBQh0ZXJyYWlucwkAzAgCBQljb250aW5lbnQFA25pbAIBXwABAAAHBAdhc3NldElkCQC4CAEFBWlzc3VlBA5uZXdMYW5kQXNzZXRJZAkA2AQBBQdhc3NldElkBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwkAZgIFB25lZWRNYXQAAAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwUHbmVlZE1hdAIBXwQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAkAlAoCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCAUBcgJfNQMJAGYCCQCQAwEIBQFyAl83AAAJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIIBQFyAl83AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQMJAGYCCAUBcgJfOAUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMIBQFyAl84CQEMSW50ZWdlckVudHJ5AgkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQdmcmVlTnVtAAEFBWlzc3VlCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFCm5ld0xhbmROdW0FDm5ld0xhbmRBc3NldElkCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUObmV3TGFuZEFzc2V0SWQFBGFkZHIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFCm5ld0xhbmROdW0FBGFkZHIJAQxJbnRlZ2VyRW50cnkCCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQ5uZXdMYW5kQXNzZXRJZAgFAXICXzIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFDm5ld0xhbmRBc3NldElkBQhuZXdMZXZlbAkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQ5uZXdMYW5kQXNzZXRJZAUEYWRkcgUIbmV3TGV2ZWwJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCAUBcgJfNAkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAJALkJAggFAXICXzYCAV8JAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUJY29udGluZW50CQC5CQIIBQFyA18xMAIBXwkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAgUJY29udGluZW50CQDMCAICAUwJAMwIAgUObmV3TGFuZEFzc2V0SWQFA25pbAIBXwkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUEYWRkcgABBQdhc3NldElkBQ5uZXdMYW5kQXNzZXRJZAEDczJtAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgFNAAMCBFNTU1MFBGFkZHIFDGxhbmRBc3NldElkcwAAAQNtMmwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAUwABAIDU01NBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwAEAQRsMnhsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgJYTAAFAgVTU1NNTAUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMALwEGeGwyeHhsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgNYWEwABgIDTFhMBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwA2AQttZXJnZUNvbW1vbgIEYWRkcgxsYW5kQXNzZXRJZHMEByRtYXRjaDAJAJADAQUMbGFuZEFzc2V0SWRzAwkAAAIABAUHJG1hdGNoMAkBA3MybQIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAMFByRtYXRjaDAJAQNtMmwCBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgAFBQckbWF0Y2gwCQEEbDJ4bAIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAIFByRtYXRjaDAJAQZ4bDJ4eGwCBQRhZGRyBQxsYW5kQXNzZXRJZHMJAAIBAg1Vbmtub3duIG1lcmdlAQZwcm9sb2cBAWkDAwkBAiE9AggFAWkMb3JpZ2luQ2FsbGVyBQxyZXN0Q29udHJhY3QJAQt2YWx1ZU9yRWxzZQIJAKAIAQkBCmtleUJsb2NrZWQABwcJAAIBAh9Db250cmFjdHMgYXJlIHVuZGVyIG1haW50ZW5hbmNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYXN0VHhJZEJ5VXNlcgEJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQFA25pbAETdW5zdGFrZUxhbmRJbnRlcm5hbAIEYWRkcgtsYW5kQXNzZXRJZAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQIbGFuZEluZm8JALUJAggJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAtkZXNjcmlwdGlvbgIBXwQIbGFuZFNpemUJAJEDAgUIbGFuZEluZm8FC3JlY0xhbmRTaXplBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBBQhsYW5kU2l6ZQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQhsYW5kSW5mbwULcmVjVGVycmFpbnMECWN1cnJlbnRXaAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEDGN1cnJlbnRXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8EB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBEUBleHRyTmF0aXZlKDEwNTUpAQUHdGltZUtleQQJZGVsdGFUaW1lCQBlAgkBCWZpbmFsVGltZQAFCXNhdmVkVGltZQMJAGYCAAAFCWRlbHRhVGltZQkAAgEJAKwCAgkArAICCQCsAgICJlNhdmVkIHRpbWVzdGFtcCBpcyBpbiBmdXR1cmUsIHNhdmVkID0gCQCkAwEFCXNhdmVkVGltZQIKLCBmaW5hbCA9IAkApAMBCQEJZmluYWxUaW1lAAQWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMEDXJlc0FmdGVyQ2xhaW0JAQ92aXJ0Q2xhaW1BZGRSZXMFBQxjdXJyZW50V2hSZXMFDXRlcnJhaW5Db3VudHMFCWRlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAlhcnRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQAAAQPYWNyZXNGcm9tUGllY2VzCQBkAgkAaAIFBnBpZWNlcwUFTVVMVDgJAGkCCQBoAgkAZAIJAGgCBQZwaWVjZXMFCmluZnJhTGV2ZWwFCWFydFBpZWNlcwUFTVVMVDgABQQMYWNyZXNGcm9tUmVzCQBoAgkAawMIBQ1yZXNBZnRlckNsYWltAl8yBRBSRVNPVVJDRVBSSUNFTUlOBQVNVUxUOAUVVVNEVDJBQ1JFU19NVUxUSVBMSUVSCgEGc3VtTWF0AgNhY2MEaXRlbQkAZAIFA2FjYwkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAV3aE1hdAoAAiRsCQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAIBXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEGc3VtTWF0AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGBAxhY3Jlc0Zyb21NYXQJAGgCCQBrAwUFd2hNYXQJAGgCAAIFEFJFU09VUkNFUFJJQ0VNSU4FBU1VTFQ4BRVVU0RUMkFDUkVTX01VTFRJUExJRVIEBXByb2RzAwkAAAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAV8KAQdzdW1Qcm9kAgNhY2MEaXRlbQQBaggFA2FjYwJfMgQLcmVjaXBlQ29lZmYJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAUBagIBXwUJcklkeENvZWZmCQCUCgIJAGQCCAUDYWNjAl8xCQBoAgkAaAIJAQ1wYXJzZUludFZhbHVlAQUEaXRlbQULcmVjaXBlQ29lZmYFBU1VTFQ2CQBkAgUBagABBAZ3aFByb2QKAAIkbAUFcHJvZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAAACgEFJGYxXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzdW1Qcm9kAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyNAkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAQNYWNyZXNGcm9tUHJvZAkAaAIJAGsDCAUGd2hQcm9kAl8xCQBoAgACBRBSRVNPVVJDRVBSSUNFTUlOBQVNVUxUOAUVVVNEVDJBQ1JFU19NVUxUSVBMSUVSCQCWCgQFD2FjcmVzRnJvbVBpZWNlcwUMYWNyZXNGcm9tUmVzBQxhY3Jlc0Zyb21NYXQFDWFjcmVzRnJvbVByb2QBE3Vuc3Rha2VEdWNrSW50ZXJuYWwCBGFkZHILZHVja0Fzc2V0SWQEBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAtjdXJyZW50U2VncwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAIBXwQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkECXRlbXBQcm9kQgkBBmRyZXNzQgQFC2N1cnJlbnRTZWdzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QGBQNuaWwECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCXRlbXBQcm9kQgoBCXN1bVJlc01hdAIDYWNjBGl0ZW0JAGQCBQNhY2MJAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQFYnBSZXMKAAIkbAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwIBXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJc3VtUmVzTWF0AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGBAxhY3Jlc0Zyb21SZXMJAGgCCQBrAwUFYnBSZXMFEFJFU09VUkNFUFJJQ0VNSU4FBU1VTFQ4BRVVU0RUMkFDUkVTX01VTFRJUExJRVIEBWJwTWF0CgACJGwJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8KAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCXN1bVJlc01hdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQMYWNyZXNGcm9tTWF0CQBoAgkAawMFBWJwTWF0CQBoAgACBRBSRVNPVVJDRVBSSUNFTUlOBQVNVUxUOAUVVVNEVDJBQ1JFU19NVUxUSVBMSUVSBAVwcm9kcwMJAAACBQpuZXdQcm9kU3RyAgAFA25pbAkAvAkCBQpuZXdQcm9kU3RyAgFfCgEHc3VtUHJvZAIDYWNjBGl0ZW0EAWoIBQNhY2MCXzIEC3JlY2lwZUNvZWZmCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgFAWoCAV8FCXJJZHhDb2VmZgkAlAoCCQBkAggFA2FjYwJfMQkAaAIJAGgCCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0FC3JlY2lwZUNvZWZmBQVNVUxUNgkAZAIFAWoAAQQGYnBQcm9kCgACJGwFBXByb2RzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCAAAAAAoBBSRmMl8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHc3VtUHJvZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMl8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjQJAQUkZjJfMgIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgEDWFjcmVzRnJvbVByb2QJAGgCCQBrAwgFBmJwUHJvZAJfMQkAaAIAAgUQUkVTT1VSQ0VQUklDRU1JTgUFTVVMVDgFFVVTRFQyQUNSRVNfTVVMVElQTElFUgkAlQoDBQxhY3Jlc0Zyb21SZXMFDGFjcmVzRnJvbU1hdAUNYWNyZXNGcm9tUHJvZC4BaQENY29uc3RydWN0b3JWMQEIcmVzdEFkZHIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5UmVzdEFkZHJlc3MABQhyZXN0QWRkcgUDbmlsAWkBC3NhdmVJbnRlZ2VyAgNrZXkGYW1vdW50AwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIgc2F2ZUludGVnZXIgaXMgbm90IHB1YmxpYyBtZXRob2QJAMwIAgkBDEludGVnZXJFbnRyeQIFA2tleQUGYW1vdW50BQNuaWwBaQEKc2V0QmxvY2tlZAEJaXNCbG9ja2VkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRcGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQprZXlCbG9ja2VkAAUJaXNCbG9ja2VkBQNuaWwBaQEJc3Rha2VMYW5kAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHYXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIIBQNwbXQGYW1vdW50AAEJAAIBCQCsAgIJAKwCAgIETkZUIAUKTEFORFBSRUZJWAIkIHRva2VuIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBwYXltZW50BAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkAwkBAiE9AggFBWFzc2V0Bmlzc3VlcgUEdGhpcwkAAgECF1Vua25vd24gaXNzdWVyIG9mIHRva2VuAwkBASEBCQEIY29udGFpbnMCCAUFYXNzZXQEbmFtZQUKTEFORFBSRUZJWAkAAgEJAKwCAgkArAICAglPbmx5IE5GVCAFCkxBTkRQUkVGSVgCFCB0b2tlbnMgYXJlIGFjY2VwdGVkBAtsYW5kTnVtU2l6ZQkAsAICCAUFYXNzZXQEbmFtZQAEBAdsYW5kTnVtAwkBCGNvbnRhaW5zAgULbGFuZE51bVNpemUCA1hYTAkAswICBQtsYW5kTnVtU2l6ZQADAwkBCGNvbnRhaW5zAgULbGFuZE51bVNpemUCAlhMCQCzAgIFC2xhbmROdW1TaXplAAIJALMCAgULbGFuZE51bVNpemUAAQMJAQEhAQkBCWlzRGVmaW5lZAEJALYJAQUHbGFuZE51bQkAAgEJAKwCAgIeQ2Fubm90IHBhcnNlIGxhbmQgbnVtYmVyIGZyb20gCAUFYXNzZXQEbmFtZQQLbGFuZEFzc2V0SWQJANgEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAMJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCEiBpcyBhbHJlYWR5IHN0YWtlZAQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8EDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFcHJvcHMJARF1cGRhdGVQcm9wb3J0aW9ucwMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABBAxyZXNCeUNvbnRLZXkJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQkAkQMCBQFkBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFDHJlc0J5Q29udEtleQILMF8wXzBfMF8wXzACAV8EEHVwZGF0ZWRDb250UHJvcHMJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABAgFfBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFB2FkZHJlc3MECGxhbmRzU3RyCQCiCAEFCGxhbmRzS2V5BAVsYW5kcwMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFBWxhbmRzBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgIiWW91ciBzdGFrZWQgbGFuZHMgYWxyZWFkeSBjb250YWluIAULbGFuZEFzc2V0SWQDCQBnAgkAkAMBBQVsYW5kcwUYTUFYX0xBTkRTX1NUQUtFRF9CWV9VU0VSCQACAQkArAICCQCsAgICGVlvdXIgYWxyZWFkeSBzdGFrZWQgbWF4ICgJAKQDAQUYTUFYX0xBTkRTX1NUQUtFRF9CWV9VU0VSAgcpIGxhbmRzBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFB2FkZHJlc3MECW9sZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAQJd2xnUmVzdWx0CQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUHYWRkcmVzcwUDbmlsBQNuaWwJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd0aW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAgkAzQgCBQVsYW5kcwULbGFuZEFzc2V0SWQCAV8JAMwIAgkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQkAZAIFCW9sZFBpZWNlcwUGcGllY2VzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5TGFuZE51bVRvT3duZXIBBQdsYW5kTnVtBQdhZGRyZXNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgULbGFuZEFzc2V0SWQFB2FkZHJlc3MFCmluZnJhTGV2ZWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAUFcHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AgUMcmVzQnlDb250S2V5BRB1cGRhdGVkQ29udFByb3BzBQNuaWwFDXByb2xvZ0FjdGlvbnMFCXdsZ1Jlc3VsdAFpAQt1bnN0YWtlTGFuZAENbGFuZEFzc2V0SWRJbgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQZjYWxsZXIEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFDWNsYWltTW9kZUR1Y2sFDWxhbmRBc3NldElkSW4EC2xhbmRBc3NldElkCAUBYwJfMgQBZAgFAWMCXzMECGxhbmRzS2V5CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUEYWRkcgQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBAVwcm9wcwkBEXVwZGF0ZVByb3BvcnRpb25zAwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEDHJlc0J5Q29udEtleQkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBCQCRAwIFAWQFDHJlY0NvbnRpbmVudAQJY29udFByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUMcmVzQnlDb250S2V5AgswXzBfMF8wXzBfMAIBXwQQdXBkYXRlZENvbnRQcm9wcwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCWNvbnRQcm9wcwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wECAV8EC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyBQtsYW5kQXNzZXRJZAUGcGllY2VzBQ1jbGFpbU1vZGVEdWNrBAVsYW5kcwkAvQkCCQELdmFsdWVPckVsc2UCCQCiCAEFCGxhbmRzS2V5AgACAV8EA2lkeAkAzwgCBQVsYW5kcwULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBBQNpZHgJAAIBCQCsAgICIFlvdXIgc3Rha2VkIGxhbmRzIGRvbid0IGNvbnRhaW4gBQtsYW5kQXNzZXRJZAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQOZ292UmVsZWFzZVRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgULZ292Q29udHJhY3QJARVrZXlVc2VyR3dsUmVsZWFzZVRpbWUBBQRhZGRyAAADCQBnAgUOZ292UmVsZWFzZVRpbWUFA25vdwkAAgEJAKwCAgI5WW91ciBnV0wgYXJlIHRha2luZyBwYXJ0IGluIHZvdGluZywgY2Fubm90IHVuc3Rha2UgdW50aWwgCQCkAwEFDmdvdlJlbGVhc2VUaW1lBA5hcmJSZWxlYXNlVGltZQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgULd2xnQ29udHJhY3QJARRrZXlMYXN0QXJiVGltZUJ5VXNlcgEFBGFkZHIAAAUOYXJiaXRyYWdlRGVsYXkDCQBmAgUOYXJiUmVsZWFzZVRpbWUFA25vdwkAAgEJAKwCAgI/WW91ciBzdGFrZWQgbGFuZHMgdG9vayBwYXJ0IGluIGFyYml0cmFnZSwgY2Fubm90IHVuc3Rha2UgdW50aWwgCQCkAwEFDmFyYlJlbGVhc2VUaW1lBAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUEYWRkcgQMc3Rha2VkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAABAluZXdQaWVjZXMDCQBmAgUGcGllY2VzBQxzdGFrZWRQaWVjZXMAAAkAZQIFDHN0YWtlZFBpZWNlcwUGcGllY2VzBAl3bGdSZXN1bHQJAPwHBAULd2xnQ29udHJhY3QCEm9uU3Rha2VVbnN0YWtlTGFuZAkAzAgCBQRhZGRyBQNuaWwFA25pbAkAlAoCCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEJANkEAQULbGFuZEFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQRhZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAFBXByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIFDHJlc0J5Q29udEtleQUQdXBkYXRlZENvbnRQcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzIJALkJAggFC2NsYWltUmVzdWx0Al8zAgE6CQDMCAIDCQBmAgkAkAMBBQVsYW5kcwABCQELU3RyaW5nRW50cnkCBQhsYW5kc0tleQkAuwkCCQDRCAIFBWxhbmRzCQEFdmFsdWUBBQNpZHgCAV8JAQtEZWxldGVFbnRyeQEFCGxhbmRzS2V5CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkFCW5ld1BpZWNlcwUDbmlsBQ1wcm9sb2dBY3Rpb25zBQl3bGdSZXN1bHQBaQETdW5zdGFrZUxhbmRDYWxsYmFjawILbGFuZEFzc2V0SWQEYWRkcgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyBRBhY3JlczJBZGRyZXNzU3RyCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEDXVuc3Rha2VSZXN1bHQJARN1bnN0YWtlTGFuZEludGVybmFsAgUEYWRkcgULbGFuZEFzc2V0SWQECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFBGFkZHIFA25pbAUDbmlsCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUEYWRkcgABCQDZBAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgUDbmlsCQCXCgUIBQ11bnN0YWtlUmVzdWx0Al8xCAUNdW5zdGFrZVJlc3VsdAJfMggFDXVuc3Rha2VSZXN1bHQCXzMIBQ11bnN0YWtlUmVzdWx0Al80BQl3bGdSZXN1bHQBaQETdW5zdGFrZUxhbmRSRUFET05MWQILbGFuZEFzc2V0SWQEYWRkcgQNdW5zdGFrZVJlc3VsdAkBE3Vuc3Rha2VMYW5kSW50ZXJuYWwCBQRhZGRyBQtsYW5kQXNzZXRJZAkAlAoCBQNuaWwFDXVuc3Rha2VSZXN1bHQBaQEcdW5zdGFrZUxhbmRzRmluYWxpemVDYWxsYmFjawEEYWRkcgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyBRBhY3JlczJBZGRyZXNzU3RyCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAJQKAgkAzAgCCQELRGVsZXRlRW50cnkBCQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUEYWRkcgkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIFA25pbAAAAWkBCXN0YWtlRHVjawAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkRVQ0tQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAQGaXNSb2JvAwMFE0tTX0FMTE9XX1JPQk9fRFVDS1MJAAACCAUFYXNzZXQGaXNzdWVyBQR0aGlzBwkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFC1JPQk9fUFJFRklYBwMDAwkBAiE9AggFBWFzc2V0Bmlzc3VlcgUNaW5jdWJhdG9yQWRkcgkBAiE9AggFBWFzc2V0Bmlzc3VlcgULYnJlZWRlckFkZHIHCQEBIQEFBmlzUm9ibwcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICElVua25vd24gaXNzdWVyIG9mIAUKRFVDS1BSRUZJWAIEIG9yIAULUk9CT19QUkVGSVgCBiB0b2tlbgMDCQEBIQEJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQpEVUNLUFJFRklYCQEBIQEFBmlzUm9ibwcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICCU9ubHkgTkZUIAUKRFVDS1BSRUZJWAIEIG9yIAULUk9CT19QUkVGSVgCFCB0b2tlbnMgYXJlIGFjY2VwdGVkBAphc3NldElkU3RyCQDYBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUKYXNzZXRJZFN0cgMJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCEiBpcyBhbHJlYWR5IHN0YWtlZAMJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAAIBCQCsAgICHVlvdSBhbHJlYWR5IHN0YWtlZCBvbmUgZHVjazogCAUFYXNzZXQEbmFtZQQGbG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgQIbG9jYXRpb24JAKIIAQUGbG9jS2V5BAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQUKYXNzZXRJZFN0cgQIYmFja3BhY2sJAKIIAQUFYnBLZXkECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQphc3NldElkU3RyBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFCmFzc2V0SWRTdHIAAAQJY3VySGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFAJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKRFVDS1BSRUZJWAkA2AQBBQdhc3NldElkBQdhZGRyZXNzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwUKYXNzZXRJZFN0cgUDbmlsAwkBCWlzRGVmaW5lZAEFCGxvY2F0aW9uBQNuaWwJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZsb2NLZXkFD0RFRkFVTFRMT0NBVElPTgUDbmlsAwkBCWlzRGVmaW5lZAEFCGJhY2twYWNrBQNuaWwJAM4IAgkAzQgCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5AhowOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOgUDbmlsCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQljdXJIZWFsdGgFDXByb2xvZ0FjdGlvbnMBaQELdW5zdGFrZUR1Y2sBCmFzc2V0SWRTdHIEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEB2Fzc2V0SWQJANkEAQUKYXNzZXRJZFN0cgQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUKYXNzZXRJZFN0cgMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAAIBCQCsAgIJAKwCAgIJVGhlIGR1Y2sgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQphc3NldElkU3RyCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQdhZGRyZXNzCQACAQIXU3Rha2VkIE5GVCBpcyBub3QgeW91cnMDCQEPY2hlY2tUb3VybmFtZW50AQUKYXNzZXRJZFN0cgkAAgECG3Vuc3Rha2VEdWNrX2NoZWNrVG91cm5hbWVudAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFCmFzc2V0SWRTdHIEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQUKYXNzZXRJZFN0cgAABAZoZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGYCBQVtYXhIUAUGaGVhbHRoCQACAQkArAICCQCsAgICGVBsZWFzZSBoZWFsIHlvdXIgZHVjayB0byAJAKQDAQUFbWF4SFACE2hwIGJlZm9yZSB1bnN0YWtpbmcJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBBQd0aW1lS2V5CQDMCAIJAQtEZWxldGVFbnRyeQEFCWtleUhlYWx0aAkAzAgCCQELRGVsZXRlRW50cnkBCQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MFA25pbAUNcHJvbG9nQWN0aW9ucwFpARN1bnN0YWtlRHVja0NhbGxiYWNrAgtkdWNrQXNzZXRJZARhZGRyAwkBAiE9AgkApQgBCAUBaQZjYWxsZXIFEGFjcmVzMkFkZHJlc3NTdHIJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQNdW5zdGFrZVJlc3VsdAkBE3Vuc3Rha2VEdWNrSW50ZXJuYWwCBQRhZGRyBQtkdWNrQXNzZXRJZAkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBGFkZHIAAQkA2QQBBQtkdWNrQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2R1Y2tBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARBrZXlEdWNrSWRUb093bmVyAQULZHVja0Fzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYBQtkdWNrQXNzZXRJZAUEYWRkcgkAzAgCCQELRGVsZXRlRW50cnkBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyBQNuaWwFDXVuc3Rha2VSZXN1bHQBaQETdW5zdGFrZUR1Y2tSRUFET05MWQILZHVja0Fzc2V0SWQEYWRkcgQNdW5zdGFrZVJlc3VsdAkBE3Vuc3Rha2VEdWNrSW50ZXJuYWwCBQRhZGRyBQtkdWNrQXNzZXRJZAkAlAoCBQNuaWwFDXVuc3Rha2VSZXN1bHQBaQEIY2xhaW1SZXMCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBnJlc3VsdAkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQZhbW91bnQFDWNsYWltTW9kZUR1Y2sFDmxhbmRBc3NldElkU3RyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQJAJQKAgkAzggCCQDNCAIJAM0IAgkAzggCCAUGcmVzdWx0Al8xCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGsDBQd4cENsYWltBQZhbW91bnQFBU1VTFQ4Al8xCQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al8yCQC5CQIIBQZyZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzQJALkJAggFBnJlc3VsdAJfNQIBOgUNcHJvbG9nQWN0aW9ucwkAkQMCCAUGcmVzdWx0Al8zBQhicElkeFJlcwFpAQxjbGFpbVJlc1RvV0gCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBnJlc3VsdAkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQZhbW91bnQFC2NsYWltTW9kZVdoBQ5sYW5kQXNzZXRJZFN0cgkAlAoCCQDOCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIJAGsDBQd4cENsYWltBQZhbW91bnQFBU1VTFQ4Al8xCQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al8yCQC5CQIIBQZyZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzQJALkJAggFBnJlc3VsdAJfNQIBOgUNcHJvbG9nQWN0aW9ucwkAkQMCCAUGcmVzdWx0Al81BQh3aElkeFJlcwFpAQZmbGlnaHQCB21lc3NhZ2UDc2lnBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAh1c2VyQWRkcgkApQgBCAUBaQZjYWxsZXIEAWYJAQxmbGlnaHRDb21tb24DBQh1c2VyQWRkcgUHbWVzc2FnZQUDc2lnBAVuZXdIUAgFAWYCXzEEC2R1Y2tBc3NldElkCAUBZgJfMgQGbG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFBmxvY0tleQUPREVGQVVMVExPQ0FUSU9OBAtuZXdMb2NhdGlvbggFAWYCXzQDCQAAAgULbmV3TG9jYXRpb24FC2N1ckxvY2F0aW9uCQACAQIiWW91IGNhbid0IGZseSB0byB0aGUgc2FtZSBsb2NhdGlvbgQGbmV3TG9jCQC1CQIFC25ld0xvY2F0aW9uAgFfBAZpc1RvdXIJAAACCQCRAwIFBm5ld0xvYwUKbG9jSWR4VHlwZQIBVAQHaXNEZWxpdgkAAAIJAJEDAgUGbmV3TG9jBQpsb2NJZHhUeXBlAgFEBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQJY3VycmVudEVxCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAQNJHQwNzI1MzA3MjYzNgkBEXN1YnRyYWN0RXF1aXBtZW50AgUJY3VycmVudEVxCAUBZgJfNQQFbmV3RXEIBQ0kdDA3MjUzMDcyNjM2Al8xBA9zaG91bGRaZXJvQnVmZnMIBQ0kdDA3MjUzMDcyNjM2Al8yBAdpZ25vcmVkCAUNJHQwNzI1MzA3MjYzNgJfMwQNJHQwNzI2Mzk3NDQ3MQMJAQEhAQkBCW9uTWlzc2lvbgIFEnRvdXJuYW1lbnRDb250cmFjdAULY3VyTG9jYXRpb24DBQZpc1RvdXIJAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ABQMJAQEhAQUHaXNEZWxpdgMJAGYCBQVuZXdIUAAACQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAkAlAoCBQtjdXJMb2NhdGlvbgAAAwkAZgIFBW5ld0hQAAAEAXMJAPwHBAUEdGhpcwIPcHJvY2Vzc0RlbGl2ZXJ5CQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAMJAAACBQFzBQFzCQCUCgIFC2N1ckxvY2F0aW9uBQVuZXdIUAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAlAoCBQtjdXJMb2NhdGlvbgAAAwkBDmlzSW5Ub3VybmFtZW50AgUSdG91cm5hbWVudENvbnRyYWN0BQtjdXJMb2NhdGlvbgMJAQEhAQkBDmlzSW5Ub3VybmFtZW50AgUSdG91cm5hbWVudENvbnRyYWN0BQtuZXdMb2NhdGlvbgkAAgECKllvdXIgZHVjayBpcyB0YWtpbmcgcGFydCBpbiB0aGUgdG91cm5hbWVudAQFc2NvcmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZuZXdMb2MFCGxvY0lkeElkBAZjdXJMb2MJALUJAgULY3VyTG9jYXRpb24CAV8EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAMJAQIhPQIFBXNjb3JlCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBmN1ckxvYwUIbG9jSWR4SWQAAQkBDGNoZWF0QXR0ZW1wdAMFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgAHAwkAZgIFBW5ld0hQAAAECWxvY2FsQmVzdAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QJARprZXlCZXN0UmVzdWx0QnlUb3VyQW5kRHVjawIFBmxhc3RJZAULZHVja0Fzc2V0SWQAAAQIdXBkTG9jYWwDCQBmAgUFc2NvcmUFCWxvY2FsQmVzdAkA/AcEBRJ0b3VybmFtZW50Q29udHJhY3QCDnNhdmVEdWNrUmVzdWx0CQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFBXNjb3JlBQNuaWwFA25pbAUEdW5pdAMJAAACBQh1cGRMb2NhbAUIdXBkTG9jYWwJAJQKAgULbmV3TG9jYXRpb24FBW5ld0hQCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIFC2N1ckxvY2F0aW9uAAAJAAIBCQCsAgICFFVua25vd24gY3VyTG9jYXRpb246BQtjdXJMb2NhdGlvbgQJbG9jVG9TYXZlCAUNJHQwNzI2Mzk3NDQ3MQJfMQQIaHBUb1NhdmUIBQ0kdDA3MjYzOTc0NDcxAl8yCQCUCgIJAM4IAgkAzggCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGbG9jS2V5BQlsb2NUb1NhdmUJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQhocFRvU2F2ZQUDbmlsBQ1wcm9sb2dBY3Rpb25zAwUPc2hvdWxkWmVyb0J1ZmZzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wBQNuaWwFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkAwkAZgIFBW5ld0hQAAAFD3hwU3VjY2Vzc0ZsaWdodAUMeHBGYWlsRmxpZ2h0Al8xCAUBZgJfMwFpAQRoZWFsAwpxdWFudGl0eUwxCnF1YW50aXR5TDIKcXVhbnRpdHlMMwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDAwMJAGYCAAAFCnF1YW50aXR5TDEGCQBmAgAABQpxdWFudGl0eUwyBgkAZgIAAAUKcXVhbnRpdHlMMwkAAgECG1F1YW50aXR5IGNhbm5vdCBiZSBuZWdhdGl2ZQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFGhlYWxfY2hlY2tUb3VybmFtZW50BANxdHMJAMwIAgUKcXVhbnRpdHlMMQkAzAgCBQpxdWFudGl0eUwyCQDMCAIFCnF1YW50aXR5TDMFA25pbAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAECW9sZEhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkAZwIFCW9sZEhlYWx0aAUFbWF4SFAJAAIBCQCsAgIJAKwCAgIPSFAg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bnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFmhlYWxFU19jaGVja1RvdXJuYW1lbnQECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAlvbGRIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGYCBQlvbGRIZWFsdGgAAAkAAgECKEhQIHNob3VsZCBiZSAwIHRvIGNhbGwgRW1lcmdlbmN5IFNlcnZpY2UEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwQNbWVkS2l0QW1vdW50MQMJAGYCCQCQAwEFCHByb2RMaXN0AAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAAAAAAEDW1lZEtpdEFtb3VudDIDCQBmAgkAkAMBBQhwcm9kTGlzdAABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAQAABA1tZWRLaXRBbW91bnQzAwkAZgIJAJADAQUIcHJvZExpc3QAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAIAAAMDAwkAZgIFDW1lZEtpdEFtb3VudDEAAAYJAGYCBQ1tZWRLaXRBbW91bnQyAAAGCQBmAgUNbWVkS2l0QW1vdW50MwAACQACAQIfWW91IGhhdmUgdG8gdXNlIG93biBNZWRpY2FsIEtpdAQIZXhpc3RTdHIJAJ0IAgUPZWNvbm9teUNvbnRyYWN0CQEOa2V5RXNXYXJlaG91c2UABAxleGlzdEFtb3VudHMDCQEJaXNEZWZpbmVkAQUIZXhpc3RTdHIJALwJAgkBBXZhbHVlAQUIZXhpc3RTdHICAV8FA25pbAQLZXhpc3RBbW91bnQDCQBmAgkAkAMBBQxleGlzdEFtb3VudHMAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGV4aXN0QW1vdW50cwAAAAADCQBnAgAABQtleGlzdEFtb3VudAkAAgECOVRoZXJlIGFyZSBubyBNZWRpY2FsIEtpdHMgTDEgYXQgRW1lcmdlbmN5IFNlcnZpY2Ugc3RvcmFnZQQJbmV3SGVhbHRoCQBkAgUJb2xkSGVhbHRoCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgAAAIBXwUKcklkeEVmZmVjdAQFbmV3RVMJALkJAgkAzAgCCQCkAwEJAGUCBQtleGlzdEFtb3VudAABCQDRCAIFDGV4aXN0QW1vdW50cwAAAgFfBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4AAACAV8ECHRvdGFsTWF0CQESZ2V0UmVjaXBlTWF0ZXJpYWxzAQUGcmVjaXBlBAlzZWxsUHJpY2UJAGsDCQBoAgUIdG90YWxNYXQFCkVTU0VMTENPRUYFEFJFU09VUkNFUFJJQ0VNSU4JAGgCBQVNVUxUOAUOUFJPRFVDVFBLR1NJWkUDCQECIT0CCAUDcG10BmFtb3VudAUJc2VsbFByaWNlCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUJc2VsbFByaWNlBAZyZXN1bHQJAQhhc1N0cmluZwEJAPwHBAUPZWNvbm9teUNvbnRyYWN0Ag91cGRhdGVFc1N0b3JhZ2UJAMwIAgUFbmV3RVMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgULdXNkdEFzc2V0SWQFCXNlbGxQcmljZQUDbmlsCQCUCgIJAM4IAgkAzQgCBQ1wcm9sb2dBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQluZXdIZWFsdGgICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUIeHBDYWxsRVMCXzEFBnJlc3VsdAFpAQ51cGRhdGVCYWNrcGFjawILZHVja0Fzc2V0SWQHbmV3UGFjawMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQIRcGVybWlzc2lvbiBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAUHbmV3UGFjawUDbmlsBQduZXdQYWNrAWkBD2NvbW1pdEZvclJhbmRvbQAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpBAtmaW5pc2hCbG9jawkAZAIFBmhlaWdodAULcmFuZG9tRGVsYXkEBGFkZHIJAKUIAQgFAWkGY2FsbGVyCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCWtleUNvbW1pdAEFBGFkZHIFC2ZpbmlzaEJsb2NrBQNuaWwFDXByb2xvZ0FjdGlvbnMFC2ZpbmlzaEJsb2NrAWkBDHJldmVhbFJhbmRvbQEIbWF4VmFsdWUEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpBARhZGRyCQClCAEIBQFpBmNhbGxlcgQJZmluaXNoS2V5CQEJa2V5Q29tbWl0AQUEYWRkcgQLZmluaXNoQmxvY2sJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQlmaW5pc2hLZXkCJFlvdSBoYXZlIHRvIGNvbW1pdEZvclJhbmRvbSgpIGZpcnN0IQMJAGYCBQtmaW5pc2hCbG9jawUGaGVpZ2h0CQACAQkArAICAjRSYW5kb20gbnVtYmVyIGlzIG5vdCByZWFkeSB5ZXQsIHdhaXQgdW50aWwgaGVpZ2h0ID0gCQCkAwEFC2ZpbmlzaEJsb2NrBAdlbnRyb3B5CQEFdmFsdWUBCAkBBXZhbHVlAQkA7QcBBQtmaW5pc2hCbG9jawN2cmYEBHNhbHQJAJsDAQkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5TGFzdFR4SWRCeVVzZXIBBQRhZGRyAgAEBHJhbmQJAQ9nZXRSYW5kb21OdW1iZXIDBQhtYXhWYWx1ZQUEc2FsdAUHZW50cm9weQkAlAoCCQDOCAIJAMwIAgkBC0RlbGV0ZUVudHJ5AQUJZmluaXNoS2V5BQNuaWwFDXByb2xvZ0FjdGlvbnMFBHJhbmQBaQEIYnV5U0xhbmQABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhAwkBAiE9AggFA3BtdAZhbW91bnQFB0VYUFVTRFQJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQdFWFBVU0RUBAZyZXN1bHQJARJleHBlZGl0aW9uSW50ZXJuYWwCCAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQEC2FjcmVzUmVzdWx0CQEFYXNJbnQBCQD8BwQFDWFjcmVzQ29udHJhY3QCCWJ1cm5BY3JlcwkAzAgCBQxTX0NPU1RfQUNSRVMFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCCQDNCAIIBQZyZXN1bHQCXzEJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCCQClCAEIBQFpBmNhbGxlcgUKeHBOZXdTTGFuZAJfMQUNcHJvbG9nQWN0aW9ucwkAlAoCCAgFBnJlc3VsdAJfMgJfMQULYWNyZXNSZXN1bHQBaQEKZXhwZWRpdGlvbgIHbWVzc2FnZQNzaWcEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQBZgkBDGZsaWdodENvbW1vbgMFCHVzZXJBZGRyBQdtZXNzYWdlBQNzaWcEC2R1Y2tBc3NldElkCAUBZgJfMgQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbUxpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDBgUFbUxpc3QFDEVYUE1BVEVSSUFMUwIBXwQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQECWN1cnJlbnRFcQkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywEDSR0MDgyMzkxODI0OTcJARFzdWJ0cmFjdEVxdWlwbWVudAIFCWN1cnJlbnRFcQgFAWYCXzUEBW5ld0VxCAUNJHQwODIzOTE4MjQ5NwJfMQQPc2hvdWxkWmVyb0J1ZmZzCAUNJHQwODIzOTE4MjQ5NwJfMgQHaWdub3JlZAgFDSR0MDgyMzkxODI0OTcCXzMEAWUJARJleHBlZGl0aW9uSW50ZXJuYWwCCAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQEAmlkCAgFAWUCXzICXzEEBnJlc3VsdAMJAGcCAAAIBQFmAl8xCQCVCgMJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAAACQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQUDbmlsAgAAAAkAlQoDCQDOCAIIBQFlAl8xAwUPc2hvdWxkWmVyb0J1ZmZzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wBQNuaWwJAM0IAgkAzQgCCQDNCAIJAM0IAgUDbmlsCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCCAgFAWUCXzICXzIJAMwIAgIBTAkAzAgCBQJpZAUDbmlsAgFfCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoCAUBZgJfMQkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6BQJpZAgFAWYCXzMDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhpleHBlZGl0aW9uX2NoZWNrVG91cm5hbWVudAQLYWNyZXNSZXN1bHQJAQVhc0ludAEJAPwHBAUNYWNyZXNDb250cmFjdAIJYnVybkFjcmVzCQDMCAIFDFNfQ09TVF9BQ1JFUwUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUKeHBOZXdTTGFuZAJfMQUNcHJvbG9nQWN0aW9ucwkAlQoDCAUGcmVzdWx0Al8yCAUGcmVzdWx0Al8zBQthY3Jlc1Jlc3VsdAFpARBidXlTTGFuZEZvckFjcmVzAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFDGFjcmVzQXNzZXRJZAkAAgECFEFDUkVTIHBheW1lbnRzIG9ubHkhAwkBAiE9AgUDYW10BQxTX0NPU1RfQUNSRVMJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQxTX0NPU1RfQUNSRVMEBnJlc3VsdAkBEmV4cGVkaXRpb25JbnRlcm5hbAIIBQFpBmNhbGxlcggFAWkNdHJhbnNhY3Rpb25JZAQLYWNyZXNSZXN1bHQJAQVhc0ludAEJAPwHBAUNYWNyZXNDb250cmFjdAIJYnVybkFjcmVzCQDMCAIFDFNfQ09TVF9BQ1JFUwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQxhY3Jlc0Fzc2V0SWQFA2FtdAUDbmlsCQCUCgIJAM4IAgkAzggCCAUGcmVzdWx0Al8xCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCCQClCAEIBQFpBmNhbGxlcgUKeHBOZXdTTGFuZAJfMQUNcHJvbG9nQWN0aW9ucwkAlAoCCAgFBnJlc3VsdAJfMgJfMQULYWNyZXNSZXN1bHQBaQEMdXBncmFkZUluZnJhAQtsYW5kQXNzZXRJZAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQGcmVzdWx0CQENdXBJbmZyYUNvbW1vbgQGCAUBaQZjYWxsZXIAAAULbGFuZEFzc2V0SWQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEFDXByb2xvZ0FjdGlvbnMICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFDnhwVXBncmFkZUluZnJhCAUGcmVzdWx0Al8zBQVNVUxUOAJfMQgFBnJlc3VsdAJfMgFpARBhY3RpdmF0ZUFydGlmYWN0AgdhcnROYW1lDmxhbmRBc3NldElkT3B0BA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpBmNhbGxlcgQGcmVzdWx0BAckbWF0Y2gwBQdhcnROYW1lAwkAAAICB1BSRVNBTEUFByRtYXRjaDAJARJhY3RpdmF0ZVByZXNhbGVBcnQCBQRhZGRyBQ5sYW5kQXNzZXRJZE9wdAMJAAACAgdPTkJPQVJEBQckbWF0Y2gwCQESYWN0aXZhdGVPbmJvYXJkQXJ0AQUEYWRkcgkAAgECEFVua25vd24gYXJ0aWZhY3QJAM4IAgUGcmVzdWx0BQ1wcm9sb2dBY3Rpb25zAWkBCm1lcmdlTGFuZHMBDGxhbmRBc3NldElkcwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQGcmVzdWx0CQELbWVyZ2VDb21tb24CCQClCAEIBQFpBmNhbGxlcgUMbGFuZEFzc2V0SWRzCQCUCgIJAM4IAgkAzggCCAUGcmVzdWx0Al8xBQ1wcm9sb2dBY3Rpb25zCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCCQClCAEIBQFpBmNhbGxlcgUHeHBNZXJnZQJfMQgFBnJlc3VsdAJfMgFpAQ1jYXJnb0V4Y2hhbmdlAgxjYXJnb0xpc3RTdHILbGFuZEFzc2V0SWQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECmNhcmdvUGFydHMJALwJAgUMY2FyZ29MaXN0U3RyAgE6BARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04EA2xvYwkAtQkCCQEFdmFsdWUBBQtjdXJMb2NhdGlvbgIBXwMJAQIhPQIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFMCQACAQkArAICCQCsAgICFkR1Y2sgbG9jYXRpb24gdHlwZSBpcyAJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAhEsIGJ1dCBzaG91bGQgYmUgTAMJAQIhPQIJAJEDAgUDbG9jBQhsb2NJZHhJZAULbGFuZEFzc2V0SWQJAAIBCQCsAgICG0R1Y2sgc2hvdWxkIGJlIG9uIHRoZSBsYW5kIAULbGFuZEFzc2V0SWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQECWN1cnJlbnRXaAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAZyZXN1bHQJAQltb3ZlU3R1ZmYDBQpjYXJnb1BhcnRzBQljdXJyZW50V2gFC2N1cnJlbnRQYWNrBARsb2Z0CQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8EBWxvZnRPCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCAUGcmVzdWx0Al83BAVsb2Z0RgkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCAUGcmVzdWx0Al83CQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIIBQZyZXN1bHQCXzQJAMwIAggFBnJlc3VsdAJfNQkAzAgCCAUGcmVzdWx0Al82BQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkJALoJAgkAzAgCCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMJAMwIAggFBnJlc3VsdAJfMQkAzAgCCAUGcmVzdWx0Al8yCQDMCAIIBQZyZXN1bHQCXzMJAMwIAgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCRAwIFBGxvZnQFCHZvbFRvdGFsBQNuaWwCAV8FA25pbAIBOgUDbmlsBQ1wcm9sb2dBY3Rpb25zAWkBDXNhdmVXYXJlaG91c2UCBXdoU3RyC2xhbmRBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAJ3aAkAvAkCBQV3aFN0cgIBOgMJAQIhPQIJAJADAQUCd2gABQkAAgECMHdhcmVob3VzZSBzdHJpbmcgc2hvdWxkIGNvbnRhaW4gNCAnOicgc2VwYXJhdG9ycwQFbG9mdEwJAJEDAgkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8FCXZvbExvY2tlZAQFbG9mdE8JARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEFAndoBAVsb2Z0VAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQJ3aAULd2hJZHhMZXZlbHMEBWxvZnRGCQBlAgkAZQIFBWxvZnRUCQENcGFyc2VJbnRWYWx1ZQEFBWxvZnRMBQVsb2Z0TwMJAGYCAAAFBWxvZnRGCQACAQIwT3BlcmF0aW9uIGxlYWRzIHRvIG5lZ2F0aXZlIGZyZWUgd2FyZWhvdXNlIHNwYWNlBAhuZXdXaFN0cgkAugkCCQDMCAIJAJEDAgUCd2gFC3doSWR4TGV2ZWxzCQDMCAIJAJEDAgUCd2gFCHdoSWR4UmVzCQDMCAIJAJEDAgUCd2gFCHdoSWR4TWF0CQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCCQC5CQIJAMwIAgUFbG9mdEwJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAKQDAQUFbG9mdFQFA25pbAIBXwUDbmlsAgE6CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkFCG5ld1doU3RyBQNuaWwFCG5ld1doU3RyAWkBDXNldEN1c3RvbU5hbWUDB2Fzc2V0SWQKY3VzdG9tTmFtZQR0eXBlBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhAwkBAiE9AggFA3BtdAZhbW91bnQFDFJFTkFNSU5HQ09TVAkAAgEJAKwCAgISUGF5bWVudCBzaG91bGQgYmUgCQCkAwEFDFJFTkFNSU5HQ09TVAMJAQhjb250YWlucwIFCmN1c3RvbU5hbWUCAl9fCQACAQkArAICAh5OYW1lIHNob3VsZCBub3QgY29udGFpbiAnX18nOiAFCmN1c3RvbU5hbWUDCQBmAgkAsQIBBQpjdXN0b21OYW1lBQpNQVhOQU1FTEVOCQACAQkArAICAhlOYW1lIHRvbyBsb25nLCBtYXhMZW5ndGg9CQCkAwEFCk1BWE5BTUVMRU4EBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAdhY3Rpb25zBAckbWF0Y2gwBQR0eXBlAwkAAAICB0FDQ09VTlQFByRtYXRjaDAECnJldmVyc2VLZXkJARZrZXlDdXN0b21OYW1lVG9BZGRyZXNzAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA1hZGRyVG9OYW1lS2V5CQEWa2V5QWRkcmVzc1RvQ3VzdG9tTmFtZQEFBGFkZHIEB29sZE5hbWUJAKIIAQUNYWRkclRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlDdXN0b21OYW1lVG9BZGRyZXNzAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDWFkZHJUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFBGFkZHIICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFDHhwQ3VzdG9tTmFtZQJfMQMJAAACAgRMQU5EBQckbWF0Y2gwBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUHYXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQdhc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBApyZXZlcnNlS2V5CQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDmFzc2V0VG9OYW1lS2V5CQEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBBQdhc3NldElkBAdvbGROYW1lCQCiCAEFDmFzc2V0VG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDmFzc2V0VG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQdhc3NldElkCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQx4cEN1c3RvbU5hbWUCXzEDCQAAAgIERFVDSwUHJG1hdGNoMAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFB2Fzc2V0SWQDAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5BgkBASEBCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyCQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQdhc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpEVUNLUFJFRklYAg0gaXMgbm90IHlvdXJzBApyZXZlcnNlS2V5CQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDmFzc2V0VG9OYW1lS2V5CQEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBBQdhc3NldElkBAdvbGROYW1lCQCiCAEFDmFzc2V0VG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDmFzc2V0VG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQdhc3NldElkCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgUHYXNzZXRJZAUMeHBDdXN0b21OYW1lAl8xCQACAQITVW5rbm93biBlbnRpdHkgdHlwZQkAlAoCCQDOCAIJAM0IAgUHYWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQFDXByb2xvZ0FjdGlvbnMAAAFpAQxzZXRSZWZlcnJhbHMCCW9sZFBsYXllcgluZXdQbGF5ZXIDCQECIT0CCAUBaQ9jYWxsZXJQdWJsaWNLZXkFA3B1YgkAAgECEVBlcm1pc3Npb24gZGVuaWVkBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBQlvbGRQbGF5ZXIJAAIBCQCsAgICEUludmFsaWQgYWRkcmVzczogBQlvbGRQbGF5ZXIECm5ld2JpZUFkZHIJAKYIAQUJbmV3UGxheWVyAwkBASEBCQEJaXNEZWZpbmVkAQUKbmV3YmllQWRkcgkAAgEJAKwCAgIRSW52YWxpZCBhZGRyZXNzOiAFCW5ld1BsYXllcgQJb2xkTGFzdFR4CQCiCAEJARFrZXlMYXN0VHhJZEJ5VXNlcgEFCW9sZFBsYXllcgMJAQEhAQkBCWlzRGVmaW5lZAEFCW9sZExhc3RUeAkAAgECIm9sZFBsYXllciBkaWRuJ3QgZG8gYW55IHR4IGluIGdhbWUDCQBnAgAACAkA7wcBCQEFdmFsdWUBBQpuZXdiaWVBZGRyCWF2YWlsYWJsZQkAAgECFm5ld1BsYXllciBoYXMgbm8gV0FWRVMEB29sZHNLZXkJAQlrZXlPbGRpZXMABARvbGRzCQCiCAEFB29sZHNLZXkEBm9sZGllcwMJAQlpc0RlZmluZWQBBQRvbGRzCQC8CQIJAQV2YWx1ZQEFBG9sZHMCAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQZvbGRpZXMFCW5ld1BsYXllcgkAAgEJAKwCAgUJbmV3UGxheWVyAiYgaXMgbm90IG5ld2JpZSAoYWxyZWFkeSBoYXMgcmVmZXJyYWxzKQQIcmVmQnlLZXkJAQ9rZXlBZGRyZXNzUmVmQnkBBQluZXdQbGF5ZXIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwMJAQlpc0RlZmluZWQBBQVyZWZCeQkBCWlzRGVmaW5lZAEJAKYIAQkBBXZhbHVlAQUFcmVmQnkHCQACAQkArAICCQCsAgIFCW5ld1BsYXllcgIUIGFscmVhZHkgaGFzIHJlZkJ5OiAJAQV2YWx1ZQEFBXJlZkJ5BAdyZWZzS2V5CQETa2V5QWRkcmVzc1JlZmVycmFscwEFCW9sZFBsYXllcgQEcmVmcwkAoggBBQdyZWZzS2V5BAlyZWZzQXJyYXkDCQEJaXNEZWZpbmVkAQUEcmVmcwkAvAkCCQEFdmFsdWUBBQRyZWZzAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUJcmVmc0FycmF5BQluZXdQbGF5ZXIJAAIBCQCsAgIJAKwCAgkArAICBQlvbGRQbGF5ZXICEiBhbHJlYWR5IGNvbnRhaW5zIAUJbmV3UGxheWVyAhEgd2l0aGluIHJlZmVycmFscwQHbmV3UmVmcwkAugkCCQDNCAIFCXJlZnNBcnJheQUJbmV3UGxheWVyAgFfBAduZXdPbGRzAwkBD2NvbnRhaW5zRWxlbWVudAIFBm9sZGllcwUJb2xkUGxheWVyCQEFdmFsdWUBBQRvbGRzCQC6CQIJAM0IAgUGb2xkaWVzBQlvbGRQbGF5ZXICAV8JAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFCHJlZkJ5S2V5BQlvbGRQbGF5ZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgUHcmVmc0tleQUHbmV3UmVmcwkAzAgCCQELU3RyaW5nRW50cnkCBQdvbGRzS2V5BQduZXdPbGRzBQNuaWwFDXByb2xvZ0FjdGlvbnMAAAFpARBkaXN0cmlidXRlUG9pbnRzBQhzdHJlbmd0aAhhY2N1cmFjeQlpbnRlbGxlY3QJZW5kdXJhbmNlCWRleHRlcml0eQQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC3ZpcnRXbGdEYXRhCQEJYXNBbnlMaXN0AQkA/AcEBQt3bGdDb250cmFjdAISY2hlY2tXbGdYcFJFQURPTkxZCQDMCAIFBGFkZHIFA25pbAUDbmlsBA12aXJ0V2xnUG9pbnRzCQEFYXNJbnQBCQCRAwIFC3ZpcnRXbGdEYXRhAAEEDSR0MDk4MzA5OTg2OTkDCQBnAgAABQ12aXJ0V2xnUG9pbnRzCQCUCgIAAAUDbmlsBAdkZWx0YVhQCQEFYXNJbnQBCQD8BwQFC3dsZ0NvbnRyYWN0Agl0YWtlV2xnWHAJAMwIAgUEYWRkcgUDbmlsBQNuaWwDCQAAAgUHZGVsdGFYUAUHZGVsdGFYUAkAlAoCBQ12aXJ0V2xnUG9pbnRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMa2V5VXNlckxldmVsAQUEYWRkcgkBBWFzSW50AQkAkQMCBQt2aXJ0V2xnRGF0YQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEJa2V5VXNlclhQAQUEYWRkcgkBBWFzSW50AQkAkQMCBQt2aXJ0V2xnRGF0YQACBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ECXdsZ1BvaW50cwgFDSR0MDk4MzA5OTg2OTkCXzEECndsZ0FjdGlvbnMIBQ0kdDA5ODMwOTk4Njk5Al8yBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECmZyZWVLZXlBY2MJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIEDWZyZWVQb2ludHNBY2MJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCmZyZWVLZXlBY2MAAAUJd2xnUG9pbnRzBAtmcmVlS2V5RHVjawkBEWtleUR1Y2tGcmVlUG9pbnRzAQULZHVja0Fzc2V0SWQEDmZyZWVQb2ludHNEdWNrCQELdmFsdWVPckVsc2UCCQCfCAEFC2ZyZWVLZXlEdWNrAAAEB3N1bUZyZWUJAGQCBQ1mcmVlUG9pbnRzQWNjBQ5mcmVlUG9pbnRzRHVjawQPc3VtVG9EaXN0cmlidXRlCQBkAgkAZAIJAGQCCQBkAgUIc3RyZW5ndGgFCGFjY3VyYWN5BQlpbnRlbGxlY3QFCWVuZHVyYW5jZQUJZGV4dGVyaXR5AwkAZgIFD3N1bVRvRGlzdHJpYnV0ZQUHc3VtRnJlZQkAAgEJAKwCAgkArAICAg9UaGVyZSBhcmUgb25seSAJAKQDAQUHc3VtRnJlZQIaIGZyZWUgcG9pbnRzIHRvIGRpc3RyaWJ1dGUECGNoYXJzS2V5CQEMa2V5RHVja0NoYXJzAQULZHVja0Fzc2V0SWQEBWNoYXJzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUIY2hhcnNLZXkCCTBfMF8wXzBfMAIBXwQGbmV3QWNjCQBlAgUNZnJlZVBvaW50c0FjYwUPc3VtVG9EaXN0cmlidXRlCQCUCgIJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQpmcmVlS2V5QWNjAwkAZgIAAAUGbmV3QWNjAAAFBm5ld0FjYwkAzAgCCQEMSW50ZWdlckVudHJ5AgULZnJlZUtleUR1Y2sDCQBmAgAABQZuZXdBY2MJAGQCBQ5mcmVlUG9pbnRzRHVjawUGbmV3QWNjBQ5mcmVlUG9pbnRzRHVjawkAzAgCCQELU3RyaW5nRW50cnkCBQhjaGFyc0tleQkAuQkCCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhclN0cmVuZ3RoBQhzdHJlbmd0aAkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJBY2N1cmFjeQUIYWNjdXJhY3kJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFySW50ZWxsZWN0BQlpbnRlbGxlY3QJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRW5kdXJhbmNlBQllbmR1cmFuY2UJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRGV4dGVyaXR5BQlkZXh0ZXJpdHkFA25pbAIBXwUDbmlsBQ1wcm9sb2dBY3Rpb25zBQp3bGdBY3Rpb25zAAABaQEcc3BsaXRCeUdsb2JhbFdlaWdodHNSRUFET05MWQEGYW1vdW50CQCUCgIFA25pbAkBEmdldE5lZWRlZE1hdGVyaWFscwEFBmFtb3VudAFpASRzcGxpdEJ5R2xvYmFsQW5kTG9jYWxXZWlnaHRzUkVBRE9OTFkDCW1hdEFtb3VudAlyZXNBbW91bnQIdGVycmFpbnMEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQUIdGVycmFpbnMJAJQKAgUDbmlsCQCUCgIJARJnZXROZWVkZWRNYXRlcmlhbHMBBQltYXRBbW91bnQJARNkaXN0cmlidXRlQnlXZWlnaHRzAgUJcmVzQW1vdW50BQ10ZXJyYWluQ291bnRzAWkBE2dldEJhY2twYWNrUkVBRE9OTFkBC2R1Y2tBc3NldElkCQCUCgIFA25pbAkAuQkCCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAIBOgFpARRnZXRXYXJlaG91c2VSRUFET05MWQELbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAACQCUCgIFA25pbAkAugkCCQEMZ2V0V2FyZWhvdXNlAwkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwCAToBaQEKc2F2ZUxhc3RUeAADCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFD2Vjb25vbXlDb250cmFjdAkAzAgCBRJ0b3VybmFtZW50Q29udHJhY3QJAMwIAgUNYWNyZXNDb250cmFjdAUDbmlsCAUBaQZjYWxsZXIJAAIBAg1BY2Nlc3MgZGVuaWVkCQCUCgIJAQZwcm9sb2cBBQFpACoBaQEPdXBkYXRlRHVja1N0YXRzAgtkdWNrQXNzZXRJZAdkZWx0YVhQAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkCQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUHZGVsdGFYUAFpAQ51cGRhdGVBY2NTdGF0cwIEYWRkcgdkZWx0YVhQAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQt3bGdDb250cmFjdAkAzAgCBQ9lY29ub215Q29udHJhY3QJAMwIAgUNYWNyZXNDb250cmFjdAUDbmlsCAUBaQZjYWxsZXIJAAIBAg1BY2Nlc3MgZGVuaWVkCQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFB2RlbHRhWFABaQEJZXF1aXBEdWNrAQllcXVpcG1lbnQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhllcXVpcER1Y2tfY2hlY2tUb3VybmFtZW50BAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQLY3VycmVudFNlZ3MJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywCAV8EBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVuZXdFcQkAtQkCBQllcXVpcG1lbnQCAV8DCQECIT0CCQCQAwEFBW5ld0VxBQtOVU1TRUdNRU5UUwkAAgECFldyb25nIGVxdWlwbWVudCBzdHJpbmcECXRlbXBQcm9kQgkBBmRyZXNzQgQFC2N1cnJlbnRTZWdzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QGBQNuaWwECHNlZ0JwQXV4CQCRAwIJALUJAgkAkQMCBQVuZXdFcQULc2VnQmFja3BhY2sCATsAAQQKYnVmZkVmZmVjdAMJAAACBQhzZWdCcEF1eAIAAAAEBGF1eDAJAJEDAgkAtQkCBQhzZWdCcEF1eAIBLAAAAwkAAAIFBGF1eDACAAAABAZpZHhDbnQJALUJAgUEYXV4MAIBOgQDaWR4CQCRAwIFBmlkeENudAAABANjbnQJAJEDAgUGaWR4Q250AAEDAwMDAwkAAAIFA2lkeAICMDYGCQAAAgUDaWR4AgIwNwYJAAACBQNpZHgCAjA4CQECIT0CBQNjbnQCAAcJAGYCCQENcGFyc2VJbnRWYWx1ZQEFA2NudAAABwkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4CQENcGFyc2VJbnRWYWx1ZQEFA2lkeAIBXwUKcklkeEVmZmVjdAAABAVzdGF0cwkBDGdldER1Y2tTdGF0cwQFBHRoaXMFC2R1Y2tBc3NldElkBQpidWZmRWZmZWN0BgQIbmV3UHJvZEIJAQZkcmVzc0IEBQVuZXdFcQUJdGVtcFByb2RCBwUFc3RhdHMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUJZXF1aXBtZW50CQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCBQpuZXdQcm9kU3RyBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAcJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAgJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAkJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAoJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAsFA25pbAIBXwUDbmlsBQ1wcm9sb2dBY3Rpb25zAAABaQETaW5pdER1Y2tUb3VyQXR0ZW1wdAELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFEnRvdXJuYW1lbnRDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEDHRvdXJMb2NhdGlvbgkArAICCQCkAwEFBmxhc3RJZAIEX1RfMAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAUJY3VySGVhbHRoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFBW1heEhQCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFC2N1ckxvY2F0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUMdG91ckxvY2F0aW9uBQNuaWwFDHRvdXJMb2NhdGlvbgFpAQxicmVha0F0dGVtcHQABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OAwkBAiE9AgkAkQMCCQC1CQIFC2N1ckxvY2F0aW9uAgFfBQpsb2NJZHhUeXBlAgFUCQACAQIiWW91ciBkdWNrIGlzIG5vdCBpbiB0aGUgdG91cm5hbWVudAQLc2F2ZWRIZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBA1zYXZlZExvY2F0aW9uCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQCUCgIJAM0IAgkAzQgCBQ1wcm9sb2dBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAULc2F2ZWRIZWFsdGgJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUNc2F2ZWRMb2NhdGlvbgULY3VyTG9jYXRpb24BaQEUYnJlYWtBdHRlbXB0Q2FsbGJhY2sAAwkBAiE9AggFAWkGY2FsbGVyBRJ0b3VybmFtZW50Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUDbmlsAhRicmVha0F0dGVtcHRDYWxsYmFjawFpARZleGl0VG91cm5hbWVudEludGVybmFsAQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEC3NhdmVkSGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAQNc2F2ZWRMb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQtzYXZlZEhlYWx0aAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFDXNhdmVkTG9jYXRpb24FA25pbAcBaQEPcHJvY2Vzc0RlbGl2ZXJ5AQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAlmdW5kVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BQ9kZWxpdmVyeUZ1bmRLZXkAAAMJAGYCBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFCWZ1bmRUb3RhbAkAAgEJAKwCAgIgRGVsaXZlcnkgaXMgbm90IGF2YWlsYWJsZSwgZnVuZD0JAQpmaXhlZFBvaW50AgUJZnVuZFRvdGFsAAYEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECGNvdW50S2V5CQEUa2V5VXNlckRlbGl2ZXJ5Q291bnQBBQRhZGRyBAdsYXN0RGF5CQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlVc2VyTGFzdERlbGl2ZXJ5RGF5AQUEYWRkcgAABAV0b2RheQkAaQIFA25vdwUJREFZTUlMTElTBAVjb3VudAMJAAACBQdsYXN0RGF5BQV0b2RheQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQhjb3VudEtleQAAAAAEBWFjcmVzCQELdmFsdWVPckVsc2UCCQCaCAIFDWFjcmVzQ29udHJhY3QJARprZXlBY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcgEFBGFkZHIAAAQRYWxsb3dlZERlbGl2ZXJpZXMJAGQCBRdBTExPV0VEX0ZSRUVfREVMSVZFUklFUwkAaQIFBWFjcmVzBRpBQ1JFU19GT1JfREVMSVZFUllfQVRURU1QVAMJAGcCBQVjb3VudAURYWxsb3dlZERlbGl2ZXJpZXMJAAIBCQCsAgIJAKwCAgIRWW91IGFscmVhZHkgdXNlZCAJAKQDAQURYWxsb3dlZERlbGl2ZXJpZXMCHCBkZWxpdmVyeSBhdHRlbXB0cyBmb3IgdG9kYXkEDmdsb2JhbENvdW50S2V5CQEUa2V5RHVja0RlbGl2ZXJ5Q291bnQBBQtkdWNrQXNzZXRJZAQGcmV3YXJkCQD8BwQFD2Vjb25vbXlDb250cmFjdAISc2VuZERlbGl2ZXJ5UmV3YXJkCQDMCAIFBGFkZHIFA25pbAUDbmlsCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFCGNvdW50S2V5CQBkAgUFY291bnQAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVVzZXJMYXN0RGVsaXZlcnlEYXkBBQRhZGRyBQV0b2RheQkAzAgCCQEMSW50ZWdlckVudHJ5AgUOZ2xvYmFsQ291bnRLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFDmdsb2JhbENvdW50S2V5AAAAAQUDbmlsBQZyZXdhcmQBaQEHcm9iTGFuZAIHbWVzc2FnZQNzaWcEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEBndsZ0FtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQp3bGdBc3NldElkCQACAQIVV0xHT0xEIHBheW1lbnRzIG9ubHkhAwkBAiE9AgUGd2xnQW10BRJNSU5fV0xHT0xEX1JPQkJFUlkJAAIBCQCsAgIJAKwCAgISUGF5bWVudCBzaG91bGQgYmUgCQEKZml4ZWRQb2ludAIFEk1JTl9XTEdPTERfUk9CQkVSWQAIAgcgV0xHT0xEBARhZGRyCQClCAEIBQFpBmNhbGxlcgMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAQFcGFydHMJALwJAgkAsAkBBQdtZXNzYWdlAgE7BAZyb2JMb2cJALwJAgkAkQMCBQVwYXJ0cwAAAgF8BAJocAkAtQkCCQCRAwIFBnJvYkxvZwUIcmxIZWFsdGgCAV8EBWN1ckhQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAAQFbmV3SFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAABBAhwcm9kVXNlZAkAkQMCBQZyb2JMb2cFC3JsUHJvZHNVc2VkBAhsYXN0UGFydAkAtQkCCQCRAwIFBXBhcnRzAAECAXwEB3JvYlR5cGUJAJEDAgUIbGFzdFBhcnQFBnJsVHlwZQMJAQIhPQIFB3JvYlR5cGUCAUIJAAIBAh5Pbmx5IGJhbmsgcm9iYmVyeSBpcyBzdXBwb3J0ZWQEBHRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhsYXN0UGFydAULcmxUaW1lc3RhbXADAwkAZgIFBHRpbWUJAGQCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMGCQBmAgkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBRFGSVZFTUlOVVRFU01JTExJUwUEdGltZQkAAgEJAKwCAgkArAICCQCsAgICHHNpZ25hdHVyZSBvdXRkYXRlZDogbG9nVGltZT0JAKQDAQUEdGltZQIJLCBiY1RpbWU9CQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAl0eEZyb21Nc2cJAJEDAgUIbGFzdFBhcnQFCHJsTGFzdFR4BAZsYXN0VHgJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleUxhc3RUeElkQnlVc2VyAQUEYWRkcgIAAwkBAiE9AgUGbGFzdFR4BQl0eEZyb21Nc2cJAAIBCQCsAgIJAKwCAgkArAICAh5UeCBpZHMgZG9uJ3QgbWF0Y2ghIEluIHN0YXRlOiAFBmxhc3RUeAIKLCBpbiBtc2c6IAUJdHhGcm9tTXNnBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAljdXJyZW50RXEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssBA8kdDAxMTU4NzcxMTU5ODgJARFzdWJ0cmFjdEVxdWlwbWVudAIFCWN1cnJlbnRFcQUIcHJvZFVzZWQEBW5ld0VxCAUPJHQwMTE1ODc3MTE1OTg4Al8xBA9zaG91bGRaZXJvQnVmZnMIBQ8kdDAxMTU4NzcxMTU5ODgCXzIECGlzQnBVc2VkCAUPJHQwMTE1ODc3MTE1OTg4Al8zBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgMJAQ5pc0luVG91cm5hbWVudAIFEnRvdXJuYW1lbnRDb250cmFjdAULY3VyTG9jYXRpb24JAAIBAipZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gdGhlIHRvdXJuYW1lbnQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECGNvdW50S2V5CQETa2V5VXNlclJvYmJlcnlDb3VudAEFBGFkZHIEB2xhc3REYXkJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFWtleVVzZXJMYXN0Um9iYmVyeURheQEFBGFkZHIAAAQFdG9kYXkJAGkCBQNub3cFCURBWU1JTExJUwQFY291bnQDCQAAAgUHbGFzdERheQUFdG9kYXkJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUIY291bnRLZXkAAAAABAVhY3JlcwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ1hY3Jlc0NvbnRyYWN0CQEaa2V5QWNyZXNTdGFrZWRBbW91bnRCeVVzZXIBBQRhZGRyAAAEEGFsbG93ZWRSb2JiZXJpZXMJAGQCBRZBTExPV0VEX0ZSRUVfUk9CQkVSSUVTCQBpAgUFYWNyZXMFGUFDUkVTX0ZPUl9ST0JCRVJZX0FUVEVNUFQDCQBnAgUFY291bnQFEGFsbG93ZWRSb2JiZXJpZXMJAAIBCQCsAgIJAKwCAgIRWW91IGFscmVhZHkgdXNlZCAJAKQDAQUQYWxsb3dlZFJvYmJlcmllcwIbIHJvYmJlcnkgYXR0ZW1wdHMgZm9yIHRvZGF5BA5nbG9iYWxDb3VudEtleQkBE2tleUR1Y2tSb2JiZXJ5Q291bnQBBQtkdWNrQXNzZXRJZAQEbG9vdAMJAGYCBQVuZXdIUAAABAlmdW5kVG90YWwJAPAHAgUEdGhpcwUKd2xnQXNzZXRJZAQFcHJpemUDBQhpc0JwVXNlZAkAaAIAAgUSTUlOX1dMR09MRF9ST0JCRVJZCQBoAgAFBRJNSU5fV0xHT0xEX1JPQkJFUlkDCQBmAgUFcHJpemUFCWZ1bmRUb3RhbAkAAgEJAKwCAgkArAICCQCsAgICIlJvYmJlcnkgaXMgbm90IGF2YWlsYWJsZSwgZnVuZHMgPSAJAQpmaXhlZFBvaW50AgUJZnVuZFRvdGFsAAgCFCBXTEdPTEQsIHJlcXVpcmVkID0gCQEKZml4ZWRQb2ludAIFBXByaXplAAgJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQVwcml6ZQUKd2xnQXNzZXRJZAUDbmlsBQNuaWwJAJQKAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzggCCQDOCAIJAM4IAgUNcHJvbG9nQWN0aW9ucwUEbG9vdAMFD3Nob3VsZFplcm9CdWZmcwkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAUDbmlsBQNuaWwICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAMJAGYCBQVuZXdIUAAABQx4cFN1Y2Nlc3NSb2IFCXhwRmFpbFJvYgJfMQkBDEludGVnZXJFbnRyeQIJARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBBQtkdWNrQXNzZXRJZAUDbm93CQEMSW50ZWdlckVudHJ5AgUIY291bnRLZXkJAGQCBQVjb3VudAABCQEMSW50ZWdlckVudHJ5AgkBFWtleVVzZXJMYXN0Um9iYmVyeURheQEFBGFkZHIFBXRvZGF5CQEMSW50ZWdlckVudHJ5AgUOZ2xvYmFsQ291bnRLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFDmdsb2JhbENvdW50S2V5AAAAAQkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAkAlgMBCQDMCAIFBW5ld0hQCQDMCAIAAAUDbmlsAAABaQELYnV5Um9ib0R1Y2sAAwkBASEBBRNLU19BTExPV19ST0JPX0RVQ0tTCQACAQIVRmVhdHVyZSBpcyB0dXJuZWQgb2ZmBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhAwkBAiE9AggFA3BtdAZhbW91bnQFDlJPQk9fRFVDS19VU0RUCQACAQkArAICCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkBCmZpeGVkUG9pbnQCBQ5ST0JPX0RVQ0tfVVNEVAAGAgUgVVNEVAQHbmV4dE51bQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEPa2V5TmV4dFJvYm9EdWNrAAAABAVieXRlegkAmgMBBQduZXh0TnVtBARuYW1lCQCsAgIJAKwCAgULUk9CT19QUkVGSVgCAS0JALICAgkA3AQBBQVieXRlegAIBAVjb2xvcgkAsgICCQDcBAEJANQWAQUFYnl0ZXoABgQFaXNzdWUJAMIIBQUEbmFtZQkArAICAjdSb2JvIER1Y2sgTkZUIGZvciBXYXZlc0xhbmRzIGdhbWUsIGJhY2tncm91bmQgY29sb3IgPSAjBQVjb2xvcgABAAAHBAdhc3NldElkCQC4CAEFBWlzc3VlCQCUCgIJAM0IAgkAzQgCCQDNCAIJAM0IAgUNcHJvbG9nQWN0aW9ucwkBDEludGVnZXJFbnRyeQIJAQ9rZXlOZXh0Um9ib0R1Y2sACQBkAgUHbmV4dE51bQABBQVpc3N1ZQkBDlNjcmlwdFRyYW5zZmVyAwgFAWkMb3JpZ2luQ2FsbGVyAAEFB2Fzc2V0SWQJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkCQCUCgIJANgEAQUHYXNzZXRJZAUFY29sb3IArUgx8A==", "height": 3280649, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6Ecs2wULeZs81TzNNQfr3ZVrbyYB4eziHytn8vib6ss2 Next: DXTNpodtsUc25pZtwKYtocxkwX2r6zmvEX8AxdTNjwxj Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let a = 86400000 | |
5 | - | ||
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 = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"] | |
21 | - | ||
22 | - | let j = 0 | |
23 | - | ||
24 | - | let k = 1 | |
25 | - | ||
26 | - | let l = 2 | |
27 | - | ||
28 | - | let m = 3 | |
29 | - | ||
30 | - | let n = 4 | |
31 | - | ||
32 | - | let o = 0 | |
33 | - | ||
34 | - | let p = 6 | |
35 | - | ||
36 | - | let q = 2 | |
37 | - | ||
38 | - | let r = 2 | |
39 | - | ||
40 | - | let s = 30 | |
41 | - | ||
42 | - | func t (u) = ("duckHealth_" + u) | |
43 | - | ||
44 | - | ||
45 | - | func v (u) = ("duckChars_" + u) | |
46 | - | ||
47 | - | ||
48 | - | func w (u) = ("duckXP_" + u) | |
49 | - | ||
50 | - | ||
51 | - | func x (u) = ("duckLevel_" + u) | |
52 | - | ||
53 | - | ||
54 | - | func y (u) = ("duckFreePoints_" + u) | |
55 | - | ||
56 | - | ||
57 | - | func z (u) = ("duckEquipment_" + u) | |
58 | - | ||
59 | - | ||
60 | - | func A (c) = ("userXP_" + c) | |
61 | - | ||
62 | - | ||
63 | - | func B (c) = ("userLevel_" + c) | |
64 | - | ||
65 | - | ||
66 | - | func C (c) = ("userFreePoints_" + c) | |
67 | - | ||
68 | - | ||
69 | - | func D (u) = ("savedHealth_" + u) | |
70 | - | ||
71 | - | ||
72 | - | func E (u) = ("savedLocation_" + u) | |
73 | - | ||
74 | - | ||
75 | - | func F (u) = ("duckBuffs_" + u) | |
76 | - | ||
77 | - | ||
78 | - | func G (u) = ("lastRobberyTime_" + u) | |
79 | - | ||
80 | - | ||
81 | - | func H (u) = ("totalRobberyCountByDuck_" + u) | |
82 | - | ||
83 | - | ||
84 | - | func I (c) = ("userRobberyCount_" + c) | |
85 | - | ||
86 | - | ||
87 | - | func J (c) = ("userLastRobberyDay_" + c) | |
88 | - | ||
89 | - | ||
90 | - | func K (u) = ("totalDeliveryCountByDuck_" + u) | |
91 | - | ||
92 | - | ||
93 | - | func L (c) = ("userDeliveryCount_" + c) | |
94 | - | ||
95 | - | ||
96 | - | func M (c) = ("userLastDeliveryDay_" + c) | |
97 | - | ||
98 | - | ||
99 | - | let N = 10000 | |
100 | - | ||
101 | - | let O = 10000 | |
102 | - | ||
103 | - | let P = 2000 | |
104 | - | ||
105 | - | let Q = 10000 | |
106 | - | ||
107 | - | let R = 2000 | |
108 | - | ||
109 | - | let S = 100000 | |
110 | - | ||
111 | - | let T = 1000000 | |
112 | - | ||
113 | - | let U = 5000000 | |
114 | - | ||
115 | - | let V = 10000 | |
116 | - | ||
117 | - | let W = 1000000 | |
118 | - | ||
119 | - | let X = 1000000 | |
120 | - | ||
121 | - | let Y = 10000 | |
122 | - | ||
123 | - | func Z (aa) = fraction(f, pow(aa, 4, g, 4, 4, DOWN), e) | |
124 | - | ||
125 | - | ||
126 | - | func ab (ac) = (100 + ac) | |
127 | - | ||
128 | - | ||
129 | - | func ad (ae,af) = { | |
130 | - | let ag = Z(af) | |
131 | - | [ag, (h * (ag - ae))] | |
132 | - | } | |
133 | - | ||
134 | - | ||
135 | - | func ah (ai,u,aj,ak) = { | |
136 | - | let al = split(valueOrElse(getString(ai, v(u)), "0_0_0_0_0"), "_") | |
137 | - | let am = valueOrElse(getInteger(ai, x(u)), 0) | |
138 | - | let an = valueOrElse(getInteger(ai, t(u)), ab(am)) | |
139 | - | let ao = split(valueOrElse(getString(ai, F(u)), "0_0_0_0_0"), "_") | |
140 | - | ([parseIntValue(al[j]), parseIntValue(al[k]), parseIntValue(al[l]), parseIntValue(al[m]), parseIntValue(al[n]), am, an] ++ (if (ak) | |
141 | - | then [aj, aj, aj, aj, aj] | |
142 | - | else [parseIntValue(ao[j]), parseIntValue(ao[k]), parseIntValue(ao[l]), parseIntValue(ao[m]), parseIntValue(ao[n])])) | |
143 | - | } | |
144 | - | ||
145 | - | ||
146 | - | let ap = "LAND" | |
147 | - | ||
148 | - | let aq = "DUCK" | |
149 | - | ||
150 | - | let ar = "ROBO" | |
151 | - | ||
152 | - | let as = "PRESALE" | |
153 | - | ||
154 | - | let at = 6 | |
155 | - | ||
156 | - | let au = 25 | |
157 | - | ||
158 | - | let av = 3456000 | |
159 | - | ||
160 | - | let aw = 10000000000 | |
161 | - | ||
162 | - | let ax = "Africa_F_Africa" | |
163 | - | ||
164 | - | let ay = 39637 | |
165 | - | ||
166 | - | let az = 10 | |
167 | - | ||
168 | - | let aA = 50000 | |
169 | - | ||
170 | - | let aB = 100000000 | |
171 | - | ||
172 | - | let aC = 0 | |
173 | - | ||
174 | - | let aD = 200000000 | |
175 | - | ||
176 | - | let aE = 0 | |
177 | - | ||
178 | - | let aF = 200000000 | |
179 | - | ||
180 | - | let aG = ["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", "Boom-Dog L1", "Boom-Dog L2", "Boom-Dog L3"] | |
181 | - | ||
182 | - | let aH = ["Americas", "Europe", "Asia", "Africa", "Oceania"] | |
183 | - | ||
184 | - | let aI = 10000000 | |
185 | - | ||
186 | - | let aJ = ["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_", "23_23_5_20_23_6_35_2_100_0,0,0,0,0,0,0_", "23_23_5_20_23_6_70_2_150_0,0,0,0,0,0,0_", "23_23_5_20_23_6_105_2_200_0,0,0,0,0,0,0_"] | |
187 | - | ||
188 | - | let aK = 6 | |
189 | - | ||
190 | - | let aL = 8 | |
191 | - | ||
192 | - | let aM = 9 | |
193 | - | ||
194 | - | let aN = 10 | |
195 | - | ||
196 | - | let aO = 10 | |
197 | - | ||
198 | - | let aP = 0 | |
199 | - | ||
200 | - | let aQ = 1 | |
201 | - | ||
202 | - | let aR = 2 | |
203 | - | ||
204 | - | let aS = 3 | |
205 | - | ||
206 | - | let aT = 4 | |
207 | - | ||
208 | - | let aU = 0 | |
209 | - | ||
210 | - | let aV = 1 | |
211 | - | ||
212 | - | let aW = 2 | |
213 | - | ||
214 | - | let aX = 3 | |
215 | - | ||
216 | - | let aY = 0 | |
217 | - | ||
218 | - | let aZ = 1 | |
219 | - | ||
220 | - | let ba = 2 | |
221 | - | ||
222 | - | let bb = 3 | |
223 | - | ||
224 | - | let bc = 0 | |
225 | - | ||
226 | - | let bd = 1 | |
227 | - | ||
228 | - | let be = 2 | |
229 | - | ||
230 | - | func bf (bg) = ("no_" + bg) | |
231 | - | ||
232 | - | ||
233 | - | func bh (bg) = ("lcna_" + bg) | |
234 | - | ||
235 | - | ||
236 | - | func bi (bg) = ("st_" + bg) | |
237 | - | ||
238 | - | ||
239 | - | func bj (bk,bg) = makeString(["las", bk, bg], "_") | |
240 | - | ||
241 | - | ||
242 | - | func bl (bm,bg,bn) = ((((("sttao_" + bm) + "_") + bg) + "_") + bn) | |
243 | - | ||
244 | - | ||
245 | - | func bo (bp) = ("wh_" + bp) | |
246 | - | ||
247 | - | ||
248 | - | func bq (bg) = ("infraLevel_" + bg) | |
249 | - | ||
250 | - | ||
251 | - | func br (bg) = ("duckCustomNameByAssetId_" + bg) | |
252 | - | ||
253 | - | ||
254 | - | func bs (c) = ("accountCustomNameByAddr_" + c) | |
255 | - | ||
256 | - | ||
257 | - | func bt (c) = ("accRefBy_" + c) | |
258 | - | ||
259 | - | ||
260 | - | func bu (u) = ("onboardArtActivatedOnDuck_" + u) | |
261 | - | ||
262 | - | ||
263 | - | func bv (c) = ("onboardArtActivatedDuckBy_" + c) | |
264 | - | ||
265 | - | ||
266 | - | func bw (c) = ("accReferrals_" + c) | |
267 | - | ||
268 | - | ||
269 | - | func bx (bg) = ("duckOwner_" + bg) | |
270 | - | ||
271 | - | ||
272 | - | func by (bn) = ("stakedDuckByOwner_" + bn) | |
273 | - | ||
274 | - | ||
275 | - | func bz (u) = ("backPack_" + u) | |
276 | - | ||
277 | - | ||
278 | - | func bA (u) = ("duckLocation_" + u) | |
279 | - | ||
280 | - | ||
281 | - | func bB (bC) = ("%s%s__userGwlReleaseTime__" + bC) | |
282 | - | ||
283 | - | ||
284 | - | func bD () = "emergencyWarehouseProducts" | |
285 | - | ||
286 | - | ||
287 | - | let bE = "deliveryFund" | |
288 | - | ||
289 | - | let bF = "%s__lastTourId" | |
290 | - | ||
291 | - | func bG (bH) = ("%s%d__tourStaticData__" + toString(bH)) | |
292 | - | ||
293 | - | ||
294 | - | func bI (bH) = ("%s%d__tourDynamicData__" + toString(bH)) | |
295 | - | ||
296 | - | ||
297 | - | func bJ (bH,u) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bH), u], "__") | |
298 | - | ||
299 | - | ||
300 | - | let bK = 0 | |
301 | - | ||
302 | - | let bL = 1 | |
303 | - | ||
304 | - | let bM = 6 | |
305 | - | ||
306 | - | let bN = 1 | |
307 | - | ||
308 | - | func bO (bP,bH) = { | |
309 | - | let bQ = split(valueOrErrorMessage(getString(bP, bG(bH)), (("Error reading tournament " + toString(bH)) + " data")), "__") | |
310 | - | let bR = split_4C(valueOrErrorMessage(getString(bP, bI(bH)), (("Error reading tournament " + toString(bH)) + " data")), "__") | |
311 | - | [bQ, bR] | |
312 | - | } | |
313 | - | ||
314 | - | ||
315 | - | func bS (bP,bT) = { | |
316 | - | let bU = valueOrElse(getInteger(bP, bF), 0) | |
317 | - | let bV = split(bT, "_") | |
318 | - | let bW = lastBlock.timestamp | |
319 | - | let bX = bO(bP, bU) | |
320 | - | let bQ = bX[bK] | |
321 | - | let bR = bX[bL] | |
322 | - | if (if (if ((bV[bd] == "T")) | |
323 | - | then (parseIntValue(bV[bc]) == bU) | |
324 | - | else false) | |
325 | - | then (bR[bN] == "INPROGRESS") | |
326 | - | else false) | |
327 | - | then (parseIntValue(bQ[bM]) > bW) | |
328 | - | else false | |
329 | - | } | |
330 | - | ||
331 | - | ||
332 | - | func bY (bP,bT) = { | |
333 | - | let bU = valueOrElse(getInteger(bP, bF), 0) | |
334 | - | let bV = split(bT, "_") | |
335 | - | let bW = lastBlock.timestamp | |
336 | - | let bX = bO(bP, bU) | |
337 | - | let bQ = bX[bK] | |
338 | - | let bR = bX[bL] | |
339 | - | let bZ = bV[bd] | |
340 | - | if (if (if ((bV[bd] == "T")) | |
341 | - | then (parseIntValue(bV[bc]) == bU) | |
342 | - | else false) | |
343 | - | then (bR[bN] == "INPROGRESS") | |
344 | - | else false) | |
345 | - | then (parseIntValue(bQ[bM]) > bW) | |
346 | - | else false | |
347 | - | } | |
348 | - | ||
349 | - | ||
350 | - | func ca (cb) = (parseIntValue(cb[aK]) * aI) | |
351 | - | ||
352 | - | ||
353 | - | func cc (cd,ce,cf) = throw(((((("Cheat attempt: oldLoc=" + cd) + ", newLoc=") + ce) + ", case=") + toString(cf))) | |
354 | - | ||
355 | - | ||
356 | - | let cg = false | |
357 | - | ||
358 | - | let ch = false | |
359 | - | ||
360 | - | let ci = false | |
361 | - | ||
362 | - | let cj = 86400000 | |
363 | - | ||
364 | - | let ck = take(drop(this.bytes, 1), 1) | |
365 | - | ||
366 | - | let cl = { | |
367 | - | let cm = ck | |
368 | - | if ((base58'2W' == cm)) | |
369 | - | then if (cg) | |
4 | + | let a = false | |
5 | + | ||
6 | + | let b = false | |
7 | + | ||
8 | + | let c = false | |
9 | + | ||
10 | + | let d = 86400000 | |
11 | + | ||
12 | + | let e = take(drop(this.bytes, 1), 1) | |
13 | + | ||
14 | + | let f = { | |
15 | + | let g = e | |
16 | + | if ((base58'2W' == g)) | |
17 | + | then if (a) | |
370 | 18 | then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm' | |
371 | 19 | else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
372 | - | else if ((base58'2T' == | |
20 | + | else if ((base58'2T' == g)) | |
373 | 21 | then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
374 | 22 | else throw("Unknown chain") | |
375 | 23 | } | |
376 | 24 | ||
377 | - | let | |
378 | - | let | |
379 | - | if ((base58'2W' == | |
25 | + | let h = { | |
26 | + | let g = e | |
27 | + | if ((base58'2W' == g)) | |
380 | 28 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
381 | - | else if ((base58'2T' == | |
29 | + | else if ((base58'2T' == g)) | |
382 | 30 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
383 | 31 | else throw("Unknown chain") | |
384 | 32 | } | |
385 | 33 | ||
386 | - | let | |
387 | - | let | |
388 | - | if ((base58'2W' == | |
34 | + | let i = { | |
35 | + | let g = e | |
36 | + | if ((base58'2W' == g)) | |
389 | 37 | then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv" | |
390 | - | else if ((base58'2T' == | |
38 | + | else if ((base58'2T' == g)) | |
391 | 39 | then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy" | |
392 | 40 | else throw("Unknown chain") | |
393 | 41 | } | |
394 | 42 | ||
395 | - | let cp = { | |
396 | - | let cm = ck | |
397 | - | if ((base58'2W' == cm)) | |
43 | + | let j = { | |
44 | + | let g = e | |
45 | + | if ((base58'2W' == g)) | |
46 | + | then "3P4UH3T9nXpMNpUmSmQjPmEz3G85t3zn6eA" | |
47 | + | else if ((base58'2T' == g)) | |
48 | + | then "3NBPx1Fciu3JQNEGZ21jSnTdutLNGGBUSXh" | |
49 | + | else throw("Unknown chain") | |
50 | + | } | |
51 | + | ||
52 | + | let k = { | |
53 | + | let g = e | |
54 | + | if ((base58'2W' == g)) | |
398 | 55 | then 10000000000 | |
399 | - | else if ((base58'2T' == | |
56 | + | else if ((base58'2T' == g)) | |
400 | 57 | then 100000000 | |
401 | 58 | else throw("Unknown chain") | |
402 | 59 | } | |
403 | 60 | ||
404 | - | let | |
405 | - | let | |
406 | - | if ((base58'2W' == | |
407 | - | then | |
408 | - | else if ((base58'2T' == | |
61 | + | let l = { | |
62 | + | let g = e | |
63 | + | if ((base58'2W' == g)) | |
64 | + | then d | |
65 | + | else if ((base58'2T' == g)) | |
409 | 66 | then 60000 | |
410 | 67 | else throw("Unknown chain") | |
411 | 68 | } | |
412 | 69 | ||
413 | - | let | |
414 | - | ||
415 | - | let | |
416 | - | ||
417 | - | let | |
418 | - | ||
419 | - | let | |
420 | - | ||
421 | - | let | |
422 | - | ||
423 | - | let | |
424 | - | ||
425 | - | let | |
426 | - | ||
427 | - | let | |
428 | - | ||
429 | - | let | |
430 | - | ||
431 | - | func | |
432 | - | ||
433 | - | ||
434 | - | let | |
435 | - | ||
436 | - | let | |
437 | - | ||
438 | - | let | |
439 | - | ||
440 | - | let | |
441 | - | ||
442 | - | let | |
443 | - | ||
444 | - | let | |
445 | - | ||
446 | - | func | |
447 | - | ||
448 | - | ||
449 | - | func | |
450 | - | ||
451 | - | ||
452 | - | func | |
453 | - | ||
454 | - | ||
455 | - | func | |
456 | - | ||
457 | - | ||
458 | - | let | |
459 | - | ||
460 | - | let | |
461 | - | ||
462 | - | let | |
463 | - | ||
464 | - | let | |
465 | - | ||
466 | - | let | |
467 | - | ||
468 | - | let | |
469 | - | ||
470 | - | let | |
471 | - | ||
472 | - | let | |
473 | - | ||
474 | - | let | |
475 | - | ||
476 | - | let | |
477 | - | ||
478 | - | let | |
479 | - | ||
480 | - | let | |
481 | - | ||
482 | - | let | |
483 | - | ||
484 | - | let | |
485 | - | ||
486 | - | let | |
487 | - | ||
488 | - | let | |
489 | - | ||
490 | - | let | |
491 | - | ||
492 | - | func | |
493 | - | ||
494 | - | ||
495 | - | func | |
496 | - | ||
497 | - | ||
498 | - | func | |
499 | - | ||
500 | - | ||
501 | - | func | |
502 | - | ||
503 | - | ||
504 | - | func | |
505 | - | ||
506 | - | ||
507 | - | func | |
508 | - | let | |
509 | - | if ($isInstanceOf( | |
70 | + | let m = "__" | |
71 | + | ||
72 | + | let n = 1000000 | |
73 | + | ||
74 | + | let o = 100000000 | |
75 | + | ||
76 | + | let p = 25 | |
77 | + | ||
78 | + | let q = 100 | |
79 | + | ||
80 | + | let r = 225 | |
81 | + | ||
82 | + | let s = 400 | |
83 | + | ||
84 | + | let t = 625 | |
85 | + | ||
86 | + | let u = [0, 1, 2, 3, 4, 5] | |
87 | + | ||
88 | + | func v (w,x) = valueOrErrorMessage(getString(w, x), makeString(["mandatory ", toString(w), ".", x, " is not defined"], "")) | |
89 | + | ||
90 | + | ||
91 | + | let y = 1 | |
92 | + | ||
93 | + | let z = 2 | |
94 | + | ||
95 | + | let A = 3 | |
96 | + | ||
97 | + | let B = 4 | |
98 | + | ||
99 | + | let C = 7 | |
100 | + | ||
101 | + | let D = 8 | |
102 | + | ||
103 | + | func E () = "%s__restConfig" | |
104 | + | ||
105 | + | ||
106 | + | func F () = "%s__restAddr" | |
107 | + | ||
108 | + | ||
109 | + | func G (H) = split_4C(v(H, E()), m) | |
110 | + | ||
111 | + | ||
112 | + | func I (J,K) = valueOrErrorMessage(addressFromString(J[K]), ("Rest cfg doesn't contain address at index " + toString(K))) | |
113 | + | ||
114 | + | ||
115 | + | let L = addressFromStringValue(valueOrElse(getString(this, F()), i)) | |
116 | + | ||
117 | + | let J = G(L) | |
118 | + | ||
119 | + | let M = I(J, y) | |
120 | + | ||
121 | + | let N = I(J, z) | |
122 | + | ||
123 | + | let O = I(J, A) | |
124 | + | ||
125 | + | let P = I(J, B) | |
126 | + | ||
127 | + | let Q = I(J, C) | |
128 | + | ||
129 | + | let R = I(J, D) | |
130 | + | ||
131 | + | let S = 0 | |
132 | + | ||
133 | + | let T = 1 | |
134 | + | ||
135 | + | let U = 2 | |
136 | + | ||
137 | + | let V = 3 | |
138 | + | ||
139 | + | let W = "wlg_assetId" | |
140 | + | ||
141 | + | let X = valueOrErrorMessage(getBinary(P, W), "WLGOLD is not issued yet") | |
142 | + | ||
143 | + | let Y = "acresAssetId" | |
144 | + | ||
145 | + | let Z = valueOrErrorMessage(getBinary(R, Y), "ACRES is not issued yet") | |
146 | + | ||
147 | + | let aa = 2 | |
148 | + | ||
149 | + | func ab (w) = ("finishBlockFor_" + w) | |
150 | + | ||
151 | + | ||
152 | + | func ac () = "resTypesProportions" | |
153 | + | ||
154 | + | ||
155 | + | func ad (ae) = ("resTypesByContinent_" + ae) | |
156 | + | ||
157 | + | ||
158 | + | func af (ag) = ("stakedLandsByOwner_" + ag) | |
159 | + | ||
160 | + | ||
161 | + | func ah (ag) = ("stakedPiecesByOwner_" + ag) | |
162 | + | ||
163 | + | ||
164 | + | func ai (aj) = { | |
165 | + | let g = aj | |
166 | + | if ($isInstanceOf(g, "String")) | |
510 | 167 | then { | |
511 | - | let | |
512 | - | | |
168 | + | let ak = g | |
169 | + | ak | |
513 | 170 | } | |
514 | 171 | else throw("fail to cast into String") | |
515 | 172 | } | |
516 | 173 | ||
517 | 174 | ||
518 | - | func | |
519 | - | let | |
520 | - | if ($isInstanceOf( | |
175 | + | func al (aj) = { | |
176 | + | let g = aj | |
177 | + | if ($isInstanceOf(g, "Int")) | |
521 | 178 | then { | |
522 | - | let | |
523 | - | | |
179 | + | let am = g | |
180 | + | am | |
524 | 181 | } | |
525 | 182 | else throw("fail to cast into Int") | |
526 | 183 | } | |
527 | 184 | ||
528 | 185 | ||
529 | - | func | |
530 | - | let | |
531 | - | if ($isInstanceOf( | |
186 | + | func an (aj) = { | |
187 | + | let g = aj | |
188 | + | if ($isInstanceOf(g, "List[Any]")) | |
532 | 189 | then { | |
533 | - | let | |
534 | - | | |
190 | + | let ao = g | |
191 | + | ao | |
535 | 192 | } | |
536 | 193 | else throw("fail to cast into List[Any]") | |
537 | 194 | } | |
538 | 195 | ||
539 | 196 | ||
540 | - | func | |
541 | - | let | |
542 | - | if ($isInstanceOf( | |
197 | + | func ap (aj) = { | |
198 | + | let g = aj | |
199 | + | if ($isInstanceOf(g, "Boolean")) | |
543 | 200 | then { | |
544 | - | let | |
545 | - | | |
201 | + | let ak = g | |
202 | + | ak | |
546 | 203 | } | |
547 | 204 | else throw("fail to cast into Boolean") | |
548 | 205 | } | |
549 | 206 | ||
550 | 207 | ||
551 | - | func | |
552 | - | let | |
553 | - | if (("S" == | |
554 | - | then | |
555 | - | else if (("M" == | |
556 | - | then | |
557 | - | else if (("L" == | |
558 | - | then | |
559 | - | else if (("XL" == | |
560 | - | then | |
561 | - | else if (("XXL" == | |
562 | - | then | |
208 | + | func aq (ar) = { | |
209 | + | let g = ar | |
210 | + | if (("S" == g)) | |
211 | + | then p | |
212 | + | else if (("M" == g)) | |
213 | + | then q | |
214 | + | else if (("L" == g)) | |
215 | + | then r | |
216 | + | else if (("XL" == g)) | |
217 | + | then s | |
218 | + | else if (("XXL" == g)) | |
219 | + | then t | |
563 | 220 | else throw("Unknown land size") | |
564 | 221 | } | |
565 | 222 | ||
566 | 223 | ||
567 | - | func | |
568 | - | ||
569 | - | ||
570 | - | func | |
571 | - | ||
572 | - | ||
573 | - | func | |
574 | - | ||
575 | - | ||
576 | - | func | |
577 | - | let | |
578 | - | let | |
579 | - | let | |
580 | - | (((toString(( | |
581 | - | } | |
582 | - | ||
583 | - | ||
584 | - | func | |
224 | + | func as (ak) = isDefined(parseInt(ak)) | |
225 | + | ||
226 | + | ||
227 | + | func at () = "contractsBlocked" | |
228 | + | ||
229 | + | ||
230 | + | func au (av) = ("lastTxIdByUser_" + av) | |
231 | + | ||
232 | + | ||
233 | + | func aw (ax,ay) = { | |
234 | + | let az = pow(10, 0, ay, 0, 0, DOWN) | |
235 | + | let aA = toString((ax % az)) | |
236 | + | let aB = drop(toString(az), (1 + size(aA))) | |
237 | + | (((toString((ax / az)) + ".") + aB) + aA) | |
238 | + | } | |
239 | + | ||
240 | + | ||
241 | + | func aC (aD,aE,aF) = if ((0 >= aD)) | |
585 | 242 | then throw("maxValue should be > 0") | |
586 | 243 | else { | |
587 | - | let dI = sha256((dG + dH)) | |
588 | - | (toInt(dI) % dF) | |
589 | - | } | |
590 | - | ||
591 | - | ||
592 | - | let dJ = { | |
593 | - | let cm = ck | |
594 | - | if ((base58'2W' == cm)) | |
244 | + | let aG = sha256((aE + aF)) | |
245 | + | (toInt(aG) % aD) | |
246 | + | } | |
247 | + | ||
248 | + | ||
249 | + | func aH () = min([lastBlock.timestamp, 1727740799000]) | |
250 | + | ||
251 | + | ||
252 | + | let aI = "LAND" | |
253 | + | ||
254 | + | let aJ = "DUCK" | |
255 | + | ||
256 | + | let aK = "ROBO" | |
257 | + | ||
258 | + | let aL = "PRESALE" | |
259 | + | ||
260 | + | let aM = 6 | |
261 | + | ||
262 | + | let aN = 25 | |
263 | + | ||
264 | + | let aO = 3456000 | |
265 | + | ||
266 | + | let aP = 10000000000 | |
267 | + | ||
268 | + | let aQ = "Africa_F_Africa" | |
269 | + | ||
270 | + | let aR = 39637 | |
271 | + | ||
272 | + | let aS = 10 | |
273 | + | ||
274 | + | let aT = 50000 | |
275 | + | ||
276 | + | let aU = 10 | |
277 | + | ||
278 | + | let aV = 100000000 | |
279 | + | ||
280 | + | let aW = 0 | |
281 | + | ||
282 | + | let aX = 200000000 | |
283 | + | ||
284 | + | let aY = 0 | |
285 | + | ||
286 | + | let aZ = 200000000 | |
287 | + | ||
288 | + | let ba = ["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", "Boom-Dog L1", "Boom-Dog L2", "Boom-Dog L3"] | |
289 | + | ||
290 | + | let bb = ["Americas", "Europe", "Asia", "Africa", "Oceania"] | |
291 | + | ||
292 | + | let bc = 10000000 | |
293 | + | ||
294 | + | let bd = ["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_", "23_23_5_20_23_6_35_2_100_0,0,0,0,0,0,0_", "23_23_5_20_23_6_70_2_150_0,0,0,0,0,0,0_", "23_23_5_20_23_6_105_2_200_0,0,0,0,0,0,0_"] | |
295 | + | ||
296 | + | let be = 6 | |
297 | + | ||
298 | + | let bf = 8 | |
299 | + | ||
300 | + | let bg = 9 | |
301 | + | ||
302 | + | let bh = 10 | |
303 | + | ||
304 | + | let bi = 10 | |
305 | + | ||
306 | + | let bj = 0 | |
307 | + | ||
308 | + | let bk = 1 | |
309 | + | ||
310 | + | let bl = 2 | |
311 | + | ||
312 | + | let bm = 3 | |
313 | + | ||
314 | + | let bn = 4 | |
315 | + | ||
316 | + | let bo = 0 | |
317 | + | ||
318 | + | let bp = 1 | |
319 | + | ||
320 | + | let bq = 2 | |
321 | + | ||
322 | + | let br = 3 | |
323 | + | ||
324 | + | let bs = 0 | |
325 | + | ||
326 | + | let bt = 1 | |
327 | + | ||
328 | + | let bu = 2 | |
329 | + | ||
330 | + | let bv = 3 | |
331 | + | ||
332 | + | let bw = 0 | |
333 | + | ||
334 | + | let bx = 1 | |
335 | + | ||
336 | + | let by = 2 | |
337 | + | ||
338 | + | func bz (bA) = ("no_" + bA) | |
339 | + | ||
340 | + | ||
341 | + | func bB (bA) = ("lcna_" + bA) | |
342 | + | ||
343 | + | ||
344 | + | func bC (bA) = ("st_" + bA) | |
345 | + | ||
346 | + | ||
347 | + | func bD (bE,bA) = makeString(["las", bE, bA], "_") | |
348 | + | ||
349 | + | ||
350 | + | func bF (bG,bA,ag) = ((((("sttao_" + bG) + "_") + bA) + "_") + ag) | |
351 | + | ||
352 | + | ||
353 | + | func bH (bI) = ("wh_" + bI) | |
354 | + | ||
355 | + | ||
356 | + | func bJ (bA) = ("infraLevel_" + bA) | |
357 | + | ||
358 | + | ||
359 | + | func bK (bA) = ("duckCustomNameByAssetId_" + bA) | |
360 | + | ||
361 | + | ||
362 | + | func bL (av) = ("accountCustomNameByAddr_" + av) | |
363 | + | ||
364 | + | ||
365 | + | func bM (av) = ("accRefBy_" + av) | |
366 | + | ||
367 | + | ||
368 | + | func bN (bO) = ("onboardArtActivatedOnDuck_" + bO) | |
369 | + | ||
370 | + | ||
371 | + | func bP (av) = ("onboardArtActivatedDuckBy_" + av) | |
372 | + | ||
373 | + | ||
374 | + | func bQ (av) = ("accReferrals_" + av) | |
375 | + | ||
376 | + | ||
377 | + | func bR (bA) = ("duckOwner_" + bA) | |
378 | + | ||
379 | + | ||
380 | + | func bS (ag) = ("stakedDuckByOwner_" + ag) | |
381 | + | ||
382 | + | ||
383 | + | func bT (bO) = ("backPack_" + bO) | |
384 | + | ||
385 | + | ||
386 | + | func bU (bO) = ("duckLocation_" + bO) | |
387 | + | ||
388 | + | ||
389 | + | func bV (bW) = ("%s%s__userGwlReleaseTime__" + bW) | |
390 | + | ||
391 | + | ||
392 | + | func bX () = "emergencyWarehouseProducts" | |
393 | + | ||
394 | + | ||
395 | + | let bY = "deliveryFund" | |
396 | + | ||
397 | + | let bZ = "%s__lastTourId" | |
398 | + | ||
399 | + | func ca (cb) = ("%s%d__tourStaticData__" + toString(cb)) | |
400 | + | ||
401 | + | ||
402 | + | func cc (cb) = ("%s%d__tourDynamicData__" + toString(cb)) | |
403 | + | ||
404 | + | ||
405 | + | func cd (cb,bO) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(cb), bO], "__") | |
406 | + | ||
407 | + | ||
408 | + | let ce = 0 | |
409 | + | ||
410 | + | let cf = 1 | |
411 | + | ||
412 | + | let cg = 6 | |
413 | + | ||
414 | + | let ch = 1 | |
415 | + | ||
416 | + | func ci (cj,cb) = { | |
417 | + | let ck = split(valueOrErrorMessage(getString(cj, ca(cb)), (("Error reading tournament " + toString(cb)) + " data")), "__") | |
418 | + | let cl = split_4C(valueOrErrorMessage(getString(cj, cc(cb)), (("Error reading tournament " + toString(cb)) + " data")), "__") | |
419 | + | [ck, cl] | |
420 | + | } | |
421 | + | ||
422 | + | ||
423 | + | func cm (cj,cn) = { | |
424 | + | let co = valueOrElse(getInteger(cj, bZ), 0) | |
425 | + | let cp = split(cn, "_") | |
426 | + | let cq = lastBlock.timestamp | |
427 | + | let cr = ci(cj, co) | |
428 | + | let ck = cr[ce] | |
429 | + | let cl = cr[cf] | |
430 | + | if (if (if ((cp[bx] == "T")) | |
431 | + | then (parseIntValue(cp[bw]) == co) | |
432 | + | else false) | |
433 | + | then (cl[ch] == "INPROGRESS") | |
434 | + | else false) | |
435 | + | then (parseIntValue(ck[cg]) > cq) | |
436 | + | else false | |
437 | + | } | |
438 | + | ||
439 | + | ||
440 | + | func cs (cj,cn) = { | |
441 | + | let co = valueOrElse(getInteger(cj, bZ), 0) | |
442 | + | let cp = split(cn, "_") | |
443 | + | let cq = lastBlock.timestamp | |
444 | + | let cr = ci(cj, co) | |
445 | + | let ck = cr[ce] | |
446 | + | let cl = cr[cf] | |
447 | + | let ct = cp[bx] | |
448 | + | if (if (if ((cp[bx] == "T")) | |
449 | + | then (parseIntValue(cp[bw]) == co) | |
450 | + | else false) | |
451 | + | then (cl[ch] == "INPROGRESS") | |
452 | + | else false) | |
453 | + | then (parseIntValue(ck[cg]) > cq) | |
454 | + | else false | |
455 | + | } | |
456 | + | ||
457 | + | ||
458 | + | func cu (cv) = (parseIntValue(cv[be]) * bc) | |
459 | + | ||
460 | + | ||
461 | + | func cw (cx,cy,cz) = throw(((((("Cheat attempt: oldLoc=" + cx) + ", newLoc=") + cy) + ", case=") + toString(cz))) | |
462 | + | ||
463 | + | ||
464 | + | let cA = 100000000 | |
465 | + | ||
466 | + | let cB = 3200 | |
467 | + | ||
468 | + | let cC = 4000 | |
469 | + | ||
470 | + | let cD = 3 | |
471 | + | ||
472 | + | let cE = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"] | |
473 | + | ||
474 | + | let cF = 0 | |
475 | + | ||
476 | + | let cG = 1 | |
477 | + | ||
478 | + | let cH = 2 | |
479 | + | ||
480 | + | let cI = 3 | |
481 | + | ||
482 | + | let cJ = 4 | |
483 | + | ||
484 | + | let cK = 0 | |
485 | + | ||
486 | + | let cL = 6 | |
487 | + | ||
488 | + | let cM = 2 | |
489 | + | ||
490 | + | let cN = 2 | |
491 | + | ||
492 | + | let cO = 30 | |
493 | + | ||
494 | + | func cP (bO) = ("duckHealth_" + bO) | |
495 | + | ||
496 | + | ||
497 | + | func cQ (bO) = ("duckChars_" + bO) | |
498 | + | ||
499 | + | ||
500 | + | func cR (bO) = ("duckXP_" + bO) | |
501 | + | ||
502 | + | ||
503 | + | func cS (bO) = ("duckLevel_" + bO) | |
504 | + | ||
505 | + | ||
506 | + | func cT (bO) = ("duckFreePoints_" + bO) | |
507 | + | ||
508 | + | ||
509 | + | func cU (bO) = ("duckEquipment_" + bO) | |
510 | + | ||
511 | + | ||
512 | + | func cV (av) = ("userXP_" + av) | |
513 | + | ||
514 | + | ||
515 | + | func cW (av) = ("userLevel_" + av) | |
516 | + | ||
517 | + | ||
518 | + | func cX (av) = ("userFreePoints_" + av) | |
519 | + | ||
520 | + | ||
521 | + | func cY (bO) = ("savedHealth_" + bO) | |
522 | + | ||
523 | + | ||
524 | + | func cZ (bO) = ("savedLocation_" + bO) | |
525 | + | ||
526 | + | ||
527 | + | func da (bO) = ("duckBuffs_" + bO) | |
528 | + | ||
529 | + | ||
530 | + | func db (bO) = ("lastRobberyTime_" + bO) | |
531 | + | ||
532 | + | ||
533 | + | func dc (bO) = ("totalRobberyCountByDuck_" + bO) | |
534 | + | ||
535 | + | ||
536 | + | func dd (av) = ("userRobberyCount_" + av) | |
537 | + | ||
538 | + | ||
539 | + | func de (av) = ("userLastRobberyDay_" + av) | |
540 | + | ||
541 | + | ||
542 | + | func df (bO) = ("totalDeliveryCountByDuck_" + bO) | |
543 | + | ||
544 | + | ||
545 | + | func dg (av) = ("userDeliveryCount_" + av) | |
546 | + | ||
547 | + | ||
548 | + | func dh (av) = ("userLastDeliveryDay_" + av) | |
549 | + | ||
550 | + | ||
551 | + | let di = 10000 | |
552 | + | ||
553 | + | let dj = 10000 | |
554 | + | ||
555 | + | let dk = 2000 | |
556 | + | ||
557 | + | let dl = 10000 | |
558 | + | ||
559 | + | let dm = 2000 | |
560 | + | ||
561 | + | let dn = 100000 | |
562 | + | ||
563 | + | let do = 1000000 | |
564 | + | ||
565 | + | let dp = 5000000 | |
566 | + | ||
567 | + | let dq = 10000 | |
568 | + | ||
569 | + | let dr = 1000000 | |
570 | + | ||
571 | + | let ds = 1000000 | |
572 | + | ||
573 | + | let dt = 10000 | |
574 | + | ||
575 | + | func du (dv) = fraction(cB, pow(dv, 4, cC, 4, 4, DOWN), cA) | |
576 | + | ||
577 | + | ||
578 | + | func dw (dx) = (100 + dx) | |
579 | + | ||
580 | + | ||
581 | + | func dy (dz,dA) = { | |
582 | + | let dB = du(dA) | |
583 | + | [dB, (cD * (dB - dz))] | |
584 | + | } | |
585 | + | ||
586 | + | ||
587 | + | func dC (M,bO,dD,dE) = { | |
588 | + | let dF = split(valueOrElse(getString(M, cQ(bO)), "0_0_0_0_0"), "_") | |
589 | + | let dG = valueOrElse(getInteger(M, cS(bO)), 0) | |
590 | + | let dH = valueOrElse(getInteger(M, cP(bO)), dw(dG)) | |
591 | + | let dI = split(valueOrElse(getString(M, da(bO)), "0_0_0_0_0"), "_") | |
592 | + | ([parseIntValue(dF[cF]), parseIntValue(dF[cG]), parseIntValue(dF[cH]), parseIntValue(dF[cI]), parseIntValue(dF[cJ]), dG, dH] ++ (if (dE) | |
593 | + | then [dD, dD, dD, dD, dD] | |
594 | + | else [parseIntValue(dI[cF]), parseIntValue(dI[cG]), parseIntValue(dI[cH]), parseIntValue(dI[cI]), parseIntValue(dI[cJ])])) | |
595 | + | } | |
596 | + | ||
597 | + | ||
598 | + | let dJ = 86400000 | |
599 | + | ||
600 | + | func dK (av) = ("lastArbTimeUser_" + av) | |
601 | + | ||
602 | + | ||
603 | + | func dL (av) = ("acresStakedAmountByUser_" + av) | |
604 | + | ||
605 | + | ||
606 | + | let dM = { | |
607 | + | let g = e | |
608 | + | if ((base58'2W' == g)) | |
595 | 609 | then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv") | |
596 | - | else if ((base58'2T' == | |
610 | + | else if ((base58'2T' == g)) | |
597 | 611 | then this | |
598 | 612 | else throw("Unknown chain") | |
599 | 613 | } | |
600 | 614 | ||
601 | - | let | |
602 | - | let | |
603 | - | if ((base58'2W' == | |
615 | + | let dN = { | |
616 | + | let g = e | |
617 | + | if ((base58'2W' == g)) | |
604 | 618 | then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb") | |
605 | - | else if ((base58'2T' == | |
619 | + | else if ((base58'2T' == g)) | |
606 | 620 | then this | |
607 | 621 | else throw("Unknown chain") | |
608 | 622 | } | |
609 | 623 | ||
610 | - | let | |
611 | - | ||
612 | - | let | |
613 | - | ||
614 | - | let | |
615 | - | ||
616 | - | let | |
617 | - | ||
618 | - | let | |
619 | - | let | |
620 | - | if ((base58'2W' == | |
624 | + | let dO = 300000 | |
625 | + | ||
626 | + | let dP = 5000000 | |
627 | + | ||
628 | + | let dQ = 50 | |
629 | + | ||
630 | + | let dR = 10000000 | |
631 | + | ||
632 | + | let dS = { | |
633 | + | let g = e | |
634 | + | if ((base58'2W' == g)) | |
621 | 635 | then 252289527462 | |
622 | - | else if ((base58'2T' == | |
636 | + | else if ((base58'2T' == g)) | |
623 | 637 | then 2522895274 | |
624 | 638 | else throw("Unknown chain") | |
625 | 639 | } | |
626 | 640 | ||
627 | - | let | |
628 | - | let | |
629 | - | if ((base58'2W' == | |
641 | + | let dT = { | |
642 | + | let g = e | |
643 | + | if ((base58'2W' == g)) | |
630 | 644 | then 250000000 | |
631 | - | else if ((base58'2T' == | |
645 | + | else if ((base58'2T' == g)) | |
632 | 646 | then 250000000 | |
633 | 647 | else throw("Unknown chain") | |
634 | 648 | } | |
635 | 649 | ||
636 | - | let dR = 100000 | |
637 | - | ||
638 | - | let dS = 2500000000 | |
639 | - | ||
640 | - | let dT = toBigInt(5) | |
641 | - | ||
642 | - | let dU = toBigInt(20) | |
643 | - | ||
644 | - | let dV = toBigInt((20 * 20)) | |
645 | - | ||
646 | - | let dW = toBigInt(((20 * 20) * 20)) | |
647 | - | ||
648 | - | let dX = toBigInt((((20 * 20) * 20) * 20)) | |
649 | - | ||
650 | - | let dY = toBigInt(((((20 * 20) * 20) * 20) * 20)) | |
651 | - | ||
652 | - | let dZ = 500 | |
653 | - | ||
654 | - | func ea () = "nextLandNum" | |
655 | - | ||
656 | - | ||
657 | - | func eb (ec) = ("lcn_" + ec) | |
658 | - | ||
659 | - | ||
660 | - | func ed (ee) = ("la_" + ee) | |
661 | - | ||
662 | - | ||
663 | - | func ef (bg,bn) = ((("ilao_" + bg) + "_") + bn) | |
664 | - | ||
665 | - | ||
666 | - | func eg (ee) = ("lo_" + ee) | |
667 | - | ||
668 | - | ||
669 | - | func eh (ec) = ("duckByCustomName_" + ec) | |
670 | - | ||
671 | - | ||
672 | - | func ei (ec) = ("accountByCustomName_" + ec) | |
673 | - | ||
674 | - | ||
675 | - | func ej () = "oldiesList" | |
676 | - | ||
677 | - | ||
678 | - | func ek () = "nextRoboDuck" | |
679 | - | ||
680 | - | ||
681 | - | let el = 0 | |
682 | - | ||
683 | - | let em = 1 | |
684 | - | ||
685 | - | let en = 2 | |
650 | + | let dU = 100000 | |
651 | + | ||
652 | + | let dV = 2500000000 | |
653 | + | ||
654 | + | let dW = toBigInt(5) | |
655 | + | ||
656 | + | let dX = toBigInt(20) | |
657 | + | ||
658 | + | let dY = toBigInt((20 * 20)) | |
659 | + | ||
660 | + | let dZ = toBigInt(((20 * 20) * 20)) | |
661 | + | ||
662 | + | let ea = toBigInt((((20 * 20) * 20) * 20)) | |
663 | + | ||
664 | + | let eb = toBigInt(((((20 * 20) * 20) * 20) * 20)) | |
665 | + | ||
666 | + | let ec = 500 | |
667 | + | ||
668 | + | func ed () = "nextLandNum" | |
669 | + | ||
670 | + | ||
671 | + | func ee (ef) = ("lcn_" + ef) | |
672 | + | ||
673 | + | ||
674 | + | func eg (eh) = ("la_" + eh) | |
675 | + | ||
676 | + | ||
677 | + | func ei (bA,ag) = ((("ilao_" + bA) + "_") + ag) | |
678 | + | ||
679 | + | ||
680 | + | func ej (eh) = ("lo_" + eh) | |
681 | + | ||
682 | + | ||
683 | + | func ek (ef) = ("duckByCustomName_" + ef) | |
684 | + | ||
685 | + | ||
686 | + | func el (ef) = ("accountByCustomName_" + ef) | |
687 | + | ||
688 | + | ||
689 | + | func em () = "oldiesList" | |
690 | + | ||
691 | + | ||
692 | + | func en () = "nextRoboDuck" | |
693 | + | ||
686 | 694 | ||
687 | 695 | let eo = 0 | |
688 | 696 | ||
689 | - | let ep = 5 | |
690 | - | ||
691 | - | let eq = 6 | |
692 | - | ||
693 | - | let er = 7 | |
694 | - | ||
695 | - | let es = 0 | |
696 | - | ||
697 | - | let et = 1 | |
698 | - | ||
699 | - | let eu = 0 | |
700 | - | ||
701 | - | let ev = 2 | |
702 | - | ||
703 | - | let ew = 3 | |
704 | - | ||
705 | - | func ex (ee,du) = ((ap + ee) + du) | |
706 | - | ||
707 | - | ||
708 | - | func ey (ez,eA) = { | |
709 | - | let eB = if ((ez >= 0)) | |
710 | - | then (((ez + eA) - 1) / eA) | |
711 | - | else -((((-(ez) + eA) - 1) / eA)) | |
712 | - | (eB * ct) | |
713 | - | } | |
714 | - | ||
715 | - | ||
716 | - | func eC (eD,eE) = { | |
717 | - | let eF = (((((eE[0] + eE[1]) + eE[2]) + eE[3]) + eE[4]) + eE[5]) | |
718 | - | if ((0 >= eF)) | |
697 | + | let ep = 1 | |
698 | + | ||
699 | + | let eq = 2 | |
700 | + | ||
701 | + | let er = 0 | |
702 | + | ||
703 | + | let es = 5 | |
704 | + | ||
705 | + | let et = 6 | |
706 | + | ||
707 | + | let eu = 7 | |
708 | + | ||
709 | + | let ev = 0 | |
710 | + | ||
711 | + | let ew = 1 | |
712 | + | ||
713 | + | let ex = 0 | |
714 | + | ||
715 | + | let ey = 2 | |
716 | + | ||
717 | + | let ez = 3 | |
718 | + | ||
719 | + | func eA (eh,ar) = ((aI + eh) + ar) | |
720 | + | ||
721 | + | ||
722 | + | func eB (eC,eD) = { | |
723 | + | let eE = if ((eC >= 0)) | |
724 | + | then (((eC + eD) - 1) / eD) | |
725 | + | else -((((-(eC) + eD) - 1) / eD)) | |
726 | + | (eE * o) | |
727 | + | } | |
728 | + | ||
729 | + | ||
730 | + | func eF (eG,eH) = { | |
731 | + | let eI = (((((eH[0] + eH[1]) + eH[2]) + eH[3]) + eH[4]) + eH[5]) | |
732 | + | if ((0 >= eI)) | |
719 | 733 | then throw("Zero weights sum") | |
720 | 734 | else { | |
721 | - | let | |
722 | - | func | |
723 | - | ||
724 | - | let | |
725 | - | let | |
726 | - | let | |
727 | - | func | |
728 | - | then | |
729 | - | else | |
730 | - | ||
731 | - | func | |
732 | - | then | |
735 | + | let eJ = fraction(eG, n, eI) | |
736 | + | func eK (eL,eM) = (eL :+ fraction(eM, eJ, n)) | |
737 | + | ||
738 | + | let eN = eH | |
739 | + | let eO = size(eN) | |
740 | + | let eP = nil | |
741 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
742 | + | then eR | |
743 | + | else eK(eR, eN[eS]) | |
744 | + | ||
745 | + | func eT (eR,eS) = if ((eS >= eO)) | |
746 | + | then eR | |
733 | 747 | else throw("List size exceeds 6") | |
734 | 748 | ||
735 | - | eQ( | |
736 | - | } | |
737 | - | } | |
738 | - | ||
739 | - | ||
740 | - | func | |
741 | - | let | |
742 | - | if ((size( | |
749 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
750 | + | } | |
751 | + | } | |
752 | + | ||
753 | + | ||
754 | + | func eU (eG) = { | |
755 | + | let eV = split(value(getString(ac())), "_") | |
756 | + | if ((size(eV) != aM)) | |
743 | 757 | then throw("Wrong proportions data") | |
744 | 758 | else { | |
745 | - | let | |
746 | - | | |
747 | - | } | |
748 | - | } | |
749 | - | ||
750 | - | ||
751 | - | func | |
752 | - | let | |
753 | - | func | |
754 | - | let | |
755 | - | if ((0 > | |
756 | - | then throw(((((("Not enough material idx=" + toString( | |
757 | - | else ( | |
758 | - | } | |
759 | - | ||
760 | - | if ( | |
759 | + | let eW = [parseIntValue(eV[0]), parseIntValue(eV[1]), parseIntValue(eV[2]), parseIntValue(eV[3]), parseIntValue(eV[4]), parseIntValue(eV[5])] | |
760 | + | eF(eG, eW) | |
761 | + | } | |
762 | + | } | |
763 | + | ||
764 | + | ||
765 | + | func eX (eY,eZ,fa) = { | |
766 | + | let fb = eU(fa) | |
767 | + | func fc (eL,K) = { | |
768 | + | let fd = (parseIntValue(eZ[K]) - fb[K]) | |
769 | + | if ((0 > fd)) | |
770 | + | then throw(((((("Not enough material idx=" + toString(K)) + ", you have ") + eZ[K]) + ", but need ") + toString(fb[K]))) | |
771 | + | else (eL :+ toString(fd)) | |
772 | + | } | |
773 | + | ||
774 | + | if (eY) | |
761 | 775 | then { | |
762 | - | let | |
763 | - | let | |
764 | - | let | |
765 | - | func | |
766 | - | then | |
767 | - | else | |
768 | - | ||
769 | - | func | |
770 | - | then | |
776 | + | let eN = u | |
777 | + | let eO = size(eN) | |
778 | + | let eP = nil | |
779 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
780 | + | then eR | |
781 | + | else fc(eR, eN[eS]) | |
782 | + | ||
783 | + | func eT (eR,eS) = if ((eS >= eO)) | |
784 | + | then eR | |
771 | 785 | else throw("List size exceeds 6") | |
772 | 786 | ||
773 | - | eQ( | |
774 | - | } | |
775 | - | else | |
776 | - | } | |
777 | - | ||
778 | - | ||
779 | - | func | |
780 | - | then $Tuple3( | |
787 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
788 | + | } | |
789 | + | else eZ | |
790 | + | } | |
791 | + | ||
792 | + | ||
793 | + | func fe (ff,fg) = if ((fg == "")) | |
794 | + | then $Tuple3(ff, false, false) | |
781 | 795 | else { | |
782 | - | func | |
783 | - | let | |
784 | - | if ((size( | |
796 | + | func fh (eL,fi) = { | |
797 | + | let fj = split(fi, ",") | |
798 | + | if ((size(fj) != 2)) | |
785 | 799 | then throw("Incorrect format, should be index,amount") | |
786 | 800 | else { | |
787 | - | let | |
788 | - | if (if ((0 > | |
801 | + | let K = parseIntValue(fj[0]) | |
802 | + | if (if ((0 > K)) | |
789 | 803 | then true | |
790 | - | else ( | |
804 | + | else (K >= size(bd))) | |
791 | 805 | then throw("Unknown product idx") | |
792 | 806 | else { | |
793 | - | let | |
794 | - | let | |
795 | - | if ((size( | |
796 | - | then throw((("You don't have " + | |
807 | + | let fk = parseIntValue(fj[1]) | |
808 | + | let fl = split(eL._1, (fj[0] + ":")) | |
809 | + | if ((size(fl) != 2)) | |
810 | + | then throw((("You don't have " + ba[K]) + " equipped")) | |
797 | 811 | else { | |
798 | - | let | |
799 | - | let | |
812 | + | let fm = fl[1] | |
813 | + | let fn = if (as(take(drop(fm, 1), 1))) | |
800 | 814 | then 2 | |
801 | 815 | else 1 | |
802 | - | let | |
803 | - | let | |
804 | - | let | |
805 | - | then ( | |
806 | - | else throw(((((("You equipped " + toString( | |
807 | - | $Tuple3((((( | |
816 | + | let fo = parseIntValue(take(fm, fn)) | |
817 | + | let fp = drop(fm, fn) | |
818 | + | let fq = if ((fo >= fk)) | |
819 | + | then (fo - fk) | |
820 | + | else throw(((((("You equipped " + toString(fo)) + " of ") + ba[K]) + ", but tried to use ") + toString(fk))) | |
821 | + | $Tuple3(((((fl[0] + fj[0]) + ":") + toString(fq)) + fp), if (eL._2) | |
808 | 822 | then true | |
809 | - | else if (if (( | |
810 | - | then (8 >= | |
823 | + | else if (if ((K >= 6)) | |
824 | + | then (8 >= K) | |
811 | 825 | else false) | |
812 | - | then ( | |
813 | - | else false, if ( | |
826 | + | then (fq == 0) | |
827 | + | else false, if (eL._3) | |
814 | 828 | then true | |
815 | - | else if (if (( | |
816 | - | then (5 >= | |
829 | + | else if (if ((K >= 3)) | |
830 | + | then (5 >= K) | |
817 | 831 | else false) | |
818 | - | then ( | |
832 | + | then (fk > 0) | |
819 | 833 | else false) | |
820 | 834 | } | |
821 | 835 | } | |
822 | 836 | } | |
823 | 837 | } | |
824 | 838 | ||
825 | - | let | |
826 | - | let | |
827 | - | let | |
828 | - | func | |
829 | - | then | |
830 | - | else | |
831 | - | ||
832 | - | func | |
833 | - | then | |
839 | + | let eN = split(fg, "_") | |
840 | + | let eO = size(eN) | |
841 | + | let eP = $Tuple3(ff, false, false) | |
842 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
843 | + | then eR | |
844 | + | else fh(eR, eN[eS]) | |
845 | + | ||
846 | + | func eT (eR,eS) = if ((eS >= eO)) | |
847 | + | then eR | |
834 | 848 | else throw("List size exceeds 10") | |
835 | 849 | ||
836 | - | eQ( | |
837 | - | } | |
838 | - | ||
839 | - | ||
840 | - | func | |
841 | - | let | |
850 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
851 | + | } | |
852 | + | ||
853 | + | ||
854 | + | func fr (fs) = { | |
855 | + | let ft = if ((fs == "")) | |
842 | 856 | then nil | |
843 | - | else split_4C( | |
844 | - | func | |
845 | - | let | |
846 | - | let | |
847 | - | then parseIntValue( | |
857 | + | else split_4C(fs, "_") | |
858 | + | func fu (eL,cv) = { | |
859 | + | let fv = (size(eL) / 8) | |
860 | + | let fo = if ((size(ft) > fv)) | |
861 | + | then parseIntValue(ft[fv]) | |
848 | 862 | else 0 | |
849 | - | ( | |
850 | - | } | |
851 | - | ||
852 | - | let | |
853 | - | let | |
854 | - | let | |
855 | - | func | |
856 | - | then | |
857 | - | else | |
858 | - | ||
859 | - | func | |
860 | - | then | |
863 | + | (eL + toBytes(fo)) | |
864 | + | } | |
865 | + | ||
866 | + | let eN = bd | |
867 | + | let eO = size(eN) | |
868 | + | let eP = base58'' | |
869 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
870 | + | then eR | |
871 | + | else fu(eR, eN[eS]) | |
872 | + | ||
873 | + | func eT (eR,eS) = if ((eS >= eO)) | |
874 | + | then eR | |
861 | 875 | else throw("List size exceeds 50") | |
862 | 876 | ||
863 | - | eQ( | |
864 | - | } | |
865 | - | ||
866 | - | ||
867 | - | func | |
868 | - | func | |
869 | - | let | |
870 | - | let | |
871 | - | ( | |
877 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 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) | |
878 | + | } | |
879 | + | ||
880 | + | ||
881 | + | func fw (fx) = { | |
882 | + | func fy (eL,cv) = { | |
883 | + | let fv = size(eL) | |
884 | + | let fz = take(drop(fx, (8 * fv)), 8) | |
885 | + | (eL :+ toString(toInt(fz))) | |
872 | 886 | } | |
873 | 887 | ||
874 | 888 | makeString_2C({ | |
875 | - | let | |
876 | - | let | |
877 | - | let | |
878 | - | func | |
879 | - | then | |
880 | - | else | |
881 | - | ||
882 | - | func | |
883 | - | then | |
889 | + | let eN = bd | |
890 | + | let eO = size(eN) | |
891 | + | let eP = nil | |
892 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
893 | + | then eR | |
894 | + | else fy(eR, eN[eS]) | |
895 | + | ||
896 | + | func eT (eR,eS) = if ((eS >= eO)) | |
897 | + | then eR | |
884 | 898 | else throw("List size exceeds 50") | |
885 | 899 | ||
886 | - | eQ( | |
900 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 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) | |
887 | 901 | }, "_") | |
888 | 902 | } | |
889 | 903 | ||
890 | 904 | ||
891 | - | func | |
892 | - | func | |
893 | - | let | |
894 | - | then | |
905 | + | func fA (fB,fC) = { | |
906 | + | func fD (eL,fv) = { | |
907 | + | let fE = if ((size(fB) > (7 + fv))) | |
908 | + | then fB[(7 + fv)] | |
895 | 909 | else 0 | |
896 | - | if ((parseIntValue( | |
897 | - | then throw(("Requirement not satisfied: " + | |
910 | + | if ((parseIntValue(fC[fv]) > (fB[fv] + fE))) | |
911 | + | then throw(("Requirement not satisfied: " + cE[fv])) | |
898 | 912 | else true | |
899 | 913 | } | |
900 | 914 | ||
901 | - | let | |
902 | - | let | |
903 | - | let | |
904 | - | func | |
905 | - | then | |
906 | - | else | |
907 | - | ||
908 | - | func | |
909 | - | then | |
915 | + | let eN = [0, 1, 2, 3, 4, 5, 6] | |
916 | + | let eO = size(eN) | |
917 | + | let eP = false | |
918 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
919 | + | then eR | |
920 | + | else fD(eR, eN[eS]) | |
921 | + | ||
922 | + | func eT (eR,eS) = if ((eS >= eO)) | |
923 | + | then eR | |
910 | 924 | else throw("List size exceeds 7") | |
911 | 925 | ||
912 | - | eQ( | |
913 | - | } | |
914 | - | ||
915 | - | ||
916 | - | func | |
917 | - | let | |
918 | - | if ((size( | |
926 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6), 7) | |
927 | + | } | |
928 | + | ||
929 | + | ||
930 | + | func fF (fG,ft,fH,fI,fJ,fK,fB) = { | |
931 | + | let fj = split(fG, ":") | |
932 | + | if ((size(fj) != 2)) | |
919 | 933 | then throw("Incorrect format, should be index:amount") | |
920 | - | else if (if (!( | |
921 | - | then (size( | |
934 | + | else if (if (!(fH)) | |
935 | + | then (size(fj[0]) != 2) | |
922 | 936 | else false) | |
923 | 937 | then throw("Product idx should be 2 digits, zero padded") | |
924 | 938 | else { | |
925 | - | let | |
926 | - | let | |
927 | - | if (if ((0 > | |
939 | + | let fL = parseIntValue(fj[0]) | |
940 | + | let fM = parseIntValue(fj[1]) | |
941 | + | if (if ((0 > fL)) | |
928 | 942 | then true | |
929 | - | else ( | |
943 | + | else (fL >= size(bd))) | |
930 | 944 | then throw("Unknown product idx") | |
931 | - | else if ((0 > | |
945 | + | else if ((0 > fM)) | |
932 | 946 | then throw("Count can't be negative") | |
933 | - | else if (( | |
934 | - | then throw(((("Can't put more than " + toString( | |
935 | - | else if (( | |
936 | - | then $Tuple2( | |
947 | + | else if ((fM > cO)) | |
948 | + | then throw(((("Can't put more than " + toString(cO)) + " of ") + ba[fL])) | |
949 | + | else if ((fM == 0)) | |
950 | + | then $Tuple2(ft, false) | |
937 | 951 | else { | |
938 | - | let | |
939 | - | let | |
940 | - | let | |
941 | - | let | |
942 | - | if (if (!( | |
943 | - | then ( | |
952 | + | let fN = take(ft, (8 * fL)) | |
953 | + | let fo = toInt(take(drop(ft, (8 * fL)), 8)) | |
954 | + | let fp = drop(ft, (8 * (fL + 1))) | |
955 | + | let cv = split(bd[fL], "_") | |
956 | + | if (if (!(fH)) | |
957 | + | then (fM > fo) | |
944 | 958 | else false) | |
945 | - | then throw(((((("You have " + toString( | |
959 | + | then throw(((((("You have " + toString(fo)) + " of ") + ba[fL]) + ", but tried to use ") + toString(fM))) | |
946 | 960 | else { | |
947 | - | let | |
948 | - | then | |
961 | + | let fO = if (if (!(fH)) | |
962 | + | then fA(fB, split(cv[bg], ",")) | |
949 | 963 | else false) | |
950 | 964 | then { | |
951 | - | let | |
952 | - | if (( | |
965 | + | let fP = cv[bh] | |
966 | + | if ((fP == "")) | |
953 | 967 | then throw("Item cannot be equipped") | |
954 | 968 | else { | |
955 | - | let | |
956 | - | let | |
957 | - | if (( | |
969 | + | let fQ = parseIntValue(fP) | |
970 | + | let fR = (fQ / 100) | |
971 | + | if ((fI != fR)) | |
958 | 972 | then throw("Segment incompatible") | |
959 | 973 | else { | |
960 | - | let | |
961 | - | if (( | |
974 | + | let fS = ((fQ % 100) / 10) | |
975 | + | if ((fJ != fS)) | |
962 | 976 | then throw("Slot incompatible") | |
963 | 977 | else { | |
964 | - | let | |
965 | - | if (if (( | |
966 | - | then ( | |
978 | + | let fT = (fQ % 10) | |
979 | + | if (if ((fK != 0)) | |
980 | + | then (fT > 1) | |
967 | 981 | else false) | |
968 | 982 | then throw("Big items should occupy slot 0") | |
969 | - | else ( | |
983 | + | else (fT > 1) | |
970 | 984 | } | |
971 | 985 | } | |
972 | 986 | } | |
973 | 987 | } | |
974 | 988 | else false | |
975 | - | $Tuple2((( | |
976 | - | then | |
977 | - | else -( | |
989 | + | $Tuple2(((fN + toBytes((fo + (if (fH) | |
990 | + | then fM | |
991 | + | else -(fM))))) + fp), fO) | |
978 | 992 | } | |
979 | 993 | } | |
980 | 994 | } | |
981 | 995 | } | |
982 | 996 | ||
983 | 997 | ||
984 | - | func | |
998 | + | func fU (fV,fW,fH,fI,fJ,fX) = if ((fV != "")) | |
985 | 999 | then { | |
986 | - | let | |
987 | - | if ((size( | |
1000 | + | let fY = split(fV, ",") | |
1001 | + | if ((size(fY) > cN)) | |
988 | 1002 | then throw("Wrong slots format") | |
989 | 1003 | else { | |
990 | - | let | |
991 | - | let | |
992 | - | then | |
1004 | + | let fZ = fY[0] | |
1005 | + | let ga = if ((size(fY) > 1)) | |
1006 | + | then fY[1] | |
993 | 1007 | else "" | |
994 | - | if (if (( | |
995 | - | then ( | |
1008 | + | if (if ((fZ == "")) | |
1009 | + | then (ga == "") | |
996 | 1010 | else false) | |
997 | - | then | |
1011 | + | then fW | |
998 | 1012 | else { | |
999 | - | let | |
1000 | - | then | |
1001 | - | else $Tuple2( | |
1002 | - | if (( | |
1003 | - | then if ( | |
1013 | + | let gb = if ((fZ != "")) | |
1014 | + | then fF(fZ, fW, fH, fI, fJ, 0, fX) | |
1015 | + | else $Tuple2(fW, false) | |
1016 | + | if ((ga != "")) | |
1017 | + | then if (gb._2) | |
1004 | 1018 | then throw("Big item already occupies slot") | |
1005 | - | else | |
1006 | - | else | |
1019 | + | else fF(ga, gb._1, fH, fI, fJ, 1, fX)._1 | |
1020 | + | else gb._1 | |
1007 | 1021 | } | |
1008 | 1022 | } | |
1009 | 1023 | } | |
1010 | - | else | |
1011 | - | ||
1012 | - | ||
1013 | - | func | |
1014 | - | func | |
1015 | - | let | |
1016 | - | let | |
1017 | - | if ((size( | |
1024 | + | else fW | |
1025 | + | ||
1026 | + | ||
1027 | + | func gc (gd,ge,fH,fX) = { | |
1028 | + | func fI (eL,gf) = { | |
1029 | + | let fv = eL._1 | |
1030 | + | let fJ = split(gf, ";") | |
1031 | + | if ((size(fJ) != cM)) | |
1018 | 1032 | then throw("Wrong segment format") | |
1019 | 1033 | else { | |
1020 | - | let | |
1021 | - | let | |
1022 | - | if (if (( | |
1023 | - | then ( | |
1034 | + | let gg = fJ[0] | |
1035 | + | let gh = fJ[1] | |
1036 | + | if (if ((gg == "")) | |
1037 | + | then (gh == "") | |
1024 | 1038 | else false) | |
1025 | - | then $Tuple2(( | |
1039 | + | then $Tuple2((fv + 1), eL._2) | |
1026 | 1040 | else { | |
1027 | - | let | |
1028 | - | $Tuple2(( | |
1041 | + | let gi = fU(gg, eL._2, fH, fv, 0, fX) | |
1042 | + | $Tuple2((fv + 1), fU(gh, gi, fH, fv, 1, fX)) | |
1029 | 1043 | } | |
1030 | 1044 | } | |
1031 | 1045 | } | |
1032 | 1046 | ||
1033 | - | ( let | |
1034 | - | let | |
1035 | - | let | |
1036 | - | func | |
1037 | - | then | |
1038 | - | else | |
1039 | - | ||
1040 | - | func | |
1041 | - | then | |
1047 | + | ( let eN = gd | |
1048 | + | let eO = size(eN) | |
1049 | + | let eP = $Tuple2(0, ge) | |
1050 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
1051 | + | then eR | |
1052 | + | else fI(eR, eN[eS]) | |
1053 | + | ||
1054 | + | func eT (eR,eS) = if ((eS >= eO)) | |
1055 | + | then eR | |
1042 | 1056 | else throw("List size exceeds 6") | |
1043 | 1057 | ||
1044 | - | eQ( | |
1045 | - | } | |
1046 | - | ||
1047 | - | ||
1048 | - | func | |
1049 | - | let | |
1050 | - | let | |
1051 | - | let | |
1052 | - | let | |
1053 | - | let | |
1054 | - | let | |
1058 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6))._2 | |
1059 | + | } | |
1060 | + | ||
1061 | + | ||
1062 | + | func gj (bO) = { | |
1063 | + | let gk = cU(bO) | |
1064 | + | let gl = split(valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
1065 | + | let gm = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' | |
1066 | + | let gn = gc(gl, gm, true, nil) | |
1067 | + | let go = split(gl[cK], ";")[1] | |
1068 | + | let dD = if ((go == "")) | |
1055 | 1069 | then 0 | |
1056 | 1070 | else { | |
1057 | - | let | |
1058 | - | if (( | |
1071 | + | let gp = split(go, ",")[0] | |
1072 | + | if ((gp == "")) | |
1059 | 1073 | then 0 | |
1060 | 1074 | else { | |
1061 | - | let | |
1062 | - | let | |
1063 | - | let | |
1064 | - | if (if (if (if (if (( | |
1075 | + | let fG = split(gp, ":") | |
1076 | + | let K = fG[0] | |
1077 | + | let gq = fG[1] | |
1078 | + | if (if (if (if (if ((K == "06")) | |
1065 | 1079 | then true | |
1066 | - | else ( | |
1080 | + | else (K == "07")) | |
1067 | 1081 | then true | |
1068 | - | else ( | |
1069 | - | then ( | |
1082 | + | else (K == "08")) | |
1083 | + | then (gq != "") | |
1070 | 1084 | else false) | |
1071 | - | then (parseIntValue( | |
1085 | + | then (parseIntValue(gq) > 0) | |
1072 | 1086 | else false) | |
1073 | - | then parseIntValue(split( | |
1087 | + | then parseIntValue(split(bd[parseIntValue(K)], "_")[bf]) | |
1074 | 1088 | else 0 | |
1075 | 1089 | } | |
1076 | 1090 | } | |
1077 | - | let | |
1078 | - | let | |
1079 | - | ( | |
1080 | - | } | |
1081 | - | ||
1082 | - | ||
1083 | - | func | |
1091 | + | let fX = dC(this, bO, dD, true) | |
1092 | + | let gr = gc(gl, gn, false, fX) | |
1093 | + | (gr == gr) | |
1094 | + | } | |
1095 | + | ||
1096 | + | ||
1097 | + | func gs (gt,gu,gv,gw) = if ((size(gt) != aM)) | |
1084 | 1098 | then throw("Wrong proportions data") | |
1085 | 1099 | else { | |
1086 | - | func | |
1087 | - | let | |
1088 | - | if ((0 > | |
1089 | - | then throw(((((((("Panic! Pieces of type=" + toString( | |
1090 | - | else ( | |
1091 | - | } | |
1092 | - | ||
1093 | - | let | |
1094 | - | let | |
1095 | - | let | |
1096 | - | func | |
1097 | - | then | |
1098 | - | else | |
1099 | - | ||
1100 | - | func | |
1101 | - | then | |
1100 | + | func gx (eL,gy) = { | |
1101 | + | let fd = (parseIntValue(gt[gy]) + ((gw * gu[gy]) * gv)) | |
1102 | + | if ((0 > fd)) | |
1103 | + | then throw(((((((("Panic! Pieces of type=" + toString(gy)) + ", sign=") + toString(gw)) + ", terrainCounts[i]=") + toString(gu[gy])) + ", landSizeIndex=") + toString(gv))) | |
1104 | + | else (eL :+ toString(fd)) | |
1105 | + | } | |
1106 | + | ||
1107 | + | let eN = u | |
1108 | + | let eO = size(eN) | |
1109 | + | let eP = nil | |
1110 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
1111 | + | then eR | |
1112 | + | else gx(eR, eN[eS]) | |
1113 | + | ||
1114 | + | func eT (eR,eS) = if ((eS >= eO)) | |
1115 | + | then eR | |
1102 | 1116 | else throw("List size exceeds 6") | |
1103 | 1117 | ||
1104 | - | eQ( | |
1105 | - | } | |
1106 | - | ||
1107 | - | ||
1108 | - | func | |
1109 | - | let | |
1110 | - | makeString( | |
1111 | - | } | |
1112 | - | ||
1113 | - | ||
1114 | - | func | |
1115 | - | ||
1116 | - | ||
1117 | - | func | |
1118 | - | func | |
1119 | - | let | |
1120 | - | ( | |
1121 | - | } | |
1122 | - | ||
1123 | - | let | |
1124 | - | let | |
1125 | - | let | |
1126 | - | let | |
1127 | - | func | |
1128 | - | then | |
1129 | - | else | |
1130 | - | ||
1131 | - | func | |
1132 | - | then | |
1118 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
1119 | + | } | |
1120 | + | ||
1121 | + | ||
1122 | + | func gz (gu,gv,gw) = { | |
1123 | + | let gt = split(valueOrElse(getString(ac()), "0_0_0_0_0_0"), "_") | |
1124 | + | makeString(gs(gt, gu, gv, gw), "_") | |
1125 | + | } | |
1126 | + | ||
1127 | + | ||
1128 | + | func gA (gB) = [(size(split(gB, "A")) - 1), (size(split(gB, "B")) - 1), (size(split(gB, "C")) - 1), (size(split(gB, "D")) - 1), (size(split(gB, "E")) - 1), (size(split(gB, "F")) - 1)] | |
1129 | + | ||
1130 | + | ||
1131 | + | func gC (gD,gu,gE,gv,gF) = { | |
1132 | + | func gG (eL,gy) = { | |
1133 | + | let gH = ((fraction(gE, gF, dJ) * gu[gy]) * gv) | |
1134 | + | (eL :+ toString((parseIntValue(gD[gy]) + gH))) | |
1135 | + | } | |
1136 | + | ||
1137 | + | let eW = { | |
1138 | + | let eN = u | |
1139 | + | let eO = size(eN) | |
1140 | + | let eP = nil | |
1141 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
1142 | + | then eR | |
1143 | + | else gG(eR, eN[eS]) | |
1144 | + | ||
1145 | + | func eT (eR,eS) = if ((eS >= eO)) | |
1146 | + | then eR | |
1133 | 1147 | else throw("List size exceeds 6") | |
1134 | 1148 | ||
1135 | - | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6) | |
1136 | - | } | |
1137 | - | makeString(eT, "_") | |
1138 | - | } | |
1139 | - | ||
1140 | - | ||
1141 | - | func gF (gr,gB,gs,gC) = { | |
1142 | - | func gD (eI,gv) = { | |
1143 | - | let gE = ((fraction(gB, gC, a) * gr[gv]) * gs) | |
1144 | - | $Tuple2((eI._1 :+ gE), (eI._2 + gE)) | |
1145 | - | } | |
1146 | - | ||
1147 | - | let eK = cz | |
1148 | - | let eL = size(eK) | |
1149 | - | let eM = $Tuple2(nil, 0) | |
1150 | - | func eN (eO,eP) = if ((eP >= eL)) | |
1151 | - | then eO | |
1152 | - | else gD(eO, eK[eP]) | |
1153 | - | ||
1154 | - | func eQ (eO,eP) = if ((eP >= eL)) | |
1155 | - | then eO | |
1149 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
1150 | + | } | |
1151 | + | makeString(eW, "_") | |
1152 | + | } | |
1153 | + | ||
1154 | + | ||
1155 | + | func gI (gD,gu,gE,gv,gF) = { | |
1156 | + | func gG (eL,gy) = { | |
1157 | + | let gH = ((fraction(gE, gF, dJ) * gu[gy]) * gv) | |
1158 | + | let gJ = (parseIntValue(gD[gy]) + gH) | |
1159 | + | $Tuple2((eL._1 :+ gJ), (eL._2 + gJ)) | |
1160 | + | } | |
1161 | + | ||
1162 | + | let eN = u | |
1163 | + | let eO = size(eN) | |
1164 | + | let eP = $Tuple2(nil, 0) | |
1165 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
1166 | + | then eR | |
1167 | + | else gG(eR, eN[eS]) | |
1168 | + | ||
1169 | + | func eT (eR,eS) = if ((eS >= eO)) | |
1170 | + | then eR | |
1156 | 1171 | else throw("List size exceeds 6") | |
1157 | 1172 | ||
1158 | - | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6) | |
1159 | - | } | |
1160 | - | ||
1161 | - | ||
1162 | - | func gG (gH,gI,gJ,gK) = { | |
1163 | - | let gL = gJ._1 | |
1164 | - | let gM = gJ._2 | |
1165 | - | if ((gM == 0)) | |
1166 | - | then $Tuple2(makeString(gH, "_"), makeString(gI, "_")) | |
1167 | - | else if ((gK >= gM)) | |
1173 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
1174 | + | } | |
1175 | + | ||
1176 | + | ||
1177 | + | func gK (gu,gE,gv,gF) = { | |
1178 | + | func gG (eL,gL) = { | |
1179 | + | let gH = ((fraction(gE, gF, dJ) * gL) * gv) | |
1180 | + | $Tuple2((eL._1 :+ gH), (eL._2 + gH)) | |
1181 | + | } | |
1182 | + | ||
1183 | + | let eN = gu | |
1184 | + | let eO = size(eN) | |
1185 | + | let eP = $Tuple2(nil, 0) | |
1186 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
1187 | + | then eR | |
1188 | + | else gG(eR, eN[eS]) | |
1189 | + | ||
1190 | + | func eT (eR,eS) = if ((eS >= eO)) | |
1191 | + | then eR | |
1192 | + | else throw("List size exceeds 6") | |
1193 | + | ||
1194 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
1195 | + | } | |
1196 | + | ||
1197 | + | ||
1198 | + | func gM (gN,gO,gP,gQ) = { | |
1199 | + | let gR = gP._1 | |
1200 | + | let gS = gP._2 | |
1201 | + | if ((gS == 0)) | |
1202 | + | then $Tuple2(makeString(gN, "_"), makeString(gO, "_")) | |
1203 | + | else if ((gQ >= gS)) | |
1168 | 1204 | then { | |
1169 | - | func | |
1170 | - | ||
1171 | - | let | |
1172 | - | let | |
1173 | - | let | |
1174 | - | let | |
1175 | - | func | |
1176 | - | then | |
1177 | - | else | |
1178 | - | ||
1179 | - | func | |
1180 | - | then | |
1205 | + | func gT (eL,gy) = (eL :+ toString((parseIntValue(gN[gy]) + gR[gy]))) | |
1206 | + | ||
1207 | + | let eW = { | |
1208 | + | let eN = u | |
1209 | + | let eO = size(eN) | |
1210 | + | let eP = nil | |
1211 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
1212 | + | then eR | |
1213 | + | else gT(eR, eN[eS]) | |
1214 | + | ||
1215 | + | func eT (eR,eS) = if ((eS >= eO)) | |
1216 | + | then eR | |
1181 | 1217 | else throw("List size exceeds 6") | |
1182 | 1218 | ||
1183 | - | eQ( | |
1219 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
1184 | 1220 | } | |
1185 | - | $Tuple2(makeString( | |
1221 | + | $Tuple2(makeString(eW, "_"), makeString(gO, "_")) | |
1186 | 1222 | } | |
1187 | 1223 | else { | |
1188 | - | func | |
1189 | - | let | |
1190 | - | $Tuple2(( | |
1224 | + | func gU (eL,gy) = { | |
1225 | + | let gV = fraction(gR[gy], gQ, gS) | |
1226 | + | $Tuple2((eL._1 :+ toString((parseIntValue(gN[gy]) + gV))), (eL._2 :+ toString(((parseIntValue(gO[gy]) + gR[gy]) - gV)))) | |
1191 | 1227 | } | |
1192 | 1228 | ||
1193 | - | let | |
1194 | - | let | |
1195 | - | let | |
1196 | - | let | |
1197 | - | func | |
1198 | - | then | |
1199 | - | else | |
1200 | - | ||
1201 | - | func | |
1202 | - | then | |
1229 | + | let eW = { | |
1230 | + | let eN = u | |
1231 | + | let eO = size(eN) | |
1232 | + | let eP = $Tuple2(nil, nil) | |
1233 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
1234 | + | then eR | |
1235 | + | else gU(eR, eN[eS]) | |
1236 | + | ||
1237 | + | func eT (eR,eS) = if ((eS >= eO)) | |
1238 | + | then eR | |
1203 | 1239 | else throw("List size exceeds 6") | |
1204 | 1240 | ||
1205 | - | eQ( | |
1241 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
1206 | 1242 | } | |
1207 | - | $Tuple2(makeString( | |
1243 | + | $Tuple2(makeString(eW._1, "_"), makeString(eW._2, "_")) | |
1208 | 1244 | } | |
1209 | 1245 | } | |
1210 | 1246 | ||
1211 | 1247 | ||
1212 | - | func | |
1213 | - | then | |
1214 | - | else -( | |
1215 | - | ||
1216 | - | ||
1217 | - | let | |
1218 | - | ||
1219 | - | func | |
1220 | - | let | |
1221 | - | let | |
1248 | + | func gW (gX) = if ((gX >= toBigInt(0))) | |
1249 | + | then gX | |
1250 | + | else -(gX) | |
1251 | + | ||
1252 | + | ||
1253 | + | let gY = [[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]] | |
1254 | + | ||
1255 | + | func gZ (am,ha) = { | |
1256 | + | let hb = toInt((am % dX)) | |
1257 | + | let hc = if ((ha[0] > hb)) | |
1222 | 1258 | then "A" | |
1223 | - | else if (( | |
1259 | + | else if ((ha[1] > hb)) | |
1224 | 1260 | then "B" | |
1225 | - | else if (( | |
1261 | + | else if ((ha[2] > hb)) | |
1226 | 1262 | then "C" | |
1227 | - | else if (( | |
1263 | + | else if ((ha[3] > hb)) | |
1228 | 1264 | then "D" | |
1229 | - | else if (( | |
1265 | + | else if ((ha[4] > hb)) | |
1230 | 1266 | then "E" | |
1231 | 1267 | else "F" | |
1232 | - | | |
1233 | - | } | |
1234 | - | ||
1235 | - | ||
1236 | - | func | |
1237 | - | let | |
1238 | - | func | |
1239 | - | ||
1240 | - | let | |
1241 | - | let | |
1242 | - | let | |
1243 | - | let | |
1244 | - | func | |
1245 | - | then | |
1246 | - | else | |
1247 | - | ||
1248 | - | func | |
1249 | - | then | |
1268 | + | hc | |
1269 | + | } | |
1270 | + | ||
1271 | + | ||
1272 | + | func hd (he,hf) = { | |
1273 | + | let hg = gY[hf] | |
1274 | + | func hh (eL,eM) = $Tuple2((((((eL._1 + gZ(eL._2, hg)) + gZ((eL._2 / dX), hg)) + gZ((eL._2 / dY), hg)) + gZ((eL._2 / dZ), hg)) + gZ((eL._2 / ea), hg)), (eL._2 / eb)) | |
1275 | + | ||
1276 | + | let hi = { | |
1277 | + | let eN = [1, 2, 3, 4, 5] | |
1278 | + | let eO = size(eN) | |
1279 | + | let eP = $Tuple2("", (he / dW)) | |
1280 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
1281 | + | then eR | |
1282 | + | else hh(eR, eN[eS]) | |
1283 | + | ||
1284 | + | func eT (eR,eS) = if ((eS >= eO)) | |
1285 | + | then eR | |
1250 | 1286 | else throw("List size exceeds 5") | |
1251 | 1287 | ||
1252 | - | eQ( | |
1253 | - | } | |
1254 | - | | |
1255 | - | } | |
1256 | - | ||
1257 | - | ||
1258 | - | let | |
1259 | - | ||
1260 | - | let | |
1261 | - | ||
1262 | - | func | |
1263 | - | func | |
1264 | - | let | |
1265 | - | let | |
1266 | - | let | |
1288 | + | eT(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5) | |
1289 | + | } | |
1290 | + | hi._1 | |
1291 | + | } | |
1292 | + | ||
1293 | + | ||
1294 | + | let hj = [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] | |
1295 | + | ||
1296 | + | let hk = ["A", "B", "C", "D", "E", "F"] | |
1297 | + | ||
1298 | + | func hl (hm,gv) = { | |
1299 | + | func hn (eL,ak) = { | |
1300 | + | let fv = eL._2 | |
1301 | + | let ho = parseIntValue(ak) | |
1302 | + | let gX = if ((ho == 0)) | |
1267 | 1303 | then 0 | |
1268 | - | else if (( | |
1269 | - | then ( | |
1270 | - | else if (( | |
1304 | + | else if ((ho >= (4 * gv))) | |
1305 | + | then (ho / gv) | |
1306 | + | else if ((ho > (3 * gv))) | |
1271 | 1307 | then 3 | |
1272 | - | else ((( | |
1273 | - | $Tuple3(( | |
1274 | - | } | |
1275 | - | ||
1276 | - | let | |
1277 | - | let | |
1278 | - | let | |
1279 | - | let | |
1280 | - | func | |
1281 | - | then | |
1282 | - | else | |
1283 | - | ||
1284 | - | func | |
1285 | - | then | |
1308 | + | else (((ho - 1) / gv) + 1) | |
1309 | + | $Tuple3((eL._1 :+ gX), (eL._2 + 1), (eL._3 + gX)) | |
1310 | + | } | |
1311 | + | ||
1312 | + | let hi = { | |
1313 | + | let eN = hm | |
1314 | + | let eO = size(eN) | |
1315 | + | let eP = $Tuple3(nil, 0, 0) | |
1316 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
1317 | + | then eR | |
1318 | + | else hn(eR, eN[eS]) | |
1319 | + | ||
1320 | + | func eT (eR,eS) = if ((eS >= eO)) | |
1321 | + | then eR | |
1286 | 1322 | else throw("List size exceeds 6") | |
1287 | 1323 | ||
1288 | - | eQ( | |
1289 | - | } | |
1290 | - | let | |
1291 | - | let | |
1292 | - | let | |
1293 | - | func | |
1294 | - | let | |
1295 | - | then ( | |
1296 | - | else | |
1297 | - | let | |
1324 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
1325 | + | } | |
1326 | + | let hp = hi._1 | |
1327 | + | let hq = value(indexOf(hp, max(hp))) | |
1328 | + | let hr = (hi._3 - 25) | |
1329 | + | func hs (eL,K) = { | |
1330 | + | let ax = if ((K == hq)) | |
1331 | + | then (hp[K] - hr) | |
1332 | + | else hp[K] | |
1333 | + | let aB = if ((ax == 0)) | |
1298 | 1334 | then nil | |
1299 | - | else split(drop(toString(pow(10, 0, | |
1300 | - | let | |
1301 | - | func | |
1302 | - | ||
1303 | - | let | |
1304 | - | let | |
1305 | - | let | |
1306 | - | let | |
1307 | - | func | |
1308 | - | then | |
1309 | - | else | |
1310 | - | ||
1311 | - | func | |
1312 | - | then | |
1335 | + | else split(drop(toString(pow(10, 0, ax, 0, 0, DOWN)), 1), "") | |
1336 | + | let fQ = hk[K] | |
1337 | + | func ht (hu,hv) = (hu :+ fQ) | |
1338 | + | ||
1339 | + | let hw = { | |
1340 | + | let eN = aB | |
1341 | + | let eO = size(eN) | |
1342 | + | let eP = nil | |
1343 | + | func hx (eR,eS) = if ((eS >= eO)) | |
1344 | + | then eR | |
1345 | + | else ht(eR, eN[eS]) | |
1346 | + | ||
1347 | + | func hy (eR,eS) = if ((eS >= eO)) | |
1348 | + | then eR | |
1313 | 1349 | else throw("List size exceeds 25") | |
1314 | 1350 | ||
1315 | - | | |
1316 | - | } | |
1317 | - | ( | |
1318 | - | } | |
1319 | - | ||
1320 | - | let | |
1321 | - | let | |
1322 | - | let | |
1323 | - | let | |
1324 | - | func | |
1325 | - | then | |
1326 | - | else | |
1327 | - | ||
1328 | - | func | |
1329 | - | then | |
1351 | + | hy(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(eP, 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) | |
1352 | + | } | |
1353 | + | (eL ++ hw) | |
1354 | + | } | |
1355 | + | ||
1356 | + | let eW = { | |
1357 | + | let eN = u | |
1358 | + | let eO = size(eN) | |
1359 | + | let eP = nil | |
1360 | + | func hx (eR,eS) = if ((eS >= eO)) | |
1361 | + | then eR | |
1362 | + | else hs(eR, eN[eS]) | |
1363 | + | ||
1364 | + | func hy (eR,eS) = if ((eS >= eO)) | |
1365 | + | then eR | |
1330 | 1366 | else throw("List size exceeds 6") | |
1331 | 1367 | ||
1332 | - | | |
1333 | - | } | |
1334 | - | func | |
1335 | - | ||
1336 | - | let | |
1337 | - | let | |
1338 | - | let | |
1339 | - | func | |
1340 | - | then | |
1341 | - | else | |
1342 | - | ||
1343 | - | func | |
1344 | - | then | |
1368 | + | hy(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6) | |
1369 | + | } | |
1370 | + | func hz (eL,fv) = (eL + eW[fv]) | |
1371 | + | ||
1372 | + | let eN = hj | |
1373 | + | let eO = size(eN) | |
1374 | + | let eP = "" | |
1375 | + | func hA (eR,eS) = if ((eS >= eO)) | |
1376 | + | then eR | |
1377 | + | else hz(eR, eN[eS]) | |
1378 | + | ||
1379 | + | func hB (eR,eS) = if ((eS >= eO)) | |
1380 | + | then eR | |
1345 | 1381 | else throw("List size exceeds 25") | |
1346 | 1382 | ||
1347 | - | | |
1348 | - | } | |
1349 | - | ||
1350 | - | ||
1351 | - | func | |
1352 | - | let | |
1353 | - | [toString(valueOrElse(parseInt( | |
1354 | - | then | |
1355 | - | else "0_0_0_0_0_0", if ((size(split( | |
1356 | - | then | |
1357 | - | else "0_0_0_0_0_0", | |
1358 | - | } | |
1359 | - | ||
1360 | - | ||
1361 | - | func | |
1362 | - | let | |
1363 | - | (( | |
1364 | - | } | |
1365 | - | ||
1366 | - | ||
1367 | - | func | |
1368 | - | let | |
1369 | - | func | |
1370 | - | ||
1371 | - | func | |
1372 | - | let | |
1373 | - | let | |
1374 | - | $Tuple2(( | |
1375 | - | } | |
1376 | - | ||
1377 | - | let | |
1378 | - | let | |
1379 | - | let | |
1380 | - | let | |
1381 | - | func | |
1382 | - | then | |
1383 | - | else | |
1384 | - | ||
1385 | - | func | |
1386 | - | then | |
1383 | + | hB(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(eP, 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) | |
1384 | + | } | |
1385 | + | ||
1386 | + | ||
1387 | + | func hC (hD) = { | |
1388 | + | let hE = split(valueOrElse(getString(hD), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":") | |
1389 | + | [toString(valueOrElse(parseInt(hE[bs]), 0)), if ((size(split(hE[bt], "_")) == aM)) | |
1390 | + | then hE[bt] | |
1391 | + | else "0_0_0_0_0_0", if ((size(split(hE[bu], "_")) == aM)) | |
1392 | + | then hE[bu] | |
1393 | + | else "0_0_0_0_0_0", hE[bv]] | |
1394 | + | } | |
1395 | + | ||
1396 | + | ||
1397 | + | func hF (hG) = { | |
1398 | + | let fj = split(hG, "_") | |
1399 | + | ((aP * (parseIntValue(fj[1]) + 1)) * parseIntValue(fj[0])) | |
1400 | + | } | |
1401 | + | ||
1402 | + | ||
1403 | + | func hH (hI) = { | |
1404 | + | let hJ = hI[bm] | |
1405 | + | func hK (eL,hL) = (eL + parseIntValue(hL)) | |
1406 | + | ||
1407 | + | func hM (eL,hL) = { | |
1408 | + | let K = eL._1 | |
1409 | + | let eE = (((parseIntValue(hL) + bi) - 1) / bi) | |
1410 | + | $Tuple2((K + 1), (eL._2 + (eE * o))) | |
1411 | + | } | |
1412 | + | ||
1413 | + | let hN = { | |
1414 | + | let eN = split(hI[bk], "_") | |
1415 | + | let eO = size(eN) | |
1416 | + | let eP = 0 | |
1417 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
1418 | + | then eR | |
1419 | + | else hK(eR, eN[eS]) | |
1420 | + | ||
1421 | + | func eT (eR,eS) = if ((eS >= eO)) | |
1422 | + | then eR | |
1387 | 1423 | else throw("List size exceeds 6") | |
1388 | 1424 | ||
1389 | - | eQ( | |
1390 | - | } | |
1391 | - | let | |
1392 | - | let | |
1393 | - | let | |
1394 | - | let | |
1395 | - | func | |
1396 | - | then | |
1397 | - | else | |
1398 | - | ||
1399 | - | func | |
1400 | - | then | |
1425 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
1426 | + | } | |
1427 | + | let hO = { | |
1428 | + | let eN = split(hI[bl], "_") | |
1429 | + | let eO = size(eN) | |
1430 | + | let eP = 0 | |
1431 | + | func hx (eR,eS) = if ((eS >= eO)) | |
1432 | + | then eR | |
1433 | + | else hK(eR, eN[eS]) | |
1434 | + | ||
1435 | + | func hy (eR,eS) = if ((eS >= eO)) | |
1436 | + | then eR | |
1401 | 1437 | else throw("List size exceeds 6") | |
1402 | 1438 | ||
1403 | - | | |
1404 | - | } | |
1405 | - | let | |
1439 | + | hy(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6) | |
1440 | + | } | |
1441 | + | let hP = if ((hJ == "")) | |
1406 | 1442 | then 0 | |
1407 | - | else ( let | |
1408 | - | let | |
1409 | - | let | |
1410 | - | func | |
1411 | - | then | |
1412 | - | else | |
1413 | - | ||
1414 | - | func | |
1415 | - | then | |
1443 | + | else ( let eN = split_4C(hJ, "_") | |
1444 | + | let eO = size(eN) | |
1445 | + | let eP = $Tuple2(0, 0) | |
1446 | + | func hA (eR,eS) = if ((eS >= eO)) | |
1447 | + | then eR | |
1448 | + | else hM(eR, eN[eS]) | |
1449 | + | ||
1450 | + | func hB (eR,eS) = if ((eS >= eO)) | |
1451 | + | then eR | |
1416 | 1452 | else throw("List size exceeds 50") | |
1417 | 1453 | ||
1418 | - | | |
1419 | - | (( | |
1420 | - | } | |
1421 | - | ||
1422 | - | ||
1423 | - | func | |
1424 | - | let | |
1425 | - | let | |
1426 | - | let | |
1427 | - | let | |
1428 | - | let | |
1429 | - | let | |
1430 | - | then makeString(["0", toString( | |
1454 | + | hB(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(eP, 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 | |
1455 | + | ((hN + hO) + hP) | |
1456 | + | } | |
1457 | + | ||
1458 | + | ||
1459 | + | func hQ (hR,hS,hT) = { | |
1460 | + | let hG = ((toString(hS) + "_") + toString(hT)) | |
1461 | + | let hU = hF(hG) | |
1462 | + | let hV = valueOrElse(getString(hR), (hG + ":0_0_0_0_0_0:0_0_0_0_0_0::0")) | |
1463 | + | let hW = split_4C(hV, ":") | |
1464 | + | let hX = hH(hW) | |
1465 | + | let hY = if ((5 > size(hW))) | |
1466 | + | then makeString(["0", toString(hX), toString((hU - hX)), toString(hU)], "_") | |
1431 | 1467 | else { | |
1432 | - | let | |
1433 | - | let | |
1434 | - | let | |
1435 | - | then parseIntValue( | |
1436 | - | else | |
1437 | - | makeString([toString( | |
1438 | - | } | |
1439 | - | [ | |
1440 | - | then | |
1441 | - | else "0_0_0_0_0_0", if ((size(split( | |
1442 | - | then | |
1443 | - | else "0_0_0_0_0_0", | |
1444 | - | } | |
1445 | - | ||
1446 | - | ||
1447 | - | func | |
1448 | - | let | |
1449 | - | let | |
1450 | - | (( | |
1451 | - | } | |
1452 | - | ||
1453 | - | ||
1454 | - | func | |
1468 | + | let hZ = split(hW[bn], "_") | |
1469 | + | let ia = parseIntValue(hZ[bo]) | |
1470 | + | let ib = if ((size(hZ) > 1)) | |
1471 | + | then parseIntValue(hZ[bp]) | |
1472 | + | else hX | |
1473 | + | makeString([toString(ia), toString(ib), toString(((hU - ia) - ib)), toString(hU)], "_") | |
1474 | + | } | |
1475 | + | [hW[bj], if ((size(split(hW[bk], "_")) == aM)) | |
1476 | + | then hW[bk] | |
1477 | + | else "0_0_0_0_0_0", if ((size(split(hW[bl], "_")) == aM)) | |
1478 | + | then hW[bl] | |
1479 | + | else "0_0_0_0_0_0", hW[bm], hY] | |
1480 | + | } | |
1481 | + | ||
1482 | + | ||
1483 | + | func ic (hI) = { | |
1484 | + | let id = hH(hI) | |
1485 | + | let ie = parseIntValue(split(hI[bn], "_")[bo]) | |
1486 | + | ((hF(hI[bj]) - id) - ie) | |
1487 | + | } | |
1488 | + | ||
1489 | + | ||
1490 | + | func if (ig,hI,ih) = if ((size(ig) != 3)) | |
1455 | 1491 | then throw("cargoListStr should contain exactly 2 ':' separators") | |
1456 | 1492 | else { | |
1457 | - | let | |
1458 | - | let | |
1459 | - | let | |
1493 | + | let ii = split(ig[0], "_") | |
1494 | + | let ij = split(ig[1], "_") | |
1495 | + | let ik = if ((ig[2] == "")) | |
1460 | 1496 | then nil | |
1461 | - | else split_4C( | |
1462 | - | if ((size( | |
1497 | + | else split_4C(ig[2], "_") | |
1498 | + | if ((size(ii) != aM)) | |
1463 | 1499 | then throw("All 6 resources should be passed") | |
1464 | - | else if ((size( | |
1500 | + | else if ((size(ij) != aM)) | |
1465 | 1501 | then throw("All 6 materials should be passed") | |
1466 | 1502 | else { | |
1467 | - | let | |
1468 | - | let | |
1469 | - | let | |
1470 | - | let | |
1503 | + | let gQ = ic(hI) | |
1504 | + | let il = split(hI[bk], "_") | |
1505 | + | let im = split(hI[bl], "_") | |
1506 | + | let in = if ((hI[bm] == "")) | |
1471 | 1507 | then nil | |
1472 | - | else split_4C( | |
1473 | - | let | |
1474 | - | let | |
1475 | - | let | |
1508 | + | else split_4C(hI[bm], "_") | |
1509 | + | let gO = split(ih[bt], "_") | |
1510 | + | let io = split(ih[bu], "_") | |
1511 | + | let ip = if ((ih[bv] == "")) | |
1476 | 1512 | then nil | |
1477 | - | else split_4C( | |
1478 | - | func | |
1479 | - | let | |
1480 | - | let | |
1481 | - | let | |
1482 | - | let | |
1483 | - | if (( | |
1484 | - | then $Tuple4(( | |
1485 | - | else if (( | |
1486 | - | then if (( | |
1487 | - | then throw((((("Attempt to take " + | |
1488 | - | else $Tuple4(( | |
1489 | - | else if ((-( | |
1490 | - | then throw((((("Attempt to take " + toString(-( | |
1491 | - | else $Tuple4(( | |
1513 | + | else split_4C(ih[bv], "_") | |
1514 | + | func iq (eL,hL) = { | |
1515 | + | let gy = eL._1 | |
1516 | + | let ir = parseIntValue(hL) | |
1517 | + | let is = parseIntValue(il[gy]) | |
1518 | + | let it = parseIntValue(gO[gy]) | |
1519 | + | if ((ir == 0)) | |
1520 | + | then $Tuple4((gy + 1), (eL._2 :+ il[gy]), (eL._3 :+ gO[gy]), eL._4) | |
1521 | + | else if ((ir > 0)) | |
1522 | + | then if ((ir > it)) | |
1523 | + | then throw((((("Attempt to take " + hL) + " from backpack, but only ") + toString(it)) + " available")) | |
1524 | + | else $Tuple4((gy + 1), (eL._2 :+ toString((is + ir))), (eL._3 :+ toString((it - ir))), (eL._4 + ir)) | |
1525 | + | else if ((-(ir) > is)) | |
1526 | + | then throw((((("Attempt to take " + toString(-(ir))) + " from warehouse, but only ") + toString(is)) + " available")) | |
1527 | + | else $Tuple4((gy + 1), (eL._2 :+ toString((is + ir))), (eL._3 :+ toString((it - ir))), (eL._4 + ir)) | |
1492 | 1528 | } | |
1493 | 1529 | ||
1494 | - | let | |
1495 | - | let | |
1496 | - | let | |
1497 | - | let | |
1498 | - | func | |
1499 | - | then | |
1500 | - | else | |
1501 | - | ||
1502 | - | func | |
1503 | - | then | |
1530 | + | let eW = { | |
1531 | + | let eN = ii | |
1532 | + | let eO = size(eN) | |
1533 | + | let eP = $Tuple4(0, nil, nil, 0) | |
1534 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
1535 | + | then eR | |
1536 | + | else iq(eR, eN[eS]) | |
1537 | + | ||
1538 | + | func eT (eR,eS) = if ((eS >= eO)) | |
1539 | + | then eR | |
1504 | 1540 | else throw("List size exceeds 6") | |
1505 | 1541 | ||
1506 | - | eQ( | |
1542 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
1507 | 1543 | } | |
1508 | - | func | |
1509 | - | let | |
1510 | - | let | |
1511 | - | let | |
1512 | - | let | |
1513 | - | if (( | |
1514 | - | then $Tuple4(( | |
1515 | - | else if (( | |
1516 | - | then if (( | |
1517 | - | then throw((((("Attempt to take " + | |
1518 | - | else $Tuple4(( | |
1519 | - | else if ((-( | |
1520 | - | then throw((((("Attempt to take " + toString(-( | |
1521 | - | else $Tuple4(( | |
1544 | + | func iu (eL,hL) = { | |
1545 | + | let gy = eL._1 | |
1546 | + | let ir = parseIntValue(hL) | |
1547 | + | let iv = parseIntValue(im[gy]) | |
1548 | + | let iw = parseIntValue(io[gy]) | |
1549 | + | if ((ir == 0)) | |
1550 | + | then $Tuple4((gy + 1), (eL._2 :+ im[gy]), (eL._3 :+ io[gy]), eL._4) | |
1551 | + | else if ((ir > 0)) | |
1552 | + | then if ((ir > iw)) | |
1553 | + | then throw((((("Attempt to take " + hL) + " from backpack, but only ") + toString(iw)) + " available")) | |
1554 | + | else $Tuple4((gy + 1), (eL._2 :+ toString((iv + ir))), (eL._3 :+ toString((iw - ir))), (eL._4 + ir)) | |
1555 | + | else if ((-(ir) > iv)) | |
1556 | + | then throw((((("Attempt to take " + toString(-(ir))) + " from warehouse, but only ") + toString(iv)) + " available")) | |
1557 | + | else $Tuple4((gy + 1), (eL._2 :+ toString((iv + ir))), (eL._3 :+ toString((iw - ir))), (eL._4 + ir)) | |
1522 | 1558 | } | |
1523 | 1559 | ||
1524 | - | let | |
1525 | - | let | |
1526 | - | let | |
1527 | - | let | |
1528 | - | func | |
1529 | - | then | |
1530 | - | else | |
1531 | - | ||
1532 | - | func | |
1533 | - | then | |
1560 | + | let gg = { | |
1561 | + | let eN = ij | |
1562 | + | let eO = size(eN) | |
1563 | + | let eP = $Tuple4(0, nil, nil, eW._4) | |
1564 | + | func hx (eR,eS) = if ((eS >= eO)) | |
1565 | + | then eR | |
1566 | + | else iu(eR, eN[eS]) | |
1567 | + | ||
1568 | + | func hy (eR,eS) = if ((eS >= eO)) | |
1569 | + | then eR | |
1534 | 1570 | else throw("List size exceeds 6") | |
1535 | 1571 | ||
1536 | - | | |
1572 | + | hy(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6) | |
1537 | 1573 | } | |
1538 | - | func | |
1539 | - | let | |
1540 | - | let | |
1541 | - | let | |
1542 | - | then parseIntValue( | |
1574 | + | func ix (eL,hL) = { | |
1575 | + | let gy = eL._1 | |
1576 | + | let ir = parseIntValue(hL) | |
1577 | + | let iy = if ((size(in) > gy)) | |
1578 | + | then parseIntValue(in[gy]) | |
1543 | 1579 | else 0 | |
1544 | - | let | |
1545 | - | then parseIntValue( | |
1580 | + | let iz = if ((size(ip) > gy)) | |
1581 | + | then parseIntValue(ip[gy]) | |
1546 | 1582 | else 0 | |
1547 | - | if (( | |
1548 | - | then $Tuple4(( | |
1549 | - | else if (( | |
1550 | - | then if (( | |
1551 | - | then throw((((("Attempt to take " + | |
1583 | + | if ((ir == 0)) | |
1584 | + | then $Tuple4((gy + 1), (eL._2 :+ toString(iy)), (eL._3 :+ toString(iz)), eL._4) | |
1585 | + | else if ((ir > 0)) | |
1586 | + | then if ((ir > iz)) | |
1587 | + | then throw((((("Attempt to take " + hL) + " from backpack, but only ") + toString(iz)) + " available")) | |
1552 | 1588 | else { | |
1553 | - | let | |
1554 | - | $Tuple4(( | |
1589 | + | let iA = (eB((iy + ir), bi) - eB(iy, bi)) | |
1590 | + | $Tuple4((gy + 1), (eL._2 :+ toString((iy + ir))), (eL._3 :+ toString((iz - ir))), (eL._4 + iA)) | |
1555 | 1591 | } | |
1556 | - | else if ((-( | |
1557 | - | then throw((((("Attempt to take " + toString(-( | |
1592 | + | else if ((-(ir) > iy)) | |
1593 | + | then throw((((("Attempt to take " + toString(-(ir))) + " from warehouse, but only ") + toString(iy)) + " available")) | |
1558 | 1594 | else { | |
1559 | - | let | |
1560 | - | $Tuple4(( | |
1595 | + | let iA = (eB((iy + ir), bi) - eB(iy, bi)) | |
1596 | + | $Tuple4((gy + 1), (eL._2 :+ toString((iy + ir))), (eL._3 :+ toString((iz - ir))), (eL._4 + iA)) | |
1561 | 1597 | } | |
1562 | 1598 | } | |
1563 | 1599 | ||
1564 | - | let | |
1600 | + | let hE = if ((size(ik) != 0)) | |
1565 | 1601 | then { | |
1566 | - | let | |
1567 | - | let | |
1568 | - | let | |
1569 | - | func | |
1570 | - | then | |
1571 | - | else | |
1572 | - | ||
1573 | - | func | |
1574 | - | then | |
1602 | + | let eN = ik | |
1603 | + | let eO = size(eN) | |
1604 | + | let eP = $Tuple4(0, nil, nil, gg._4) | |
1605 | + | func hA (eR,eS) = if ((eS >= eO)) | |
1606 | + | then eR | |
1607 | + | else ix(eR, eN[eS]) | |
1608 | + | ||
1609 | + | func hB (eR,eS) = if ((eS >= eO)) | |
1610 | + | then eR | |
1575 | 1611 | else throw("List size exceeds 50") | |
1576 | 1612 | ||
1577 | - | | |
1613 | + | hB(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(eP, 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) | |
1578 | 1614 | } | |
1579 | - | else $Tuple4(0, | |
1580 | - | let | |
1581 | - | if (( | |
1582 | - | then throw((((("Attempt to put total " + toString( | |
1583 | - | else $Tuple7(makeString( | |
1615 | + | else $Tuple4(0, in, ip, gg._4) | |
1616 | + | let iB = hE._4 | |
1617 | + | if ((iB > gQ)) | |
1618 | + | then throw((((("Attempt to put total " + toString(iB)) + " stuff, but only ") + toString(gQ)) + " warehouse space left")) | |
1619 | + | else $Tuple7(makeString(eW._2, "_"), makeString(gg._2, "_"), makeString_2C(hE._2, "_"), makeString(eW._3, "_"), makeString(gg._3, "_"), makeString_2C(hE._3, "_"), iB) | |
1584 | 1620 | } | |
1585 | 1621 | } | |
1586 | 1622 | ||
1587 | 1623 | ||
1588 | - | func | |
1589 | - | let | |
1590 | - | let | |
1591 | - | let | |
1592 | - | let | |
1593 | - | let | |
1594 | - | let | |
1595 | - | let | |
1596 | - | let | |
1597 | - | let | |
1598 | - | let | |
1599 | - | $Tuple2([IntegerEntry( | |
1600 | - | } | |
1601 | - | ||
1602 | - | ||
1603 | - | func | |
1624 | + | func iC (iD,iE) = { | |
1625 | + | let bW = toString(iD) | |
1626 | + | let iF = gW(toBigInt(iE)) | |
1627 | + | let iG = valueOrElse(getInteger(ed()), (ec + 1)) | |
1628 | + | let eh = toString(iG) | |
1629 | + | let hf = toInt((iF % dW)) | |
1630 | + | let gB = hd(iF, hf) | |
1631 | + | let ae = bb[hf] | |
1632 | + | let iH = Issue(eA(eh, "S"), makeString([eh, "S", gB, ae], "_"), 1, 0, false) | |
1633 | + | let bA = calculateAssetId(iH) | |
1634 | + | let iI = toBase58String(bA) | |
1635 | + | $Tuple2([IntegerEntry(ed(), (iG + 1)), iH, StringEntry(eg(eh), iI), StringEntry(bz(iI), bW), StringEntry(ej(eh), bW), IntegerEntry(bJ(iI), 0), IntegerEntry(ei(iI, bW), 0), ScriptTransfer(iD, 1, bA)], $Tuple2(iI, ae)) | |
1636 | + | } | |
1637 | + | ||
1638 | + | ||
1639 | + | func iJ (bW,iK,iL) = if (!(sigVerify_8Kb(iK, iL, f))) | |
1604 | 1640 | then throw("signature does not match") | |
1605 | 1641 | else { | |
1606 | - | let | |
1607 | - | let | |
1608 | - | let | |
1609 | - | let | |
1610 | - | let | |
1611 | - | let | |
1612 | - | let | |
1613 | - | let | |
1614 | - | if (if (( | |
1642 | + | let fj = split_4C(toUtf8String(iK), ";") | |
1643 | + | let iM = split_4C(fj[0], "|") | |
1644 | + | let iN = split(iM[er], "_") | |
1645 | + | let iO = parseIntValue(iN[0]) | |
1646 | + | let iP = parseIntValue(iN[1]) | |
1647 | + | let iQ = split(fj[1], ":") | |
1648 | + | let iR = iQ[0] | |
1649 | + | let iS = parseIntValue(iM[es]) | |
1650 | + | if (if ((iS > (lastBlock.timestamp + dO))) | |
1615 | 1651 | then true | |
1616 | - | else ((lastBlock.timestamp - | |
1617 | - | then throw(((("signature outdated: logTime=" + toString( | |
1652 | + | else ((lastBlock.timestamp - dO) > iS)) | |
1653 | + | then throw(((("signature outdated: logTime=" + toString(iS)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
1618 | 1654 | else { | |
1619 | - | let | |
1620 | - | let | |
1621 | - | if (( | |
1622 | - | then throw(((("Tx ids don't match! In state: " + | |
1655 | + | let iT = iQ[1] | |
1656 | + | let iU = valueOrElse(getString(au(bW)), "") | |
1657 | + | if ((iU != iT)) | |
1658 | + | then throw(((("Tx ids don't match! In state: " + iU) + ", in msg: ") + iT)) | |
1623 | 1659 | else { | |
1624 | - | let | |
1625 | - | let | |
1626 | - | let | |
1627 | - | let | |
1628 | - | if (( | |
1629 | - | then throw(((("oldHealth=" + toString( | |
1630 | - | else if ((0 >= | |
1660 | + | let bO = valueOrErrorMessage(getString(bS(bW)), "You don't have a duck staked") | |
1661 | + | let iV = cP(bO) | |
1662 | + | let iW = dw(valueOrElse(getInteger(cS(bO)), 0)) | |
1663 | + | let iX = valueOrElse(getInteger(iV), iW) | |
1664 | + | if ((iX != iO)) | |
1665 | + | then throw(((("oldHealth=" + toString(iX)) + " from state does not match one from flight log=") + toString(iO))) | |
1666 | + | else if ((0 >= iO)) | |
1631 | 1667 | then throw("You can't fly with zero health") | |
1632 | - | else if (!( | |
1668 | + | else if (!(gj(bO))) | |
1633 | 1669 | then throw("Equipment incompatible") | |
1634 | 1670 | else { | |
1635 | - | let | |
1636 | - | then | |
1671 | + | let iY = if ((size(iM) > et)) | |
1672 | + | then iM[et] | |
1637 | 1673 | else "" | |
1638 | - | let | |
1639 | - | then | |
1674 | + | let iZ = if ((size(iM) > eu)) | |
1675 | + | then iM[eu] | |
1640 | 1676 | else "" | |
1641 | - | let | |
1642 | - | then ( | |
1677 | + | let ja = if (if ((iP > 0)) | |
1678 | + | then (iY == "$") | |
1643 | 1679 | else false) | |
1644 | - | then | |
1680 | + | then al(invoke(L, "sendUsdtPrize", [bW], nil)) | |
1645 | 1681 | else 0 | |
1646 | - | $Tuple5( | |
1682 | + | $Tuple5(iP, bO, ja, iR, iZ) | |
1647 | 1683 | } | |
1648 | 1684 | } | |
1649 | 1685 | } | |
1650 | 1686 | } | |
1651 | 1687 | ||
1652 | 1688 | ||
1653 | - | func | |
1654 | - | let | |
1655 | - | let | |
1656 | - | let | |
1657 | - | let | |
1658 | - | (( | |
1659 | - | } | |
1660 | - | ||
1661 | - | ||
1662 | - | func | |
1663 | - | let | |
1664 | - | then $Tuple2( | |
1689 | + | func jb (bI,jc) = { | |
1690 | + | let hT = valueOrElse(getInteger(bJ(bI)), 0) | |
1691 | + | let jd = valueOrElse(getInteger(bD(aL, bI)), 0) | |
1692 | + | let je = (hT / 6) | |
1693 | + | let jf = (hT / 7) | |
1694 | + | ((aO + fraction(aO, ((hT + je) + (2 * jf)), 5)) + fraction(aO, jd, (jc * 5))) | |
1695 | + | } | |
1696 | + | ||
1697 | + | ||
1698 | + | func jg (av,jh,ji) = { | |
1699 | + | let jj = if ((jh == eo)) | |
1700 | + | then $Tuple2(ji, valueOrElse(getString(bS(av)), "")) | |
1665 | 1701 | else { | |
1666 | - | let | |
1667 | - | let | |
1668 | - | let | |
1669 | - | if (( | |
1670 | - | then throw((("Duck location type is " + | |
1671 | - | else $Tuple2( | |
1672 | - | } | |
1673 | - | let | |
1674 | - | let | |
1675 | - | let | |
1676 | - | let | |
1677 | - | let | |
1678 | - | let | |
1679 | - | if (( | |
1680 | - | then throw(( | |
1702 | + | let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked") | |
1703 | + | let jk = valueOrElse(getString(bU(bO)), aQ) | |
1704 | + | let cp = split(value(jk), "_") | |
1705 | + | if ((cp[bx] != "L")) | |
1706 | + | then throw((("Duck location type is " + cp[bx]) + ", but should be L")) | |
1707 | + | else $Tuple2(cp[by], bO) | |
1708 | + | } | |
1709 | + | let bI = jj._1 | |
1710 | + | let jl = jj._2 | |
1711 | + | let jm = value(assetInfo(fromBase58String(bI))) | |
1712 | + | let jn = bC(bI) | |
1713 | + | let jo = valueOrErrorMessage(getInteger(jn), (("Land " + jm.name) + " is not staked")) | |
1714 | + | let jp = valueOrErrorMessage(getString(bz(bI)), (("NFT " + jm.name) + " is orphaned")) | |
1715 | + | if ((jp != av)) | |
1716 | + | then throw((aI + " is not yours")) | |
1681 | 1717 | else { | |
1682 | - | let | |
1683 | - | $Tuple4( | |
1684 | - | } | |
1685 | - | } | |
1686 | - | ||
1687 | - | ||
1688 | - | func | |
1718 | + | let jq = split(jm.description, "_") | |
1719 | + | $Tuple4(jl, bI, jq, jo) | |
1720 | + | } | |
1721 | + | } | |
1722 | + | ||
1723 | + | ||
1724 | + | func jr (av,eC,jh,ji) = if ((0 > eC)) | |
1689 | 1725 | then throw("Negative amount") | |
1690 | 1726 | else { | |
1691 | - | let | |
1692 | - | let | |
1693 | - | let | |
1694 | - | let | |
1695 | - | if ((0 > | |
1696 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1727 | + | let fQ = jg(av, jh, ji) | |
1728 | + | let ar = fQ._3[T] | |
1729 | + | let gu = gA(fQ._3[U]) | |
1730 | + | let gE = (aH() - fQ._4) | |
1731 | + | if ((0 > gE)) | |
1732 | + | then throw(((("Saved timestamp is in future, saved = " + toString(fQ._4)) + ", final = ") + toString(aH()))) | |
1697 | 1733 | else { | |
1698 | - | let | |
1699 | - | let | |
1700 | - | let | |
1701 | - | if (( | |
1702 | - | then throw(((("Not enough resources, available = " + toString( | |
1734 | + | let jc = aq(ar) | |
1735 | + | let js = jb(fQ._2, jc) | |
1736 | + | let jt = fraction(gE, (js * jc), dJ) | |
1737 | + | if ((eC > jt)) | |
1738 | + | then throw(((("Not enough resources, available = " + toString(jt)) + ", requested = ") + toString(eC))) | |
1703 | 1739 | else { | |
1704 | - | let | |
1705 | - | let | |
1706 | - | let | |
1707 | - | let | |
1708 | - | let | |
1709 | - | let | |
1710 | - | let | |
1711 | - | let | |
1712 | - | let | |
1713 | - | if (if (( | |
1714 | - | then ( | |
1740 | + | let ju = fraction((jt - eC), dJ, (js * jc)) | |
1741 | + | let jv = (aH() - ju) | |
1742 | + | let hS = (jc / p) | |
1743 | + | let gP = gK(gu, (gE - ju), hS, js) | |
1744 | + | let hR = bH(fQ._2) | |
1745 | + | let hT = valueOrElse(getInteger(bJ(fQ._2)), 0) | |
1746 | + | let hI = hQ(hR, hS, hT) | |
1747 | + | let hZ = split(hI[bn], "_") | |
1748 | + | let gQ = parseIntValue(hZ[bq]) | |
1749 | + | if (if ((jh == eo)) | |
1750 | + | then (eC > gQ) | |
1715 | 1751 | else false) | |
1716 | - | then throw((("Only " + toString( | |
1752 | + | then throw((("Only " + toString(gQ)) + " space left in warehouse")) | |
1717 | 1753 | else { | |
1718 | - | let | |
1719 | - | let | |
1720 | - | let | |
1721 | - | let | |
1722 | - | let | |
1723 | - | then $Tuple4( | |
1724 | - | else if (( | |
1725 | - | then $Tuple4( | |
1754 | + | let hD = bT(fQ._1) | |
1755 | + | let ih = hC(hD) | |
1756 | + | let gO = split(ih[bt], "_") | |
1757 | + | let gN = split(hI[bk], "_") | |
1758 | + | let jw = if ((jh == eo)) | |
1759 | + | then $Tuple4(gC(gN, gu, (gE - ju), hS, js), ih[bt], (parseIntValue(hZ[bp]) + gP._2), (parseIntValue(hZ[bq]) - gP._2)) | |
1760 | + | else if ((jh == ep)) | |
1761 | + | then $Tuple4(hI[bk], gC(gO, gu, (gE - ju), hS, js), parseIntValue(hZ[bp]), parseIntValue(hZ[bq])) | |
1726 | 1762 | else { | |
1727 | - | let | |
1728 | - | let | |
1729 | - | $Tuple4( | |
1763 | + | let jx = gM(gN, gO, gP, gQ) | |
1764 | + | let jy = min([parseIntValue(hZ[bq]), gP._2]) | |
1765 | + | $Tuple4(jx._1, jx._2, (parseIntValue(hZ[bp]) + jy), (parseIntValue(hZ[bq]) - jy)) | |
1730 | 1766 | } | |
1731 | - | let | |
1732 | - | let | |
1733 | - | let | |
1734 | - | let | |
1735 | - | $Tuple5([IntegerEntry( | |
1767 | + | let jz = jw._1 | |
1768 | + | let jA = jw._2 | |
1769 | + | let jB = jw._3 | |
1770 | + | let jC = jw._4 | |
1771 | + | $Tuple5([IntegerEntry(bC(fQ._2), jv), IntegerEntry(bF(aI, fQ._2, av), jv)], hD, [ih[bs], jA, ih[bu], ih[bv]], hR, [hI[bj], jz, hI[bl], hI[bm], makeString([hZ[bo], toString(jB), toString(jC), hZ[br]], "_")]) | |
1736 | 1772 | } | |
1737 | 1773 | } | |
1738 | 1774 | } | |
1739 | 1775 | } | |
1740 | 1776 | ||
1741 | 1777 | ||
1742 | - | func | |
1743 | - | let | |
1744 | - | let | |
1745 | - | let | |
1746 | - | | |
1747 | - | } | |
1748 | - | ||
1749 | - | ||
1750 | - | func | |
1751 | - | let | |
1752 | - | let | |
1753 | - | let | |
1754 | - | let | |
1755 | - | let | |
1756 | - | if (if (!( | |
1757 | - | then ( | |
1778 | + | func jD (av,bI,jc,jh) = { | |
1779 | + | let jn = bC(bI) | |
1780 | + | let jo = value(getInteger(jn)) | |
1781 | + | let jt = (fraction((aH() - jo), jb(bI, jc), dJ) * jc) | |
1782 | + | jr(av, jt, jh, bI) | |
1783 | + | } | |
1784 | + | ||
1785 | + | ||
1786 | + | func jE (eY,iD,jF,bI) = { | |
1787 | + | let av = toString(iD) | |
1788 | + | let fQ = jg(av, eq, bI) | |
1789 | + | let jc = aq(fQ._3[T]) | |
1790 | + | let jG = bJ(fQ._2) | |
1791 | + | let jH = valueOrElse(getInteger(jG), 0) | |
1792 | + | if (if (!(b)) | |
1793 | + | then (jH >= 3) | |
1758 | 1794 | else false) | |
1759 | 1795 | then throw("Currently max infrastructure level = 3") | |
1760 | 1796 | else { | |
1761 | - | let | |
1762 | - | let | |
1763 | - | if (if ( | |
1764 | - | then ( | |
1797 | + | let jI = ((sqrt(jc, 0, 0, DOWN) / 5) + 2) | |
1798 | + | let dB = (jH + 1) | |
1799 | + | if (if (b) | |
1800 | + | then (dB > jI) | |
1765 | 1801 | else false) | |
1766 | - | then throw(("Currently max infrastructure level = " + toString( | |
1802 | + | then throw(("Currently max infrastructure level = " + toString(jI))) | |
1767 | 1803 | else { | |
1768 | - | let | |
1769 | - | if (if (!( | |
1770 | - | then ( | |
1804 | + | let jJ = fraction(dR, (jc * dB), p) | |
1805 | + | if (if (!(eY)) | |
1806 | + | then (jF != jJ) | |
1771 | 1807 | else false) | |
1772 | - | then throw(("Payment attached should be " + toString( | |
1808 | + | then throw(("Payment attached should be " + toString(jJ))) | |
1773 | 1809 | else { | |
1774 | - | let | |
1775 | - | let | |
1776 | - | let | |
1777 | - | let | |
1778 | - | let | |
1779 | - | let | |
1780 | - | let | |
1781 | - | let | |
1782 | - | let | |
1783 | - | let | |
1784 | - | let | |
1785 | - | let | |
1786 | - | $Tuple3(([IntegerEntry( | |
1810 | + | let hD = bT(fQ._1) | |
1811 | + | let ih = hC(hD) | |
1812 | + | let jK = split(ih[bu], "_") | |
1813 | + | let jL = fraction(k, (jc * dB), p) | |
1814 | + | let jM = makeString(eX(eY, jK, jL), "_") | |
1815 | + | let jN = jD(av, fQ._2, jc, eq) | |
1816 | + | let jO = jN._5 | |
1817 | + | let jP = hF(jO[bj]) | |
1818 | + | let jQ = makeString([split(jO[bj], "_")[0], toString(dB)], "_") | |
1819 | + | let jR = hF(jQ) | |
1820 | + | let hZ = split(jO[bn], "_") | |
1821 | + | let jS = makeString([hZ[bo], hZ[bp], toString(((parseIntValue(hZ[bq]) + jR) - jP)), toString(jR)], "_") | |
1822 | + | $Tuple3(([IntegerEntry(jG, dB), IntegerEntry(ei(fQ._2, av), dB), StringEntry(hD, makeString([ih[bs], jN._3[bt], jM, ih[bv]], ":")), StringEntry(jN._4, makeString([jQ, jO[bk], jO[bl], jO[bm], jS], ":"))] ++ jN._1), dB, jL) | |
1787 | 1823 | } | |
1788 | 1824 | } | |
1789 | 1825 | } | |
1790 | 1826 | } | |
1791 | 1827 | ||
1792 | 1828 | ||
1793 | - | func | |
1794 | - | let | |
1795 | - | let | |
1796 | - | let | |
1797 | - | $Tuple2([IntegerEntry( | |
1798 | - | } | |
1799 | - | ||
1800 | - | ||
1801 | - | func | |
1802 | - | let | |
1803 | - | let | |
1804 | - | if (if (if ( | |
1805 | - | then ( | |
1829 | + | func jT (jU,jV,jW,jX) = { | |
1830 | + | let dv = valueOrElse(getInteger(jV), 0) | |
1831 | + | let dA = (dv + jX) | |
1832 | + | let jY = dy(valueOrElse(getInteger(jU), 0), dA) | |
1833 | + | $Tuple2([IntegerEntry(jU, jY[0]), IntegerEntry(jV, dA), IntegerEntry(jW, (valueOrElse(getInteger(jW), 0) + jY[1]))], dA) | |
1834 | + | } | |
1835 | + | ||
1836 | + | ||
1837 | + | func jZ (bO,jX) = { | |
1838 | + | let jm = value(assetInfo(fromBase58String(bO))) | |
1839 | + | let av = valueOrErrorMessage(getString(bR(bO)), (("NFT " + jm.name) + " is orphaned")) | |
1840 | + | if (if (if (c) | |
1841 | + | then (jm.issuer == this) | |
1806 | 1842 | else false) | |
1807 | - | then contains( | |
1843 | + | then contains(jm.name, aK) | |
1808 | 1844 | else false) | |
1809 | - | then | |
1810 | - | else | |
1811 | - | } | |
1812 | - | ||
1813 | - | ||
1814 | - | func | |
1815 | - | ||
1816 | - | ||
1817 | - | func | |
1818 | - | let | |
1819 | - | let | |
1820 | - | let | |
1821 | - | if (!(isDefined( | |
1845 | + | then jT(cW(av), cV(av), cX(av), jX) | |
1846 | + | else jT(cS(bO), cR(bO), cT(bO), jX) | |
1847 | + | } | |
1848 | + | ||
1849 | + | ||
1850 | + | func ka (av,jX) = jT(cW(av), cV(av), cX(av), jX) | |
1851 | + | ||
1852 | + | ||
1853 | + | func kb (av) = { | |
1854 | + | let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked") | |
1855 | + | let kc = bM(av) | |
1856 | + | let kd = getString(kc) | |
1857 | + | if (!(isDefined(kd))) | |
1822 | 1858 | then throw("You are not eligible for ONBOARD artifact") | |
1823 | 1859 | else { | |
1824 | - | let | |
1825 | - | let | |
1826 | - | if (isDefined( | |
1827 | - | then throw(("You already used your ONBOARD artifact on duck " + value( | |
1860 | + | let ke = bP(av) | |
1861 | + | let kf = getString(ke) | |
1862 | + | if (isDefined(kf)) | |
1863 | + | then throw(("You already used your ONBOARD artifact on duck " + value(kf))) | |
1828 | 1864 | else { | |
1829 | - | let | |
1830 | - | let | |
1831 | - | if (isDefined( | |
1832 | - | then throw(((("The duck " + | |
1833 | - | else ([StringEntry( | |
1865 | + | let kg = bN(bO) | |
1866 | + | let kh = getString(kg) | |
1867 | + | if (isDefined(kh)) | |
1868 | + | then throw(((("The duck " + bO) + " already got points from ONBOARD artifact from user ") + value(kh))) | |
1869 | + | else ([StringEntry(ke, bO), StringEntry(kg, av)] ++ jZ(bO, ds)._1) | |
1834 | 1870 | } | |
1835 | 1871 | } | |
1836 | 1872 | } | |
1837 | 1873 | ||
1838 | 1874 | ||
1839 | - | func | |
1840 | - | let | |
1841 | - | let | |
1842 | - | let | |
1843 | - | let | |
1844 | - | if ((valueOrElse(getInteger( | |
1875 | + | func ki (av,ji) = { | |
1876 | + | let fQ = jg(av, eq, ji) | |
1877 | + | let bI = fQ._2 | |
1878 | + | let jc = aq(fQ._3[T]) | |
1879 | + | let kj = bD(aL, bI) | |
1880 | + | if ((valueOrElse(getInteger(kj), 0) > 0)) | |
1845 | 1881 | then throw("Presale artifact is already activated") | |
1846 | - | else if ((parseIntValue( | |
1847 | - | then throw(((( | |
1882 | + | else if ((parseIntValue(fQ._3[S]) > ec)) | |
1883 | + | then throw((((aI + " ") + bI) + " is not eligible for presale artifact")) | |
1848 | 1884 | else { | |
1849 | - | let | |
1850 | - | ((( | |
1885 | + | let jN = jD(av, bI, jc, eq) | |
1886 | + | (((jN._1 :+ IntegerEntry(kj, jc)) :+ StringEntry(jN._2, makeString(jN._3, ":"))) :+ StringEntry(jN._4, makeString(jN._5, ":"))) | |
1851 | 1887 | } | |
1852 | 1888 | } | |
1853 | 1889 | ||
1854 | 1890 | ||
1855 | - | func | |
1856 | - | let | |
1857 | - | let | |
1858 | - | let | |
1859 | - | let | |
1860 | - | let | |
1861 | - | let | |
1862 | - | if (( | |
1891 | + | func kk (bO) = { | |
1892 | + | let co = valueOrElse(getInteger(Q, bZ), 0) | |
1893 | + | let jk = split(valueOrElse(getString(bU(bO)), aQ), "_") | |
1894 | + | let cq = lastBlock.timestamp | |
1895 | + | let cr = ci(Q, co) | |
1896 | + | let ck = cr[ce] | |
1897 | + | let cl = cr[cf] | |
1898 | + | if ((jk[bx] != "T")) | |
1863 | 1899 | then false | |
1864 | - | else if (if (if ((parseIntValue( | |
1865 | - | then ( | |
1900 | + | else if (if (if ((parseIntValue(jk[bw]) == co)) | |
1901 | + | then (cl[ch] == "INPROGRESS") | |
1866 | 1902 | else false) | |
1867 | - | then (parseIntValue( | |
1903 | + | then (parseIntValue(ck[cg]) > cq) | |
1868 | 1904 | else false) | |
1869 | 1905 | then throw("Your duck is taking part in the tournament") | |
1870 | - | else | |
1871 | - | } | |
1872 | - | ||
1873 | - | ||
1874 | - | func | |
1875 | - | let | |
1876 | - | if ( | |
1906 | + | else ap(invoke(this, "exitTournamentInternal", [bO], nil)) | |
1907 | + | } | |
1908 | + | ||
1909 | + | ||
1910 | + | func kl (km,dB,kn,av,ko,kp) = { | |
1911 | + | let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked") | |
1912 | + | if (kk(bO)) | |
1877 | 1913 | then throw("mergeInternal_checkTournament") | |
1878 | 1914 | else { | |
1879 | - | func | |
1880 | - | let | |
1881 | - | let | |
1882 | - | let | |
1883 | - | let | |
1884 | - | if (( | |
1885 | - | then throw(( | |
1915 | + | func kq (eL,bI) = { | |
1916 | + | let jm = value(assetInfo(fromBase58String(bI))) | |
1917 | + | let jn = bC(bI) | |
1918 | + | let jo = valueOrErrorMessage(getInteger(jn), (("NFT " + jm.name) + " is not staked")) | |
1919 | + | let jp = valueOrErrorMessage(getString(bz(bI)), (("NFT " + jm.name) + " is orphaned")) | |
1920 | + | if ((jp != av)) | |
1921 | + | then throw((aI + " is not yours")) | |
1886 | 1922 | else { | |
1887 | - | let | |
1888 | - | let | |
1889 | - | if (if (( | |
1890 | - | then ( | |
1923 | + | let jq = split(jm.description, "_") | |
1924 | + | let ae = jq[V] | |
1925 | + | if (if ((eL._3 != "")) | |
1926 | + | then (eL._3 != ae) | |
1891 | 1927 | else false) | |
1892 | 1928 | then throw("Lands should be on the same continent to merge") | |
1893 | 1929 | else { | |
1894 | - | let | |
1895 | - | let | |
1896 | - | let | |
1897 | - | let | |
1898 | - | let | |
1899 | - | let | |
1900 | - | let | |
1901 | - | let | |
1902 | - | let | |
1903 | - | if (("S" == | |
1930 | + | let ar = jq[T] | |
1931 | + | let kr = eL._1 | |
1932 | + | let gy = valueOrErrorMessage(indexOf(kr, ar), "You haven't passed all the lands needed") | |
1933 | + | let ks = (take(kr, gy) + drop(kr, (gy + 1))) | |
1934 | + | let jc = aq(ar) | |
1935 | + | let kt = (eL._2 + valueOrElse(getInteger(bD(aL, bI)), 0)) | |
1936 | + | let hT = valueOrElse(getInteger(bJ(bI)), 0) | |
1937 | + | let ku = { | |
1938 | + | let g = ar | |
1939 | + | if (("S" == g)) | |
1904 | 1940 | then 3 | |
1905 | - | else if (("M" == | |
1941 | + | else if (("M" == g)) | |
1906 | 1942 | then 4 | |
1907 | - | else if (("L" == | |
1943 | + | else if (("L" == g)) | |
1908 | 1944 | then 5 | |
1909 | - | else if (("XL" == | |
1945 | + | else if (("XL" == g)) | |
1910 | 1946 | then 6 | |
1911 | 1947 | else throw("Only S, M, L, XL can merge") | |
1912 | 1948 | } | |
1913 | - | if (( | |
1949 | + | if ((hT != ku)) | |
1914 | 1950 | then throw("All lands should be maxed to merge") | |
1915 | 1951 | else { | |
1916 | - | let | |
1917 | - | let | |
1918 | - | let | |
1919 | - | if ((0 > | |
1920 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1952 | + | let eh = jq[S] | |
1953 | + | let gu = gA(jq[U]) | |
1954 | + | let gE = (lastBlock.timestamp - jo) | |
1955 | + | if ((0 > gE)) | |
1956 | + | then throw(((("Saved timestamp is in future, saved = " + toString(jo)) + ", current = ") + toString(lastBlock.timestamp))) | |
1921 | 1957 | else { | |
1922 | - | let | |
1923 | - | let | |
1924 | - | let | |
1925 | - | let | |
1926 | - | let | |
1927 | - | let | |
1928 | - | let | |
1929 | - | let | |
1930 | - | if (!(isDefined( | |
1931 | - | then throw(("Your staked lands don't contain " + | |
1958 | + | let js = jb(bI, jc) | |
1959 | + | let hS = (jc / p) | |
1960 | + | let jA = gC(split(eL._4, "_"), gu, gE, hS, js) | |
1961 | + | let eV = gs(eL._6, gu, hS, -1) | |
1962 | + | let kv = gs(eL._10, gu, hS, -1) | |
1963 | + | let hm = gs(eL._9, gu, hS, 1) | |
1964 | + | let kw = eL._7 | |
1965 | + | let K = indexOf(kw, bI) | |
1966 | + | if (!(isDefined(K))) | |
1967 | + | then throw(("Your staked lands don't contain " + bI)) | |
1932 | 1968 | else { | |
1933 | - | let | |
1934 | - | let | |
1935 | - | $Tuple10( | |
1936 | - | then [DeleteEntry( | |
1937 | - | else nil)), | |
1969 | + | let kx = bB(bI) | |
1970 | + | let ky = valueOrElse(getString(kx), "") | |
1971 | + | $Tuple10(ks, kt, ae, jA, ((((((((((((eL._5 :+ DeleteEntry(bC(bI))) :+ DeleteEntry(bF(aI, bI, av))) :+ DeleteEntry(eg(eh))) :+ DeleteEntry(bz(bI))) :+ DeleteEntry(bJ(bI))) :+ DeleteEntry(ei(bI, av))) :+ DeleteEntry(bD(aL, bI))) :+ DeleteEntry(ej(eh))) :+ DeleteEntry(bH(bI))) :+ DeleteEntry(kx)) :+ Burn(fromBase58String(bI), 1)) ++ (if ((ky != "")) | |
1972 | + | then [DeleteEntry(ee(ky))] | |
1973 | + | else nil)), eV, removeByIndex(kw, value(K)), (eL._8 + jc), hm, kv) | |
1938 | 1974 | } | |
1939 | 1975 | } | |
1940 | 1976 | } | |
1942 | 1978 | } | |
1943 | 1979 | } | |
1944 | 1980 | ||
1945 | - | let | |
1946 | - | let | |
1947 | - | let | |
1948 | - | let | |
1949 | - | let | |
1950 | - | let | |
1951 | - | then split_51C(value( | |
1981 | + | let hD = bT(bO) | |
1982 | + | let ih = hC(hD) | |
1983 | + | let gt = split(valueOrElse(getString(ac()), "0_0_0_0_0_0"), "_") | |
1984 | + | let kz = af(av) | |
1985 | + | let kA = getString(kz) | |
1986 | + | let kB = if (isDefined(kA)) | |
1987 | + | then split_51C(value(kA), "_") | |
1952 | 1988 | else nil | |
1953 | - | let | |
1954 | - | let | |
1955 | - | let | |
1956 | - | let | |
1957 | - | let | |
1958 | - | let | |
1959 | - | func | |
1960 | - | then | |
1961 | - | else | |
1962 | - | ||
1963 | - | func | |
1964 | - | then | |
1989 | + | let kC = split(value(assetInfo(fromBase58String(ko[0]))).description, "_")[V] | |
1990 | + | let kD = split(valueOrElse(getString(ad(kC)), "0_0_0_0_0_0"), "_") | |
1991 | + | let eW = { | |
1992 | + | let eN = ko | |
1993 | + | let eO = size(eN) | |
1994 | + | let eP = $Tuple10(kn, 0, "", ih[bt], nil, gt, kB, 0, split("0_0_0_0_0_0", "_"), kD) | |
1995 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
1996 | + | then eR | |
1997 | + | else kq(eR, eN[eS]) | |
1998 | + | ||
1999 | + | func eT (eR,eS) = if ((eS >= eO)) | |
2000 | + | then eR | |
1965 | 2001 | else throw("List size exceeds 5") | |
1966 | 2002 | ||
1967 | - | eQ( | |
2003 | + | eT(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5) | |
1968 | 2004 | } | |
1969 | - | let | |
1970 | - | let | |
1971 | - | let | |
1972 | - | let | |
1973 | - | let | |
1974 | - | let | |
1975 | - | let | |
1976 | - | let | |
1977 | - | let | |
1978 | - | let | |
1979 | - | let | |
1980 | - | $Tuple2(((((((((((((((( | |
1981 | - | then StringEntry( | |
1982 | - | else DeleteEntry( | |
2005 | + | let ae = eW._3 | |
2006 | + | let hf = valueOrErrorMessage(indexOf(bb, ae), ("Unknown continent: " + ae)) | |
2007 | + | let gB = hl(eW._9, (aq(km) / p)) | |
2008 | + | let iG = valueOrElse(getInteger(ed()), (ec + 1)) | |
2009 | + | let kE = toString(iG) | |
2010 | + | let iH = Issue(eA(kE, km), makeString([kE, km, gB, ae], "_"), 1, 0, false) | |
2011 | + | let bA = calculateAssetId(iH) | |
2012 | + | let kF = toBase58String(bA) | |
2013 | + | let jM = makeString(eX((kp > 0), split(ih[bu], "_"), kp), "_") | |
2014 | + | let kG = ah(av) | |
2015 | + | let kH = valueOrElse(getInteger(kG), 0) | |
2016 | + | $Tuple2((((((((((((((((eW._5 :+ (if ((size(eW._7) > 0)) | |
2017 | + | then StringEntry(kz, makeString_11C(eW._7, "_")) | |
2018 | + | else DeleteEntry(kz))) :+ IntegerEntry(kG, if ((eW._8 > kH)) | |
1983 | 2019 | then 0 | |
1984 | - | else ( | |
1985 | - | } | |
1986 | - | } | |
1987 | - | ||
1988 | - | ||
1989 | - | func | |
1990 | - | ||
1991 | - | ||
1992 | - | func | |
1993 | - | ||
1994 | - | ||
1995 | - | func | |
1996 | - | ||
1997 | - | ||
1998 | - | func | |
1999 | - | ||
2000 | - | ||
2001 | - | func | |
2002 | - | let | |
2003 | - | if ((4 == | |
2004 | - | then | |
2005 | - | else if ((3 == | |
2006 | - | then | |
2007 | - | else if ((5 == | |
2008 | - | then | |
2009 | - | else if ((2 == | |
2010 | - | then | |
2020 | + | else (kH - eW._8))) :+ IntegerEntry(ed(), (iG + 1))) :+ iH) :+ StringEntry(eg(kE), kF)) :+ StringEntry(bz(kF), av)) :+ StringEntry(ej(kE), av)) :+ IntegerEntry(bD(aL, kF), eW._2)) :+ IntegerEntry(bJ(kF), dB)) :+ IntegerEntry(ei(kF, av), dB)) :+ StringEntry(hD, makeString([ih[bs], eW._4, jM, ih[bv]], ":"))) :+ StringEntry(ac(), makeString(eW._6, "_"))) :+ StringEntry(ad(ae), makeString(eW._10, "_"))) :+ StringEntry(bU(bO), makeString([ae, "L", kF], "_"))) :+ ScriptTransfer(addressFromStringValue(av), 1, bA)), kF) | |
2021 | + | } | |
2022 | + | } | |
2023 | + | ||
2024 | + | ||
2025 | + | func kI (av,ko) = kl("M", 3, "SSSS", av, ko, 0) | |
2026 | + | ||
2027 | + | ||
2028 | + | func kJ (av,ko) = kl("L", 4, "SMM", av, ko, (k * 4)) | |
2029 | + | ||
2030 | + | ||
2031 | + | func kK (av,ko) = kl("XL", 5, "SSSML", av, ko, (k * 47)) | |
2032 | + | ||
2033 | + | ||
2034 | + | func kL (av,ko) = kl("XXL", 6, "LXL", av, ko, (k * 54)) | |
2035 | + | ||
2036 | + | ||
2037 | + | func kM (av,ko) = { | |
2038 | + | let g = size(ko) | |
2039 | + | if ((4 == g)) | |
2040 | + | then kI(av, ko) | |
2041 | + | else if ((3 == g)) | |
2042 | + | then kJ(av, ko) | |
2043 | + | else if ((5 == g)) | |
2044 | + | then kK(av, ko) | |
2045 | + | else if ((2 == g)) | |
2046 | + | then kL(av, ko) | |
2011 | 2047 | else throw("Unknown merge") | |
2012 | 2048 | } | |
2013 | 2049 | ||
2014 | 2050 | ||
2015 | - | func | |
2016 | - | then valueOrElse(getBoolean( | |
2051 | + | func kN (gy) = if (if ((gy.originCaller != L)) | |
2052 | + | then valueOrElse(getBoolean(at()), false) | |
2017 | 2053 | else false) | |
2018 | 2054 | then throw("Contracts are under maintenance") | |
2019 | - | else [StringEntry(dx(toString(gv.originCaller)), toBase58String(gv.transactionId))] | |
2020 | - | ||
2021 | - | ||
2022 | - | @Callable(gv) | |
2023 | - | func constructorV1 (kI) = if ((gv.caller != this)) | |
2055 | + | else [StringEntry(au(toString(gy.originCaller)), toBase58String(gy.transactionId))] | |
2056 | + | ||
2057 | + | ||
2058 | + | func kO (av,bI) = { | |
2059 | + | let hR = bH(bI) | |
2060 | + | let kP = split(value(assetInfo(fromBase58String(bI))).description, "_") | |
2061 | + | let ar = kP[T] | |
2062 | + | let jc = aq(ar) | |
2063 | + | let hT = valueOrElse(getInteger(bJ(bI)), 0) | |
2064 | + | let hS = (jc / p) | |
2065 | + | let gu = gA(kP[U]) | |
2066 | + | let hI = hQ(hR, hS, hT) | |
2067 | + | let gN = split(hI[bk], "_") | |
2068 | + | let jn = bC(bI) | |
2069 | + | let jo = getIntegerValue(jn) | |
2070 | + | let gE = (aH() - jo) | |
2071 | + | if ((0 > gE)) | |
2072 | + | then throw(((("Saved timestamp is in future, saved = " + toString(jo)) + ", final = ") + toString(aH()))) | |
2073 | + | else { | |
2074 | + | let js = jb(bI, jc) | |
2075 | + | let kQ = gI(gN, gu, gE, hS, js) | |
2076 | + | let jd = valueOrElse(getInteger(bD(aL, bI)), 0) | |
2077 | + | let kR = ((jc * o) + ((((jc * hT) + jd) * o) / 5)) | |
2078 | + | let kS = (fraction(kQ._2, aR, o) * aU) | |
2079 | + | func kT (eL,hL) = (eL + parseIntValue(hL)) | |
2080 | + | ||
2081 | + | let kU = { | |
2082 | + | let eN = split(hI[bl], "_") | |
2083 | + | let eO = size(eN) | |
2084 | + | let eP = 0 | |
2085 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
2086 | + | then eR | |
2087 | + | else kT(eR, eN[eS]) | |
2088 | + | ||
2089 | + | func eT (eR,eS) = if ((eS >= eO)) | |
2090 | + | then eR | |
2091 | + | else throw("List size exceeds 6") | |
2092 | + | ||
2093 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
2094 | + | } | |
2095 | + | let kV = (fraction(kU, (2 * aR), o) * aU) | |
2096 | + | let kW = if ((hI[bm] == "")) | |
2097 | + | then nil | |
2098 | + | else split_4C(hI[bm], "_") | |
2099 | + | func hM (eL,hL) = { | |
2100 | + | let fv = eL._2 | |
2101 | + | let kX = parseIntValue(split(bd[fv], "_")[be]) | |
2102 | + | $Tuple2((eL._1 + ((parseIntValue(hL) * kX) * n)), (fv + 1)) | |
2103 | + | } | |
2104 | + | ||
2105 | + | let kY = { | |
2106 | + | let eN = kW | |
2107 | + | let eO = size(eN) | |
2108 | + | let eP = $Tuple2(0, 0) | |
2109 | + | func hx (eR,eS) = if ((eS >= eO)) | |
2110 | + | then eR | |
2111 | + | else hM(eR, eN[eS]) | |
2112 | + | ||
2113 | + | func hy (eR,eS) = if ((eS >= eO)) | |
2114 | + | then eR | |
2115 | + | else throw("List size exceeds 24") | |
2116 | + | ||
2117 | + | hy(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(eP, 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) | |
2118 | + | } | |
2119 | + | let kZ = (fraction(kY._1, (2 * aR), o) * aU) | |
2120 | + | $Tuple4(kR, kS, kV, kZ) | |
2121 | + | } | |
2122 | + | } | |
2123 | + | ||
2124 | + | ||
2125 | + | func la (av,bO) = { | |
2126 | + | let gk = cU(bO) | |
2127 | + | let lb = split(valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
2128 | + | let hD = bT(bO) | |
2129 | + | let ih = hC(hD) | |
2130 | + | let gn = gc(lb, fr(ih[bv]), true, nil) | |
2131 | + | let lc = fw(gn) | |
2132 | + | func hK (eL,hL) = (eL + parseIntValue(hL)) | |
2133 | + | ||
2134 | + | let jA = { | |
2135 | + | let eN = split(ih[bt], "_") | |
2136 | + | let eO = size(eN) | |
2137 | + | let eP = 0 | |
2138 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
2139 | + | then eR | |
2140 | + | else hK(eR, eN[eS]) | |
2141 | + | ||
2142 | + | func eT (eR,eS) = if ((eS >= eO)) | |
2143 | + | then eR | |
2144 | + | else throw("List size exceeds 6") | |
2145 | + | ||
2146 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
2147 | + | } | |
2148 | + | let kS = (fraction(jA, aR, o) * aU) | |
2149 | + | let ld = { | |
2150 | + | let eN = split(ih[bu], "_") | |
2151 | + | let eO = size(eN) | |
2152 | + | let eP = 0 | |
2153 | + | func hx (eR,eS) = if ((eS >= eO)) | |
2154 | + | then eR | |
2155 | + | else hK(eR, eN[eS]) | |
2156 | + | ||
2157 | + | func hy (eR,eS) = if ((eS >= eO)) | |
2158 | + | then eR | |
2159 | + | else throw("List size exceeds 6") | |
2160 | + | ||
2161 | + | hy(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6) | |
2162 | + | } | |
2163 | + | let kV = (fraction(ld, (2 * aR), o) * aU) | |
2164 | + | let kW = if ((lc == "")) | |
2165 | + | then nil | |
2166 | + | else split_4C(lc, "_") | |
2167 | + | func hM (eL,hL) = { | |
2168 | + | let fv = eL._2 | |
2169 | + | let kX = parseIntValue(split(bd[fv], "_")[be]) | |
2170 | + | $Tuple2((eL._1 + ((parseIntValue(hL) * kX) * n)), (fv + 1)) | |
2171 | + | } | |
2172 | + | ||
2173 | + | let le = { | |
2174 | + | let eN = kW | |
2175 | + | let eO = size(eN) | |
2176 | + | let eP = $Tuple2(0, 0) | |
2177 | + | func hA (eR,eS) = if ((eS >= eO)) | |
2178 | + | then eR | |
2179 | + | else hM(eR, eN[eS]) | |
2180 | + | ||
2181 | + | func hB (eR,eS) = if ((eS >= eO)) | |
2182 | + | then eR | |
2183 | + | else throw("List size exceeds 24") | |
2184 | + | ||
2185 | + | hB(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(eP, 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) | |
2186 | + | } | |
2187 | + | let kZ = (fraction(le._1, (2 * aR), o) * aU) | |
2188 | + | $Tuple3(kS, kV, kZ) | |
2189 | + | } | |
2190 | + | ||
2191 | + | ||
2192 | + | @Callable(gy) | |
2193 | + | func constructorV1 (lf) = if ((gy.caller != this)) | |
2024 | 2194 | then throw("Permission denied") | |
2025 | - | else [StringEntry( | |
2026 | - | ||
2027 | - | ||
2028 | - | ||
2029 | - | @Callable( | |
2030 | - | func saveInteger ( | |
2195 | + | else [StringEntry(F(), lf)] | |
2196 | + | ||
2197 | + | ||
2198 | + | ||
2199 | + | @Callable(gy) | |
2200 | + | func saveInteger (x,eC) = if ((gy.caller != this)) | |
2031 | 2201 | then throw("saveInteger is not public method") | |
2032 | - | else [IntegerEntry( | |
2033 | - | ||
2034 | - | ||
2035 | - | ||
2036 | - | @Callable( | |
2037 | - | func setBlocked ( | |
2202 | + | else [IntegerEntry(x, eC)] | |
2203 | + | ||
2204 | + | ||
2205 | + | ||
2206 | + | @Callable(gy) | |
2207 | + | func setBlocked (lg) = if ((gy.caller != this)) | |
2038 | 2208 | then throw("permission denied") | |
2039 | - | else [BooleanEntry( | |
2040 | - | ||
2041 | - | ||
2042 | - | ||
2043 | - | @Callable( | |
2209 | + | else [BooleanEntry(at(), lg)] | |
2210 | + | ||
2211 | + | ||
2212 | + | ||
2213 | + | @Callable(gy) | |
2044 | 2214 | func stakeLand () = { | |
2045 | - | let | |
2046 | - | if ((size( | |
2215 | + | let lh = kN(gy) | |
2216 | + | if ((size(gy.payments) != 1)) | |
2047 | 2217 | then throw("Exactly one payment required") | |
2048 | 2218 | else { | |
2049 | - | let | |
2050 | - | let | |
2051 | - | let | |
2052 | - | if (( | |
2053 | - | then throw((("NFT " + | |
2219 | + | let li = value(gy.payments[0]) | |
2220 | + | let bA = value(li.assetId) | |
2221 | + | let w = toString(gy.caller) | |
2222 | + | if ((li.amount != 1)) | |
2223 | + | then throw((("NFT " + aI) + " token should be attached as payment")) | |
2054 | 2224 | else { | |
2055 | - | let | |
2056 | - | if (( | |
2225 | + | let jm = value(assetInfo(bA)) | |
2226 | + | if ((jm.issuer != this)) | |
2057 | 2227 | then throw("Unknown issuer of token") | |
2058 | - | else if (!(contains( | |
2059 | - | then throw((("Only NFT " + | |
2228 | + | else if (!(contains(jm.name, aI))) | |
2229 | + | then throw((("Only NFT " + aI) + " tokens are accepted")) | |
2060 | 2230 | else { | |
2061 | - | let | |
2062 | - | let | |
2063 | - | then dropRight( | |
2064 | - | else if (contains( | |
2065 | - | then dropRight( | |
2066 | - | else dropRight( | |
2067 | - | if (!(isDefined(parseInt( | |
2068 | - | then throw(("Cannot parse land number from " + | |
2231 | + | let lj = drop(jm.name, 4) | |
2232 | + | let eh = if (contains(lj, "XXL")) | |
2233 | + | then dropRight(lj, 3) | |
2234 | + | else if (contains(lj, "XL")) | |
2235 | + | then dropRight(lj, 2) | |
2236 | + | else dropRight(lj, 1) | |
2237 | + | if (!(isDefined(parseInt(eh)))) | |
2238 | + | then throw(("Cannot parse land number from " + jm.name)) | |
2069 | 2239 | else { | |
2070 | - | let | |
2071 | - | let | |
2072 | - | if (isDefined(getInteger( | |
2073 | - | then throw((("NFT " + | |
2240 | + | let bI = toBase58String(bA) | |
2241 | + | let jn = bC(bI) | |
2242 | + | if (isDefined(getInteger(jn))) | |
2243 | + | then throw((("NFT " + jm.name) + " is already staked")) | |
2074 | 2244 | else { | |
2075 | - | let | |
2076 | - | let | |
2077 | - | let | |
2078 | - | let | |
2079 | - | let | |
2080 | - | let | |
2081 | - | let | |
2082 | - | let | |
2083 | - | let | |
2084 | - | let | |
2085 | - | let | |
2086 | - | then split_51C(value( | |
2245 | + | let jq = split(jm.description, "_") | |
2246 | + | let gu = gA(jq[U]) | |
2247 | + | let jc = aq(jq[T]) | |
2248 | + | let hS = (jc / p) | |
2249 | + | let eV = gz(gu, hS, 1) | |
2250 | + | let lk = ad(jq[V]) | |
2251 | + | let kD = split(valueOrElse(getString(lk), "0_0_0_0_0_0"), "_") | |
2252 | + | let ll = makeString(gs(kD, gu, hS, 1), "_") | |
2253 | + | let kz = af(w) | |
2254 | + | let kA = getString(kz) | |
2255 | + | let kw = if (isDefined(kA)) | |
2256 | + | then split_51C(value(kA), "_") | |
2087 | 2257 | else nil | |
2088 | - | if (containsElement( | |
2089 | - | then throw(("Your staked lands already contain " + | |
2090 | - | else if ((size( | |
2091 | - | then throw((("Your already staked max (" + toString( | |
2258 | + | if (containsElement(kw, bI)) | |
2259 | + | then throw(("Your staked lands already contain " + bI)) | |
2260 | + | else if ((size(kw) >= aN)) | |
2261 | + | then throw((("Your already staked max (" + toString(aN)) + ") lands")) | |
2092 | 2262 | else { | |
2093 | - | let | |
2094 | - | let | |
2095 | - | let | |
2096 | - | let | |
2097 | - | $Tuple2(([IntegerEntry( | |
2263 | + | let hT = valueOrElse(getInteger(bJ(bI)), 0) | |
2264 | + | let kG = ah(w) | |
2265 | + | let lm = valueOrElse(getInteger(kG), 0) | |
2266 | + | let ln = invoke(P, "onStakeUnstakeLand", [w], nil) | |
2267 | + | $Tuple2(([IntegerEntry(jn, lastBlock.timestamp), IntegerEntry(bF(aI, bI, w), lastBlock.timestamp), StringEntry(kz, makeString_11C((kw :+ bI), "_")), IntegerEntry(kG, (lm + jc)), StringEntry(bz(bI), w), StringEntry(ej(eh), w), IntegerEntry(ei(bI, w), hT), StringEntry(ac(), eV), StringEntry(lk, ll)] ++ lh), ln) | |
2098 | 2268 | } | |
2099 | 2269 | } | |
2100 | 2270 | } | |
2105 | 2275 | ||
2106 | 2276 | ||
2107 | 2277 | ||
2108 | - | @Callable( | |
2109 | - | func unstakeLand ( | |
2110 | - | let | |
2111 | - | if ((size( | |
2278 | + | @Callable(gy) | |
2279 | + | func unstakeLand (ji) = { | |
2280 | + | let lh = kN(gy) | |
2281 | + | if ((size(gy.payments) != 0)) | |
2112 | 2282 | then throw("No payments required") | |
2113 | 2283 | else { | |
2114 | - | let | |
2115 | - | let | |
2116 | - | let | |
2117 | - | let | |
2118 | - | let | |
2119 | - | let | |
2120 | - | let | |
2121 | - | let | |
2122 | - | let | |
2123 | - | let | |
2124 | - | let | |
2125 | - | let | |
2126 | - | let | |
2127 | - | let | |
2128 | - | let | |
2129 | - | if (!(isDefined( | |
2130 | - | then throw(("Your staked lands don't contain " + | |
2284 | + | let av = toString(gy.caller) | |
2285 | + | let fQ = jg(av, ep, ji) | |
2286 | + | let bI = fQ._2 | |
2287 | + | let jq = fQ._3 | |
2288 | + | let kz = af(av) | |
2289 | + | let gu = gA(jq[U]) | |
2290 | + | let jc = aq(jq[T]) | |
2291 | + | let hS = (jc / p) | |
2292 | + | let eV = gz(gu, hS, -1) | |
2293 | + | let lk = ad(jq[V]) | |
2294 | + | let kD = split(valueOrElse(getString(lk), "0_0_0_0_0_0"), "_") | |
2295 | + | let ll = makeString(gs(kD, gu, hS, -1), "_") | |
2296 | + | let jN = jD(av, bI, jc, ep) | |
2297 | + | let kw = split_51C(valueOrElse(getString(kz), ""), "_") | |
2298 | + | let K = indexOf(kw, bI) | |
2299 | + | if (!(isDefined(K))) | |
2300 | + | then throw(("Your staked lands don't contain " + bI)) | |
2131 | 2301 | else { | |
2132 | - | let | |
2133 | - | let | |
2134 | - | if (( | |
2135 | - | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString( | |
2302 | + | let cq = lastBlock.timestamp | |
2303 | + | let lo = valueOrElse(getInteger(O, bV(av)), 0) | |
2304 | + | if ((lo >= cq)) | |
2305 | + | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lo))) | |
2136 | 2306 | else { | |
2137 | - | let | |
2138 | - | if (( | |
2139 | - | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString( | |
2307 | + | let lp = (valueOrElse(getInteger(P, dK(av)), 0) + l) | |
2308 | + | if ((lp > cq)) | |
2309 | + | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lp))) | |
2140 | 2310 | else { | |
2141 | - | let | |
2142 | - | let | |
2143 | - | let | |
2311 | + | let kG = ah(av) | |
2312 | + | let kH = valueOrElse(getInteger(kG), 0) | |
2313 | + | let lq = if ((jc > kH)) | |
2144 | 2314 | then 0 | |
2145 | - | else ( | |
2146 | - | let | |
2147 | - | $Tuple2(([ScriptTransfer( | |
2148 | - | then StringEntry( | |
2149 | - | else DeleteEntry( | |
2315 | + | else (kH - jc) | |
2316 | + | let ln = invoke(P, "onStakeUnstakeLand", [av], nil) | |
2317 | + | $Tuple2(([ScriptTransfer(gy.caller, 1, fromBase58String(bI)), DeleteEntry(bC(bI)), DeleteEntry(bF(aI, bI, av)), StringEntry(ac(), eV), StringEntry(lk, ll), StringEntry(jN._2, makeString(jN._3, ":")), if ((size(kw) > 1)) | |
2318 | + | then StringEntry(kz, makeString_11C(removeByIndex(kw, value(K)), "_")) | |
2319 | + | else DeleteEntry(kz), IntegerEntry(kG, lq)] ++ lh), ln) | |
2150 | 2320 | } | |
2151 | 2321 | } | |
2152 | 2322 | } | |
2155 | 2325 | ||
2156 | 2326 | ||
2157 | 2327 | ||
2158 | - | @Callable(gv) | |
2328 | + | @Callable(gy) | |
2329 | + | func unstakeLandCallback (bI,av) = if ((toString(gy.caller) != j)) | |
2330 | + | then throw("Permission denied") | |
2331 | + | else { | |
2332 | + | let lr = kO(av, bI) | |
2333 | + | let ln = invoke(P, "onStakeUnstakeLand", [av], nil) | |
2334 | + | $Tuple2([ScriptTransfer(addressFromStringValue(av), 1, fromBase58String(bI)), DeleteEntry(bC(bI)), DeleteEntry(bF(aI, bI, av))], $Tuple5(lr._1, lr._2, lr._3, lr._4, ln)) | |
2335 | + | } | |
2336 | + | ||
2337 | + | ||
2338 | + | ||
2339 | + | @Callable(gy) | |
2340 | + | func unstakeLandREADONLY (bI,av) = { | |
2341 | + | let lr = kO(av, bI) | |
2342 | + | $Tuple2(nil, lr) | |
2343 | + | } | |
2344 | + | ||
2345 | + | ||
2346 | + | ||
2347 | + | @Callable(gy) | |
2348 | + | func unstakeLandsFinalizeCallback (av) = if ((toString(gy.caller) != j)) | |
2349 | + | then throw("Permission denied") | |
2350 | + | else $Tuple2([DeleteEntry(af(av)), DeleteEntry(ah(av))], 0) | |
2351 | + | ||
2352 | + | ||
2353 | + | ||
2354 | + | @Callable(gy) | |
2159 | 2355 | func stakeDuck () = { | |
2160 | - | let | |
2161 | - | if ((size( | |
2356 | + | let lh = kN(gy) | |
2357 | + | if ((size(gy.payments) != 1)) | |
2162 | 2358 | then throw("Exactly one payment required") | |
2163 | 2359 | else { | |
2164 | - | let | |
2165 | - | let | |
2166 | - | let | |
2167 | - | if (( | |
2168 | - | then throw((("NFT " + | |
2360 | + | let li = value(gy.payments[0]) | |
2361 | + | let bA = value(li.assetId) | |
2362 | + | let w = toString(gy.caller) | |
2363 | + | if ((li.amount != 1)) | |
2364 | + | then throw((("NFT " + aJ) + " token should be attached as payment")) | |
2169 | 2365 | else { | |
2170 | - | let | |
2171 | - | let | |
2172 | - | then ( | |
2366 | + | let jm = value(assetInfo(bA)) | |
2367 | + | let ls = if (if (c) | |
2368 | + | then (jm.issuer == this) | |
2173 | 2369 | else false) | |
2174 | - | then contains( | |
2370 | + | then contains(jm.name, aK) | |
2175 | 2371 | else false | |
2176 | - | if (if (if (( | |
2177 | - | then ( | |
2372 | + | if (if (if ((jm.issuer != dM)) | |
2373 | + | then (jm.issuer != dN) | |
2178 | 2374 | else false) | |
2179 | - | then !( | |
2375 | + | then !(ls) | |
2180 | 2376 | else false) | |
2181 | - | then throw((((("Unknown issuer of " + | |
2182 | - | else if (if (!(contains( | |
2183 | - | then !( | |
2377 | + | then throw((((("Unknown issuer of " + aJ) + " or ") + aK) + " token")) | |
2378 | + | else if (if (!(contains(jm.name, aJ))) | |
2379 | + | then !(ls) | |
2184 | 2380 | else false) | |
2185 | - | then throw((((("Only NFT " + | |
2381 | + | then throw((((("Only NFT " + aJ) + " or ") + aK) + " tokens are accepted")) | |
2186 | 2382 | else { | |
2187 | - | let | |
2188 | - | let | |
2189 | - | if (isDefined(getInteger( | |
2190 | - | then throw((("NFT " + | |
2191 | - | else if (isDefined(getString( | |
2192 | - | then throw(("You already staked one duck: " + | |
2383 | + | let lt = toBase58String(bA) | |
2384 | + | let jn = bC(lt) | |
2385 | + | if (isDefined(getInteger(jn))) | |
2386 | + | then throw((("NFT " + jm.name) + " is already staked")) | |
2387 | + | else if (isDefined(getString(bS(w)))) | |
2388 | + | then throw(("You already staked one duck: " + jm.name)) | |
2193 | 2389 | else { | |
2194 | - | let | |
2195 | - | let | |
2196 | - | let | |
2197 | - | let | |
2198 | - | let | |
2199 | - | let | |
2200 | - | let | |
2201 | - | ([IntegerEntry( | |
2390 | + | let lu = bU(lt) | |
2391 | + | let cn = getString(lu) | |
2392 | + | let hD = bT(lt) | |
2393 | + | let lv = getString(hD) | |
2394 | + | let iV = cP(lt) | |
2395 | + | let iW = dw(valueOrElse(getInteger(cS(lt)), 0)) | |
2396 | + | let lw = valueOrElse(getInteger(iV), iW) | |
2397 | + | ([IntegerEntry(jn, lastBlock.timestamp), IntegerEntry(bF(aJ, toBase58String(bA), w), lastBlock.timestamp), StringEntry(bR(lt), w), StringEntry(bS(w), lt)] ++ (if (isDefined(cn)) | |
2202 | 2398 | then nil | |
2203 | - | else ([StringEntry( | |
2399 | + | else ([StringEntry(lu, aQ)] ++ (if (isDefined(lv)) | |
2204 | 2400 | then nil | |
2205 | - | else (([StringEntry( | |
2401 | + | else (([StringEntry(hD, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iV, lw)) ++ lh))))) | |
2206 | 2402 | } | |
2207 | 2403 | } | |
2208 | 2404 | } | |
2211 | 2407 | ||
2212 | 2408 | ||
2213 | 2409 | ||
2214 | - | @Callable( | |
2215 | - | func unstakeDuck ( | |
2216 | - | let | |
2217 | - | if ((size( | |
2410 | + | @Callable(gy) | |
2411 | + | func unstakeDuck (lt) = { | |
2412 | + | let lh = kN(gy) | |
2413 | + | if ((size(gy.payments) != 0)) | |
2218 | 2414 | then throw("No payments required") | |
2219 | 2415 | else { | |
2220 | - | let | |
2221 | - | let | |
2222 | - | let | |
2223 | - | let | |
2224 | - | if (!(isDefined(getInteger( | |
2225 | - | then throw((("NFT " + | |
2226 | - | else if (!(isDefined(getString( | |
2227 | - | then throw((("The duck " + | |
2416 | + | let bA = fromBase58String(lt) | |
2417 | + | let w = toString(gy.caller) | |
2418 | + | let jm = value(assetInfo(bA)) | |
2419 | + | let jn = bC(lt) | |
2420 | + | if (!(isDefined(getInteger(jn)))) | |
2421 | + | then throw((("NFT " + jm.name) + " is not staked")) | |
2422 | + | else if (!(isDefined(getString(bS(w))))) | |
2423 | + | then throw((("The duck " + jm.name) + " is not staked")) | |
2228 | 2424 | else { | |
2229 | - | let | |
2230 | - | if (( | |
2425 | + | let jp = valueOrErrorMessage(getString(bR(lt)), (("NFT " + jm.name) + " is orphaned")) | |
2426 | + | if ((jp != w)) | |
2231 | 2427 | then throw("Staked NFT is not yours") | |
2232 | - | else if ( | |
2428 | + | else if (kk(lt)) | |
2233 | 2429 | then throw("unstakeDuck_checkTournament") | |
2234 | 2430 | else { | |
2235 | - | let | |
2236 | - | let | |
2237 | - | let | |
2238 | - | if (( | |
2239 | - | then throw((("Please heal your duck to " + toString( | |
2240 | - | else ([ScriptTransfer( | |
2431 | + | let iV = cP(lt) | |
2432 | + | let iW = dw(valueOrElse(getInteger(cS(lt)), 0)) | |
2433 | + | let dH = valueOrElse(getInteger(iV), iW) | |
2434 | + | if ((iW > dH)) | |
2435 | + | then throw((("Please heal your duck to " + toString(iW)) + "hp before unstaking")) | |
2436 | + | else ([ScriptTransfer(gy.caller, 1, bA), DeleteEntry(jn), DeleteEntry(iV), DeleteEntry(bU(lt)), DeleteEntry(bR(lt)), DeleteEntry(bF(aJ, lt, w)), DeleteEntry(bS(w))] ++ lh) | |
2241 | 2437 | } | |
2242 | 2438 | } | |
2243 | 2439 | } | |
2245 | 2441 | ||
2246 | 2442 | ||
2247 | 2443 | ||
2248 | - | @Callable(gv) | |
2249 | - | func claimRes (ez,kZ) = { | |
2250 | - | let kK = kH(gv) | |
2251 | - | if ((size(gv.payments) != 0)) | |
2444 | + | @Callable(gy) | |
2445 | + | func unstakeDuckCallback (bO,av) = if ((toString(gy.caller) != j)) | |
2446 | + | then throw("Permission denied") | |
2447 | + | else { | |
2448 | + | let lr = la(av, bO) | |
2449 | + | $Tuple2([ScriptTransfer(addressFromStringValue(av), 1, fromBase58String(bO)), DeleteEntry(bC(bO)), DeleteEntry(bR(bO)), DeleteEntry(bF(aJ, bO, av)), DeleteEntry(bS(av))], lr) | |
2450 | + | } | |
2451 | + | ||
2452 | + | ||
2453 | + | ||
2454 | + | @Callable(gy) | |
2455 | + | func unstakeDuckREADONLY (bO,av) = { | |
2456 | + | let lr = la(av, bO) | |
2457 | + | $Tuple2(nil, lr) | |
2458 | + | } | |
2459 | + | ||
2460 | + | ||
2461 | + | ||
2462 | + | @Callable(gy) | |
2463 | + | func claimRes (eC,lx) = { | |
2464 | + | let lh = kN(gy) | |
2465 | + | if ((size(gy.payments) != 0)) | |
2252 | 2466 | then throw("No payments required") | |
2253 | 2467 | else { | |
2254 | - | let | |
2255 | - | let | |
2256 | - | let | |
2257 | - | $Tuple2((((( | |
2258 | - | } | |
2259 | - | } | |
2260 | - | ||
2261 | - | ||
2262 | - | ||
2263 | - | @Callable( | |
2264 | - | func claimResToWH ( | |
2265 | - | let | |
2266 | - | if ((size( | |
2468 | + | let av = toString(gy.originCaller) | |
2469 | + | let fd = jr(av, eC, ep, lx) | |
2470 | + | let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked") | |
2471 | + | $Tuple2(((((fd._1 ++ jZ(bO, fraction(di, eC, o))._1) :+ StringEntry(fd._2, makeString(fd._3, ":"))) :+ StringEntry(fd._4, makeString(fd._5, ":"))) ++ lh), fd._3[bt]) | |
2472 | + | } | |
2473 | + | } | |
2474 | + | ||
2475 | + | ||
2476 | + | ||
2477 | + | @Callable(gy) | |
2478 | + | func claimResToWH (eC,lx) = { | |
2479 | + | let lh = kN(gy) | |
2480 | + | if ((size(gy.payments) != 0)) | |
2267 | 2481 | then throw("No payments required") | |
2268 | 2482 | else { | |
2269 | - | let | |
2270 | - | let | |
2271 | - | $Tuple2((((( | |
2272 | - | } | |
2273 | - | } | |
2274 | - | ||
2275 | - | ||
2276 | - | ||
2277 | - | @Callable( | |
2278 | - | func flight ( | |
2279 | - | let | |
2280 | - | if ((size( | |
2483 | + | let av = toString(gy.originCaller) | |
2484 | + | let fd = jr(av, eC, eo, lx) | |
2485 | + | $Tuple2(((((fd._1 ++ ka(av, fraction(di, eC, o))._1) :+ StringEntry(fd._2, makeString(fd._3, ":"))) :+ StringEntry(fd._4, makeString(fd._5, ":"))) ++ lh), fd._5[bk]) | |
2486 | + | } | |
2487 | + | } | |
2488 | + | ||
2489 | + | ||
2490 | + | ||
2491 | + | @Callable(gy) | |
2492 | + | func flight (iK,iL) = { | |
2493 | + | let lh = kN(gy) | |
2494 | + | if ((size(gy.payments) != 0)) | |
2281 | 2495 | then throw("No payments required") | |
2282 | 2496 | else { | |
2283 | - | let | |
2284 | - | let | |
2285 | - | let | |
2286 | - | let | |
2287 | - | let | |
2288 | - | let | |
2289 | - | let | |
2290 | - | if (( | |
2497 | + | let bW = toString(gy.caller) | |
2498 | + | let hg = iJ(bW, iK, iL) | |
2499 | + | let iP = hg._1 | |
2500 | + | let bO = hg._2 | |
2501 | + | let lu = bU(bO) | |
2502 | + | let jk = valueOrElse(getString(lu), aQ) | |
2503 | + | let iR = hg._4 | |
2504 | + | if ((iR == jk)) | |
2291 | 2505 | then throw("You can't fly to the same location") | |
2292 | 2506 | else { | |
2293 | - | let | |
2294 | - | let | |
2295 | - | let | |
2296 | - | let | |
2297 | - | let | |
2298 | - | let | |
2299 | - | let | |
2300 | - | let | |
2301 | - | let | |
2302 | - | let | |
2303 | - | then if ( | |
2304 | - | then | |
2305 | - | else if (!( | |
2306 | - | then if (( | |
2307 | - | then $Tuple2( | |
2308 | - | else $Tuple2( | |
2309 | - | else if (( | |
2507 | + | let cy = split(iR, "_") | |
2508 | + | let ly = (cy[bx] == "T") | |
2509 | + | let lz = (cy[bx] == "D") | |
2510 | + | let gk = cU(bO) | |
2511 | + | let lA = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2512 | + | let lB = fe(lA, hg._5) | |
2513 | + | let lC = lB._1 | |
2514 | + | let lD = lB._2 | |
2515 | + | let hv = lB._3 | |
2516 | + | let lE = if (!(cs(Q, jk))) | |
2517 | + | then if (ly) | |
2518 | + | then cw(jk, iR, 5) | |
2519 | + | else if (!(lz)) | |
2520 | + | then if ((iP > 0)) | |
2521 | + | then $Tuple2(iR, iP) | |
2522 | + | else $Tuple2(jk, 0) | |
2523 | + | else if ((iP > 0)) | |
2310 | 2524 | then { | |
2311 | - | let | |
2312 | - | if (( | |
2313 | - | then $Tuple2( | |
2525 | + | let ak = invoke(this, "processDelivery", [bO], nil) | |
2526 | + | if ((ak == ak)) | |
2527 | + | then $Tuple2(jk, iP) | |
2314 | 2528 | else throw("Strict value is not equal to itself.") | |
2315 | 2529 | } | |
2316 | - | else $Tuple2( | |
2317 | - | else if ( | |
2318 | - | then if (!( | |
2530 | + | else $Tuple2(jk, 0) | |
2531 | + | else if (cm(Q, jk)) | |
2532 | + | then if (!(cm(Q, iR))) | |
2319 | 2533 | then throw("Your duck is taking part in the tournament") | |
2320 | 2534 | else { | |
2321 | - | let | |
2322 | - | let | |
2323 | - | let | |
2324 | - | if (( | |
2325 | - | then | |
2326 | - | else if (( | |
2535 | + | let lF = parseIntValue(cy[by]) | |
2536 | + | let lG = split(jk, "_") | |
2537 | + | let co = valueOrElse(getInteger(Q, bZ), 0) | |
2538 | + | if ((lF != (parseIntValue(lG[by]) + 1))) | |
2539 | + | then cw(jk, iR, 7) | |
2540 | + | else if ((iP > 0)) | |
2327 | 2541 | then { | |
2328 | - | let | |
2329 | - | let | |
2330 | - | then invoke( | |
2542 | + | let lH = valueOrElse(getInteger(Q, cd(co, bO)), 0) | |
2543 | + | let lI = if ((lF > lH)) | |
2544 | + | then invoke(Q, "saveDuckResult", [bO, lF], nil) | |
2331 | 2545 | else unit | |
2332 | - | if (( | |
2333 | - | then $Tuple2( | |
2546 | + | if ((lI == lI)) | |
2547 | + | then $Tuple2(iR, iP) | |
2334 | 2548 | else throw("Strict value is not equal to itself.") | |
2335 | 2549 | } | |
2336 | - | else $Tuple2( | |
2550 | + | else $Tuple2(jk, 0) | |
2337 | 2551 | } | |
2338 | - | else throw(("Unknown curLocation:" + | |
2339 | - | let | |
2340 | - | let | |
2341 | - | $Tuple2(((([StringEntry( | |
2342 | - | then [StringEntry( | |
2343 | - | else nil)) ++ | |
2344 | - | then | |
2345 | - | else | |
2552 | + | else throw(("Unknown curLocation:" + jk)) | |
2553 | + | let lJ = lE._1 | |
2554 | + | let lK = lE._2 | |
2555 | + | $Tuple2(((([StringEntry(lu, lJ), StringEntry(gk, lC), IntegerEntry(cP(bO), lK)] ++ lh) ++ (if (lD) | |
2556 | + | then [StringEntry(da(bO), "0_0_0_0_0")] | |
2557 | + | else nil)) ++ jZ(bO, if ((iP > 0)) | |
2558 | + | then dj | |
2559 | + | else dk)._1), hg._3) | |
2346 | 2560 | } | |
2347 | 2561 | } | |
2348 | 2562 | } | |
2349 | 2563 | ||
2350 | 2564 | ||
2351 | 2565 | ||
2352 | - | @Callable( | |
2353 | - | func heal ( | |
2354 | - | let | |
2355 | - | if (if (if ((0 > | |
2566 | + | @Callable(gy) | |
2567 | + | func heal (lL,lM,lN) = { | |
2568 | + | let lh = kN(gy) | |
2569 | + | if (if (if ((0 > lL)) | |
2356 | 2570 | then true | |
2357 | - | else (0 > | |
2571 | + | else (0 > lM)) | |
2358 | 2572 | then true | |
2359 | - | else (0 > | |
2573 | + | else (0 > lN)) | |
2360 | 2574 | then throw("Quantity cannot be negative") | |
2361 | 2575 | else { | |
2362 | - | let | |
2363 | - | if ( | |
2576 | + | let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked") | |
2577 | + | if (kk(bO)) | |
2364 | 2578 | then throw("heal_checkTournament") | |
2365 | 2579 | else { | |
2366 | - | let | |
2367 | - | let | |
2368 | - | let | |
2369 | - | let | |
2370 | - | if (( | |
2371 | - | then throw((("HP should be < " + toString( | |
2580 | + | let lO = [lL, lM, lN] | |
2581 | + | let iV = cP(bO) | |
2582 | + | let iW = dw(valueOrElse(getInteger(cS(bO)), 0)) | |
2583 | + | let lP = valueOrElse(getInteger(iV), iW) | |
2584 | + | if ((lP >= iW)) | |
2585 | + | then throw((("HP should be < " + toString(iW)) + " to heal")) | |
2372 | 2586 | else { | |
2373 | - | let | |
2374 | - | let | |
2375 | - | let | |
2587 | + | let hD = bT(bO) | |
2588 | + | let ih = hC(hD) | |
2589 | + | let lQ = if ((ih[bv] == "")) | |
2376 | 2590 | then nil | |
2377 | - | else split_4C( | |
2378 | - | func | |
2379 | - | let | |
2380 | - | let | |
2381 | - | then parseIntValue( | |
2591 | + | else split_4C(ih[bv], "_") | |
2592 | + | func lR (eL,cv) = { | |
2593 | + | let am = eL._2 | |
2594 | + | let gX = if ((size(lQ) > am)) | |
2595 | + | then parseIntValue(lQ[am]) | |
2382 | 2596 | else 0 | |
2383 | - | if ((3 > | |
2597 | + | if ((3 > am)) | |
2384 | 2598 | then { | |
2385 | - | let | |
2386 | - | if (( | |
2387 | - | then throw(((("You have only " + toString( | |
2388 | - | else $Tuple3(( | |
2599 | + | let lS = lO[am] | |
2600 | + | if ((lS > gX)) | |
2601 | + | then throw(((("You have only " + toString(gX)) + " of ") + ba[am])) | |
2602 | + | else $Tuple3((eL._1 :+ toString((gX - lS))), (am + 1), (eL._3 + (parseIntValue(split(cv, "_")[bf]) * lS))) | |
2389 | 2603 | } | |
2390 | - | else $Tuple3(( | |
2604 | + | else $Tuple3((eL._1 :+ toString(gX)), (am + 1), eL._3) | |
2391 | 2605 | } | |
2392 | 2606 | ||
2393 | - | let | |
2394 | - | let | |
2395 | - | let | |
2396 | - | let | |
2397 | - | func | |
2398 | - | then | |
2399 | - | else | |
2400 | - | ||
2401 | - | func | |
2402 | - | then | |
2607 | + | let fd = { | |
2608 | + | let eN = bd | |
2609 | + | let eO = size(eN) | |
2610 | + | let eP = $Tuple3(nil, 0, 0) | |
2611 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
2612 | + | then eR | |
2613 | + | else lR(eR, eN[eS]) | |
2614 | + | ||
2615 | + | func eT (eR,eS) = if ((eS >= eO)) | |
2616 | + | then eR | |
2403 | 2617 | else throw("List size exceeds 50") | |
2404 | 2618 | ||
2405 | - | eQ( | |
2619 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 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) | |
2406 | 2620 | } | |
2407 | - | let | |
2408 | - | $Tuple2((([IntegerEntry( | |
2621 | + | let lT = min([iW, (lP + fd._3)]) | |
2622 | + | $Tuple2((([IntegerEntry(iV, lT), StringEntry(hD, makeString_2C([ih[bs], ih[bt], ih[bu], makeString(fd._1, "_")], ":"))] ++ lh) ++ jZ(bO, (dt * ((lL + lM) + lN)))._1), lT) | |
2409 | 2623 | } | |
2410 | 2624 | } | |
2411 | 2625 | } | |
2413 | 2627 | ||
2414 | 2628 | ||
2415 | 2629 | ||
2416 | - | @Callable( | |
2630 | + | @Callable(gy) | |
2417 | 2631 | func healES () = { | |
2418 | - | let | |
2419 | - | if ((size( | |
2632 | + | let lh = kN(gy) | |
2633 | + | if ((size(gy.payments) != 1)) | |
2420 | 2634 | then throw("Exactly one payment required") | |
2421 | 2635 | else { | |
2422 | - | let | |
2423 | - | if (( | |
2636 | + | let li = value(gy.payments[0]) | |
2637 | + | if ((li.assetId != h)) | |
2424 | 2638 | then throw("Allowed USDT payment only!") | |
2425 | 2639 | else { | |
2426 | - | let | |
2427 | - | if ( | |
2640 | + | let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked") | |
2641 | + | if (kk(bO)) | |
2428 | 2642 | then throw("healES_checkTournament") | |
2429 | 2643 | else { | |
2430 | - | let | |
2431 | - | let | |
2432 | - | let | |
2433 | - | if (( | |
2644 | + | let iV = cP(bO) | |
2645 | + | let iW = dw(valueOrElse(getInteger(cS(bO)), 0)) | |
2646 | + | let lP = valueOrElse(getInteger(iV), iW) | |
2647 | + | if ((lP > 0)) | |
2434 | 2648 | then throw("HP should be 0 to call Emergency Service") | |
2435 | 2649 | else { | |
2436 | - | let | |
2437 | - | let | |
2438 | - | let | |
2650 | + | let hD = bT(bO) | |
2651 | + | let ih = hC(hD) | |
2652 | + | let lQ = if ((ih[bv] == "")) | |
2439 | 2653 | then nil | |
2440 | - | else split_4C( | |
2441 | - | let | |
2442 | - | then parseIntValue( | |
2654 | + | else split_4C(ih[bv], "_") | |
2655 | + | let lU = if ((size(lQ) > 0)) | |
2656 | + | then parseIntValue(lQ[0]) | |
2443 | 2657 | else 0 | |
2444 | - | let | |
2445 | - | then parseIntValue( | |
2658 | + | let lV = if ((size(lQ) > 1)) | |
2659 | + | then parseIntValue(lQ[1]) | |
2446 | 2660 | else 0 | |
2447 | - | let | |
2448 | - | then parseIntValue( | |
2661 | + | let lW = if ((size(lQ) > 2)) | |
2662 | + | then parseIntValue(lQ[2]) | |
2449 | 2663 | else 0 | |
2450 | - | if (if (if (( | |
2664 | + | if (if (if ((lU > 0)) | |
2451 | 2665 | then true | |
2452 | - | else ( | |
2666 | + | else (lV > 0)) | |
2453 | 2667 | then true | |
2454 | - | else ( | |
2668 | + | else (lW > 0)) | |
2455 | 2669 | then throw("You have to use own Medical Kit") | |
2456 | 2670 | else { | |
2457 | - | let | |
2458 | - | let | |
2459 | - | then split_4C(value( | |
2671 | + | let lX = getString(N, bX()) | |
2672 | + | let lY = if (isDefined(lX)) | |
2673 | + | then split_4C(value(lX), "_") | |
2460 | 2674 | else nil | |
2461 | - | let | |
2462 | - | then parseIntValue( | |
2675 | + | let lZ = if ((size(lY) > 0)) | |
2676 | + | then parseIntValue(lY[0]) | |
2463 | 2677 | else 0 | |
2464 | - | if ((0 >= | |
2678 | + | if ((0 >= lZ)) | |
2465 | 2679 | then throw("There are no Medical Kits L1 at Emergency Service storage") | |
2466 | 2680 | else { | |
2467 | - | let | |
2468 | - | let | |
2469 | - | let | |
2470 | - | let | |
2471 | - | let | |
2472 | - | if (( | |
2473 | - | then throw(("Payment attached should be " + toString( | |
2681 | + | let lT = (lP + parseIntValue(split(bd[0], "_")[bf])) | |
2682 | + | let ma = makeString([toString((lZ - 1)), removeByIndex(lY, 0)], "_") | |
2683 | + | let cv = split(bd[0], "_") | |
2684 | + | let mb = cu(cv) | |
2685 | + | let mc = fraction((mb * aS), aR, (o * bi)) | |
2686 | + | if ((li.amount != mc)) | |
2687 | + | then throw(("Payment attached should be " + toString(mc))) | |
2474 | 2688 | else { | |
2475 | - | let | |
2476 | - | $Tuple2((( | |
2689 | + | let fd = ai(invoke(N, "updateEsStorage", [ma], [AttachedPayment(h, mc)])) | |
2690 | + | $Tuple2(((lh :+ IntegerEntry(iV, lT)) ++ jZ(bO, dn)._1), fd) | |
2477 | 2691 | } | |
2478 | 2692 | } | |
2479 | 2693 | } | |
2485 | 2699 | ||
2486 | 2700 | ||
2487 | 2701 | ||
2488 | - | @Callable( | |
2489 | - | func updateBackpack ( | |
2702 | + | @Callable(gy) | |
2703 | + | func updateBackpack (bO,md) = if ((gy.caller != N)) | |
2490 | 2704 | then throw("permission denied") | |
2491 | - | else $Tuple2([StringEntry( | |
2492 | - | ||
2493 | - | ||
2494 | - | ||
2495 | - | @Callable( | |
2705 | + | else $Tuple2([StringEntry(bT(bO), md)], md) | |
2706 | + | ||
2707 | + | ||
2708 | + | ||
2709 | + | @Callable(gy) | |
2496 | 2710 | func commitForRandom () = { | |
2497 | - | let | |
2498 | - | let | |
2499 | - | let | |
2500 | - | $Tuple2(([IntegerEntry( | |
2501 | - | } | |
2502 | - | ||
2503 | - | ||
2504 | - | ||
2505 | - | @Callable( | |
2506 | - | func revealRandom ( | |
2507 | - | let | |
2508 | - | let | |
2509 | - | let | |
2510 | - | let | |
2511 | - | if (( | |
2512 | - | then throw(("Random number is not ready yet, wait until height = " + toString( | |
2711 | + | let lh = kN(gy) | |
2712 | + | let me = (height + aa) | |
2713 | + | let av = toString(gy.caller) | |
2714 | + | $Tuple2(([IntegerEntry(ab(av), me)] ++ lh), me) | |
2715 | + | } | |
2716 | + | ||
2717 | + | ||
2718 | + | ||
2719 | + | @Callable(gy) | |
2720 | + | func revealRandom (aD) = { | |
2721 | + | let lh = kN(gy) | |
2722 | + | let av = toString(gy.caller) | |
2723 | + | let mf = ab(av) | |
2724 | + | let me = valueOrErrorMessage(getInteger(mf), "You have to commitForRandom() first!") | |
2725 | + | if ((me > height)) | |
2726 | + | then throw(("Random number is not ready yet, wait until height = " + toString(me))) | |
2513 | 2727 | else { | |
2514 | - | let | |
2515 | - | let | |
2516 | - | let | |
2517 | - | $Tuple2(([DeleteEntry( | |
2518 | - | } | |
2519 | - | } | |
2520 | - | ||
2521 | - | ||
2522 | - | ||
2523 | - | @Callable( | |
2728 | + | let aF = value(value(blockInfoByHeight(me)).vrf) | |
2729 | + | let aE = toBytes(valueOrElse(getString(au(av)), "")) | |
2730 | + | let mg = aC(aD, aE, aF) | |
2731 | + | $Tuple2(([DeleteEntry(mf)] ++ lh), mg) | |
2732 | + | } | |
2733 | + | } | |
2734 | + | ||
2735 | + | ||
2736 | + | ||
2737 | + | @Callable(gy) | |
2524 | 2738 | func buySLand () = { | |
2525 | - | let | |
2526 | - | if ((size( | |
2739 | + | let lh = kN(gy) | |
2740 | + | if ((size(gy.payments) != 1)) | |
2527 | 2741 | then throw("Exactly one payment required") | |
2528 | 2742 | else { | |
2529 | - | let | |
2530 | - | if (( | |
2743 | + | let li = value(gy.payments[0]) | |
2744 | + | if ((li.assetId != h)) | |
2531 | 2745 | then throw("Allowed USDT payment only!") | |
2532 | - | else if (( | |
2533 | - | then throw(("Payment attached should be " + toString( | |
2746 | + | else if ((li.amount != dT)) | |
2747 | + | then throw(("Payment attached should be " + toString(dT))) | |
2534 | 2748 | else { | |
2535 | - | let | |
2536 | - | let | |
2537 | - | $Tuple2(((( | |
2749 | + | let fd = iC(gy.caller, gy.transactionId) | |
2750 | + | let mh = al(invoke(R, "burnAcres", [dV], nil)) | |
2751 | + | $Tuple2((((fd._1 :+ ScriptTransfer(N, li.amount, h)) ++ ka(toString(gy.caller), dp)._1) ++ lh), $Tuple2(fd._2._1, mh)) | |
2538 | 2752 | } | |
2539 | 2753 | } | |
2540 | 2754 | } | |
2541 | 2755 | ||
2542 | 2756 | ||
2543 | 2757 | ||
2544 | - | @Callable( | |
2545 | - | func expedition ( | |
2546 | - | let | |
2547 | - | if ((size( | |
2758 | + | @Callable(gy) | |
2759 | + | func expedition (iK,iL) = { | |
2760 | + | let lh = kN(gy) | |
2761 | + | if ((size(gy.payments) != 0)) | |
2548 | 2762 | then throw("No payments required") | |
2549 | 2763 | else { | |
2550 | - | let | |
2551 | - | let | |
2552 | - | let | |
2553 | - | let | |
2554 | - | let | |
2555 | - | let | |
2556 | - | let | |
2557 | - | let | |
2558 | - | let | |
2559 | - | let | |
2560 | - | let | |
2561 | - | let | |
2562 | - | let | |
2563 | - | let | |
2564 | - | let | |
2565 | - | let | |
2566 | - | let | |
2567 | - | then $Tuple3([IntegerEntry( | |
2568 | - | else $Tuple3(( | |
2569 | - | then [StringEntry( | |
2570 | - | else ((((nil :+ StringEntry( | |
2571 | - | if ( | |
2764 | + | let bW = toString(gy.caller) | |
2765 | + | let hg = iJ(bW, iK, iL) | |
2766 | + | let bO = hg._2 | |
2767 | + | let iV = cP(bO) | |
2768 | + | let hD = bT(bO) | |
2769 | + | let ih = hC(hD) | |
2770 | + | let jK = split(ih[bu], "_") | |
2771 | + | let jM = makeString(eX(true, jK, dS), "_") | |
2772 | + | let gk = cU(bO) | |
2773 | + | let lA = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2774 | + | let mi = fe(lA, hg._5) | |
2775 | + | let lC = mi._1 | |
2776 | + | let lD = mi._2 | |
2777 | + | let hv = mi._3 | |
2778 | + | let mj = iC(gy.caller, gy.transactionId) | |
2779 | + | let iI = mj._2._1 | |
2780 | + | let fd = if ((0 >= hg._1)) | |
2781 | + | then $Tuple3([IntegerEntry(iV, 0), StringEntry(gk, lC)], "", 0) | |
2782 | + | else $Tuple3((mj._1 ++ (if (lD) | |
2783 | + | then [StringEntry(da(bO), "0_0_0_0_0")] | |
2784 | + | else ((((nil :+ StringEntry(bU(bO), makeString([mj._2._2, "L", iI], "_"))) :+ IntegerEntry(iV, hg._1)) :+ StringEntry(gk, lC)) :+ StringEntry(hD, makeString([ih[bs], ih[bt], jM, ih[bv]], ":"))))), iI, hg._3) | |
2785 | + | if (kk(bO)) | |
2572 | 2786 | then throw("expedition_checkTournament") | |
2573 | 2787 | else { | |
2574 | - | let | |
2575 | - | $Tuple2((( | |
2788 | + | let mh = al(invoke(R, "burnAcres", [dV], nil)) | |
2789 | + | $Tuple2(((fd._1 ++ jZ(bO, dp)._1) ++ lh), $Tuple3(fd._2, fd._3, mh)) | |
2576 | 2790 | } | |
2577 | 2791 | } | |
2578 | 2792 | } | |
2579 | 2793 | ||
2580 | 2794 | ||
2581 | 2795 | ||
2582 | - | @Callable( | |
2796 | + | @Callable(gy) | |
2583 | 2797 | func buySLandForAcres () = { | |
2584 | - | let | |
2585 | - | if ((size( | |
2798 | + | let lh = kN(gy) | |
2799 | + | if ((size(gy.payments) != 1)) | |
2586 | 2800 | then throw("exactly 1 payment must be attached") | |
2587 | 2801 | else { | |
2588 | - | let | |
2589 | - | let | |
2590 | - | if (if (!(isDefined( | |
2802 | + | let li = gy.payments[0] | |
2803 | + | let fk = li.amount | |
2804 | + | if (if (!(isDefined(li.assetId))) | |
2591 | 2805 | then true | |
2592 | - | else (value( | |
2806 | + | else (value(li.assetId) != Z)) | |
2593 | 2807 | then throw("ACRES payments only!") | |
2594 | - | else if (( | |
2595 | - | then throw(("Payment attached should be " + toString( | |
2808 | + | else if ((fk != dV)) | |
2809 | + | then throw(("Payment attached should be " + toString(dV))) | |
2596 | 2810 | else { | |
2597 | - | let | |
2598 | - | let | |
2599 | - | $Tuple2((( | |
2811 | + | let fd = iC(gy.caller, gy.transactionId) | |
2812 | + | let mh = al(invoke(R, "burnAcres", [dV], [AttachedPayment(Z, fk)])) | |
2813 | + | $Tuple2(((fd._1 ++ ka(toString(gy.caller), dp)._1) ++ lh), $Tuple2(fd._2._1, mh)) | |
2600 | 2814 | } | |
2601 | 2815 | } | |
2602 | 2816 | } | |
2603 | 2817 | ||
2604 | 2818 | ||
2605 | 2819 | ||
2606 | - | @Callable( | |
2607 | - | func upgradeInfra ( | |
2608 | - | let | |
2609 | - | if ((size( | |
2820 | + | @Callable(gy) | |
2821 | + | func upgradeInfra (bI) = { | |
2822 | + | let lh = kN(gy) | |
2823 | + | if ((size(gy.payments) != 0)) | |
2610 | 2824 | then throw("No payments required") | |
2611 | 2825 | else { | |
2612 | - | let | |
2613 | - | let | |
2614 | - | $Tuple2((( | |
2615 | - | } | |
2616 | - | } | |
2617 | - | ||
2618 | - | ||
2619 | - | ||
2620 | - | @Callable( | |
2621 | - | func activateArtifact ( | |
2622 | - | let | |
2623 | - | if ((size( | |
2826 | + | let fd = jE(true, gy.caller, 0, bI) | |
2827 | + | let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked") | |
2828 | + | $Tuple2(((fd._1 ++ lh) ++ jZ(bO, fraction(dq, fd._3, o))._1), fd._2) | |
2829 | + | } | |
2830 | + | } | |
2831 | + | ||
2832 | + | ||
2833 | + | ||
2834 | + | @Callable(gy) | |
2835 | + | func activateArtifact (mk,ml) = { | |
2836 | + | let lh = kN(gy) | |
2837 | + | if ((size(gy.payments) != 0)) | |
2624 | 2838 | then throw("No payments required") | |
2625 | 2839 | else { | |
2626 | - | let | |
2627 | - | let | |
2628 | - | let | |
2629 | - | if (("PRESALE" == | |
2630 | - | then | |
2631 | - | else if (("ONBOARD" == | |
2632 | - | then | |
2840 | + | let av = toString(gy.caller) | |
2841 | + | let fd = { | |
2842 | + | let g = mk | |
2843 | + | if (("PRESALE" == g)) | |
2844 | + | then ki(av, ml) | |
2845 | + | else if (("ONBOARD" == g)) | |
2846 | + | then kb(av) | |
2633 | 2847 | else throw("Unknown artifact") | |
2634 | 2848 | } | |
2635 | - | ( | |
2636 | - | } | |
2637 | - | } | |
2638 | - | ||
2639 | - | ||
2640 | - | ||
2641 | - | @Callable( | |
2642 | - | func mergeLands ( | |
2643 | - | let | |
2644 | - | if ((size( | |
2849 | + | (fd ++ lh) | |
2850 | + | } | |
2851 | + | } | |
2852 | + | ||
2853 | + | ||
2854 | + | ||
2855 | + | @Callable(gy) | |
2856 | + | func mergeLands (ko) = { | |
2857 | + | let lh = kN(gy) | |
2858 | + | if ((size(gy.payments) != 0)) | |
2645 | 2859 | then throw("No payments required") | |
2646 | 2860 | else { | |
2647 | - | let | |
2648 | - | $Tuple2((( | |
2649 | - | } | |
2650 | - | } | |
2651 | - | ||
2652 | - | ||
2653 | - | ||
2654 | - | @Callable( | |
2655 | - | func cargoExchange ( | |
2656 | - | let | |
2657 | - | if ((size( | |
2861 | + | let fd = kM(toString(gy.caller), ko) | |
2862 | + | $Tuple2(((fd._1 ++ lh) ++ ka(toString(gy.caller), dr)._1), fd._2) | |
2863 | + | } | |
2864 | + | } | |
2865 | + | ||
2866 | + | ||
2867 | + | ||
2868 | + | @Callable(gy) | |
2869 | + | func cargoExchange (mm,bI) = { | |
2870 | + | let lh = kN(gy) | |
2871 | + | if ((size(gy.payments) != 0)) | |
2658 | 2872 | then throw("No payments required") | |
2659 | 2873 | else { | |
2660 | - | let | |
2661 | - | let | |
2662 | - | let | |
2663 | - | let | |
2664 | - | if (!(isDefined(getInteger( | |
2665 | - | then throw(( | |
2874 | + | let ig = split_4C(mm, ":") | |
2875 | + | let av = toString(gy.originCaller) | |
2876 | + | let jm = value(assetInfo(fromBase58String(bI))) | |
2877 | + | let jn = bC(bI) | |
2878 | + | if (!(isDefined(getInteger(jn)))) | |
2879 | + | then throw((jm.name + " is not staked")) | |
2666 | 2880 | else { | |
2667 | - | let | |
2668 | - | if (( | |
2669 | - | then throw(( | |
2881 | + | let jp = valueOrErrorMessage(getString(bz(bI)), (("NFT " + jm.name) + " is orphaned")) | |
2882 | + | if ((jp != av)) | |
2883 | + | then throw((aI + " is not yours")) | |
2670 | 2884 | else { | |
2671 | - | let | |
2672 | - | let | |
2673 | - | let | |
2674 | - | let | |
2675 | - | let | |
2676 | - | if (( | |
2677 | - | then throw((("Duck location type is " + | |
2678 | - | else if (( | |
2679 | - | then throw(("Duck should be on the land " + | |
2885 | + | let hS = (aq(split(jm.description, "_")[T]) / p) | |
2886 | + | let hT = valueOrElse(getInteger(bJ(bI)), 0) | |
2887 | + | let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked") | |
2888 | + | let jk = valueOrElse(getString(bU(bO)), aQ) | |
2889 | + | let cp = split(value(jk), "_") | |
2890 | + | if ((cp[bx] != "L")) | |
2891 | + | then throw((("Duck location type is " + cp[bx]) + ", but should be L")) | |
2892 | + | else if ((cp[by] != bI)) | |
2893 | + | then throw(("Duck should be on the land " + bI)) | |
2680 | 2894 | else { | |
2681 | - | let | |
2682 | - | let | |
2683 | - | let | |
2684 | - | let | |
2685 | - | let | |
2686 | - | let | |
2687 | - | let | |
2688 | - | let | |
2689 | - | ([StringEntry( | |
2895 | + | let hR = bH(bI) | |
2896 | + | let hI = hQ(hR, hS, hT) | |
2897 | + | let hD = bT(bO) | |
2898 | + | let ih = hC(hD) | |
2899 | + | let fd = if(ig, hI, ih) | |
2900 | + | let hZ = split(hI[bn], "_") | |
2901 | + | let jB = (parseIntValue(hZ[bp]) + fd._7) | |
2902 | + | let jC = (parseIntValue(hZ[bq]) - fd._7) | |
2903 | + | ([StringEntry(hD, makeString_2C([ih[bs], fd._4, fd._5, fd._6], ":")), StringEntry(hR, makeString_2C([hI[bj], fd._1, fd._2, fd._3, makeString([hZ[bo], toString(jB), toString(jC), hZ[br]], "_")], ":"))] ++ lh) | |
2690 | 2904 | } | |
2691 | 2905 | } | |
2692 | 2906 | } | |
2695 | 2909 | ||
2696 | 2910 | ||
2697 | 2911 | ||
2698 | - | @Callable( | |
2699 | - | func saveWarehouse ( | |
2912 | + | @Callable(gy) | |
2913 | + | func saveWarehouse (hV,bI) = if ((gy.caller != N)) | |
2700 | 2914 | then throw("Access denied") | |
2701 | 2915 | else { | |
2702 | - | let | |
2703 | - | let | |
2704 | - | if ((size( | |
2916 | + | let hR = bH(bI) | |
2917 | + | let hW = split_4C(hV, ":") | |
2918 | + | if ((size(hW) != 5)) | |
2705 | 2919 | then throw("warehouse string should contain 4 ':' separators") | |
2706 | 2920 | else { | |
2707 | - | let | |
2708 | - | let | |
2709 | - | let | |
2710 | - | let | |
2711 | - | if ((0 > | |
2921 | + | let mn = split(hW[bn], "_")[bo] | |
2922 | + | let jB = hH(hW) | |
2923 | + | let mo = hF(hW[bj]) | |
2924 | + | let jC = ((mo - parseIntValue(mn)) - jB) | |
2925 | + | if ((0 > jC)) | |
2712 | 2926 | then throw("Operation leads to negative free warehouse space") | |
2713 | 2927 | else { | |
2714 | - | let | |
2715 | - | $Tuple2([StringEntry( | |
2928 | + | let mp = makeString_2C([hW[bj], hW[bk], hW[bl], hW[bm], makeString([mn, toString(jB), toString(jC), toString(mo)], "_")], ":") | |
2929 | + | $Tuple2([StringEntry(hR, mp)], mp) | |
2716 | 2930 | } | |
2717 | 2931 | } | |
2718 | 2932 | } | |
2719 | 2933 | ||
2720 | 2934 | ||
2721 | 2935 | ||
2722 | - | @Callable( | |
2723 | - | func setCustomName ( | |
2724 | - | let | |
2725 | - | if ((size( | |
2936 | + | @Callable(gy) | |
2937 | + | func setCustomName (bA,ky,bE) = { | |
2938 | + | let lh = kN(gy) | |
2939 | + | if ((size(gy.payments) != 1)) | |
2726 | 2940 | then throw("Exactly one payment required") | |
2727 | 2941 | else { | |
2728 | - | let | |
2729 | - | if (( | |
2942 | + | let li = value(gy.payments[0]) | |
2943 | + | if ((li.assetId != h)) | |
2730 | 2944 | then throw("Allowed USDT payment only!") | |
2731 | - | else if (( | |
2732 | - | then throw(("Payment should be " + toString( | |
2733 | - | else if (contains( | |
2734 | - | then throw(("Name should not contain '__': " + | |
2735 | - | else if ((size( | |
2736 | - | then throw(("Name too long, maxLength=" + toString( | |
2945 | + | else if ((li.amount != dP)) | |
2946 | + | then throw(("Payment should be " + toString(dP))) | |
2947 | + | else if (contains(ky, "__")) | |
2948 | + | then throw(("Name should not contain '__': " + ky)) | |
2949 | + | else if ((size(ky) > dQ)) | |
2950 | + | then throw(("Name too long, maxLength=" + toString(dQ))) | |
2737 | 2951 | else { | |
2738 | - | let | |
2739 | - | let | |
2740 | - | let | |
2741 | - | if (("ACCOUNT" == | |
2952 | + | let av = toString(gy.originCaller) | |
2953 | + | let mq = { | |
2954 | + | let g = bE | |
2955 | + | if (("ACCOUNT" == g)) | |
2742 | 2956 | then { | |
2743 | - | let | |
2744 | - | let | |
2745 | - | if (isDefined( | |
2746 | - | then throw(("Name already registered: " + | |
2957 | + | let mr = el(ky) | |
2958 | + | let ms = getString(mr) | |
2959 | + | if (isDefined(ms)) | |
2960 | + | then throw(("Name already registered: " + ky)) | |
2747 | 2961 | else { | |
2748 | - | let | |
2749 | - | let | |
2750 | - | let | |
2751 | - | then [DeleteEntry( | |
2962 | + | let mt = bL(av) | |
2963 | + | let mu = getString(mt) | |
2964 | + | let mv = if (isDefined(mu)) | |
2965 | + | then [DeleteEntry(el(value(mu)))] | |
2752 | 2966 | else nil | |
2753 | - | ((( | |
2967 | + | (((mv :+ StringEntry(mt, ky)) :+ StringEntry(mr, av)) ++ ka(av, do)._1) | |
2754 | 2968 | } | |
2755 | 2969 | } | |
2756 | - | else if (("LAND" == | |
2970 | + | else if (("LAND" == g)) | |
2757 | 2971 | then { | |
2758 | - | let | |
2759 | - | let | |
2760 | - | if (!(isDefined(getInteger( | |
2761 | - | then throw(( | |
2972 | + | let jm = value(assetInfo(fromBase58String(bA))) | |
2973 | + | let jn = bC(bA) | |
2974 | + | if (!(isDefined(getInteger(jn)))) | |
2975 | + | then throw((jm.name + " is not staked")) | |
2762 | 2976 | else { | |
2763 | - | let | |
2764 | - | if (( | |
2765 | - | then throw(( | |
2977 | + | let jp = valueOrErrorMessage(getString(bz(bA)), (("NFT " + jm.name) + " is orphaned")) | |
2978 | + | if ((jp != av)) | |
2979 | + | then throw((aI + " is not yours")) | |
2766 | 2980 | else { | |
2767 | - | let | |
2768 | - | let | |
2769 | - | if (isDefined( | |
2770 | - | then throw(("Name already registered: " + | |
2981 | + | let mr = ee(ky) | |
2982 | + | let ms = getString(mr) | |
2983 | + | if (isDefined(ms)) | |
2984 | + | then throw(("Name already registered: " + ky)) | |
2771 | 2985 | else { | |
2772 | - | let | |
2773 | - | let | |
2774 | - | let | |
2775 | - | then [DeleteEntry( | |
2986 | + | let mw = bB(bA) | |
2987 | + | let mu = getString(mw) | |
2988 | + | let mv = if (isDefined(mu)) | |
2989 | + | then [DeleteEntry(ee(value(mu)))] | |
2776 | 2990 | else nil | |
2777 | - | ((( | |
2991 | + | (((mv :+ StringEntry(mw, ky)) :+ StringEntry(mr, bA)) ++ ka(av, do)._1) | |
2778 | 2992 | } | |
2779 | 2993 | } | |
2780 | 2994 | } | |
2781 | 2995 | } | |
2782 | - | else if (("DUCK" == | |
2996 | + | else if (("DUCK" == g)) | |
2783 | 2997 | then { | |
2784 | - | let | |
2785 | - | let | |
2786 | - | if (if (!(isDefined(getInteger( | |
2998 | + | let jm = value(assetInfo(fromBase58String(bA))) | |
2999 | + | let jn = bC(bA) | |
3000 | + | if (if (!(isDefined(getInteger(jn)))) | |
2787 | 3001 | then true | |
2788 | - | else !(isDefined(getString( | |
2789 | - | then throw(( | |
3002 | + | else !(isDefined(getString(bS(av))))) | |
3003 | + | then throw((jm.name + " is not staked")) | |
2790 | 3004 | else { | |
2791 | - | let | |
2792 | - | if (( | |
2793 | - | then throw(( | |
3005 | + | let jp = valueOrErrorMessage(getString(bR(bA)), (("NFT " + jm.name) + " is orphaned")) | |
3006 | + | if ((jp != av)) | |
3007 | + | then throw((aJ + " is not yours")) | |
2794 | 3008 | else { | |
2795 | - | let | |
2796 | - | let | |
2797 | - | if (isDefined( | |
2798 | - | then throw(("Name already registered: " + | |
3009 | + | let mr = ek(ky) | |
3010 | + | let ms = getString(mr) | |
3011 | + | if (isDefined(ms)) | |
3012 | + | then throw(("Name already registered: " + ky)) | |
2799 | 3013 | else { | |
2800 | - | let | |
2801 | - | let | |
2802 | - | let | |
2803 | - | then [DeleteEntry( | |
3014 | + | let mw = bK(bA) | |
3015 | + | let mu = getString(mw) | |
3016 | + | let mv = if (isDefined(mu)) | |
3017 | + | then [DeleteEntry(ek(value(mu)))] | |
2804 | 3018 | else nil | |
2805 | - | ((( | |
3019 | + | (((mv :+ StringEntry(mw, ky)) :+ StringEntry(mr, bA)) ++ jZ(bA, do)._1) | |
2806 | 3020 | } | |
2807 | 3021 | } | |
2808 | 3022 | } | |
2809 | 3023 | } | |
2810 | 3024 | else throw("Unknown entity type") | |
2811 | 3025 | } | |
2812 | - | $Tuple2((( | |
3026 | + | $Tuple2(((mq :+ ScriptTransfer(N, li.amount, h)) ++ lh), 0) | |
2813 | 3027 | } | |
2814 | 3028 | } | |
2815 | 3029 | } | |
2816 | 3030 | ||
2817 | 3031 | ||
2818 | 3032 | ||
2819 | - | @Callable( | |
2820 | - | func setReferrals ( | |
3033 | + | @Callable(gy) | |
3034 | + | func setReferrals (mx,my) = if ((gy.callerPublicKey != f)) | |
2821 | 3035 | then throw("Permission denied") | |
2822 | 3036 | else { | |
2823 | - | let | |
2824 | - | if ((size( | |
3037 | + | let lh = kN(gy) | |
3038 | + | if ((size(gy.payments) != 0)) | |
2825 | 3039 | then throw("No payments required") | |
2826 | - | else if (!(isDefined(addressFromString( | |
2827 | - | then throw(("Invalid address: " + | |
3040 | + | else if (!(isDefined(addressFromString(mx)))) | |
3041 | + | then throw(("Invalid address: " + mx)) | |
2828 | 3042 | else { | |
2829 | - | let | |
2830 | - | if (!(isDefined( | |
2831 | - | then throw(("Invalid address: " + | |
3043 | + | let mz = addressFromString(my) | |
3044 | + | if (!(isDefined(mz))) | |
3045 | + | then throw(("Invalid address: " + my)) | |
2832 | 3046 | else { | |
2833 | - | let | |
2834 | - | if (!(isDefined( | |
3047 | + | let mA = getString(au(mx)) | |
3048 | + | if (!(isDefined(mA))) | |
2835 | 3049 | then throw("oldPlayer didn't do any tx in game") | |
2836 | - | else if ((0 >= wavesBalance(value( | |
3050 | + | else if ((0 >= wavesBalance(value(mz)).available)) | |
2837 | 3051 | then throw("newPlayer has no WAVES") | |
2838 | 3052 | else { | |
2839 | - | let | |
2840 | - | let | |
2841 | - | let | |
2842 | - | then split_4C(value( | |
3053 | + | let mB = em() | |
3054 | + | let mC = getString(mB) | |
3055 | + | let mD = if (isDefined(mC)) | |
3056 | + | then split_4C(value(mC), "_") | |
2843 | 3057 | else nil | |
2844 | - | if (containsElement( | |
2845 | - | then throw(( | |
3058 | + | if (containsElement(mD, my)) | |
3059 | + | then throw((my + " is not newbie (already has referrals)")) | |
2846 | 3060 | else { | |
2847 | - | let | |
2848 | - | let | |
2849 | - | if (if (isDefined( | |
2850 | - | then isDefined(addressFromString(value( | |
3061 | + | let kc = bM(my) | |
3062 | + | let kd = getString(kc) | |
3063 | + | if (if (isDefined(kd)) | |
3064 | + | then isDefined(addressFromString(value(kd))) | |
2851 | 3065 | else false) | |
2852 | - | then throw((( | |
3066 | + | then throw(((my + " already has refBy: ") + value(kd))) | |
2853 | 3067 | else { | |
2854 | - | let | |
2855 | - | let | |
2856 | - | let | |
2857 | - | then split_4C(value( | |
3068 | + | let mE = bQ(mx) | |
3069 | + | let mF = getString(mE) | |
3070 | + | let mG = if (isDefined(mF)) | |
3071 | + | then split_4C(value(mF), "_") | |
2858 | 3072 | else nil | |
2859 | - | if (containsElement( | |
2860 | - | then throw(((( | |
3073 | + | if (containsElement(mG, my)) | |
3074 | + | then throw((((mx + " already contains ") + my) + " within referrals")) | |
2861 | 3075 | else { | |
2862 | - | let | |
2863 | - | let | |
2864 | - | then value( | |
2865 | - | else makeString_2C(( | |
2866 | - | $Tuple2(([StringEntry( | |
3076 | + | let mH = makeString_2C((mG :+ my), "_") | |
3077 | + | let mI = if (containsElement(mD, mx)) | |
3078 | + | then value(mC) | |
3079 | + | else makeString_2C((mD :+ mx), "_") | |
3080 | + | $Tuple2(([StringEntry(kc, mx), StringEntry(mE, mH), StringEntry(mB, mI)] ++ lh), 0) | |
2867 | 3081 | } | |
2868 | 3082 | } | |
2869 | 3083 | } | |
2874 | 3088 | ||
2875 | 3089 | ||
2876 | 3090 | ||
2877 | - | @Callable( | |
2878 | - | func distributePoints ( | |
2879 | - | let | |
2880 | - | if ((size( | |
3091 | + | @Callable(gy) | |
3092 | + | func distributePoints (mJ,mK,mL,mM,mN) = { | |
3093 | + | let lh = kN(gy) | |
3094 | + | if ((size(gy.payments) != 0)) | |
2881 | 3095 | then throw("No payments required") | |
2882 | 3096 | else { | |
2883 | - | let | |
2884 | - | let | |
2885 | - | let | |
2886 | - | let | |
3097 | + | let av = toString(gy.originCaller) | |
3098 | + | let mO = an(invoke(P, "checkWlgXpREADONLY", [av], nil)) | |
3099 | + | let mP = al(mO[1]) | |
3100 | + | let mQ = if ((0 >= mP)) | |
2887 | 3101 | then $Tuple2(0, nil) | |
2888 | 3102 | else { | |
2889 | - | let | |
2890 | - | if (( | |
2891 | - | then $Tuple2( | |
3103 | + | let jX = al(invoke(P, "takeWlgXp", [av], nil)) | |
3104 | + | if ((jX == jX)) | |
3105 | + | then $Tuple2(mP, [IntegerEntry(cW(av), al(mO[0])), IntegerEntry(cV(av), al(mO[2]))]) | |
2892 | 3106 | else throw("Strict value is not equal to itself.") | |
2893 | 3107 | } | |
2894 | - | let | |
2895 | - | let | |
2896 | - | let | |
2897 | - | let | |
2898 | - | let | |
2899 | - | let | |
2900 | - | let | |
2901 | - | let | |
2902 | - | let | |
2903 | - | if (( | |
2904 | - | then throw((("There are only " + toString( | |
3108 | + | let mR = mQ._1 | |
3109 | + | let mS = mQ._2 | |
3110 | + | let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked") | |
3111 | + | let mT = cX(av) | |
3112 | + | let mU = (valueOrElse(getInteger(mT), 0) + mR) | |
3113 | + | let mV = cT(bO) | |
3114 | + | let mW = valueOrElse(getInteger(mV), 0) | |
3115 | + | let mX = (mU + mW) | |
3116 | + | let mY = ((((mJ + mK) + mL) + mM) + mN) | |
3117 | + | if ((mY > mX)) | |
3118 | + | then throw((("There are only " + toString(mX)) + " free points to distribute")) | |
2905 | 3119 | else { | |
2906 | - | let | |
2907 | - | let | |
2908 | - | let | |
2909 | - | $Tuple2((([IntegerEntry( | |
3120 | + | let mZ = cQ(bO) | |
3121 | + | let dF = split(valueOrElse(getString(mZ), "0_0_0_0_0"), "_") | |
3122 | + | let na = (mU - mY) | |
3123 | + | $Tuple2((([IntegerEntry(mT, if ((0 > na)) | |
2910 | 3124 | then 0 | |
2911 | - | else | |
2912 | - | then ( | |
2913 | - | else | |
3125 | + | else na), IntegerEntry(mV, if ((0 > na)) | |
3126 | + | then (mW + na) | |
3127 | + | else mW), StringEntry(mZ, makeString([toString((parseIntValue(dF[cF]) + mJ)), toString((parseIntValue(dF[cG]) + mK)), toString((parseIntValue(dF[cH]) + mL)), toString((parseIntValue(dF[cI]) + mM)), toString((parseIntValue(dF[cJ]) + mN))], "_"))] ++ lh) ++ mS), 0) | |
2914 | 3128 | } | |
2915 | 3129 | } | |
2916 | 3130 | } | |
2917 | 3131 | ||
2918 | 3132 | ||
2919 | 3133 | ||
2920 | - | @Callable( | |
2921 | - | func splitByGlobalWeightsREADONLY ( | |
2922 | - | ||
2923 | - | ||
2924 | - | ||
2925 | - | @Callable( | |
2926 | - | func splitByGlobalAndLocalWeightsREADONLY ( | |
2927 | - | let | |
2928 | - | $Tuple2(nil, $Tuple2( | |
2929 | - | } | |
2930 | - | ||
2931 | - | ||
2932 | - | ||
2933 | - | @Callable( | |
2934 | - | func getBackpackREADONLY ( | |
2935 | - | ||
2936 | - | ||
2937 | - | ||
2938 | - | @Callable( | |
2939 | - | func getWarehouseREADONLY ( | |
2940 | - | let | |
2941 | - | let | |
2942 | - | let | |
2943 | - | $Tuple2(nil, makeString_2C( | |
2944 | - | } | |
2945 | - | ||
2946 | - | ||
2947 | - | ||
2948 | - | @Callable( | |
2949 | - | func saveLastTx () = if (!(containsElement([ | |
3134 | + | @Callable(gy) | |
3135 | + | func splitByGlobalWeightsREADONLY (eC) = $Tuple2(nil, eU(eC)) | |
3136 | + | ||
3137 | + | ||
3138 | + | ||
3139 | + | @Callable(gy) | |
3140 | + | func splitByGlobalAndLocalWeightsREADONLY (nb,nc,gB) = { | |
3141 | + | let gu = gA(gB) | |
3142 | + | $Tuple2(nil, $Tuple2(eU(nb), eF(nc, gu))) | |
3143 | + | } | |
3144 | + | ||
3145 | + | ||
3146 | + | ||
3147 | + | @Callable(gy) | |
3148 | + | func getBackpackREADONLY (bO) = $Tuple2(nil, makeString(hC(bT(bO)), ":")) | |
3149 | + | ||
3150 | + | ||
3151 | + | ||
3152 | + | @Callable(gy) | |
3153 | + | func getWarehouseREADONLY (bI) = { | |
3154 | + | let jm = value(assetInfo(fromBase58String(bI))) | |
3155 | + | let hS = (aq(split(jm.description, "_")[T]) / p) | |
3156 | + | let hT = valueOrElse(getInteger(bJ(bI)), 0) | |
3157 | + | $Tuple2(nil, makeString_2C(hQ(bH(bI), hS, hT), ":")) | |
3158 | + | } | |
3159 | + | ||
3160 | + | ||
3161 | + | ||
3162 | + | @Callable(gy) | |
3163 | + | func saveLastTx () = if (!(containsElement([P, N, Q, R], gy.caller))) | |
2950 | 3164 | then throw("Access denied") | |
2951 | - | else $Tuple2( | |
2952 | - | ||
2953 | - | ||
2954 | - | ||
2955 | - | @Callable( | |
2956 | - | func updateDuckStats ( | |
3165 | + | else $Tuple2(kN(gy), 42) | |
3166 | + | ||
3167 | + | ||
3168 | + | ||
3169 | + | @Callable(gy) | |
3170 | + | func updateDuckStats (bO,jX) = if ((gy.caller != N)) | |
2957 | 3171 | then throw("Access denied") | |
2958 | - | else | |
2959 | - | ||
2960 | - | ||
2961 | - | ||
2962 | - | @Callable( | |
2963 | - | func updateAccStats ( | |
3172 | + | else jZ(bO, jX) | |
3173 | + | ||
3174 | + | ||
3175 | + | ||
3176 | + | @Callable(gy) | |
3177 | + | func updateAccStats (av,jX) = if (!(containsElement([P, N, R], gy.caller))) | |
2964 | 3178 | then throw("Access denied") | |
2965 | - | else | |
2966 | - | ||
2967 | - | ||
2968 | - | ||
2969 | - | @Callable( | |
2970 | - | func equipDuck ( | |
2971 | - | let | |
2972 | - | if ((size( | |
3179 | + | else ka(av, jX) | |
3180 | + | ||
3181 | + | ||
3182 | + | ||
3183 | + | @Callable(gy) | |
3184 | + | func equipDuck (nd) = { | |
3185 | + | let lh = kN(gy) | |
3186 | + | if ((size(gy.payments) != 0)) | |
2973 | 3187 | then throw("No payments required") | |
2974 | 3188 | else { | |
2975 | - | let | |
2976 | - | let | |
2977 | - | if ( | |
3189 | + | let av = toString(gy.originCaller) | |
3190 | + | let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked") | |
3191 | + | if (kk(bO)) | |
2978 | 3192 | then throw("equipDuck_checkTournament") | |
2979 | 3193 | else { | |
2980 | - | let | |
2981 | - | let | |
2982 | - | let | |
2983 | - | let | |
2984 | - | let | |
2985 | - | if ((size( | |
3194 | + | let gk = cU(bO) | |
3195 | + | let lb = split(valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
3196 | + | let hD = bT(bO) | |
3197 | + | let ih = hC(hD) | |
3198 | + | let lC = split(nd, "_") | |
3199 | + | if ((size(lC) != cL)) | |
2986 | 3200 | then throw("Wrong equipment string") | |
2987 | 3201 | else { | |
2988 | - | let | |
2989 | - | let | |
2990 | - | let | |
3202 | + | let gn = gc(lb, fr(ih[bv]), true, nil) | |
3203 | + | let go = split(lC[cK], ";")[1] | |
3204 | + | let dD = if ((go == "")) | |
2991 | 3205 | then 0 | |
2992 | 3206 | else { | |
2993 | - | let | |
2994 | - | if (( | |
3207 | + | let gp = split(go, ",")[0] | |
3208 | + | if ((gp == "")) | |
2995 | 3209 | then 0 | |
2996 | 3210 | else { | |
2997 | - | let | |
2998 | - | let | |
2999 | - | let | |
3000 | - | if (if (if (if (if (( | |
3211 | + | let fG = split(gp, ":") | |
3212 | + | let K = fG[0] | |
3213 | + | let gq = fG[1] | |
3214 | + | if (if (if (if (if ((K == "06")) | |
3001 | 3215 | then true | |
3002 | - | else ( | |
3216 | + | else (K == "07")) | |
3003 | 3217 | then true | |
3004 | - | else ( | |
3005 | - | then ( | |
3218 | + | else (K == "08")) | |
3219 | + | then (gq != "") | |
3006 | 3220 | else false) | |
3007 | - | then (parseIntValue( | |
3221 | + | then (parseIntValue(gq) > 0) | |
3008 | 3222 | else false) | |
3009 | - | then parseIntValue(split( | |
3223 | + | then parseIntValue(split(bd[parseIntValue(K)], "_")[bf]) | |
3010 | 3224 | else 0 | |
3011 | 3225 | } | |
3012 | 3226 | } | |
3013 | - | let | |
3014 | - | let | |
3015 | - | let | |
3016 | - | $Tuple2(([StringEntry( | |
3227 | + | let fX = dC(this, bO, dD, true) | |
3228 | + | let gr = gc(lC, gn, false, fX) | |
3229 | + | let lc = fw(gr) | |
3230 | + | $Tuple2(([StringEntry(gk, nd), StringEntry(hD, makeString_2C([ih[bs], ih[bt], ih[bu], lc], ":")), StringEntry(da(bO), makeString([toString(fX[7]), toString(fX[8]), toString(fX[9]), toString(fX[10]), toString(fX[11])], "_"))] ++ lh), 0) | |
3017 | 3231 | } | |
3018 | 3232 | } | |
3019 | 3233 | } | |
3021 | 3235 | ||
3022 | 3236 | ||
3023 | 3237 | ||
3024 | - | @Callable( | |
3025 | - | func initDuckTourAttempt ( | |
3238 | + | @Callable(gy) | |
3239 | + | func initDuckTourAttempt (bO) = if ((gy.caller != Q)) | |
3026 | 3240 | then throw("Access denied") | |
3027 | 3241 | else { | |
3028 | - | let | |
3029 | - | let | |
3030 | - | let | |
3031 | - | let | |
3032 | - | let | |
3033 | - | let | |
3034 | - | let | |
3035 | - | $Tuple2([IntegerEntry( | |
3036 | - | } | |
3037 | - | ||
3038 | - | ||
3039 | - | ||
3040 | - | @Callable( | |
3242 | + | let iV = cP(bO) | |
3243 | + | let iW = dw(valueOrElse(getInteger(cS(bO)), 0)) | |
3244 | + | let lw = valueOrElse(getInteger(iV), iW) | |
3245 | + | let ne = bU(bO) | |
3246 | + | let jk = valueOrElse(getString(ne), aQ) | |
3247 | + | let co = valueOrElse(getInteger(Q, bZ), 0) | |
3248 | + | let nf = (toString(co) + "_T_0") | |
3249 | + | $Tuple2([IntegerEntry(cY(bO), lw), IntegerEntry(iV, iW), StringEntry(cZ(bO), jk), StringEntry(ne, nf)], nf) | |
3250 | + | } | |
3251 | + | ||
3252 | + | ||
3253 | + | ||
3254 | + | @Callable(gy) | |
3041 | 3255 | func breakAttempt () = { | |
3042 | - | let | |
3043 | - | let | |
3044 | - | let | |
3045 | - | let | |
3046 | - | if ((split( | |
3256 | + | let lh = kN(gy) | |
3257 | + | let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked") | |
3258 | + | let ne = bU(bO) | |
3259 | + | let jk = valueOrElse(getString(ne), aQ) | |
3260 | + | if ((split(jk, "_")[bx] != "T")) | |
3047 | 3261 | then throw("Your duck is not in the tournament") | |
3048 | 3262 | else { | |
3049 | - | let | |
3050 | - | let | |
3051 | - | $Tuple2((( | |
3052 | - | } | |
3053 | - | } | |
3054 | - | ||
3055 | - | ||
3056 | - | ||
3057 | - | @Callable( | |
3058 | - | func breakAttemptCallback () = if (( | |
3263 | + | let ng = getIntegerValue(cY(bO)) | |
3264 | + | let nh = getStringValue(cZ(bO)) | |
3265 | + | $Tuple2(((lh :+ IntegerEntry(cP(bO), ng)) :+ StringEntry(ne, nh)), jk) | |
3266 | + | } | |
3267 | + | } | |
3268 | + | ||
3269 | + | ||
3270 | + | ||
3271 | + | @Callable(gy) | |
3272 | + | func breakAttemptCallback () = if ((gy.caller != Q)) | |
3059 | 3273 | then throw("Access denied") | |
3060 | 3274 | else { | |
3061 | - | let | |
3062 | - | $Tuple2([IntegerEntry( | |
3063 | - | } | |
3064 | - | ||
3065 | - | ||
3066 | - | ||
3067 | - | @Callable( | |
3068 | - | func exitTournamentInternal ( | |
3275 | + | let bO = valueOrErrorMessage(getString(bS(toString(gy.originCaller))), "You don't have a duck staked") | |
3276 | + | $Tuple2([IntegerEntry(cP(bO), getIntegerValue(cY(bO))), StringEntry(bU(bO), getStringValue(cZ(bO)))], "breakAttemptCallback") | |
3277 | + | } | |
3278 | + | ||
3279 | + | ||
3280 | + | ||
3281 | + | @Callable(gy) | |
3282 | + | func exitTournamentInternal (bO) = if ((gy.caller != this)) | |
3069 | 3283 | then throw("Access denied") | |
3070 | 3284 | else { | |
3071 | - | let | |
3072 | - | let | |
3073 | - | $Tuple2([IntegerEntry( | |
3074 | - | } | |
3075 | - | ||
3076 | - | ||
3077 | - | ||
3078 | - | @Callable( | |
3079 | - | func processDelivery ( | |
3285 | + | let ng = getIntegerValue(cY(bO)) | |
3286 | + | let nh = getStringValue(cZ(bO)) | |
3287 | + | $Tuple2([IntegerEntry(cP(bO), ng), StringEntry(bU(bO), nh)], false) | |
3288 | + | } | |
3289 | + | ||
3290 | + | ||
3291 | + | ||
3292 | + | @Callable(gy) | |
3293 | + | func processDelivery (bO) = if ((gy.caller != this)) | |
3080 | 3294 | then throw("Access denied") | |
3081 | 3295 | else { | |
3082 | - | let | |
3083 | - | let | |
3084 | - | if (( | |
3085 | - | then throw(("Delivery is not available, fund=" + | |
3296 | + | let av = toString(gy.originCaller) | |
3297 | + | let ni = valueOrElse(getInteger(N, bY), 0) | |
3298 | + | if ((aT > ni)) | |
3299 | + | then throw(("Delivery is not available, fund=" + aw(ni, 6))) | |
3086 | 3300 | else { | |
3087 | - | let | |
3088 | - | let | |
3089 | - | let | |
3090 | - | let | |
3091 | - | let | |
3092 | - | then valueOrElse(getInteger( | |
3301 | + | let cq = lastBlock.timestamp | |
3302 | + | let nj = dg(av) | |
3303 | + | let nk = valueOrElse(getInteger(dh(av)), 0) | |
3304 | + | let nl = (cq / dJ) | |
3305 | + | let fM = if ((nk == nl)) | |
3306 | + | then valueOrElse(getInteger(nj), 0) | |
3093 | 3307 | else 0 | |
3094 | - | let | |
3095 | - | let | |
3096 | - | if (( | |
3097 | - | then throw((("You already used " + toString( | |
3308 | + | let nm = valueOrElse(getInteger(R, dL(av)), 0) | |
3309 | + | let nn = (aY + (nm / aZ)) | |
3310 | + | if ((fM >= nn)) | |
3311 | + | then throw((("You already used " + toString(nn)) + " delivery attempts for today")) | |
3098 | 3312 | else { | |
3099 | - | let | |
3100 | - | let | |
3101 | - | $Tuple2([IntegerEntry( | |
3313 | + | let no = df(bO) | |
3314 | + | let np = invoke(N, "sendDeliveryReward", [av], nil) | |
3315 | + | $Tuple2([IntegerEntry(nj, (fM + 1)), IntegerEntry(dh(av), nl), IntegerEntry(no, (valueOrElse(getInteger(no), 0) + 1))], np) | |
3102 | 3316 | } | |
3103 | 3317 | } | |
3104 | 3318 | } | |
3105 | 3319 | ||
3106 | 3320 | ||
3107 | 3321 | ||
3108 | - | @Callable( | |
3109 | - | func robLand ( | |
3110 | - | let | |
3111 | - | if ((size( | |
3322 | + | @Callable(gy) | |
3323 | + | func robLand (iK,iL) = { | |
3324 | + | let lh = kN(gy) | |
3325 | + | if ((size(gy.payments) != 1)) | |
3112 | 3326 | then throw("exactly 1 payment must be attached") | |
3113 | 3327 | else { | |
3114 | - | let | |
3115 | - | let | |
3116 | - | if (if (!(isDefined( | |
3328 | + | let li = gy.payments[0] | |
3329 | + | let nq = li.amount | |
3330 | + | if (if (!(isDefined(li.assetId))) | |
3117 | 3331 | then true | |
3118 | - | else (value( | |
3332 | + | else (value(li.assetId) != X)) | |
3119 | 3333 | then throw("WLGOLD payments only!") | |
3120 | - | else if (( | |
3121 | - | then throw((("Payment should be " + | |
3334 | + | else if ((nq != aV)) | |
3335 | + | then throw((("Payment should be " + aw(aV, 8)) + " WLGOLD")) | |
3122 | 3336 | else { | |
3123 | - | let | |
3124 | - | if (!(sigVerify_8Kb( | |
3337 | + | let av = toString(gy.caller) | |
3338 | + | if (!(sigVerify_8Kb(iK, iL, f))) | |
3125 | 3339 | then throw("signature does not match") | |
3126 | 3340 | else { | |
3127 | - | let | |
3128 | - | let | |
3129 | - | let | |
3130 | - | let | |
3131 | - | let | |
3132 | - | let | |
3133 | - | let | |
3134 | - | let | |
3135 | - | if (( | |
3341 | + | let fj = split_4C(toUtf8String(iK), ";") | |
3342 | + | let nr = split_4C(fj[0], "|") | |
3343 | + | let iN = split(nr[ev], "_") | |
3344 | + | let iO = parseIntValue(iN[0]) | |
3345 | + | let iP = parseIntValue(iN[1]) | |
3346 | + | let iZ = nr[ew] | |
3347 | + | let ns = split(fj[1], "|") | |
3348 | + | let nt = ns[ex] | |
3349 | + | if ((nt != "B")) | |
3136 | 3350 | then throw("Only bank robbery is supported") | |
3137 | 3351 | else { | |
3138 | - | let | |
3139 | - | if (if (( | |
3352 | + | let iS = parseIntValue(ns[ez]) | |
3353 | + | if (if ((iS > (lastBlock.timestamp + dO))) | |
3140 | 3354 | then true | |
3141 | - | else ((lastBlock.timestamp - | |
3142 | - | then throw(((("signature outdated: logTime=" + toString( | |
3355 | + | else ((lastBlock.timestamp - dO) > iS)) | |
3356 | + | then throw(((("signature outdated: logTime=" + toString(iS)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
3143 | 3357 | else { | |
3144 | - | let | |
3145 | - | let | |
3146 | - | if (( | |
3147 | - | then throw(((("Tx ids don't match! In state: " + | |
3358 | + | let iT = ns[ey] | |
3359 | + | let iU = valueOrElse(getString(au(av)), "") | |
3360 | + | if ((iU != iT)) | |
3361 | + | then throw(((("Tx ids don't match! In state: " + iU) + ", in msg: ") + iT)) | |
3148 | 3362 | else { | |
3149 | - | let | |
3150 | - | let | |
3151 | - | let | |
3152 | - | let | |
3153 | - | let | |
3154 | - | let | |
3155 | - | let | |
3156 | - | let | |
3157 | - | if ( | |
3363 | + | let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked") | |
3364 | + | let gk = cU(bO) | |
3365 | + | let lA = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,") | |
3366 | + | let nu = fe(lA, iZ) | |
3367 | + | let lC = nu._1 | |
3368 | + | let lD = nu._2 | |
3369 | + | let nv = nu._3 | |
3370 | + | let jk = valueOrElse(getString(bU(bO)), aQ) | |
3371 | + | if (cm(Q, jk)) | |
3158 | 3372 | then throw("Your duck is taking part in the tournament") | |
3159 | 3373 | else { | |
3160 | - | let | |
3161 | - | let | |
3162 | - | let | |
3163 | - | let | |
3164 | - | let | |
3165 | - | then valueOrElse(getInteger( | |
3374 | + | let cq = lastBlock.timestamp | |
3375 | + | let nj = dd(av) | |
3376 | + | let nk = valueOrElse(getInteger(de(av)), 0) | |
3377 | + | let nl = (cq / dJ) | |
3378 | + | let fM = if ((nk == nl)) | |
3379 | + | then valueOrElse(getInteger(nj), 0) | |
3166 | 3380 | else 0 | |
3167 | - | let | |
3168 | - | let | |
3169 | - | if (( | |
3170 | - | then throw((("You already used " + toString( | |
3381 | + | let nm = valueOrElse(getInteger(R, dL(av)), 0) | |
3382 | + | let nw = (aW + (nm / aX)) | |
3383 | + | if ((fM >= nw)) | |
3384 | + | then throw((("You already used " + toString(nw)) + " robbery attempts for today")) | |
3171 | 3385 | else { | |
3172 | - | let | |
3173 | - | let | |
3386 | + | let no = dc(bO) | |
3387 | + | let nx = if ((iP > 0)) | |
3174 | 3388 | then { | |
3175 | - | let | |
3176 | - | let | |
3177 | - | then (2 * | |
3178 | - | else (5 * | |
3179 | - | if (( | |
3180 | - | then throw(((("Robbery is not available, funds = " + | |
3181 | - | else [ScriptTransfer( | |
3389 | + | let ni = assetBalance(this, X) | |
3390 | + | let ny = if (nv) | |
3391 | + | then (2 * aV) | |
3392 | + | else (5 * aV) | |
3393 | + | if ((ny > ni)) | |
3394 | + | then throw(((("Robbery is not available, funds = " + aw(ni, 8)) + " WLGOLD, required = ") + aw(ny, 8))) | |
3395 | + | else [ScriptTransfer(gy.caller, ny, X)] | |
3182 | 3396 | } | |
3183 | 3397 | else nil | |
3184 | - | $Tuple2(((((((((( | |
3185 | - | then [StringEntry( | |
3186 | - | else nil)) ++ | |
3187 | - | then | |
3188 | - | else | |
3398 | + | $Tuple2((((((((((lh ++ nx) ++ (if (lD) | |
3399 | + | then [StringEntry(da(bO), "0_0_0_0_0")] | |
3400 | + | else nil)) ++ jZ(bO, if ((iP > 0)) | |
3401 | + | then dl | |
3402 | + | else dm)._1) :+ IntegerEntry(db(bO), cq)) :+ IntegerEntry(nj, (fM + 1))) :+ IntegerEntry(de(av), nl)) :+ IntegerEntry(no, (valueOrElse(getInteger(no), 0) + 1))) :+ StringEntry(gk, lC)) :+ IntegerEntry(cP(bO), max([iP, 0]))), 0) | |
3189 | 3403 | } | |
3190 | 3404 | } | |
3191 | 3405 | } | |
3198 | 3412 | ||
3199 | 3413 | ||
3200 | 3414 | ||
3201 | - | @Callable( | |
3202 | - | func buyRoboDuck () = if (!( | |
3415 | + | @Callable(gy) | |
3416 | + | func buyRoboDuck () = if (!(c)) | |
3203 | 3417 | then throw("Feature is turned off") | |
3204 | 3418 | else { | |
3205 | - | let | |
3206 | - | if ((size( | |
3419 | + | let lh = kN(gy) | |
3420 | + | if ((size(gy.payments) != 1)) | |
3207 | 3421 | then throw("Exactly one payment required") | |
3208 | 3422 | else { | |
3209 | - | let | |
3210 | - | if (( | |
3423 | + | let li = value(gy.payments[0]) | |
3424 | + | if ((li.assetId != h)) | |
3211 | 3425 | then throw("Allowed USDT payment only!") | |
3212 | - | else if (( | |
3213 | - | then throw((("Payment attached should be " + | |
3426 | + | else if ((li.amount != dU)) | |
3427 | + | then throw((("Payment attached should be " + aw(dU, 6)) + " USDT")) | |
3214 | 3428 | else { | |
3215 | - | let | |
3216 | - | let | |
3217 | - | let | |
3218 | - | let | |
3219 | - | let | |
3220 | - | let | |
3221 | - | $Tuple2((((( | |
3429 | + | let nz = valueOrElse(getInteger(en()), 0) | |
3430 | + | let nA = toBytes(nz) | |
3431 | + | let ef = ((aK + "-") + takeRight(toBase16String(nA), 8)) | |
3432 | + | let nB = takeRight(toBase16String(sha256_16Kb(nA)), 6) | |
3433 | + | let iH = Issue(ef, ("Robo Duck NFT for WavesLands game, background color = #" + nB), 1, 0, false) | |
3434 | + | let bA = calculateAssetId(iH) | |
3435 | + | $Tuple2(((((lh :+ IntegerEntry(en(), (nz + 1))) :+ iH) :+ ScriptTransfer(gy.originCaller, 1, bA)) :+ ScriptTransfer(N, li.amount, h)), $Tuple2(toBase58String(bA), nB)) | |
3222 | 3436 | } | |
3223 | 3437 | } | |
3224 | 3438 | } |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let a = 86400000 | |
5 | - | ||
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 = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"] | |
21 | - | ||
22 | - | let j = 0 | |
23 | - | ||
24 | - | let k = 1 | |
25 | - | ||
26 | - | let l = 2 | |
27 | - | ||
28 | - | let m = 3 | |
29 | - | ||
30 | - | let n = 4 | |
31 | - | ||
32 | - | let o = 0 | |
33 | - | ||
34 | - | let p = 6 | |
35 | - | ||
36 | - | let q = 2 | |
37 | - | ||
38 | - | let r = 2 | |
39 | - | ||
40 | - | let s = 30 | |
41 | - | ||
42 | - | func t (u) = ("duckHealth_" + u) | |
43 | - | ||
44 | - | ||
45 | - | func v (u) = ("duckChars_" + u) | |
46 | - | ||
47 | - | ||
48 | - | func w (u) = ("duckXP_" + u) | |
49 | - | ||
50 | - | ||
51 | - | func x (u) = ("duckLevel_" + u) | |
52 | - | ||
53 | - | ||
54 | - | func y (u) = ("duckFreePoints_" + u) | |
55 | - | ||
56 | - | ||
57 | - | func z (u) = ("duckEquipment_" + u) | |
58 | - | ||
59 | - | ||
60 | - | func A (c) = ("userXP_" + c) | |
61 | - | ||
62 | - | ||
63 | - | func B (c) = ("userLevel_" + c) | |
64 | - | ||
65 | - | ||
66 | - | func C (c) = ("userFreePoints_" + c) | |
67 | - | ||
68 | - | ||
69 | - | func D (u) = ("savedHealth_" + u) | |
70 | - | ||
71 | - | ||
72 | - | func E (u) = ("savedLocation_" + u) | |
73 | - | ||
74 | - | ||
75 | - | func F (u) = ("duckBuffs_" + u) | |
76 | - | ||
77 | - | ||
78 | - | func G (u) = ("lastRobberyTime_" + u) | |
79 | - | ||
80 | - | ||
81 | - | func H (u) = ("totalRobberyCountByDuck_" + u) | |
82 | - | ||
83 | - | ||
84 | - | func I (c) = ("userRobberyCount_" + c) | |
85 | - | ||
86 | - | ||
87 | - | func J (c) = ("userLastRobberyDay_" + c) | |
88 | - | ||
89 | - | ||
90 | - | func K (u) = ("totalDeliveryCountByDuck_" + u) | |
91 | - | ||
92 | - | ||
93 | - | func L (c) = ("userDeliveryCount_" + c) | |
94 | - | ||
95 | - | ||
96 | - | func M (c) = ("userLastDeliveryDay_" + c) | |
97 | - | ||
98 | - | ||
99 | - | let N = 10000 | |
100 | - | ||
101 | - | let O = 10000 | |
102 | - | ||
103 | - | let P = 2000 | |
104 | - | ||
105 | - | let Q = 10000 | |
106 | - | ||
107 | - | let R = 2000 | |
108 | - | ||
109 | - | let S = 100000 | |
110 | - | ||
111 | - | let T = 1000000 | |
112 | - | ||
113 | - | let U = 5000000 | |
114 | - | ||
115 | - | let V = 10000 | |
116 | - | ||
117 | - | let W = 1000000 | |
118 | - | ||
119 | - | let X = 1000000 | |
120 | - | ||
121 | - | let Y = 10000 | |
122 | - | ||
123 | - | func Z (aa) = fraction(f, pow(aa, 4, g, 4, 4, DOWN), e) | |
124 | - | ||
125 | - | ||
126 | - | func ab (ac) = (100 + ac) | |
127 | - | ||
128 | - | ||
129 | - | func ad (ae,af) = { | |
130 | - | let ag = Z(af) | |
131 | - | [ag, (h * (ag - ae))] | |
132 | - | } | |
133 | - | ||
134 | - | ||
135 | - | func ah (ai,u,aj,ak) = { | |
136 | - | let al = split(valueOrElse(getString(ai, v(u)), "0_0_0_0_0"), "_") | |
137 | - | let am = valueOrElse(getInteger(ai, x(u)), 0) | |
138 | - | let an = valueOrElse(getInteger(ai, t(u)), ab(am)) | |
139 | - | let ao = split(valueOrElse(getString(ai, F(u)), "0_0_0_0_0"), "_") | |
140 | - | ([parseIntValue(al[j]), parseIntValue(al[k]), parseIntValue(al[l]), parseIntValue(al[m]), parseIntValue(al[n]), am, an] ++ (if (ak) | |
141 | - | then [aj, aj, aj, aj, aj] | |
142 | - | else [parseIntValue(ao[j]), parseIntValue(ao[k]), parseIntValue(ao[l]), parseIntValue(ao[m]), parseIntValue(ao[n])])) | |
143 | - | } | |
144 | - | ||
145 | - | ||
146 | - | let ap = "LAND" | |
147 | - | ||
148 | - | let aq = "DUCK" | |
149 | - | ||
150 | - | let ar = "ROBO" | |
151 | - | ||
152 | - | let as = "PRESALE" | |
153 | - | ||
154 | - | let at = 6 | |
155 | - | ||
156 | - | let au = 25 | |
157 | - | ||
158 | - | let av = 3456000 | |
159 | - | ||
160 | - | let aw = 10000000000 | |
161 | - | ||
162 | - | let ax = "Africa_F_Africa" | |
163 | - | ||
164 | - | let ay = 39637 | |
165 | - | ||
166 | - | let az = 10 | |
167 | - | ||
168 | - | let aA = 50000 | |
169 | - | ||
170 | - | let aB = 100000000 | |
171 | - | ||
172 | - | let aC = 0 | |
173 | - | ||
174 | - | let aD = 200000000 | |
175 | - | ||
176 | - | let aE = 0 | |
177 | - | ||
178 | - | let aF = 200000000 | |
179 | - | ||
180 | - | let aG = ["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", "Boom-Dog L1", "Boom-Dog L2", "Boom-Dog L3"] | |
181 | - | ||
182 | - | let aH = ["Americas", "Europe", "Asia", "Africa", "Oceania"] | |
183 | - | ||
184 | - | let aI = 10000000 | |
185 | - | ||
186 | - | let aJ = ["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_", "23_23_5_20_23_6_35_2_100_0,0,0,0,0,0,0_", "23_23_5_20_23_6_70_2_150_0,0,0,0,0,0,0_", "23_23_5_20_23_6_105_2_200_0,0,0,0,0,0,0_"] | |
187 | - | ||
188 | - | let aK = 6 | |
189 | - | ||
190 | - | let aL = 8 | |
191 | - | ||
192 | - | let aM = 9 | |
193 | - | ||
194 | - | let aN = 10 | |
195 | - | ||
196 | - | let aO = 10 | |
197 | - | ||
198 | - | let aP = 0 | |
199 | - | ||
200 | - | let aQ = 1 | |
201 | - | ||
202 | - | let aR = 2 | |
203 | - | ||
204 | - | let aS = 3 | |
205 | - | ||
206 | - | let aT = 4 | |
207 | - | ||
208 | - | let aU = 0 | |
209 | - | ||
210 | - | let aV = 1 | |
211 | - | ||
212 | - | let aW = 2 | |
213 | - | ||
214 | - | let aX = 3 | |
215 | - | ||
216 | - | let aY = 0 | |
217 | - | ||
218 | - | let aZ = 1 | |
219 | - | ||
220 | - | let ba = 2 | |
221 | - | ||
222 | - | let bb = 3 | |
223 | - | ||
224 | - | let bc = 0 | |
225 | - | ||
226 | - | let bd = 1 | |
227 | - | ||
228 | - | let be = 2 | |
229 | - | ||
230 | - | func bf (bg) = ("no_" + bg) | |
231 | - | ||
232 | - | ||
233 | - | func bh (bg) = ("lcna_" + bg) | |
234 | - | ||
235 | - | ||
236 | - | func bi (bg) = ("st_" + bg) | |
237 | - | ||
238 | - | ||
239 | - | func bj (bk,bg) = makeString(["las", bk, bg], "_") | |
240 | - | ||
241 | - | ||
242 | - | func bl (bm,bg,bn) = ((((("sttao_" + bm) + "_") + bg) + "_") + bn) | |
243 | - | ||
244 | - | ||
245 | - | func bo (bp) = ("wh_" + bp) | |
246 | - | ||
247 | - | ||
248 | - | func bq (bg) = ("infraLevel_" + bg) | |
249 | - | ||
250 | - | ||
251 | - | func br (bg) = ("duckCustomNameByAssetId_" + bg) | |
252 | - | ||
253 | - | ||
254 | - | func bs (c) = ("accountCustomNameByAddr_" + c) | |
255 | - | ||
256 | - | ||
257 | - | func bt (c) = ("accRefBy_" + c) | |
258 | - | ||
259 | - | ||
260 | - | func bu (u) = ("onboardArtActivatedOnDuck_" + u) | |
261 | - | ||
262 | - | ||
263 | - | func bv (c) = ("onboardArtActivatedDuckBy_" + c) | |
264 | - | ||
265 | - | ||
266 | - | func bw (c) = ("accReferrals_" + c) | |
267 | - | ||
268 | - | ||
269 | - | func bx (bg) = ("duckOwner_" + bg) | |
270 | - | ||
271 | - | ||
272 | - | func by (bn) = ("stakedDuckByOwner_" + bn) | |
273 | - | ||
274 | - | ||
275 | - | func bz (u) = ("backPack_" + u) | |
276 | - | ||
277 | - | ||
278 | - | func bA (u) = ("duckLocation_" + u) | |
279 | - | ||
280 | - | ||
281 | - | func bB (bC) = ("%s%s__userGwlReleaseTime__" + bC) | |
282 | - | ||
283 | - | ||
284 | - | func bD () = "emergencyWarehouseProducts" | |
285 | - | ||
286 | - | ||
287 | - | let bE = "deliveryFund" | |
288 | - | ||
289 | - | let bF = "%s__lastTourId" | |
290 | - | ||
291 | - | func bG (bH) = ("%s%d__tourStaticData__" + toString(bH)) | |
292 | - | ||
293 | - | ||
294 | - | func bI (bH) = ("%s%d__tourDynamicData__" + toString(bH)) | |
295 | - | ||
296 | - | ||
297 | - | func bJ (bH,u) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bH), u], "__") | |
298 | - | ||
299 | - | ||
300 | - | let bK = 0 | |
301 | - | ||
302 | - | let bL = 1 | |
303 | - | ||
304 | - | let bM = 6 | |
305 | - | ||
306 | - | let bN = 1 | |
307 | - | ||
308 | - | func bO (bP,bH) = { | |
309 | - | let bQ = split(valueOrErrorMessage(getString(bP, bG(bH)), (("Error reading tournament " + toString(bH)) + " data")), "__") | |
310 | - | let bR = split_4C(valueOrErrorMessage(getString(bP, bI(bH)), (("Error reading tournament " + toString(bH)) + " data")), "__") | |
311 | - | [bQ, bR] | |
312 | - | } | |
313 | - | ||
314 | - | ||
315 | - | func bS (bP,bT) = { | |
316 | - | let bU = valueOrElse(getInteger(bP, bF), 0) | |
317 | - | let bV = split(bT, "_") | |
318 | - | let bW = lastBlock.timestamp | |
319 | - | let bX = bO(bP, bU) | |
320 | - | let bQ = bX[bK] | |
321 | - | let bR = bX[bL] | |
322 | - | if (if (if ((bV[bd] == "T")) | |
323 | - | then (parseIntValue(bV[bc]) == bU) | |
324 | - | else false) | |
325 | - | then (bR[bN] == "INPROGRESS") | |
326 | - | else false) | |
327 | - | then (parseIntValue(bQ[bM]) > bW) | |
328 | - | else false | |
329 | - | } | |
330 | - | ||
331 | - | ||
332 | - | func bY (bP,bT) = { | |
333 | - | let bU = valueOrElse(getInteger(bP, bF), 0) | |
334 | - | let bV = split(bT, "_") | |
335 | - | let bW = lastBlock.timestamp | |
336 | - | let bX = bO(bP, bU) | |
337 | - | let bQ = bX[bK] | |
338 | - | let bR = bX[bL] | |
339 | - | let bZ = bV[bd] | |
340 | - | if (if (if ((bV[bd] == "T")) | |
341 | - | then (parseIntValue(bV[bc]) == bU) | |
342 | - | else false) | |
343 | - | then (bR[bN] == "INPROGRESS") | |
344 | - | else false) | |
345 | - | then (parseIntValue(bQ[bM]) > bW) | |
346 | - | else false | |
347 | - | } | |
348 | - | ||
349 | - | ||
350 | - | func ca (cb) = (parseIntValue(cb[aK]) * aI) | |
351 | - | ||
352 | - | ||
353 | - | func cc (cd,ce,cf) = throw(((((("Cheat attempt: oldLoc=" + cd) + ", newLoc=") + ce) + ", case=") + toString(cf))) | |
354 | - | ||
355 | - | ||
356 | - | let cg = false | |
357 | - | ||
358 | - | let ch = false | |
359 | - | ||
360 | - | let ci = false | |
361 | - | ||
362 | - | let cj = 86400000 | |
363 | - | ||
364 | - | let ck = take(drop(this.bytes, 1), 1) | |
365 | - | ||
366 | - | let cl = { | |
367 | - | let cm = ck | |
368 | - | if ((base58'2W' == cm)) | |
369 | - | then if (cg) | |
4 | + | let a = false | |
5 | + | ||
6 | + | let b = false | |
7 | + | ||
8 | + | let c = false | |
9 | + | ||
10 | + | let d = 86400000 | |
11 | + | ||
12 | + | let e = take(drop(this.bytes, 1), 1) | |
13 | + | ||
14 | + | let f = { | |
15 | + | let g = e | |
16 | + | if ((base58'2W' == g)) | |
17 | + | then if (a) | |
370 | 18 | then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm' | |
371 | 19 | else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
372 | - | else if ((base58'2T' == | |
20 | + | else if ((base58'2T' == g)) | |
373 | 21 | then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
374 | 22 | else throw("Unknown chain") | |
375 | 23 | } | |
376 | 24 | ||
377 | - | let | |
378 | - | let | |
379 | - | if ((base58'2W' == | |
25 | + | let h = { | |
26 | + | let g = e | |
27 | + | if ((base58'2W' == g)) | |
380 | 28 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
381 | - | else if ((base58'2T' == | |
29 | + | else if ((base58'2T' == g)) | |
382 | 30 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
383 | 31 | else throw("Unknown chain") | |
384 | 32 | } | |
385 | 33 | ||
386 | - | let | |
387 | - | let | |
388 | - | if ((base58'2W' == | |
34 | + | let i = { | |
35 | + | let g = e | |
36 | + | if ((base58'2W' == g)) | |
389 | 37 | then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv" | |
390 | - | else if ((base58'2T' == | |
38 | + | else if ((base58'2T' == g)) | |
391 | 39 | then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy" | |
392 | 40 | else throw("Unknown chain") | |
393 | 41 | } | |
394 | 42 | ||
395 | - | let cp = { | |
396 | - | let cm = ck | |
397 | - | if ((base58'2W' == cm)) | |
43 | + | let j = { | |
44 | + | let g = e | |
45 | + | if ((base58'2W' == g)) | |
46 | + | then "3P4UH3T9nXpMNpUmSmQjPmEz3G85t3zn6eA" | |
47 | + | else if ((base58'2T' == g)) | |
48 | + | then "3NBPx1Fciu3JQNEGZ21jSnTdutLNGGBUSXh" | |
49 | + | else throw("Unknown chain") | |
50 | + | } | |
51 | + | ||
52 | + | let k = { | |
53 | + | let g = e | |
54 | + | if ((base58'2W' == g)) | |
398 | 55 | then 10000000000 | |
399 | - | else if ((base58'2T' == | |
56 | + | else if ((base58'2T' == g)) | |
400 | 57 | then 100000000 | |
401 | 58 | else throw("Unknown chain") | |
402 | 59 | } | |
403 | 60 | ||
404 | - | let | |
405 | - | let | |
406 | - | if ((base58'2W' == | |
407 | - | then | |
408 | - | else if ((base58'2T' == | |
61 | + | let l = { | |
62 | + | let g = e | |
63 | + | if ((base58'2W' == g)) | |
64 | + | then d | |
65 | + | else if ((base58'2T' == g)) | |
409 | 66 | then 60000 | |
410 | 67 | else throw("Unknown chain") | |
411 | 68 | } | |
412 | 69 | ||
413 | - | let | |
414 | - | ||
415 | - | let | |
416 | - | ||
417 | - | let | |
418 | - | ||
419 | - | let | |
420 | - | ||
421 | - | let | |
422 | - | ||
423 | - | let | |
424 | - | ||
425 | - | let | |
426 | - | ||
427 | - | let | |
428 | - | ||
429 | - | let | |
430 | - | ||
431 | - | func | |
432 | - | ||
433 | - | ||
434 | - | let | |
435 | - | ||
436 | - | let | |
437 | - | ||
438 | - | let | |
439 | - | ||
440 | - | let | |
441 | - | ||
442 | - | let | |
443 | - | ||
444 | - | let | |
445 | - | ||
446 | - | func | |
447 | - | ||
448 | - | ||
449 | - | func | |
450 | - | ||
451 | - | ||
452 | - | func | |
453 | - | ||
454 | - | ||
455 | - | func | |
456 | - | ||
457 | - | ||
458 | - | let | |
459 | - | ||
460 | - | let | |
461 | - | ||
462 | - | let | |
463 | - | ||
464 | - | let | |
465 | - | ||
466 | - | let | |
467 | - | ||
468 | - | let | |
469 | - | ||
470 | - | let | |
471 | - | ||
472 | - | let | |
473 | - | ||
474 | - | let | |
475 | - | ||
476 | - | let | |
477 | - | ||
478 | - | let | |
479 | - | ||
480 | - | let | |
481 | - | ||
482 | - | let | |
483 | - | ||
484 | - | let | |
485 | - | ||
486 | - | let | |
487 | - | ||
488 | - | let | |
489 | - | ||
490 | - | let | |
491 | - | ||
492 | - | func | |
493 | - | ||
494 | - | ||
495 | - | func | |
496 | - | ||
497 | - | ||
498 | - | func | |
499 | - | ||
500 | - | ||
501 | - | func | |
502 | - | ||
503 | - | ||
504 | - | func | |
505 | - | ||
506 | - | ||
507 | - | func | |
508 | - | let | |
509 | - | if ($isInstanceOf( | |
70 | + | let m = "__" | |
71 | + | ||
72 | + | let n = 1000000 | |
73 | + | ||
74 | + | let o = 100000000 | |
75 | + | ||
76 | + | let p = 25 | |
77 | + | ||
78 | + | let q = 100 | |
79 | + | ||
80 | + | let r = 225 | |
81 | + | ||
82 | + | let s = 400 | |
83 | + | ||
84 | + | let t = 625 | |
85 | + | ||
86 | + | let u = [0, 1, 2, 3, 4, 5] | |
87 | + | ||
88 | + | func v (w,x) = valueOrErrorMessage(getString(w, x), makeString(["mandatory ", toString(w), ".", x, " is not defined"], "")) | |
89 | + | ||
90 | + | ||
91 | + | let y = 1 | |
92 | + | ||
93 | + | let z = 2 | |
94 | + | ||
95 | + | let A = 3 | |
96 | + | ||
97 | + | let B = 4 | |
98 | + | ||
99 | + | let C = 7 | |
100 | + | ||
101 | + | let D = 8 | |
102 | + | ||
103 | + | func E () = "%s__restConfig" | |
104 | + | ||
105 | + | ||
106 | + | func F () = "%s__restAddr" | |
107 | + | ||
108 | + | ||
109 | + | func G (H) = split_4C(v(H, E()), m) | |
110 | + | ||
111 | + | ||
112 | + | func I (J,K) = valueOrErrorMessage(addressFromString(J[K]), ("Rest cfg doesn't contain address at index " + toString(K))) | |
113 | + | ||
114 | + | ||
115 | + | let L = addressFromStringValue(valueOrElse(getString(this, F()), i)) | |
116 | + | ||
117 | + | let J = G(L) | |
118 | + | ||
119 | + | let M = I(J, y) | |
120 | + | ||
121 | + | let N = I(J, z) | |
122 | + | ||
123 | + | let O = I(J, A) | |
124 | + | ||
125 | + | let P = I(J, B) | |
126 | + | ||
127 | + | let Q = I(J, C) | |
128 | + | ||
129 | + | let R = I(J, D) | |
130 | + | ||
131 | + | let S = 0 | |
132 | + | ||
133 | + | let T = 1 | |
134 | + | ||
135 | + | let U = 2 | |
136 | + | ||
137 | + | let V = 3 | |
138 | + | ||
139 | + | let W = "wlg_assetId" | |
140 | + | ||
141 | + | let X = valueOrErrorMessage(getBinary(P, W), "WLGOLD is not issued yet") | |
142 | + | ||
143 | + | let Y = "acresAssetId" | |
144 | + | ||
145 | + | let Z = valueOrErrorMessage(getBinary(R, Y), "ACRES is not issued yet") | |
146 | + | ||
147 | + | let aa = 2 | |
148 | + | ||
149 | + | func ab (w) = ("finishBlockFor_" + w) | |
150 | + | ||
151 | + | ||
152 | + | func ac () = "resTypesProportions" | |
153 | + | ||
154 | + | ||
155 | + | func ad (ae) = ("resTypesByContinent_" + ae) | |
156 | + | ||
157 | + | ||
158 | + | func af (ag) = ("stakedLandsByOwner_" + ag) | |
159 | + | ||
160 | + | ||
161 | + | func ah (ag) = ("stakedPiecesByOwner_" + ag) | |
162 | + | ||
163 | + | ||
164 | + | func ai (aj) = { | |
165 | + | let g = aj | |
166 | + | if ($isInstanceOf(g, "String")) | |
510 | 167 | then { | |
511 | - | let | |
512 | - | | |
168 | + | let ak = g | |
169 | + | ak | |
513 | 170 | } | |
514 | 171 | else throw("fail to cast into String") | |
515 | 172 | } | |
516 | 173 | ||
517 | 174 | ||
518 | - | func | |
519 | - | let | |
520 | - | if ($isInstanceOf( | |
175 | + | func al (aj) = { | |
176 | + | let g = aj | |
177 | + | if ($isInstanceOf(g, "Int")) | |
521 | 178 | then { | |
522 | - | let | |
523 | - | | |
179 | + | let am = g | |
180 | + | am | |
524 | 181 | } | |
525 | 182 | else throw("fail to cast into Int") | |
526 | 183 | } | |
527 | 184 | ||
528 | 185 | ||
529 | - | func | |
530 | - | let | |
531 | - | if ($isInstanceOf( | |
186 | + | func an (aj) = { | |
187 | + | let g = aj | |
188 | + | if ($isInstanceOf(g, "List[Any]")) | |
532 | 189 | then { | |
533 | - | let | |
534 | - | | |
190 | + | let ao = g | |
191 | + | ao | |
535 | 192 | } | |
536 | 193 | else throw("fail to cast into List[Any]") | |
537 | 194 | } | |
538 | 195 | ||
539 | 196 | ||
540 | - | func | |
541 | - | let | |
542 | - | if ($isInstanceOf( | |
197 | + | func ap (aj) = { | |
198 | + | let g = aj | |
199 | + | if ($isInstanceOf(g, "Boolean")) | |
543 | 200 | then { | |
544 | - | let | |
545 | - | | |
201 | + | let ak = g | |
202 | + | ak | |
546 | 203 | } | |
547 | 204 | else throw("fail to cast into Boolean") | |
548 | 205 | } | |
549 | 206 | ||
550 | 207 | ||
551 | - | func | |
552 | - | let | |
553 | - | if (("S" == | |
554 | - | then | |
555 | - | else if (("M" == | |
556 | - | then | |
557 | - | else if (("L" == | |
558 | - | then | |
559 | - | else if (("XL" == | |
560 | - | then | |
561 | - | else if (("XXL" == | |
562 | - | then | |
208 | + | func aq (ar) = { | |
209 | + | let g = ar | |
210 | + | if (("S" == g)) | |
211 | + | then p | |
212 | + | else if (("M" == g)) | |
213 | + | then q | |
214 | + | else if (("L" == g)) | |
215 | + | then r | |
216 | + | else if (("XL" == g)) | |
217 | + | then s | |
218 | + | else if (("XXL" == g)) | |
219 | + | then t | |
563 | 220 | else throw("Unknown land size") | |
564 | 221 | } | |
565 | 222 | ||
566 | 223 | ||
567 | - | func | |
568 | - | ||
569 | - | ||
570 | - | func | |
571 | - | ||
572 | - | ||
573 | - | func | |
574 | - | ||
575 | - | ||
576 | - | func | |
577 | - | let | |
578 | - | let | |
579 | - | let | |
580 | - | (((toString(( | |
581 | - | } | |
582 | - | ||
583 | - | ||
584 | - | func | |
224 | + | func as (ak) = isDefined(parseInt(ak)) | |
225 | + | ||
226 | + | ||
227 | + | func at () = "contractsBlocked" | |
228 | + | ||
229 | + | ||
230 | + | func au (av) = ("lastTxIdByUser_" + av) | |
231 | + | ||
232 | + | ||
233 | + | func aw (ax,ay) = { | |
234 | + | let az = pow(10, 0, ay, 0, 0, DOWN) | |
235 | + | let aA = toString((ax % az)) | |
236 | + | let aB = drop(toString(az), (1 + size(aA))) | |
237 | + | (((toString((ax / az)) + ".") + aB) + aA) | |
238 | + | } | |
239 | + | ||
240 | + | ||
241 | + | func aC (aD,aE,aF) = if ((0 >= aD)) | |
585 | 242 | then throw("maxValue should be > 0") | |
586 | 243 | else { | |
587 | - | let dI = sha256((dG + dH)) | |
588 | - | (toInt(dI) % dF) | |
589 | - | } | |
590 | - | ||
591 | - | ||
592 | - | let dJ = { | |
593 | - | let cm = ck | |
594 | - | if ((base58'2W' == cm)) | |
244 | + | let aG = sha256((aE + aF)) | |
245 | + | (toInt(aG) % aD) | |
246 | + | } | |
247 | + | ||
248 | + | ||
249 | + | func aH () = min([lastBlock.timestamp, 1727740799000]) | |
250 | + | ||
251 | + | ||
252 | + | let aI = "LAND" | |
253 | + | ||
254 | + | let aJ = "DUCK" | |
255 | + | ||
256 | + | let aK = "ROBO" | |
257 | + | ||
258 | + | let aL = "PRESALE" | |
259 | + | ||
260 | + | let aM = 6 | |
261 | + | ||
262 | + | let aN = 25 | |
263 | + | ||
264 | + | let aO = 3456000 | |
265 | + | ||
266 | + | let aP = 10000000000 | |
267 | + | ||
268 | + | let aQ = "Africa_F_Africa" | |
269 | + | ||
270 | + | let aR = 39637 | |
271 | + | ||
272 | + | let aS = 10 | |
273 | + | ||
274 | + | let aT = 50000 | |
275 | + | ||
276 | + | let aU = 10 | |
277 | + | ||
278 | + | let aV = 100000000 | |
279 | + | ||
280 | + | let aW = 0 | |
281 | + | ||
282 | + | let aX = 200000000 | |
283 | + | ||
284 | + | let aY = 0 | |
285 | + | ||
286 | + | let aZ = 200000000 | |
287 | + | ||
288 | + | let ba = ["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", "Boom-Dog L1", "Boom-Dog L2", "Boom-Dog L3"] | |
289 | + | ||
290 | + | let bb = ["Americas", "Europe", "Asia", "Africa", "Oceania"] | |
291 | + | ||
292 | + | let bc = 10000000 | |
293 | + | ||
294 | + | let bd = ["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_", "23_23_5_20_23_6_35_2_100_0,0,0,0,0,0,0_", "23_23_5_20_23_6_70_2_150_0,0,0,0,0,0,0_", "23_23_5_20_23_6_105_2_200_0,0,0,0,0,0,0_"] | |
295 | + | ||
296 | + | let be = 6 | |
297 | + | ||
298 | + | let bf = 8 | |
299 | + | ||
300 | + | let bg = 9 | |
301 | + | ||
302 | + | let bh = 10 | |
303 | + | ||
304 | + | let bi = 10 | |
305 | + | ||
306 | + | let bj = 0 | |
307 | + | ||
308 | + | let bk = 1 | |
309 | + | ||
310 | + | let bl = 2 | |
311 | + | ||
312 | + | let bm = 3 | |
313 | + | ||
314 | + | let bn = 4 | |
315 | + | ||
316 | + | let bo = 0 | |
317 | + | ||
318 | + | let bp = 1 | |
319 | + | ||
320 | + | let bq = 2 | |
321 | + | ||
322 | + | let br = 3 | |
323 | + | ||
324 | + | let bs = 0 | |
325 | + | ||
326 | + | let bt = 1 | |
327 | + | ||
328 | + | let bu = 2 | |
329 | + | ||
330 | + | let bv = 3 | |
331 | + | ||
332 | + | let bw = 0 | |
333 | + | ||
334 | + | let bx = 1 | |
335 | + | ||
336 | + | let by = 2 | |
337 | + | ||
338 | + | func bz (bA) = ("no_" + bA) | |
339 | + | ||
340 | + | ||
341 | + | func bB (bA) = ("lcna_" + bA) | |
342 | + | ||
343 | + | ||
344 | + | func bC (bA) = ("st_" + bA) | |
345 | + | ||
346 | + | ||
347 | + | func bD (bE,bA) = makeString(["las", bE, bA], "_") | |
348 | + | ||
349 | + | ||
350 | + | func bF (bG,bA,ag) = ((((("sttao_" + bG) + "_") + bA) + "_") + ag) | |
351 | + | ||
352 | + | ||
353 | + | func bH (bI) = ("wh_" + bI) | |
354 | + | ||
355 | + | ||
356 | + | func bJ (bA) = ("infraLevel_" + bA) | |
357 | + | ||
358 | + | ||
359 | + | func bK (bA) = ("duckCustomNameByAssetId_" + bA) | |
360 | + | ||
361 | + | ||
362 | + | func bL (av) = ("accountCustomNameByAddr_" + av) | |
363 | + | ||
364 | + | ||
365 | + | func bM (av) = ("accRefBy_" + av) | |
366 | + | ||
367 | + | ||
368 | + | func bN (bO) = ("onboardArtActivatedOnDuck_" + bO) | |
369 | + | ||
370 | + | ||
371 | + | func bP (av) = ("onboardArtActivatedDuckBy_" + av) | |
372 | + | ||
373 | + | ||
374 | + | func bQ (av) = ("accReferrals_" + av) | |
375 | + | ||
376 | + | ||
377 | + | func bR (bA) = ("duckOwner_" + bA) | |
378 | + | ||
379 | + | ||
380 | + | func bS (ag) = ("stakedDuckByOwner_" + ag) | |
381 | + | ||
382 | + | ||
383 | + | func bT (bO) = ("backPack_" + bO) | |
384 | + | ||
385 | + | ||
386 | + | func bU (bO) = ("duckLocation_" + bO) | |
387 | + | ||
388 | + | ||
389 | + | func bV (bW) = ("%s%s__userGwlReleaseTime__" + bW) | |
390 | + | ||
391 | + | ||
392 | + | func bX () = "emergencyWarehouseProducts" | |
393 | + | ||
394 | + | ||
395 | + | let bY = "deliveryFund" | |
396 | + | ||
397 | + | let bZ = "%s__lastTourId" | |
398 | + | ||
399 | + | func ca (cb) = ("%s%d__tourStaticData__" + toString(cb)) | |
400 | + | ||
401 | + | ||
402 | + | func cc (cb) = ("%s%d__tourDynamicData__" + toString(cb)) | |
403 | + | ||
404 | + | ||
405 | + | func cd (cb,bO) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(cb), bO], "__") | |
406 | + | ||
407 | + | ||
408 | + | let ce = 0 | |
409 | + | ||
410 | + | let cf = 1 | |
411 | + | ||
412 | + | let cg = 6 | |
413 | + | ||
414 | + | let ch = 1 | |
415 | + | ||
416 | + | func ci (cj,cb) = { | |
417 | + | let ck = split(valueOrErrorMessage(getString(cj, ca(cb)), (("Error reading tournament " + toString(cb)) + " data")), "__") | |
418 | + | let cl = split_4C(valueOrErrorMessage(getString(cj, cc(cb)), (("Error reading tournament " + toString(cb)) + " data")), "__") | |
419 | + | [ck, cl] | |
420 | + | } | |
421 | + | ||
422 | + | ||
423 | + | func cm (cj,cn) = { | |
424 | + | let co = valueOrElse(getInteger(cj, bZ), 0) | |
425 | + | let cp = split(cn, "_") | |
426 | + | let cq = lastBlock.timestamp | |
427 | + | let cr = ci(cj, co) | |
428 | + | let ck = cr[ce] | |
429 | + | let cl = cr[cf] | |
430 | + | if (if (if ((cp[bx] == "T")) | |
431 | + | then (parseIntValue(cp[bw]) == co) | |
432 | + | else false) | |
433 | + | then (cl[ch] == "INPROGRESS") | |
434 | + | else false) | |
435 | + | then (parseIntValue(ck[cg]) > cq) | |
436 | + | else false | |
437 | + | } | |
438 | + | ||
439 | + | ||
440 | + | func cs (cj,cn) = { | |
441 | + | let co = valueOrElse(getInteger(cj, bZ), 0) | |
442 | + | let cp = split(cn, "_") | |
443 | + | let cq = lastBlock.timestamp | |
444 | + | let cr = ci(cj, co) | |
445 | + | let ck = cr[ce] | |
446 | + | let cl = cr[cf] | |
447 | + | let ct = cp[bx] | |
448 | + | if (if (if ((cp[bx] == "T")) | |
449 | + | then (parseIntValue(cp[bw]) == co) | |
450 | + | else false) | |
451 | + | then (cl[ch] == "INPROGRESS") | |
452 | + | else false) | |
453 | + | then (parseIntValue(ck[cg]) > cq) | |
454 | + | else false | |
455 | + | } | |
456 | + | ||
457 | + | ||
458 | + | func cu (cv) = (parseIntValue(cv[be]) * bc) | |
459 | + | ||
460 | + | ||
461 | + | func cw (cx,cy,cz) = throw(((((("Cheat attempt: oldLoc=" + cx) + ", newLoc=") + cy) + ", case=") + toString(cz))) | |
462 | + | ||
463 | + | ||
464 | + | let cA = 100000000 | |
465 | + | ||
466 | + | let cB = 3200 | |
467 | + | ||
468 | + | let cC = 4000 | |
469 | + | ||
470 | + | let cD = 3 | |
471 | + | ||
472 | + | let cE = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"] | |
473 | + | ||
474 | + | let cF = 0 | |
475 | + | ||
476 | + | let cG = 1 | |
477 | + | ||
478 | + | let cH = 2 | |
479 | + | ||
480 | + | let cI = 3 | |
481 | + | ||
482 | + | let cJ = 4 | |
483 | + | ||
484 | + | let cK = 0 | |
485 | + | ||
486 | + | let cL = 6 | |
487 | + | ||
488 | + | let cM = 2 | |
489 | + | ||
490 | + | let cN = 2 | |
491 | + | ||
492 | + | let cO = 30 | |
493 | + | ||
494 | + | func cP (bO) = ("duckHealth_" + bO) | |
495 | + | ||
496 | + | ||
497 | + | func cQ (bO) = ("duckChars_" + bO) | |
498 | + | ||
499 | + | ||
500 | + | func cR (bO) = ("duckXP_" + bO) | |
501 | + | ||
502 | + | ||
503 | + | func cS (bO) = ("duckLevel_" + bO) | |
504 | + | ||
505 | + | ||
506 | + | func cT (bO) = ("duckFreePoints_" + bO) | |
507 | + | ||
508 | + | ||
509 | + | func cU (bO) = ("duckEquipment_" + bO) | |
510 | + | ||
511 | + | ||
512 | + | func cV (av) = ("userXP_" + av) | |
513 | + | ||
514 | + | ||
515 | + | func cW (av) = ("userLevel_" + av) | |
516 | + | ||
517 | + | ||
518 | + | func cX (av) = ("userFreePoints_" + av) | |
519 | + | ||
520 | + | ||
521 | + | func cY (bO) = ("savedHealth_" + bO) | |
522 | + | ||
523 | + | ||
524 | + | func cZ (bO) = ("savedLocation_" + bO) | |
525 | + | ||
526 | + | ||
527 | + | func da (bO) = ("duckBuffs_" + bO) | |
528 | + | ||
529 | + | ||
530 | + | func db (bO) = ("lastRobberyTime_" + bO) | |
531 | + | ||
532 | + | ||
533 | + | func dc (bO) = ("totalRobberyCountByDuck_" + bO) | |
534 | + | ||
535 | + | ||
536 | + | func dd (av) = ("userRobberyCount_" + av) | |
537 | + | ||
538 | + | ||
539 | + | func de (av) = ("userLastRobberyDay_" + av) | |
540 | + | ||
541 | + | ||
542 | + | func df (bO) = ("totalDeliveryCountByDuck_" + bO) | |
543 | + | ||
544 | + | ||
545 | + | func dg (av) = ("userDeliveryCount_" + av) | |
546 | + | ||
547 | + | ||
548 | + | func dh (av) = ("userLastDeliveryDay_" + av) | |
549 | + | ||
550 | + | ||
551 | + | let di = 10000 | |
552 | + | ||
553 | + | let dj = 10000 | |
554 | + | ||
555 | + | let dk = 2000 | |
556 | + | ||
557 | + | let dl = 10000 | |
558 | + | ||
559 | + | let dm = 2000 | |
560 | + | ||
561 | + | let dn = 100000 | |
562 | + | ||
563 | + | let do = 1000000 | |
564 | + | ||
565 | + | let dp = 5000000 | |
566 | + | ||
567 | + | let dq = 10000 | |
568 | + | ||
569 | + | let dr = 1000000 | |
570 | + | ||
571 | + | let ds = 1000000 | |
572 | + | ||
573 | + | let dt = 10000 | |
574 | + | ||
575 | + | func du (dv) = fraction(cB, pow(dv, 4, cC, 4, 4, DOWN), cA) | |
576 | + | ||
577 | + | ||
578 | + | func dw (dx) = (100 + dx) | |
579 | + | ||
580 | + | ||
581 | + | func dy (dz,dA) = { | |
582 | + | let dB = du(dA) | |
583 | + | [dB, (cD * (dB - dz))] | |
584 | + | } | |
585 | + | ||
586 | + | ||
587 | + | func dC (M,bO,dD,dE) = { | |
588 | + | let dF = split(valueOrElse(getString(M, cQ(bO)), "0_0_0_0_0"), "_") | |
589 | + | let dG = valueOrElse(getInteger(M, cS(bO)), 0) | |
590 | + | let dH = valueOrElse(getInteger(M, cP(bO)), dw(dG)) | |
591 | + | let dI = split(valueOrElse(getString(M, da(bO)), "0_0_0_0_0"), "_") | |
592 | + | ([parseIntValue(dF[cF]), parseIntValue(dF[cG]), parseIntValue(dF[cH]), parseIntValue(dF[cI]), parseIntValue(dF[cJ]), dG, dH] ++ (if (dE) | |
593 | + | then [dD, dD, dD, dD, dD] | |
594 | + | else [parseIntValue(dI[cF]), parseIntValue(dI[cG]), parseIntValue(dI[cH]), parseIntValue(dI[cI]), parseIntValue(dI[cJ])])) | |
595 | + | } | |
596 | + | ||
597 | + | ||
598 | + | let dJ = 86400000 | |
599 | + | ||
600 | + | func dK (av) = ("lastArbTimeUser_" + av) | |
601 | + | ||
602 | + | ||
603 | + | func dL (av) = ("acresStakedAmountByUser_" + av) | |
604 | + | ||
605 | + | ||
606 | + | let dM = { | |
607 | + | let g = e | |
608 | + | if ((base58'2W' == g)) | |
595 | 609 | then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv") | |
596 | - | else if ((base58'2T' == | |
610 | + | else if ((base58'2T' == g)) | |
597 | 611 | then this | |
598 | 612 | else throw("Unknown chain") | |
599 | 613 | } | |
600 | 614 | ||
601 | - | let | |
602 | - | let | |
603 | - | if ((base58'2W' == | |
615 | + | let dN = { | |
616 | + | let g = e | |
617 | + | if ((base58'2W' == g)) | |
604 | 618 | then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb") | |
605 | - | else if ((base58'2T' == | |
619 | + | else if ((base58'2T' == g)) | |
606 | 620 | then this | |
607 | 621 | else throw("Unknown chain") | |
608 | 622 | } | |
609 | 623 | ||
610 | - | let | |
611 | - | ||
612 | - | let | |
613 | - | ||
614 | - | let | |
615 | - | ||
616 | - | let | |
617 | - | ||
618 | - | let | |
619 | - | let | |
620 | - | if ((base58'2W' == | |
624 | + | let dO = 300000 | |
625 | + | ||
626 | + | let dP = 5000000 | |
627 | + | ||
628 | + | let dQ = 50 | |
629 | + | ||
630 | + | let dR = 10000000 | |
631 | + | ||
632 | + | let dS = { | |
633 | + | let g = e | |
634 | + | if ((base58'2W' == g)) | |
621 | 635 | then 252289527462 | |
622 | - | else if ((base58'2T' == | |
636 | + | else if ((base58'2T' == g)) | |
623 | 637 | then 2522895274 | |
624 | 638 | else throw("Unknown chain") | |
625 | 639 | } | |
626 | 640 | ||
627 | - | let | |
628 | - | let | |
629 | - | if ((base58'2W' == | |
641 | + | let dT = { | |
642 | + | let g = e | |
643 | + | if ((base58'2W' == g)) | |
630 | 644 | then 250000000 | |
631 | - | else if ((base58'2T' == | |
645 | + | else if ((base58'2T' == g)) | |
632 | 646 | then 250000000 | |
633 | 647 | else throw("Unknown chain") | |
634 | 648 | } | |
635 | 649 | ||
636 | - | let dR = 100000 | |
637 | - | ||
638 | - | let dS = 2500000000 | |
639 | - | ||
640 | - | let dT = toBigInt(5) | |
641 | - | ||
642 | - | let dU = toBigInt(20) | |
643 | - | ||
644 | - | let dV = toBigInt((20 * 20)) | |
645 | - | ||
646 | - | let dW = toBigInt(((20 * 20) * 20)) | |
647 | - | ||
648 | - | let dX = toBigInt((((20 * 20) * 20) * 20)) | |
649 | - | ||
650 | - | let dY = toBigInt(((((20 * 20) * 20) * 20) * 20)) | |
651 | - | ||
652 | - | let dZ = 500 | |
653 | - | ||
654 | - | func ea () = "nextLandNum" | |
655 | - | ||
656 | - | ||
657 | - | func eb (ec) = ("lcn_" + ec) | |
658 | - | ||
659 | - | ||
660 | - | func ed (ee) = ("la_" + ee) | |
661 | - | ||
662 | - | ||
663 | - | func ef (bg,bn) = ((("ilao_" + bg) + "_") + bn) | |
664 | - | ||
665 | - | ||
666 | - | func eg (ee) = ("lo_" + ee) | |
667 | - | ||
668 | - | ||
669 | - | func eh (ec) = ("duckByCustomName_" + ec) | |
670 | - | ||
671 | - | ||
672 | - | func ei (ec) = ("accountByCustomName_" + ec) | |
673 | - | ||
674 | - | ||
675 | - | func ej () = "oldiesList" | |
676 | - | ||
677 | - | ||
678 | - | func ek () = "nextRoboDuck" | |
679 | - | ||
680 | - | ||
681 | - | let el = 0 | |
682 | - | ||
683 | - | let em = 1 | |
684 | - | ||
685 | - | let en = 2 | |
650 | + | let dU = 100000 | |
651 | + | ||
652 | + | let dV = 2500000000 | |
653 | + | ||
654 | + | let dW = toBigInt(5) | |
655 | + | ||
656 | + | let dX = toBigInt(20) | |
657 | + | ||
658 | + | let dY = toBigInt((20 * 20)) | |
659 | + | ||
660 | + | let dZ = toBigInt(((20 * 20) * 20)) | |
661 | + | ||
662 | + | let ea = toBigInt((((20 * 20) * 20) * 20)) | |
663 | + | ||
664 | + | let eb = toBigInt(((((20 * 20) * 20) * 20) * 20)) | |
665 | + | ||
666 | + | let ec = 500 | |
667 | + | ||
668 | + | func ed () = "nextLandNum" | |
669 | + | ||
670 | + | ||
671 | + | func ee (ef) = ("lcn_" + ef) | |
672 | + | ||
673 | + | ||
674 | + | func eg (eh) = ("la_" + eh) | |
675 | + | ||
676 | + | ||
677 | + | func ei (bA,ag) = ((("ilao_" + bA) + "_") + ag) | |
678 | + | ||
679 | + | ||
680 | + | func ej (eh) = ("lo_" + eh) | |
681 | + | ||
682 | + | ||
683 | + | func ek (ef) = ("duckByCustomName_" + ef) | |
684 | + | ||
685 | + | ||
686 | + | func el (ef) = ("accountByCustomName_" + ef) | |
687 | + | ||
688 | + | ||
689 | + | func em () = "oldiesList" | |
690 | + | ||
691 | + | ||
692 | + | func en () = "nextRoboDuck" | |
693 | + | ||
686 | 694 | ||
687 | 695 | let eo = 0 | |
688 | 696 | ||
689 | - | let ep = 5 | |
690 | - | ||
691 | - | let eq = 6 | |
692 | - | ||
693 | - | let er = 7 | |
694 | - | ||
695 | - | let es = 0 | |
696 | - | ||
697 | - | let et = 1 | |
698 | - | ||
699 | - | let eu = 0 | |
700 | - | ||
701 | - | let ev = 2 | |
702 | - | ||
703 | - | let ew = 3 | |
704 | - | ||
705 | - | func ex (ee,du) = ((ap + ee) + du) | |
706 | - | ||
707 | - | ||
708 | - | func ey (ez,eA) = { | |
709 | - | let eB = if ((ez >= 0)) | |
710 | - | then (((ez + eA) - 1) / eA) | |
711 | - | else -((((-(ez) + eA) - 1) / eA)) | |
712 | - | (eB * ct) | |
713 | - | } | |
714 | - | ||
715 | - | ||
716 | - | func eC (eD,eE) = { | |
717 | - | let eF = (((((eE[0] + eE[1]) + eE[2]) + eE[3]) + eE[4]) + eE[5]) | |
718 | - | if ((0 >= eF)) | |
697 | + | let ep = 1 | |
698 | + | ||
699 | + | let eq = 2 | |
700 | + | ||
701 | + | let er = 0 | |
702 | + | ||
703 | + | let es = 5 | |
704 | + | ||
705 | + | let et = 6 | |
706 | + | ||
707 | + | let eu = 7 | |
708 | + | ||
709 | + | let ev = 0 | |
710 | + | ||
711 | + | let ew = 1 | |
712 | + | ||
713 | + | let ex = 0 | |
714 | + | ||
715 | + | let ey = 2 | |
716 | + | ||
717 | + | let ez = 3 | |
718 | + | ||
719 | + | func eA (eh,ar) = ((aI + eh) + ar) | |
720 | + | ||
721 | + | ||
722 | + | func eB (eC,eD) = { | |
723 | + | let eE = if ((eC >= 0)) | |
724 | + | then (((eC + eD) - 1) / eD) | |
725 | + | else -((((-(eC) + eD) - 1) / eD)) | |
726 | + | (eE * o) | |
727 | + | } | |
728 | + | ||
729 | + | ||
730 | + | func eF (eG,eH) = { | |
731 | + | let eI = (((((eH[0] + eH[1]) + eH[2]) + eH[3]) + eH[4]) + eH[5]) | |
732 | + | if ((0 >= eI)) | |
719 | 733 | then throw("Zero weights sum") | |
720 | 734 | else { | |
721 | - | let | |
722 | - | func | |
723 | - | ||
724 | - | let | |
725 | - | let | |
726 | - | let | |
727 | - | func | |
728 | - | then | |
729 | - | else | |
730 | - | ||
731 | - | func | |
732 | - | then | |
735 | + | let eJ = fraction(eG, n, eI) | |
736 | + | func eK (eL,eM) = (eL :+ fraction(eM, eJ, n)) | |
737 | + | ||
738 | + | let eN = eH | |
739 | + | let eO = size(eN) | |
740 | + | let eP = nil | |
741 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
742 | + | then eR | |
743 | + | else eK(eR, eN[eS]) | |
744 | + | ||
745 | + | func eT (eR,eS) = if ((eS >= eO)) | |
746 | + | then eR | |
733 | 747 | else throw("List size exceeds 6") | |
734 | 748 | ||
735 | - | eQ( | |
736 | - | } | |
737 | - | } | |
738 | - | ||
739 | - | ||
740 | - | func | |
741 | - | let | |
742 | - | if ((size( | |
749 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
750 | + | } | |
751 | + | } | |
752 | + | ||
753 | + | ||
754 | + | func eU (eG) = { | |
755 | + | let eV = split(value(getString(ac())), "_") | |
756 | + | if ((size(eV) != aM)) | |
743 | 757 | then throw("Wrong proportions data") | |
744 | 758 | else { | |
745 | - | let | |
746 | - | | |
747 | - | } | |
748 | - | } | |
749 | - | ||
750 | - | ||
751 | - | func | |
752 | - | let | |
753 | - | func | |
754 | - | let | |
755 | - | if ((0 > | |
756 | - | then throw(((((("Not enough material idx=" + toString( | |
757 | - | else ( | |
758 | - | } | |
759 | - | ||
760 | - | if ( | |
759 | + | let eW = [parseIntValue(eV[0]), parseIntValue(eV[1]), parseIntValue(eV[2]), parseIntValue(eV[3]), parseIntValue(eV[4]), parseIntValue(eV[5])] | |
760 | + | eF(eG, eW) | |
761 | + | } | |
762 | + | } | |
763 | + | ||
764 | + | ||
765 | + | func eX (eY,eZ,fa) = { | |
766 | + | let fb = eU(fa) | |
767 | + | func fc (eL,K) = { | |
768 | + | let fd = (parseIntValue(eZ[K]) - fb[K]) | |
769 | + | if ((0 > fd)) | |
770 | + | then throw(((((("Not enough material idx=" + toString(K)) + ", you have ") + eZ[K]) + ", but need ") + toString(fb[K]))) | |
771 | + | else (eL :+ toString(fd)) | |
772 | + | } | |
773 | + | ||
774 | + | if (eY) | |
761 | 775 | then { | |
762 | - | let | |
763 | - | let | |
764 | - | let | |
765 | - | func | |
766 | - | then | |
767 | - | else | |
768 | - | ||
769 | - | func | |
770 | - | then | |
776 | + | let eN = u | |
777 | + | let eO = size(eN) | |
778 | + | let eP = nil | |
779 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
780 | + | then eR | |
781 | + | else fc(eR, eN[eS]) | |
782 | + | ||
783 | + | func eT (eR,eS) = if ((eS >= eO)) | |
784 | + | then eR | |
771 | 785 | else throw("List size exceeds 6") | |
772 | 786 | ||
773 | - | eQ( | |
774 | - | } | |
775 | - | else | |
776 | - | } | |
777 | - | ||
778 | - | ||
779 | - | func | |
780 | - | then $Tuple3( | |
787 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
788 | + | } | |
789 | + | else eZ | |
790 | + | } | |
791 | + | ||
792 | + | ||
793 | + | func fe (ff,fg) = if ((fg == "")) | |
794 | + | then $Tuple3(ff, false, false) | |
781 | 795 | else { | |
782 | - | func | |
783 | - | let | |
784 | - | if ((size( | |
796 | + | func fh (eL,fi) = { | |
797 | + | let fj = split(fi, ",") | |
798 | + | if ((size(fj) != 2)) | |
785 | 799 | then throw("Incorrect format, should be index,amount") | |
786 | 800 | else { | |
787 | - | let | |
788 | - | if (if ((0 > | |
801 | + | let K = parseIntValue(fj[0]) | |
802 | + | if (if ((0 > K)) | |
789 | 803 | then true | |
790 | - | else ( | |
804 | + | else (K >= size(bd))) | |
791 | 805 | then throw("Unknown product idx") | |
792 | 806 | else { | |
793 | - | let | |
794 | - | let | |
795 | - | if ((size( | |
796 | - | then throw((("You don't have " + | |
807 | + | let fk = parseIntValue(fj[1]) | |
808 | + | let fl = split(eL._1, (fj[0] + ":")) | |
809 | + | if ((size(fl) != 2)) | |
810 | + | then throw((("You don't have " + ba[K]) + " equipped")) | |
797 | 811 | else { | |
798 | - | let | |
799 | - | let | |
812 | + | let fm = fl[1] | |
813 | + | let fn = if (as(take(drop(fm, 1), 1))) | |
800 | 814 | then 2 | |
801 | 815 | else 1 | |
802 | - | let | |
803 | - | let | |
804 | - | let | |
805 | - | then ( | |
806 | - | else throw(((((("You equipped " + toString( | |
807 | - | $Tuple3((((( | |
816 | + | let fo = parseIntValue(take(fm, fn)) | |
817 | + | let fp = drop(fm, fn) | |
818 | + | let fq = if ((fo >= fk)) | |
819 | + | then (fo - fk) | |
820 | + | else throw(((((("You equipped " + toString(fo)) + " of ") + ba[K]) + ", but tried to use ") + toString(fk))) | |
821 | + | $Tuple3(((((fl[0] + fj[0]) + ":") + toString(fq)) + fp), if (eL._2) | |
808 | 822 | then true | |
809 | - | else if (if (( | |
810 | - | then (8 >= | |
823 | + | else if (if ((K >= 6)) | |
824 | + | then (8 >= K) | |
811 | 825 | else false) | |
812 | - | then ( | |
813 | - | else false, if ( | |
826 | + | then (fq == 0) | |
827 | + | else false, if (eL._3) | |
814 | 828 | then true | |
815 | - | else if (if (( | |
816 | - | then (5 >= | |
829 | + | else if (if ((K >= 3)) | |
830 | + | then (5 >= K) | |
817 | 831 | else false) | |
818 | - | then ( | |
832 | + | then (fk > 0) | |
819 | 833 | else false) | |
820 | 834 | } | |
821 | 835 | } | |
822 | 836 | } | |
823 | 837 | } | |
824 | 838 | ||
825 | - | let | |
826 | - | let | |
827 | - | let | |
828 | - | func | |
829 | - | then | |
830 | - | else | |
831 | - | ||
832 | - | func | |
833 | - | then | |
839 | + | let eN = split(fg, "_") | |
840 | + | let eO = size(eN) | |
841 | + | let eP = $Tuple3(ff, false, false) | |
842 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
843 | + | then eR | |
844 | + | else fh(eR, eN[eS]) | |
845 | + | ||
846 | + | func eT (eR,eS) = if ((eS >= eO)) | |
847 | + | then eR | |
834 | 848 | else throw("List size exceeds 10") | |
835 | 849 | ||
836 | - | eQ( | |
837 | - | } | |
838 | - | ||
839 | - | ||
840 | - | func | |
841 | - | let | |
850 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
851 | + | } | |
852 | + | ||
853 | + | ||
854 | + | func fr (fs) = { | |
855 | + | let ft = if ((fs == "")) | |
842 | 856 | then nil | |
843 | - | else split_4C( | |
844 | - | func | |
845 | - | let | |
846 | - | let | |
847 | - | then parseIntValue( | |
857 | + | else split_4C(fs, "_") | |
858 | + | func fu (eL,cv) = { | |
859 | + | let fv = (size(eL) / 8) | |
860 | + | let fo = if ((size(ft) > fv)) | |
861 | + | then parseIntValue(ft[fv]) | |
848 | 862 | else 0 | |
849 | - | ( | |
850 | - | } | |
851 | - | ||
852 | - | let | |
853 | - | let | |
854 | - | let | |
855 | - | func | |
856 | - | then | |
857 | - | else | |
858 | - | ||
859 | - | func | |
860 | - | then | |
863 | + | (eL + toBytes(fo)) | |
864 | + | } | |
865 | + | ||
866 | + | let eN = bd | |
867 | + | let eO = size(eN) | |
868 | + | let eP = base58'' | |
869 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
870 | + | then eR | |
871 | + | else fu(eR, eN[eS]) | |
872 | + | ||
873 | + | func eT (eR,eS) = if ((eS >= eO)) | |
874 | + | then eR | |
861 | 875 | else throw("List size exceeds 50") | |
862 | 876 | ||
863 | - | eQ( | |
864 | - | } | |
865 | - | ||
866 | - | ||
867 | - | func | |
868 | - | func | |
869 | - | let | |
870 | - | let | |
871 | - | ( | |
877 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 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) | |
878 | + | } | |
879 | + | ||
880 | + | ||
881 | + | func fw (fx) = { | |
882 | + | func fy (eL,cv) = { | |
883 | + | let fv = size(eL) | |
884 | + | let fz = take(drop(fx, (8 * fv)), 8) | |
885 | + | (eL :+ toString(toInt(fz))) | |
872 | 886 | } | |
873 | 887 | ||
874 | 888 | makeString_2C({ | |
875 | - | let | |
876 | - | let | |
877 | - | let | |
878 | - | func | |
879 | - | then | |
880 | - | else | |
881 | - | ||
882 | - | func | |
883 | - | then | |
889 | + | let eN = bd | |
890 | + | let eO = size(eN) | |
891 | + | let eP = nil | |
892 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
893 | + | then eR | |
894 | + | else fy(eR, eN[eS]) | |
895 | + | ||
896 | + | func eT (eR,eS) = if ((eS >= eO)) | |
897 | + | then eR | |
884 | 898 | else throw("List size exceeds 50") | |
885 | 899 | ||
886 | - | eQ( | |
900 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 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) | |
887 | 901 | }, "_") | |
888 | 902 | } | |
889 | 903 | ||
890 | 904 | ||
891 | - | func | |
892 | - | func | |
893 | - | let | |
894 | - | then | |
905 | + | func fA (fB,fC) = { | |
906 | + | func fD (eL,fv) = { | |
907 | + | let fE = if ((size(fB) > (7 + fv))) | |
908 | + | then fB[(7 + fv)] | |
895 | 909 | else 0 | |
896 | - | if ((parseIntValue( | |
897 | - | then throw(("Requirement not satisfied: " + | |
910 | + | if ((parseIntValue(fC[fv]) > (fB[fv] + fE))) | |
911 | + | then throw(("Requirement not satisfied: " + cE[fv])) | |
898 | 912 | else true | |
899 | 913 | } | |
900 | 914 | ||
901 | - | let | |
902 | - | let | |
903 | - | let | |
904 | - | func | |
905 | - | then | |
906 | - | else | |
907 | - | ||
908 | - | func | |
909 | - | then | |
915 | + | let eN = [0, 1, 2, 3, 4, 5, 6] | |
916 | + | let eO = size(eN) | |
917 | + | let eP = false | |
918 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
919 | + | then eR | |
920 | + | else fD(eR, eN[eS]) | |
921 | + | ||
922 | + | func eT (eR,eS) = if ((eS >= eO)) | |
923 | + | then eR | |
910 | 924 | else throw("List size exceeds 7") | |
911 | 925 | ||
912 | - | eQ( | |
913 | - | } | |
914 | - | ||
915 | - | ||
916 | - | func | |
917 | - | let | |
918 | - | if ((size( | |
926 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6), 7) | |
927 | + | } | |
928 | + | ||
929 | + | ||
930 | + | func fF (fG,ft,fH,fI,fJ,fK,fB) = { | |
931 | + | let fj = split(fG, ":") | |
932 | + | if ((size(fj) != 2)) | |
919 | 933 | then throw("Incorrect format, should be index:amount") | |
920 | - | else if (if (!( | |
921 | - | then (size( | |
934 | + | else if (if (!(fH)) | |
935 | + | then (size(fj[0]) != 2) | |
922 | 936 | else false) | |
923 | 937 | then throw("Product idx should be 2 digits, zero padded") | |
924 | 938 | else { | |
925 | - | let | |
926 | - | let | |
927 | - | if (if ((0 > | |
939 | + | let fL = parseIntValue(fj[0]) | |
940 | + | let fM = parseIntValue(fj[1]) | |
941 | + | if (if ((0 > fL)) | |
928 | 942 | then true | |
929 | - | else ( | |
943 | + | else (fL >= size(bd))) | |
930 | 944 | then throw("Unknown product idx") | |
931 | - | else if ((0 > | |
945 | + | else if ((0 > fM)) | |
932 | 946 | then throw("Count can't be negative") | |
933 | - | else if (( | |
934 | - | then throw(((("Can't put more than " + toString( | |
935 | - | else if (( | |
936 | - | then $Tuple2( | |
947 | + | else if ((fM > cO)) | |
948 | + | then throw(((("Can't put more than " + toString(cO)) + " of ") + ba[fL])) | |
949 | + | else if ((fM == 0)) | |
950 | + | then $Tuple2(ft, false) | |
937 | 951 | else { | |
938 | - | let | |
939 | - | let | |
940 | - | let | |
941 | - | let | |
942 | - | if (if (!( | |
943 | - | then ( | |
952 | + | let fN = take(ft, (8 * fL)) | |
953 | + | let fo = toInt(take(drop(ft, (8 * fL)), 8)) | |
954 | + | let fp = drop(ft, (8 * (fL + 1))) | |
955 | + | let cv = split(bd[fL], "_") | |
956 | + | if (if (!(fH)) | |
957 | + | then (fM > fo) | |
944 | 958 | else false) | |
945 | - | then throw(((((("You have " + toString( | |
959 | + | then throw(((((("You have " + toString(fo)) + " of ") + ba[fL]) + ", but tried to use ") + toString(fM))) | |
946 | 960 | else { | |
947 | - | let | |
948 | - | then | |
961 | + | let fO = if (if (!(fH)) | |
962 | + | then fA(fB, split(cv[bg], ",")) | |
949 | 963 | else false) | |
950 | 964 | then { | |
951 | - | let | |
952 | - | if (( | |
965 | + | let fP = cv[bh] | |
966 | + | if ((fP == "")) | |
953 | 967 | then throw("Item cannot be equipped") | |
954 | 968 | else { | |
955 | - | let | |
956 | - | let | |
957 | - | if (( | |
969 | + | let fQ = parseIntValue(fP) | |
970 | + | let fR = (fQ / 100) | |
971 | + | if ((fI != fR)) | |
958 | 972 | then throw("Segment incompatible") | |
959 | 973 | else { | |
960 | - | let | |
961 | - | if (( | |
974 | + | let fS = ((fQ % 100) / 10) | |
975 | + | if ((fJ != fS)) | |
962 | 976 | then throw("Slot incompatible") | |
963 | 977 | else { | |
964 | - | let | |
965 | - | if (if (( | |
966 | - | then ( | |
978 | + | let fT = (fQ % 10) | |
979 | + | if (if ((fK != 0)) | |
980 | + | then (fT > 1) | |
967 | 981 | else false) | |
968 | 982 | then throw("Big items should occupy slot 0") | |
969 | - | else ( | |
983 | + | else (fT > 1) | |
970 | 984 | } | |
971 | 985 | } | |
972 | 986 | } | |
973 | 987 | } | |
974 | 988 | else false | |
975 | - | $Tuple2((( | |
976 | - | then | |
977 | - | else -( | |
989 | + | $Tuple2(((fN + toBytes((fo + (if (fH) | |
990 | + | then fM | |
991 | + | else -(fM))))) + fp), fO) | |
978 | 992 | } | |
979 | 993 | } | |
980 | 994 | } | |
981 | 995 | } | |
982 | 996 | ||
983 | 997 | ||
984 | - | func | |
998 | + | func fU (fV,fW,fH,fI,fJ,fX) = if ((fV != "")) | |
985 | 999 | then { | |
986 | - | let | |
987 | - | if ((size( | |
1000 | + | let fY = split(fV, ",") | |
1001 | + | if ((size(fY) > cN)) | |
988 | 1002 | then throw("Wrong slots format") | |
989 | 1003 | else { | |
990 | - | let | |
991 | - | let | |
992 | - | then | |
1004 | + | let fZ = fY[0] | |
1005 | + | let ga = if ((size(fY) > 1)) | |
1006 | + | then fY[1] | |
993 | 1007 | else "" | |
994 | - | if (if (( | |
995 | - | then ( | |
1008 | + | if (if ((fZ == "")) | |
1009 | + | then (ga == "") | |
996 | 1010 | else false) | |
997 | - | then | |
1011 | + | then fW | |
998 | 1012 | else { | |
999 | - | let | |
1000 | - | then | |
1001 | - | else $Tuple2( | |
1002 | - | if (( | |
1003 | - | then if ( | |
1013 | + | let gb = if ((fZ != "")) | |
1014 | + | then fF(fZ, fW, fH, fI, fJ, 0, fX) | |
1015 | + | else $Tuple2(fW, false) | |
1016 | + | if ((ga != "")) | |
1017 | + | then if (gb._2) | |
1004 | 1018 | then throw("Big item already occupies slot") | |
1005 | - | else | |
1006 | - | else | |
1019 | + | else fF(ga, gb._1, fH, fI, fJ, 1, fX)._1 | |
1020 | + | else gb._1 | |
1007 | 1021 | } | |
1008 | 1022 | } | |
1009 | 1023 | } | |
1010 | - | else | |
1011 | - | ||
1012 | - | ||
1013 | - | func | |
1014 | - | func | |
1015 | - | let | |
1016 | - | let | |
1017 | - | if ((size( | |
1024 | + | else fW | |
1025 | + | ||
1026 | + | ||
1027 | + | func gc (gd,ge,fH,fX) = { | |
1028 | + | func fI (eL,gf) = { | |
1029 | + | let fv = eL._1 | |
1030 | + | let fJ = split(gf, ";") | |
1031 | + | if ((size(fJ) != cM)) | |
1018 | 1032 | then throw("Wrong segment format") | |
1019 | 1033 | else { | |
1020 | - | let | |
1021 | - | let | |
1022 | - | if (if (( | |
1023 | - | then ( | |
1034 | + | let gg = fJ[0] | |
1035 | + | let gh = fJ[1] | |
1036 | + | if (if ((gg == "")) | |
1037 | + | then (gh == "") | |
1024 | 1038 | else false) | |
1025 | - | then $Tuple2(( | |
1039 | + | then $Tuple2((fv + 1), eL._2) | |
1026 | 1040 | else { | |
1027 | - | let | |
1028 | - | $Tuple2(( | |
1041 | + | let gi = fU(gg, eL._2, fH, fv, 0, fX) | |
1042 | + | $Tuple2((fv + 1), fU(gh, gi, fH, fv, 1, fX)) | |
1029 | 1043 | } | |
1030 | 1044 | } | |
1031 | 1045 | } | |
1032 | 1046 | ||
1033 | - | ( let | |
1034 | - | let | |
1035 | - | let | |
1036 | - | func | |
1037 | - | then | |
1038 | - | else | |
1039 | - | ||
1040 | - | func | |
1041 | - | then | |
1047 | + | ( let eN = gd | |
1048 | + | let eO = size(eN) | |
1049 | + | let eP = $Tuple2(0, ge) | |
1050 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
1051 | + | then eR | |
1052 | + | else fI(eR, eN[eS]) | |
1053 | + | ||
1054 | + | func eT (eR,eS) = if ((eS >= eO)) | |
1055 | + | then eR | |
1042 | 1056 | else throw("List size exceeds 6") | |
1043 | 1057 | ||
1044 | - | eQ( | |
1045 | - | } | |
1046 | - | ||
1047 | - | ||
1048 | - | func | |
1049 | - | let | |
1050 | - | let | |
1051 | - | let | |
1052 | - | let | |
1053 | - | let | |
1054 | - | let | |
1058 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6))._2 | |
1059 | + | } | |
1060 | + | ||
1061 | + | ||
1062 | + | func gj (bO) = { | |
1063 | + | let gk = cU(bO) | |
1064 | + | let gl = split(valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
1065 | + | let gm = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' | |
1066 | + | let gn = gc(gl, gm, true, nil) | |
1067 | + | let go = split(gl[cK], ";")[1] | |
1068 | + | let dD = if ((go == "")) | |
1055 | 1069 | then 0 | |
1056 | 1070 | else { | |
1057 | - | let | |
1058 | - | if (( | |
1071 | + | let gp = split(go, ",")[0] | |
1072 | + | if ((gp == "")) | |
1059 | 1073 | then 0 | |
1060 | 1074 | else { | |
1061 | - | let | |
1062 | - | let | |
1063 | - | let | |
1064 | - | if (if (if (if (if (( | |
1075 | + | let fG = split(gp, ":") | |
1076 | + | let K = fG[0] | |
1077 | + | let gq = fG[1] | |
1078 | + | if (if (if (if (if ((K == "06")) | |
1065 | 1079 | then true | |
1066 | - | else ( | |
1080 | + | else (K == "07")) | |
1067 | 1081 | then true | |
1068 | - | else ( | |
1069 | - | then ( | |
1082 | + | else (K == "08")) | |
1083 | + | then (gq != "") | |
1070 | 1084 | else false) | |
1071 | - | then (parseIntValue( | |
1085 | + | then (parseIntValue(gq) > 0) | |
1072 | 1086 | else false) | |
1073 | - | then parseIntValue(split( | |
1087 | + | then parseIntValue(split(bd[parseIntValue(K)], "_")[bf]) | |
1074 | 1088 | else 0 | |
1075 | 1089 | } | |
1076 | 1090 | } | |
1077 | - | let | |
1078 | - | let | |
1079 | - | ( | |
1080 | - | } | |
1081 | - | ||
1082 | - | ||
1083 | - | func | |
1091 | + | let fX = dC(this, bO, dD, true) | |
1092 | + | let gr = gc(gl, gn, false, fX) | |
1093 | + | (gr == gr) | |
1094 | + | } | |
1095 | + | ||
1096 | + | ||
1097 | + | func gs (gt,gu,gv,gw) = if ((size(gt) != aM)) | |
1084 | 1098 | then throw("Wrong proportions data") | |
1085 | 1099 | else { | |
1086 | - | func | |
1087 | - | let | |
1088 | - | if ((0 > | |
1089 | - | then throw(((((((("Panic! Pieces of type=" + toString( | |
1090 | - | else ( | |
1091 | - | } | |
1092 | - | ||
1093 | - | let | |
1094 | - | let | |
1095 | - | let | |
1096 | - | func | |
1097 | - | then | |
1098 | - | else | |
1099 | - | ||
1100 | - | func | |
1101 | - | then | |
1100 | + | func gx (eL,gy) = { | |
1101 | + | let fd = (parseIntValue(gt[gy]) + ((gw * gu[gy]) * gv)) | |
1102 | + | if ((0 > fd)) | |
1103 | + | then throw(((((((("Panic! Pieces of type=" + toString(gy)) + ", sign=") + toString(gw)) + ", terrainCounts[i]=") + toString(gu[gy])) + ", landSizeIndex=") + toString(gv))) | |
1104 | + | else (eL :+ toString(fd)) | |
1105 | + | } | |
1106 | + | ||
1107 | + | let eN = u | |
1108 | + | let eO = size(eN) | |
1109 | + | let eP = nil | |
1110 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
1111 | + | then eR | |
1112 | + | else gx(eR, eN[eS]) | |
1113 | + | ||
1114 | + | func eT (eR,eS) = if ((eS >= eO)) | |
1115 | + | then eR | |
1102 | 1116 | else throw("List size exceeds 6") | |
1103 | 1117 | ||
1104 | - | eQ( | |
1105 | - | } | |
1106 | - | ||
1107 | - | ||
1108 | - | func | |
1109 | - | let | |
1110 | - | makeString( | |
1111 | - | } | |
1112 | - | ||
1113 | - | ||
1114 | - | func | |
1115 | - | ||
1116 | - | ||
1117 | - | func | |
1118 | - | func | |
1119 | - | let | |
1120 | - | ( | |
1121 | - | } | |
1122 | - | ||
1123 | - | let | |
1124 | - | let | |
1125 | - | let | |
1126 | - | let | |
1127 | - | func | |
1128 | - | then | |
1129 | - | else | |
1130 | - | ||
1131 | - | func | |
1132 | - | then | |
1118 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
1119 | + | } | |
1120 | + | ||
1121 | + | ||
1122 | + | func gz (gu,gv,gw) = { | |
1123 | + | let gt = split(valueOrElse(getString(ac()), "0_0_0_0_0_0"), "_") | |
1124 | + | makeString(gs(gt, gu, gv, gw), "_") | |
1125 | + | } | |
1126 | + | ||
1127 | + | ||
1128 | + | func gA (gB) = [(size(split(gB, "A")) - 1), (size(split(gB, "B")) - 1), (size(split(gB, "C")) - 1), (size(split(gB, "D")) - 1), (size(split(gB, "E")) - 1), (size(split(gB, "F")) - 1)] | |
1129 | + | ||
1130 | + | ||
1131 | + | func gC (gD,gu,gE,gv,gF) = { | |
1132 | + | func gG (eL,gy) = { | |
1133 | + | let gH = ((fraction(gE, gF, dJ) * gu[gy]) * gv) | |
1134 | + | (eL :+ toString((parseIntValue(gD[gy]) + gH))) | |
1135 | + | } | |
1136 | + | ||
1137 | + | let eW = { | |
1138 | + | let eN = u | |
1139 | + | let eO = size(eN) | |
1140 | + | let eP = nil | |
1141 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
1142 | + | then eR | |
1143 | + | else gG(eR, eN[eS]) | |
1144 | + | ||
1145 | + | func eT (eR,eS) = if ((eS >= eO)) | |
1146 | + | then eR | |
1133 | 1147 | else throw("List size exceeds 6") | |
1134 | 1148 | ||
1135 | - | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6) | |
1136 | - | } | |
1137 | - | makeString(eT, "_") | |
1138 | - | } | |
1139 | - | ||
1140 | - | ||
1141 | - | func gF (gr,gB,gs,gC) = { | |
1142 | - | func gD (eI,gv) = { | |
1143 | - | let gE = ((fraction(gB, gC, a) * gr[gv]) * gs) | |
1144 | - | $Tuple2((eI._1 :+ gE), (eI._2 + gE)) | |
1145 | - | } | |
1146 | - | ||
1147 | - | let eK = cz | |
1148 | - | let eL = size(eK) | |
1149 | - | let eM = $Tuple2(nil, 0) | |
1150 | - | func eN (eO,eP) = if ((eP >= eL)) | |
1151 | - | then eO | |
1152 | - | else gD(eO, eK[eP]) | |
1153 | - | ||
1154 | - | func eQ (eO,eP) = if ((eP >= eL)) | |
1155 | - | then eO | |
1149 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
1150 | + | } | |
1151 | + | makeString(eW, "_") | |
1152 | + | } | |
1153 | + | ||
1154 | + | ||
1155 | + | func gI (gD,gu,gE,gv,gF) = { | |
1156 | + | func gG (eL,gy) = { | |
1157 | + | let gH = ((fraction(gE, gF, dJ) * gu[gy]) * gv) | |
1158 | + | let gJ = (parseIntValue(gD[gy]) + gH) | |
1159 | + | $Tuple2((eL._1 :+ gJ), (eL._2 + gJ)) | |
1160 | + | } | |
1161 | + | ||
1162 | + | let eN = u | |
1163 | + | let eO = size(eN) | |
1164 | + | let eP = $Tuple2(nil, 0) | |
1165 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
1166 | + | then eR | |
1167 | + | else gG(eR, eN[eS]) | |
1168 | + | ||
1169 | + | func eT (eR,eS) = if ((eS >= eO)) | |
1170 | + | then eR | |
1156 | 1171 | else throw("List size exceeds 6") | |
1157 | 1172 | ||
1158 | - | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6) | |
1159 | - | } | |
1160 | - | ||
1161 | - | ||
1162 | - | func gG (gH,gI,gJ,gK) = { | |
1163 | - | let gL = gJ._1 | |
1164 | - | let gM = gJ._2 | |
1165 | - | if ((gM == 0)) | |
1166 | - | then $Tuple2(makeString(gH, "_"), makeString(gI, "_")) | |
1167 | - | else if ((gK >= gM)) | |
1173 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
1174 | + | } | |
1175 | + | ||
1176 | + | ||
1177 | + | func gK (gu,gE,gv,gF) = { | |
1178 | + | func gG (eL,gL) = { | |
1179 | + | let gH = ((fraction(gE, gF, dJ) * gL) * gv) | |
1180 | + | $Tuple2((eL._1 :+ gH), (eL._2 + gH)) | |
1181 | + | } | |
1182 | + | ||
1183 | + | let eN = gu | |
1184 | + | let eO = size(eN) | |
1185 | + | let eP = $Tuple2(nil, 0) | |
1186 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
1187 | + | then eR | |
1188 | + | else gG(eR, eN[eS]) | |
1189 | + | ||
1190 | + | func eT (eR,eS) = if ((eS >= eO)) | |
1191 | + | then eR | |
1192 | + | else throw("List size exceeds 6") | |
1193 | + | ||
1194 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
1195 | + | } | |
1196 | + | ||
1197 | + | ||
1198 | + | func gM (gN,gO,gP,gQ) = { | |
1199 | + | let gR = gP._1 | |
1200 | + | let gS = gP._2 | |
1201 | + | if ((gS == 0)) | |
1202 | + | then $Tuple2(makeString(gN, "_"), makeString(gO, "_")) | |
1203 | + | else if ((gQ >= gS)) | |
1168 | 1204 | then { | |
1169 | - | func | |
1170 | - | ||
1171 | - | let | |
1172 | - | let | |
1173 | - | let | |
1174 | - | let | |
1175 | - | func | |
1176 | - | then | |
1177 | - | else | |
1178 | - | ||
1179 | - | func | |
1180 | - | then | |
1205 | + | func gT (eL,gy) = (eL :+ toString((parseIntValue(gN[gy]) + gR[gy]))) | |
1206 | + | ||
1207 | + | let eW = { | |
1208 | + | let eN = u | |
1209 | + | let eO = size(eN) | |
1210 | + | let eP = nil | |
1211 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
1212 | + | then eR | |
1213 | + | else gT(eR, eN[eS]) | |
1214 | + | ||
1215 | + | func eT (eR,eS) = if ((eS >= eO)) | |
1216 | + | then eR | |
1181 | 1217 | else throw("List size exceeds 6") | |
1182 | 1218 | ||
1183 | - | eQ( | |
1219 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
1184 | 1220 | } | |
1185 | - | $Tuple2(makeString( | |
1221 | + | $Tuple2(makeString(eW, "_"), makeString(gO, "_")) | |
1186 | 1222 | } | |
1187 | 1223 | else { | |
1188 | - | func | |
1189 | - | let | |
1190 | - | $Tuple2(( | |
1224 | + | func gU (eL,gy) = { | |
1225 | + | let gV = fraction(gR[gy], gQ, gS) | |
1226 | + | $Tuple2((eL._1 :+ toString((parseIntValue(gN[gy]) + gV))), (eL._2 :+ toString(((parseIntValue(gO[gy]) + gR[gy]) - gV)))) | |
1191 | 1227 | } | |
1192 | 1228 | ||
1193 | - | let | |
1194 | - | let | |
1195 | - | let | |
1196 | - | let | |
1197 | - | func | |
1198 | - | then | |
1199 | - | else | |
1200 | - | ||
1201 | - | func | |
1202 | - | then | |
1229 | + | let eW = { | |
1230 | + | let eN = u | |
1231 | + | let eO = size(eN) | |
1232 | + | let eP = $Tuple2(nil, nil) | |
1233 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
1234 | + | then eR | |
1235 | + | else gU(eR, eN[eS]) | |
1236 | + | ||
1237 | + | func eT (eR,eS) = if ((eS >= eO)) | |
1238 | + | then eR | |
1203 | 1239 | else throw("List size exceeds 6") | |
1204 | 1240 | ||
1205 | - | eQ( | |
1241 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
1206 | 1242 | } | |
1207 | - | $Tuple2(makeString( | |
1243 | + | $Tuple2(makeString(eW._1, "_"), makeString(eW._2, "_")) | |
1208 | 1244 | } | |
1209 | 1245 | } | |
1210 | 1246 | ||
1211 | 1247 | ||
1212 | - | func | |
1213 | - | then | |
1214 | - | else -( | |
1215 | - | ||
1216 | - | ||
1217 | - | let | |
1218 | - | ||
1219 | - | func | |
1220 | - | let | |
1221 | - | let | |
1248 | + | func gW (gX) = if ((gX >= toBigInt(0))) | |
1249 | + | then gX | |
1250 | + | else -(gX) | |
1251 | + | ||
1252 | + | ||
1253 | + | let gY = [[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]] | |
1254 | + | ||
1255 | + | func gZ (am,ha) = { | |
1256 | + | let hb = toInt((am % dX)) | |
1257 | + | let hc = if ((ha[0] > hb)) | |
1222 | 1258 | then "A" | |
1223 | - | else if (( | |
1259 | + | else if ((ha[1] > hb)) | |
1224 | 1260 | then "B" | |
1225 | - | else if (( | |
1261 | + | else if ((ha[2] > hb)) | |
1226 | 1262 | then "C" | |
1227 | - | else if (( | |
1263 | + | else if ((ha[3] > hb)) | |
1228 | 1264 | then "D" | |
1229 | - | else if (( | |
1265 | + | else if ((ha[4] > hb)) | |
1230 | 1266 | then "E" | |
1231 | 1267 | else "F" | |
1232 | - | | |
1233 | - | } | |
1234 | - | ||
1235 | - | ||
1236 | - | func | |
1237 | - | let | |
1238 | - | func | |
1239 | - | ||
1240 | - | let | |
1241 | - | let | |
1242 | - | let | |
1243 | - | let | |
1244 | - | func | |
1245 | - | then | |
1246 | - | else | |
1247 | - | ||
1248 | - | func | |
1249 | - | then | |
1268 | + | hc | |
1269 | + | } | |
1270 | + | ||
1271 | + | ||
1272 | + | func hd (he,hf) = { | |
1273 | + | let hg = gY[hf] | |
1274 | + | func hh (eL,eM) = $Tuple2((((((eL._1 + gZ(eL._2, hg)) + gZ((eL._2 / dX), hg)) + gZ((eL._2 / dY), hg)) + gZ((eL._2 / dZ), hg)) + gZ((eL._2 / ea), hg)), (eL._2 / eb)) | |
1275 | + | ||
1276 | + | let hi = { | |
1277 | + | let eN = [1, 2, 3, 4, 5] | |
1278 | + | let eO = size(eN) | |
1279 | + | let eP = $Tuple2("", (he / dW)) | |
1280 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
1281 | + | then eR | |
1282 | + | else hh(eR, eN[eS]) | |
1283 | + | ||
1284 | + | func eT (eR,eS) = if ((eS >= eO)) | |
1285 | + | then eR | |
1250 | 1286 | else throw("List size exceeds 5") | |
1251 | 1287 | ||
1252 | - | eQ( | |
1253 | - | } | |
1254 | - | | |
1255 | - | } | |
1256 | - | ||
1257 | - | ||
1258 | - | let | |
1259 | - | ||
1260 | - | let | |
1261 | - | ||
1262 | - | func | |
1263 | - | func | |
1264 | - | let | |
1265 | - | let | |
1266 | - | let | |
1288 | + | eT(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5) | |
1289 | + | } | |
1290 | + | hi._1 | |
1291 | + | } | |
1292 | + | ||
1293 | + | ||
1294 | + | let hj = [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] | |
1295 | + | ||
1296 | + | let hk = ["A", "B", "C", "D", "E", "F"] | |
1297 | + | ||
1298 | + | func hl (hm,gv) = { | |
1299 | + | func hn (eL,ak) = { | |
1300 | + | let fv = eL._2 | |
1301 | + | let ho = parseIntValue(ak) | |
1302 | + | let gX = if ((ho == 0)) | |
1267 | 1303 | then 0 | |
1268 | - | else if (( | |
1269 | - | then ( | |
1270 | - | else if (( | |
1304 | + | else if ((ho >= (4 * gv))) | |
1305 | + | then (ho / gv) | |
1306 | + | else if ((ho > (3 * gv))) | |
1271 | 1307 | then 3 | |
1272 | - | else ((( | |
1273 | - | $Tuple3(( | |
1274 | - | } | |
1275 | - | ||
1276 | - | let | |
1277 | - | let | |
1278 | - | let | |
1279 | - | let | |
1280 | - | func | |
1281 | - | then | |
1282 | - | else | |
1283 | - | ||
1284 | - | func | |
1285 | - | then | |
1308 | + | else (((ho - 1) / gv) + 1) | |
1309 | + | $Tuple3((eL._1 :+ gX), (eL._2 + 1), (eL._3 + gX)) | |
1310 | + | } | |
1311 | + | ||
1312 | + | let hi = { | |
1313 | + | let eN = hm | |
1314 | + | let eO = size(eN) | |
1315 | + | let eP = $Tuple3(nil, 0, 0) | |
1316 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
1317 | + | then eR | |
1318 | + | else hn(eR, eN[eS]) | |
1319 | + | ||
1320 | + | func eT (eR,eS) = if ((eS >= eO)) | |
1321 | + | then eR | |
1286 | 1322 | else throw("List size exceeds 6") | |
1287 | 1323 | ||
1288 | - | eQ( | |
1289 | - | } | |
1290 | - | let | |
1291 | - | let | |
1292 | - | let | |
1293 | - | func | |
1294 | - | let | |
1295 | - | then ( | |
1296 | - | else | |
1297 | - | let | |
1324 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
1325 | + | } | |
1326 | + | let hp = hi._1 | |
1327 | + | let hq = value(indexOf(hp, max(hp))) | |
1328 | + | let hr = (hi._3 - 25) | |
1329 | + | func hs (eL,K) = { | |
1330 | + | let ax = if ((K == hq)) | |
1331 | + | then (hp[K] - hr) | |
1332 | + | else hp[K] | |
1333 | + | let aB = if ((ax == 0)) | |
1298 | 1334 | then nil | |
1299 | - | else split(drop(toString(pow(10, 0, | |
1300 | - | let | |
1301 | - | func | |
1302 | - | ||
1303 | - | let | |
1304 | - | let | |
1305 | - | let | |
1306 | - | let | |
1307 | - | func | |
1308 | - | then | |
1309 | - | else | |
1310 | - | ||
1311 | - | func | |
1312 | - | then | |
1335 | + | else split(drop(toString(pow(10, 0, ax, 0, 0, DOWN)), 1), "") | |
1336 | + | let fQ = hk[K] | |
1337 | + | func ht (hu,hv) = (hu :+ fQ) | |
1338 | + | ||
1339 | + | let hw = { | |
1340 | + | let eN = aB | |
1341 | + | let eO = size(eN) | |
1342 | + | let eP = nil | |
1343 | + | func hx (eR,eS) = if ((eS >= eO)) | |
1344 | + | then eR | |
1345 | + | else ht(eR, eN[eS]) | |
1346 | + | ||
1347 | + | func hy (eR,eS) = if ((eS >= eO)) | |
1348 | + | then eR | |
1313 | 1349 | else throw("List size exceeds 25") | |
1314 | 1350 | ||
1315 | - | | |
1316 | - | } | |
1317 | - | ( | |
1318 | - | } | |
1319 | - | ||
1320 | - | let | |
1321 | - | let | |
1322 | - | let | |
1323 | - | let | |
1324 | - | func | |
1325 | - | then | |
1326 | - | else | |
1327 | - | ||
1328 | - | func | |
1329 | - | then | |
1351 | + | hy(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(eP, 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) | |
1352 | + | } | |
1353 | + | (eL ++ hw) | |
1354 | + | } | |
1355 | + | ||
1356 | + | let eW = { | |
1357 | + | let eN = u | |
1358 | + | let eO = size(eN) | |
1359 | + | let eP = nil | |
1360 | + | func hx (eR,eS) = if ((eS >= eO)) | |
1361 | + | then eR | |
1362 | + | else hs(eR, eN[eS]) | |
1363 | + | ||
1364 | + | func hy (eR,eS) = if ((eS >= eO)) | |
1365 | + | then eR | |
1330 | 1366 | else throw("List size exceeds 6") | |
1331 | 1367 | ||
1332 | - | | |
1333 | - | } | |
1334 | - | func | |
1335 | - | ||
1336 | - | let | |
1337 | - | let | |
1338 | - | let | |
1339 | - | func | |
1340 | - | then | |
1341 | - | else | |
1342 | - | ||
1343 | - | func | |
1344 | - | then | |
1368 | + | hy(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6) | |
1369 | + | } | |
1370 | + | func hz (eL,fv) = (eL + eW[fv]) | |
1371 | + | ||
1372 | + | let eN = hj | |
1373 | + | let eO = size(eN) | |
1374 | + | let eP = "" | |
1375 | + | func hA (eR,eS) = if ((eS >= eO)) | |
1376 | + | then eR | |
1377 | + | else hz(eR, eN[eS]) | |
1378 | + | ||
1379 | + | func hB (eR,eS) = if ((eS >= eO)) | |
1380 | + | then eR | |
1345 | 1381 | else throw("List size exceeds 25") | |
1346 | 1382 | ||
1347 | - | | |
1348 | - | } | |
1349 | - | ||
1350 | - | ||
1351 | - | func | |
1352 | - | let | |
1353 | - | [toString(valueOrElse(parseInt( | |
1354 | - | then | |
1355 | - | else "0_0_0_0_0_0", if ((size(split( | |
1356 | - | then | |
1357 | - | else "0_0_0_0_0_0", | |
1358 | - | } | |
1359 | - | ||
1360 | - | ||
1361 | - | func | |
1362 | - | let | |
1363 | - | (( | |
1364 | - | } | |
1365 | - | ||
1366 | - | ||
1367 | - | func | |
1368 | - | let | |
1369 | - | func | |
1370 | - | ||
1371 | - | func | |
1372 | - | let | |
1373 | - | let | |
1374 | - | $Tuple2(( | |
1375 | - | } | |
1376 | - | ||
1377 | - | let | |
1378 | - | let | |
1379 | - | let | |
1380 | - | let | |
1381 | - | func | |
1382 | - | then | |
1383 | - | else | |
1384 | - | ||
1385 | - | func | |
1386 | - | then | |
1383 | + | hB(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(eP, 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) | |
1384 | + | } | |
1385 | + | ||
1386 | + | ||
1387 | + | func hC (hD) = { | |
1388 | + | let hE = split(valueOrElse(getString(hD), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":") | |
1389 | + | [toString(valueOrElse(parseInt(hE[bs]), 0)), if ((size(split(hE[bt], "_")) == aM)) | |
1390 | + | then hE[bt] | |
1391 | + | else "0_0_0_0_0_0", if ((size(split(hE[bu], "_")) == aM)) | |
1392 | + | then hE[bu] | |
1393 | + | else "0_0_0_0_0_0", hE[bv]] | |
1394 | + | } | |
1395 | + | ||
1396 | + | ||
1397 | + | func hF (hG) = { | |
1398 | + | let fj = split(hG, "_") | |
1399 | + | ((aP * (parseIntValue(fj[1]) + 1)) * parseIntValue(fj[0])) | |
1400 | + | } | |
1401 | + | ||
1402 | + | ||
1403 | + | func hH (hI) = { | |
1404 | + | let hJ = hI[bm] | |
1405 | + | func hK (eL,hL) = (eL + parseIntValue(hL)) | |
1406 | + | ||
1407 | + | func hM (eL,hL) = { | |
1408 | + | let K = eL._1 | |
1409 | + | let eE = (((parseIntValue(hL) + bi) - 1) / bi) | |
1410 | + | $Tuple2((K + 1), (eL._2 + (eE * o))) | |
1411 | + | } | |
1412 | + | ||
1413 | + | let hN = { | |
1414 | + | let eN = split(hI[bk], "_") | |
1415 | + | let eO = size(eN) | |
1416 | + | let eP = 0 | |
1417 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
1418 | + | then eR | |
1419 | + | else hK(eR, eN[eS]) | |
1420 | + | ||
1421 | + | func eT (eR,eS) = if ((eS >= eO)) | |
1422 | + | then eR | |
1387 | 1423 | else throw("List size exceeds 6") | |
1388 | 1424 | ||
1389 | - | eQ( | |
1390 | - | } | |
1391 | - | let | |
1392 | - | let | |
1393 | - | let | |
1394 | - | let | |
1395 | - | func | |
1396 | - | then | |
1397 | - | else | |
1398 | - | ||
1399 | - | func | |
1400 | - | then | |
1425 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
1426 | + | } | |
1427 | + | let hO = { | |
1428 | + | let eN = split(hI[bl], "_") | |
1429 | + | let eO = size(eN) | |
1430 | + | let eP = 0 | |
1431 | + | func hx (eR,eS) = if ((eS >= eO)) | |
1432 | + | then eR | |
1433 | + | else hK(eR, eN[eS]) | |
1434 | + | ||
1435 | + | func hy (eR,eS) = if ((eS >= eO)) | |
1436 | + | then eR | |
1401 | 1437 | else throw("List size exceeds 6") | |
1402 | 1438 | ||
1403 | - | | |
1404 | - | } | |
1405 | - | let | |
1439 | + | hy(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6) | |
1440 | + | } | |
1441 | + | let hP = if ((hJ == "")) | |
1406 | 1442 | then 0 | |
1407 | - | else ( let | |
1408 | - | let | |
1409 | - | let | |
1410 | - | func | |
1411 | - | then | |
1412 | - | else | |
1413 | - | ||
1414 | - | func | |
1415 | - | then | |
1443 | + | else ( let eN = split_4C(hJ, "_") | |
1444 | + | let eO = size(eN) | |
1445 | + | let eP = $Tuple2(0, 0) | |
1446 | + | func hA (eR,eS) = if ((eS >= eO)) | |
1447 | + | then eR | |
1448 | + | else hM(eR, eN[eS]) | |
1449 | + | ||
1450 | + | func hB (eR,eS) = if ((eS >= eO)) | |
1451 | + | then eR | |
1416 | 1452 | else throw("List size exceeds 50") | |
1417 | 1453 | ||
1418 | - | | |
1419 | - | (( | |
1420 | - | } | |
1421 | - | ||
1422 | - | ||
1423 | - | func | |
1424 | - | let | |
1425 | - | let | |
1426 | - | let | |
1427 | - | let | |
1428 | - | let | |
1429 | - | let | |
1430 | - | then makeString(["0", toString( | |
1454 | + | hB(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(eP, 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 | |
1455 | + | ((hN + hO) + hP) | |
1456 | + | } | |
1457 | + | ||
1458 | + | ||
1459 | + | func hQ (hR,hS,hT) = { | |
1460 | + | let hG = ((toString(hS) + "_") + toString(hT)) | |
1461 | + | let hU = hF(hG) | |
1462 | + | let hV = valueOrElse(getString(hR), (hG + ":0_0_0_0_0_0:0_0_0_0_0_0::0")) | |
1463 | + | let hW = split_4C(hV, ":") | |
1464 | + | let hX = hH(hW) | |
1465 | + | let hY = if ((5 > size(hW))) | |
1466 | + | then makeString(["0", toString(hX), toString((hU - hX)), toString(hU)], "_") | |
1431 | 1467 | else { | |
1432 | - | let | |
1433 | - | let | |
1434 | - | let | |
1435 | - | then parseIntValue( | |
1436 | - | else | |
1437 | - | makeString([toString( | |
1438 | - | } | |
1439 | - | [ | |
1440 | - | then | |
1441 | - | else "0_0_0_0_0_0", if ((size(split( | |
1442 | - | then | |
1443 | - | else "0_0_0_0_0_0", | |
1444 | - | } | |
1445 | - | ||
1446 | - | ||
1447 | - | func | |
1448 | - | let | |
1449 | - | let | |
1450 | - | (( | |
1451 | - | } | |
1452 | - | ||
1453 | - | ||
1454 | - | func | |
1468 | + | let hZ = split(hW[bn], "_") | |
1469 | + | let ia = parseIntValue(hZ[bo]) | |
1470 | + | let ib = if ((size(hZ) > 1)) | |
1471 | + | then parseIntValue(hZ[bp]) | |
1472 | + | else hX | |
1473 | + | makeString([toString(ia), toString(ib), toString(((hU - ia) - ib)), toString(hU)], "_") | |
1474 | + | } | |
1475 | + | [hW[bj], if ((size(split(hW[bk], "_")) == aM)) | |
1476 | + | then hW[bk] | |
1477 | + | else "0_0_0_0_0_0", if ((size(split(hW[bl], "_")) == aM)) | |
1478 | + | then hW[bl] | |
1479 | + | else "0_0_0_0_0_0", hW[bm], hY] | |
1480 | + | } | |
1481 | + | ||
1482 | + | ||
1483 | + | func ic (hI) = { | |
1484 | + | let id = hH(hI) | |
1485 | + | let ie = parseIntValue(split(hI[bn], "_")[bo]) | |
1486 | + | ((hF(hI[bj]) - id) - ie) | |
1487 | + | } | |
1488 | + | ||
1489 | + | ||
1490 | + | func if (ig,hI,ih) = if ((size(ig) != 3)) | |
1455 | 1491 | then throw("cargoListStr should contain exactly 2 ':' separators") | |
1456 | 1492 | else { | |
1457 | - | let | |
1458 | - | let | |
1459 | - | let | |
1493 | + | let ii = split(ig[0], "_") | |
1494 | + | let ij = split(ig[1], "_") | |
1495 | + | let ik = if ((ig[2] == "")) | |
1460 | 1496 | then nil | |
1461 | - | else split_4C( | |
1462 | - | if ((size( | |
1497 | + | else split_4C(ig[2], "_") | |
1498 | + | if ((size(ii) != aM)) | |
1463 | 1499 | then throw("All 6 resources should be passed") | |
1464 | - | else if ((size( | |
1500 | + | else if ((size(ij) != aM)) | |
1465 | 1501 | then throw("All 6 materials should be passed") | |
1466 | 1502 | else { | |
1467 | - | let | |
1468 | - | let | |
1469 | - | let | |
1470 | - | let | |
1503 | + | let gQ = ic(hI) | |
1504 | + | let il = split(hI[bk], "_") | |
1505 | + | let im = split(hI[bl], "_") | |
1506 | + | let in = if ((hI[bm] == "")) | |
1471 | 1507 | then nil | |
1472 | - | else split_4C( | |
1473 | - | let | |
1474 | - | let | |
1475 | - | let | |
1508 | + | else split_4C(hI[bm], "_") | |
1509 | + | let gO = split(ih[bt], "_") | |
1510 | + | let io = split(ih[bu], "_") | |
1511 | + | let ip = if ((ih[bv] == "")) | |
1476 | 1512 | then nil | |
1477 | - | else split_4C( | |
1478 | - | func | |
1479 | - | let | |
1480 | - | let | |
1481 | - | let | |
1482 | - | let | |
1483 | - | if (( | |
1484 | - | then $Tuple4(( | |
1485 | - | else if (( | |
1486 | - | then if (( | |
1487 | - | then throw((((("Attempt to take " + | |
1488 | - | else $Tuple4(( | |
1489 | - | else if ((-( | |
1490 | - | then throw((((("Attempt to take " + toString(-( | |
1491 | - | else $Tuple4(( | |
1513 | + | else split_4C(ih[bv], "_") | |
1514 | + | func iq (eL,hL) = { | |
1515 | + | let gy = eL._1 | |
1516 | + | let ir = parseIntValue(hL) | |
1517 | + | let is = parseIntValue(il[gy]) | |
1518 | + | let it = parseIntValue(gO[gy]) | |
1519 | + | if ((ir == 0)) | |
1520 | + | then $Tuple4((gy + 1), (eL._2 :+ il[gy]), (eL._3 :+ gO[gy]), eL._4) | |
1521 | + | else if ((ir > 0)) | |
1522 | + | then if ((ir > it)) | |
1523 | + | then throw((((("Attempt to take " + hL) + " from backpack, but only ") + toString(it)) + " available")) | |
1524 | + | else $Tuple4((gy + 1), (eL._2 :+ toString((is + ir))), (eL._3 :+ toString((it - ir))), (eL._4 + ir)) | |
1525 | + | else if ((-(ir) > is)) | |
1526 | + | then throw((((("Attempt to take " + toString(-(ir))) + " from warehouse, but only ") + toString(is)) + " available")) | |
1527 | + | else $Tuple4((gy + 1), (eL._2 :+ toString((is + ir))), (eL._3 :+ toString((it - ir))), (eL._4 + ir)) | |
1492 | 1528 | } | |
1493 | 1529 | ||
1494 | - | let | |
1495 | - | let | |
1496 | - | let | |
1497 | - | let | |
1498 | - | func | |
1499 | - | then | |
1500 | - | else | |
1501 | - | ||
1502 | - | func | |
1503 | - | then | |
1530 | + | let eW = { | |
1531 | + | let eN = ii | |
1532 | + | let eO = size(eN) | |
1533 | + | let eP = $Tuple4(0, nil, nil, 0) | |
1534 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
1535 | + | then eR | |
1536 | + | else iq(eR, eN[eS]) | |
1537 | + | ||
1538 | + | func eT (eR,eS) = if ((eS >= eO)) | |
1539 | + | then eR | |
1504 | 1540 | else throw("List size exceeds 6") | |
1505 | 1541 | ||
1506 | - | eQ( | |
1542 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
1507 | 1543 | } | |
1508 | - | func | |
1509 | - | let | |
1510 | - | let | |
1511 | - | let | |
1512 | - | let | |
1513 | - | if (( | |
1514 | - | then $Tuple4(( | |
1515 | - | else if (( | |
1516 | - | then if (( | |
1517 | - | then throw((((("Attempt to take " + | |
1518 | - | else $Tuple4(( | |
1519 | - | else if ((-( | |
1520 | - | then throw((((("Attempt to take " + toString(-( | |
1521 | - | else $Tuple4(( | |
1544 | + | func iu (eL,hL) = { | |
1545 | + | let gy = eL._1 | |
1546 | + | let ir = parseIntValue(hL) | |
1547 | + | let iv = parseIntValue(im[gy]) | |
1548 | + | let iw = parseIntValue(io[gy]) | |
1549 | + | if ((ir == 0)) | |
1550 | + | then $Tuple4((gy + 1), (eL._2 :+ im[gy]), (eL._3 :+ io[gy]), eL._4) | |
1551 | + | else if ((ir > 0)) | |
1552 | + | then if ((ir > iw)) | |
1553 | + | then throw((((("Attempt to take " + hL) + " from backpack, but only ") + toString(iw)) + " available")) | |
1554 | + | else $Tuple4((gy + 1), (eL._2 :+ toString((iv + ir))), (eL._3 :+ toString((iw - ir))), (eL._4 + ir)) | |
1555 | + | else if ((-(ir) > iv)) | |
1556 | + | then throw((((("Attempt to take " + toString(-(ir))) + " from warehouse, but only ") + toString(iv)) + " available")) | |
1557 | + | else $Tuple4((gy + 1), (eL._2 :+ toString((iv + ir))), (eL._3 :+ toString((iw - ir))), (eL._4 + ir)) | |
1522 | 1558 | } | |
1523 | 1559 | ||
1524 | - | let | |
1525 | - | let | |
1526 | - | let | |
1527 | - | let | |
1528 | - | func | |
1529 | - | then | |
1530 | - | else | |
1531 | - | ||
1532 | - | func | |
1533 | - | then | |
1560 | + | let gg = { | |
1561 | + | let eN = ij | |
1562 | + | let eO = size(eN) | |
1563 | + | let eP = $Tuple4(0, nil, nil, eW._4) | |
1564 | + | func hx (eR,eS) = if ((eS >= eO)) | |
1565 | + | then eR | |
1566 | + | else iu(eR, eN[eS]) | |
1567 | + | ||
1568 | + | func hy (eR,eS) = if ((eS >= eO)) | |
1569 | + | then eR | |
1534 | 1570 | else throw("List size exceeds 6") | |
1535 | 1571 | ||
1536 | - | | |
1572 | + | hy(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6) | |
1537 | 1573 | } | |
1538 | - | func | |
1539 | - | let | |
1540 | - | let | |
1541 | - | let | |
1542 | - | then parseIntValue( | |
1574 | + | func ix (eL,hL) = { | |
1575 | + | let gy = eL._1 | |
1576 | + | let ir = parseIntValue(hL) | |
1577 | + | let iy = if ((size(in) > gy)) | |
1578 | + | then parseIntValue(in[gy]) | |
1543 | 1579 | else 0 | |
1544 | - | let | |
1545 | - | then parseIntValue( | |
1580 | + | let iz = if ((size(ip) > gy)) | |
1581 | + | then parseIntValue(ip[gy]) | |
1546 | 1582 | else 0 | |
1547 | - | if (( | |
1548 | - | then $Tuple4(( | |
1549 | - | else if (( | |
1550 | - | then if (( | |
1551 | - | then throw((((("Attempt to take " + | |
1583 | + | if ((ir == 0)) | |
1584 | + | then $Tuple4((gy + 1), (eL._2 :+ toString(iy)), (eL._3 :+ toString(iz)), eL._4) | |
1585 | + | else if ((ir > 0)) | |
1586 | + | then if ((ir > iz)) | |
1587 | + | then throw((((("Attempt to take " + hL) + " from backpack, but only ") + toString(iz)) + " available")) | |
1552 | 1588 | else { | |
1553 | - | let | |
1554 | - | $Tuple4(( | |
1589 | + | let iA = (eB((iy + ir), bi) - eB(iy, bi)) | |
1590 | + | $Tuple4((gy + 1), (eL._2 :+ toString((iy + ir))), (eL._3 :+ toString((iz - ir))), (eL._4 + iA)) | |
1555 | 1591 | } | |
1556 | - | else if ((-( | |
1557 | - | then throw((((("Attempt to take " + toString(-( | |
1592 | + | else if ((-(ir) > iy)) | |
1593 | + | then throw((((("Attempt to take " + toString(-(ir))) + " from warehouse, but only ") + toString(iy)) + " available")) | |
1558 | 1594 | else { | |
1559 | - | let | |
1560 | - | $Tuple4(( | |
1595 | + | let iA = (eB((iy + ir), bi) - eB(iy, bi)) | |
1596 | + | $Tuple4((gy + 1), (eL._2 :+ toString((iy + ir))), (eL._3 :+ toString((iz - ir))), (eL._4 + iA)) | |
1561 | 1597 | } | |
1562 | 1598 | } | |
1563 | 1599 | ||
1564 | - | let | |
1600 | + | let hE = if ((size(ik) != 0)) | |
1565 | 1601 | then { | |
1566 | - | let | |
1567 | - | let | |
1568 | - | let | |
1569 | - | func | |
1570 | - | then | |
1571 | - | else | |
1572 | - | ||
1573 | - | func | |
1574 | - | then | |
1602 | + | let eN = ik | |
1603 | + | let eO = size(eN) | |
1604 | + | let eP = $Tuple4(0, nil, nil, gg._4) | |
1605 | + | func hA (eR,eS) = if ((eS >= eO)) | |
1606 | + | then eR | |
1607 | + | else ix(eR, eN[eS]) | |
1608 | + | ||
1609 | + | func hB (eR,eS) = if ((eS >= eO)) | |
1610 | + | then eR | |
1575 | 1611 | else throw("List size exceeds 50") | |
1576 | 1612 | ||
1577 | - | | |
1613 | + | hB(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(eP, 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) | |
1578 | 1614 | } | |
1579 | - | else $Tuple4(0, | |
1580 | - | let | |
1581 | - | if (( | |
1582 | - | then throw((((("Attempt to put total " + toString( | |
1583 | - | else $Tuple7(makeString( | |
1615 | + | else $Tuple4(0, in, ip, gg._4) | |
1616 | + | let iB = hE._4 | |
1617 | + | if ((iB > gQ)) | |
1618 | + | then throw((((("Attempt to put total " + toString(iB)) + " stuff, but only ") + toString(gQ)) + " warehouse space left")) | |
1619 | + | else $Tuple7(makeString(eW._2, "_"), makeString(gg._2, "_"), makeString_2C(hE._2, "_"), makeString(eW._3, "_"), makeString(gg._3, "_"), makeString_2C(hE._3, "_"), iB) | |
1584 | 1620 | } | |
1585 | 1621 | } | |
1586 | 1622 | ||
1587 | 1623 | ||
1588 | - | func | |
1589 | - | let | |
1590 | - | let | |
1591 | - | let | |
1592 | - | let | |
1593 | - | let | |
1594 | - | let | |
1595 | - | let | |
1596 | - | let | |
1597 | - | let | |
1598 | - | let | |
1599 | - | $Tuple2([IntegerEntry( | |
1600 | - | } | |
1601 | - | ||
1602 | - | ||
1603 | - | func | |
1624 | + | func iC (iD,iE) = { | |
1625 | + | let bW = toString(iD) | |
1626 | + | let iF = gW(toBigInt(iE)) | |
1627 | + | let iG = valueOrElse(getInteger(ed()), (ec + 1)) | |
1628 | + | let eh = toString(iG) | |
1629 | + | let hf = toInt((iF % dW)) | |
1630 | + | let gB = hd(iF, hf) | |
1631 | + | let ae = bb[hf] | |
1632 | + | let iH = Issue(eA(eh, "S"), makeString([eh, "S", gB, ae], "_"), 1, 0, false) | |
1633 | + | let bA = calculateAssetId(iH) | |
1634 | + | let iI = toBase58String(bA) | |
1635 | + | $Tuple2([IntegerEntry(ed(), (iG + 1)), iH, StringEntry(eg(eh), iI), StringEntry(bz(iI), bW), StringEntry(ej(eh), bW), IntegerEntry(bJ(iI), 0), IntegerEntry(ei(iI, bW), 0), ScriptTransfer(iD, 1, bA)], $Tuple2(iI, ae)) | |
1636 | + | } | |
1637 | + | ||
1638 | + | ||
1639 | + | func iJ (bW,iK,iL) = if (!(sigVerify_8Kb(iK, iL, f))) | |
1604 | 1640 | then throw("signature does not match") | |
1605 | 1641 | else { | |
1606 | - | let | |
1607 | - | let | |
1608 | - | let | |
1609 | - | let | |
1610 | - | let | |
1611 | - | let | |
1612 | - | let | |
1613 | - | let | |
1614 | - | if (if (( | |
1642 | + | let fj = split_4C(toUtf8String(iK), ";") | |
1643 | + | let iM = split_4C(fj[0], "|") | |
1644 | + | let iN = split(iM[er], "_") | |
1645 | + | let iO = parseIntValue(iN[0]) | |
1646 | + | let iP = parseIntValue(iN[1]) | |
1647 | + | let iQ = split(fj[1], ":") | |
1648 | + | let iR = iQ[0] | |
1649 | + | let iS = parseIntValue(iM[es]) | |
1650 | + | if (if ((iS > (lastBlock.timestamp + dO))) | |
1615 | 1651 | then true | |
1616 | - | else ((lastBlock.timestamp - | |
1617 | - | then throw(((("signature outdated: logTime=" + toString( | |
1652 | + | else ((lastBlock.timestamp - dO) > iS)) | |
1653 | + | then throw(((("signature outdated: logTime=" + toString(iS)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
1618 | 1654 | else { | |
1619 | - | let | |
1620 | - | let | |
1621 | - | if (( | |
1622 | - | then throw(((("Tx ids don't match! In state: " + | |
1655 | + | let iT = iQ[1] | |
1656 | + | let iU = valueOrElse(getString(au(bW)), "") | |
1657 | + | if ((iU != iT)) | |
1658 | + | then throw(((("Tx ids don't match! In state: " + iU) + ", in msg: ") + iT)) | |
1623 | 1659 | else { | |
1624 | - | let | |
1625 | - | let | |
1626 | - | let | |
1627 | - | let | |
1628 | - | if (( | |
1629 | - | then throw(((("oldHealth=" + toString( | |
1630 | - | else if ((0 >= | |
1660 | + | let bO = valueOrErrorMessage(getString(bS(bW)), "You don't have a duck staked") | |
1661 | + | let iV = cP(bO) | |
1662 | + | let iW = dw(valueOrElse(getInteger(cS(bO)), 0)) | |
1663 | + | let iX = valueOrElse(getInteger(iV), iW) | |
1664 | + | if ((iX != iO)) | |
1665 | + | then throw(((("oldHealth=" + toString(iX)) + " from state does not match one from flight log=") + toString(iO))) | |
1666 | + | else if ((0 >= iO)) | |
1631 | 1667 | then throw("You can't fly with zero health") | |
1632 | - | else if (!( | |
1668 | + | else if (!(gj(bO))) | |
1633 | 1669 | then throw("Equipment incompatible") | |
1634 | 1670 | else { | |
1635 | - | let | |
1636 | - | then | |
1671 | + | let iY = if ((size(iM) > et)) | |
1672 | + | then iM[et] | |
1637 | 1673 | else "" | |
1638 | - | let | |
1639 | - | then | |
1674 | + | let iZ = if ((size(iM) > eu)) | |
1675 | + | then iM[eu] | |
1640 | 1676 | else "" | |
1641 | - | let | |
1642 | - | then ( | |
1677 | + | let ja = if (if ((iP > 0)) | |
1678 | + | then (iY == "$") | |
1643 | 1679 | else false) | |
1644 | - | then | |
1680 | + | then al(invoke(L, "sendUsdtPrize", [bW], nil)) | |
1645 | 1681 | else 0 | |
1646 | - | $Tuple5( | |
1682 | + | $Tuple5(iP, bO, ja, iR, iZ) | |
1647 | 1683 | } | |
1648 | 1684 | } | |
1649 | 1685 | } | |
1650 | 1686 | } | |
1651 | 1687 | ||
1652 | 1688 | ||
1653 | - | func | |
1654 | - | let | |
1655 | - | let | |
1656 | - | let | |
1657 | - | let | |
1658 | - | (( | |
1659 | - | } | |
1660 | - | ||
1661 | - | ||
1662 | - | func | |
1663 | - | let | |
1664 | - | then $Tuple2( | |
1689 | + | func jb (bI,jc) = { | |
1690 | + | let hT = valueOrElse(getInteger(bJ(bI)), 0) | |
1691 | + | let jd = valueOrElse(getInteger(bD(aL, bI)), 0) | |
1692 | + | let je = (hT / 6) | |
1693 | + | let jf = (hT / 7) | |
1694 | + | ((aO + fraction(aO, ((hT + je) + (2 * jf)), 5)) + fraction(aO, jd, (jc * 5))) | |
1695 | + | } | |
1696 | + | ||
1697 | + | ||
1698 | + | func jg (av,jh,ji) = { | |
1699 | + | let jj = if ((jh == eo)) | |
1700 | + | then $Tuple2(ji, valueOrElse(getString(bS(av)), "")) | |
1665 | 1701 | else { | |
1666 | - | let | |
1667 | - | let | |
1668 | - | let | |
1669 | - | if (( | |
1670 | - | then throw((("Duck location type is " + | |
1671 | - | else $Tuple2( | |
1672 | - | } | |
1673 | - | let | |
1674 | - | let | |
1675 | - | let | |
1676 | - | let | |
1677 | - | let | |
1678 | - | let | |
1679 | - | if (( | |
1680 | - | then throw(( | |
1702 | + | let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked") | |
1703 | + | let jk = valueOrElse(getString(bU(bO)), aQ) | |
1704 | + | let cp = split(value(jk), "_") | |
1705 | + | if ((cp[bx] != "L")) | |
1706 | + | then throw((("Duck location type is " + cp[bx]) + ", but should be L")) | |
1707 | + | else $Tuple2(cp[by], bO) | |
1708 | + | } | |
1709 | + | let bI = jj._1 | |
1710 | + | let jl = jj._2 | |
1711 | + | let jm = value(assetInfo(fromBase58String(bI))) | |
1712 | + | let jn = bC(bI) | |
1713 | + | let jo = valueOrErrorMessage(getInteger(jn), (("Land " + jm.name) + " is not staked")) | |
1714 | + | let jp = valueOrErrorMessage(getString(bz(bI)), (("NFT " + jm.name) + " is orphaned")) | |
1715 | + | if ((jp != av)) | |
1716 | + | then throw((aI + " is not yours")) | |
1681 | 1717 | else { | |
1682 | - | let | |
1683 | - | $Tuple4( | |
1684 | - | } | |
1685 | - | } | |
1686 | - | ||
1687 | - | ||
1688 | - | func | |
1718 | + | let jq = split(jm.description, "_") | |
1719 | + | $Tuple4(jl, bI, jq, jo) | |
1720 | + | } | |
1721 | + | } | |
1722 | + | ||
1723 | + | ||
1724 | + | func jr (av,eC,jh,ji) = if ((0 > eC)) | |
1689 | 1725 | then throw("Negative amount") | |
1690 | 1726 | else { | |
1691 | - | let | |
1692 | - | let | |
1693 | - | let | |
1694 | - | let | |
1695 | - | if ((0 > | |
1696 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1727 | + | let fQ = jg(av, jh, ji) | |
1728 | + | let ar = fQ._3[T] | |
1729 | + | let gu = gA(fQ._3[U]) | |
1730 | + | let gE = (aH() - fQ._4) | |
1731 | + | if ((0 > gE)) | |
1732 | + | then throw(((("Saved timestamp is in future, saved = " + toString(fQ._4)) + ", final = ") + toString(aH()))) | |
1697 | 1733 | else { | |
1698 | - | let | |
1699 | - | let | |
1700 | - | let | |
1701 | - | if (( | |
1702 | - | then throw(((("Not enough resources, available = " + toString( | |
1734 | + | let jc = aq(ar) | |
1735 | + | let js = jb(fQ._2, jc) | |
1736 | + | let jt = fraction(gE, (js * jc), dJ) | |
1737 | + | if ((eC > jt)) | |
1738 | + | then throw(((("Not enough resources, available = " + toString(jt)) + ", requested = ") + toString(eC))) | |
1703 | 1739 | else { | |
1704 | - | let | |
1705 | - | let | |
1706 | - | let | |
1707 | - | let | |
1708 | - | let | |
1709 | - | let | |
1710 | - | let | |
1711 | - | let | |
1712 | - | let | |
1713 | - | if (if (( | |
1714 | - | then ( | |
1740 | + | let ju = fraction((jt - eC), dJ, (js * jc)) | |
1741 | + | let jv = (aH() - ju) | |
1742 | + | let hS = (jc / p) | |
1743 | + | let gP = gK(gu, (gE - ju), hS, js) | |
1744 | + | let hR = bH(fQ._2) | |
1745 | + | let hT = valueOrElse(getInteger(bJ(fQ._2)), 0) | |
1746 | + | let hI = hQ(hR, hS, hT) | |
1747 | + | let hZ = split(hI[bn], "_") | |
1748 | + | let gQ = parseIntValue(hZ[bq]) | |
1749 | + | if (if ((jh == eo)) | |
1750 | + | then (eC > gQ) | |
1715 | 1751 | else false) | |
1716 | - | then throw((("Only " + toString( | |
1752 | + | then throw((("Only " + toString(gQ)) + " space left in warehouse")) | |
1717 | 1753 | else { | |
1718 | - | let | |
1719 | - | let | |
1720 | - | let | |
1721 | - | let | |
1722 | - | let | |
1723 | - | then $Tuple4( | |
1724 | - | else if (( | |
1725 | - | then $Tuple4( | |
1754 | + | let hD = bT(fQ._1) | |
1755 | + | let ih = hC(hD) | |
1756 | + | let gO = split(ih[bt], "_") | |
1757 | + | let gN = split(hI[bk], "_") | |
1758 | + | let jw = if ((jh == eo)) | |
1759 | + | then $Tuple4(gC(gN, gu, (gE - ju), hS, js), ih[bt], (parseIntValue(hZ[bp]) + gP._2), (parseIntValue(hZ[bq]) - gP._2)) | |
1760 | + | else if ((jh == ep)) | |
1761 | + | then $Tuple4(hI[bk], gC(gO, gu, (gE - ju), hS, js), parseIntValue(hZ[bp]), parseIntValue(hZ[bq])) | |
1726 | 1762 | else { | |
1727 | - | let | |
1728 | - | let | |
1729 | - | $Tuple4( | |
1763 | + | let jx = gM(gN, gO, gP, gQ) | |
1764 | + | let jy = min([parseIntValue(hZ[bq]), gP._2]) | |
1765 | + | $Tuple4(jx._1, jx._2, (parseIntValue(hZ[bp]) + jy), (parseIntValue(hZ[bq]) - jy)) | |
1730 | 1766 | } | |
1731 | - | let | |
1732 | - | let | |
1733 | - | let | |
1734 | - | let | |
1735 | - | $Tuple5([IntegerEntry( | |
1767 | + | let jz = jw._1 | |
1768 | + | let jA = jw._2 | |
1769 | + | let jB = jw._3 | |
1770 | + | let jC = jw._4 | |
1771 | + | $Tuple5([IntegerEntry(bC(fQ._2), jv), IntegerEntry(bF(aI, fQ._2, av), jv)], hD, [ih[bs], jA, ih[bu], ih[bv]], hR, [hI[bj], jz, hI[bl], hI[bm], makeString([hZ[bo], toString(jB), toString(jC), hZ[br]], "_")]) | |
1736 | 1772 | } | |
1737 | 1773 | } | |
1738 | 1774 | } | |
1739 | 1775 | } | |
1740 | 1776 | ||
1741 | 1777 | ||
1742 | - | func | |
1743 | - | let | |
1744 | - | let | |
1745 | - | let | |
1746 | - | | |
1747 | - | } | |
1748 | - | ||
1749 | - | ||
1750 | - | func | |
1751 | - | let | |
1752 | - | let | |
1753 | - | let | |
1754 | - | let | |
1755 | - | let | |
1756 | - | if (if (!( | |
1757 | - | then ( | |
1778 | + | func jD (av,bI,jc,jh) = { | |
1779 | + | let jn = bC(bI) | |
1780 | + | let jo = value(getInteger(jn)) | |
1781 | + | let jt = (fraction((aH() - jo), jb(bI, jc), dJ) * jc) | |
1782 | + | jr(av, jt, jh, bI) | |
1783 | + | } | |
1784 | + | ||
1785 | + | ||
1786 | + | func jE (eY,iD,jF,bI) = { | |
1787 | + | let av = toString(iD) | |
1788 | + | let fQ = jg(av, eq, bI) | |
1789 | + | let jc = aq(fQ._3[T]) | |
1790 | + | let jG = bJ(fQ._2) | |
1791 | + | let jH = valueOrElse(getInteger(jG), 0) | |
1792 | + | if (if (!(b)) | |
1793 | + | then (jH >= 3) | |
1758 | 1794 | else false) | |
1759 | 1795 | then throw("Currently max infrastructure level = 3") | |
1760 | 1796 | else { | |
1761 | - | let | |
1762 | - | let | |
1763 | - | if (if ( | |
1764 | - | then ( | |
1797 | + | let jI = ((sqrt(jc, 0, 0, DOWN) / 5) + 2) | |
1798 | + | let dB = (jH + 1) | |
1799 | + | if (if (b) | |
1800 | + | then (dB > jI) | |
1765 | 1801 | else false) | |
1766 | - | then throw(("Currently max infrastructure level = " + toString( | |
1802 | + | then throw(("Currently max infrastructure level = " + toString(jI))) | |
1767 | 1803 | else { | |
1768 | - | let | |
1769 | - | if (if (!( | |
1770 | - | then ( | |
1804 | + | let jJ = fraction(dR, (jc * dB), p) | |
1805 | + | if (if (!(eY)) | |
1806 | + | then (jF != jJ) | |
1771 | 1807 | else false) | |
1772 | - | then throw(("Payment attached should be " + toString( | |
1808 | + | then throw(("Payment attached should be " + toString(jJ))) | |
1773 | 1809 | else { | |
1774 | - | let | |
1775 | - | let | |
1776 | - | let | |
1777 | - | let | |
1778 | - | let | |
1779 | - | let | |
1780 | - | let | |
1781 | - | let | |
1782 | - | let | |
1783 | - | let | |
1784 | - | let | |
1785 | - | let | |
1786 | - | $Tuple3(([IntegerEntry( | |
1810 | + | let hD = bT(fQ._1) | |
1811 | + | let ih = hC(hD) | |
1812 | + | let jK = split(ih[bu], "_") | |
1813 | + | let jL = fraction(k, (jc * dB), p) | |
1814 | + | let jM = makeString(eX(eY, jK, jL), "_") | |
1815 | + | let jN = jD(av, fQ._2, jc, eq) | |
1816 | + | let jO = jN._5 | |
1817 | + | let jP = hF(jO[bj]) | |
1818 | + | let jQ = makeString([split(jO[bj], "_")[0], toString(dB)], "_") | |
1819 | + | let jR = hF(jQ) | |
1820 | + | let hZ = split(jO[bn], "_") | |
1821 | + | let jS = makeString([hZ[bo], hZ[bp], toString(((parseIntValue(hZ[bq]) + jR) - jP)), toString(jR)], "_") | |
1822 | + | $Tuple3(([IntegerEntry(jG, dB), IntegerEntry(ei(fQ._2, av), dB), StringEntry(hD, makeString([ih[bs], jN._3[bt], jM, ih[bv]], ":")), StringEntry(jN._4, makeString([jQ, jO[bk], jO[bl], jO[bm], jS], ":"))] ++ jN._1), dB, jL) | |
1787 | 1823 | } | |
1788 | 1824 | } | |
1789 | 1825 | } | |
1790 | 1826 | } | |
1791 | 1827 | ||
1792 | 1828 | ||
1793 | - | func | |
1794 | - | let | |
1795 | - | let | |
1796 | - | let | |
1797 | - | $Tuple2([IntegerEntry( | |
1798 | - | } | |
1799 | - | ||
1800 | - | ||
1801 | - | func | |
1802 | - | let | |
1803 | - | let | |
1804 | - | if (if (if ( | |
1805 | - | then ( | |
1829 | + | func jT (jU,jV,jW,jX) = { | |
1830 | + | let dv = valueOrElse(getInteger(jV), 0) | |
1831 | + | let dA = (dv + jX) | |
1832 | + | let jY = dy(valueOrElse(getInteger(jU), 0), dA) | |
1833 | + | $Tuple2([IntegerEntry(jU, jY[0]), IntegerEntry(jV, dA), IntegerEntry(jW, (valueOrElse(getInteger(jW), 0) + jY[1]))], dA) | |
1834 | + | } | |
1835 | + | ||
1836 | + | ||
1837 | + | func jZ (bO,jX) = { | |
1838 | + | let jm = value(assetInfo(fromBase58String(bO))) | |
1839 | + | let av = valueOrErrorMessage(getString(bR(bO)), (("NFT " + jm.name) + " is orphaned")) | |
1840 | + | if (if (if (c) | |
1841 | + | then (jm.issuer == this) | |
1806 | 1842 | else false) | |
1807 | - | then contains( | |
1843 | + | then contains(jm.name, aK) | |
1808 | 1844 | else false) | |
1809 | - | then | |
1810 | - | else | |
1811 | - | } | |
1812 | - | ||
1813 | - | ||
1814 | - | func | |
1815 | - | ||
1816 | - | ||
1817 | - | func | |
1818 | - | let | |
1819 | - | let | |
1820 | - | let | |
1821 | - | if (!(isDefined( | |
1845 | + | then jT(cW(av), cV(av), cX(av), jX) | |
1846 | + | else jT(cS(bO), cR(bO), cT(bO), jX) | |
1847 | + | } | |
1848 | + | ||
1849 | + | ||
1850 | + | func ka (av,jX) = jT(cW(av), cV(av), cX(av), jX) | |
1851 | + | ||
1852 | + | ||
1853 | + | func kb (av) = { | |
1854 | + | let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked") | |
1855 | + | let kc = bM(av) | |
1856 | + | let kd = getString(kc) | |
1857 | + | if (!(isDefined(kd))) | |
1822 | 1858 | then throw("You are not eligible for ONBOARD artifact") | |
1823 | 1859 | else { | |
1824 | - | let | |
1825 | - | let | |
1826 | - | if (isDefined( | |
1827 | - | then throw(("You already used your ONBOARD artifact on duck " + value( | |
1860 | + | let ke = bP(av) | |
1861 | + | let kf = getString(ke) | |
1862 | + | if (isDefined(kf)) | |
1863 | + | then throw(("You already used your ONBOARD artifact on duck " + value(kf))) | |
1828 | 1864 | else { | |
1829 | - | let | |
1830 | - | let | |
1831 | - | if (isDefined( | |
1832 | - | then throw(((("The duck " + | |
1833 | - | else ([StringEntry( | |
1865 | + | let kg = bN(bO) | |
1866 | + | let kh = getString(kg) | |
1867 | + | if (isDefined(kh)) | |
1868 | + | then throw(((("The duck " + bO) + " already got points from ONBOARD artifact from user ") + value(kh))) | |
1869 | + | else ([StringEntry(ke, bO), StringEntry(kg, av)] ++ jZ(bO, ds)._1) | |
1834 | 1870 | } | |
1835 | 1871 | } | |
1836 | 1872 | } | |
1837 | 1873 | ||
1838 | 1874 | ||
1839 | - | func | |
1840 | - | let | |
1841 | - | let | |
1842 | - | let | |
1843 | - | let | |
1844 | - | if ((valueOrElse(getInteger( | |
1875 | + | func ki (av,ji) = { | |
1876 | + | let fQ = jg(av, eq, ji) | |
1877 | + | let bI = fQ._2 | |
1878 | + | let jc = aq(fQ._3[T]) | |
1879 | + | let kj = bD(aL, bI) | |
1880 | + | if ((valueOrElse(getInteger(kj), 0) > 0)) | |
1845 | 1881 | then throw("Presale artifact is already activated") | |
1846 | - | else if ((parseIntValue( | |
1847 | - | then throw(((( | |
1882 | + | else if ((parseIntValue(fQ._3[S]) > ec)) | |
1883 | + | then throw((((aI + " ") + bI) + " is not eligible for presale artifact")) | |
1848 | 1884 | else { | |
1849 | - | let | |
1850 | - | ((( | |
1885 | + | let jN = jD(av, bI, jc, eq) | |
1886 | + | (((jN._1 :+ IntegerEntry(kj, jc)) :+ StringEntry(jN._2, makeString(jN._3, ":"))) :+ StringEntry(jN._4, makeString(jN._5, ":"))) | |
1851 | 1887 | } | |
1852 | 1888 | } | |
1853 | 1889 | ||
1854 | 1890 | ||
1855 | - | func | |
1856 | - | let | |
1857 | - | let | |
1858 | - | let | |
1859 | - | let | |
1860 | - | let | |
1861 | - | let | |
1862 | - | if (( | |
1891 | + | func kk (bO) = { | |
1892 | + | let co = valueOrElse(getInteger(Q, bZ), 0) | |
1893 | + | let jk = split(valueOrElse(getString(bU(bO)), aQ), "_") | |
1894 | + | let cq = lastBlock.timestamp | |
1895 | + | let cr = ci(Q, co) | |
1896 | + | let ck = cr[ce] | |
1897 | + | let cl = cr[cf] | |
1898 | + | if ((jk[bx] != "T")) | |
1863 | 1899 | then false | |
1864 | - | else if (if (if ((parseIntValue( | |
1865 | - | then ( | |
1900 | + | else if (if (if ((parseIntValue(jk[bw]) == co)) | |
1901 | + | then (cl[ch] == "INPROGRESS") | |
1866 | 1902 | else false) | |
1867 | - | then (parseIntValue( | |
1903 | + | then (parseIntValue(ck[cg]) > cq) | |
1868 | 1904 | else false) | |
1869 | 1905 | then throw("Your duck is taking part in the tournament") | |
1870 | - | else | |
1871 | - | } | |
1872 | - | ||
1873 | - | ||
1874 | - | func | |
1875 | - | let | |
1876 | - | if ( | |
1906 | + | else ap(invoke(this, "exitTournamentInternal", [bO], nil)) | |
1907 | + | } | |
1908 | + | ||
1909 | + | ||
1910 | + | func kl (km,dB,kn,av,ko,kp) = { | |
1911 | + | let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked") | |
1912 | + | if (kk(bO)) | |
1877 | 1913 | then throw("mergeInternal_checkTournament") | |
1878 | 1914 | else { | |
1879 | - | func | |
1880 | - | let | |
1881 | - | let | |
1882 | - | let | |
1883 | - | let | |
1884 | - | if (( | |
1885 | - | then throw(( | |
1915 | + | func kq (eL,bI) = { | |
1916 | + | let jm = value(assetInfo(fromBase58String(bI))) | |
1917 | + | let jn = bC(bI) | |
1918 | + | let jo = valueOrErrorMessage(getInteger(jn), (("NFT " + jm.name) + " is not staked")) | |
1919 | + | let jp = valueOrErrorMessage(getString(bz(bI)), (("NFT " + jm.name) + " is orphaned")) | |
1920 | + | if ((jp != av)) | |
1921 | + | then throw((aI + " is not yours")) | |
1886 | 1922 | else { | |
1887 | - | let | |
1888 | - | let | |
1889 | - | if (if (( | |
1890 | - | then ( | |
1923 | + | let jq = split(jm.description, "_") | |
1924 | + | let ae = jq[V] | |
1925 | + | if (if ((eL._3 != "")) | |
1926 | + | then (eL._3 != ae) | |
1891 | 1927 | else false) | |
1892 | 1928 | then throw("Lands should be on the same continent to merge") | |
1893 | 1929 | else { | |
1894 | - | let | |
1895 | - | let | |
1896 | - | let | |
1897 | - | let | |
1898 | - | let | |
1899 | - | let | |
1900 | - | let | |
1901 | - | let | |
1902 | - | let | |
1903 | - | if (("S" == | |
1930 | + | let ar = jq[T] | |
1931 | + | let kr = eL._1 | |
1932 | + | let gy = valueOrErrorMessage(indexOf(kr, ar), "You haven't passed all the lands needed") | |
1933 | + | let ks = (take(kr, gy) + drop(kr, (gy + 1))) | |
1934 | + | let jc = aq(ar) | |
1935 | + | let kt = (eL._2 + valueOrElse(getInteger(bD(aL, bI)), 0)) | |
1936 | + | let hT = valueOrElse(getInteger(bJ(bI)), 0) | |
1937 | + | let ku = { | |
1938 | + | let g = ar | |
1939 | + | if (("S" == g)) | |
1904 | 1940 | then 3 | |
1905 | - | else if (("M" == | |
1941 | + | else if (("M" == g)) | |
1906 | 1942 | then 4 | |
1907 | - | else if (("L" == | |
1943 | + | else if (("L" == g)) | |
1908 | 1944 | then 5 | |
1909 | - | else if (("XL" == | |
1945 | + | else if (("XL" == g)) | |
1910 | 1946 | then 6 | |
1911 | 1947 | else throw("Only S, M, L, XL can merge") | |
1912 | 1948 | } | |
1913 | - | if (( | |
1949 | + | if ((hT != ku)) | |
1914 | 1950 | then throw("All lands should be maxed to merge") | |
1915 | 1951 | else { | |
1916 | - | let | |
1917 | - | let | |
1918 | - | let | |
1919 | - | if ((0 > | |
1920 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1952 | + | let eh = jq[S] | |
1953 | + | let gu = gA(jq[U]) | |
1954 | + | let gE = (lastBlock.timestamp - jo) | |
1955 | + | if ((0 > gE)) | |
1956 | + | then throw(((("Saved timestamp is in future, saved = " + toString(jo)) + ", current = ") + toString(lastBlock.timestamp))) | |
1921 | 1957 | else { | |
1922 | - | let | |
1923 | - | let | |
1924 | - | let | |
1925 | - | let | |
1926 | - | let | |
1927 | - | let | |
1928 | - | let | |
1929 | - | let | |
1930 | - | if (!(isDefined( | |
1931 | - | then throw(("Your staked lands don't contain " + | |
1958 | + | let js = jb(bI, jc) | |
1959 | + | let hS = (jc / p) | |
1960 | + | let jA = gC(split(eL._4, "_"), gu, gE, hS, js) | |
1961 | + | let eV = gs(eL._6, gu, hS, -1) | |
1962 | + | let kv = gs(eL._10, gu, hS, -1) | |
1963 | + | let hm = gs(eL._9, gu, hS, 1) | |
1964 | + | let kw = eL._7 | |
1965 | + | let K = indexOf(kw, bI) | |
1966 | + | if (!(isDefined(K))) | |
1967 | + | then throw(("Your staked lands don't contain " + bI)) | |
1932 | 1968 | else { | |
1933 | - | let | |
1934 | - | let | |
1935 | - | $Tuple10( | |
1936 | - | then [DeleteEntry( | |
1937 | - | else nil)), | |
1969 | + | let kx = bB(bI) | |
1970 | + | let ky = valueOrElse(getString(kx), "") | |
1971 | + | $Tuple10(ks, kt, ae, jA, ((((((((((((eL._5 :+ DeleteEntry(bC(bI))) :+ DeleteEntry(bF(aI, bI, av))) :+ DeleteEntry(eg(eh))) :+ DeleteEntry(bz(bI))) :+ DeleteEntry(bJ(bI))) :+ DeleteEntry(ei(bI, av))) :+ DeleteEntry(bD(aL, bI))) :+ DeleteEntry(ej(eh))) :+ DeleteEntry(bH(bI))) :+ DeleteEntry(kx)) :+ Burn(fromBase58String(bI), 1)) ++ (if ((ky != "")) | |
1972 | + | then [DeleteEntry(ee(ky))] | |
1973 | + | else nil)), eV, removeByIndex(kw, value(K)), (eL._8 + jc), hm, kv) | |
1938 | 1974 | } | |
1939 | 1975 | } | |
1940 | 1976 | } | |
1941 | 1977 | } | |
1942 | 1978 | } | |
1943 | 1979 | } | |
1944 | 1980 | ||
1945 | - | let | |
1946 | - | let | |
1947 | - | let | |
1948 | - | let | |
1949 | - | let | |
1950 | - | let | |
1951 | - | then split_51C(value( | |
1981 | + | let hD = bT(bO) | |
1982 | + | let ih = hC(hD) | |
1983 | + | let gt = split(valueOrElse(getString(ac()), "0_0_0_0_0_0"), "_") | |
1984 | + | let kz = af(av) | |
1985 | + | let kA = getString(kz) | |
1986 | + | let kB = if (isDefined(kA)) | |
1987 | + | then split_51C(value(kA), "_") | |
1952 | 1988 | else nil | |
1953 | - | let | |
1954 | - | let | |
1955 | - | let | |
1956 | - | let | |
1957 | - | let | |
1958 | - | let | |
1959 | - | func | |
1960 | - | then | |
1961 | - | else | |
1962 | - | ||
1963 | - | func | |
1964 | - | then | |
1989 | + | let kC = split(value(assetInfo(fromBase58String(ko[0]))).description, "_")[V] | |
1990 | + | let kD = split(valueOrElse(getString(ad(kC)), "0_0_0_0_0_0"), "_") | |
1991 | + | let eW = { | |
1992 | + | let eN = ko | |
1993 | + | let eO = size(eN) | |
1994 | + | let eP = $Tuple10(kn, 0, "", ih[bt], nil, gt, kB, 0, split("0_0_0_0_0_0", "_"), kD) | |
1995 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
1996 | + | then eR | |
1997 | + | else kq(eR, eN[eS]) | |
1998 | + | ||
1999 | + | func eT (eR,eS) = if ((eS >= eO)) | |
2000 | + | then eR | |
1965 | 2001 | else throw("List size exceeds 5") | |
1966 | 2002 | ||
1967 | - | eQ( | |
2003 | + | eT(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5) | |
1968 | 2004 | } | |
1969 | - | let | |
1970 | - | let | |
1971 | - | let | |
1972 | - | let | |
1973 | - | let | |
1974 | - | let | |
1975 | - | let | |
1976 | - | let | |
1977 | - | let | |
1978 | - | let | |
1979 | - | let | |
1980 | - | $Tuple2(((((((((((((((( | |
1981 | - | then StringEntry( | |
1982 | - | else DeleteEntry( | |
2005 | + | let ae = eW._3 | |
2006 | + | let hf = valueOrErrorMessage(indexOf(bb, ae), ("Unknown continent: " + ae)) | |
2007 | + | let gB = hl(eW._9, (aq(km) / p)) | |
2008 | + | let iG = valueOrElse(getInteger(ed()), (ec + 1)) | |
2009 | + | let kE = toString(iG) | |
2010 | + | let iH = Issue(eA(kE, km), makeString([kE, km, gB, ae], "_"), 1, 0, false) | |
2011 | + | let bA = calculateAssetId(iH) | |
2012 | + | let kF = toBase58String(bA) | |
2013 | + | let jM = makeString(eX((kp > 0), split(ih[bu], "_"), kp), "_") | |
2014 | + | let kG = ah(av) | |
2015 | + | let kH = valueOrElse(getInteger(kG), 0) | |
2016 | + | $Tuple2((((((((((((((((eW._5 :+ (if ((size(eW._7) > 0)) | |
2017 | + | then StringEntry(kz, makeString_11C(eW._7, "_")) | |
2018 | + | else DeleteEntry(kz))) :+ IntegerEntry(kG, if ((eW._8 > kH)) | |
1983 | 2019 | then 0 | |
1984 | - | else ( | |
1985 | - | } | |
1986 | - | } | |
1987 | - | ||
1988 | - | ||
1989 | - | func | |
1990 | - | ||
1991 | - | ||
1992 | - | func | |
1993 | - | ||
1994 | - | ||
1995 | - | func | |
1996 | - | ||
1997 | - | ||
1998 | - | func | |
1999 | - | ||
2000 | - | ||
2001 | - | func | |
2002 | - | let | |
2003 | - | if ((4 == | |
2004 | - | then | |
2005 | - | else if ((3 == | |
2006 | - | then | |
2007 | - | else if ((5 == | |
2008 | - | then | |
2009 | - | else if ((2 == | |
2010 | - | then | |
2020 | + | else (kH - eW._8))) :+ IntegerEntry(ed(), (iG + 1))) :+ iH) :+ StringEntry(eg(kE), kF)) :+ StringEntry(bz(kF), av)) :+ StringEntry(ej(kE), av)) :+ IntegerEntry(bD(aL, kF), eW._2)) :+ IntegerEntry(bJ(kF), dB)) :+ IntegerEntry(ei(kF, av), dB)) :+ StringEntry(hD, makeString([ih[bs], eW._4, jM, ih[bv]], ":"))) :+ StringEntry(ac(), makeString(eW._6, "_"))) :+ StringEntry(ad(ae), makeString(eW._10, "_"))) :+ StringEntry(bU(bO), makeString([ae, "L", kF], "_"))) :+ ScriptTransfer(addressFromStringValue(av), 1, bA)), kF) | |
2021 | + | } | |
2022 | + | } | |
2023 | + | ||
2024 | + | ||
2025 | + | func kI (av,ko) = kl("M", 3, "SSSS", av, ko, 0) | |
2026 | + | ||
2027 | + | ||
2028 | + | func kJ (av,ko) = kl("L", 4, "SMM", av, ko, (k * 4)) | |
2029 | + | ||
2030 | + | ||
2031 | + | func kK (av,ko) = kl("XL", 5, "SSSML", av, ko, (k * 47)) | |
2032 | + | ||
2033 | + | ||
2034 | + | func kL (av,ko) = kl("XXL", 6, "LXL", av, ko, (k * 54)) | |
2035 | + | ||
2036 | + | ||
2037 | + | func kM (av,ko) = { | |
2038 | + | let g = size(ko) | |
2039 | + | if ((4 == g)) | |
2040 | + | then kI(av, ko) | |
2041 | + | else if ((3 == g)) | |
2042 | + | then kJ(av, ko) | |
2043 | + | else if ((5 == g)) | |
2044 | + | then kK(av, ko) | |
2045 | + | else if ((2 == g)) | |
2046 | + | then kL(av, ko) | |
2011 | 2047 | else throw("Unknown merge") | |
2012 | 2048 | } | |
2013 | 2049 | ||
2014 | 2050 | ||
2015 | - | func | |
2016 | - | then valueOrElse(getBoolean( | |
2051 | + | func kN (gy) = if (if ((gy.originCaller != L)) | |
2052 | + | then valueOrElse(getBoolean(at()), false) | |
2017 | 2053 | else false) | |
2018 | 2054 | then throw("Contracts are under maintenance") | |
2019 | - | else [StringEntry(dx(toString(gv.originCaller)), toBase58String(gv.transactionId))] | |
2020 | - | ||
2021 | - | ||
2022 | - | @Callable(gv) | |
2023 | - | func constructorV1 (kI) = if ((gv.caller != this)) | |
2055 | + | else [StringEntry(au(toString(gy.originCaller)), toBase58String(gy.transactionId))] | |
2056 | + | ||
2057 | + | ||
2058 | + | func kO (av,bI) = { | |
2059 | + | let hR = bH(bI) | |
2060 | + | let kP = split(value(assetInfo(fromBase58String(bI))).description, "_") | |
2061 | + | let ar = kP[T] | |
2062 | + | let jc = aq(ar) | |
2063 | + | let hT = valueOrElse(getInteger(bJ(bI)), 0) | |
2064 | + | let hS = (jc / p) | |
2065 | + | let gu = gA(kP[U]) | |
2066 | + | let hI = hQ(hR, hS, hT) | |
2067 | + | let gN = split(hI[bk], "_") | |
2068 | + | let jn = bC(bI) | |
2069 | + | let jo = getIntegerValue(jn) | |
2070 | + | let gE = (aH() - jo) | |
2071 | + | if ((0 > gE)) | |
2072 | + | then throw(((("Saved timestamp is in future, saved = " + toString(jo)) + ", final = ") + toString(aH()))) | |
2073 | + | else { | |
2074 | + | let js = jb(bI, jc) | |
2075 | + | let kQ = gI(gN, gu, gE, hS, js) | |
2076 | + | let jd = valueOrElse(getInteger(bD(aL, bI)), 0) | |
2077 | + | let kR = ((jc * o) + ((((jc * hT) + jd) * o) / 5)) | |
2078 | + | let kS = (fraction(kQ._2, aR, o) * aU) | |
2079 | + | func kT (eL,hL) = (eL + parseIntValue(hL)) | |
2080 | + | ||
2081 | + | let kU = { | |
2082 | + | let eN = split(hI[bl], "_") | |
2083 | + | let eO = size(eN) | |
2084 | + | let eP = 0 | |
2085 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
2086 | + | then eR | |
2087 | + | else kT(eR, eN[eS]) | |
2088 | + | ||
2089 | + | func eT (eR,eS) = if ((eS >= eO)) | |
2090 | + | then eR | |
2091 | + | else throw("List size exceeds 6") | |
2092 | + | ||
2093 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
2094 | + | } | |
2095 | + | let kV = (fraction(kU, (2 * aR), o) * aU) | |
2096 | + | let kW = if ((hI[bm] == "")) | |
2097 | + | then nil | |
2098 | + | else split_4C(hI[bm], "_") | |
2099 | + | func hM (eL,hL) = { | |
2100 | + | let fv = eL._2 | |
2101 | + | let kX = parseIntValue(split(bd[fv], "_")[be]) | |
2102 | + | $Tuple2((eL._1 + ((parseIntValue(hL) * kX) * n)), (fv + 1)) | |
2103 | + | } | |
2104 | + | ||
2105 | + | let kY = { | |
2106 | + | let eN = kW | |
2107 | + | let eO = size(eN) | |
2108 | + | let eP = $Tuple2(0, 0) | |
2109 | + | func hx (eR,eS) = if ((eS >= eO)) | |
2110 | + | then eR | |
2111 | + | else hM(eR, eN[eS]) | |
2112 | + | ||
2113 | + | func hy (eR,eS) = if ((eS >= eO)) | |
2114 | + | then eR | |
2115 | + | else throw("List size exceeds 24") | |
2116 | + | ||
2117 | + | hy(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(eP, 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) | |
2118 | + | } | |
2119 | + | let kZ = (fraction(kY._1, (2 * aR), o) * aU) | |
2120 | + | $Tuple4(kR, kS, kV, kZ) | |
2121 | + | } | |
2122 | + | } | |
2123 | + | ||
2124 | + | ||
2125 | + | func la (av,bO) = { | |
2126 | + | let gk = cU(bO) | |
2127 | + | let lb = split(valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
2128 | + | let hD = bT(bO) | |
2129 | + | let ih = hC(hD) | |
2130 | + | let gn = gc(lb, fr(ih[bv]), true, nil) | |
2131 | + | let lc = fw(gn) | |
2132 | + | func hK (eL,hL) = (eL + parseIntValue(hL)) | |
2133 | + | ||
2134 | + | let jA = { | |
2135 | + | let eN = split(ih[bt], "_") | |
2136 | + | let eO = size(eN) | |
2137 | + | let eP = 0 | |
2138 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
2139 | + | then eR | |
2140 | + | else hK(eR, eN[eS]) | |
2141 | + | ||
2142 | + | func eT (eR,eS) = if ((eS >= eO)) | |
2143 | + | then eR | |
2144 | + | else throw("List size exceeds 6") | |
2145 | + | ||
2146 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6) | |
2147 | + | } | |
2148 | + | let kS = (fraction(jA, aR, o) * aU) | |
2149 | + | let ld = { | |
2150 | + | let eN = split(ih[bu], "_") | |
2151 | + | let eO = size(eN) | |
2152 | + | let eP = 0 | |
2153 | + | func hx (eR,eS) = if ((eS >= eO)) | |
2154 | + | then eR | |
2155 | + | else hK(eR, eN[eS]) | |
2156 | + | ||
2157 | + | func hy (eR,eS) = if ((eS >= eO)) | |
2158 | + | then eR | |
2159 | + | else throw("List size exceeds 6") | |
2160 | + | ||
2161 | + | hy(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6) | |
2162 | + | } | |
2163 | + | let kV = (fraction(ld, (2 * aR), o) * aU) | |
2164 | + | let kW = if ((lc == "")) | |
2165 | + | then nil | |
2166 | + | else split_4C(lc, "_") | |
2167 | + | func hM (eL,hL) = { | |
2168 | + | let fv = eL._2 | |
2169 | + | let kX = parseIntValue(split(bd[fv], "_")[be]) | |
2170 | + | $Tuple2((eL._1 + ((parseIntValue(hL) * kX) * n)), (fv + 1)) | |
2171 | + | } | |
2172 | + | ||
2173 | + | let le = { | |
2174 | + | let eN = kW | |
2175 | + | let eO = size(eN) | |
2176 | + | let eP = $Tuple2(0, 0) | |
2177 | + | func hA (eR,eS) = if ((eS >= eO)) | |
2178 | + | then eR | |
2179 | + | else hM(eR, eN[eS]) | |
2180 | + | ||
2181 | + | func hB (eR,eS) = if ((eS >= eO)) | |
2182 | + | then eR | |
2183 | + | else throw("List size exceeds 24") | |
2184 | + | ||
2185 | + | hB(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(eP, 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) | |
2186 | + | } | |
2187 | + | let kZ = (fraction(le._1, (2 * aR), o) * aU) | |
2188 | + | $Tuple3(kS, kV, kZ) | |
2189 | + | } | |
2190 | + | ||
2191 | + | ||
2192 | + | @Callable(gy) | |
2193 | + | func constructorV1 (lf) = if ((gy.caller != this)) | |
2024 | 2194 | then throw("Permission denied") | |
2025 | - | else [StringEntry( | |
2026 | - | ||
2027 | - | ||
2028 | - | ||
2029 | - | @Callable( | |
2030 | - | func saveInteger ( | |
2195 | + | else [StringEntry(F(), lf)] | |
2196 | + | ||
2197 | + | ||
2198 | + | ||
2199 | + | @Callable(gy) | |
2200 | + | func saveInteger (x,eC) = if ((gy.caller != this)) | |
2031 | 2201 | then throw("saveInteger is not public method") | |
2032 | - | else [IntegerEntry( | |
2033 | - | ||
2034 | - | ||
2035 | - | ||
2036 | - | @Callable( | |
2037 | - | func setBlocked ( | |
2202 | + | else [IntegerEntry(x, eC)] | |
2203 | + | ||
2204 | + | ||
2205 | + | ||
2206 | + | @Callable(gy) | |
2207 | + | func setBlocked (lg) = if ((gy.caller != this)) | |
2038 | 2208 | then throw("permission denied") | |
2039 | - | else [BooleanEntry( | |
2040 | - | ||
2041 | - | ||
2042 | - | ||
2043 | - | @Callable( | |
2209 | + | else [BooleanEntry(at(), lg)] | |
2210 | + | ||
2211 | + | ||
2212 | + | ||
2213 | + | @Callable(gy) | |
2044 | 2214 | func stakeLand () = { | |
2045 | - | let | |
2046 | - | if ((size( | |
2215 | + | let lh = kN(gy) | |
2216 | + | if ((size(gy.payments) != 1)) | |
2047 | 2217 | then throw("Exactly one payment required") | |
2048 | 2218 | else { | |
2049 | - | let | |
2050 | - | let | |
2051 | - | let | |
2052 | - | if (( | |
2053 | - | then throw((("NFT " + | |
2219 | + | let li = value(gy.payments[0]) | |
2220 | + | let bA = value(li.assetId) | |
2221 | + | let w = toString(gy.caller) | |
2222 | + | if ((li.amount != 1)) | |
2223 | + | then throw((("NFT " + aI) + " token should be attached as payment")) | |
2054 | 2224 | else { | |
2055 | - | let | |
2056 | - | if (( | |
2225 | + | let jm = value(assetInfo(bA)) | |
2226 | + | if ((jm.issuer != this)) | |
2057 | 2227 | then throw("Unknown issuer of token") | |
2058 | - | else if (!(contains( | |
2059 | - | then throw((("Only NFT " + | |
2228 | + | else if (!(contains(jm.name, aI))) | |
2229 | + | then throw((("Only NFT " + aI) + " tokens are accepted")) | |
2060 | 2230 | else { | |
2061 | - | let | |
2062 | - | let | |
2063 | - | then dropRight( | |
2064 | - | else if (contains( | |
2065 | - | then dropRight( | |
2066 | - | else dropRight( | |
2067 | - | if (!(isDefined(parseInt( | |
2068 | - | then throw(("Cannot parse land number from " + | |
2231 | + | let lj = drop(jm.name, 4) | |
2232 | + | let eh = if (contains(lj, "XXL")) | |
2233 | + | then dropRight(lj, 3) | |
2234 | + | else if (contains(lj, "XL")) | |
2235 | + | then dropRight(lj, 2) | |
2236 | + | else dropRight(lj, 1) | |
2237 | + | if (!(isDefined(parseInt(eh)))) | |
2238 | + | then throw(("Cannot parse land number from " + jm.name)) | |
2069 | 2239 | else { | |
2070 | - | let | |
2071 | - | let | |
2072 | - | if (isDefined(getInteger( | |
2073 | - | then throw((("NFT " + | |
2240 | + | let bI = toBase58String(bA) | |
2241 | + | let jn = bC(bI) | |
2242 | + | if (isDefined(getInteger(jn))) | |
2243 | + | then throw((("NFT " + jm.name) + " is already staked")) | |
2074 | 2244 | else { | |
2075 | - | let | |
2076 | - | let | |
2077 | - | let | |
2078 | - | let | |
2079 | - | let | |
2080 | - | let | |
2081 | - | let | |
2082 | - | let | |
2083 | - | let | |
2084 | - | let | |
2085 | - | let | |
2086 | - | then split_51C(value( | |
2245 | + | let jq = split(jm.description, "_") | |
2246 | + | let gu = gA(jq[U]) | |
2247 | + | let jc = aq(jq[T]) | |
2248 | + | let hS = (jc / p) | |
2249 | + | let eV = gz(gu, hS, 1) | |
2250 | + | let lk = ad(jq[V]) | |
2251 | + | let kD = split(valueOrElse(getString(lk), "0_0_0_0_0_0"), "_") | |
2252 | + | let ll = makeString(gs(kD, gu, hS, 1), "_") | |
2253 | + | let kz = af(w) | |
2254 | + | let kA = getString(kz) | |
2255 | + | let kw = if (isDefined(kA)) | |
2256 | + | then split_51C(value(kA), "_") | |
2087 | 2257 | else nil | |
2088 | - | if (containsElement( | |
2089 | - | then throw(("Your staked lands already contain " + | |
2090 | - | else if ((size( | |
2091 | - | then throw((("Your already staked max (" + toString( | |
2258 | + | if (containsElement(kw, bI)) | |
2259 | + | then throw(("Your staked lands already contain " + bI)) | |
2260 | + | else if ((size(kw) >= aN)) | |
2261 | + | then throw((("Your already staked max (" + toString(aN)) + ") lands")) | |
2092 | 2262 | else { | |
2093 | - | let | |
2094 | - | let | |
2095 | - | let | |
2096 | - | let | |
2097 | - | $Tuple2(([IntegerEntry( | |
2263 | + | let hT = valueOrElse(getInteger(bJ(bI)), 0) | |
2264 | + | let kG = ah(w) | |
2265 | + | let lm = valueOrElse(getInteger(kG), 0) | |
2266 | + | let ln = invoke(P, "onStakeUnstakeLand", [w], nil) | |
2267 | + | $Tuple2(([IntegerEntry(jn, lastBlock.timestamp), IntegerEntry(bF(aI, bI, w), lastBlock.timestamp), StringEntry(kz, makeString_11C((kw :+ bI), "_")), IntegerEntry(kG, (lm + jc)), StringEntry(bz(bI), w), StringEntry(ej(eh), w), IntegerEntry(ei(bI, w), hT), StringEntry(ac(), eV), StringEntry(lk, ll)] ++ lh), ln) | |
2098 | 2268 | } | |
2099 | 2269 | } | |
2100 | 2270 | } | |
2101 | 2271 | } | |
2102 | 2272 | } | |
2103 | 2273 | } | |
2104 | 2274 | } | |
2105 | 2275 | ||
2106 | 2276 | ||
2107 | 2277 | ||
2108 | - | @Callable( | |
2109 | - | func unstakeLand ( | |
2110 | - | let | |
2111 | - | if ((size( | |
2278 | + | @Callable(gy) | |
2279 | + | func unstakeLand (ji) = { | |
2280 | + | let lh = kN(gy) | |
2281 | + | if ((size(gy.payments) != 0)) | |
2112 | 2282 | then throw("No payments required") | |
2113 | 2283 | else { | |
2114 | - | let | |
2115 | - | let | |
2116 | - | let | |
2117 | - | let | |
2118 | - | let | |
2119 | - | let | |
2120 | - | let | |
2121 | - | let | |
2122 | - | let | |
2123 | - | let | |
2124 | - | let | |
2125 | - | let | |
2126 | - | let | |
2127 | - | let | |
2128 | - | let | |
2129 | - | if (!(isDefined( | |
2130 | - | then throw(("Your staked lands don't contain " + | |
2284 | + | let av = toString(gy.caller) | |
2285 | + | let fQ = jg(av, ep, ji) | |
2286 | + | let bI = fQ._2 | |
2287 | + | let jq = fQ._3 | |
2288 | + | let kz = af(av) | |
2289 | + | let gu = gA(jq[U]) | |
2290 | + | let jc = aq(jq[T]) | |
2291 | + | let hS = (jc / p) | |
2292 | + | let eV = gz(gu, hS, -1) | |
2293 | + | let lk = ad(jq[V]) | |
2294 | + | let kD = split(valueOrElse(getString(lk), "0_0_0_0_0_0"), "_") | |
2295 | + | let ll = makeString(gs(kD, gu, hS, -1), "_") | |
2296 | + | let jN = jD(av, bI, jc, ep) | |
2297 | + | let kw = split_51C(valueOrElse(getString(kz), ""), "_") | |
2298 | + | let K = indexOf(kw, bI) | |
2299 | + | if (!(isDefined(K))) | |
2300 | + | then throw(("Your staked lands don't contain " + bI)) | |
2131 | 2301 | else { | |
2132 | - | let | |
2133 | - | let | |
2134 | - | if (( | |
2135 | - | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString( | |
2302 | + | let cq = lastBlock.timestamp | |
2303 | + | let lo = valueOrElse(getInteger(O, bV(av)), 0) | |
2304 | + | if ((lo >= cq)) | |
2305 | + | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lo))) | |
2136 | 2306 | else { | |
2137 | - | let | |
2138 | - | if (( | |
2139 | - | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString( | |
2307 | + | let lp = (valueOrElse(getInteger(P, dK(av)), 0) + l) | |
2308 | + | if ((lp > cq)) | |
2309 | + | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lp))) | |
2140 | 2310 | else { | |
2141 | - | let | |
2142 | - | let | |
2143 | - | let | |
2311 | + | let kG = ah(av) | |
2312 | + | let kH = valueOrElse(getInteger(kG), 0) | |
2313 | + | let lq = if ((jc > kH)) | |
2144 | 2314 | then 0 | |
2145 | - | else ( | |
2146 | - | let | |
2147 | - | $Tuple2(([ScriptTransfer( | |
2148 | - | then StringEntry( | |
2149 | - | else DeleteEntry( | |
2315 | + | else (kH - jc) | |
2316 | + | let ln = invoke(P, "onStakeUnstakeLand", [av], nil) | |
2317 | + | $Tuple2(([ScriptTransfer(gy.caller, 1, fromBase58String(bI)), DeleteEntry(bC(bI)), DeleteEntry(bF(aI, bI, av)), StringEntry(ac(), eV), StringEntry(lk, ll), StringEntry(jN._2, makeString(jN._3, ":")), if ((size(kw) > 1)) | |
2318 | + | then StringEntry(kz, makeString_11C(removeByIndex(kw, value(K)), "_")) | |
2319 | + | else DeleteEntry(kz), IntegerEntry(kG, lq)] ++ lh), ln) | |
2150 | 2320 | } | |
2151 | 2321 | } | |
2152 | 2322 | } | |
2153 | 2323 | } | |
2154 | 2324 | } | |
2155 | 2325 | ||
2156 | 2326 | ||
2157 | 2327 | ||
2158 | - | @Callable(gv) | |
2328 | + | @Callable(gy) | |
2329 | + | func unstakeLandCallback (bI,av) = if ((toString(gy.caller) != j)) | |
2330 | + | then throw("Permission denied") | |
2331 | + | else { | |
2332 | + | let lr = kO(av, bI) | |
2333 | + | let ln = invoke(P, "onStakeUnstakeLand", [av], nil) | |
2334 | + | $Tuple2([ScriptTransfer(addressFromStringValue(av), 1, fromBase58String(bI)), DeleteEntry(bC(bI)), DeleteEntry(bF(aI, bI, av))], $Tuple5(lr._1, lr._2, lr._3, lr._4, ln)) | |
2335 | + | } | |
2336 | + | ||
2337 | + | ||
2338 | + | ||
2339 | + | @Callable(gy) | |
2340 | + | func unstakeLandREADONLY (bI,av) = { | |
2341 | + | let lr = kO(av, bI) | |
2342 | + | $Tuple2(nil, lr) | |
2343 | + | } | |
2344 | + | ||
2345 | + | ||
2346 | + | ||
2347 | + | @Callable(gy) | |
2348 | + | func unstakeLandsFinalizeCallback (av) = if ((toString(gy.caller) != j)) | |
2349 | + | then throw("Permission denied") | |
2350 | + | else $Tuple2([DeleteEntry(af(av)), DeleteEntry(ah(av))], 0) | |
2351 | + | ||
2352 | + | ||
2353 | + | ||
2354 | + | @Callable(gy) | |
2159 | 2355 | func stakeDuck () = { | |
2160 | - | let | |
2161 | - | if ((size( | |
2356 | + | let lh = kN(gy) | |
2357 | + | if ((size(gy.payments) != 1)) | |
2162 | 2358 | then throw("Exactly one payment required") | |
2163 | 2359 | else { | |
2164 | - | let | |
2165 | - | let | |
2166 | - | let | |
2167 | - | if (( | |
2168 | - | then throw((("NFT " + | |
2360 | + | let li = value(gy.payments[0]) | |
2361 | + | let bA = value(li.assetId) | |
2362 | + | let w = toString(gy.caller) | |
2363 | + | if ((li.amount != 1)) | |
2364 | + | then throw((("NFT " + aJ) + " token should be attached as payment")) | |
2169 | 2365 | else { | |
2170 | - | let | |
2171 | - | let | |
2172 | - | then ( | |
2366 | + | let jm = value(assetInfo(bA)) | |
2367 | + | let ls = if (if (c) | |
2368 | + | then (jm.issuer == this) | |
2173 | 2369 | else false) | |
2174 | - | then contains( | |
2370 | + | then contains(jm.name, aK) | |
2175 | 2371 | else false | |
2176 | - | if (if (if (( | |
2177 | - | then ( | |
2372 | + | if (if (if ((jm.issuer != dM)) | |
2373 | + | then (jm.issuer != dN) | |
2178 | 2374 | else false) | |
2179 | - | then !( | |
2375 | + | then !(ls) | |
2180 | 2376 | else false) | |
2181 | - | then throw((((("Unknown issuer of " + | |
2182 | - | else if (if (!(contains( | |
2183 | - | then !( | |
2377 | + | then throw((((("Unknown issuer of " + aJ) + " or ") + aK) + " token")) | |
2378 | + | else if (if (!(contains(jm.name, aJ))) | |
2379 | + | then !(ls) | |
2184 | 2380 | else false) | |
2185 | - | then throw((((("Only NFT " + | |
2381 | + | then throw((((("Only NFT " + aJ) + " or ") + aK) + " tokens are accepted")) | |
2186 | 2382 | else { | |
2187 | - | let | |
2188 | - | let | |
2189 | - | if (isDefined(getInteger( | |
2190 | - | then throw((("NFT " + | |
2191 | - | else if (isDefined(getString( | |
2192 | - | then throw(("You already staked one duck: " + | |
2383 | + | let lt = toBase58String(bA) | |
2384 | + | let jn = bC(lt) | |
2385 | + | if (isDefined(getInteger(jn))) | |
2386 | + | then throw((("NFT " + jm.name) + " is already staked")) | |
2387 | + | else if (isDefined(getString(bS(w)))) | |
2388 | + | then throw(("You already staked one duck: " + jm.name)) | |
2193 | 2389 | else { | |
2194 | - | let | |
2195 | - | let | |
2196 | - | let | |
2197 | - | let | |
2198 | - | let | |
2199 | - | let | |
2200 | - | let | |
2201 | - | ([IntegerEntry( | |
2390 | + | let lu = bU(lt) | |
2391 | + | let cn = getString(lu) | |
2392 | + | let hD = bT(lt) | |
2393 | + | let lv = getString(hD) | |
2394 | + | let iV = cP(lt) | |
2395 | + | let iW = dw(valueOrElse(getInteger(cS(lt)), 0)) | |
2396 | + | let lw = valueOrElse(getInteger(iV), iW) | |
2397 | + | ([IntegerEntry(jn, lastBlock.timestamp), IntegerEntry(bF(aJ, toBase58String(bA), w), lastBlock.timestamp), StringEntry(bR(lt), w), StringEntry(bS(w), lt)] ++ (if (isDefined(cn)) | |
2202 | 2398 | then nil | |
2203 | - | else ([StringEntry( | |
2399 | + | else ([StringEntry(lu, aQ)] ++ (if (isDefined(lv)) | |
2204 | 2400 | then nil | |
2205 | - | else (([StringEntry( | |
2401 | + | else (([StringEntry(hD, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iV, lw)) ++ lh))))) | |
2206 | 2402 | } | |
2207 | 2403 | } | |
2208 | 2404 | } | |
2209 | 2405 | } | |
2210 | 2406 | } | |
2211 | 2407 | ||
2212 | 2408 | ||
2213 | 2409 | ||
2214 | - | @Callable( | |
2215 | - | func unstakeDuck ( | |
2216 | - | let | |
2217 | - | if ((size( | |
2410 | + | @Callable(gy) | |
2411 | + | func unstakeDuck (lt) = { | |
2412 | + | let lh = kN(gy) | |
2413 | + | if ((size(gy.payments) != 0)) | |
2218 | 2414 | then throw("No payments required") | |
2219 | 2415 | else { | |
2220 | - | let | |
2221 | - | let | |
2222 | - | let | |
2223 | - | let | |
2224 | - | if (!(isDefined(getInteger( | |
2225 | - | then throw((("NFT " + | |
2226 | - | else if (!(isDefined(getString( | |
2227 | - | then throw((("The duck " + | |
2416 | + | let bA = fromBase58String(lt) | |
2417 | + | let w = toString(gy.caller) | |
2418 | + | let jm = value(assetInfo(bA)) | |
2419 | + | let jn = bC(lt) | |
2420 | + | if (!(isDefined(getInteger(jn)))) | |
2421 | + | then throw((("NFT " + jm.name) + " is not staked")) | |
2422 | + | else if (!(isDefined(getString(bS(w))))) | |
2423 | + | then throw((("The duck " + jm.name) + " is not staked")) | |
2228 | 2424 | else { | |
2229 | - | let | |
2230 | - | if (( | |
2425 | + | let jp = valueOrErrorMessage(getString(bR(lt)), (("NFT " + jm.name) + " is orphaned")) | |
2426 | + | if ((jp != w)) | |
2231 | 2427 | then throw("Staked NFT is not yours") | |
2232 | - | else if ( | |
2428 | + | else if (kk(lt)) | |
2233 | 2429 | then throw("unstakeDuck_checkTournament") | |
2234 | 2430 | else { | |
2235 | - | let | |
2236 | - | let | |
2237 | - | let | |
2238 | - | if (( | |
2239 | - | then throw((("Please heal your duck to " + toString( | |
2240 | - | else ([ScriptTransfer( | |
2431 | + | let iV = cP(lt) | |
2432 | + | let iW = dw(valueOrElse(getInteger(cS(lt)), 0)) | |
2433 | + | let dH = valueOrElse(getInteger(iV), iW) | |
2434 | + | if ((iW > dH)) | |
2435 | + | then throw((("Please heal your duck to " + toString(iW)) + "hp before unstaking")) | |
2436 | + | else ([ScriptTransfer(gy.caller, 1, bA), DeleteEntry(jn), DeleteEntry(iV), DeleteEntry(bU(lt)), DeleteEntry(bR(lt)), DeleteEntry(bF(aJ, lt, w)), DeleteEntry(bS(w))] ++ lh) | |
2241 | 2437 | } | |
2242 | 2438 | } | |
2243 | 2439 | } | |
2244 | 2440 | } | |
2245 | 2441 | ||
2246 | 2442 | ||
2247 | 2443 | ||
2248 | - | @Callable(gv) | |
2249 | - | func claimRes (ez,kZ) = { | |
2250 | - | let kK = kH(gv) | |
2251 | - | if ((size(gv.payments) != 0)) | |
2444 | + | @Callable(gy) | |
2445 | + | func unstakeDuckCallback (bO,av) = if ((toString(gy.caller) != j)) | |
2446 | + | then throw("Permission denied") | |
2447 | + | else { | |
2448 | + | let lr = la(av, bO) | |
2449 | + | $Tuple2([ScriptTransfer(addressFromStringValue(av), 1, fromBase58String(bO)), DeleteEntry(bC(bO)), DeleteEntry(bR(bO)), DeleteEntry(bF(aJ, bO, av)), DeleteEntry(bS(av))], lr) | |
2450 | + | } | |
2451 | + | ||
2452 | + | ||
2453 | + | ||
2454 | + | @Callable(gy) | |
2455 | + | func unstakeDuckREADONLY (bO,av) = { | |
2456 | + | let lr = la(av, bO) | |
2457 | + | $Tuple2(nil, lr) | |
2458 | + | } | |
2459 | + | ||
2460 | + | ||
2461 | + | ||
2462 | + | @Callable(gy) | |
2463 | + | func claimRes (eC,lx) = { | |
2464 | + | let lh = kN(gy) | |
2465 | + | if ((size(gy.payments) != 0)) | |
2252 | 2466 | then throw("No payments required") | |
2253 | 2467 | else { | |
2254 | - | let | |
2255 | - | let | |
2256 | - | let | |
2257 | - | $Tuple2((((( | |
2258 | - | } | |
2259 | - | } | |
2260 | - | ||
2261 | - | ||
2262 | - | ||
2263 | - | @Callable( | |
2264 | - | func claimResToWH ( | |
2265 | - | let | |
2266 | - | if ((size( | |
2468 | + | let av = toString(gy.originCaller) | |
2469 | + | let fd = jr(av, eC, ep, lx) | |
2470 | + | let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked") | |
2471 | + | $Tuple2(((((fd._1 ++ jZ(bO, fraction(di, eC, o))._1) :+ StringEntry(fd._2, makeString(fd._3, ":"))) :+ StringEntry(fd._4, makeString(fd._5, ":"))) ++ lh), fd._3[bt]) | |
2472 | + | } | |
2473 | + | } | |
2474 | + | ||
2475 | + | ||
2476 | + | ||
2477 | + | @Callable(gy) | |
2478 | + | func claimResToWH (eC,lx) = { | |
2479 | + | let lh = kN(gy) | |
2480 | + | if ((size(gy.payments) != 0)) | |
2267 | 2481 | then throw("No payments required") | |
2268 | 2482 | else { | |
2269 | - | let | |
2270 | - | let | |
2271 | - | $Tuple2((((( | |
2272 | - | } | |
2273 | - | } | |
2274 | - | ||
2275 | - | ||
2276 | - | ||
2277 | - | @Callable( | |
2278 | - | func flight ( | |
2279 | - | let | |
2280 | - | if ((size( | |
2483 | + | let av = toString(gy.originCaller) | |
2484 | + | let fd = jr(av, eC, eo, lx) | |
2485 | + | $Tuple2(((((fd._1 ++ ka(av, fraction(di, eC, o))._1) :+ StringEntry(fd._2, makeString(fd._3, ":"))) :+ StringEntry(fd._4, makeString(fd._5, ":"))) ++ lh), fd._5[bk]) | |
2486 | + | } | |
2487 | + | } | |
2488 | + | ||
2489 | + | ||
2490 | + | ||
2491 | + | @Callable(gy) | |
2492 | + | func flight (iK,iL) = { | |
2493 | + | let lh = kN(gy) | |
2494 | + | if ((size(gy.payments) != 0)) | |
2281 | 2495 | then throw("No payments required") | |
2282 | 2496 | else { | |
2283 | - | let | |
2284 | - | let | |
2285 | - | let | |
2286 | - | let | |
2287 | - | let | |
2288 | - | let | |
2289 | - | let | |
2290 | - | if (( | |
2497 | + | let bW = toString(gy.caller) | |
2498 | + | let hg = iJ(bW, iK, iL) | |
2499 | + | let iP = hg._1 | |
2500 | + | let bO = hg._2 | |
2501 | + | let lu = bU(bO) | |
2502 | + | let jk = valueOrElse(getString(lu), aQ) | |
2503 | + | let iR = hg._4 | |
2504 | + | if ((iR == jk)) | |
2291 | 2505 | then throw("You can't fly to the same location") | |
2292 | 2506 | else { | |
2293 | - | let | |
2294 | - | let | |
2295 | - | let | |
2296 | - | let | |
2297 | - | let | |
2298 | - | let | |
2299 | - | let | |
2300 | - | let | |
2301 | - | let | |
2302 | - | let | |
2303 | - | then if ( | |
2304 | - | then | |
2305 | - | else if (!( | |
2306 | - | then if (( | |
2307 | - | then $Tuple2( | |
2308 | - | else $Tuple2( | |
2309 | - | else if (( | |
2507 | + | let cy = split(iR, "_") | |
2508 | + | let ly = (cy[bx] == "T") | |
2509 | + | let lz = (cy[bx] == "D") | |
2510 | + | let gk = cU(bO) | |
2511 | + | let lA = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2512 | + | let lB = fe(lA, hg._5) | |
2513 | + | let lC = lB._1 | |
2514 | + | let lD = lB._2 | |
2515 | + | let hv = lB._3 | |
2516 | + | let lE = if (!(cs(Q, jk))) | |
2517 | + | then if (ly) | |
2518 | + | then cw(jk, iR, 5) | |
2519 | + | else if (!(lz)) | |
2520 | + | then if ((iP > 0)) | |
2521 | + | then $Tuple2(iR, iP) | |
2522 | + | else $Tuple2(jk, 0) | |
2523 | + | else if ((iP > 0)) | |
2310 | 2524 | then { | |
2311 | - | let | |
2312 | - | if (( | |
2313 | - | then $Tuple2( | |
2525 | + | let ak = invoke(this, "processDelivery", [bO], nil) | |
2526 | + | if ((ak == ak)) | |
2527 | + | then $Tuple2(jk, iP) | |
2314 | 2528 | else throw("Strict value is not equal to itself.") | |
2315 | 2529 | } | |
2316 | - | else $Tuple2( | |
2317 | - | else if ( | |
2318 | - | then if (!( | |
2530 | + | else $Tuple2(jk, 0) | |
2531 | + | else if (cm(Q, jk)) | |
2532 | + | then if (!(cm(Q, iR))) | |
2319 | 2533 | then throw("Your duck is taking part in the tournament") | |
2320 | 2534 | else { | |
2321 | - | let | |
2322 | - | let | |
2323 | - | let | |
2324 | - | if (( | |
2325 | - | then | |
2326 | - | else if (( | |
2535 | + | let lF = parseIntValue(cy[by]) | |
2536 | + | let lG = split(jk, "_") | |
2537 | + | let co = valueOrElse(getInteger(Q, bZ), 0) | |
2538 | + | if ((lF != (parseIntValue(lG[by]) + 1))) | |
2539 | + | then cw(jk, iR, 7) | |
2540 | + | else if ((iP > 0)) | |
2327 | 2541 | then { | |
2328 | - | let | |
2329 | - | let | |
2330 | - | then invoke( | |
2542 | + | let lH = valueOrElse(getInteger(Q, cd(co, bO)), 0) | |
2543 | + | let lI = if ((lF > lH)) | |
2544 | + | then invoke(Q, "saveDuckResult", [bO, lF], nil) | |
2331 | 2545 | else unit | |
2332 | - | if (( | |
2333 | - | then $Tuple2( | |
2546 | + | if ((lI == lI)) | |
2547 | + | then $Tuple2(iR, iP) | |
2334 | 2548 | else throw("Strict value is not equal to itself.") | |
2335 | 2549 | } | |
2336 | - | else $Tuple2( | |
2550 | + | else $Tuple2(jk, 0) | |
2337 | 2551 | } | |
2338 | - | else throw(("Unknown curLocation:" + | |
2339 | - | let | |
2340 | - | let | |
2341 | - | $Tuple2(((([StringEntry( | |
2342 | - | then [StringEntry( | |
2343 | - | else nil)) ++ | |
2344 | - | then | |
2345 | - | else | |
2552 | + | else throw(("Unknown curLocation:" + jk)) | |
2553 | + | let lJ = lE._1 | |
2554 | + | let lK = lE._2 | |
2555 | + | $Tuple2(((([StringEntry(lu, lJ), StringEntry(gk, lC), IntegerEntry(cP(bO), lK)] ++ lh) ++ (if (lD) | |
2556 | + | then [StringEntry(da(bO), "0_0_0_0_0")] | |
2557 | + | else nil)) ++ jZ(bO, if ((iP > 0)) | |
2558 | + | then dj | |
2559 | + | else dk)._1), hg._3) | |
2346 | 2560 | } | |
2347 | 2561 | } | |
2348 | 2562 | } | |
2349 | 2563 | ||
2350 | 2564 | ||
2351 | 2565 | ||
2352 | - | @Callable( | |
2353 | - | func heal ( | |
2354 | - | let | |
2355 | - | if (if (if ((0 > | |
2566 | + | @Callable(gy) | |
2567 | + | func heal (lL,lM,lN) = { | |
2568 | + | let lh = kN(gy) | |
2569 | + | if (if (if ((0 > lL)) | |
2356 | 2570 | then true | |
2357 | - | else (0 > | |
2571 | + | else (0 > lM)) | |
2358 | 2572 | then true | |
2359 | - | else (0 > | |
2573 | + | else (0 > lN)) | |
2360 | 2574 | then throw("Quantity cannot be negative") | |
2361 | 2575 | else { | |
2362 | - | let | |
2363 | - | if ( | |
2576 | + | let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked") | |
2577 | + | if (kk(bO)) | |
2364 | 2578 | then throw("heal_checkTournament") | |
2365 | 2579 | else { | |
2366 | - | let | |
2367 | - | let | |
2368 | - | let | |
2369 | - | let | |
2370 | - | if (( | |
2371 | - | then throw((("HP should be < " + toString( | |
2580 | + | let lO = [lL, lM, lN] | |
2581 | + | let iV = cP(bO) | |
2582 | + | let iW = dw(valueOrElse(getInteger(cS(bO)), 0)) | |
2583 | + | let lP = valueOrElse(getInteger(iV), iW) | |
2584 | + | if ((lP >= iW)) | |
2585 | + | then throw((("HP should be < " + toString(iW)) + " to heal")) | |
2372 | 2586 | else { | |
2373 | - | let | |
2374 | - | let | |
2375 | - | let | |
2587 | + | let hD = bT(bO) | |
2588 | + | let ih = hC(hD) | |
2589 | + | let lQ = if ((ih[bv] == "")) | |
2376 | 2590 | then nil | |
2377 | - | else split_4C( | |
2378 | - | func | |
2379 | - | let | |
2380 | - | let | |
2381 | - | then parseIntValue( | |
2591 | + | else split_4C(ih[bv], "_") | |
2592 | + | func lR (eL,cv) = { | |
2593 | + | let am = eL._2 | |
2594 | + | let gX = if ((size(lQ) > am)) | |
2595 | + | then parseIntValue(lQ[am]) | |
2382 | 2596 | else 0 | |
2383 | - | if ((3 > | |
2597 | + | if ((3 > am)) | |
2384 | 2598 | then { | |
2385 | - | let | |
2386 | - | if (( | |
2387 | - | then throw(((("You have only " + toString( | |
2388 | - | else $Tuple3(( | |
2599 | + | let lS = lO[am] | |
2600 | + | if ((lS > gX)) | |
2601 | + | then throw(((("You have only " + toString(gX)) + " of ") + ba[am])) | |
2602 | + | else $Tuple3((eL._1 :+ toString((gX - lS))), (am + 1), (eL._3 + (parseIntValue(split(cv, "_")[bf]) * lS))) | |
2389 | 2603 | } | |
2390 | - | else $Tuple3(( | |
2604 | + | else $Tuple3((eL._1 :+ toString(gX)), (am + 1), eL._3) | |
2391 | 2605 | } | |
2392 | 2606 | ||
2393 | - | let | |
2394 | - | let | |
2395 | - | let | |
2396 | - | let | |
2397 | - | func | |
2398 | - | then | |
2399 | - | else | |
2400 | - | ||
2401 | - | func | |
2402 | - | then | |
2607 | + | let fd = { | |
2608 | + | let eN = bd | |
2609 | + | let eO = size(eN) | |
2610 | + | let eP = $Tuple3(nil, 0, 0) | |
2611 | + | func eQ (eR,eS) = if ((eS >= eO)) | |
2612 | + | then eR | |
2613 | + | else lR(eR, eN[eS]) | |
2614 | + | ||
2615 | + | func eT (eR,eS) = if ((eS >= eO)) | |
2616 | + | then eR | |
2403 | 2617 | else throw("List size exceeds 50") | |
2404 | 2618 | ||
2405 | - | eQ( | |
2619 | + | eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 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) | |
2406 | 2620 | } | |
2407 | - | let | |
2408 | - | $Tuple2((([IntegerEntry( | |
2621 | + | let lT = min([iW, (lP + fd._3)]) | |
2622 | + | $Tuple2((([IntegerEntry(iV, lT), StringEntry(hD, makeString_2C([ih[bs], ih[bt], ih[bu], makeString(fd._1, "_")], ":"))] ++ lh) ++ jZ(bO, (dt * ((lL + lM) + lN)))._1), lT) | |
2409 | 2623 | } | |
2410 | 2624 | } | |
2411 | 2625 | } | |
2412 | 2626 | } | |
2413 | 2627 | ||
2414 | 2628 | ||
2415 | 2629 | ||
2416 | - | @Callable( | |
2630 | + | @Callable(gy) | |
2417 | 2631 | func healES () = { | |
2418 | - | let | |
2419 | - | if ((size( | |
2632 | + | let lh = kN(gy) | |
2633 | + | if ((size(gy.payments) != 1)) | |
2420 | 2634 | then throw("Exactly one payment required") | |
2421 | 2635 | else { | |
2422 | - | let | |
2423 | - | if (( | |
2636 | + | let li = value(gy.payments[0]) | |
2637 | + | if ((li.assetId != h)) | |
2424 | 2638 | then throw("Allowed USDT payment only!") | |
2425 | 2639 | else { | |
2426 | - | let | |
2427 | - | if ( | |
2640 | + | let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked") | |
2641 | + | if (kk(bO)) | |
2428 | 2642 | then throw("healES_checkTournament") | |
2429 | 2643 | else { | |
2430 | - | let | |
2431 | - | let | |
2432 | - | let | |
2433 | - | if (( | |
2644 | + | let iV = cP(bO) | |
2645 | + | let iW = dw(valueOrElse(getInteger(cS(bO)), 0)) | |
2646 | + | let lP = valueOrElse(getInteger(iV), iW) | |
2647 | + | if ((lP > 0)) | |
2434 | 2648 | then throw("HP should be 0 to call Emergency Service") | |
2435 | 2649 | else { | |
2436 | - | let | |
2437 | - | let | |
2438 | - | let | |
2650 | + | let hD = bT(bO) | |
2651 | + | let ih = hC(hD) | |
2652 | + | let lQ = if ((ih[bv] == "")) | |
2439 | 2653 | then nil | |
2440 | - | else split_4C( | |
2441 | - | let | |
2442 | - | then parseIntValue( | |
2654 | + | else split_4C(ih[bv], "_") | |
2655 | + | let lU = if ((size(lQ) > 0)) | |
2656 | + | then parseIntValue(lQ[0]) | |
2443 | 2657 | else 0 | |
2444 | - | let | |
2445 | - | then parseIntValue( | |
2658 | + | let lV = if ((size(lQ) > 1)) | |
2659 | + | then parseIntValue(lQ[1]) | |
2446 | 2660 | else 0 | |
2447 | - | let | |
2448 | - | then parseIntValue( | |
2661 | + | let lW = if ((size(lQ) > 2)) | |
2662 | + | then parseIntValue(lQ[2]) | |
2449 | 2663 | else 0 | |
2450 | - | if (if (if (( | |
2664 | + | if (if (if ((lU > 0)) | |
2451 | 2665 | then true | |
2452 | - | else ( | |
2666 | + | else (lV > 0)) | |
2453 | 2667 | then true | |
2454 | - | else ( | |
2668 | + | else (lW > 0)) | |
2455 | 2669 | then throw("You have to use own Medical Kit") | |
2456 | 2670 | else { | |
2457 | - | let | |
2458 | - | let | |
2459 | - | then split_4C(value( | |
2671 | + | let lX = getString(N, bX()) | |
2672 | + | let lY = if (isDefined(lX)) | |
2673 | + | then split_4C(value(lX), "_") | |
2460 | 2674 | else nil | |
2461 | - | let | |
2462 | - | then parseIntValue( | |
2675 | + | let lZ = if ((size(lY) > 0)) | |
2676 | + | then parseIntValue(lY[0]) | |
2463 | 2677 | else 0 | |
2464 | - | if ((0 >= | |
2678 | + | if ((0 >= lZ)) | |
2465 | 2679 | then throw("There are no Medical Kits L1 at Emergency Service storage") | |
2466 | 2680 | else { | |
2467 | - | let | |
2468 | - | let | |
2469 | - | let | |
2470 | - | let | |
2471 | - | let | |
2472 | - | if (( | |
2473 | - | then throw(("Payment attached should be " + toString( | |
2681 | + | let lT = (lP + parseIntValue(split(bd[0], "_")[bf])) | |
2682 | + | let ma = makeString([toString((lZ - 1)), removeByIndex(lY, 0)], "_") | |
2683 | + | let cv = split(bd[0], "_") | |
2684 | + | let mb = cu(cv) | |
2685 | + | let mc = fraction((mb * aS), aR, (o * bi)) | |
2686 | + | if ((li.amount != mc)) | |
2687 | + | then throw(("Payment attached should be " + toString(mc))) | |
2474 | 2688 | else { | |
2475 | - | let | |
2476 | - | $Tuple2((( | |
2689 | + | let fd = ai(invoke(N, "updateEsStorage", [ma], [AttachedPayment(h, mc)])) | |
2690 | + | $Tuple2(((lh :+ IntegerEntry(iV, lT)) ++ jZ(bO, dn)._1), fd) | |
2477 | 2691 | } | |
2478 | 2692 | } | |
2479 | 2693 | } | |
2480 | 2694 | } | |
2481 | 2695 | } | |
2482 | 2696 | } | |
2483 | 2697 | } | |
2484 | 2698 | } | |
2485 | 2699 | ||
2486 | 2700 | ||
2487 | 2701 | ||
2488 | - | @Callable( | |
2489 | - | func updateBackpack ( | |
2702 | + | @Callable(gy) | |
2703 | + | func updateBackpack (bO,md) = if ((gy.caller != N)) | |
2490 | 2704 | then throw("permission denied") | |
2491 | - | else $Tuple2([StringEntry( | |
2492 | - | ||
2493 | - | ||
2494 | - | ||
2495 | - | @Callable( | |
2705 | + | else $Tuple2([StringEntry(bT(bO), md)], md) | |
2706 | + | ||
2707 | + | ||
2708 | + | ||
2709 | + | @Callable(gy) | |
2496 | 2710 | func commitForRandom () = { | |
2497 | - | let | |
2498 | - | let | |
2499 | - | let | |
2500 | - | $Tuple2(([IntegerEntry( | |
2501 | - | } | |
2502 | - | ||
2503 | - | ||
2504 | - | ||
2505 | - | @Callable( | |
2506 | - | func revealRandom ( | |
2507 | - | let | |
2508 | - | let | |
2509 | - | let | |
2510 | - | let | |
2511 | - | if (( | |
2512 | - | then throw(("Random number is not ready yet, wait until height = " + toString( | |
2711 | + | let lh = kN(gy) | |
2712 | + | let me = (height + aa) | |
2713 | + | let av = toString(gy.caller) | |
2714 | + | $Tuple2(([IntegerEntry(ab(av), me)] ++ lh), me) | |
2715 | + | } | |
2716 | + | ||
2717 | + | ||
2718 | + | ||
2719 | + | @Callable(gy) | |
2720 | + | func revealRandom (aD) = { | |
2721 | + | let lh = kN(gy) | |
2722 | + | let av = toString(gy.caller) | |
2723 | + | let mf = ab(av) | |
2724 | + | let me = valueOrErrorMessage(getInteger(mf), "You have to commitForRandom() first!") | |
2725 | + | if ((me > height)) | |
2726 | + | then throw(("Random number is not ready yet, wait until height = " + toString(me))) | |
2513 | 2727 | else { | |
2514 | - | let | |
2515 | - | let | |
2516 | - | let | |
2517 | - | $Tuple2(([DeleteEntry( | |
2518 | - | } | |
2519 | - | } | |
2520 | - | ||
2521 | - | ||
2522 | - | ||
2523 | - | @Callable( | |
2728 | + | let aF = value(value(blockInfoByHeight(me)).vrf) | |
2729 | + | let aE = toBytes(valueOrElse(getString(au(av)), "")) | |
2730 | + | let mg = aC(aD, aE, aF) | |
2731 | + | $Tuple2(([DeleteEntry(mf)] ++ lh), mg) | |
2732 | + | } | |
2733 | + | } | |
2734 | + | ||
2735 | + | ||
2736 | + | ||
2737 | + | @Callable(gy) | |
2524 | 2738 | func buySLand () = { | |
2525 | - | let | |
2526 | - | if ((size( | |
2739 | + | let lh = kN(gy) | |
2740 | + | if ((size(gy.payments) != 1)) | |
2527 | 2741 | then throw("Exactly one payment required") | |
2528 | 2742 | else { | |
2529 | - | let | |
2530 | - | if (( | |
2743 | + | let li = value(gy.payments[0]) | |
2744 | + | if ((li.assetId != h)) | |
2531 | 2745 | then throw("Allowed USDT payment only!") | |
2532 | - | else if (( | |
2533 | - | then throw(("Payment attached should be " + toString( | |
2746 | + | else if ((li.amount != dT)) | |
2747 | + | then throw(("Payment attached should be " + toString(dT))) | |
2534 | 2748 | else { | |
2535 | - | let | |
2536 | - | let | |
2537 | - | $Tuple2(((( | |
2749 | + | let fd = iC(gy.caller, gy.transactionId) | |
2750 | + | let mh = al(invoke(R, "burnAcres", [dV], nil)) | |
2751 | + | $Tuple2((((fd._1 :+ ScriptTransfer(N, li.amount, h)) ++ ka(toString(gy.caller), dp)._1) ++ lh), $Tuple2(fd._2._1, mh)) | |
2538 | 2752 | } | |
2539 | 2753 | } | |
2540 | 2754 | } | |
2541 | 2755 | ||
2542 | 2756 | ||
2543 | 2757 | ||
2544 | - | @Callable( | |
2545 | - | func expedition ( | |
2546 | - | let | |
2547 | - | if ((size( | |
2758 | + | @Callable(gy) | |
2759 | + | func expedition (iK,iL) = { | |
2760 | + | let lh = kN(gy) | |
2761 | + | if ((size(gy.payments) != 0)) | |
2548 | 2762 | then throw("No payments required") | |
2549 | 2763 | else { | |
2550 | - | let | |
2551 | - | let | |
2552 | - | let | |
2553 | - | let | |
2554 | - | let | |
2555 | - | let | |
2556 | - | let | |
2557 | - | let | |
2558 | - | let | |
2559 | - | let | |
2560 | - | let | |
2561 | - | let | |
2562 | - | let | |
2563 | - | let | |
2564 | - | let | |
2565 | - | let | |
2566 | - | let | |
2567 | - | then $Tuple3([IntegerEntry( | |
2568 | - | else $Tuple3(( | |
2569 | - | then [StringEntry( | |
2570 | - | else ((((nil :+ StringEntry( | |
2571 | - | if ( | |
2764 | + | let bW = toString(gy.caller) | |
2765 | + | let hg = iJ(bW, iK, iL) | |
2766 | + | let bO = hg._2 | |
2767 | + | let iV = cP(bO) | |
2768 | + | let hD = bT(bO) | |
2769 | + | let ih = hC(hD) | |
2770 | + | let jK = split(ih[bu], "_") | |
2771 | + | let jM = makeString(eX(true, jK, dS), "_") | |
2772 | + | let gk = cU(bO) | |
2773 | + | let lA = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2774 | + | let mi = fe(lA, hg._5) | |
2775 | + | let lC = mi._1 | |
2776 | + | let lD = mi._2 | |
2777 | + | let hv = mi._3 | |
2778 | + | let mj = iC(gy.caller, gy.transactionId) | |
2779 | + | let iI = mj._2._1 | |
2780 | + | let fd = if ((0 >= hg._1)) | |
2781 | + | then $Tuple3([IntegerEntry(iV, 0), StringEntry(gk, lC)], "", 0) | |
2782 | + | else $Tuple3((mj._1 ++ (if (lD) | |
2783 | + | then [StringEntry(da(bO), "0_0_0_0_0")] | |
2784 | + | else ((((nil :+ StringEntry(bU(bO), makeString([mj._2._2, "L", iI], "_"))) :+ IntegerEntry(iV, hg._1)) :+ StringEntry(gk, lC)) :+ StringEntry(hD, makeString([ih[bs], ih[bt], jM, ih[bv]], ":"))))), iI, hg._3) | |
2785 | + | if (kk(bO)) | |
2572 | 2786 | then throw("expedition_checkTournament") | |
2573 | 2787 | else { | |
2574 | - | let | |
2575 | - | $Tuple2((( | |
2788 | + | let mh = al(invoke(R, "burnAcres", [dV], nil)) | |
2789 | + | $Tuple2(((fd._1 ++ jZ(bO, dp)._1) ++ lh), $Tuple3(fd._2, fd._3, mh)) | |
2576 | 2790 | } | |
2577 | 2791 | } | |
2578 | 2792 | } | |
2579 | 2793 | ||
2580 | 2794 | ||
2581 | 2795 | ||
2582 | - | @Callable( | |
2796 | + | @Callable(gy) | |
2583 | 2797 | func buySLandForAcres () = { | |
2584 | - | let | |
2585 | - | if ((size( | |
2798 | + | let lh = kN(gy) | |
2799 | + | if ((size(gy.payments) != 1)) | |
2586 | 2800 | then throw("exactly 1 payment must be attached") | |
2587 | 2801 | else { | |
2588 | - | let | |
2589 | - | let | |
2590 | - | if (if (!(isDefined( | |
2802 | + | let li = gy.payments[0] | |
2803 | + | let fk = li.amount | |
2804 | + | if (if (!(isDefined(li.assetId))) | |
2591 | 2805 | then true | |
2592 | - | else (value( | |
2806 | + | else (value(li.assetId) != Z)) | |
2593 | 2807 | then throw("ACRES payments only!") | |
2594 | - | else if (( | |
2595 | - | then throw(("Payment attached should be " + toString( | |
2808 | + | else if ((fk != dV)) | |
2809 | + | then throw(("Payment attached should be " + toString(dV))) | |
2596 | 2810 | else { | |
2597 | - | let | |
2598 | - | let | |
2599 | - | $Tuple2((( | |
2811 | + | let fd = iC(gy.caller, gy.transactionId) | |
2812 | + | let mh = al(invoke(R, "burnAcres", [dV], [AttachedPayment(Z, fk)])) | |
2813 | + | $Tuple2(((fd._1 ++ ka(toString(gy.caller), dp)._1) ++ lh), $Tuple2(fd._2._1, mh)) | |
2600 | 2814 | } | |
2601 | 2815 | } | |
2602 | 2816 | } | |
2603 | 2817 | ||
2604 | 2818 | ||
2605 | 2819 | ||
2606 | - | @Callable( | |
2607 | - | func upgradeInfra ( | |
2608 | - | let | |
2609 | - | if ((size( | |
2820 | + | @Callable(gy) | |
2821 | + | func upgradeInfra (bI) = { | |
2822 | + | let lh = kN(gy) | |
2823 | + | if ((size(gy.payments) != 0)) | |
2610 | 2824 | then throw("No payments required") | |
2611 | 2825 | else { | |
2612 | - | let | |
2613 | - | let | |
2614 | - | $Tuple2((( | |
2615 | - | } | |
2616 | - | } | |
2617 | - | ||
2618 | - | ||
2619 | - | ||
2620 | - | @Callable( | |
2621 | - | func activateArtifact ( | |
2622 | - | let | |
2623 | - | if ((size( | |
2826 | + | let fd = jE(true, gy.caller, 0, bI) | |
2827 | + | let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked") | |
2828 | + | $Tuple2(((fd._1 ++ lh) ++ jZ(bO, fraction(dq, fd._3, o))._1), fd._2) | |
2829 | + | } | |
2830 | + | } | |
2831 | + | ||
2832 | + | ||
2833 | + | ||
2834 | + | @Callable(gy) | |
2835 | + | func activateArtifact (mk,ml) = { | |
2836 | + | let lh = kN(gy) | |
2837 | + | if ((size(gy.payments) != 0)) | |
2624 | 2838 | then throw("No payments required") | |
2625 | 2839 | else { | |
2626 | - | let | |
2627 | - | let | |
2628 | - | let | |
2629 | - | if (("PRESALE" == | |
2630 | - | then | |
2631 | - | else if (("ONBOARD" == | |
2632 | - | then | |
2840 | + | let av = toString(gy.caller) | |
2841 | + | let fd = { | |
2842 | + | let g = mk | |
2843 | + | if (("PRESALE" == g)) | |
2844 | + | then ki(av, ml) | |
2845 | + | else if (("ONBOARD" == g)) | |
2846 | + | then kb(av) | |
2633 | 2847 | else throw("Unknown artifact") | |
2634 | 2848 | } | |
2635 | - | ( | |
2636 | - | } | |
2637 | - | } | |
2638 | - | ||
2639 | - | ||
2640 | - | ||
2641 | - | @Callable( | |
2642 | - | func mergeLands ( | |
2643 | - | let | |
2644 | - | if ((size( | |
2849 | + | (fd ++ lh) | |
2850 | + | } | |
2851 | + | } | |
2852 | + | ||
2853 | + | ||
2854 | + | ||
2855 | + | @Callable(gy) | |
2856 | + | func mergeLands (ko) = { | |
2857 | + | let lh = kN(gy) | |
2858 | + | if ((size(gy.payments) != 0)) | |
2645 | 2859 | then throw("No payments required") | |
2646 | 2860 | else { | |
2647 | - | let | |
2648 | - | $Tuple2((( | |
2649 | - | } | |
2650 | - | } | |
2651 | - | ||
2652 | - | ||
2653 | - | ||
2654 | - | @Callable( | |
2655 | - | func cargoExchange ( | |
2656 | - | let | |
2657 | - | if ((size( | |
2861 | + | let fd = kM(toString(gy.caller), ko) | |
2862 | + | $Tuple2(((fd._1 ++ lh) ++ ka(toString(gy.caller), dr)._1), fd._2) | |
2863 | + | } | |
2864 | + | } | |
2865 | + | ||
2866 | + | ||
2867 | + | ||
2868 | + | @Callable(gy) | |
2869 | + | func cargoExchange (mm,bI) = { | |
2870 | + | let lh = kN(gy) | |
2871 | + | if ((size(gy.payments) != 0)) | |
2658 | 2872 | then throw("No payments required") | |
2659 | 2873 | else { | |
2660 | - | let | |
2661 | - | let | |
2662 | - | let | |
2663 | - | let | |
2664 | - | if (!(isDefined(getInteger( | |
2665 | - | then throw(( | |
2874 | + | let ig = split_4C(mm, ":") | |
2875 | + | let av = toString(gy.originCaller) | |
2876 | + | let jm = value(assetInfo(fromBase58String(bI))) | |
2877 | + | let jn = bC(bI) | |
2878 | + | if (!(isDefined(getInteger(jn)))) | |
2879 | + | then throw((jm.name + " is not staked")) | |
2666 | 2880 | else { | |
2667 | - | let | |
2668 | - | if (( | |
2669 | - | then throw(( | |
2881 | + | let jp = valueOrErrorMessage(getString(bz(bI)), (("NFT " + jm.name) + " is orphaned")) | |
2882 | + | if ((jp != av)) | |
2883 | + | then throw((aI + " is not yours")) | |
2670 | 2884 | else { | |
2671 | - | let | |
2672 | - | let | |
2673 | - | let | |
2674 | - | let | |
2675 | - | let | |
2676 | - | if (( | |
2677 | - | then throw((("Duck location type is " + | |
2678 | - | else if (( | |
2679 | - | then throw(("Duck should be on the land " + | |
2885 | + | let hS = (aq(split(jm.description, "_")[T]) / p) | |
2886 | + | let hT = valueOrElse(getInteger(bJ(bI)), 0) | |
2887 | + | let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked") | |
2888 | + | let jk = valueOrElse(getString(bU(bO)), aQ) | |
2889 | + | let cp = split(value(jk), "_") | |
2890 | + | if ((cp[bx] != "L")) | |
2891 | + | then throw((("Duck location type is " + cp[bx]) + ", but should be L")) | |
2892 | + | else if ((cp[by] != bI)) | |
2893 | + | then throw(("Duck should be on the land " + bI)) | |
2680 | 2894 | else { | |
2681 | - | let | |
2682 | - | let | |
2683 | - | let | |
2684 | - | let | |
2685 | - | let | |
2686 | - | let | |
2687 | - | let | |
2688 | - | let | |
2689 | - | ([StringEntry( | |
2895 | + | let hR = bH(bI) | |
2896 | + | let hI = hQ(hR, hS, hT) | |
2897 | + | let hD = bT(bO) | |
2898 | + | let ih = hC(hD) | |
2899 | + | let fd = if(ig, hI, ih) | |
2900 | + | let hZ = split(hI[bn], "_") | |
2901 | + | let jB = (parseIntValue(hZ[bp]) + fd._7) | |
2902 | + | let jC = (parseIntValue(hZ[bq]) - fd._7) | |
2903 | + | ([StringEntry(hD, makeString_2C([ih[bs], fd._4, fd._5, fd._6], ":")), StringEntry(hR, makeString_2C([hI[bj], fd._1, fd._2, fd._3, makeString([hZ[bo], toString(jB), toString(jC), hZ[br]], "_")], ":"))] ++ lh) | |
2690 | 2904 | } | |
2691 | 2905 | } | |
2692 | 2906 | } | |
2693 | 2907 | } | |
2694 | 2908 | } | |
2695 | 2909 | ||
2696 | 2910 | ||
2697 | 2911 | ||
2698 | - | @Callable( | |
2699 | - | func saveWarehouse ( | |
2912 | + | @Callable(gy) | |
2913 | + | func saveWarehouse (hV,bI) = if ((gy.caller != N)) | |
2700 | 2914 | then throw("Access denied") | |
2701 | 2915 | else { | |
2702 | - | let | |
2703 | - | let | |
2704 | - | if ((size( | |
2916 | + | let hR = bH(bI) | |
2917 | + | let hW = split_4C(hV, ":") | |
2918 | + | if ((size(hW) != 5)) | |
2705 | 2919 | then throw("warehouse string should contain 4 ':' separators") | |
2706 | 2920 | else { | |
2707 | - | let | |
2708 | - | let | |
2709 | - | let | |
2710 | - | let | |
2711 | - | if ((0 > | |
2921 | + | let mn = split(hW[bn], "_")[bo] | |
2922 | + | let jB = hH(hW) | |
2923 | + | let mo = hF(hW[bj]) | |
2924 | + | let jC = ((mo - parseIntValue(mn)) - jB) | |
2925 | + | if ((0 > jC)) | |
2712 | 2926 | then throw("Operation leads to negative free warehouse space") | |
2713 | 2927 | else { | |
2714 | - | let | |
2715 | - | $Tuple2([StringEntry( | |
2928 | + | let mp = makeString_2C([hW[bj], hW[bk], hW[bl], hW[bm], makeString([mn, toString(jB), toString(jC), toString(mo)], "_")], ":") | |
2929 | + | $Tuple2([StringEntry(hR, mp)], mp) | |
2716 | 2930 | } | |
2717 | 2931 | } | |
2718 | 2932 | } | |
2719 | 2933 | ||
2720 | 2934 | ||
2721 | 2935 | ||
2722 | - | @Callable( | |
2723 | - | func setCustomName ( | |
2724 | - | let | |
2725 | - | if ((size( | |
2936 | + | @Callable(gy) | |
2937 | + | func setCustomName (bA,ky,bE) = { | |
2938 | + | let lh = kN(gy) | |
2939 | + | if ((size(gy.payments) != 1)) | |
2726 | 2940 | then throw("Exactly one payment required") | |
2727 | 2941 | else { | |
2728 | - | let | |
2729 | - | if (( | |
2942 | + | let li = value(gy.payments[0]) | |
2943 | + | if ((li.assetId != h)) | |
2730 | 2944 | then throw("Allowed USDT payment only!") | |
2731 | - | else if (( | |
2732 | - | then throw(("Payment should be " + toString( | |
2733 | - | else if (contains( | |
2734 | - | then throw(("Name should not contain '__': " + | |
2735 | - | else if ((size( | |
2736 | - | then throw(("Name too long, maxLength=" + toString( | |
2945 | + | else if ((li.amount != dP)) | |
2946 | + | then throw(("Payment should be " + toString(dP))) | |
2947 | + | else if (contains(ky, "__")) | |
2948 | + | then throw(("Name should not contain '__': " + ky)) | |
2949 | + | else if ((size(ky) > dQ)) | |
2950 | + | then throw(("Name too long, maxLength=" + toString(dQ))) | |
2737 | 2951 | else { | |
2738 | - | let | |
2739 | - | let | |
2740 | - | let | |
2741 | - | if (("ACCOUNT" == | |
2952 | + | let av = toString(gy.originCaller) | |
2953 | + | let mq = { | |
2954 | + | let g = bE | |
2955 | + | if (("ACCOUNT" == g)) | |
2742 | 2956 | then { | |
2743 | - | let | |
2744 | - | let | |
2745 | - | if (isDefined( | |
2746 | - | then throw(("Name already registered: " + | |
2957 | + | let mr = el(ky) | |
2958 | + | let ms = getString(mr) | |
2959 | + | if (isDefined(ms)) | |
2960 | + | then throw(("Name already registered: " + ky)) | |
2747 | 2961 | else { | |
2748 | - | let | |
2749 | - | let | |
2750 | - | let | |
2751 | - | then [DeleteEntry( | |
2962 | + | let mt = bL(av) | |
2963 | + | let mu = getString(mt) | |
2964 | + | let mv = if (isDefined(mu)) | |
2965 | + | then [DeleteEntry(el(value(mu)))] | |
2752 | 2966 | else nil | |
2753 | - | ((( | |
2967 | + | (((mv :+ StringEntry(mt, ky)) :+ StringEntry(mr, av)) ++ ka(av, do)._1) | |
2754 | 2968 | } | |
2755 | 2969 | } | |
2756 | - | else if (("LAND" == | |
2970 | + | else if (("LAND" == g)) | |
2757 | 2971 | then { | |
2758 | - | let | |
2759 | - | let | |
2760 | - | if (!(isDefined(getInteger( | |
2761 | - | then throw(( | |
2972 | + | let jm = value(assetInfo(fromBase58String(bA))) | |
2973 | + | let jn = bC(bA) | |
2974 | + | if (!(isDefined(getInteger(jn)))) | |
2975 | + | then throw((jm.name + " is not staked")) | |
2762 | 2976 | else { | |
2763 | - | let | |
2764 | - | if (( | |
2765 | - | then throw(( | |
2977 | + | let jp = valueOrErrorMessage(getString(bz(bA)), (("NFT " + jm.name) + " is orphaned")) | |
2978 | + | if ((jp != av)) | |
2979 | + | then throw((aI + " is not yours")) | |
2766 | 2980 | else { | |
2767 | - | let | |
2768 | - | let | |
2769 | - | if (isDefined( | |
2770 | - | then throw(("Name already registered: " + | |
2981 | + | let mr = ee(ky) | |
2982 | + | let ms = getString(mr) | |
2983 | + | if (isDefined(ms)) | |
2984 | + | then throw(("Name already registered: " + ky)) | |
2771 | 2985 | else { | |
2772 | - | let | |
2773 | - | let | |
2774 | - | let | |
2775 | - | then [DeleteEntry( | |
2986 | + | let mw = bB(bA) | |
2987 | + | let mu = getString(mw) | |
2988 | + | let mv = if (isDefined(mu)) | |
2989 | + | then [DeleteEntry(ee(value(mu)))] | |
2776 | 2990 | else nil | |
2777 | - | ((( | |
2991 | + | (((mv :+ StringEntry(mw, ky)) :+ StringEntry(mr, bA)) ++ ka(av, do)._1) | |
2778 | 2992 | } | |
2779 | 2993 | } | |
2780 | 2994 | } | |
2781 | 2995 | } | |
2782 | - | else if (("DUCK" == | |
2996 | + | else if (("DUCK" == g)) | |
2783 | 2997 | then { | |
2784 | - | let | |
2785 | - | let | |
2786 | - | if (if (!(isDefined(getInteger( | |
2998 | + | let jm = value(assetInfo(fromBase58String(bA))) | |
2999 | + | let jn = bC(bA) | |
3000 | + | if (if (!(isDefined(getInteger(jn)))) | |
2787 | 3001 | then true | |
2788 | - | else !(isDefined(getString( | |
2789 | - | then throw(( | |
3002 | + | else !(isDefined(getString(bS(av))))) | |
3003 | + | then throw((jm.name + " is not staked")) | |
2790 | 3004 | else { | |
2791 | - | let | |
2792 | - | if (( | |
2793 | - | then throw(( | |
3005 | + | let jp = valueOrErrorMessage(getString(bR(bA)), (("NFT " + jm.name) + " is orphaned")) | |
3006 | + | if ((jp != av)) | |
3007 | + | then throw((aJ + " is not yours")) | |
2794 | 3008 | else { | |
2795 | - | let | |
2796 | - | let | |
2797 | - | if (isDefined( | |
2798 | - | then throw(("Name already registered: " + | |
3009 | + | let mr = ek(ky) | |
3010 | + | let ms = getString(mr) | |
3011 | + | if (isDefined(ms)) | |
3012 | + | then throw(("Name already registered: " + ky)) | |
2799 | 3013 | else { | |
2800 | - | let | |
2801 | - | let | |
2802 | - | let | |
2803 | - | then [DeleteEntry( | |
3014 | + | let mw = bK(bA) | |
3015 | + | let mu = getString(mw) | |
3016 | + | let mv = if (isDefined(mu)) | |
3017 | + | then [DeleteEntry(ek(value(mu)))] | |
2804 | 3018 | else nil | |
2805 | - | ((( | |
3019 | + | (((mv :+ StringEntry(mw, ky)) :+ StringEntry(mr, bA)) ++ jZ(bA, do)._1) | |
2806 | 3020 | } | |
2807 | 3021 | } | |
2808 | 3022 | } | |
2809 | 3023 | } | |
2810 | 3024 | else throw("Unknown entity type") | |
2811 | 3025 | } | |
2812 | - | $Tuple2((( | |
3026 | + | $Tuple2(((mq :+ ScriptTransfer(N, li.amount, h)) ++ lh), 0) | |
2813 | 3027 | } | |
2814 | 3028 | } | |
2815 | 3029 | } | |
2816 | 3030 | ||
2817 | 3031 | ||
2818 | 3032 | ||
2819 | - | @Callable( | |
2820 | - | func setReferrals ( | |
3033 | + | @Callable(gy) | |
3034 | + | func setReferrals (mx,my) = if ((gy.callerPublicKey != f)) | |
2821 | 3035 | then throw("Permission denied") | |
2822 | 3036 | else { | |
2823 | - | let | |
2824 | - | if ((size( | |
3037 | + | let lh = kN(gy) | |
3038 | + | if ((size(gy.payments) != 0)) | |
2825 | 3039 | then throw("No payments required") | |
2826 | - | else if (!(isDefined(addressFromString( | |
2827 | - | then throw(("Invalid address: " + | |
3040 | + | else if (!(isDefined(addressFromString(mx)))) | |
3041 | + | then throw(("Invalid address: " + mx)) | |
2828 | 3042 | else { | |
2829 | - | let | |
2830 | - | if (!(isDefined( | |
2831 | - | then throw(("Invalid address: " + | |
3043 | + | let mz = addressFromString(my) | |
3044 | + | if (!(isDefined(mz))) | |
3045 | + | then throw(("Invalid address: " + my)) | |
2832 | 3046 | else { | |
2833 | - | let | |
2834 | - | if (!(isDefined( | |
3047 | + | let mA = getString(au(mx)) | |
3048 | + | if (!(isDefined(mA))) | |
2835 | 3049 | then throw("oldPlayer didn't do any tx in game") | |
2836 | - | else if ((0 >= wavesBalance(value( | |
3050 | + | else if ((0 >= wavesBalance(value(mz)).available)) | |
2837 | 3051 | then throw("newPlayer has no WAVES") | |
2838 | 3052 | else { | |
2839 | - | let | |
2840 | - | let | |
2841 | - | let | |
2842 | - | then split_4C(value( | |
3053 | + | let mB = em() | |
3054 | + | let mC = getString(mB) | |
3055 | + | let mD = if (isDefined(mC)) | |
3056 | + | then split_4C(value(mC), "_") | |
2843 | 3057 | else nil | |
2844 | - | if (containsElement( | |
2845 | - | then throw(( | |
3058 | + | if (containsElement(mD, my)) | |
3059 | + | then throw((my + " is not newbie (already has referrals)")) | |
2846 | 3060 | else { | |
2847 | - | let | |
2848 | - | let | |
2849 | - | if (if (isDefined( | |
2850 | - | then isDefined(addressFromString(value( | |
3061 | + | let kc = bM(my) | |
3062 | + | let kd = getString(kc) | |
3063 | + | if (if (isDefined(kd)) | |
3064 | + | then isDefined(addressFromString(value(kd))) | |
2851 | 3065 | else false) | |
2852 | - | then throw((( | |
3066 | + | then throw(((my + " already has refBy: ") + value(kd))) | |
2853 | 3067 | else { | |
2854 | - | let | |
2855 | - | let | |
2856 | - | let | |
2857 | - | then split_4C(value( | |
3068 | + | let mE = bQ(mx) | |
3069 | + | let mF = getString(mE) | |
3070 | + | let mG = if (isDefined(mF)) | |
3071 | + | then split_4C(value(mF), "_") | |
2858 | 3072 | else nil | |
2859 | - | if (containsElement( | |
2860 | - | then throw(((( | |
3073 | + | if (containsElement(mG, my)) | |
3074 | + | then throw((((mx + " already contains ") + my) + " within referrals")) | |
2861 | 3075 | else { | |
2862 | - | let | |
2863 | - | let | |
2864 | - | then value( | |
2865 | - | else makeString_2C(( | |
2866 | - | $Tuple2(([StringEntry( | |
3076 | + | let mH = makeString_2C((mG :+ my), "_") | |
3077 | + | let mI = if (containsElement(mD, mx)) | |
3078 | + | then value(mC) | |
3079 | + | else makeString_2C((mD :+ mx), "_") | |
3080 | + | $Tuple2(([StringEntry(kc, mx), StringEntry(mE, mH), StringEntry(mB, mI)] ++ lh), 0) | |
2867 | 3081 | } | |
2868 | 3082 | } | |
2869 | 3083 | } | |
2870 | 3084 | } | |
2871 | 3085 | } | |
2872 | 3086 | } | |
2873 | 3087 | } | |
2874 | 3088 | ||
2875 | 3089 | ||
2876 | 3090 | ||
2877 | - | @Callable( | |
2878 | - | func distributePoints ( | |
2879 | - | let | |
2880 | - | if ((size( | |
3091 | + | @Callable(gy) | |
3092 | + | func distributePoints (mJ,mK,mL,mM,mN) = { | |
3093 | + | let lh = kN(gy) | |
3094 | + | if ((size(gy.payments) != 0)) | |
2881 | 3095 | then throw("No payments required") | |
2882 | 3096 | else { | |
2883 | - | let | |
2884 | - | let | |
2885 | - | let | |
2886 | - | let | |
3097 | + | let av = toString(gy.originCaller) | |
3098 | + | let mO = an(invoke(P, "checkWlgXpREADONLY", [av], nil)) | |
3099 | + | let mP = al(mO[1]) | |
3100 | + | let mQ = if ((0 >= mP)) | |
2887 | 3101 | then $Tuple2(0, nil) | |
2888 | 3102 | else { | |
2889 | - | let | |
2890 | - | if (( | |
2891 | - | then $Tuple2( | |
3103 | + | let jX = al(invoke(P, "takeWlgXp", [av], nil)) | |
3104 | + | if ((jX == jX)) | |
3105 | + | then $Tuple2(mP, [IntegerEntry(cW(av), al(mO[0])), IntegerEntry(cV(av), al(mO[2]))]) | |
2892 | 3106 | else throw("Strict value is not equal to itself.") | |
2893 | 3107 | } | |
2894 | - | let | |
2895 | - | let | |
2896 | - | let | |
2897 | - | let | |
2898 | - | let | |
2899 | - | let | |
2900 | - | let | |
2901 | - | let | |
2902 | - | let | |
2903 | - | if (( | |
2904 | - | then throw((("There are only " + toString( | |
3108 | + | let mR = mQ._1 | |
3109 | + | let mS = mQ._2 | |
3110 | + | let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked") | |
3111 | + | let mT = cX(av) | |
3112 | + | let mU = (valueOrElse(getInteger(mT), 0) + mR) | |
3113 | + | let mV = cT(bO) | |
3114 | + | let mW = valueOrElse(getInteger(mV), 0) | |
3115 | + | let mX = (mU + mW) | |
3116 | + | let mY = ((((mJ + mK) + mL) + mM) + mN) | |
3117 | + | if ((mY > mX)) | |
3118 | + | then throw((("There are only " + toString(mX)) + " free points to distribute")) | |
2905 | 3119 | else { | |
2906 | - | let | |
2907 | - | let | |
2908 | - | let | |
2909 | - | $Tuple2((([IntegerEntry( | |
3120 | + | let mZ = cQ(bO) | |
3121 | + | let dF = split(valueOrElse(getString(mZ), "0_0_0_0_0"), "_") | |
3122 | + | let na = (mU - mY) | |
3123 | + | $Tuple2((([IntegerEntry(mT, if ((0 > na)) | |
2910 | 3124 | then 0 | |
2911 | - | else | |
2912 | - | then ( | |
2913 | - | else | |
3125 | + | else na), IntegerEntry(mV, if ((0 > na)) | |
3126 | + | then (mW + na) | |
3127 | + | else mW), StringEntry(mZ, makeString([toString((parseIntValue(dF[cF]) + mJ)), toString((parseIntValue(dF[cG]) + mK)), toString((parseIntValue(dF[cH]) + mL)), toString((parseIntValue(dF[cI]) + mM)), toString((parseIntValue(dF[cJ]) + mN))], "_"))] ++ lh) ++ mS), 0) | |
2914 | 3128 | } | |
2915 | 3129 | } | |
2916 | 3130 | } | |
2917 | 3131 | ||
2918 | 3132 | ||
2919 | 3133 | ||
2920 | - | @Callable( | |
2921 | - | func splitByGlobalWeightsREADONLY ( | |
2922 | - | ||
2923 | - | ||
2924 | - | ||
2925 | - | @Callable( | |
2926 | - | func splitByGlobalAndLocalWeightsREADONLY ( | |
2927 | - | let | |
2928 | - | $Tuple2(nil, $Tuple2( | |
2929 | - | } | |
2930 | - | ||
2931 | - | ||
2932 | - | ||
2933 | - | @Callable( | |
2934 | - | func getBackpackREADONLY ( | |
2935 | - | ||
2936 | - | ||
2937 | - | ||
2938 | - | @Callable( | |
2939 | - | func getWarehouseREADONLY ( | |
2940 | - | let | |
2941 | - | let | |
2942 | - | let | |
2943 | - | $Tuple2(nil, makeString_2C( | |
2944 | - | } | |
2945 | - | ||
2946 | - | ||
2947 | - | ||
2948 | - | @Callable( | |
2949 | - | func saveLastTx () = if (!(containsElement([ | |
3134 | + | @Callable(gy) | |
3135 | + | func splitByGlobalWeightsREADONLY (eC) = $Tuple2(nil, eU(eC)) | |
3136 | + | ||
3137 | + | ||
3138 | + | ||
3139 | + | @Callable(gy) | |
3140 | + | func splitByGlobalAndLocalWeightsREADONLY (nb,nc,gB) = { | |
3141 | + | let gu = gA(gB) | |
3142 | + | $Tuple2(nil, $Tuple2(eU(nb), eF(nc, gu))) | |
3143 | + | } | |
3144 | + | ||
3145 | + | ||
3146 | + | ||
3147 | + | @Callable(gy) | |
3148 | + | func getBackpackREADONLY (bO) = $Tuple2(nil, makeString(hC(bT(bO)), ":")) | |
3149 | + | ||
3150 | + | ||
3151 | + | ||
3152 | + | @Callable(gy) | |
3153 | + | func getWarehouseREADONLY (bI) = { | |
3154 | + | let jm = value(assetInfo(fromBase58String(bI))) | |
3155 | + | let hS = (aq(split(jm.description, "_")[T]) / p) | |
3156 | + | let hT = valueOrElse(getInteger(bJ(bI)), 0) | |
3157 | + | $Tuple2(nil, makeString_2C(hQ(bH(bI), hS, hT), ":")) | |
3158 | + | } | |
3159 | + | ||
3160 | + | ||
3161 | + | ||
3162 | + | @Callable(gy) | |
3163 | + | func saveLastTx () = if (!(containsElement([P, N, Q, R], gy.caller))) | |
2950 | 3164 | then throw("Access denied") | |
2951 | - | else $Tuple2( | |
2952 | - | ||
2953 | - | ||
2954 | - | ||
2955 | - | @Callable( | |
2956 | - | func updateDuckStats ( | |
3165 | + | else $Tuple2(kN(gy), 42) | |
3166 | + | ||
3167 | + | ||
3168 | + | ||
3169 | + | @Callable(gy) | |
3170 | + | func updateDuckStats (bO,jX) = if ((gy.caller != N)) | |
2957 | 3171 | then throw("Access denied") | |
2958 | - | else | |
2959 | - | ||
2960 | - | ||
2961 | - | ||
2962 | - | @Callable( | |
2963 | - | func updateAccStats ( | |
3172 | + | else jZ(bO, jX) | |
3173 | + | ||
3174 | + | ||
3175 | + | ||
3176 | + | @Callable(gy) | |
3177 | + | func updateAccStats (av,jX) = if (!(containsElement([P, N, R], gy.caller))) | |
2964 | 3178 | then throw("Access denied") | |
2965 | - | else | |
2966 | - | ||
2967 | - | ||
2968 | - | ||
2969 | - | @Callable( | |
2970 | - | func equipDuck ( | |
2971 | - | let | |
2972 | - | if ((size( | |
3179 | + | else ka(av, jX) | |
3180 | + | ||
3181 | + | ||
3182 | + | ||
3183 | + | @Callable(gy) | |
3184 | + | func equipDuck (nd) = { | |
3185 | + | let lh = kN(gy) | |
3186 | + | if ((size(gy.payments) != 0)) | |
2973 | 3187 | then throw("No payments required") | |
2974 | 3188 | else { | |
2975 | - | let | |
2976 | - | let | |
2977 | - | if ( | |
3189 | + | let av = toString(gy.originCaller) | |
3190 | + | let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked") | |
3191 | + | if (kk(bO)) | |
2978 | 3192 | then throw("equipDuck_checkTournament") | |
2979 | 3193 | else { | |
2980 | - | let | |
2981 | - | let | |
2982 | - | let | |
2983 | - | let | |
2984 | - | let | |
2985 | - | if ((size( | |
3194 | + | let gk = cU(bO) | |
3195 | + | let lb = split(valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
3196 | + | let hD = bT(bO) | |
3197 | + | let ih = hC(hD) | |
3198 | + | let lC = split(nd, "_") | |
3199 | + | if ((size(lC) != cL)) | |
2986 | 3200 | then throw("Wrong equipment string") | |
2987 | 3201 | else { | |
2988 | - | let | |
2989 | - | let | |
2990 | - | let | |
3202 | + | let gn = gc(lb, fr(ih[bv]), true, nil) | |
3203 | + | let go = split(lC[cK], ";")[1] | |
3204 | + | let dD = if ((go == "")) | |
2991 | 3205 | then 0 | |
2992 | 3206 | else { | |
2993 | - | let | |
2994 | - | if (( | |
3207 | + | let gp = split(go, ",")[0] | |
3208 | + | if ((gp == "")) | |
2995 | 3209 | then 0 | |
2996 | 3210 | else { | |
2997 | - | let | |
2998 | - | let | |
2999 | - | let | |
3000 | - | if (if (if (if (if (( | |
3211 | + | let fG = split(gp, ":") | |
3212 | + | let K = fG[0] | |
3213 | + | let gq = fG[1] | |
3214 | + | if (if (if (if (if ((K == "06")) | |
3001 | 3215 | then true | |
3002 | - | else ( | |
3216 | + | else (K == "07")) | |
3003 | 3217 | then true | |
3004 | - | else ( | |
3005 | - | then ( | |
3218 | + | else (K == "08")) | |
3219 | + | then (gq != "") | |
3006 | 3220 | else false) | |
3007 | - | then (parseIntValue( | |
3221 | + | then (parseIntValue(gq) > 0) | |
3008 | 3222 | else false) | |
3009 | - | then parseIntValue(split( | |
3223 | + | then parseIntValue(split(bd[parseIntValue(K)], "_")[bf]) | |
3010 | 3224 | else 0 | |
3011 | 3225 | } | |
3012 | 3226 | } | |
3013 | - | let | |
3014 | - | let | |
3015 | - | let | |
3016 | - | $Tuple2(([StringEntry( | |
3227 | + | let fX = dC(this, bO, dD, true) | |
3228 | + | let gr = gc(lC, gn, false, fX) | |
3229 | + | let lc = fw(gr) | |
3230 | + | $Tuple2(([StringEntry(gk, nd), StringEntry(hD, makeString_2C([ih[bs], ih[bt], ih[bu], lc], ":")), StringEntry(da(bO), makeString([toString(fX[7]), toString(fX[8]), toString(fX[9]), toString(fX[10]), toString(fX[11])], "_"))] ++ lh), 0) | |
3017 | 3231 | } | |
3018 | 3232 | } | |
3019 | 3233 | } | |
3020 | 3234 | } | |
3021 | 3235 | ||
3022 | 3236 | ||
3023 | 3237 | ||
3024 | - | @Callable( | |
3025 | - | func initDuckTourAttempt ( | |
3238 | + | @Callable(gy) | |
3239 | + | func initDuckTourAttempt (bO) = if ((gy.caller != Q)) | |
3026 | 3240 | then throw("Access denied") | |
3027 | 3241 | else { | |
3028 | - | let | |
3029 | - | let | |
3030 | - | let | |
3031 | - | let | |
3032 | - | let | |
3033 | - | let | |
3034 | - | let | |
3035 | - | $Tuple2([IntegerEntry( | |
3036 | - | } | |
3037 | - | ||
3038 | - | ||
3039 | - | ||
3040 | - | @Callable( | |
3242 | + | let iV = cP(bO) | |
3243 | + | let iW = dw(valueOrElse(getInteger(cS(bO)), 0)) | |
3244 | + | let lw = valueOrElse(getInteger(iV), iW) | |
3245 | + | let ne = bU(bO) | |
3246 | + | let jk = valueOrElse(getString(ne), aQ) | |
3247 | + | let co = valueOrElse(getInteger(Q, bZ), 0) | |
3248 | + | let nf = (toString(co) + "_T_0") | |
3249 | + | $Tuple2([IntegerEntry(cY(bO), lw), IntegerEntry(iV, iW), StringEntry(cZ(bO), jk), StringEntry(ne, nf)], nf) | |
3250 | + | } | |
3251 | + | ||
3252 | + | ||
3253 | + | ||
3254 | + | @Callable(gy) | |
3041 | 3255 | func breakAttempt () = { | |
3042 | - | let | |
3043 | - | let | |
3044 | - | let | |
3045 | - | let | |
3046 | - | if ((split( | |
3256 | + | let lh = kN(gy) | |
3257 | + | let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked") | |
3258 | + | let ne = bU(bO) | |
3259 | + | let jk = valueOrElse(getString(ne), aQ) | |
3260 | + | if ((split(jk, "_")[bx] != "T")) | |
3047 | 3261 | then throw("Your duck is not in the tournament") | |
3048 | 3262 | else { | |
3049 | - | let | |
3050 | - | let | |
3051 | - | $Tuple2((( | |
3052 | - | } | |
3053 | - | } | |
3054 | - | ||
3055 | - | ||
3056 | - | ||
3057 | - | @Callable( | |
3058 | - | func breakAttemptCallback () = if (( | |
3263 | + | let ng = getIntegerValue(cY(bO)) | |
3264 | + | let nh = getStringValue(cZ(bO)) | |
3265 | + | $Tuple2(((lh :+ IntegerEntry(cP(bO), ng)) :+ StringEntry(ne, nh)), jk) | |
3266 | + | } | |
3267 | + | } | |
3268 | + | ||
3269 | + | ||
3270 | + | ||
3271 | + | @Callable(gy) | |
3272 | + | func breakAttemptCallback () = if ((gy.caller != Q)) | |
3059 | 3273 | then throw("Access denied") | |
3060 | 3274 | else { | |
3061 | - | let | |
3062 | - | $Tuple2([IntegerEntry( | |
3063 | - | } | |
3064 | - | ||
3065 | - | ||
3066 | - | ||
3067 | - | @Callable( | |
3068 | - | func exitTournamentInternal ( | |
3275 | + | let bO = valueOrErrorMessage(getString(bS(toString(gy.originCaller))), "You don't have a duck staked") | |
3276 | + | $Tuple2([IntegerEntry(cP(bO), getIntegerValue(cY(bO))), StringEntry(bU(bO), getStringValue(cZ(bO)))], "breakAttemptCallback") | |
3277 | + | } | |
3278 | + | ||
3279 | + | ||
3280 | + | ||
3281 | + | @Callable(gy) | |
3282 | + | func exitTournamentInternal (bO) = if ((gy.caller != this)) | |
3069 | 3283 | then throw("Access denied") | |
3070 | 3284 | else { | |
3071 | - | let | |
3072 | - | let | |
3073 | - | $Tuple2([IntegerEntry( | |
3074 | - | } | |
3075 | - | ||
3076 | - | ||
3077 | - | ||
3078 | - | @Callable( | |
3079 | - | func processDelivery ( | |
3285 | + | let ng = getIntegerValue(cY(bO)) | |
3286 | + | let nh = getStringValue(cZ(bO)) | |
3287 | + | $Tuple2([IntegerEntry(cP(bO), ng), StringEntry(bU(bO), nh)], false) | |
3288 | + | } | |
3289 | + | ||
3290 | + | ||
3291 | + | ||
3292 | + | @Callable(gy) | |
3293 | + | func processDelivery (bO) = if ((gy.caller != this)) | |
3080 | 3294 | then throw("Access denied") | |
3081 | 3295 | else { | |
3082 | - | let | |
3083 | - | let | |
3084 | - | if (( | |
3085 | - | then throw(("Delivery is not available, fund=" + | |
3296 | + | let av = toString(gy.originCaller) | |
3297 | + | let ni = valueOrElse(getInteger(N, bY), 0) | |
3298 | + | if ((aT > ni)) | |
3299 | + | then throw(("Delivery is not available, fund=" + aw(ni, 6))) | |
3086 | 3300 | else { | |
3087 | - | let | |
3088 | - | let | |
3089 | - | let | |
3090 | - | let | |
3091 | - | let | |
3092 | - | then valueOrElse(getInteger( | |
3301 | + | let cq = lastBlock.timestamp | |
3302 | + | let nj = dg(av) | |
3303 | + | let nk = valueOrElse(getInteger(dh(av)), 0) | |
3304 | + | let nl = (cq / dJ) | |
3305 | + | let fM = if ((nk == nl)) | |
3306 | + | then valueOrElse(getInteger(nj), 0) | |
3093 | 3307 | else 0 | |
3094 | - | let | |
3095 | - | let | |
3096 | - | if (( | |
3097 | - | then throw((("You already used " + toString( | |
3308 | + | let nm = valueOrElse(getInteger(R, dL(av)), 0) | |
3309 | + | let nn = (aY + (nm / aZ)) | |
3310 | + | if ((fM >= nn)) | |
3311 | + | then throw((("You already used " + toString(nn)) + " delivery attempts for today")) | |
3098 | 3312 | else { | |
3099 | - | let | |
3100 | - | let | |
3101 | - | $Tuple2([IntegerEntry( | |
3313 | + | let no = df(bO) | |
3314 | + | let np = invoke(N, "sendDeliveryReward", [av], nil) | |
3315 | + | $Tuple2([IntegerEntry(nj, (fM + 1)), IntegerEntry(dh(av), nl), IntegerEntry(no, (valueOrElse(getInteger(no), 0) + 1))], np) | |
3102 | 3316 | } | |
3103 | 3317 | } | |
3104 | 3318 | } | |
3105 | 3319 | ||
3106 | 3320 | ||
3107 | 3321 | ||
3108 | - | @Callable( | |
3109 | - | func robLand ( | |
3110 | - | let | |
3111 | - | if ((size( | |
3322 | + | @Callable(gy) | |
3323 | + | func robLand (iK,iL) = { | |
3324 | + | let lh = kN(gy) | |
3325 | + | if ((size(gy.payments) != 1)) | |
3112 | 3326 | then throw("exactly 1 payment must be attached") | |
3113 | 3327 | else { | |
3114 | - | let | |
3115 | - | let | |
3116 | - | if (if (!(isDefined( | |
3328 | + | let li = gy.payments[0] | |
3329 | + | let nq = li.amount | |
3330 | + | if (if (!(isDefined(li.assetId))) | |
3117 | 3331 | then true | |
3118 | - | else (value( | |
3332 | + | else (value(li.assetId) != X)) | |
3119 | 3333 | then throw("WLGOLD payments only!") | |
3120 | - | else if (( | |
3121 | - | then throw((("Payment should be " + | |
3334 | + | else if ((nq != aV)) | |
3335 | + | then throw((("Payment should be " + aw(aV, 8)) + " WLGOLD")) | |
3122 | 3336 | else { | |
3123 | - | let | |
3124 | - | if (!(sigVerify_8Kb( | |
3337 | + | let av = toString(gy.caller) | |
3338 | + | if (!(sigVerify_8Kb(iK, iL, f))) | |
3125 | 3339 | then throw("signature does not match") | |
3126 | 3340 | else { | |
3127 | - | let | |
3128 | - | let | |
3129 | - | let | |
3130 | - | let | |
3131 | - | let | |
3132 | - | let | |
3133 | - | let | |
3134 | - | let | |
3135 | - | if (( | |
3341 | + | let fj = split_4C(toUtf8String(iK), ";") | |
3342 | + | let nr = split_4C(fj[0], "|") | |
3343 | + | let iN = split(nr[ev], "_") | |
3344 | + | let iO = parseIntValue(iN[0]) | |
3345 | + | let iP = parseIntValue(iN[1]) | |
3346 | + | let iZ = nr[ew] | |
3347 | + | let ns = split(fj[1], "|") | |
3348 | + | let nt = ns[ex] | |
3349 | + | if ((nt != "B")) | |
3136 | 3350 | then throw("Only bank robbery is supported") | |
3137 | 3351 | else { | |
3138 | - | let | |
3139 | - | if (if (( | |
3352 | + | let iS = parseIntValue(ns[ez]) | |
3353 | + | if (if ((iS > (lastBlock.timestamp + dO))) | |
3140 | 3354 | then true | |
3141 | - | else ((lastBlock.timestamp - | |
3142 | - | then throw(((("signature outdated: logTime=" + toString( | |
3355 | + | else ((lastBlock.timestamp - dO) > iS)) | |
3356 | + | then throw(((("signature outdated: logTime=" + toString(iS)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
3143 | 3357 | else { | |
3144 | - | let | |
3145 | - | let | |
3146 | - | if (( | |
3147 | - | then throw(((("Tx ids don't match! In state: " + | |
3358 | + | let iT = ns[ey] | |
3359 | + | let iU = valueOrElse(getString(au(av)), "") | |
3360 | + | if ((iU != iT)) | |
3361 | + | then throw(((("Tx ids don't match! In state: " + iU) + ", in msg: ") + iT)) | |
3148 | 3362 | else { | |
3149 | - | let | |
3150 | - | let | |
3151 | - | let | |
3152 | - | let | |
3153 | - | let | |
3154 | - | let | |
3155 | - | let | |
3156 | - | let | |
3157 | - | if ( | |
3363 | + | let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked") | |
3364 | + | let gk = cU(bO) | |
3365 | + | let lA = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,") | |
3366 | + | let nu = fe(lA, iZ) | |
3367 | + | let lC = nu._1 | |
3368 | + | let lD = nu._2 | |
3369 | + | let nv = nu._3 | |
3370 | + | let jk = valueOrElse(getString(bU(bO)), aQ) | |
3371 | + | if (cm(Q, jk)) | |
3158 | 3372 | then throw("Your duck is taking part in the tournament") | |
3159 | 3373 | else { | |
3160 | - | let | |
3161 | - | let | |
3162 | - | let | |
3163 | - | let | |
3164 | - | let | |
3165 | - | then valueOrElse(getInteger( | |
3374 | + | let cq = lastBlock.timestamp | |
3375 | + | let nj = dd(av) | |
3376 | + | let nk = valueOrElse(getInteger(de(av)), 0) | |
3377 | + | let nl = (cq / dJ) | |
3378 | + | let fM = if ((nk == nl)) | |
3379 | + | then valueOrElse(getInteger(nj), 0) | |
3166 | 3380 | else 0 | |
3167 | - | let | |
3168 | - | let | |
3169 | - | if (( | |
3170 | - | then throw((("You already used " + toString( | |
3381 | + | let nm = valueOrElse(getInteger(R, dL(av)), 0) | |
3382 | + | let nw = (aW + (nm / aX)) | |
3383 | + | if ((fM >= nw)) | |
3384 | + | then throw((("You already used " + toString(nw)) + " robbery attempts for today")) | |
3171 | 3385 | else { | |
3172 | - | let | |
3173 | - | let | |
3386 | + | let no = dc(bO) | |
3387 | + | let nx = if ((iP > 0)) | |
3174 | 3388 | then { | |
3175 | - | let | |
3176 | - | let | |
3177 | - | then (2 * | |
3178 | - | else (5 * | |
3179 | - | if (( | |
3180 | - | then throw(((("Robbery is not available, funds = " + | |
3181 | - | else [ScriptTransfer( | |
3389 | + | let ni = assetBalance(this, X) | |
3390 | + | let ny = if (nv) | |
3391 | + | then (2 * aV) | |
3392 | + | else (5 * aV) | |
3393 | + | if ((ny > ni)) | |
3394 | + | then throw(((("Robbery is not available, funds = " + aw(ni, 8)) + " WLGOLD, required = ") + aw(ny, 8))) | |
3395 | + | else [ScriptTransfer(gy.caller, ny, X)] | |
3182 | 3396 | } | |
3183 | 3397 | else nil | |
3184 | - | $Tuple2(((((((((( | |
3185 | - | then [StringEntry( | |
3186 | - | else nil)) ++ | |
3187 | - | then | |
3188 | - | else | |
3398 | + | $Tuple2((((((((((lh ++ nx) ++ (if (lD) | |
3399 | + | then [StringEntry(da(bO), "0_0_0_0_0")] | |
3400 | + | else nil)) ++ jZ(bO, if ((iP > 0)) | |
3401 | + | then dl | |
3402 | + | else dm)._1) :+ IntegerEntry(db(bO), cq)) :+ IntegerEntry(nj, (fM + 1))) :+ IntegerEntry(de(av), nl)) :+ IntegerEntry(no, (valueOrElse(getInteger(no), 0) + 1))) :+ StringEntry(gk, lC)) :+ IntegerEntry(cP(bO), max([iP, 0]))), 0) | |
3189 | 3403 | } | |
3190 | 3404 | } | |
3191 | 3405 | } | |
3192 | 3406 | } | |
3193 | 3407 | } | |
3194 | 3408 | } | |
3195 | 3409 | } | |
3196 | 3410 | } | |
3197 | 3411 | } | |
3198 | 3412 | ||
3199 | 3413 | ||
3200 | 3414 | ||
3201 | - | @Callable( | |
3202 | - | func buyRoboDuck () = if (!( | |
3415 | + | @Callable(gy) | |
3416 | + | func buyRoboDuck () = if (!(c)) | |
3203 | 3417 | then throw("Feature is turned off") | |
3204 | 3418 | else { | |
3205 | - | let | |
3206 | - | if ((size( | |
3419 | + | let lh = kN(gy) | |
3420 | + | if ((size(gy.payments) != 1)) | |
3207 | 3421 | then throw("Exactly one payment required") | |
3208 | 3422 | else { | |
3209 | - | let | |
3210 | - | if (( | |
3423 | + | let li = value(gy.payments[0]) | |
3424 | + | if ((li.assetId != h)) | |
3211 | 3425 | then throw("Allowed USDT payment only!") | |
3212 | - | else if (( | |
3213 | - | then throw((("Payment attached should be " + | |
3426 | + | else if ((li.amount != dU)) | |
3427 | + | then throw((("Payment attached should be " + aw(dU, 6)) + " USDT")) | |
3214 | 3428 | else { | |
3215 | - | let | |
3216 | - | let | |
3217 | - | let | |
3218 | - | let | |
3219 | - | let | |
3220 | - | let | |
3221 | - | $Tuple2((((( | |
3429 | + | let nz = valueOrElse(getInteger(en()), 0) | |
3430 | + | let nA = toBytes(nz) | |
3431 | + | let ef = ((aK + "-") + takeRight(toBase16String(nA), 8)) | |
3432 | + | let nB = takeRight(toBase16String(sha256_16Kb(nA)), 6) | |
3433 | + | let iH = Issue(ef, ("Robo Duck NFT for WavesLands game, background color = #" + nB), 1, 0, false) | |
3434 | + | let bA = calculateAssetId(iH) | |
3435 | + | $Tuple2(((((lh :+ IntegerEntry(en(), (nz + 1))) :+ iH) :+ ScriptTransfer(gy.originCaller, 1, bA)) :+ ScriptTransfer(N, li.amount, h)), $Tuple2(toBase58String(bA), nB)) | |
3222 | 3436 | } | |
3223 | 3437 | } | |
3224 | 3438 | } | |
3225 | 3439 | ||
3226 | 3440 |
github/deemru/w8io/169f3d6 1423.29 ms ◑