tx · Dj5wY6S2UuhUK6rrW5AcXiVJHWY368zjfYbhsuQP1VZd

3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm:  -0.10700000 Waves

2023.10.09 19:01 [2791301] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves

{ "type": 13, "id": "Dj5wY6S2UuhUK6rrW5AcXiVJHWY368zjfYbhsuQP1VZd", "fee": 10700000, "feeAssetId": null, "timestamp": 1696867328450, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "4e41qPfgN3w2PPehYaxCNDEPbjKgaJnvd3wh84Yg2JR9Qeq35zGzkrMxtwZ4Bko5t8gxgbPBPXBkUsmarpDm2Kyi" ], "script": "base64:BgLiAQgCEgMKAQgSBAoCCAESAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASABIECgICAhIAEgMKAQgSBAoCCAgSAwoBGBIECgIICBIECgIICBIDCgEIEgMKARgSAwoBCBIFCgMICAgSBAoCCAgSBwoFAQEBAQESAwoBARIFCgMBAQgSAwoBCBIDCgEIEgASBAoCCAESBAoCCAESAwoBCBIECgIICBIDCgEIEgASAwoBCBIDCgEIEgQKAggBEgQKAgICEgQKAgICEgCcAgAJREFZTUlMTElTAIC4mSkBFGtleUxhc3RBcmJUaW1lQnlVc2VyAQRhZGRyCQCsAgICEGxhc3RBcmJUaW1lVXNlcl8FBGFkZHIABlNDQUxFOACAwtcvAAx4cExldmVsU2NhbGUAgBkAD3hwTGV2ZWxSZWNpcFBvdwCgHwASbnVtUG9pbnRzT25MZXZlbFVwAAMADnJvYmJlcnlDb3N0TWluAIDC1y8AFHJvYmJlcnlDb29sZG93bkNvZWZmAJADAAxyZXF1aXJlbWVudHMJAMwIAgIIU3RyZW5ndGgJAMwIAgIIQWNjdXJhY3kJAMwIAgIJSW50ZWxsZWN0CQDMCAICCUVuZHVyYW5jZQkAzAgCAglEZXh0ZXJpdHkJAMwIAgIFTGV2ZWwJAMwIAgIGSGVhbHRoBQNuaWwADGNoYXJTdHJlbmd0aAAAAAxjaGFyQWNjdXJhY3kAAQANY2hhckludGVsbGVjdAACAA1jaGFyRW5kdXJhbmNlAAMADWNoYXJEZXh0ZXJpdHkABAALc2VnQmFja3BhY2sAAAALTlVNU0VHTUVOVFMABgAKTlVNTUFJTkFVWAACAAhNQVhTTE9UUwACAA1NQVhQUk9ESU5TTE9UAB4AEGxhbmRSb2JDb29sZG93bnMJAMwIAgAACQDMCAIAwM8kCQDMCAIAoPc2CQDMCAIAgNzMFAkAzAgCAICupgoFA25pbAAOTUlOX1JFU19UT19ST0IAgNrECQAMcm9iSWR4TG9ja2VkAAEAC2R1Y2tJZHhGcmVlAAAAEGR1Y2tJZHhQcmVwYXJpbmcAAQENa2V5RHVja0hlYWx0aAELZHVja0Fzc2V0SWQJAKwCAgILZHVja0hlYWx0aF8FC2R1Y2tBc3NldElkAQxrZXlEdWNrQ2hhcnMBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tDaGFyc18FC2R1Y2tBc3NldElkAQlrZXlEdWNrWFABC2R1Y2tBc3NldElkCQCsAgICB2R1Y2tYUF8FC2R1Y2tBc3NldElkAQxrZXlEdWNrTGV2ZWwBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tMZXZlbF8FC2R1Y2tBc3NldElkARFrZXlEdWNrRnJlZVBvaW50cwELZHVja0Fzc2V0SWQJAKwCAgIPZHVja0ZyZWVQb2ludHNfBQtkdWNrQXNzZXRJZAEQa2V5RHVja0VxdWlwbWVudAELZHVja0Fzc2V0SWQJAKwCAgIOZHVja0VxdWlwbWVudF8FC2R1Y2tBc3NldElkAQlrZXlVc2VyWFABBGFkZHIJAKwCAgIHdXNlclhQXwUEYWRkcgEMa2V5VXNlckxldmVsAQRhZGRyCQCsAgICCnVzZXJMZXZlbF8FBGFkZHIBEWtleVVzZXJGcmVlUG9pbnRzAQRhZGRyCQCsAgICD3VzZXJGcmVlUG9pbnRzXwUEYWRkcgEOa2V5U2F2ZWRIZWFsdGgBC2R1Y2tBc3NldElkCQCsAgICDHNhdmVkSGVhbHRoXwULZHVja0Fzc2V0SWQBEGtleVNhdmVkTG9jYXRpb24BC2R1Y2tBc3NldElkCQCsAgICDnNhdmVkTG9jYXRpb25fBQtkdWNrQXNzZXRJZAEMa2V5RHVja0J1ZmZzAQtkdWNrQXNzZXRJZAkArAICAgpkdWNrQnVmZnNfBQtkdWNrQXNzZXRJZAEYa2V5TGFzdFJvYmJlcnlUaW1lQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAhBsYXN0Um9iYmVyeVRpbWVfBQtkdWNrQXNzZXRJZAEYa2V5TGFzdFJvYmJlcnlDb3N0QnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAhBsYXN0Um9iYmVyeUNvc3RfBQtkdWNrQXNzZXRJZAETa2V5TGFuZFJvYmJlcnlTdGF0ZQELbGFuZEFzc2V0SWQJAKwCAgIRbGFuZFJvYmJlcnlTdGF0ZV8FC2xhbmRBc3NldElkARJrZXlMYW5kQ29vbGRvd25FVEEBC2xhbmRBc3NldElkCQCsAgICEGxhbmRDb29sZG93bkVUQV8FC2xhbmRBc3NldElkARNrZXlEdWNrUm9iYmVyeVN0YXRlAQtkdWNrQXNzZXRJZAkArAICAhFkdWNrUm9iYmVyeVN0YXRlXwULZHVja0Fzc2V0SWQBE2tleUxvY2tlZExhbmRCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEWxvY2tlZExhbmRCeUR1Y2tfBQtkdWNrQXNzZXRJZAEWa2V5RGVsaXZlcnlEZWxheUJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIUZGVsaXZlcnlEZWxheUJ5RHVja18FC2R1Y2tBc3NldElkAAd4cENsYWltAJBOAA94cFN1Y2Nlc3NGbGlnaHQAkE4ADHhwRmFpbEZsaWdodADQDwAIeHBDYWxsRVMAoI0GAAx4cEN1c3RvbU5hbWUAwIQ9AAp4cE5ld1NMYW5kAMCWsQIADnhwVXBncmFkZUluZnJhAJBOAAd4cE1lcmdlAMCEPQAJeHBPbmJvYXJkAMCEPQAGeHBIZWFsAJBOAQlsZXZlbEJ5WFABAnhwCQBrAwUMeHBMZXZlbFNjYWxlCQBsBgUCeHAABAUPeHBMZXZlbFJlY2lwUG93AAQABAUERE9XTgUGU0NBTEU4AQltYXhIZWFsdGgBBWxldmVsCQBkAgBkBQVsZXZlbAEHbGV2ZWxVcAIJY3VyckxldmVsBW5ld1hQBAhuZXdMZXZlbAkBCWxldmVsQnlYUAEFBW5ld1hQCQDMCAIFCG5ld0xldmVsCQDMCAIJAGgCBRJudW1Qb2ludHNPbkxldmVsVXAJAGUCBQhuZXdMZXZlbAUJY3VyckxldmVsBQNuaWwBDGdldER1Y2tTdGF0cwQPc3Rha2luZ0NvbnRyYWN0C2R1Y2tBc3NldElkCmJ1ZmZFZmZlY3QKZm9yY2VCdWZmcwQFY2hhcnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrQ2hhcnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wAgFfBANsdmwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQGaGVhbHRoCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAkBCW1heEhlYWx0aAEFA2x2bAQKc3RhdGVCdWZmcwkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzACAV8JAM4IAgkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJTdHJlbmd0aAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJBY2N1cmFjeQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJJbnRlbGxlY3QJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRW5kdXJhbmNlCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckRleHRlcml0eQkAzAgCBQNsdmwJAMwIAgUGaGVhbHRoBQNuaWwDBQpmb3JjZUJ1ZmZzCQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAUDbmlsCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQxjaGFyU3RyZW5ndGgJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDGNoYXJBY2N1cmFjeQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUNY2hhckludGVsbGVjdAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUNY2hhckVuZHVyYW5jZQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUNY2hhckRleHRlcml0eQUDbmlsAQ5nZXRSb2JiZXJ5RGF0YQIPc3Rha2luZ0NvbnRyYWN0C2R1Y2tBc3NldElkBAtsYXN0Um9iQ29zdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARhrZXlMYXN0Um9iYmVyeUNvc3RCeUR1Y2sBBQtkdWNrQXNzZXRJZAAABAtsYXN0Um9iVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBBQtkdWNrQXNzZXRJZAAABANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAdyb2JDb3N0CQCWAwEJAMwIAgUOcm9iYmVyeUNvc3RNaW4JAMwIAgkAZQIFC2xhc3RSb2JDb3N0CQBoAgUUcm9iYmVyeUNvb2xkb3duQ29lZmYJAGUCBQNub3cFC2xhc3RSb2JUaW1lBQNuaWwECWR1Y2tTdGF0ZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARNrZXlEdWNrUm9iYmVyeVN0YXRlAQULZHVja0Fzc2V0SWQAAAQKbG9ja2VkTGFuZAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARNrZXlMb2NrZWRMYW5kQnlEdWNrAQULZHVja0Fzc2V0SWQCAAQHbGFuZEVUQQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARJrZXlMYW5kQ29vbGRvd25FVEEBBQpsb2NrZWRMYW5kAAAJAJcKBQUHcm9iQ29zdAULbGFzdFJvYlRpbWUFCWR1Y2tTdGF0ZQUKbG9ja2VkTGFuZAUHbGFuZEVUQQAKTEFORFBSRUZJWAIETEFORAAKRFVDS1BSRUZJWAIERFVDSwAKQVJUUFJFU0FMRQIHUFJFU0FMRQAGTlVNUkVTAAYAGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgAZAA9EQUlMWVJFU0JZUElFQ0UAgPjSAQAMV0hNVUxUSVBMSUVSAIDIr6AlAA9ERUZBVUxUTE9DQVRJT04CD0FmcmljYV9GX0FmcmljYQAQUkVTT1VSQ0VQUklDRU1JTgDVtQIACkVTU0VMTENPRUYACgAVTUlOX1VTRFRfRkVFX0RFTElWRVJZANCGAwASVEVOX01JTlVURVNfTUlMTElTAMDPJAAJcHJvZFR5cGVzCQDMCAICEEZpcnN0IEFpZCBLaXQgTDEJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMgkAzAgCAhBGaXJzdCBBaWQgS2l0IEwzCQDMCAICC0JhY2twYWNrIEwxCQDMCAICC0JhY2twYWNrIEwyCQDMCAICC0JhY2twYWNrIEwzCQDMCAICDkZvb2QgUmF0aW9uIEwxCQDMCAICDkZvb2QgUmF0aW9uIEwyCQDMCAICDkZvb2QgUmF0aW9uIEwzCQDMCAICC0pldCBQYWNrIEwxCQDMCAICC0pldCBQYWNrIEwyCQDMCAICC0pldCBQYWNrIEwzCQDMCAICCVNoaWVsZCBMMQkAzAgCAglTaGllbGQgTDIJAMwIAgIJU2hpZWxkIEwzCQDMCAICB01pbmUgTDEJAMwIAgIHTWluZSBMMgkAzAgCAgdNaW5lIEwzCQDMCAICB1RyYXAgTDEJAMwIAgIHVHJhcCBMMgkAzAgCAgdUcmFwIEwzBQNuaWwACmNvbnRpbmVudHMJAMwIAgIIQW1lcmljYXMJAMwIAgIGRXVyb3BlCQDMCAICBEFzaWEJAMwIAgIGQWZyaWNhCQDMCAICB09jZWFuaWEFA25pbAAJQ09FRkYyTUFUAICt4gQAEGZvcnRBbGxvd2VkUHJvZHMJAMwIAgAPCQDMCAIAEAkAzAgCABEJAMwIAgASCQDMCAIAEwkAzAgCABQFA25pbAAQcHJvZHVjdGlvbk1hdHJpeAkAzAgCAiU4XzhfOF8xN18xN180Ml8xMl8wXzMwXzAsMCwwLDAsMCwwLDBfCQDMCAICJThfOF84XzE3XzE3XzQyXzI0XzBfNjBfMCwwLDUsMiwwLDAsMF8JAMwIAgInOF84XzhfMTdfMTdfNDJfMzZfMF8xMjBfMCwwLDEwLDQsMCwwLDBfCQDMCAICKThfMTlfMTlfOF8yN18xOV8yNl8xXzIwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICKThfMTlfMTlfOF8yN18xOV81Ml8xXzQwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICKThfMTlfMTlfOF8yN18xOV83OF8xXzgwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICJThfOF84XzhfOF82MF8xM18yXzJfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzI2XzJfNF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAiU4XzhfOF84XzhfNjBfMzlfMl84XzAsMCwwLDAsMCwwLDBfMDExCQDMCAICKTMwXzMwXzNfMTdfMTdfM18zMF8zXzMwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKTMwXzMwXzNfMTdfMTdfM182MF8zXzUwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKTMwXzMwXzNfMTdfMTdfM185MF8zXzcwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzExXzRfMTBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMjJfNF8yMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8zM180XzMwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKjRfMTNfMjJfNF8zNV8yMl8yM18wXzUwLDEsMF8wLDAsMCwwLDAsMCwwXwkAzAgCAio0XzEzXzIyXzRfMzVfMjJfNDZfMF81MCwxLDFfMCwyLDUsMCwwLDAsMF8JAMwIAgIrNF8xM18yMl80XzM1XzIyXzY5XzBfNTAsMiwxXzAsNSwxMCwwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfMjBfMV8zMCwxLDFfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzQwXzFfMzAsMSwyXzIsMSwzLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV82MF8xXzMwLDEsM181LDIsOCwwLDAsMCwwXwUDbmlsAAlySWR4Q29lZmYABgAKcklkeEVmZmVjdAAIABBySWR4UmVxdWlyZW1lbnRzAAkACXJJZHhTbG90cwAKAA5QUk9EVUNUUEtHU0laRQAKAAt3aElkeExldmVscwAAAAh3aElkeFJlcwABAAh3aElkeE1hdAACAAl3aElkeFByb2QAAwAJd2hJZHhMT0ZUAAQACXZvbExvY2tlZAAAAAt2b2xPY2N1cGllZAABAAd2b2xGcmVlAAIACHZvbFRvdGFsAAMACmJwSWR4TGV2ZWwAAAAIYnBJZHhSZXMAAQAIYnBJZHhNYXQAAgAJYnBJZHhQcm9kAAMAD2xvY0lkeENvbnRpbmVudAAAAApsb2NJZHhUeXBlAAEACGxvY0lkeElkAAIBFWtleUxhbmRBc3NldElkVG9Pd25lcgEHYXNzZXRJZAkArAICAgNub18FB2Fzc2V0SWQBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQdhc3NldElkCQCsAgICBWxjbmFfBQdhc3NldElkARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQdhc3NldElkCQCsAgICA3N0XwUHYXNzZXRJZAEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBHR5cGUHYXNzZXRJZAkAuQkCCQDMCAICA2xhcwkAzAgCBQR0eXBlCQDMCAIFB2Fzc2V0SWQFA25pbAIBXwEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMHbmZ0VHlwZQdhc3NldElkCW93bmVyQWRkcgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBnN0dGFvXwUHbmZ0VHlwZQIBXwUHYXNzZXRJZAIBXwUJb3duZXJBZGRyARJrZXlXYXJlaG91c2VCeUxhbmQBC2xhbmRBc3NldElkCQCsAgICA3doXwULbGFuZEFzc2V0SWQBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBB2Fzc2V0SWQJAKwCAgILaW5mcmFMZXZlbF8FB2Fzc2V0SWQBF2tleUZvcnRpZmljYXRpb25zQnlMYW5kAQtsYW5kQXNzZXRJZAkArAICAg9mb3J0aWZpY2F0aW9uc18FC2xhbmRBc3NldElkARprZXlEdWNrQXNzZXRJZFRvQ3VzdG9tTmFtZQEHYXNzZXRJZAkArAICAhhkdWNrQ3VzdG9tTmFtZUJ5QXNzZXRJZF8FB2Fzc2V0SWQBFmtleUFkZHJlc3NUb0N1c3RvbU5hbWUBBGFkZHIJAKwCAgIYYWNjb3VudEN1c3RvbU5hbWVCeUFkZHJfBQRhZGRyAQ9rZXlBZGRyZXNzUmVmQnkBBGFkZHIJAKwCAgIJYWNjUmVmQnlfBQRhZGRyARxrZXlPbmJvYXJkQXJ0QWN0aXZhdGVkT25EdWNrAQtkdWNrQXNzZXRJZAkArAICAhpvbmJvYXJkQXJ0QWN0aXZhdGVkT25EdWNrXwULZHVja0Fzc2V0SWQBHGtleU9uYm9hcmRBcnREdWNrQWN0aXZhdGVkQnkBBGFkZHIJAKwCAgIab25ib2FyZEFydEFjdGl2YXRlZER1Y2tCeV8FBGFkZHIBE2tleUFkZHJlc3NSZWZlcnJhbHMBBGFkZHIJAKwCAgINYWNjUmVmZXJyYWxzXwUEYWRkcgEQa2V5RHVja0lkVG9Pd25lcgEHYXNzZXRJZAkArAICAgpkdWNrT3duZXJfBQdhc3NldElkARRrZXlTdGFrZWREdWNrQnlPd25lcgEJb3duZXJBZGRyCQCsAgICEnN0YWtlZER1Y2tCeU93bmVyXwUJb3duZXJBZGRyARFrZXlCYWNrcGFja0J5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIJYmFja1BhY2tfBQtkdWNrQXNzZXRJZAEPa2V5RHVja0xvY2F0aW9uAQtkdWNrQXNzZXRJZAkArAICAg1kdWNrTG9jYXRpb25fBQtkdWNrQXNzZXRJZAEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQh1c2VyQWRkcgkArAICAholcyVzX191c2VyR3dsUmVsZWFzZVRpbWVfXwUIdXNlckFkZHIBDmtleUVzV2FyZWhvdXNlAAIaZW1lcmdlbmN5V2FyZWhvdXNlUHJvZHVjdHMAD2RlbGl2ZXJ5RnVuZEtleQIMZGVsaXZlcnlGdW5kABFkZWxpdmVyeUxvY2tlZEtleQIOZGVsaXZlcnlMb2NrZWQADWxhc3RUb3VySWRLZXkCDiVzX19sYXN0VG91cklkARVrZXlUb3VyU3RhdGljRGF0YUJ5SWQBA3RJZAkArAICAhYlcyVkX190b3VyU3RhdGljRGF0YV9fCQCkAwEFA3RJZAEWa2V5VG91ckR5bmFtaWNEYXRhQnlJZAEDdElkCQCsAgICFyVzJWRfX3RvdXJEeW5hbWljRGF0YV9fCQCkAwEFA3RJZAEaa2V5QmVzdFJlc3VsdEJ5VG91ckFuZER1Y2sCA3RJZAtkdWNrQXNzZXRJZAkAuQkCCQDMCAICHyVzJWQlc19fYmVzdFJlc3VsdEJ5VG91ckFuZER1Y2sJAMwIAgkApAMBBQN0SWQJAMwIAgULZHVja0Fzc2V0SWQFA25pbAICX18ACWlkeFN0YXRpYwAAAAppZHhEeW5hbWljAAEACnRTdGF0aWNFbmQABgAOdER5bmFtaWNTdGF0dXMAAQELZ2V0VG91ckRhdGECDHRvdXJDb250cmFjdAN0SWQEBnN0YXRpYwkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUMdG91ckNvbnRyYWN0CQEVa2V5VG91clN0YXRpY0RhdGFCeUlkAQUDdElkCQCsAgIJAKwCAgIZRXJyb3IgcmVhZGluZyB0b3VybmFtZW50IAkApAMBBQN0SWQCBSBkYXRhAgJfXwQHZHluYW1pYwkAvAkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUMdG91ckNvbnRyYWN0CQEWa2V5VG91ckR5bmFtaWNEYXRhQnlJZAEFA3RJZAkArAICCQCsAgICGUVycm9yIHJlYWRpbmcgdG91cm5hbWVudCAJAKQDAQUDdElkAgUgZGF0YQICX18JAMwIAgUGc3RhdGljCQDMCAIFB2R5bmFtaWMFA25pbAEOaXNJblRvdXJuYW1lbnQCDHRvdXJDb250cmFjdAhsb2NhdGlvbgQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFDHRvdXJDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABANsb2MJALUJAgUIbG9jYXRpb24CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBXREYXRhCQELZ2V0VG91ckRhdGECBQx0b3VyQ29udHJhY3QFBmxhc3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMDAwMJAAACCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBVAkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFD2xvY0lkeENvbnRpbmVudAUGbGFzdElkBwkAAAIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MHCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbm93BwEMaXNJbkRlbGl2ZXJ5AQhsb2NhdGlvbgQDbG9jCQC1CQIFCGxvY2F0aW9uAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlzdGFydFRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFD2xvY0lkeENvbnRpbmVudAQIZGlzdGFuY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFCGxvY0lkeElkAwMJAAACCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBRAkAZgIFA25vdwkAZAIFCXN0YXJ0VGltZQUSVEVOX01JTlVURVNfTUlMTElTBwkAZwIAAwUIZGlzdGFuY2UHAQ9pc1VzdWFsTG9jYXRpb24BCGxvY2F0aW9uBAdsb2NUeXBlCQCRAwIJALUJAgUIbG9jYXRpb24CAV8FCmxvY0lkeFR5cGUDCQECIT0CBQdsb2NUeXBlAgFUCQECIT0CBQdsb2NUeXBlAgFEBwEJb25NaXNzaW9uAgx0b3VyQ29udHJhY3QIbG9jYXRpb24EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQx0b3VyQ29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQDbG9jCQC1CQIFCGxvY2F0aW9uAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUMdG91ckNvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljBAdsb2NUeXBlCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQMJAAACBQdsb2NUeXBlAgFEBgMDAwkAAAIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFUCQAAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUPbG9jSWR4Q29udGluZW50BQZsYXN0SWQHCQAAAgkAkQMCBQdkeW5hbWljBQ50RHluYW1pY1N0YXR1cwIKSU5QUk9HUkVTUwcJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQNub3cHARJnZXRSZWNpcGVNYXRlcmlhbHMBBnJlY2lwZQkAaAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZyZWNpcGUFCXJJZHhDb2VmZgUJQ09FRkYyTUFUAQxjaGVhdEF0dGVtcHQDBm9sZExvYwZuZXdMb2MJY2hlYXRDYXNlCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICFkNoZWF0IGF0dGVtcHQ6IG9sZExvYz0FBm9sZExvYwIJLCBuZXdMb2M9BQZuZXdMb2MCBywgY2FzZT0JAKQDAQUJY2hlYXRDYXNlABZLU19TRVBBUkFURV9QVUJMSUNfS0VZBwAYS1NfQUxMT1dfQklHX0lORlJBX01FUkdFBwARS1NfQUxMT1dfREVMSVZFUlkGAAVjaGFpbgkAyQECCQDKAQIIBQR0aGlzBWJ5dGVzAAEAAQALdXNkdEFzc2V0SWQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDABIITaerIIAz9O0bvKju6Lk7zJgt0LXfoHlqjUI/moD/+5AwkAAAIBAVQFByRtYXRjaDABIFWx2J9yh4Lv5eNbjawFq2XemkOhLxa7BfMat4el8cUYCQACAQINVW5rbm93biBjaGFpbgAVZGVmYXVsdFJlc3RBZGRyZXNzU3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUFFDdXZGYnZoNExrUFVucm5VMXozam5iQTFwOW0zV05odgMJAAACAQFUBQckbWF0Y2gwAiMzTXVta0dHenRDS0FYcFdEcXhrZGRvZnFYU1VicVFrdlNKeQkAAgECDVVua25vd24gY2hhaW4AEUluZnJhVXBncmFkZUNvc3RTBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAIDIr6AlAwkAAAIBAVQFByRtYXRjaDAAgMLXLwkAAgECDVVua25vd24gY2hhaW4ADmFyYml0cmFnZURlbGF5BAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAIC4mSkDCQAAAgEBVAUHJG1hdGNoMADg1AMJAAIBAg1Vbmtub3duIGNoYWluAANTRVACAl9fAAVNVUxUNgDAhD0ABU1VTFQ4AIDC1y8ABVNTSVpFABkABU1TSVpFAGQABUxTSVpFAOEBAAZYTFNJWkUAkAMAB1hYTFNJWkUA8QQABUlURVI2CQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFBQNuaWwBD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAABFJZHhDZmdTdGFraW5nRGFwcAABABFJZHhDZmdFY29ub215RGFwcAACABRJZHhDZmdHb3Zlcm5hbmNlRGFwcAADAA1JZHhDZmdXbGdEYXBwAAQAFElkeENmZ1RvdXJuYW1lbnREYXBwAAcAD0lkeENmZ0FjcmVzRGFwcAAIAQprZXlSZXN0Q2ZnAAIOJXNfX3Jlc3RDb25maWcBDmtleVJlc3RBZGRyZXNzAAIMJXNfX3Jlc3RBZGRyARFyZWFkUmVzdENmZ09yRmFpbAEEcmVzdAkAvAkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUEcmVzdAkBCmtleVJlc3RDZmcABQNTRVABGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIHcmVzdENmZwNpZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB3Jlc3RDZmcFA2lkeAkArAICAipSZXN0IGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAKQDAQUDaWR4AAxyZXN0Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBDmtleVJlc3RBZGRyZXNzAAUVZGVmYXVsdFJlc3RBZGRyZXNzU3RyAAdyZXN0Q2ZnCQERcmVhZFJlc3RDZmdPckZhaWwBBQxyZXN0Q29udHJhY3QAD3N0YWtpbmdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ1N0YWtpbmdEYXBwAA9lY29ub215Q29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdFY29ub215RGFwcAALZ292Q29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRRJZHhDZmdHb3Zlcm5hbmNlRGFwcAALd2xnQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBQ1JZHhDZmdXbGdEYXBwABJ0b3VybmFtZW50Q29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRRJZHhDZmdUb3VybmFtZW50RGFwcAANYWNyZXNDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFD0lkeENmZ0FjcmVzRGFwcAAKcmVjTGFuZE51bQAAAAtyZWNMYW5kU2l6ZQABAAtyZWNUZXJyYWlucwACAAxyZWNDb250aW5lbnQAAwANd2xnQXNzZXRJZEtleQILd2xnX2Fzc2V0SWQACndsZ0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQt3bGdDb250cmFjdAUNd2xnQXNzZXRJZEtleQIYV0xHT0xEIGlzIG5vdCBpc3N1ZWQgeWV0AA9hY3Jlc0Fzc2V0SWRLZXkCDGFjcmVzQXNzZXRJZAAMYWNyZXNBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgUNYWNyZXNDb250cmFjdAUPYWNyZXNBc3NldElkS2V5AhdBQ1JFUyBpcyBub3QgaXNzdWVkIHlldAALcmFuZG9tRGVsYXkAAgEJa2V5Q29tbWl0AQdhZGRyZXNzCQCsAgICE2ZpbmlzaEJsb2NrRm9yQWRkcl8FB2FkZHJlc3MBEWtleVJlc1Byb3BvcnRpb25zAAITcmVzVHlwZXNQcm9wb3J0aW9ucwEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJY29udGluZW50CQCsAgICFHJlc1R5cGVzQnlDb250aW5lbnRfBQljb250aW5lbnQBFWtleVN0YWtlZExhbmRzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICE3N0YWtlZExhbmRzQnlPd25lcl8FCW93bmVyQWRkcgEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICFHN0YWtlZFBpZWNlc0J5T3duZXJfBQlvd25lckFkZHIBCGFzU3RyaW5nAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgECGGZhaWwgdG8gY2FzdCBpbnRvIFN0cmluZwEFYXNJbnQBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIDSW50BAFuBQckbWF0Y2gwBQFuCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQlhc0FueUxpc3QBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIJTGlzdFtBbnldBAFsBQckbWF0Y2gwBQFsCQACAQIbZmFpbCB0byBjYXN0IGludG8gTGlzdFtBbnldAQlhc0Jvb2xlYW4BAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBcwUHJG1hdGNoMAUBcwkAAgECGWZhaWwgdG8gY2FzdCBpbnRvIEJvb2xlYW4BEGFzU3RyaW5nSW50VHVwbGUBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACDShTdHJpbmcsIEludCkEAnQyBQckbWF0Y2gwBQJ0MgkAAgECH2ZhaWwgdG8gY2FzdCBpbnRvIChTdHJpbmcsIEludCkBD251bVBpZWNlc0J5U2l6ZQEIbGFuZFNpemUEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAFBVNTSVpFAwkAAAICAU0FByRtYXRjaDAFBU1TSVpFAwkAAAICAUwFByRtYXRjaDAFBUxTSVpFAwkAAAICAlhMBQckbWF0Y2gwBQZYTFNJWkUDCQAAAgIDWFhMBQckbWF0Y2gwBQdYWExTSVpFCQACAQIRVW5rbm93biBsYW5kIHNpemUBB2lzRGlnaXQBAXMJAQlpc0RlZmluZWQBCQC2CQEFAXMBCmtleUJsb2NrZWQAAhBjb250cmFjdHNCbG9ja2VkARFrZXlMYXN0VHhJZEJ5VXNlcgEEYWRkcgkArAICAg9sYXN0VHhJZEJ5VXNlcl8FBGFkZHIBCmZpeGVkUG9pbnQCA3ZhbAhkZWNpbWFscwQGdGVuUG93CQBsBgAKAAAFCGRlY2ltYWxzAAAAAAUERE9XTgQHbG93UGFydAkApAMBCQBqAgUDdmFsBQZ0ZW5Qb3cEBnplcm9lcwkAsAICCQCkAwEFBnRlblBvdwkAZAIAAQkAsQIBBQdsb3dQYXJ0CQCsAgIJAKwCAgkArAICCQCkAwEJAGkCBQN2YWwFBnRlblBvdwIBLgUGemVyb2VzBQdsb3dQYXJ0AQ9nZXRSYW5kb21OdW1i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cgEHbGFuZE51bQkArAICAgNsb18FB2xhbmROdW0BGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQRuYW1lCQCsAgICEWR1Y2tCeUN1c3RvbU5hbWVfBQRuYW1lARZrZXlDdXN0b21OYW1lVG9BZGRyZXNzAQRuYW1lCQCsAgICFGFjY291bnRCeUN1c3RvbU5hbWVfBQRuYW1lAQlrZXlPbGRpZXMAAgpvbGRpZXNMaXN0AAtjbGFpbU1vZGVXaAAAAA1jbGFpbU1vZGVEdWNrAAEAE2NsYWltTW9kZVdoVGhlbkR1Y2sAAgAIZmxIZWFsdGgAAAALZmxUaW1lc3RhbXAABQAHZmxCb251cwAGAAtmbFByb2RzVXNlZAAHAQduZnROYW1lAgdsYW5kTnVtCGxhbmRTaXplCQCsAgIJAKwCAgUKTEFORFBSRUZJWAUHbGFuZE51bQUIbGFuZFNpemUBCHRvVm9sdW1lAgZhbW91bnQHcGtnU2l6ZQQEcGtncwMJAGcCBQZhbW91bnQAAAkAaQIJAGUCCQBkAgUGYW1vdW50BQdwa2dTaXplAAEFB3BrZ1NpemUJAQEtAQkAaQIJAGUCCQBkAgkBAS0BBQZhbW91bnQFB3BrZ1NpemUAAQUHcGtnU2l6ZQkAaAIFBHBrZ3MFBU1VTFQ4ARNkaXN0cmlidXRlQnlXZWlnaHRzAgV0b3RhbAd3ZWlnaHRzBANzdW0JAGQCCQBkAgkAZAIJAGQCCQBkAgkAkQMCBQd3ZWlnaHRzAAAJAJEDAgUHd2VpZ2h0cwABCQCRAwIFB3dlaWdodHMAAgkAkQMCBQd3ZWlnaHRzAAMJAJEDAgUHd2VpZ2h0cwAECQCRAwIFB3dlaWdodHMABQMJAGcCAAAFA3N1bQkAAgECEFplcm8gd2VpZ2h0cyBzdW0EBW5vcm02CQBrAwUFdG90YWwFBU1VTFQ2BQNzdW0KAQpub3JtYWxpemVyAgNhY2MEZWxlbQkAzQgCBQNhY2MJAGsDBQRlbGVtBQVub3JtNgUFTVVMVDYKAAIkbAUHd2VpZ2h0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKbm9ybWFsaXplcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgESZ2V0TmVlZGVkTWF0ZXJpYWxzAQV0b3RhbAQFcHJvcHMJALUJAgkBBXZhbHVlAQkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgFfAwkBAiE9AgkAkAMBBQVwcm9wcwUGTlVNUkVTCQACAQIWV3JvbmcgcHJvcG9ydGlvbnMgZGF0YQQBcgkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAgkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAwkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMABAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMABQUDbmlsCQETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFBXRvdGFsBQFyARFzdWJ0cmFjdE1hdGVyaWFscwMMc2hvdWxkVXNlTWF0A2hhcwl0b3RhbE5lZWQEBG5lZWQJARJnZXROZWVkZWRNYXRlcmlhbHMBBQl0b3RhbE5lZWQKAQpzdWJ0cmFjdG9yAgNhY2MDaWR4BAZyZXN1bHQJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDaGFzBQNpZHgJAJEDAgUEbmVlZAUDaWR4AwkAZgIAAAUGcmVzdWx0CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICGE5vdCBlbm91Z2ggbWF0ZXJpYWwgaWR4PQkApAMBBQNpZHgCCywgeW91IGhhdmUgCQCRAwIFA2hhcwUDaWR4AgssIGJ1dCBuZWVkIAkApAMBCQCRAwIFBG5lZWQFA2lkeAkAzQgCBQNhY2MJAKQDAQUGcmVzdWx0AwUMc2hvdWxkVXNlTWF0CgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUk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BSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAQpwbGFjZVByb2RCBgZpZHhDbnQFcExpc3QKaXNQb3NpdGl2ZQlkdWNrU3RhdHMIb2NjdXBpZWQEZnJlZQQFcGFydHMJALUJAgUGaWR4Q250AgE6AwkBAiE9AgkAkAMBBQVwYXJ0cwACCQACAQIoSW5jb3JyZWN0IGZvcm1hdCwgc2hvdWxkIGJlIGluZGV4OmFtb3VudAMDCQEBIQEFCmlzUG9zaXRpdmUJAQIhPQIJALECAQkAkQMCBQVwYXJ0cwAAAAIHCQACAQIrUHJvZHVjdCBpZHggc2hvdWxkIGJlIDIgZGlnaXRzLCB6ZXJvIHBhZGRlZAQKcHJvZHVjdElkeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAAEBWNvdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIFEGZvcnRBbGxvd2VkUHJvZHMFCnByb2R1Y3RJZHgJAAIBCQCsAgIJAKwCAgIJUHJvZHVjdCAnCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAIhJyBjYW5ub3QgYmUgdXNlZCBmb3IgbGFuZCBkZWZlbnNlAwkAZgIAAAUFY291bnQJAAIBAhdDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZQMJAGYCBQVjb3VudAUNTUFYUFJPRElOU0xPVAkAAgEJAKwCAgkArAICCQCsAgICFENhbid0IHB1dCBtb3JlIHRoYW4gCQCkAwEFDU1BWFBST0RJTlNMT1QCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AwkAAAIFBWNvdW50AAAJAJUKAwUFcExpc3QFCG9jY3VwaWVkBQRmcmVlBARoZWFkCQDJAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4BARjdXJyCQCxCQEJAMkBAgkAygECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAAIBAR0YWlsCQDKAQIFBXBMaXN0CQBoAgAICQBkAgUKcHJvZHVjdElkeAABBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQpwcm9kdWN0SWR4AgFfAwMJAQEhAQUKaXNQb3NpdGl2ZQkAZgIFBWNvdW50BQRjdXJyBwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglZb3UgaGF2ZSAJAKQDAQUEY3VycgIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUFY291bnQEBm5ld0FtdAMDCQEBIQEFCmlzUG9zaXRpdmUJARVjaGVja1N0YXRSZXF1aXJlbWVudHMCBQlkdWNrU3RhdHMJALUJAgkAkQMCBQZyZWNpcGUFEHJJZHhSZXF1aXJlbWVudHMCASwHCQBlAgUEY3VycgUFY291bnQJAGQCBQRjdXJyBQVjb3VudAQIZGVsdGFWb2wJAGUCCQEIdG9Wb2x1bWUCBQZuZXdBbXQFDlBST0RVQ1RQS0dTSVpFCQEIdG9Wb2x1bWUCBQRjdXJyBQ5QUk9EVUNUUEtHU0laRQkAlQoDCQDLAQIJAMsBAgUEaGVhZAkAmgMBBQZuZXdBbXQFBHRhaWwJAGQCBQhvY2N1cGllZAUIZGVsdGFWb2wJAGUCBQRmcmVlBQhkZWx0YVZvbAEIYWRkUHJvZEIHBmlkeENudAVwTGlzdAppc1Bvc2l0aXZlB3NlZ21lbnQHbWFpbkF1eARzbG90CWR1Y2tTdGF0cwQFcGFydHMJALUJAgUGaWR4Q250AgE6AwkBAiE9AgkAkAMBBQVwYXJ0cwACCQACAQIoSW5jb3JyZWN0IGZvcm1hdCwgc2hvdWxkIGJlIGluZGV4OmFtb3VudAMDCQEBIQEFCmlzUG9zaXRpdmUJAQIhPQIJALECAQkAkQMCBQVwYXJ0cwAAAAIHCQACAQIrUHJvZHVjdCBpZHggc2hvdWxkIGJlIDIgZGlnaXRzLCB6ZXJvIHBhZGRlZAQKcHJvZHVjdElkeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAAEBWNvdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQMDCQBmAgAABQpwcm9kdWN0SWR4BgkAZwIFCnByb2R1Y3RJZHgJAJADAQUQcHJvZHVjdGlvbk1hdHJpeAkAAgECE1Vua25vd24gcHJvZHVjdCBpZHgDCQBmAgAABQVjb3VudAkAAgECF0NvdW50IGNhbid0IGJlIG5lZ2F0aXZlAwkAZgIFBWNvdW50BQ1NQVhQUk9ESU5TTE9UCQACAQkArAICCQCsAgIJAKwCAgIUQ2FuJ3QgcHV0IG1vcmUgdGhhbiAJAKQDAQUNTUFYUFJPRElOU0xPVAIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgDCQAAAgUFY291bnQAAAkAlAoCBQVwTGlzdAcEBGhlYWQJAMkBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgEBGN1cnIJALEJAQkAyQECCQDKAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4AAgEBHRhaWwJAMoBAgUFcExpc3QJAGgCAAgJAGQCBQpwcm9kdWN0SWR4AAEEBnJlY2lwZQkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgFCnByb2R1Y3RJZHgCAV8DAwkBASEBBQppc1Bvc2l0aXZlCQBmAgUFY291bnQFBGN1cnIHCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCVlvdSBoYXZlIAkApAMBBQRjdXJyAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAITLCBidXQgdHJpZWQgdG8gdXNlIAkApAMBBQVjb3VudAQJaXNCaWdJdGVtAwMJAQEhAQUKaXNQb3NpdGl2ZQkBFWNoZWNrU3RhdFJlcXVpcmVtZW50cwIFCWR1Y2tTdGF0cwkAtQkCCQCRAwIFBnJlY2lwZQUQcklkeFJlcXVpcmVtZW50cwIBLAcEBmNvbXBhdAkAkQMCBQZyZWNpcGUFCXJJZHhTbG90cwMJAAACBQZjb21wYXQCAAkAAgECF0l0ZW0gY2Fubm90IGJlIGVxdWlwcGVkBAFjCQENcGFyc2VJbnRWYWx1ZQEFBmNvbXBhdAQEY1NlZwkAaQIFAWMAZAMJAQIhPQIFB3NlZ21lbnQFBGNTZWcJAAIBAhRTZWdtZW50IGluY29tcGF0aWJsZQQIY01haW5BdXgJAGkCCQBqAgUBYwBkAAoDCQECIT0CBQdtYWluQXV4BQhjTWFpbkF1eAkAAgECEVNsb3QgaW5jb21wYXRpYmxlBAljTnVtU2xvdHMJAGoCBQFjAAoDAwkBAiE9AgUEc2xvdAAACQBmAgUJY051bVNsb3RzAAEHCQACAQIeQmlnIGl0ZW1zIHNob3VsZCBvY2N1cHkgc2xvdCAwCQBmAgUJY051bVNsb3RzAAEHCQCUCgIJAMsBAgkAywECBQRoZWFkCQCaAwEJAGQCBQRjdXJyAwUKaXNQb3NpdGl2ZQUFY291bnQJAQEtAQUFY291bnQFBHRhaWwFCWlzQmlnSXRlbQELc2xvdHNHcm91cEIGAWcEYnBJbgppc1Bvc2l0aXZlB3NlZ21lbnQHbWFpbkF1eAVzdGF0cwMJAQIhPQIFAWcCAAQFc2xvdHMJALUJAgUBZwIBLAMJAGYCCQCQAwEFBXNsb3RzBQhNQVhTTE9UUwkAAgECEldyb25nIHNsb3RzIGZvcm1hdAQCczAJAJEDAgUFc2xvdHMAAAQCczEDCQBmAgkAkAMBBQVzbG90cwABCQCRAwIFBXNsb3RzAAECAAMDCQAAAgUCczACAAkAAAIFAnMxAgAHBQRicEluBAV0bXBTMAMJAQIhPQIFAnMwAgAJAQhhZGRQcm9kQgcFAnMwBQRicEluBQppc1Bvc2l0aXZlBQdzZWdtZW50BQdtYWluQXV4AAAFBXN0YXRzCQCUCgIFBGJwSW4HAwkBAiE9AgUCczECAAMIBQV0bXBTMAJfMgkAAgECHkJpZyBpdGVtIGFscmVhZHkgb2NjdXBpZXMgc2xvdAgJAQhhZGRQcm9kQgcFAnMxCAUFdG1wUzACXzEFCmlzUG9zaXRpdmUFB3NlZ21lbnQFB21haW5BdXgAAQUFc3RhdHMCXzEIBQV0bXBTMAJfMQUEYnBJbgEGZHJlc3NCBAdzZWdMaXN0BnBCeXRlcwppc1Bvc2l0aXZlBXN0YXRzCgEHc2VnbWVudAIDYWNjA3NlZwQBaggFA2FjYwJfMQQHbWFpbkF1eAkAtQkCBQNzZWcCATsDCQECIT0CCQCQAwEFB21haW5BdXgFCk5VTU1BSU5BVVgJAAIBAhRXcm9uZyBzZWdtZW50IGZvcm1hdAQBbQkAkQMCBQdtYWluQXV4AAAEAWEJAJEDAgUHbWFpbkF1eAABAwMJAAACBQFtAgAJAAACBQFhAgAHCQCUCgIJAGQCBQFqAAEIBQNhY2MCXzIEBHRtcE0JAQtzbG90c0dyb3VwQgYFAW0IBQNhY2MCXzIFCmlzUG9zaXRpdmUFAWoAAAUFc3RhdHMJAJQKAgkAZAIFAWoAAQkBC3Nsb3RzR3JvdXBCBgUBYQUEdG1wTQUKaXNQb3NpdGl2ZQUBagABBQVzdGF0cwgKAAIkbAUHc2VnTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAABQZwQnl0ZXMKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3NlZ21lbnQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYCXzIBBWZvcnRCBgdzZWdMaXN0BnBCeXRlcwhvY2N1cGllZARmcmVlCmlzUG9zaXRpdmUJZHVja1N0YXRzAwkAZgIAAwkAkAMBBQdzZWdMaXN0CQACAQIxQXQgbGVhc3QgZHVjaywgbWluZXMgYW5kIHRyYXBzIHBhcnRzIGFyZSByZXF1aXJlZAoBB3NlZ21lbnQCA2FjYwNzZWcEAWoIBQNhY2MCXzEDCQAAAgUBagAACQCWCgQJAGQCBQFqAAEIBQNhY2MCXzIIBQNhY2MCXzMIBQNhY2MCXzQEAXAJAQpwbGFjZVByb2RCBgUDc2VnCAUDYWNjAl8yBQppc1Bvc2l0aXZlBQlkdWNrU3RhdHMIBQNhY2MCXzMIBQNhY2MCXzQJAJYKBAkAZAIFAWoAAQgFAXACXzEIBQFwAl8yCAUBcAJfMwQBdAoAAiRsBQdzZWdMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEAAAFBnBCeXRlcwUIb2NjdXBpZWQFBGZyZWUKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3NlZ21lbnQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoJAJUKAwgFAXQCXzIIBQF0Al8zCAUBdAJfNAEXY2FuV2VhckN1cnJlbnRFcXVpcG1lbnQBC2R1Y2tBc3NldElkBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQGY3VyckVxCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssAgFfBAl0ZW1wUHJvZEIJAQZkcmVzc0IEBQZjdXJyRXEFDEVNUFRZX1BST0Q1MAYFA25pbAQIc2VnQnBBdXgJAJEDAgkAtQkCCQCRAwIFBmN1cnJFcQULc2VnQmFja3BhY2sCATsAAQQKYnVmZkVmZmVjdAMJAAACBQhzZWdCcEF1eAIAAAAEBGF1eDAJAJEDAgkAtQkCBQhzZWdCcEF1eAIBLAAAAwkAAAIFBGF1eDACAAAABAZpZHhDbnQJALUJAgUEYXV4MAIBOgQDaWR4CQCRAwIFBmlkeENudAAABANjbnQJAJEDAgUGaWR4Q250AAEDAwMDAwkAAAIFA2lkeAICMDYGCQAAAgUDaWR4AgIwNwYJAAACBQNpZHgCAjA4CQECIT0CBQNjbnQCAAcJAGYCCQENcGFyc2VJbnRWYWx1ZQEFA2NudAAABwkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4CQENcGFyc2VJbnRWYWx1ZQEFA2lkeAIBXwUKcklkeEVmZmVjdAAABAVzdGF0cwkBDGdldER1Y2tTdGF0cwQFBHRoaXMFC2R1Y2tBc3NldElkBQpidWZmRWZmZWN0BgQIbmV3UHJvZEIJAQZkcmVzc0IEBQZjdXJyRXEFCXRlbXBQcm9kQgcFBXN0YXRzCQAAAgUIbmV3UHJvZEIFCG5ld1Byb2RCARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAhwcm9wTGlzdA10ZXJyYWluQ291bnRzDWxhbmRTaXplSW5kZXgEc2lnbgMJAQIhPQIJAJADAQUIcHJvcExpc3QFBk5VTVJFUwkAAgECFldyb25nIHByb3BvcnRpb25zIGRhdGEKAQd1cGRhdGVyAgNhY2MBaQQGcmVzdWx0CQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb3BMaXN0BQFpCQBoAgkAaAIFBHNpZ24JAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAMJAGYCAAAFBnJlc3VsdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIWUGFuaWMhIFBpZWNlcyBvZiB0eXBlPQkApAMBBQFpAgcsIHNpZ249CQCkAwEFBHNpZ24CEywgdGVycmFpbkNvdW50c1tpXT0JAKQDAQkAkQMCBQ10ZXJyYWluQ291bnRzBQFpAhAsIGxhbmRTaXplSW5kZXg9CQCkAwEFDWxhbmRTaXplSW5kZXgJAM0IAgUDYWNjCQCkAwEFBnJlc3VsdAoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHdXBkYXRlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgERdXBkYXRlUHJvcG9ydGlvbnMDDXRlcnJhaW5Db3VudHMNbGFuZFNpemVJbmRleARzaWduBAhwcm9wTGlzdAkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACCzBfMF8wXzBfMF8wAgFfCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUIcHJvcExpc3QFDXRlcnJhaW5Db3VudHMFDWxhbmRTaXplSW5kZXgFBHNpZ24CAV8BDWNvdW50VGVycmFpbnMBCHRlcnJhaW5zCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUEAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFCAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBQwABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUQAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFFAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBRgABBQNuaWwBBmFkZFJlcwUKY3VycmVudFJlcw10ZXJyYWluQ291bnRzCWRlbHRhVGltZQ1sYW5kU2l6ZUluZGV4F2RhaWx5QnlQaWVjZVdpdGhCb251c2VzCgEFYWRkZXICA2FjYwFpBAlyZXNPZlR5cGUJAGgCCQBoAgkAawMFCWRlbHRhVGltZQUXZGFpbHlCeVBpZWNlV2l0aEJvbnVzZXMFCURBWU1JTExJUwkAkQMCBQ10ZXJyYWluQ291bnRzBQFpBQ1sYW5kU2l6ZUluZGV4CQDNCAIFA2FjYwkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmN1cnJlbnRSZXMFAWkFCXJlc09mVHlwZQQBcgoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFYWRkZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYJALkJAgUBcgIBXwEJdmlydENsYWltBA10ZXJyYWluQ291bnRzCWRlbHRhVGltZQ1sYW5kU2l6ZUluZGV4F2RhaWx5QnlQaWVjZVdpdGhCb251c2VzCgEFYWRkZXICA2FjYwFpBAlyZXNPZlR5cGUJAGgCCQBoAgkAawMFCWRlbHRhVGltZQUXZGFpbHlCeVBpZWNlV2l0aEJvbnVzZXMFCURBWU1JTExJUwkAkQMCBQ10ZXJyYWluQ291bnRzBQFpBQ1sYW5kU2l6ZUluZGV4CQCUCgIJAM0IAggFA2FjYwJfMQUJcmVzT2ZUeXBlCQBkAggFA2Fj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AwkAZgIABQkAkAMBBQJ3aAkAuQkCCQDMCAICATAJAMwIAgkApAMBBQp3aE9jY3VwaWVkCQDMCAIJAKQDAQkAZQIFB3doVG90YWwFCndoT2NjdXBpZWQJAMwIAgkApAMBBQd3aFRvdGFsBQNuaWwCAV8EBGxvZnQJALUJAgkAkQMCBQJ3aAUJd2hJZHhMT0ZUAgFfBAh3aExvY2tlZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFCXZvbExvY2tlZAQDb2NjAwkAZgIJAJADAQUEbG9mdAABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQFCndoT2NjdXBpZWQJALkJAgkAzAgCCQCkAwEFCHdoTG9ja2VkCQDMCAIJAKQDAQUDb2NjCQDMCAIJAKQDAQkAZQIJAGUCBQd3aFRvdGFsBQh3aExvY2tlZAUDb2NjCQDMCAIJAKQDAQUHd2hUb3RhbAUDbmlsAgFfCQDMCAIJAJEDAgUCd2gFC3doSWR4TGV2ZWxzCQDMCAIDCQAAAgkAkAMBCQC1CQIJAJEDAgUCd2gFCHdoSWR4UmVzAgFfBQZOVU1SRVMJAJEDAgUCd2gFCHdoSWR4UmVzAgswXzBfMF8wXzBfMAkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAndoBQh3aElkeE1hdAIBXwUGTlVNUkVTCQCRAwIFAndoBQh3aElkeE1hdAILMF8wXzBfMF8wXzAJAMwIAgkAkQMCBQJ3aAUJd2hJZHhQcm9kCQDMCAIFBndoTG9mdAUDbmlsARVnZXRXYXJlaG91c2VTcGFjZUxlZnQBCWN1cnJlbnRXaAQLb2NjdXBpZWRWb2wJARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEFCWN1cnJlbnRXaAQPY3VycldoTG9ja2VkVm9sCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBQl2b2xMb2NrZWQJAGUCCQBlAgkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzBQtvY2N1cGllZFZvbAUPY3VycldoTG9ja2VkVm9sAQltb3ZlU3R1ZmYDCmNhcmdvUGFydHMJY3VycmVudFdoC2N1cnJlbnRQYWNrAwkBAiE9AgkAkAMBBQpjYXJnb1BhcnRzAAMJAAIBAjRjYXJnb0xpc3RTdHIgc2hvdWxkIGNvbnRhaW4gZXhhY3RseSAyICc6JyBzZXBhcmF0b3JzBAhyZXNQYXJ0cwkAtQkCCQCRAwIFCmNhcmdvUGFydHMAAAIBXwQIbWF0UGFydHMJALUJAgkAkQMCBQpjYXJnb1BhcnRzAAECAV8ECXByb2RQYXJ0cwMJAAACCQCRAwIFCmNhcmdvUGFydHMAAgIABQNuaWwJALwJAgkAkQMCBQpjYXJnb1BhcnRzAAICAV8DCQECIT0CCQCQAwEFCHJlc1BhcnRzBQZOVU1SRVMJAAIBAiBBbGwgNiByZXNvdXJjZXMgc2hvdWxkIGJlIHBhc3NlZAMJAQIhPQIJAJADAQUIbWF0UGFydHMFBk5VTVJFUwkAAgECIEFsbCA2IG1hdGVyaWFscyBzaG91bGQgYmUgcGFzc2VkBAt3aFNwYWNlTGVmdAkBFWdldFdhcmVob3VzZVNwYWNlTGVmdAEFCWN1cnJlbnRXaAQJY3VycldoUmVzCQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwIBXwQJY3VycldoTWF0CQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAIBXwQKY3VycldoUHJvZAMJAAACCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgFfBA5jdXJyZW50UGFja1JlcwkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwIBXwQOY3VycmVudFBhY2tNYXQJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8ED2N1cnJlbnRQYWNrUHJvZAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwoBA212UgIDYWNjBGl0ZW0EAWkIBQNhY2MCXzEEAmFtCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0EA3docgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWN1cnJXaFJlcwUBaQQDYnByCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOY3VycmVudFBhY2tSZXMFAWkDCQAAAgUCYW0AAAkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAJEDAgUJY3VycldoUmVzBQFpCQDNCAIIBQNhY2MCXzMJAJEDAgUOY3VycmVudFBhY2tSZXMFAWkIBQNhY2MCXzQDCQBmAgUCYW0AAAMJAGYCBQJhbQUDYnByCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgBQRpdGVtAhkgZnJvbSBiYWNrcGFjaywgYnV0IG9ubHkgCQCkAwEFA2JwcgIKIGF2YWlsYWJsZQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3docgUCYW0JAM0IAggFA2FjYwJfMwkApAMBCQBlAgUDYnByBQJhbQkAZAIIBQNhY2MCXzQFAmFtAwkAZgIJAQEtAQUCYW0FA3docgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAkApAMBCQEBLQEFAmFtAhogZnJvbSB3YXJlaG91c2UsIGJ1dCBvbmx5IAkApAMBBQN3aHICCiBhdmFpbGFibGUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHIFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcgUCYW0JAGQCCAUDYWNjAl80BQJhbQQBcgoAAiRsBQhyZXNQYXJ0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAAABQNuaWwFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQNtdlICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYKAQNtdk0CA2FjYwRpdGVtBAFpCAUDYWNjAl8xBAJhbQkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAN3aG0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQljdXJyV2hNYXQFAWkEA2JwbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmN1cnJlbnRQYWNrTWF0BQFpAwkAAAIFAmFtAAAJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCRAwIFCWN1cnJXaE1hdAUBaQkAzQgCCAUDYWNjAl8zCQCRAwIFDmN1cnJlbnRQYWNrTWF0BQFpCAUDYWNjAl80AwkAZgIFAmFtAAADCQBmAgUCYW0FA2JwbQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAUEaXRlbQIZIGZyb20gYmFja3BhY2ssIGJ1dCBvbmx5IAkApAMBBQNicG0CCiBhdmFpbGFibGUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aG0FAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwbQUCYW0JAGQCCAUDYWNjAl80BQJhbQMJAGYCCQEBLQEFAmFtBQN3aG0JAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAJAKQDAQkBAS0BBQJhbQIaIGZyb20gd2FyZWhvdXNlLCBidXQgb25seSAJAKQDAQUDd2htAgogYXZhaWxhYmxlCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2htBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicG0FAmFtCQBkAggFA2FjYwJfNAUCYW0EAW0KAAIkbAUIbWF0UGFydHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQAAAUDbmlsBQNuaWwIBQFyAl80CgEFJGYxXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQNtdk0CBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjFfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYKAQNtdlACA2FjYwRpdGVtBAFpCAUDYWNjAl8xBAJhbQkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAN3aHADCQBmAgkAkAMBBQpjdXJyV2hQcm9kBQFpCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKY3VycldoUHJvZAUBaQAABANicHADCQBmAgkAkAMBBQ9jdXJyZW50UGFja1Byb2QFAWkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ9jdXJyZW50UGFja1Byb2QFAWkAAAMJAAACBQJhbQAACQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBBQN3aHAJAM0IAggFA2FjYwJfMwkApAMBBQNicHAIBQNhY2MCXzQDCQBmAgUCYW0AAAMJAGYCBQJhbQUDYnBwCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgBQRpdGVtAhkgZnJvbSBiYWNrcGFjaywgYnV0IG9ubHkgCQCkAwEFA2JwcAIKIGF2YWlsYWJsZQQIZGVsdGFWb2wJAGUCCQEIdG9Wb2x1bWUCCQBkAgUDd2hwBQJhbQUOUFJPRFVDVFBLR1NJWkUJAQh0b1ZvbHVtZQIFA3docAUOUFJPRFVDVFBLR1NJWkUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHAFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcAUCYW0JAGQCCAUDYWNjAl80BQhkZWx0YVZvbAMJAGYCCQEBLQEFAmFtBQN3aHAJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAJAKQDAQkBAS0BBQJhbQIaIGZyb20gd2FyZWhvdXNlLCBidXQgb25seSAJAKQDAQUDd2hwAgogYXZhaWxhYmxlBAhkZWx0YVZvbAkAZQIJAQh0b1ZvbHVtZQIJAGQCBQN3aHAFAmFtBQ5QUk9EVUNUUEtHU0laRQkBCHRvVm9sdW1lAgUDd2hwBQ5QUk9EVUNUUEtHU0laRQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3docAUCYW0JAM0IAggFA2FjYwJfMwkApAMBCQBlAgUDYnBwBQJhbQkAZAIIBQNhY2MCXzQFCGRlbHRhVm9sBAFwAwkBAiE9AgkAkAMBBQlwcm9kUGFydHMAAAoAAiRsBQlwcm9kUGFydHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQAAAUDbmlsBQNuaWwIBQFtAl80CgEFJGYyXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQNtdlACBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjJfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDUwCQEFJGYyXzICCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgkAlgoEAAAFCmN1cnJXaFByb2QFD2N1cnJlbnRQYWNrUHJvZAgFAW0CXzQECHZvbFNhbGRvCAUBcAJfNAMJAGYCBQh2b2xTYWxkbwULd2hTcGFjZUxlZnQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICFUF0dGVtcHQgdG8gcHV0IHRvdGFsIAkApAMBBQh2b2xTYWxkbwIRIHN0dWZmLCBidXQgb25seSAJAKQDAQULd2hTcGFjZUxlZnQCFSB3YXJlaG91c2Ugc3BhY2UgbGVmdAkAmQoHCQC5CQIIBQFyAl8yAgFfCQC5CQIIBQFtAl8yAgFfCQC6CQIIBQFwAl8yAgFfCQC5CQIIBQFyAl8zAgFfCQC5CQIIBQFtAl8zAgFfCQC6CQIIBQFwAl8zAgFfBQh2b2xTYWxkbwESZXhwZWRpdGlvbkludGVybmFsAgZjYWxsZXIEdHhJZAQIdXNlckFkZHIJAKUIAQUGY2FsbGVyBAZiaWdOdW0JAQNhYnMBCQCeAwEFBHR4SWQEB2ZyZWVOdW0JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQ9QUkVTQUxFTlVNTEFORFMAAQQHbGFuZE51bQkApAMBBQdmcmVlTnVtBAxjb250aW5lbnRJZHgJAKADAQkAuwICBQZiaWdOdW0FBUZJVkVYBAh0ZXJyYWlucwkBC2dlblRlcnJhaW5zAgUGYmlnTnVtBQxjb250aW5lbnRJZHgECWNvbnRpbmVudAkAkQMCBQpjb250aW5lbnRzBQxjb250aW5lbnRJZHgEBWlzc3VlCQDCCAUJAQduZnROYW1lAgUHbGFuZE51bQIBUwkAuQkCCQDMCAIFB2xhbmROdW0JAMwIAgIBUwkAzAgCBQh0ZXJyYWlucwkAzAgCBQljb250aW5lbnQFA25pbAIBXwABAAAHBAdhc3NldElkCQC4CAEFBWlzc3VlBAJpZAkA2AQBBQdhc3NldElkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUHZnJlZU51bQABCQDMCAIFBWlzc3VlCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlMYW5kVG9Bc3NldElkAQUHbGFuZE51bQUCaWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFAmlkBQh1c2VyQWRkcgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5TGFuZE51bVRvT3duZXIBBQdsYW5kTnVtBQh1c2VyQWRkcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQJpZAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgUCaWQFCHVzZXJBZGRyAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyAAEFB2Fzc2V0SWQFA25pbAkAlAoCBQJpZAUJY29udGluZW50AQxmbGlnaHRDb21tb24DCHVzZXJBZGRyB21lc3NhZ2UDc2lnAwkBASEBCQDEEwMFB21lc3NhZ2UFA3NpZwUDcHViCQACAQIYc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoBAVwYXJ0cwkAvAkCCQCwCQEFB21lc3NhZ2UCATsECWZsaWdodExvZwkAvAkCCQCRAwIFBXBhcnRzAAACAXwEAmhwCQC1CQIJAJEDAgUJZmxpZ2h0TG9nBQhmbEhlYWx0aAIBXwQFY3VySFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAAABAVuZXdIUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmhwAAEEC25ld0xvY1R4VmVyCQC1CQIJAJEDAgUFcGFydHMAAQIBOgQLbmV3TG9jYXRpb24JAJEDAgULbmV3TG9jVHhWZXIAAAQEdGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWZsaWdodExvZwULZmxUaW1lc3RhbXADAwkAZgIFBHRpbWUJAGQCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMGCQBmAgkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBRFGSVZFTUlOVVRFU01JTExJUwUEdGltZQkAAgEJAKwCAgkArAICCQCsAgICHHNpZ25hdHVyZSBvdXRkYXRlZDogbG9nVGltZT0JAKQDAQUEdGltZQIJLCBiY1RpbWU9CQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAl0eEZyb21Nc2cJAJEDAgULbmV3TG9jVHhWZXIAAQQGbGFzdFR4CQELdmFsdWVPckVsc2UCCQCiCAEJARFrZXlMYXN0VHhJZEJ5VXNlcgEFCHVzZXJBZGRyAgADCQECIT0CBQZsYXN0VHgFCXR4RnJvbU1zZwkAAgEJAKwCAgkArAICCQCsAgICHlR4IGlkcyBkb24ndCBtYXRjaCEgSW4gc3RhdGU6IAUGbGFzdFR4AgosIGluIG1zZzogBQl0eEZyb21Nc2cEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUIdXNlckFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAxvbGRGcm9tU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAQIhPQIFDG9sZEZyb21TdGF0ZQUFY3VySFAJAAIBCQCsAgIJAKwCAgkArAICAgpvbGRIZWFsdGg9CQCkAwEFDG9sZEZyb21TdGF0ZQIvIGZyb20gc3RhdGUgZG9lcyBub3QgbWF0Y2ggb25lIGZyb20gZmxpZ2h0IGxvZz0JAKQDAQUFY3VySFADCQBnAgAABQVjdXJIUAkAAgECHllvdSBjYW4ndCBmbHkgd2l0aCB6ZXJvIGhlYWx0aAMJAQEhAQkBF2NhbldlYXJDdXJyZW50RXF1aXBtZW50AQULZHVja0Fzc2V0SWQJAAIBAhZFcXVpcG1lbnQgaW5jb21wYXRpYmxlBAVib251cwMJAGYCCQCQAwEFCWZsaWdodExvZwUHZmxCb251cwkAkQMCBQlmbGlnaHRMb2cFB2ZsQm9udXMCAAQIcHJvZFVzZWQDCQBmAgkAkAMBBQlmbGlnaHRMb2cFC2ZsUHJvZHNVc2VkCQCRAwIFCWZsaWdodExvZwULZmxQcm9kc1VzZWQCAAQKc2VudEFtb3VudAMDCQBmAgUFbmV3SFAAAAkAAAIFBWJvbnVzAgEkBwkBBWFzSW50AQkA/AcEBQxyZXN0Q29udHJhY3QCDXNlbmRVc2R0UHJpemUJAMwIAgUIdXNlckFkZHIFA25pbAUDbmlsAAAJAJcKBQUFbmV3SFAFC2R1Y2tBc3NldElkBQpzZW50QW1vdW50BQtuZXdMb2NhdGlvbgUIcHJvZFVzZWQBDGFwcGx5Qm9udXNlcwILbGFuZEFzc2V0SWQGcGllY2VzBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQJYXJ0UGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAAAEBGFkZDYJAGkCBQppbmZyYUxldmVsAAYEBGFkZDcJAGkCBQppbmZyYUxldmVsAAcJAGQCCQBkAgUPREFJTFlSRVNCWVBJRUNFCQBrAwUPREFJTFlSRVNCWVBJRUNFCQBkAgkAZAIFCmluZnJhTGV2ZWwFBGFkZDYJAGgCAAIFBGFkZDcABQkAawMFD0RBSUxZUkVTQllQSUVDRQUJYXJ0UGllY2VzCQBoAgUGcGllY2VzAAUBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwRhZGRyCWNsYWltTW9kZQ1sYW5kQXNzZXRJZEluBA0kdDAzMzczODM0Mjc3AwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAJQKAgUNbGFuZEFzc2V0SWRJbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAgAEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04EA2xvYwkAtQkCCQEFdmFsdWUBBQtjdXJMb2NhdGlvbgIBXwMJAQIhPQIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFMCQACAQkArAICCQCsAgICFkR1Y2sgbG9jYXRpb24gdHlwZSBpcyAJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAhEsIGJ1dCBzaG91bGQgYmUgTAkAlAoCCQCRAwIFA2xvYwUIbG9jSWR4SWQFC2R1Y2tBc3NldElkBAtsYW5kQXNzZXRJZAgFDSR0MDMzNzM4MzQyNzcCXzEEBmR1Y2tJZAgFDSR0MDMzNzM4MzQyNzcCXzIEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFB3RpbWVLZXkJAKwCAgkArAICAgVMYW5kIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8JAJYKBAUGZHVja0lkBQtsYW5kQXNzZXRJZAUBZAUJc2F2ZWRUaW1lARBjbGFpbVJlc0ludGVybmFsBARhZGRyBmFtb3VudAljbGFpbU1vZGUNbGFuZEFzc2V0SWRJbgMJAGYCAAAFBmFtb3VudAkAAgECD05lZ2F0aXZlIGFtb3VudAQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUJY2xhaW1Nb2RlBQ1sYW5kQXNzZXRJZEluBAhsYW5kU2l6ZQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCCAUBYwJfMwULcmVjVGVycmFpbnMECWRlbHRhVGltZQkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCAUBYwJfNAMJAGYCAAAFCWRlbHRhVGltZQkAAgEJAKwCAgkArAICCQCsAgICJlNhdmVkIHRpbWVzdGFtcCBpcyBpbiBmdXR1cmUsIHNhdmVkID0gCQCkAwEIBQFjAl80AgwsIGN1cnJlbnQgPSAJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEFCGxhbmRTaXplBBZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQEMYXBwbHlCb251c2VzAggFAWMCXzIFBnBpZWNlcwQIYXZhaWxSZXMJAGsDBQlkZWx0YVRpbWUJAGgCBRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBQZwaWVjZXMFCURBWU1JTExJUwMJAGYCBQZhbW91bnQFCGF2YWlsUmVzCQACAQkArAICCQCsAgIJAKwCAgIiTm90IGVub3VnaCByZXNvdXJjZXMsIGF2YWlsYWJsZSA9IAkApAMBBQhhdmFpbFJlcwIOLCByZXF1ZXN0ZWQgPSAJAKQDAQUGYW1vdW50BAxuZXdEZWx0YVRpbWUJAGsDCQBlAgUIYXZhaWxSZXMFBmFtb3VudAUJREFZTUlMTElTCQBoAgUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQUGcGllY2VzBAxuZXdUaW1lc3RhbXAJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUMbmV3RGVsdGFUaW1lBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBApyZXNUb0NsYWltCQEJdmlydENsYWltBAUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQgFAWMCXzIECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBCAUBYwJfMgAABAljdXJyZW50V2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBARsb2Z0CQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8EC3doU3BhY2VMZWZ0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQMDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAZgIFBmFtb3VudAULd2hTcGFjZUxlZnQHCQACAQkArAICCQCsAgICBU9ubHkgCQCkAwEFC3doU3BhY2VMZWZ0Ahggc3BhY2UgbGVmdCBpbiB3YXJlaG91c2UEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBCAUBYwJfMQQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BA5jdXJyZW50UGFja1JlcwkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwIBXwQMY3VycmVudFdoUmVzCQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwIBXwQNJHQwMzY2NTEzNzUyMgMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQCWCgQJAQZhZGRSZXMFBQxjdXJyZW50V2hSZXMFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAgFCnJlc1RvQ2xhaW0CXzIJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQgFCnJlc1RvQ2xhaW0CXzIDCQAAAgUJY2xhaW1Nb2RlBQ1jbGFpbU1vZGVEdWNrCQCWCgQJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwkBBmFkZFJlcwUFDmN1cnJlbnRQYWNrUmVzBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQQFZGlzdHIJAQ1kaXN0cmlidXRlUmVzBAUMY3VycmVudFdoUmVzBQ5jdXJyZW50UGFja1JlcwUKcmVzVG9DbGFpbQULd2hTcGFjZUxlZnQEBHdoQW0JAJcDAQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQkAzAgCCAUKcmVzVG9DbGFpbQJfMgUDbmlsCQCWCgQIBQVkaXN0cgJfMQgFBWRpc3RyAl8yCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkBQR3aEFtCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUFBHdoQW0EBXdoUmVzCAUNJHQwMzY2NTEzNzUyMgJfMQQFYnBSZXMIBQ0kdDAzNjY1MTM3NTIyAl8yBAVsb2Z0TwgFDSR0MDM2NjUxMzc1MjICXzMEBWxvZnRGCAUNJHQwMzY2NTEzNzUyMgJfNAkAlwoFCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEIBQFjAl8yBQxuZXdUaW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAgFAWMCXzIFBGFkZHIFDG5ld1RpbWVzdGFtcAUDbmlsBQVicEtleQkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIFBWJwUmVzCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsBQV3aEtleQkAzAgCCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMJAMwIAgUFd2hSZXMJAMwIAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0CQDMCAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCRAwIFBGxvZnQFCHZvbFRvdGFsBQNuaWwCAV8FA25pbAEIY2xhaW1BbGwEBGFkZHILbGFuZEFzc2V0SWQGcGllY2VzCWNsYWltTW9kZQQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQEFdmFsdWUBCQCfCAEFB3RpbWVLZXkECGF2YWlsUmVzCQBoAgkAawMJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUJc2F2ZWRUaW1lCQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwUJREFZTUlMTElTBQZwaWVjZXMJARBjbGFpbVJlc0ludGVybmFsBAUEYWRkcgUIYXZhaWxSZXMFCWNsYWltTW9kZQULbGFuZEFzc2V0SWQBDXVwSW5mcmFDb21tb24EDHNob3VsZFVzZU1hdAZjYWxsZXINcGF5bWVudEFtb3VudAtsYW5kQXNzZXRJZAQEYWRkcgkApQgBBQZjYWxsZXIEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFE2NsYWltTW9kZVdoVGhlbkR1Y2sFC2xhbmRBc3NldElkBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQIaW5mcmFLZXkJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQgFAWMCXzIECGN1ckxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEFCGluZnJhS2V5AAADAwkBASEBBRhLU19BTExPV19CSUdfSU5GUkFfTUVSR0UJAGcCBQhjdXJMZXZlbAADBwkAAgECJkN1cnJlbnRseSBtYXggaW5mcmFzdHJ1Y3R1cmUgbGV2ZWwgPSAzBAhtYXhJbmZyYQkAZAIJAGkCCQEEc3FydAQFBnBpZWNlcwAAAAAFBERPV04ABQACBAhuZXdMZXZlbAkAZAIFCGN1ckxldmVsAAEDAwUYS1NfQUxMT1dfQklHX0lORlJBX01FUkdFCQBmAgUIbmV3TGV2ZWwFCG1heEluZnJhBwkAAgEJAKwCAgIlQ3VycmVudGx5IG1heCBpbmZyYXN0cnVjdHVyZSBsZXZlbCA9IAkApAMBBQhtYXhJbmZyYQQEY29zdAkAawMFFUluZnJhVXBncmFkZUNvc3RTVXNkdAkAaAIFBnBpZWNlcwUIbmV3TGV2ZWwFBVNTSVpFAwMJAQEhAQUMc2hvdWxkVXNlTWF0CQECIT0CBQ1wYXltZW50QW1vdW50BQRjb3N0BwkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFBGNvc3QEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBCAUBYwJfMQQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVtTGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQHbWF0VXNlZAkAawMFEUluZnJhVXBncmFkZUNvc3RTCQBoAgUGcGllY2VzBQhuZXdMZXZlbAUFU1NJWkUEBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDBQxzaG91bGRVc2VNYXQFBW1MaXN0BQdtYXRVc2VkAgFfBAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcggFAWMCXzIFBnBpZWNlcwUTY2xhaW1Nb2RlV2hUaGVuRHVjawQGd2hEYXRhCAULY2xhaW1SZXN1bHQCXzUEBm9sZFZvbAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQZ3aERhdGEFC3doSWR4TGV2ZWxzBApuZXdWb2xEYXRhCQC5CQIJAMwIAgkAkQMCCQC1CQIJAJEDAgUGd2hEYXRhBQt3aElkeExldmVscwIBXwAACQDMCAIJAKQDAQUIbmV3TGV2ZWwFA25pbAIBXwQGbmV3Vm9sCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBBQpuZXdWb2xEYXRhBARsb2Z0CQC1CQIJAJEDAgUGd2hEYXRhBQl3aElkeExPRlQCAV8ECm5ld0xvZnRTdHIJALkJAgkAzAgCCQCRAwIFBGxvZnQFCXZvbExvY2tlZAkAzAgCCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCQDMCAIJAKQDAQkAZQIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQUGbmV3Vm9sBQZvbGRWb2wJAMwIAgkApAMBBQZuZXdWb2wFA25pbAIBXwkAlQoDCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCGluZnJhS2V5BQhuZXdMZXZlbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIIBQFjAl8yBQRhZGRyBQhuZXdMZXZlbAkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCCAULY2xhaW1SZXN1bHQCXzMFCGJwSWR4UmVzCQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgkAzAgCCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzQJALkJAgkAzAgCBQpuZXdWb2xEYXRhCQDMCAIJAJEDAgUGd2hEYXRhBQh3aElkeFJlcwkAzAgCCQCRAwIFBndoRGF0YQUId2hJZHhNYXQJAMwIAgkAkQMCBQZ3aERhdGEFCXdoSWR4UHJvZAkAzAgCBQpuZXdMb2Z0U3RyBQNuaWwCAToFA25pbAgFC2NsYWltUmVzdWx0Al8xBQhuZXdMZXZlbAUHbWF0VXNlZAEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCC2R1Y2tBc3NldElkB2RlbHRhWFAEBmx2bEtleQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkBAV4cEtleQkBCWtleUR1Y2tYUAEFC2R1Y2tBc3NldElkBAJ4cAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQV4cEtleQAABAVuZXdYUAkAZAIFAnhwBQdkZWx0YVhQBAlsdmxQb2ludHMJAQdsZXZlbFVwAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQZsdmxLZXkAAAUFbmV3WFAECWtleVBvaW50cwkBEWtleUR1Y2tGcmVlUG9pbnRzAQULZHVja0Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUGbHZsS2V5CQCRAwIFCWx2bFBvaW50cwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQV4cEtleQUFbmV3WFAJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleVBvaW50cwkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5UG9pbnRzAAAJAJEDAgUJbHZsUG9pbnRzAAEFA25pbAUFbmV3WFABFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBGFkZHIHZGVsdGFYUAQGbHZsS2V5CQEMa2V5VXNlckxldmVsAQUEYWRkcgQFeHBLZXkJAQlrZXlVc2VyWFABBQRhZGRyBAJ4cAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQV4cEtleQAABAVuZXdYUAkAZAIFAnhwBQdkZWx0YVhQBAlsdmxQb2ludHMJAQdsZXZlbFVwAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQZsdmxLZXkAAAUFbmV3WFAECWtleVBvaW50cwkBEWtleVVzZXJGcmVlUG9pbnRzAQUEYWRkcgkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZsdmxLZXkJAJEDAgUJbHZsUG9pbnRzAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFBXhwS2V5BQVuZXdYUAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5UG9pbnRzCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlQb2ludHMAAAkAkQMCBQlsdmxQb2ludHMAAQUDbmlsBQVuZXdYUAESYWN0aXZhdGVPbmJvYXJkQXJ0AQRhZGRyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECHJlZkJ5S2V5CQEPa2V5QWRkcmVzc1JlZkJ5AQUEYWRkcgQFcmVmQnkJAKIIAQUIcmVmQnlLZXkDCQEBIQEJAQlpc0RlZmluZWQBBQVyZWZCeQkAAgECKVlvdSBhcmUgbm90IGVsaWdpYmxlIGZvciBPTkJPQVJEIGFydGlmYWN0BAZhcnRLZXkJARxrZXlPbmJvYXJkQXJ0RHVja0FjdGl2YXRlZEJ5AQUEYWRkcgQHYXJ0RHVjawkAoggBBQZhcnRLZXkDCQEJaXNEZWZpbmVkAQUHYXJ0RHVjawkAAgEJAKwCAgIvWW91IGFscmVhZHkgdXNlZCB5b3VyIE9OQk9BUkQgYXJ0aWZhY3Qgb24gZHVjayAJAQV2YWx1ZQEFB2FydER1Y2sEEGR1Y2tBY3RpdmF0b3JLZXkJARxrZXlPbmJvYXJkQXJ0QWN0aXZhdGVkT25EdWNrAQULZHVja0Fzc2V0SWQEDWR1Y2tBY3RpdmF0b3IJAKIIAQUQZHVja0FjdGl2YXRvcktleQMJAQlpc0RlZmluZWQBBQ1kdWNrQWN0aXZhdG9yCQACAQkArAICCQCsAgIJAKwCAgIJVGhlIGR1Y2sgBQtkdWNrQXNzZXRJZAI0IGFscmVhZHkgZ290IHBvaW50cyBmcm9tIE9OQk9BUkQgYXJ0aWZhY3QgZnJvbSB1c2VyIAkBBXZhbHVlAQUNZHVja0FjdGl2YXRvcgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmFydEtleQULZHVja0Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUQZHVja0FjdGl2YXRvcktleQUEYWRkcgUDbmlsCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCXhwT25ib2FyZAJfMQESYWN0aXZhdGVQcmVzYWxlQXJ0AgRhZGRyDWxhbmRBc3NldElkSW4EAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFE2NsYWltTW9kZVdoVGhlbkR1Y2sFDWxhbmRBc3NldElkSW4EC2xhbmRBc3NldElkCAUBYwJfMgQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUEDWFjdGl2YXRpb25LZXkJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAwkAZgIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUNYWN0aXZhdGlvbktleQAAAAAJAAIBAiVQcmVzYWxlIGFydGlmYWN0IGlzIGFscmVhZHkgYWN0aXZhdGVkAwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCCAUBYwJfMwUKcmVjTGFuZE51bQUPUFJFU0FMRU5VTUxBTkRTCQACAQkArAICCQCsAgIJAKwCAgUKTEFORFBSRUZJWAIBIAULbGFuZEFzc2V0SWQCJSBpcyBub3QgZWxpZ2libGUgZm9yIHByZXNhbGUgYXJ0aWZhY3QEC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyBQtsYW5kQXNzZXRJZAUGcGllY2VzBRNjbGFpbU1vZGVXaFRoZW5EdWNrCQDNCAIJAM0IAgkAzQgCCAULY2xhaW1SZXN1bHQCXzEJAQxJbnRlZ2VyRW50cnkCBQ1hY3RpdmF0aW9uS2V5BQZwaWVjZXMJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfMgkAuQkCCAULY2xhaW1SZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfNAkAuQkCCAULY2xhaW1SZXN1bHQCXzUCAToBD2NoZWNrVG91cm5hbWVudAELZHVja0Fzc2V0SWQEBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFEnRvdXJuYW1lbnRDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwMJAQIhPQIJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUCAVQHAwMDCQAAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAkAAAIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MHCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbm93BwkAAgECKllvdXIgZHVjayBpcyB0YWtpbmcgcGFydCBpbiB0aGUgdG91cm5hbWVudAkBCWFzQm9vbGVhbgEJAPwHBAUEdGhpcwIWZXhpdFRvdXJuYW1lbnRJbnRlcm5hbAkAzAgCBQtkdWNrQXNzZXRJZAUDbmlsBQNuaWwBDWNoZWNrRGVsaXZlcnkBC2R1Y2tBc3NldElkAwkBASEBBRFLU19BTExPV19ERUxJVkVSWQcEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXADCQECIT0CCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlAgFEBwQJc3RhcnRUaW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FD2xvY0lkeENvbnRpbmVudAQIZGlzdGFuY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUIbG9jSWR4SWQDAwkAZgIFA25vdwkAZAIFCXN0YXJ0VGltZQUSVEVOX01JTlVURVNfTUlMTElTCQBmAgADBQhkaXN0YW5jZQcJAAIBAiBZb3VyIGR1Y2sgaXMgb24gZGVsaXZlcnkgbWlzc2lvbgkBCWFzQm9vbGVhbgEJAPwHBAUEdGhpcwIUZXhpdERlbGl2ZXJ5SW50ZXJuYWwJAMwIAgULZHVja0Fzc2V0SWQFA25pbAUDbmlsARJleGl0RGVsaXZlcnlDb21tb24DC2R1Y2tBc3NldElkCmNoZWNrTmV3SFAFbmV3SFAEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQ9sb2NJZHhDb250aW5lbnQECGRpc3RhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FCGxvY0lkeElkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQULZHVja0Fzc2V0SWQCFE5GVCBkdWNrIGlzIG9ycGhhbmVkBAloZWFsdGhLZXkJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQECWN1ckhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQUJaGVhbHRoS2V5BA5vdXRjb21lQWN0aW9ucwMJAGcCBQhkaXN0YW5jZQADBAZyZXdhcmQJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhJzZW5kRGVsaXZlcnlSZXdhcmQJAMwIAgUFb3duZXIFA25pbAUDbmlsAwkAAAIFBnJld2FyZAUGcmV3YXJkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DAwMFCmNoZWNrTmV3SFAJAGYCBQVuZXdIUAAABwkAZgIFA25vdwkAZAIFCXN0YXJ0VGltZQUSVEVOX01JTlVURVNfTUlMTElTBwkAAgECJllvdXIgZHVjayBpcyBzdGlsbCBvbiBkZWxpdmVyeSBtaXNzaW9uBAtsb2NrZWRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9lY29ub215Q29udHJhY3QFEWRlbGl2ZXJ5TG9ja2VkS2V5AAAEBnVubG9jawkA/AcEBQ9lY29ub215Q29udHJhY3QCFHVwZGF0ZURlbGl2ZXJ5TG9ja2VkCQDMCAIJAGUCBQtsb2NrZWRUb3RhbAUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQNuaWwFA25pbAMJAAACBQZ1bmxvY2sFBnVubG9jawMJAGcCAAAFCWN1ckhlYWx0aAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5RGVsaXZlcnlEZWxheUJ5RHVjawEFC2R1Y2tBc3NldElkCQBkAgUJc3RhcnRUaW1lBQlEQVlNSUxMSVMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQLc2F2ZWRIZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBA1zYXZlZExvY2F0aW9uCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQCWCgQFDm91dGNvbWVBY3Rpb25zCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQloZWFsdGhLZXkFC3NhdmVkSGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUNc2F2ZWRMb2NhdGlvbgUDbmlsBQ1zYXZlZExvY2F0aW9uBQtzYXZlZEhlYWx0aAENbWVyZ2VJbnRlcm5hbAYLbmV3TGFuZFNpemUIbmV3TGV2ZWwHZm9ybXVsYQRhZGRyDGxhbmRBc3NldElkcwduZWVkTWF0BAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh1tZXJnZUludGVybmFsX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhttZXJnZUludGVybmFsX2NoZWNrRGVsaXZlcnkKAQpjaGVja01lcmdlAgNhY2MLbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFB3RpbWVLZXkJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwQJY29udGluZW50CQCRAwIFAWQFDHJlY0NvbnRpbmVudAMDCQECIT0CCAUDYWNjAl8zAgAJAQIhPQIIBQNhY2MCXzMFCWNvbnRpbmVudAcJAAIBAi5MYW5kcyBzaG91bGQgYmUgb24gdGhlIHNhbWUgY29udGluZW50IHRvIG1lcmdlBAhsYW5kU2l6ZQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQHc2l6ZXNJbggFA2FjYwJfMQQBaQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCzCQIFB3NpemVzSW4FCGxhbmRTaXplAidZb3UgaGF2ZW4ndCBwYXNzZWQgYWxsIHRoZSBsYW5kcyBuZWVkZWQECHNpemVzT3V0CQCsAgIJAK8CAgUHc2l6ZXNJbgUBaQkAsAICBQdzaXplc0luCQBkAgUBaQABBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBBQhsYW5kU2l6ZQQEYXJ0cwkAZAIIBQNhY2MCXzIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQAAAQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECHJlcUxldmVsBAckbWF0Y2gwBQhsYW5kU2l6ZQMJAAACAgFTBQckbWF0Y2gwAAMDCQAAAgIBTQUHJG1hdGNoMAAEAwkAAAICAUwFByRtYXRjaDAABQMJAAACAgJYTAUHJG1hdGNoMAAGCQACAQIaT25seSBTLCBNLCBMLCBYTCBjYW4gbWVyZ2UDCQECIT0CBQppbmZyYUxldmVsBQhyZXFMZXZlbAkAAgECIkFsbCBsYW5kcyBzaG91bGQgYmUgbWF4ZWQgdG8gbWVyZ2UEB2xhbmROdW0JAJEDAgUBZAUKcmVjTGFuZE51bQQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAlkZWx0YVRpbWUJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUJc2F2ZWRUaW1lAwkAZgIAAAUJZGVsdGFUaW1lCQACAQkArAICCQCsAgIJAKwCAgImU2F2ZWQgdGltZXN0YW1wIGlzIGluIGZ1dHVyZSwgc2F2ZWQgPSAJAKQDAQUJc2F2ZWRUaW1lAgwsIGN1cnJlbnQgPSAJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAEFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBAVicFJlcwkBBmFkZFJlcwUJALUJAggFA2FjYwJfNAIBXwUNdGVycmFpbkNvdW50cwUJZGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UEBXByb3BzCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MCXzYFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAZjUHJvcHMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwNfMTAFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAtzdW1UZXJyYWlucwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjAl85BQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQQFbGFuZHMIBQNhY2MCXzcEA2lkeAkAzwgCBQVsYW5kcwULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBBQNpZHgJAAIBCQCsAgICIFlvdXIgc3Rha2VkIGxhbmRzIGRvbid0IGNvbnRhaW4gBQtsYW5kQXNzZXRJZAQJY3VzdG9tS2V5CQEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBBQtsYW5kQXNzZXRJZAQKY3VzdG9tTmFtZQkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXN0b21LZXkCAAkAnAoKBQhzaXplc091dAUEYXJ0cwUJY29udGluZW50BQVicFJlcwkAzggCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAggFA2FjYwJfNQkBC0RlbGV0ZUVudHJ5AQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgkBC0RlbGV0ZUVudHJ5AQkBEGtleUxhbmRUb0Fzc2V0SWQBBQdsYW5kTnVtCQELRGVsZXRlRW50cnkBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQtsYW5kQXNzZXRJZAUEYWRkcgkBC0RlbGV0ZUVudHJ5AQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0JAQtEZWxldGVFbnRyeQEJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQUJY3VzdG9tS2V5CQEEQnVybgIJANkEAQULbGFuZEFzc2V0SWQAAQMJAQIhPQIFCmN1c3RvbU5hbWUCAAkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBQNuaWwFA25pbAUFcHJvcHMJANEIAgUFbGFuZHMJAQV2YWx1ZQEFA2lkeAkAZAIIBQNhY2MCXzgFBnBpZWNlcwULc3VtVGVycmFpbnMFBmNQcm9wcwQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkECHByb3BMaXN0CQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAILMF8wXzBfMF8wXzACAV8ECGxhbmRzS2V5CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUEYWRkcgQIbGFuZHNTdHIJAKIIAQUIbGFuZHNLZXkEB2xhbmRzSW4DCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAQFY29udDAJAJEDAgkAtQkCCAkBBXZhbHVlAQkA7AcBCQDZBAEJAJEDAgUMbGFuZEFzc2V0SWRzAAALZGVzY3JpcHRpb24CAV8FDHJlY0NvbnRpbmVudAQJY29udFByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBBQVjb250MAILMF8wXzBfMF8wXzACAV8EAXIKAAIkbAUMbGFuZEFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAnAoKBQdmb3JtdWxhAAACAAkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMFA25pbAUIcHJvcExpc3QFB2xhbmRzSW4AAAkAtQkCAgswXzBfMF8wXzBfMAIBXwUJY29udFByb3BzCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpjaGVja01lcmdlAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQQJY29udGluZW50CAUBcgJfMwQMY29udGluZW50SWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAM8IAgUKY29udGluZW50cwUJY29udGluZW50CQCsAgICE1Vua25vd24gY29udGluZW50OiAFCWNvbnRpbmVudAQIdGVycmFpbnMJARNnZW5UZXJyYWluc0Zvck1lcmdlAggFAXICXzkJAGkCCQEPbnVtUGllY2VzQnlTaXplAQULbmV3TGFuZFNpemUFBVNTSVpFBAdmcmVlTnVtCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUPUFJFU0FMRU5VTUxBTkRTAAEECm5ld0xhbmROdW0JAKQDAQUHZnJlZU51bQQFaXNzdWUJAMIIBQkBB25mdE5hbWUCBQpuZXdMYW5kTnVtBQtuZXdMYW5kU2l6ZQkAuQkCCQDMCAIFCm5ld0xhbmROdW0JAMwIAgULbmV3TGFuZFNpemUJAMwIAgUIdGVycmFpbnMJAMwIAgUJY29udGluZW50BQNuaWwCAV8AAQAABwQHYXNzZXRJZAkAuAgBBQVpc3N1ZQQObmV3TGFuZEFzc2V0SWQJANgEAQUHYXNzZXRJZAQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMJAGYCBQduZWVkTWF0AAAJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8FB25lZWRNYXQCAV8ECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQRhZGRyBAxzdGFrZWRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAJAJQKAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAggFAXICXzUDCQBmAgkAkAMBCAUBcgJfNwAACQELU3RyaW5nRW50cnkCBQhsYW5kc0tleQkAuwkCCAUBcgJfNwIBXwkBC0RlbGV0ZUVudHJ5AQUIbGFuZHNLZXkJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkDCQBmAggFAXICXzgFDHN0YWtlZFBpZWNlcwAACQBlAgUMc3Rha2VkUGllY2VzCAUBcgJfOAkBDEludGVnZXJFbnRyeQIJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUHZnJlZU51bQABBQVpc3N1ZQkBC1N0cmluZ0VudHJ5AgkBEGtleUxhbmRUb0Fzc2V0SWQBBQpuZXdMYW5kTnVtBQ5uZXdMYW5kQXNzZXRJZAkBC1N0cmluZ0VudHJ5AgkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFDm5ld0xhbmRBc3NldElkBQRhZGRyCQELU3RyaW5nRW50cnkCCQERa2V5TGFuZE51bVRvT3duZXIBBQpuZXdMYW5kTnVtBQRhZGRyCQEMSW50ZWdlckVudHJ5AgkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQUObmV3TGFuZEFzc2V0SWQIBQFyAl8yCQEMSW50ZWdlckVudHJ5AgkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQ5uZXdMYW5kQXNzZXRJZAUIbmV3TGV2ZWwJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgUObmV3TGFuZEFzc2V0SWQFBGFkZHIFCG5ld0xldmVsCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAggFAXICXzQJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6CQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMACQC5CQIIBQFyAl82AgFfCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEFCWNvbnRpbmVudAkAuQkCCAUBcgNfMTACAV8JAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIFCWNvbnRpbmVudAkAzAgCAgFMCQDMCAIFDm5ld0xhbmRBc3NldElkBQNuaWwCAV8JAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBGFkZHIAAQUHYXNzZXRJZAUObmV3TGFuZEFzc2V0SWQBA3MybQIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIBTQADAgRTU1NTBQRhZGRyBQxsYW5kQXNzZXRJZHMAAAEDbTJsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgFMAAQCA1NNTQUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMABAEEbDJ4bAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgICWEwABQIFU1NTTUwFBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTAC8BBnhsMnh4bAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIDWFhMAAYCA0xYTAUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMANgELbWVyZ2VDb21tb24CBGFkZHIMbGFuZEFzc2V0SWRzBAckbWF0Y2gwCQCQAwEFDGxhbmRBc3NldElkcwMJAAACAAQFByRtYXRjaDAJAQNzMm0CBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgADBQckbWF0Y2gwCQEDbTJsAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIABQUHJG1hdGNoMAkBBGwyeGwCBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgACBQckbWF0Y2gwCQEGeGwyeHhsAgUEYWRkcgUMbGFuZEFzc2V0SWRzCQACAQINVW5rbm93biBtZXJnZQEVY2hlY2tPdXRkYXRlZERlbGl2ZXJ5AQh1c2VyQWRkcgQEZHVjawkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgMDBRFLU19BTExPV19ERUxJVkVSWQkBCWlzRGVmaW5lZAEFBGR1Y2sHBAtkdWNrQXNzZXRJZAkBBXZhbHVlAQUEZHVjawQGbG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEA2xvYwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBmxvY0tleQUPREVGQVVMVExPQ0FUSU9OAgFfBAlzdGFydFRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFD2xvY0lkeENvbnRpbmVudAMDCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBRAYJAGYCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAZAIFCXN0YXJ0VGltZQUSVEVOX01JTlVURVNfTUlMTElTBQNuaWwECWhlYWx0aEtleQkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAMJAGcCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQhsb2NJZHhJZAADBAZyZXdhcmQJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhJzZW5kRGVsaXZlcnlSZXdhcmQJAMwIAgUIdXNlckFkZHIFA25pbAUDbmlsAwkAAAIFBnJld2FyZAUGcmV3YXJkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAM0IAgkAzQgCBAtsb2NrZWRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9lY29ub215Q29udHJhY3QFEWRlbGl2ZXJ5TG9ja2VkS2V5AAAEBnVubG9jawkA/AcEBQ9lY29ub215Q29udHJhY3QCFHVwZGF0ZURlbGl2ZXJ5TG9ja2VkCQDMCAIJAGUCBQtsb2NrZWRUb3RhbAUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQNuaWwFA25pbAMJAAACBQZ1bmxvY2sFBnVubG9jawMJAGcCAAAJARFAZXh0ck5hdGl2ZSgxMDU1KQEFCWhlYWx0aEtleQUDbmlsBApwdW5pc2htZW50CQD8BwQFBHRoaXMCC3NhdmVJbnRlZ2VyCQDMCAIJARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQULZHVja0Fzc2V0SWQJAMwIAgkAZAIFCXN0YXJ0VGltZQUJREFZTUlMTElTBQNuaWwFA25pbAMJAAACBQpwdW5pc2htZW50BQpwdW5pc2htZW50BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAQxJbnRlZ2VyRW50cnkCBQloZWFsdGhLZXkJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkCQELU3RyaW5nRW50cnkCBQZsb2NLZXkJARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFA25pbAEGcHJvbG9nAQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUMcmVzdENvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQQIdXNlckFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyCQDNCAIJARVjaGVja091dGRhdGVkRGVsaXZlcnkBBQh1c2VyQWRkcgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhc3RUeElkQnlVc2VyAQUIdXNlckFkZHIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAEMcHJvbG9nRmxpZ2h0AQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUMcmVzdENvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5TGFzdFR4SWRCeVVzZXIBCQClCAEIBQFpDG9yaWdpbkNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBQNuaWwtAWkBDWNvbnN0cnVjdG9yVjEBCHJlc3RBZGRyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVJlc3RBZGRyZXNzAAUIcmVzdEFkZHIFA25pbAFpAQtzYXZlSW50ZWdlcgIDa2V5BmFtb3VudAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECIHNhdmVJbnRlZ2VyIGlzIG5vdCBwdWJsaWMgbWV0aG9kCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQNrZXkFBmFtb3VudAUDbmlsAWkBCnNldEJsb2NrZWQBCWlzQmxvY2tlZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQxCb29sZWFuRW50cnkCCQEKa2V5QmxvY2tlZAAFCWlzQmxvY2tlZAUDbmlsAWkBCXN0YWtlTGFuZAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkxBTkRQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMJAQIhPQIIBQVhc3NldAZpc3N1ZXIFBHRoaXMJAAIBAhdVbmtub3duIGlzc3VlciBvZiB0b2tlbgMJAQEhAQkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFCkxBTkRQUkVGSVgJAAIBCQCsAgIJAKwCAgIJT25seSBORlQgBQpMQU5EUFJFRklYAhQgdG9rZW5zIGFyZSBhY2NlcHRlZAQLbGFuZE51bVNpemUJALACAggFBWFzc2V0BG5hbWUABAQHbGFuZE51bQMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgNYWEwJALMCAgULbGFuZE51bVNpemUAAwMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgJYTAkAswICBQtsYW5kTnVtU2l6ZQACCQCzAgIFC2xhbmROdW1TaXplAAEDCQEBIQEJAQlpc0RlZmluZWQBCQC2CQEFB2xhbmROdW0JAAIBCQCsAgICHkNhbm5vdCBwYXJzZSBsYW5kIG51bWJlciBmcm9tIAgFBWFzc2V0BG5hbWUEC2xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQDCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAhIgaXMgYWxyZWFkeSBzdGFrZWQEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBXByb3BzCQERdXBkYXRlUHJvcG9ydGlvbnMDBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQQMcmVzQnlDb250S2V5CQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJAJEDAgUBZAUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQxyZXNCeUNvbnRLZXkCCzBfMF8wXzBfMF8wAgFfBBB1cGRhdGVkQ29udFByb3BzCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUJY29udFByb3BzBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQIBXwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQdhZGRyZXNzBAhsYW5kc1N0cgkAoggBBQhsYW5kc0tleQQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQVsYW5kcwULbGFuZEFzc2V0SWQJAAIBCQCsAgICIllvdXIgc3Rha2VkIGxhbmRzIGFscmVhZHkgY29udGFpbiAFC2xhbmRBc3NldElkAwkAZwIJAJADAQUFbGFuZHMFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgkAAgEJAKwCAgkArAICAhlZb3VyIGFscmVhZHkgc3Rha2VkIG1heCAoCQCkAwEFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgIHKSBsYW5kcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQdhZGRyZXNzBAlvbGRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIJAM0IAgUFbGFuZHMFC2xhbmRBc3NldElkAgFfCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkJAGQCBQlvbGRQaWVjZXMFBnBpZWNlcwkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUHYWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFC2xhbmRBc3NldElkBQdhZGRyZXNzBQppbmZyYUxldmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAFBXByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIFDHJlc0J5Q29udEtleQUQdXBkYXRlZENvbnRQcm9wcwUDbmlsBQ1wcm9sb2dBY3Rpb25zBQl3bGdSZXN1bHQBaQELdW5zdGFrZUxhbmQBDWxhbmRBc3NldElkSW4EDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQ1jbGFpbU1vZGVEdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEAWQIBQFjAl8zBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFcHJvcHMJARF1cGRhdGVQcm9wb3J0aW9ucwMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAxyZXNCeUNvbnRLZXkJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQkAkQMCBQFkBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFDHJlc0J5Q29udEtleQILMF8wXzBfMF8wXzACAV8EEHVwZGF0ZWRDb250UHJvcHMJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BAgFfBAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUNY2xhaW1Nb2RlRHVjawQFbGFuZHMJAL0JAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQhsYW5kc0tleQIAAgFfBANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEDmdvdlJlbGVhc2VUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFC2dvdkNvbnRyYWN0CQEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQUEYWRkcgAAAwkAZwIFDmdvdlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICOVlvdXIgZ1dMIGFyZSB0YWtpbmcgcGFydCBpbiB2b3RpbmcsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5nb3ZSZWxlYXNlVGltZQQOYXJiUmVsZWFzZVRpbWUJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFC3dsZ0NvbnRyYWN0CQEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBQRhZGRyAAAFDmFyYml0cmFnZURlbGF5AwkAZgIFDmFyYlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICP1lvdXIgc3Rha2VkIGxhbmRzIHRvb2sgcGFydCBpbiBhcmJpdHJhZ2UsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5hcmJSZWxlYXNlVGltZQQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAQJbmV3UGllY2VzAwkAZgIFBnBpZWNlcwUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMFBnBpZWNlcwQJd2xnUmVzdWx0CQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUEYWRkcgUDbmlsBQNuaWwJAJQKAgkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMABQVwcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCBQxyZXNCeUNvbnRLZXkFEHVwZGF0ZWRDb250UHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al8yCQC5CQIIBQtjbGFpbVJlc3VsdAJfMwIBOgkAzAgCAwkAZgIJAJADAQUFbGFuZHMAAQkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAgkA0QgCBQVsYW5kcwkBBXZhbHVlAQUDaWR4AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5BQluZXdQaWVjZXMFA25pbAUNcHJvbG9nQWN0aW9ucwUJd2xnUmVzdWx0AWkBCXN0YWtlRHVjawAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkRVQ0tQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMDCQECIT0CCAUFYXNzZXQGaXNzdWVyBQ1pbmN1YmF0b3JBZGRyCQECIT0CCAUFYXNzZXQGaXNzdWVyBQticmVlZGVyQWRkcgcJAAIBCQCsAgIJAKwCAgISVW5rbm93biBpc3N1ZXIgb2YgBQpEVUNLUFJFRklYAgYgdG9rZW4DCQEBIQEJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQpEVUNLUFJFRklYCQACAQkArAICCQCsAgICCU9ubHkgTkZUIAUKRFVDS1BSRUZJWAIUIHRva2VucyBhcmUgYWNjZXB0ZWQECmFzc2V0SWRTdHIJANgEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQphc3NldElkU3RyAwkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQISIGlzIGFscmVhZHkgc3Rha2VkAwkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgIdWW91IGFscmVhZHkgc3Rha2VkIG9uZSBkdWNrOiAIBQVhc3NldARuYW1lBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQphc3NldElkU3RyBAhsb2NhdGlvbgkAoggBBQZsb2NLZXkEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQphc3NldElkU3RyBAhiYWNrcGFjawkAoggBBQVicEtleQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFCmFzc2V0SWRTdHIEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQUKYXNzZXRJZFN0cgAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd0aW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYCQDYBAEFB2Fzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlEdWNrSWRUb093bmVyAQUKYXNzZXRJZFN0cgUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzBQphc3NldElkU3RyBQNuaWwDCQEJaXNEZWZpbmVkAQUIbG9jYXRpb24FA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQUPREVGQVVMVExPQ0FUSU9OBQNuaWwDCQEJaXNEZWZpbmVkAQUIYmFja3BhY2sFA25pbAkAzggCCQDNCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkCGjA6MF8wXzBfMF8wXzA6MF8wXzBfMF8wXzA6BQNuaWwJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFCWN1ckhlYWx0aAUNcHJvbG9nQWN0aW9ucwFpAQt1bnN0YWtlRHVjawEKYXNzZXRJZFN0cgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQHYXNzZXRJZAkA2QQBBQphc3NldElkU3RyBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQphc3NldElkU3RyAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgkArAICAglUaGUgZHVjayAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFB2FkZHJlc3MJAAIBAhdTdGFrZWQgTkZUIGlzIG5vdCB5b3VycwMJAQ9jaGVja1RvdXJuYW1lbnQBBQphc3NldElkU3RyCQACAQIbdW5zdGFrZUR1Y2tfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQphc3NldElkU3RyCQACAQIZdW5zdGFrZUR1Y2tfY2hlY2tEZWxpdmVyeQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFCmFzc2V0SWRTdHIEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQUKYXNzZXRJZFN0cgAABAZoZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGYCBQVtYXhIUAUGaGVhbHRoCQACAQkArAICCQCsAgICGVBsZWFzZSBoZWFsIHlvdXIgZHVjayB0byAJAKQDAQUFbWF4SFACE2hwIGJlZm9yZSB1bnN0YWtpbmcJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBBQd0aW1lS2V5CQDMCAIJAQtEZWxldGVFbnRyeQEFCWtleUhlYWx0aAkAzAgCCQELRGVsZXRlRW50cnkBCQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MFA25pbAUNcHJvbG9nQWN0aW9ucwFpAQhjbGFpbVJlcwIGYW1vdW50DmxhbmRBc3NldElkU3RyBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAUNY2xhaW1Nb2RlRHVjawUObGFuZEFzc2V0SWRTdHIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDOCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQ1wcm9sb2dBY3Rpb25zCQCRAwIIBQZyZXN1bHQCXzMFCGJwSWR4UmVzAWkBDGNsYWltUmVzVG9XSAIGYW1vdW50DmxhbmRBc3NldElkU3RyBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAULY2xhaW1Nb2RlV2gFDmxhbmRBc3NldElkU3RyCQCUCgIJAM4IAgkAzQgCCQDNCAIJAM4IAggFBnJlc3VsdAJfMQgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQ1wcm9sb2dBY3Rpb25zCQCRAwIIBQZyZXN1bHQCXzUFCHdoSWR4UmVzAWkBBmZsaWdodAIHbWVzc2FnZQNzaWcEDXByb2xvZ0FjdGlvbnMJAQxwcm9sb2dGbGlnaHQBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQBZgkBDGZsaWdodENvbW1vbgMFCHVzZXJBZGRyBQdtZXNzYWdlBQNzaWcEBW5ld0hQCAUBZgJfMQQLZHVja0Fzc2V0SWQIBQFmAl8yBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04EC25ld0xvY2F0aW9uCAUBZgJfNAMJAAACBQtuZXdMb2NhdGlvbgULY3VyTG9jYXRpb24JAAIBAiJZb3UgY2FuJ3QgZmx5IHRvIHRoZSBzYW1lIGxvY2F0aW9uBAZuZXdMb2MJALUJAgULbmV3TG9jYXRpb24CAV8EBmlzVG91cgkAAAIJAJEDAgUGbmV3TG9jBQpsb2NJZHhUeXBlAgFUBAdpc0RlbGl2CQAAAgkAkQMCBQZuZXdMb2MFCmxvY0lkeFR5cGUCAUQEBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAljdXJyZW50RXEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssBA0kdDA3MDI5MzcwMzkwCQERc3VidHJhY3RFcXVpcG1lbnQCBQljdXJyZW50RXEIBQFmAl81BAVuZXdFcQgFDSR0MDcwMjkzNzAzOTACXzEED3Nob3VsZFplcm9CdWZmcwgFDSR0MDcwMjkzNzAzOTACXzIEDSR0MDcwMzkzNzM0NTgDCQEBIQEJAQlvbk1pc3Npb24CBRJ0b3VybmFtZW50Q29udHJhY3QFC2N1ckxvY2F0aW9uAwkBASEBCQEPaXNVc3VhbExvY2F0aW9uAQULbmV3TG9jYXRpb24JAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ABQMJAGYCBQVuZXdIUAAACQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAkAlAoCBQtjdXJMb2NhdGlvbgAAAwkBDmlzSW5Ub3VybmFtZW50AgUSdG91cm5hbWVudENvbnRyYWN0BQtjdXJMb2NhdGlvbgMJAQEhAQkBDmlzSW5Ub3VybmFtZW50AgUSdG91cm5hbWVudENvbnRyYWN0BQtuZXdMb2NhdGlvbgkAAgECKllvdXIgZHVjayBpcyB0YWtpbmcgcGFydCBpbiB0aGUgdG91cm5hbWVudAQFc2NvcmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZuZXdMb2MFCGxvY0lkeElkBAZjdXJMb2MJALUJAgULY3VyTG9jYXRpb24CAV8EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAMJAQIhPQIFBXNjb3JlCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBmN1ckxvYwUIbG9jSWR4SWQAAQkBDGNoZWF0QXR0ZW1wdAMFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgAHAwkAZgIFBW5ld0hQAAAECWxvY2FsQmVzdAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QJARprZXlCZXN0UmVzdWx0QnlUb3VyQW5kRHVjawIFBmxhc3RJZAULZHVja0Fzc2V0SWQAAAQIdXBkTG9jYWwDCQBmAgUFc2NvcmUFCWxvY2FsQmVzdAkA/AcEBRJ0b3VybmFtZW50Q29udHJhY3QCDnNhdmVEdWNrUmVzdWx0CQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFBXNjb3JlBQNuaWwFA25pbAUEdW5pdAMJAAACBQh1cGRMb2NhbAUIdXBkTG9jYWwJAJQKAgULbmV3TG9jYXRpb24FBW5ld0hQCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIFC2N1ckxvY2F0aW9uAAADCQEBIQEJAQxpc0luRGVsaXZlcnkBBQtjdXJMb2NhdGlvbgQJbG9jSGVhbHRoCQEQYXNTdHJpbmdJbnRUdXBsZQEJAPwHBAUEdGhpcwIQYXV0b0V4aXREZWxpdmVyeQkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQVuZXdIUAUDbmlsBQNuaWwDCQAAAgUJbG9jSGVhbHRoBQlsb2NIZWFsdGgDBQdpc0RlbGl2BQlsb2NIZWFsdGgDCQBmAgUFbmV3SFAAAAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAJAJQKAggFCWxvY0hlYWx0aAJfMQAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkBASEBBQdpc0RlbGl2CQACAQIkWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIGRlbGl2ZXJ5AwkBASEBCQEMaXNJbkRlbGl2ZXJ5AQULbmV3TG9jYXRpb24JAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ADQQFc2NvcmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZuZXdMb2MFCGxvY0lkeElkBAZjdXJMb2MJALUJAgULY3VyTG9jYXRpb24CAV8DCQECIT0CBQVzY29yZQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZjdXJMb2MFCGxvY0lkeElkAAEJAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ADgMDCQBmAgUFbmV3SFAAAAkAZgIAAwUFc2NvcmUHCQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAQJbG9jSGVhbHRoCQEQYXNTdHJpbmdJbnRUdXBsZQEJAPwHBAUEdGhpcwIQYXV0b0V4aXREZWxpdmVyeQkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQVuZXdIUAUDbmlsBQNuaWwDCQAAAgUJbG9jSGVhbHRoBQlsb2NIZWFsdGgFCWxvY0hlYWx0aAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQJbG9jVG9TYXZlCAUNJHQwNzAzOTM3MzQ1OAJfMQQIaHBUb1NhdmUIBQ0kdDA3MDM5MzczNDU4Al8yCQCUCgIJAM4IAgkAzggCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGbG9jS2V5BQlsb2NUb1NhdmUJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQVuZXdIUAUDbmlsBQ1wcm9sb2dBY3Rpb25zAwUPc2hvdWxkWmVyb0J1ZmZzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wBQNuaWwFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkAwkAZgIFBW5ld0hQAAAFD3hwU3VjY2Vzc0ZsaWdodAUMeHBGYWlsRmxpZ2h0Al8xCAUBZgJfMwFpAQRoZWFsAwpxdWFudGl0eUwxCnF1YW50aXR5TDIKcXVhbnRpdHlMMwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDAwMJAGYCAAAFCnF1YW50aXR5TDEGCQBmAgAABQpxdWFudGl0eUwyBgkAZgIAAAUKcXVhbnRpdHlMMwkAAgECG1F1YW50aXR5IGNhbm5vdCBiZSBuZWdhdGl2ZQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFGhlYWxfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECEmhlYWxfY2hlY2tEZWxpdmVyeQQDcXRzCQDMCAIFCnF1YW50aXR5TDEJAMwIAgUKcXVhbnRpdHlMMgkAzAgCBQpxdWFudGl0eUwzBQNuaWwECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAlvbGRIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGcCBQlvbGRIZWFsdGgFBW1heEhQCQACAQkArAICCQCsAgICD0hQIHNob3VsZCBiZSA8IAkApAMBBQVtYXhIUAIIIHRvIGhlYWwEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwoBC2l0ZXJhdGVQcm9kAgNhY2MGcmVjaXBlBAFuCAUDYWNjAl8yBAF4AwkAZgIJAJADAQUIcHJvZExpc3QFAW4JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAUBbgAAAwkAZgIAAwUBbgQBcQkAkQMCBQNxdHMFAW4DCQBmAgUBcQUBeAkAAgEJAKwCAgkArAICCQCsAgICDllvdSBoYXZlIG9ubHkgCQCkAwEFAXgCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQFuCQCVCgMJAM0IAggFA2FjYwJfMQkApAMBCQBlAgUBeAUBcQkAZAIFAW4AAQkAZAIIBQNhY2MCXzMJAGgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCBQZyZWNpcGUCAV8FCnJJZHhFZmZlY3QFAXEJAJUKAwkAzQgCCAUDYWNjAl8xCQCkAwEFAXgJAGQCBQFuAAEIBQNhY2MCXzMEBnJlc3VsdAoAAiRsBRBwcm9kdWN0aW9uTWF0cml4CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQNuaWwAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQtpdGVyYXRlUHJvZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyBAluZXdIZWFsdGgJAJcDAQkAzAgCBQVtYXhIUAkAzAgCCQBkAgUJb2xkSGVhbHRoCAUGcmVzdWx0Al8zBQNuaWwJAJQKAgkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJbmV3SGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQC5CQIIBQZyZXN1bHQCXzECAV8FA25pbAIBOgUDbmlsBQ1wcm9sb2dBY3Rpb25zCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGgCBQZ4cEhlYWwJAGQCCQBkAgUKcXVhbnRpdHlMMQUKcXVhbnRpdHlMMgUKcXVhbnRpdHlMMwJfMQUJbmV3SGVhbHRoAWkBBmhlYWxFUwAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhZoZWFsRVNfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECFGhlYWxFU19jaGVja0RlbGl2ZXJ5BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJb2xkSGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBmAgUJb2xkSGVhbHRoAAAJAAIBAihIUCBzaG91bGQgYmUgMCB0byBjYWxsIEVtZXJnZW5jeSBTZXJ2aWNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8EDW1lZEtpdEFtb3VudDEDCQBmAgkAkAMBBQhwcm9kTGlzdAAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAAAABA1tZWRLaXRBbW91bnQyAwkAZgIJAJADAQUIcHJvZExpc3QAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAEAAAQNbWVkS2l0QW1vdW50MwMJAGYCCQCQAwEFCHByb2RMaXN0AAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAACAAADAwMJAGYCBQ1tZWRLaXRBbW91bnQxAAAGCQBmAgUNbWVkS2l0QW1vdW50MgAABgkAZgIFDW1lZEtpdEFtb3VudDMAAAkAAgECH1lvdSBoYXZlIHRvIHVzZSBvd24gTWVkaWNhbCBLaXQECGV4aXN0U3RyCQCdCAIFD2Vjb25vbXlDb250cmFjdAkBDmtleUVzV2FyZWhvdXNlAAQMZXhpc3RBbW91bnRzAwkBCWlzRGVmaW5lZAEFCGV4aXN0U3RyCQC8CQIJAQV2YWx1ZQEFCGV4aXN0U3RyAgFfBQNuaWwEC2V4aXN0QW1vdW50AwkAZgIJAJADAQUMZXhpc3RBbW91bnRzAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQxleGlzdEFtb3VudHMAAAAAAwkAZwIAAAULZXhpc3RBbW91bnQJAAIBAjlUaGVyZSBhcmUgbm8gTWVkaWNhbCBLaXRzIEwxIGF0IEVtZXJnZW5jeSBTZXJ2aWNlIHN0b3JhZ2UECW5ld0hlYWx0aAkAZAIFCW9sZEhlYWx0aAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4AAACAV8FCnJJZHhFZmZlY3QEBW5ld0VTCQC5CQIJAMwIAgkApAMBCQBlAgULZXhpc3RBbW91bnQAAQkA0QgCBQxleGlzdEFtb3VudHMAAAIBXwQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAAAAgFfBAh0b3RhbE1hdAkBEmdldFJlY2lwZU1hdGVyaWFscwEFBnJlY2lwZQQJc2VsbFByaWNlCQBrAwkAaAIFCHRvdGFsTWF0BQpFU1NFTExDT0VGBRBSRVNPVVJDRVBSSUNFTUlOCQBoAgUFTVVMVDgFDlBST0RVQ1RQS0dTSVpFAwkBAiE9AggFA3BtdAZhbW91bnQFCXNlbGxQcmljZQkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFCXNlbGxQcmljZQQGcmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIPdXBkYXRlRXNTdG9yYWdlCQDMCAIFBW5ld0VTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3VzZHRBc3NldElkBQlzZWxsUHJpY2UFA25pbAkAlAoCCQDOCAIJAM0IAgUNcHJvbG9nQWN0aW9ucwkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJbmV3SGVhbHRoCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCHhwQ2FsbEVTAl8xBQZyZXN1bHQBaQEOdXBkYXRlQmFja3BhY2sCC2R1Y2tBc3NldElkB25ld1BhY2sDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQFB25ld1BhY2sFA25pbAUHbmV3UGFjawFpAQ9jb21taXRGb3JSYW5kb20ABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQLZmluaXNoQmxvY2sJAGQCBQZoZWlnaHQFC3JhbmRvbURlbGF5BARhZGRyCQClCAEIBQFpBmNhbGxlcgkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlDb21taXQBBQRhZGRyBQtmaW5pc2hCbG9jawUDbmlsBQ1wcm9sb2dBY3Rpb25zBQtmaW5pc2hCbG9jawFpAQhidXlTTGFuZAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEDCQECIT0CCAUDcG10BmFtb3VudAUHRVhQVVNEVAkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFB0VYUFVTRFQEBnJlc3VsdAkBEmV4cGVkaXRpb25JbnRlcm5hbAIIBQFpBmNhbGxlcggFAWkNdHJhbnNhY3Rpb25JZAQLYWNyZXNSZXN1bHQJAQVhc0ludAEJAPwHBAUNYWNyZXNDb250cmFjdAIJYnVybkFjcmVzCQDMCAIFDFNfQ09TVF9BQ1JFUwUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIJAM0IAggFBnJlc3VsdAJfMQkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCUCgIICAUGcmVzdWx0Al8yAl8xBQthY3Jlc1Jlc3VsdAFpAQpleHBlZGl0aW9uAgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAFmCQEMZmxpZ2h0Q29tbW9uAwUIdXNlckFkZHIFB21lc3NhZ2UFA3NpZwQLZHVja0Fzc2V0SWQIBQFmAl8yBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVtTGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMGBQVtTGlzdAUMRVhQTUFURVJJQUxTAgFfBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQJY3VycmVudEVxCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAQNJHQwODA4OTU4MDk5MgkBEXN1YnRyYWN0RXF1aXBtZW50AgUJY3VycmVudEVxCAUBZgJfNQQFbmV3RXEIBQ0kdDA4MDg5NTgwOTkyAl8xBA9zaG91bGRaZXJvQnVmZnMIBQ0kdDA4MDg5NTgwOTkyAl8yBAFlCQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAJpZAgIBQFlAl8yAl8xBAZyZXN1bHQDCQBnAgAACAUBZgJfMQkAlQoDCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgAAAkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEFA25pbAIAAAAJAJUKAwkAzggCCAUBZQJfMQMFD3Nob3VsZFplcm9CdWZmcwkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAUDbmlsCQDNCAIJAM0IAgkAzQgCCQDNCAIFA25pbAkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAggIBQFlAl8yAl8yCQDMCAICAUwJAMwIAgUCaWQFA25pbAIBXwkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAgFAWYCXzEJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgUCaWQIBQFmAl8zAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIaZXhwZWRpdGlvbl9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIYZXhwZWRpdGlvbl9jaGVja0RlbGl2ZXJ5BAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCVCgMIBQZyZXN1bHQCXzIIBQZyZXN1bHQCXzMFC2FjcmVzUmVzdWx0AWkBEGJ1eVNMYW5kRm9yQWNyZXMABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUMYWNyZXNBc3NldElkCQACAQIUQUNSRVMgcGF5bWVudHMgb25seSEDCQECIT0CBQNhbXQFDFNfQ09TVF9BQ1JFUwkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFDFNfQ09TVF9BQ1JFUwQGcmVzdWx0CQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFDGFjcmVzQXNzZXRJZAUDYW10BQNuaWwJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCUCgIICAUGcmVzdWx0Al8yAl8xBQthY3Jlc1Jlc3VsdAFpAQx1cGdyYWRlSW5mcmEBC2xhbmRBc3NldElkBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQ11cEluZnJhQ29tbW9uBAYIBQFpBmNhbGxlcgAABQtsYW5kQXNzZXRJZAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQUNcHJvbG9nQWN0aW9ucwgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkCQBrAwUOeHBVcGdyYWRlSW5mcmEIBQZyZXN1bHQCXzMFBU1VTFQ4Al8xCAUGcmVzdWx0Al8yAWkBEGFjdGl2YXRlQXJ0aWZhY3QCB2FydE5hbWUObGFuZEFzc2V0SWRPcHQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAZyZXN1bHQEByRtYXRjaDAFB2FydE5hbWUDCQAAAgIHUFJFU0FMRQUHJG1hdGNoMAkBEmFjdGl2YXRlUHJlc2FsZUFydAIFBGFkZHIFDmxhbmRBc3NldElkT3B0AwkAAAICB09OQk9BUkQFByRtYXRjaDAJARJhY3RpdmF0ZU9uYm9hcmRBcnQBBQRhZGRyCQACAQIQVW5rbm93biBhcnRpZmFjdAkAzggCBQZyZXN1bHQFDXByb2xvZ0FjdGlvbnMBaQEKbWVyZ2VMYW5kcwEMbGFuZEFzc2V0SWRzBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQttZXJnZUNvbW1vbgIJAKUIAQgFAWkGY2FsbGVyBQxsYW5kQXNzZXRJZHMJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEFDXByb2xvZ0FjdGlvbnMICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQd4cE1lcmdlAl8xCAUGcmVzdWx0Al8yAWkBDWNhcmdvRXhjaGFuZ2UCDGNhcmdvTGlzdFN0cgtsYW5kQXNzZXRJZAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQKY2FyZ29QYXJ0cwkAvAkCBQxjYXJnb0xpc3RTdHICAToEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMAwkBAiE9AgkAkQMCBQNsb2MFCGxvY0lkeElkBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgIbRHVjayBzaG91bGQgYmUgb24gdGhlIGxhbmQgBQtsYW5kQXNzZXRJZAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBnJlc3VsdAkBCW1vdmVTdHVmZgMFCmNhcmdvUGFydHMFCWN1cnJlbnRXaAULY3VycmVudFBhY2sEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQFbG9mdE8JAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQIBQZyZXN1bHQCXzcEBWxvZnRGCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUIBQZyZXN1bHQCXzcJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAggFBnJlc3VsdAJfNAkAzAgCCAUGcmVzdWx0Al81CQDMCAIIBQZyZXN1bHQCXzYFA25pbAIBOgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQkAugkCCQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCCAUGcmVzdWx0Al8xCQDMCAIIBQZyZXN1bHQCXzIJAMwIAggFBnJlc3VsdAJfMwkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAgE6BQNuaWwFDXByb2xvZ0FjdGlvbnMBaQENc2F2ZVdhcmVob3VzZQIFd2hTdHILbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEAndoCQC8CQIFBXdoU3RyAgE6AwkBAiE9AgkAkAMBBQJ3aAAFCQACAQIwd2FyZWhvdXNlIHN0cmluZyBzaG91bGQgY29udGFpbiA0ICc6JyBzZXBhcmF0b3JzBAVsb2Z0TAkAkQMCCQC1CQIJAJEDAgUCd2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkBAVsb2Z0TwkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBWxvZnRUCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFAndoBQt3aElkeExldmVscwQFbG9mdEYJAGUCCQBlAgUFbG9mdFQJAQ1wYXJzZUludFZhbHVlAQUFbG9mdEwFBWxvZnRPBAhuZXdXaFN0cgkAugkCCQDMCAIJAJEDAgUCd2gFC3doSWR4TGV2ZWxzCQDMCAIJAJEDAgUCd2gFCHdoSWR4UmVzCQDMCAIJAJEDAgUCd2gFCHdoSWR4TWF0CQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCCQC5CQIJAMwIAgUFbG9mdEwJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAKQDAQUFbG9mdFQFA25pbAIBXwUDbmlsAgE6CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkFCG5ld1doU3RyBQNuaWwFCG5ld1doU3RyAWkBEmZpeFdhcmVob3VzZUZvcm1hdAELbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAJ3aAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBWxvZnRMCQEFYXNJbnQBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIacmVjYWxjTG9ja2VkVm9sdW1lUkVBRE9OTFkJAMwIAgULbGFuZEFzc2V0SWQJAMwIAgUCd2gFA25pbAUDbmlsBAVsb2Z0TwkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBWxvZnRUCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFAndoBQt3aElkeExldmVscwQFbG9mdEYJAGUCCQBlAgUFbG9mdFQFBWxvZnRMBQVsb2Z0TwQIbmV3V2hTdHIJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIJAKQDAQUFbG9mdEwJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAKQDAQUFbG9mdFQFA25pbAIBXwUDbmlsAgE6CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkFCG5ld1doU3RyBQNuaWwFCG5ld1doU3RyAWkBF2ZpeENvbnRpbmVudFByb3BvcnRpb25zAQxsYW5kQXNzZXRJZHMDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQKAQhnZXRQcm9wcwIDYWNjBGNvbnQJAM0IAgUDYWNjCQELdmFsdWVPckVsc2UCCQCiCAEJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUEY29udAILMF8wXzBfMF8wXzAEAXAKAAIkbAUKY29udGluZW50cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZ2V0UHJvcHMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFCgEJcHJvY2Vzc29yAgNhY2MLbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQUFU1NJWkUEBGNvbnQJAJEDAgUBZAUMcmVjQ29udGluZW50BA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEDGNvbnRpbmVudElkeAkBBXZhbHVlAQkAzwgCBQpjb250aW5lbnRzBQRjb250BAljb250UHJvcHMJALUJAgkAkQMCBQNhY2MFDGNvbnRpbmVudElkeAIBXwQHdXBkYXRlZAkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCWNvbnRQcm9wcwUNdGVycmFpbkNvdW50cwUJbGFuZElu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AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIIQW1lcmljYXMJAJEDAgUBcgAACQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIGRXVyb3BlCQCRAwIFAXIAAQkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECBEFzaWEJAJEDAgUBcgACCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIGQWZyaWNhCQCRAwIFAXIAAwkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECB09jZWFuaWEJAJEDAgUBcgAEBQNuaWwAAAFpAQ9maXhTdGFrZWRQaWVjZXMBB2FkZHJlc3MDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEDHN0YWtlZFBpZWNlcwMJAAACBQdhZGRyZXNzAgAAAAQIbGFuZHNTdHIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUHYWRkcmVzcwQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAoBB29uZUxhbmQCA2FjYwtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQIbGFuZFNpemUJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplCQBkAgUDYWNjCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUKAAIkbAUFbGFuZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB29uZUxhbmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUHYWRkcmVzcwUMc3Rha2VkUGllY2VzBQNuaWwFDHN0YWtlZFBpZWNlcwFpAQ1zZXRDdXN0b21OYW1lAwdhc3NldElkCmN1c3RvbU5hbWUEdHlwZQQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQMJAQIhPQIIBQNwbXQGYW1vdW50BQxSRU5BTUlOR0NPU1QJAAIBCQCsAgICElBheW1lbnQgc2hvdWxkIGJlIAkApAMBBQxSRU5BTUlOR0NPU1QDCQEIY29udGFpbnMCBQpjdXN0b21OYW1lAgJfXwkAAgEJAKwCAgIeTmFtZSBzaG91bGQgbm90IGNvbnRhaW4gJ19fJzogBQpjdXN0b21OYW1lAwkAZgIJALECAQUKY3VzdG9tTmFtZQUKTUFYTkFNRUxFTgkAAgEJAKwCAgIZTmFtZSB0b28gbG9uZywgbWF4TGVuZ3RoPQkApAMBBQpNQVhOQU1FTEVOBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQHYWN0aW9ucwQHJG1hdGNoMAUEdHlwZQMJAAACAgdBQ0NPVU5UBQckbWF0Y2gwBApyZXZlcnNlS2V5CQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQNYWRkclRvTmFtZUtleQkBFmtleUFkZHJlc3NUb0N1c3RvbU5hbWUBBQRhZGRyBAdvbGROYW1lCQCiCAEFDWFkZHJUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ1hZGRyVG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQRhZGRyCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQx4cEN1c3RvbU5hbWUCXzEDCQAAAgIETEFORAUHJG1hdGNoMAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA5hc3NldFRvTmFtZUtleQkBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAQHb2xkTmFtZQkAoggBBQ5hc3NldFRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ5hc3NldFRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUHYXNzZXRJZAgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgUMeHBDdXN0b21OYW1lAl8xAwkAAAICBERVQ0sFByRtYXRjaDAEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQdhc3NldElkAwMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQYJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKRFVDS1BSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA5hc3NldFRvTmFtZUtleQkBGmtleUR1Y2tBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAQHb2xkTmFtZQkAoggBBQ5hc3NldFRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ5hc3NldFRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUHYXNzZXRJZAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFB2Fzc2V0SWQFDHhwQ3VzdG9tTmFtZQJfMQkAAgECE1Vua25vd24gZW50aXR5IHR5cGUJAJQKAgkAzggCCQDNCAIFB2FjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkBQ1wcm9sb2dBY3Rpb25zAAABaQEMc2V0UmVmZXJyYWxzAglvbGRQbGF5ZXIJbmV3UGxheWVyAwkBAiE9AggFAWkPY2FsbGVyUHVibGljS2V5BQNwdWIJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUJb2xkUGxheWVyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJb2xkUGxheWVyAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBQluZXdQbGF5ZXIJAAIBCQCsAgICEUludmFsaWQgYWRkcmVzczogBQluZXdQbGF5ZXIEB29sZHNLZXkJAQlrZXlPbGRpZXMABARvbGRzCQCiCAEFB29sZHNLZXkEBm9sZGllcwMJAQlpc0RlZmluZWQBBQRvbGRzCQC8CQIJAQV2YWx1ZQEFBG9sZHMCAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQZvbGRpZXMFCW5ld1BsYXllcgkAAgEJAKwCAgUJbmV3UGxheWVyAiYgaXMgbm90IG5ld2JpZSAoYWxyZWFkeSBoYXMgcmVmZXJyYWxzKQQIcmVmQnlLZXkJAQ9rZXlBZGRyZXNzUmVmQnkBBQluZXdQbGF5ZXIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwMJAQlpc0RlZmluZWQBBQVyZWZCeQkBCWlzRGVmaW5lZAEJAKYIAQkBBXZhbHVlAQUFcmVmQnkHCQACAQkArAICCQCsAgIFCW5ld1BsYXllcgIUIGFscmVhZHkgaGFzIHJlZkJ5OiAJAQV2YWx1ZQEFBXJlZkJ5BAdyZWZzS2V5CQETa2V5QWRkcmVzc1JlZmVycmFscwEFCW9sZFBsYXllcgQEcmVmcwkAoggBBQdyZWZzS2V5BAlyZWZzQXJyYXkDCQEJaXNEZWZpbmVkAQUEcmVmcwkAvAkCCQEFdmFsdWUBBQRyZWZzAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUJcmVmc0FycmF5BQluZXdQbGF5ZXIJAAIBCQCsAgIJAKwCAgkArAICBQlvbGRQbGF5ZXICEiBhbHJlYWR5IGNvbnRhaW5zIAUJbmV3UGxheWVyAhEgd2l0aGluIHJlZmVycmFscwQHbmV3UmVmcwkAugkCCQDNCAIFCXJlZnNBcnJheQUJbmV3UGxheWVyAgFfBAduZXdPbGRzAwkBD2NvbnRhaW5zRWxlbWVudAIFBm9sZGllcwUJb2xkUGxheWVyCQEFdmFsdWUBBQRvbGRzCQC6CQIJAM0IAgUGb2xkaWVzBQlvbGRQbGF5ZXICAV8JAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFCHJlZkJ5S2V5BQlvbGRQbGF5ZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgUHcmVmc0tleQUHbmV3UmVmcwkAzAgCCQELU3RyaW5nRW50cnkCBQdvbGRzS2V5BQduZXdPbGRzBQNuaWwFDXByb2xvZ0FjdGlvbnMAAAFpARBkaXN0cmlidXRlUG9pbnRzBQhzdHJlbmd0aAhhY2N1cmFjeQlpbnRlbGxlY3QJZW5kdXJhbmNlCWRleHRlcml0eQQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC3ZpcnRXbGdEYXRhCQEJYXNBbnlMaXN0AQkA/AcEBQt3bGdDb250cmFjdAISY2hlY2tXbGdYcFJFQURPTkxZCQDMCAIFBGFkZHIFA25pbAUDbmlsBA12aXJ0V2xnUG9pbnRzCQEFYXNJbnQBCQCRAwIFC3ZpcnRXbGdEYXRhAAEEDSR0MDk2Mzc3OTY3NjcDCQBnAgAABQ12aXJ0V2xnUG9pbnRzCQCUCgIAAAUDbmlsBAdkZWx0YVhQCQEFYXNJbnQBCQD8BwQFC3dsZ0NvbnRyYWN0Agl0YWtlV2xnWHAJAMwIAgUEYWRkcgUDbmlsBQNuaWwDCQAAAgUHZGVsdGFYUAUHZGVsdGFYUAkAlAoCBQ12aXJ0V2xnUG9pbnRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMa2V5VXNlckxldmVsAQUEYWRkcgkBBWFzSW50AQkAkQMCBQt2aXJ0V2xnRGF0YQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEJa2V5VXNlclhQAQUEYWRkcgkBBWFzSW50AQkAkQMCBQt2aXJ0V2xnRGF0YQACBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ECXdsZ1BvaW50cwgFDSR0MDk2Mzc3OTY3NjcCXzEECndsZ0FjdGlvbnMIBQ0kdDA5NjM3Nzk2NzY3Al8yBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECmZyZWVLZXlBY2MJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIEDWZyZWVQb2ludHNBY2MJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCmZyZWVLZXlBY2MAAAUJd2xnUG9pbnRzBAtmcmVlS2V5RHVjawkBEWtleUR1Y2tGcmVlUG9pbnRzAQULZHVja0Fzc2V0SWQEDmZyZWVQb2ludHNEdWNrCQELdmFsdWVPckVsc2UCCQCfCAEFC2ZyZWVLZXlEdWNrAAAEB3N1bUZyZWUJAGQCBQ1mcmVlUG9pbnRzQWNjBQ5mcmVlUG9pbnRzRHVjawQPc3VtVG9EaXN0cmlidXRlCQBkAgkAZAIJAGQCCQBkAgUIc3RyZW5ndGgFCGFjY3VyYWN5BQlpbnRlbGxlY3QFCWVuZHVyYW5jZQUJZGV4dGVyaXR5AwkAZgIFD3N1bVRvRGlzdHJpYnV0ZQUHc3VtRnJlZQkAAgEJAKwCAgkArAICAg9UaGVyZSBhcmUgb25seSAJAKQDAQUHc3VtRnJlZQIaIGZyZWUgcG9pbnRzIHRvIGRpc3RyaWJ1dGUECGNoYXJzS2V5CQEMa2V5RHVja0NoYXJzAQULZHVja0Fzc2V0SWQEBWNoYXJzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUIY2hhcnNLZXkCCTBfMF8wXzBfMAIBXwQGbmV3QWNjCQBlAgUNZnJlZVBvaW50c0FjYwUPc3VtVG9EaXN0cmlidXRlCQCUCgIJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQpmcmVlS2V5QWNjAwkAZgIAAAUGbmV3QWNjAAAFBm5ld0FjYwkAzAgCCQEMSW50ZWdlckVudHJ5AgULZnJlZUtleUR1Y2sDCQBmAgAABQZuZXdBY2MJAGQCBQ5mcmVlUG9pbnRzRHVjawUGbmV3QWNjBQ5mcmVlUG9pbnRzRHVjawkAzAgCCQELU3RyaW5nRW50cnkCBQhjaGFyc0tleQkAuQkCCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhclN0cmVuZ3RoBQhzdHJlbmd0aAkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJBY2N1cmFjeQUIYWNjdXJhY3kJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFySW50ZWxsZWN0BQlpbnRlbGxlY3QJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRW5kdXJhbmNlBQllbmR1cmFuY2UJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRGV4dGVyaXR5BQlkZXh0ZXJpdHkFA25pbAIBXwUDbmlsBQ1wcm9sb2dBY3Rpb25zBQp3bGdBY3Rpb25zAAABaQEcc3BsaXRCeUdsb2JhbFdlaWdodHNSRUFET05MWQEGYW1vdW50CQCUCgIFA25pbAkBEmdldE5lZWRlZE1hdGVyaWFscwEFBmFtb3VudAFpASRzcGxpdEJ5R2xvYmFsQW5kTG9jYWxXZWlnaHRzUkVBRE9OTFkDCW1hdEFtb3VudAlyZXNBbW91bnQIdGVycmFpbnMEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQUIdGVycmFpbnMJAJQKAgUDbmlsCQCUCgIJARJnZXROZWVkZWRNYXRlcmlhbHMBBQltYXRBbW91bnQJARNkaXN0cmlidXRlQnlXZWlnaHRzAgUJcmVzQW1vdW50BQ10ZXJyYWluQ291bnRzAWkBE2dldEJhY2twYWNrUkVBRE9OTFkBC2R1Y2tBc3NldElkCQCUCgIFA25pbAkAuQkCCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAIBOgFpARRnZXRXYXJlaG91c2VSRUFET05MWQELbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAACQCUCgIFA25pbAkAugkCCQEMZ2V0V2FyZWhvdXNlAwkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwCAToBaQEKc2F2ZUxhc3RUeAADCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFD2Vjb25vbXlDb250cmFjdAkAzAgCBRJ0b3VybmFtZW50Q29udHJhY3QJAMwIAgUNYWNyZXNDb250cmFjdAUDbmlsCAUBaQZjYWxsZXIJAAIBAg1BY2Nlc3MgZGVuaWVkCQCUCgIJAQZwcm9sb2cBBQFpACoBaQEPdXBkYXRlRHVja1N0YXRzAgtkdWNrQXNzZXRJZAdkZWx0YVhQAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkCQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUHZGVsdGFYUAFpAQ51cGRhdGVBY2NTdGF0cwIEYWRkcgdkZWx0YVhQAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQt3bGdDb250cmFjdAkAzAgCBQ9lY29ub215Q29udHJhY3QJAMwIAgUNYWNyZXNDb250cmFjdAUDbmlsCAUBaQZjYWxsZXIJAAIBAg1BY2Nlc3MgZGVuaWVkCQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFB2RlbHRhWFABaQEJZXF1aXBEdWNrAQllcXVpcG1lbnQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhllcXVpcER1Y2tfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECF2VxdWlwRHVja19jaGVja0RlbGl2ZXJ5BAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQLY3VycmVudFNlZ3MJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywCAV8EBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVuZXdFcQkAtQkCBQllcXVpcG1lbnQCAV8DCQECIT0CCQCQAwEFBW5ld0VxBQtOVU1TRUdNRU5UUwkAAgECFldyb25nIGVxdWlwbWVudCBzdHJpbmcECXRlbXBQcm9kQgkBBmRyZXNzQgQFC2N1cnJlbnRTZWdzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QGBQNuaWwECHNlZ0JwQXV4CQCRAwIJALUJAgkAkQMCBQVuZXdFcQULc2VnQmFja3BhY2sCATsAAQQKYnVmZkVmZmVjdAMJAAACBQhzZWdCcEF1eAIAAAAEBGF1eDAJAJEDAgkAtQkCBQhzZWdCcEF1eAIBLAAAAwkAAAIFBGF1eDACAAAABAZpZHhDbnQJALUJAgUEYXV4MAIBOgQDaWR4CQCRAwIFBmlkeENudAAABANjbnQJAJEDAgUGaWR4Q250AAEDAwMDAwkAAAIFA2lkeAICMDYGCQAAAgUDaWR4AgIwNwYJAAACBQNpZHgCAjA4CQECIT0CBQNjbnQCAAcJAGYCCQENcGFyc2VJbnRWYWx1ZQEFA2NudAAABwkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4CQENcGFyc2VJbnRWYWx1ZQEFA2lkeAIBXwUKcklkeEVmZmVjdAAABAVzdGF0cwkBDGdldER1Y2tTdGF0cwQFBHRoaXMFC2R1Y2tBc3NldElkBQpidWZmRWZmZWN0BgQIbmV3UHJvZEIJAQZkcmVzc0IEBQVuZXdFcQUJdGVtcFByb2RCBwUFc3RhdHMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUJZXF1aXBtZW50CQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCBQpuZXdQcm9kU3RyBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAcJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAgJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAkJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAoJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAsFA25pbAIBXwUDbmlsBQ1wcm9sb2dBY3Rpb25zAAABaQEPZm9ydGlmaWNhdGVMYW5kAgtsYW5kQXNzZXRJZARwbGFuBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLZHVja0Fzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIABAlkdWNrU3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAAABwQHZm9ydEtleQkBF2tleUZvcnRpZmljYXRpb25zQnlMYW5kAQULbGFuZEFzc2V0SWQEDGN1cnJlbnRGb3J0cwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFB2ZvcnRLZXkCDDowXzE1OjBfMTg6MAIBXwQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEAndoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQHY3VyTG9mdAkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8EBGN1ck8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdjdXJMb2Z0BQt2b2xPY2N1cGllZAQEY3VyRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB2N1ckxvZnQFB3ZvbEZyZWUECG5ld0ZvcnRzCQC1CQIFBHBsYW4CAV8EDyR0MDEwMzYwNTEwMzcyMAkBBWZvcnRCBgUMY3VycmVudEZvcnRzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFAndoBQl3aElkeFByb2QFBGN1ck8FBGN1ckYGBQNuaWwECXRlbXBQcm9kQggFDyR0MDEwMzYwNTEwMzcyMAJfMQQFdGVtcE8IBQ8kdDAxMDM2MDUxMDM3MjACXzIEBXRlbXBGCAUPJHQwMTAzNjA1MTAzNzIwAl8zBA8kdDAxMDM3MjMxMDM4MTkJAQVmb3J0QgYFCG5ld0ZvcnRzBQl0ZW1wUHJvZEIFBXRlbXBPBQV0ZW1wRgcFCWR1Y2tTdGF0cwQIbmV3UHJvZEIIBQ8kdDAxMDM3MjMxMDM4MTkCXzEEBG5ld08IBQ8kdDAxMDM3MjMxMDM4MTkCXzIEBG5ld0YIBQ8kdDAxMDM3MjMxMDM4MTkCXzMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQdjdXJMb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQRuZXdPCQDMCAIJAKQDAQUEbmV3RgkAzAgCCQCRAwIFB2N1ckxvZnQFCHZvbFRvdGFsBQNuaWwCAV8JAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFB2ZvcnRLZXkFBHBsYW4JAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCBQpuZXdQcm9kU3RyCQDMCAIFCm5ld0xvZnRTdHIFA25pbAIBOgUDbmlsBQ1wcm9sb2dBY3Rpb25zAAABaQETaW5pdER1Y2tUb3VyQXR0ZW1wdAELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFEnRvdXJuYW1lbnRDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEDHRvdXJMb2NhdGlvbgkArAICCQCkAwEFBmxhc3RJZAIEX1RfMAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAUJY3VySGVhbHRoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFBW1heEhQCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFC2N1ckxvY2F0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUMdG91ckxvY2F0aW9uBQNuaWwFDHRvdXJMb2NhdGlvbgFpAQxicmVha0F0dGVtcHQABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OAwkBAiE9AgkAkQMCCQC1CQIFC2N1ckxvY2F0aW9uAgFfBQpsb2NJZHhUeXBlAgFUCQACAQIiWW91ciBkdWNrIGlzIG5vdCBpbiB0aGUgdG91cm5hbWVudAQLc2F2ZWRIZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBA1zYXZlZExvY2F0aW9uCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQCUCgIJAM0IAgkAzQgCBQ1wcm9sb2dBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAULc2F2ZWRIZWFsdGgJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUNc2F2ZWRMb2NhdGlvbgULY3VyTG9jYXRpb24BaQEWZXhpdFRvdXJuYW1lbnRJbnRlcm5hbAELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg1BY2Nlc3MgZGVuaWVkBAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAULc2F2ZWRIZWFsdGgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ1zYXZlZExvY2F0aW9uBQNuaWwHAWkBFGV4aXREZWxpdmVyeUludGVybmFsAQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEAWUJARJleGl0RGVsaXZlcnlDb21tb24DBQtkdWNrQXNzZXRJZAcAAAkAlAoCCQDOCAIIBQFlAl8xCAUBZQJfMgcBaQEQYXV0b0V4aXREZWxpdmVyeQILZHVja0Fzc2V0SWQFbmV3SFADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg1BY2Nlc3MgZGVuaWVkBAFlCQESZXhpdERlbGl2ZXJ5Q29tbW9uAwULZHVja0Fzc2V0SWQGBQVuZXdIUAkAlAoCCAUBZQJfMQkAlAoCCAUBZQJfMwgFAWUCXzQBaQEOcHJlcGFyZVJvYmJlcnkCB21lc3NhZ2UDc2lnBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAZ3bGdBbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUKd2xnQXNzZXRJZAkAAgECFVdMR09MRCBwYXltZW50cyBvbmx5IQQFcGFydHMJALUJAgkAsAkBBQdtZXNzYWdlAgF8AwkBAiE9AgkAkAMBBQVwYXJ0cwACCQACAQIUV3JvbmcgbWVzc2FnZSBmb3JtYXQEC2R1Y2tBc3NldElkCQCRAwIFBXBhcnRzAAADCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh5wcmVwYXJlUm9iYmVyeV9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIccHJlcGFyZVJvYmJlcnlfY2hlY2tEZWxpdmVyeQQHcm9iQ29zdAgJAQ5nZXRSb2JiZXJ5RGF0YQIFBHRoaXMFC2R1Y2tBc3NldElkAl8xAwkAZgIFB3JvYkNvc3QFBndsZ0FtdAkAAgEJAKwCAgkArAICCQCsAgICCFBheW1lbnQgCQCkAwEFBndsZ0FtdAIMIDwgcmVxdWlyZWQgCQCkAwEFB3JvYkNvc3QECmNhbmRpZGF0ZXMJALUJAgkAkQMCBQVwYXJ0cwABAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlkdWNrU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAAABApsb2NrZWRMYW5kCQELdmFsdWVPckVsc2UCCQCiCAEJARNrZXlMb2NrZWRMYW5kQnlEdWNrAQULZHVja0Fzc2V0SWQCAAQHbGFuZEVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQUKbG9ja2VkTGFuZAAAAwMJAQIhPQIFCWR1Y2tTdGF0ZQULZHVja0lkeEZyZWUJAGYCBQdsYW5kRVRBBQNub3cHCQACAQkArAICAidZb3UgYWxyZWFkeSBzdGFydGVkIHJvYmJpbmcsIHdhaXQgdGlsbCAJAKQDAQUHbGFuZEVUQQoBB2NoZWNrZXICA2FjYwtsYW5kQXNzZXRJZAQFc3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUxhbmRSb2JiZXJ5U3RhdGUBBQtsYW5kQXNzZXRJZAAABAtjb29sZG93bkVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQULbGFuZEFzc2V0SWQAAAMJAGYCBQVzdGF0ZQkAkAMBBRBsYW5kUm9iQ29vbGRvd25zCQACAQINSW52YWxpZCBzdGF0ZQMJAGYCBQNub3cFC2Nvb2xkb3duRVRBBApzdGFrZWRUaW1lCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAMJAGcCAAAFCnN0YWtlZFRpbWUFA2FjYwQBYQkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAFkCQC1CQIIBQFhC2Rlc2NyaXB0aW9uAgFfBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAxwcm9kdWN0aXZpdHkJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBAlkZWx0YVRpbWUJAGUCBQNub3cFCnN0YWtlZFRpbWUECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUMcHJvZHVjdGl2aXR5BQZwaWVjZXMFCURBWU1JTExJUwMJAGYCBQ5NSU5fUkVTX1RPX1JPQgUIYXZhaWxSZXMFA2FjYwkAzQgCBQNhY2MFC2xhbmRBc3NldElkBQNhY2MECGZpbHRlcmVkCgACJGwFCmNhbmRpZGF0ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2NoZWNrZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDCQAAAgkAkAMBBQhmaWx0ZXJlZAAACQACAQIZTm8gY2FuZGlkYXRlcyBmb3Igcm9iYmVyeQQGcm5kSWR4CQEPZ2V0UmFuZG9tTnVtYmVyAwkAkAMBBQhmaWx0ZXJlZAUGaGVpZ2h0CQDLAQIFA3NpZwgFAWkNdHJhbnNhY3Rpb25JZAQLbGFuZEFzc2V0SWQJAJEDAgUIZmlsdGVyZWQFBnJuZElkeAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJARNrZXlMYW5kUm9iYmVyeVN0YXRlAQULbGFuZEFzc2V0SWQFDHJvYklkeExvY2tlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleUxhbmRDb29sZG93bkVUQQEFC2xhbmRBc3NldElkCQBkAgUDbm93CQCRAwIFEGxhbmRSb2JDb29sZG93bnMFDHJvYklkeExvY2tlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAUQZHVja0lkeFByZXBhcmluZwkAzAgCCQELU3RyaW5nRW50cnkCCQETa2V5TG9ja2VkTGFuZEJ5RHVjawEFC2R1Y2tBc3NldElkBQtsYW5kQXNzZXRJZAUDbmlsBQ1wcm9sb2dBY3Rpb25zBQtsYW5kQXNzZXRJZAFpAQdyb2JMYW5kAgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAlAoCCQDNCAIFDXByb2xvZ0FjdGlvbnMJAQxJbnRlZ2VyRW50cnkCCQEYa2V5TGFzdFJvYmJlcnlUaW1lQnlEdWNrAQULZHVja0Fzc2V0SWQFA25vdwAAAWkBDmFjY2VwdERlbGl2ZXJ5AAMJAQEhAQURS1NfQUxMT1dfREVMSVZFUlkJAAIBAh9EZWxpdmVyeSBmZWF0dXJlIGlzIHR1cm5lZCBvZmYhBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlmdW5kVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BQ9kZWxpdmVyeUZ1bmRLZXkAAAQLbG9ja2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BRFkZWxpdmVyeUxvY2tlZEtleQAAAwkAZgIFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQkAZQIFCWZ1bmRUb3RhbAULbG9ja2VkVG90YWwJAAIBCQCsAgIJAKwCAgkArAICAiBEZWxpdmVyeSBpcyBub3QgYXZhaWxhYmxlLCBmdW5kPQkBCmZpeGVkUG9pbnQCBQlmdW5kVG90YWwABgIJLCBsb2NrZWQ9CQEKZml4ZWRQb2ludAIFC2xvY2tlZFRvdGFsAAYEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECGRlbGF5RVRBCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQULZHVja0Fzc2V0SWQAAAMJAGYCBQhkZWxheUVUQQUDbm93CQACAQkArAICAipEZWxpdmVyeSBpcyBmb3JiaWRkZW4gZm9yIHlvdXIgZHVjayB1bnRpbCAJAKQDAQUIZGVsYXlFVEEDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh5hY2NlcHREZWxpdmVyeV9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIcYWNjZXB0RGVsaXZlcnlfY2hlY2tEZWxpdmVyeQQObmV3TG9ja2VkVG90YWwJAQVhc0ludAEJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhR1cGRhdGVEZWxpdmVyeUxvY2tlZAkAzAgCCQBkAgULbG9ja2VkVG90YWwFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUDbmlsBQNuaWwECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OBBBkZWxpdmVyeUxvY2F0aW9uCQCsAgIJAKQDAQUDbm93AgRfRF8wCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQFCWN1ckhlYWx0aAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQVtYXhIUAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQtjdXJMb2NhdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCBQljdXJMb2NLZXkFEGRlbGl2ZXJ5TG9jYXRpb24FA25pbAUNcHJvbG9nQWN0aW9ucwkAlAoCBRBkZWxpdmVyeUxvY2F0aW9uBQ5uZXdMb2NrZWRUb3RhbACO+7Cf", "height": 2791301, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2Qsrt9a5ETVQubeR9qp3F7mWn5gPu26DwEZdaLqFSBLQ Next: 9VRFbgU7DEesCrNx5CzXQJKAc5iqakarZNoenLCrzBFF Diff:
OldNewDifferences
19881988 }
19891989
19901990
1991-func kr (A) = {
1991+func kr (A,ks,iV) = {
19921992 let jq = split(valueOrElse(getString(bJ(A)), aJ), "_")
19931993 let ax = lastBlock.timestamp
19941994 let ci = parseIntValue(jq[bl])
19951995 let cj = parseIntValue(jq[bn])
19961996 let jv = valueOrErrorMessage(getString(bG(A)), "NFT duck is orphaned")
1997- let ks = z(A)
1998- let kt = getIntegerValue(ks)
1999- let ku = if ((cj >= 3))
1997+ let kt = z(A)
1998+ let ku = getIntegerValue(kt)
1999+ let kv = if ((cj >= 3))
20002000 then {
2001- let kv = invoke(dc, "sendDeliveryReward", [jv], nil)
2002- if ((kv == kv))
2001+ let kw = invoke(dc, "sendDeliveryReward", [jv], nil)
2002+ if ((kw == kw))
20032003 then nil
20042004 else throw("Strict value is not equal to itself.")
20052005 }
2006- else if ((ax > (ci + aN)))
2006+ else if (if (if (ks)
2007+ then (iV > 0)
2008+ else false)
2009+ then (ax > (ci + aN))
2010+ else false)
20072011 then throw("Your duck is still on delivery mission")
20082012 else {
2009- let kw = valueOrElse(getInteger(dc, bO), 0)
2010- let kx = invoke(dc, "updateDeliveryLocked", [(kw - aM)], nil)
2011- if ((kx == kx))
2012- then if ((0 >= kt))
2013+ let kx = valueOrElse(getInteger(dc, bO), 0)
2014+ let ky = invoke(dc, "updateDeliveryLocked", [(kx - aM)], nil)
2015+ if ((ky == ky))
2016+ then if ((0 >= ku))
20132017 then nil
20142018 else [IntegerEntry(T(A), (ci + a))]
20152019 else throw("Strict value is not equal to itself.")
20162020 }
2017- let ky = getIntegerValue(J(A))
2018- let kz = getStringValue(K(A))
2019- $Tuple4(ku, [IntegerEntry(ks, ky), StringEntry(bJ(A), kz)], kz, ky)
2020- }
2021-
2022-
2023-func kA (kB,al,kC,c,kD,kE) = {
2021+ let kz = getIntegerValue(J(A))
2022+ let kA = getStringValue(K(A))
2023+ $Tuple4(kv, [IntegerEntry(kt, kz), StringEntry(bJ(A), kA)], kA, kz)
2024+ }
2025+
2026+
2027+func kB (kC,al,kD,c,kE,kF) = {
20242028 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
20252029 if (kp(A))
20262030 then throw("mergeInternal_checkTournament")
20272031 else if (kq(A))
20282032 then throw("mergeInternal_checkDelivery")
20292033 else {
2030- func kF (eR,P) = {
2034+ func kG (eR,P) = {
20312035 let js = value(assetInfo(fromBase58String(P)))
20322036 let jt = br(P)
20332037 let ju = valueOrErrorMessage(getInteger(jt), (("NFT " + js.name) + " is not staked"))
20432047 then throw("Lands should be on the same continent to merge")
20442048 else {
20452049 let dI = jw[di]
2046- let kG = eR._1
2047- let gK = valueOrErrorMessage(indexOf(kG, dI), "You haven't passed all the lands needed")
2048- let kH = (take(kG, gK) + drop(kG, (gK + 1)))
2050+ let kH = eR._1
2051+ let gK = valueOrErrorMessage(indexOf(kH, dI), "You haven't passed all the lands needed")
2052+ let kI = (take(kH, gK) + drop(kH, (gK + 1)))
20492053 let ji = dH(dI)
2050- let kI = (eR._2 + valueOrElse(getInteger(bs(aE, P)), 0))
2054+ let kJ = (eR._2 + valueOrElse(getInteger(bs(aE, P)), 0))
20512055 let ia = valueOrElse(getInteger(by(P)), 0)
2052- let kJ = {
2056+ let kK = {
20532057 let cy = dI
20542058 if (("S" == cy))
20552059 then 3
20612065 then 6
20622066 else throw("Only S, M, L, XL can merge")
20632067 }
2064- if ((ia != kJ))
2068+ if ((ia != kK))
20652069 then throw("All lands should be maxed to merge")
20662070 else {
20672071 let et = jw[dh]
20742078 let hZ = (ji / cF)
20752079 let jG = gO(split(eR._4, "_"), gG, gQ, hZ, jy)
20762080 let fb = gE(eR._6, gG, hZ, -1)
2077- let kK = gE(eR._10, gG, hZ, -1)
2081+ let kL = gE(eR._10, gG, hZ, -1)
20782082 let hu = gE(eR._9, gG, hZ, 1)
2079- let kL = eR._7
2080- let da = indexOf(kL, P)
2083+ let kM = eR._7
2084+ let da = indexOf(kM, P)
20812085 if (!(isDefined(da)))
20822086 then throw(("Your staked lands don't contain " + P))
20832087 else {
2084- let kM = bq(P)
2085- let kN = valueOrElse(getString(kM), "")
2086- $Tuple10(kH, kI, dt, jG, ((((((((((((eR._5 :+ DeleteEntry(br(P))) :+ DeleteEntry(bu(aC, P, c))) :+ DeleteEntry(es(et))) :+ DeleteEntry(bo(P))) :+ DeleteEntry(by(P))) :+ DeleteEntry(eu(P, c))) :+ DeleteEntry(bs(aE, P))) :+ DeleteEntry(ev(et))) :+ DeleteEntry(bx(P))) :+ DeleteEntry(kM)) :+ Burn(fromBase58String(P), 1)) ++ (if ((kN != ""))
2087- then [DeleteEntry(eq(kN))]
2088- else nil)), fb, removeByIndex(kL, value(da)), (eR._8 + ji), hu, kK)
2088+ let kN = bq(P)
2089+ let kO = valueOrElse(getString(kN), "")
2090+ $Tuple10(kI, kJ, dt, jG, ((((((((((((eR._5 :+ DeleteEntry(br(P))) :+ DeleteEntry(bu(aC, P, c))) :+ DeleteEntry(es(et))) :+ DeleteEntry(bo(P))) :+ DeleteEntry(by(P))) :+ DeleteEntry(eu(P, c))) :+ DeleteEntry(bs(aE, P))) :+ DeleteEntry(ev(et))) :+ DeleteEntry(bx(P))) :+ DeleteEntry(kN)) :+ Burn(fromBase58String(P), 1)) ++ (if ((kO != ""))
2091+ then [DeleteEntry(eq(kO))]
2092+ else nil)), fb, removeByIndex(kM, value(da)), (eR._8 + ji), hu, kL)
20892093 }
20902094 }
20912095 }
20962100 let hL = bI(A)
20972101 let io = hK(hL)
20982102 let gF = split(valueOrElse(getString(dr()), "0_0_0_0_0_0"), "_")
2099- let kO = du(c)
2100- let kP = getString(kO)
2101- let kQ = if (isDefined(kP))
2102- then split_51C(value(kP), "_")
2103+ let kP = du(c)
2104+ let kQ = getString(kP)
2105+ let kR = if (isDefined(kQ))
2106+ then split_51C(value(kQ), "_")
21032107 else nil
2104- let kR = split(value(assetInfo(fromBase58String(kD[0]))).description, "_")[dk]
2105- let kS = split(valueOrElse(getString(ds(kR)), "0_0_0_0_0_0"), "_")
2108+ let kS = split(value(assetInfo(fromBase58String(kE[0]))).description, "_")[dk]
2109+ let kT = split(valueOrElse(getString(ds(kS)), "0_0_0_0_0_0"), "_")
21062110 let fc = {
2107- let eT = kD
2111+ let eT = kE
21082112 let eU = size(eT)
2109- let eV = $Tuple10(kC, 0, "", io[bi], nil, gF, kQ, 0, split("0_0_0_0_0_0", "_"), kS)
2113+ let eV = $Tuple10(kD, 0, "", io[bi], nil, gF, kR, 0, split("0_0_0_0_0_0", "_"), kT)
21102114 func eW (eX,eY) = if ((eY >= eU))
21112115 then eX
2112- else kF(eX, eT[eY])
2116+ else kG(eX, eT[eY])
21132117
21142118 func eZ (eX,eY) = if ((eY >= eU))
21152119 then eX
21192123 }
21202124 let dt = fc._3
21212125 let ho = valueOrErrorMessage(indexOf(aP, dt), ("Unknown continent: " + dt))
2122- let gN = ht(fc._9, (dH(kB) / cF))
2126+ let gN = ht(fc._9, (dH(kC) / cF))
21232127 let iM = valueOrElse(getInteger(ep()), (eo + 1))
2124- let kT = toString(iM)
2125- let iN = Issue(eG(kT, kB), makeString([kT, kB, gN, dt], "_"), 1, 0, false)
2128+ let kU = toString(iM)
2129+ let iN = Issue(eG(kU, kC), makeString([kU, kC, gN, dt], "_"), 1, 0, false)
21262130 let bp = calculateAssetId(iN)
2127- let kU = toBase58String(bp)
2128- let jS = makeString(fd((kE > 0), split(io[bj], "_"), kE), "_")
2129- let kV = dv(c)
2130- let kW = valueOrElse(getInteger(kV), 0)
2131+ let kV = toBase58String(bp)
2132+ let jS = makeString(fd((kF > 0), split(io[bj], "_"), kF), "_")
2133+ let kW = dv(c)
2134+ let kX = valueOrElse(getInteger(kW), 0)
21312135 $Tuple2((((((((((((((((fc._5 :+ (if ((size(fc._7) > 0))
2132- then StringEntry(kO, makeString_11C(fc._7, "_"))
2133- else DeleteEntry(kO))) :+ IntegerEntry(kV, if ((fc._8 > kW))
2136+ then StringEntry(kP, makeString_11C(fc._7, "_"))
2137+ else DeleteEntry(kP))) :+ IntegerEntry(kW, if ((fc._8 > kX))
21342138 then 0
2135- else (kW - fc._8))) :+ IntegerEntry(ep(), (iM + 1))) :+ iN) :+ StringEntry(es(kT), kU)) :+ StringEntry(bo(kU), c)) :+ StringEntry(ev(kT), c)) :+ IntegerEntry(bs(aE, kU), fc._2)) :+ IntegerEntry(by(kU), al)) :+ IntegerEntry(eu(kU, c), al)) :+ StringEntry(hL, makeString([io[bh], fc._4, jS, io[bk]], ":"))) :+ StringEntry(dr(), makeString(fc._6, "_"))) :+ StringEntry(ds(dt), makeString(fc._10, "_"))) :+ StringEntry(bJ(A), makeString([dt, "L", kU], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bp)), kU)
2139+ else (kX - fc._8))) :+ IntegerEntry(ep(), (iM + 1))) :+ iN) :+ StringEntry(es(kU), kV)) :+ StringEntry(bo(kV), c)) :+ StringEntry(ev(kU), c)) :+ IntegerEntry(bs(aE, kV), fc._2)) :+ IntegerEntry(by(kV), al)) :+ IntegerEntry(eu(kV, c), al)) :+ StringEntry(hL, makeString([io[bh], fc._4, jS, io[bk]], ":"))) :+ StringEntry(dr(), makeString(fc._6, "_"))) :+ StringEntry(ds(dt), makeString(fc._10, "_"))) :+ StringEntry(bJ(A), makeString([dt, "L", kV], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bp)), kV)
21362140 }
21372141 }
21382142
21392143
2140-func kX (c,kD) = kA("M", 3, "SSSS", c, kD, 0)
2141-
2142-
2143-func kY (c,kD) = kA("L", 4, "SMM", c, kD, (cA * 4))
2144-
2145-
2146-func kZ (c,kD) = kA("XL", 5, "SSSML", c, kD, (cA * 47))
2147-
2148-
2149-func la (c,kD) = kA("XXL", 6, "LXL", c, kD, (cA * 54))
2150-
2151-
2152-func lb (c,kD) = {
2153- let cy = size(kD)
2144+func kY (c,kE) = kB("M", 3, "SSSS", c, kE, 0)
2145+
2146+
2147+func kZ (c,kE) = kB("L", 4, "SMM", c, kE, (cA * 4))
2148+
2149+
2150+func la (c,kE) = kB("XL", 5, "SSSML", c, kE, (cA * 47))
2151+
2152+
2153+func lb (c,kE) = kB("XXL", 6, "LXL", c, kE, (cA * 54))
2154+
2155+
2156+func lc (c,kE) = {
2157+ let cy = size(kE)
21542158 if ((4 == cy))
2155- then kX(c, kD)
2159+ then kY(c, kE)
21562160 else if ((3 == cy))
2157- then kY(c, kD)
2161+ then kZ(c, kE)
21582162 else if ((5 == cy))
2159- then kZ(c, kD)
2163+ then la(c, kE)
21602164 else if ((2 == cy))
2161- then la(c, kD)
2165+ then lb(c, kE)
21622166 else throw("Unknown merge")
21632167 }
21642168
21652169
2166-func lc (bL) = {
2167- let ld = getString(bH(bL))
2170+func ld (bL) = {
2171+ let le = getString(bH(bL))
21682172 if (if (cv)
2169- then isDefined(ld)
2173+ then isDefined(le)
21702174 else false)
21712175 then {
2172- let A = value(ld)
2173- let le = bJ(A)
2174- let cf = split(valueOrElse(getString(le), aJ), "_")
2176+ let A = value(le)
2177+ let lf = bJ(A)
2178+ let cf = split(valueOrElse(getString(lf), aJ), "_")
21752179 let ci = parseIntValue(cf[bl])
21762180 if (if ((cf[bm] != "D"))
21772181 then true
21782182 else (lastBlock.timestamp > (ci + aN)))
21792183 then nil
21802184 else {
2181- let ks = z(A)
2185+ let kt = z(A)
21822186 if ((parseIntValue(cf[bn]) >= 3))
21832187 then {
2184- let kv = invoke(dc, "sendDeliveryReward", [bL], nil)
2185- if ((kv == kv))
2188+ let kw = invoke(dc, "sendDeliveryReward", [bL], nil)
2189+ if ((kw == kw))
21862190 then nil
21872191 else throw("Strict value is not equal to itself.")
21882192 }
21892193 else (({
2190- let kw = valueOrElse(getInteger(dc, bO), 0)
2191- let kx = invoke(dc, "updateDeliveryLocked", [(kw - aM)], nil)
2192- if ((kx == kx))
2193- then if ((0 >= getIntegerValue(ks)))
2194+ let kx = valueOrElse(getInteger(dc, bO), 0)
2195+ let ky = invoke(dc, "updateDeliveryLocked", [(kx - aM)], nil)
2196+ if ((ky == ky))
2197+ then if ((0 >= getIntegerValue(kt)))
21942198 then nil
21952199 else {
2196- let lf = invoke(this, "saveInteger", [T(A), (ci + a)], nil)
2197- if ((lf == lf))
2200+ let lg = invoke(this, "saveInteger", [T(A), (ci + a)], nil)
2201+ if ((lg == lg))
21982202 then nil
21992203 else throw("Strict value is not equal to itself.")
22002204 }
22012205 else throw("Strict value is not equal to itself.")
2202- } :+ IntegerEntry(ks, getIntegerValue(J(A)))) :+ StringEntry(le, getStringValue(K(A))))
2206+ } :+ IntegerEntry(kt, getIntegerValue(J(A)))) :+ StringEntry(lf, getStringValue(K(A))))
22032207 }
22042208 }
22052209 else nil
22062210 }
22072211
22082212
2209-func lg (gK) = if (if ((gK.originCaller != db))
2213+func lh (gK) = if (if ((gK.originCaller != db))
22102214 then valueOrElse(getBoolean(dK()), false)
22112215 else false)
22122216 then throw("Contracts are under maintenance")
22132217 else {
22142218 let bL = toString(gK.originCaller)
2215- (lc(bL) :+ StringEntry(dL(bL), toBase58String(gK.transactionId)))
2219+ (ld(bL) :+ StringEntry(dL(bL), toBase58String(gK.transactionId)))
22162220 }
22172221
22182222
2219-func lh (gK) = if (if ((gK.originCaller != db))
2223+func li (gK) = if (if ((gK.originCaller != db))
22202224 then valueOrElse(getBoolean(dK()), false)
22212225 else false)
22222226 then throw("Contracts are under maintenance")
22242228
22252229
22262230 @Callable(gK)
2227-func constructorV1 (li) = if ((gK.caller != this))
2231+func constructorV1 (lj) = if ((gK.caller != this))
22282232 then throw("Permission denied")
2229- else [StringEntry(cV(), li)]
2233+ else [StringEntry(cV(), lj)]
22302234
22312235
22322236
22382242
22392243
22402244 @Callable(gK)
2241-func setBlocked (lj) = if ((gK.caller != this))
2245+func setBlocked (lk) = if ((gK.caller != this))
22422246 then throw("permission denied")
2243- else [BooleanEntry(dK(), lj)]
2247+ else [BooleanEntry(dK(), lk)]
22442248
22452249
22462250
22472251 @Callable(gK)
22482252 func stakeLand () = {
2249- let lk = lg(gK)
2253+ let ll = lh(gK)
22502254 if ((size(gK.payments) != 1))
22512255 then throw("Exactly one payment required")
22522256 else {
2253- let ll = value(gK.payments[0])
2254- let bp = value(ll.assetId)
2257+ let lm = value(gK.payments[0])
2258+ let bp = value(lm.assetId)
22552259 let cM = toString(gK.caller)
2256- if ((ll.amount != 1))
2260+ if ((lm.amount != 1))
22572261 then throw((("NFT " + aC) + " token should be attached as payment"))
22582262 else {
22592263 let js = value(assetInfo(bp))
22622266 else if (!(contains(js.name, aC)))
22632267 then throw((("Only NFT " + aC) + " tokens are accepted"))
22642268 else {
2265- let lm = drop(js.name, 4)
2266- let et = if (contains(lm, "XXL"))
2267- then dropRight(lm, 3)
2268- else if (contains(lm, "XL"))
2269- then dropRight(lm, 2)
2270- else dropRight(lm, 1)
2269+ let ln = drop(js.name, 4)
2270+ let et = if (contains(ln, "XXL"))
2271+ then dropRight(ln, 3)
2272+ else if (contains(ln, "XL"))
2273+ then dropRight(ln, 2)
2274+ else dropRight(ln, 1)
22712275 if (!(isDefined(parseInt(et))))
22722276 then throw(("Cannot parse land number from " + js.name))
22732277 else {
22812285 let ji = dH(jw[di])
22822286 let hZ = (ji / cF)
22832287 let fb = gL(gG, hZ, 1)
2284- let ln = ds(jw[dk])
2285- let kS = split(valueOrElse(getString(ln), "0_0_0_0_0_0"), "_")
2286- let lo = makeString(gE(kS, gG, hZ, 1), "_")
2287- let kO = du(cM)
2288- let kP = getString(kO)
2289- let kL = if (isDefined(kP))
2290- then split_51C(value(kP), "_")
2288+ let lo = ds(jw[dk])
2289+ let kT = split(valueOrElse(getString(lo), "0_0_0_0_0_0"), "_")
2290+ let lp = makeString(gE(kT, gG, hZ, 1), "_")
2291+ let kP = du(cM)
2292+ let kQ = getString(kP)
2293+ let kM = if (isDefined(kQ))
2294+ then split_51C(value(kQ), "_")
22912295 else nil
2292- if (containsElement(kL, P))
2296+ if (containsElement(kM, P))
22932297 then throw(("Your staked lands already contain " + P))
2294- else if ((size(kL) >= aG))
2298+ else if ((size(kM) >= aG))
22952299 then throw((("Your already staked max (" + toString(aG)) + ") lands"))
22962300 else {
22972301 let ia = valueOrElse(getInteger(by(P)), 0)
2298- let kV = dv(cM)
2299- let lp = valueOrElse(getInteger(kV), 0)
2300- let lq = invoke(de, "onStakeUnstakeLand", [cM], nil)
2301- $Tuple2(([IntegerEntry(jt, lastBlock.timestamp), IntegerEntry(bu(aC, P, cM), lastBlock.timestamp), StringEntry(kO, makeString_11C((kL :+ P), "_")), IntegerEntry(kV, (lp + ji)), StringEntry(bo(P), cM), StringEntry(ev(et), cM), IntegerEntry(eu(P, cM), ia), StringEntry(dr(), fb), StringEntry(ln, lo)] ++ lk), lq)
2302+ let kW = dv(cM)
2303+ let lq = valueOrElse(getInteger(kW), 0)
2304+ let lr = invoke(de, "onStakeUnstakeLand", [cM], nil)
2305+ $Tuple2(([IntegerEntry(jt, lastBlock.timestamp), IntegerEntry(bu(aC, P, cM), lastBlock.timestamp), StringEntry(kP, makeString_11C((kM :+ P), "_")), IntegerEntry(kW, (lq + ji)), StringEntry(bo(P), cM), StringEntry(ev(et), cM), IntegerEntry(eu(P, cM), ia), StringEntry(dr(), fb), StringEntry(lo, lp)] ++ ll), lr)
23022306 }
23032307 }
23042308 }
23112315
23122316 @Callable(gK)
23132317 func unstakeLand (jo) = {
2314- let lk = lg(gK)
2318+ let ll = lh(gK)
23152319 if ((size(gK.payments) != 0))
23162320 then throw("No payments required")
23172321 else {
23192323 let ga = jm(c, eA, jo)
23202324 let P = ga._2
23212325 let jw = ga._3
2322- let kO = du(c)
2326+ let kP = du(c)
23232327 let gG = gM(jw[dj])
23242328 let ji = dH(jw[di])
23252329 let hZ = (ji / cF)
23262330 let fb = gL(gG, hZ, -1)
2327- let ln = ds(jw[dk])
2328- let kS = split(valueOrElse(getString(ln), "0_0_0_0_0_0"), "_")
2329- let lo = makeString(gE(kS, gG, hZ, -1), "_")
2331+ let lo = ds(jw[dk])
2332+ let kT = split(valueOrElse(getString(lo), "0_0_0_0_0_0"), "_")
2333+ let lp = makeString(gE(kT, gG, hZ, -1), "_")
23302334 let jT = jJ(c, P, ji, eA)
2331- let kL = split_51C(valueOrElse(getString(kO), ""), "_")
2332- let da = indexOf(kL, P)
2335+ let kM = split_51C(valueOrElse(getString(kP), ""), "_")
2336+ let da = indexOf(kM, P)
23332337 if (!(isDefined(da)))
23342338 then throw(("Your staked lands don't contain " + P))
23352339 else {
23362340 let ax = lastBlock.timestamp
2337- let lr = valueOrElse(getInteger(dd, bK(c)), 0)
2338- if ((lr >= ax))
2339- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lr)))
2341+ let ls = valueOrElse(getInteger(dd, bK(c)), 0)
2342+ if ((ls >= ax))
2343+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(ls)))
23402344 else {
2341- let ls = (valueOrElse(getInteger(de, b(c)), 0) + cB)
2342- if ((ls > ax))
2343- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(ls)))
2345+ let lt = (valueOrElse(getInteger(de, b(c)), 0) + cB)
2346+ if ((lt > ax))
2347+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lt)))
23442348 else {
2345- let kV = dv(c)
2346- let kW = valueOrElse(getInteger(kV), 0)
2347- let lt = if ((ji > kW))
2349+ let kW = dv(c)
2350+ let kX = valueOrElse(getInteger(kW), 0)
2351+ let lu = if ((ji > kX))
23482352 then 0
2349- else (kW - ji)
2350- let lq = invoke(de, "onStakeUnstakeLand", [c], nil)
2351- $Tuple2(([ScriptTransfer(gK.caller, 1, fromBase58String(P)), DeleteEntry(br(P)), DeleteEntry(bu(aC, P, c)), StringEntry(dr(), fb), StringEntry(ln, lo), StringEntry(jT._2, makeString(jT._3, ":")), if ((size(kL) > 1))
2352- then StringEntry(kO, makeString_11C(removeByIndex(kL, value(da)), "_"))
2353- else DeleteEntry(kO), IntegerEntry(kV, lt)] ++ lk), lq)
2353+ else (kX - ji)
2354+ let lr = invoke(de, "onStakeUnstakeLand", [c], nil)
2355+ $Tuple2(([ScriptTransfer(gK.caller, 1, fromBase58String(P)), DeleteEntry(br(P)), DeleteEntry(bu(aC, P, c)), StringEntry(dr(), fb), StringEntry(lo, lp), StringEntry(jT._2, makeString(jT._3, ":")), if ((size(kM) > 1))
2356+ then StringEntry(kP, makeString_11C(removeByIndex(kM, value(da)), "_"))
2357+ else DeleteEntry(kP), IntegerEntry(kW, lu)] ++ ll), lr)
23542358 }
23552359 }
23562360 }
23612365
23622366 @Callable(gK)
23632367 func stakeDuck () = {
2364- let lk = lg(gK)
2368+ let ll = lh(gK)
23652369 if ((size(gK.payments) != 1))
23662370 then throw("Exactly one payment required")
23672371 else {
2368- let ll = value(gK.payments[0])
2369- let bp = value(ll.assetId)
2372+ let lm = value(gK.payments[0])
2373+ let bp = value(lm.assetId)
23702374 let cM = toString(gK.caller)
2371- if ((ll.amount != 1))
2375+ if ((lm.amount != 1))
23722376 then throw((("NFT " + aD) + " token should be attached as payment"))
23732377 else {
23742378 let js = value(assetInfo(bp))
23792383 else if (!(contains(js.name, aD)))
23802384 then throw((("Only NFT " + aD) + " tokens are accepted"))
23812385 else {
2382- let lu = toBase58String(bp)
2383- let jt = br(lu)
2386+ let lv = toBase58String(bp)
2387+ let jt = br(lv)
23842388 if (isDefined(getInteger(jt)))
23852389 then throw((("NFT " + js.name) + " is already staked"))
23862390 else if (isDefined(getString(bH(cM))))
23872391 then throw(("You already staked one duck: " + js.name))
23882392 else {
2389- let le = bJ(lu)
2390- let cd = getString(le)
2391- let hL = bI(lu)
2392- let lv = getString(hL)
2393- let jb = z(lu)
2394- let jc = ag(valueOrElse(getInteger(D(lu)), 0))
2395- let kt = valueOrElse(getInteger(jb), jc)
2396- ([IntegerEntry(jt, lastBlock.timestamp), IntegerEntry(bu(aD, toBase58String(bp), cM), lastBlock.timestamp), StringEntry(bG(lu), cM), StringEntry(bH(cM), lu)] ++ (if (isDefined(cd))
2393+ let lf = bJ(lv)
2394+ let cd = getString(lf)
2395+ let hL = bI(lv)
2396+ let lw = getString(hL)
2397+ let jb = z(lv)
2398+ let jc = ag(valueOrElse(getInteger(D(lv)), 0))
2399+ let ku = valueOrElse(getInteger(jb), jc)
2400+ ([IntegerEntry(jt, lastBlock.timestamp), IntegerEntry(bu(aD, toBase58String(bp), cM), lastBlock.timestamp), StringEntry(bG(lv), cM), StringEntry(bH(cM), lv)] ++ (if (isDefined(cd))
23972401 then nil
2398- else ([StringEntry(le, aJ)] ++ (if (isDefined(lv))
2402+ else ([StringEntry(lf, aJ)] ++ (if (isDefined(lw))
23992403 then nil
2400- else (([StringEntry(hL, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jb, kt)) ++ lk)))))
2404+ else (([StringEntry(hL, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jb, ku)) ++ ll)))))
24012405 }
24022406 }
24032407 }
24072411
24082412
24092413 @Callable(gK)
2410-func unstakeDuck (lu) = {
2411- let lk = lg(gK)
2414+func unstakeDuck (lv) = {
2415+ let ll = lh(gK)
24122416 if ((size(gK.payments) != 0))
24132417 then throw("No payments required")
24142418 else {
2415- let bp = fromBase58String(lu)
2419+ let bp = fromBase58String(lv)
24162420 let cM = toString(gK.caller)
24172421 let js = value(assetInfo(bp))
2418- let jt = br(lu)
2422+ let jt = br(lv)
24192423 if (!(isDefined(getInteger(jt))))
24202424 then throw((("NFT " + js.name) + " is not staked"))
24212425 else if (!(isDefined(getString(bH(cM)))))
24222426 then throw((("The duck " + js.name) + " is not staked"))
24232427 else {
2424- let jv = valueOrErrorMessage(getString(bG(lu)), (("NFT " + js.name) + " is orphaned"))
2428+ let jv = valueOrErrorMessage(getString(bG(lv)), (("NFT " + js.name) + " is orphaned"))
24252429 if ((jv != cM))
24262430 then throw("Staked NFT is not yours")
2427- else if (kp(lu))
2431+ else if (kp(lv))
24282432 then throw("unstakeDuck_checkTournament")
2429- else if (kq(lu))
2433+ else if (kq(lv))
24302434 then throw("unstakeDuck_checkDelivery")
24312435 else {
2432- let jb = z(lu)
2433- let jc = ag(valueOrElse(getInteger(D(lu)), 0))
2436+ let jb = z(lv)
2437+ let jc = ag(valueOrElse(getInteger(D(lv)), 0))
24342438 let as = valueOrElse(getInteger(jb), jc)
24352439 if ((jc > as))
24362440 then throw((("Please heal your duck to " + toString(jc)) + "hp before unstaking"))
2437- else ([ScriptTransfer(gK.caller, 1, bp), DeleteEntry(jt), DeleteEntry(jb), DeleteEntry(bJ(lu)), DeleteEntry(bG(lu)), DeleteEntry(bu(aD, lu, cM)), DeleteEntry(bH(cM))] ++ lk)
2441+ else ([ScriptTransfer(gK.caller, 1, bp), DeleteEntry(jt), DeleteEntry(jb), DeleteEntry(bJ(lv)), DeleteEntry(bG(lv)), DeleteEntry(bu(aD, lv, cM)), DeleteEntry(bH(cM))] ++ ll)
24382442 }
24392443 }
24402444 }
24432447
24442448
24452449 @Callable(gK)
2446-func claimRes (eI,lw) = {
2447- let lk = lg(gK)
2450+func claimRes (eI,lx) = {
2451+ let ll = lh(gK)
24482452 if ((size(gK.payments) != 0))
24492453 then throw("No payments required")
24502454 else {
24512455 let c = toString(gK.originCaller)
2452- let fj = jx(c, eI, eA, lw)
2456+ let fj = jx(c, eI, eA, lx)
24532457 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
2454- $Tuple2(((((fj._1 ++ jZ(A, fraction(U, eI, cE))._1) :+ StringEntry(fj._2, makeString(fj._3, ":"))) :+ StringEntry(fj._4, makeString(fj._5, ":"))) ++ lk), fj._3[bi])
2455- }
2456- }
2457-
2458-
2459-
2460-@Callable(gK)
2461-func claimResToWH (eI,lw) = {
2462- let lk = lg(gK)
2458+ $Tuple2(((((fj._1 ++ jZ(A, fraction(U, eI, cE))._1) :+ StringEntry(fj._2, makeString(fj._3, ":"))) :+ StringEntry(fj._4, makeString(fj._5, ":"))) ++ ll), fj._3[bi])
2459+ }
2460+ }
2461+
2462+
2463+
2464+@Callable(gK)
2465+func claimResToWH (eI,lx) = {
2466+ let ll = lh(gK)
24632467 if ((size(gK.payments) != 0))
24642468 then throw("No payments required")
24652469 else {
24662470 let c = toString(gK.originCaller)
2467- let fj = jx(c, eI, ez, lw)
2468- $Tuple2(((((fj._1 ++ kf(c, fraction(U, eI, cE))._1) :+ StringEntry(fj._2, makeString(fj._3, ":"))) :+ StringEntry(fj._4, makeString(fj._5, ":"))) ++ lk), fj._5[aZ])
2471+ let fj = jx(c, eI, ez, lx)
2472+ $Tuple2(((((fj._1 ++ kf(c, fraction(U, eI, cE))._1) :+ StringEntry(fj._2, makeString(fj._3, ":"))) :+ StringEntry(fj._4, makeString(fj._5, ":"))) ++ ll), fj._5[aZ])
24692473 }
24702474 }
24712475
24732477
24742478 @Callable(gK)
24752479 func flight (iQ,iR) = {
2476- let lk = lh(gK)
2480+ let ll = li(gK)
24772481 if ((size(gK.payments) != 0))
24782482 then throw("No payments required")
24792483 else {
24812485 let hp = iP(bL, iQ, iR)
24822486 let iV = hp._1
24832487 let A = hp._2
2484- let le = bJ(A)
2485- let jq = valueOrElse(getString(le), aJ)
2488+ let lf = bJ(A)
2489+ let jq = valueOrElse(getString(lf), aJ)
24862490 let iX = hp._4
24872491 if ((iX == jq))
24882492 then throw("You can't fly to the same location")
24892493 else {
24902494 let cr = split(iX, "_")
2491- let lx = (cr[bm] == "T")
2492- let ly = (cr[bm] == "D")
2495+ let ly = (cr[bm] == "T")
2496+ let lz = (cr[bm] == "D")
24932497 let gx = F(A)
2494- let lz = valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,")
2495- let lA = fk(lz, hp._5)
2496- let lB = lA._1
2497- let lC = lA._2
2498- let lD = if (!(cm(df, jq)))
2498+ let lA = valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,")
2499+ let lB = fk(lA, hp._5)
2500+ let lC = lB._1
2501+ let lD = lB._2
2502+ let lE = if (!(cm(df, jq)))
24992503 then if (!(ck(iX)))
25002504 then cp(jq, iX, 5)
25012505 else if ((iV > 0))
25052509 then if (!(cc(df, iX)))
25062510 then throw("Your duck is taking part in the tournament")
25072511 else {
2508- let lE = parseIntValue(cr[bn])
2509- let lF = split(jq, "_")
2512+ let lF = parseIntValue(cr[bn])
2513+ let lG = split(jq, "_")
25102514 let ce = valueOrElse(getInteger(df, bP), 0)
2511- if ((lE != (parseIntValue(lF[bn]) + 1)))
2515+ if ((lF != (parseIntValue(lG[bn]) + 1)))
25122516 then cp(jq, iX, 7)
25132517 else if ((iV > 0))
25142518 then {
2515- let lG = valueOrElse(getInteger(df, bT(ce, A)), 0)
2516- let lH = if ((lE > lG))
2517- then invoke(df, "saveDuckResult", [A, lE], nil)
2519+ let lH = valueOrElse(getInteger(df, bT(ce, A)), 0)
2520+ let lI = if ((lF > lH))
2521+ then invoke(df, "saveDuckResult", [A, lF], nil)
25182522 else unit
2519- if ((lH == lH))
2523+ if ((lI == lI))
25202524 then $Tuple2(iX, iV)
25212525 else throw("Strict value is not equal to itself.")
25222526 }
25242528 }
25252529 else if (!(ch(jq)))
25262530 then {
2527- let lI = dE(invoke(this, "autoExitDelivery", [A], nil))
2528- if ((lI == lI))
2529- then if (ly)
2530- then lI
2531+ let lJ = dE(invoke(this, "autoExitDelivery", [A, iV], nil))
2532+ if ((lJ == lJ))
2533+ then if (lz)
2534+ then lJ
25312535 else if ((iV > 0))
25322536 then $Tuple2(iX, iV)
2533- else $Tuple2(lI._1, 0)
2537+ else $Tuple2(lJ._1, 0)
25342538 else throw("Strict value is not equal to itself.")
25352539 }
2536- else if (!(ly))
2540+ else if (!(lz))
25372541 then throw("Your duck is taking part in delivery")
25382542 else if (!(ch(iX)))
25392543 then cp(jq, iX, 13)
25402544 else {
2541- let lE = parseIntValue(cr[bn])
2542- let lF = split(jq, "_")
2543- if ((lE != (parseIntValue(lF[bn]) + 1)))
2545+ let lF = parseIntValue(cr[bn])
2546+ let lG = split(jq, "_")
2547+ if ((lF != (parseIntValue(lG[bn]) + 1)))
25442548 then cp(jq, iX, 14)
25452549 else if (if ((iV > 0))
2546- then (3 > lE)
2550+ then (3 > lF)
25472551 else false)
25482552 then $Tuple2(iX, iV)
25492553 else {
2550- let lI = dE(invoke(this, "autoExitDelivery", [A], nil))
2551- if ((lI == lI))
2552- then lI
2554+ let lJ = dE(invoke(this, "autoExitDelivery", [A, iV], nil))
2555+ if ((lJ == lJ))
2556+ then lJ
25532557 else throw("Strict value is not equal to itself.")
25542558 }
25552559 }
2556- let lJ = lD._1
2557- let lK = lD._2
2558- $Tuple2(((([StringEntry(le, lJ), StringEntry(gx, lB), IntegerEntry(z(A), iV)] ++ lk) ++ (if (lC)
2560+ let lK = lE._1
2561+ let lL = lE._2
2562+ $Tuple2(((([StringEntry(lf, lK), StringEntry(gx, lC), IntegerEntry(z(A), iV)] ++ ll) ++ (if (lD)
25592563 then [StringEntry(L(A), "0_0_0_0_0")]
25602564 else nil)) ++ jZ(A, if ((iV > 0))
25612565 then V
25672571
25682572
25692573 @Callable(gK)
2570-func heal (lL,lM,lN) = {
2571- let lk = lg(gK)
2572- if (if (if ((0 > lL))
2573- then true
2574- else (0 > lM))
2574+func heal (lM,lN,lO) = {
2575+ let ll = lh(gK)
2576+ if (if (if ((0 > lM))
25752577 then true
25762578 else (0 > lN))
2579+ then true
2580+ else (0 > lO))
25772581 then throw("Quantity cannot be negative")
25782582 else {
25792583 let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked")
25822586 else if (kq(A))
25832587 then throw("heal_checkDelivery")
25842588 else {
2585- let lO = [lL, lM, lN]
2589+ let lP = [lM, lN, lO]
25862590 let jb = z(A)
25872591 let jc = ag(valueOrElse(getInteger(D(A)), 0))
2588- let lP = valueOrElse(getInteger(jb), jc)
2589- if ((lP >= jc))
2592+ let lQ = valueOrElse(getInteger(jb), jc)
2593+ if ((lQ >= jc))
25902594 then throw((("HP should be < " + toString(jc)) + " to heal"))
25912595 else {
25922596 let hL = bI(A)
25932597 let io = hK(hL)
2594- let lQ = if ((io[bk] == ""))
2598+ let lR = if ((io[bk] == ""))
25952599 then nil
25962600 else split_4C(io[bk], "_")
2597- func lR (eR,co) = {
2601+ func lS (eR,co) = {
25982602 let dA = eR._2
2599- let hg = if ((size(lQ) > dA))
2600- then parseIntValue(lQ[dA])
2603+ let hg = if ((size(lR) > dA))
2604+ then parseIntValue(lR[dA])
26012605 else 0
26022606 if ((3 > dA))
26032607 then {
2604- let lS = lO[dA]
2605- if ((lS > hg))
2608+ let lT = lP[dA]
2609+ if ((lT > hg))
26062610 then throw(((("You have only " + toString(hg)) + " of ") + aO[dA]))
2607- else $Tuple3((eR._1 :+ toString((hg - lS))), (dA + 1), (eR._3 + (parseIntValue(split(co, "_")[aU]) * lS)))
2611+ else $Tuple3((eR._1 :+ toString((hg - lT))), (dA + 1), (eR._3 + (parseIntValue(split(co, "_")[aU]) * lT)))
26082612 }
26092613 else $Tuple3((eR._1 :+ toString(hg)), (dA + 1), eR._3)
26102614 }
26152619 let eV = $Tuple3(nil, 0, 0)
26162620 func eW (eX,eY) = if ((eY >= eU))
26172621 then eX
2618- else lR(eX, eT[eY])
2622+ else lS(eX, eT[eY])
26192623
26202624 func eZ (eX,eY) = if ((eY >= eU))
26212625 then eX
26232627
26242628 eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
26252629 }
2626- let lT = min([jc, (lP + fj._3)])
2627- $Tuple2((([IntegerEntry(jb, lT), StringEntry(hL, makeString_2C([io[bh], io[bi], io[bj], makeString(fj._1, "_")], ":"))] ++ lk) ++ jZ(A, (ad * ((lL + lM) + lN)))._1), lT)
2630+ let lU = min([jc, (lQ + fj._3)])
2631+ $Tuple2((([IntegerEntry(jb, lU), StringEntry(hL, makeString_2C([io[bh], io[bi], io[bj], makeString(fj._1, "_")], ":"))] ++ ll) ++ jZ(A, (ad * ((lM + lN) + lO)))._1), lU)
26282632 }
26292633 }
26302634 }
26342638
26352639 @Callable(gK)
26362640 func healES () = {
2637- let lk = lg(gK)
2641+ let ll = lh(gK)
26382642 if ((size(gK.payments) != 1))
26392643 then throw("Exactly one payment required")
26402644 else {
2641- let ll = value(gK.payments[0])
2642- if ((ll.assetId != cx))
2645+ let lm = value(gK.payments[0])
2646+ if ((lm.assetId != cx))
26432647 then throw("Allowed USDT payment only!")
26442648 else {
26452649 let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked")
26502654 else {
26512655 let jb = z(A)
26522656 let jc = ag(valueOrElse(getInteger(D(A)), 0))
2653- let lP = valueOrElse(getInteger(jb), jc)
2654- if ((lP > 0))
2657+ let lQ = valueOrElse(getInteger(jb), jc)
2658+ if ((lQ > 0))
26552659 then throw("HP should be 0 to call Emergency Service")
26562660 else {
26572661 let hL = bI(A)
26582662 let io = hK(hL)
2659- let lQ = if ((io[bk] == ""))
2663+ let lR = if ((io[bk] == ""))
26602664 then nil
26612665 else split_4C(io[bk], "_")
2662- let lU = if ((size(lQ) > 0))
2663- then parseIntValue(lQ[0])
2666+ let lV = if ((size(lR) > 0))
2667+ then parseIntValue(lR[0])
26642668 else 0
2665- let lV = if ((size(lQ) > 1))
2666- then parseIntValue(lQ[1])
2669+ let lW = if ((size(lR) > 1))
2670+ then parseIntValue(lR[1])
26672671 else 0
2668- let lW = if ((size(lQ) > 2))
2669- then parseIntValue(lQ[2])
2672+ let lX = if ((size(lR) > 2))
2673+ then parseIntValue(lR[2])
26702674 else 0
2671- if (if (if ((lU > 0))
2672- then true
2673- else (lV > 0))
2675+ if (if (if ((lV > 0))
26742676 then true
26752677 else (lW > 0))
2678+ then true
2679+ else (lX > 0))
26762680 then throw("You have to use own Medical Kit")
26772681 else {
2678- let lX = getString(dc, bM())
2679- let lY = if (isDefined(lX))
2680- then split_4C(value(lX), "_")
2682+ let lY = getString(dc, bM())
2683+ let lZ = if (isDefined(lY))
2684+ then split_4C(value(lY), "_")
26812685 else nil
2682- let lZ = if ((size(lY) > 0))
2683- then parseIntValue(lY[0])
2686+ let ma = if ((size(lZ) > 0))
2687+ then parseIntValue(lZ[0])
26842688 else 0
2685- if ((0 >= lZ))
2689+ if ((0 >= ma))
26862690 then throw("There are no Medical Kits L1 at Emergency Service storage")
26872691 else {
2688- let lT = (lP + parseIntValue(split(aS[0], "_")[aU]))
2689- let ma = makeString([toString((lZ - 1)), removeByIndex(lY, 0)], "_")
2692+ let lU = (lQ + parseIntValue(split(aS[0], "_")[aU]))
2693+ let mb = makeString([toString((ma - 1)), removeByIndex(lZ, 0)], "_")
26902694 let co = split(aS[0], "_")
2691- let mb = cn(co)
2692- let mc = fraction((mb * aL), aK, (cE * aX))
2693- if ((ll.amount != mc))
2694- then throw(("Payment attached should be " + toString(mc)))
2695+ let mc = cn(co)
2696+ let md = fraction((mc * aL), aK, (cE * aX))
2697+ if ((lm.amount != md))
2698+ then throw(("Payment attached should be " + toString(md)))
26952699 else {
2696- let fj = dw(invoke(dc, "updateEsStorage", [ma], [AttachedPayment(cx, mc)]))
2697- $Tuple2(((lk :+ IntegerEntry(jb, lT)) ++ jZ(A, X)._1), fj)
2700+ let fj = dw(invoke(dc, "updateEsStorage", [mb], [AttachedPayment(cx, md)]))
2701+ $Tuple2(((ll :+ IntegerEntry(jb, lU)) ++ jZ(A, X)._1), fj)
26982702 }
26992703 }
27002704 }
27072711
27082712
27092713 @Callable(gK)
2710-func updateBackpack (A,md) = if ((gK.caller != dc))
2714+func updateBackpack (A,me) = if ((gK.caller != dc))
27112715 then throw("permission denied")
2712- else $Tuple2([StringEntry(bI(A), md)], md)
2716+ else $Tuple2([StringEntry(bI(A), me)], me)
27132717
27142718
27152719
27162720 @Callable(gK)
27172721 func commitForRandom () = {
2718- let lk = lg(gK)
2719- let me = (height + dp)
2722+ let ll = lh(gK)
2723+ let mf = (height + dp)
27202724 let c = toString(gK.caller)
2721- $Tuple2(([IntegerEntry(dq(c), me)] ++ lk), me)
2725+ $Tuple2(([IntegerEntry(dq(c), mf)] ++ ll), mf)
27222726 }
27232727
27242728
27252729
27262730 @Callable(gK)
27272731 func buySLand () = {
2728- let lk = lg(gK)
2732+ let ll = lh(gK)
27292733 if ((size(gK.payments) != 1))
27302734 then throw("Exactly one payment required")
27312735 else {
2732- let ll = value(gK.payments[0])
2733- if ((ll.assetId != cx))
2736+ let lm = value(gK.payments[0])
2737+ if ((lm.assetId != cx))
27342738 then throw("Allowed USDT payment only!")
2735- else if ((ll.amount != eg))
2739+ else if ((lm.amount != eg))
27362740 then throw(("Payment attached should be " + toString(eg)))
27372741 else {
27382742 let fj = iI(gK.caller, gK.transactionId)
2739- let mf = dz(invoke(dg, "burnAcres", [eh], nil))
2740- $Tuple2((((fj._1 :+ ScriptTransfer(dc, ll.amount, cx)) ++ kf(toString(gK.caller), Z)._1) ++ lk), $Tuple2(fj._2._1, mf))
2743+ let mg = dz(invoke(dg, "burnAcres", [eh], nil))
2744+ $Tuple2((((fj._1 :+ ScriptTransfer(dc, lm.amount, cx)) ++ kf(toString(gK.caller), Z)._1) ++ ll), $Tuple2(fj._2._1, mg))
27412745 }
27422746 }
27432747 }
27462750
27472751 @Callable(gK)
27482752 func expedition (iQ,iR) = {
2749- let lk = lg(gK)
2753+ let ll = lh(gK)
27502754 if ((size(gK.payments) != 0))
27512755 then throw("No payments required")
27522756 else {
27592763 let jQ = split(io[bj], "_")
27602764 let jS = makeString(fd(true, jQ, ef), "_")
27612765 let gx = F(A)
2762- let lz = valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,")
2763- let mg = fk(lz, hp._5)
2764- let lB = mg._1
2765- let lC = mg._2
2766- let mh = iI(gK.caller, gK.transactionId)
2767- let iO = mh._2._1
2766+ let lA = valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,")
2767+ let mh = fk(lA, hp._5)
2768+ let lC = mh._1
2769+ let lD = mh._2
2770+ let mi = iI(gK.caller, gK.transactionId)
2771+ let iO = mi._2._1
27682772 let fj = if ((0 >= hp._1))
2769- then $Tuple3([IntegerEntry(jb, 0), StringEntry(gx, lB)], "", 0)
2770- else $Tuple3((mh._1 ++ (if (lC)
2773+ then $Tuple3([IntegerEntry(jb, 0), StringEntry(gx, lC)], "", 0)
2774+ else $Tuple3((mi._1 ++ (if (lD)
27712775 then [StringEntry(L(A), "0_0_0_0_0")]
2772- else ((((nil :+ StringEntry(bJ(A), makeString([mh._2._2, "L", iO], "_"))) :+ IntegerEntry(jb, hp._1)) :+ StringEntry(gx, lB)) :+ StringEntry(hL, makeString([io[bh], io[bi], jS, io[bk]], ":"))))), iO, hp._3)
2776+ else ((((nil :+ StringEntry(bJ(A), makeString([mi._2._2, "L", iO], "_"))) :+ IntegerEntry(jb, hp._1)) :+ StringEntry(gx, lC)) :+ StringEntry(hL, makeString([io[bh], io[bi], jS, io[bk]], ":"))))), iO, hp._3)
27732777 if (kp(A))
27742778 then throw("expedition_checkTournament")
27752779 else if (kq(A))
27762780 then throw("expedition_checkDelivery")
27772781 else {
2778- let mf = dz(invoke(dg, "burnAcres", [eh], nil))
2779- $Tuple2(((fj._1 ++ jZ(A, Z)._1) ++ lk), $Tuple3(fj._2, fj._3, mf))
2782+ let mg = dz(invoke(dg, "burnAcres", [eh], nil))
2783+ $Tuple2(((fj._1 ++ jZ(A, Z)._1) ++ ll), $Tuple3(fj._2, fj._3, mg))
27802784 }
27812785 }
27822786 }
27852789
27862790 @Callable(gK)
27872791 func buySLandForAcres () = {
2788- let lk = lg(gK)
2792+ let ll = lh(gK)
27892793 if ((size(gK.payments) != 1))
27902794 then throw("exactly 1 payment must be attached")
27912795 else {
2792- let ll = gK.payments[0]
2793- let fq = ll.amount
2794- if (if (!(isDefined(ll.assetId)))
2796+ let lm = gK.payments[0]
2797+ let fq = lm.amount
2798+ if (if (!(isDefined(lm.assetId)))
27952799 then true
2796- else (value(ll.assetId) != do))
2800+ else (value(lm.assetId) != do))
27972801 then throw("ACRES payments only!")
27982802 else if ((fq != eh))
27992803 then throw(("Payment attached should be " + toString(eh)))
28002804 else {
28012805 let fj = iI(gK.caller, gK.transactionId)
2802- let mf = dz(invoke(dg, "burnAcres", [eh], [AttachedPayment(do, fq)]))
2803- $Tuple2(((fj._1 ++ kf(toString(gK.caller), Z)._1) ++ lk), $Tuple2(fj._2._1, mf))
2806+ let mg = dz(invoke(dg, "burnAcres", [eh], [AttachedPayment(do, fq)]))
2807+ $Tuple2(((fj._1 ++ kf(toString(gK.caller), Z)._1) ++ ll), $Tuple2(fj._2._1, mg))
28042808 }
28052809 }
28062810 }
28092813
28102814 @Callable(gK)
28112815 func upgradeInfra (P) = {
2812- let lk = lg(gK)
2816+ let ll = lh(gK)
28132817 if ((size(gK.payments) != 0))
28142818 then throw("No payments required")
28152819 else {
28162820 let fj = jK(true, gK.caller, 0, P)
28172821 let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked")
2818- $Tuple2(((fj._1 ++ lk) ++ jZ(A, fraction(aa, fj._3, cE))._1), fj._2)
2819- }
2820- }
2821-
2822-
2823-
2824-@Callable(gK)
2825-func activateArtifact (mi,mj) = {
2826- let lk = lg(gK)
2822+ $Tuple2(((fj._1 ++ ll) ++ jZ(A, fraction(aa, fj._3, cE))._1), fj._2)
2823+ }
2824+ }
2825+
2826+
2827+
2828+@Callable(gK)
2829+func activateArtifact (mj,mk) = {
2830+ let ll = lh(gK)
28272831 if ((size(gK.payments) != 0))
28282832 then throw("No payments required")
28292833 else {
28302834 let c = toString(gK.caller)
28312835 let fj = {
2832- let cy = mi
2836+ let cy = mj
28332837 if (("PRESALE" == cy))
2834- then kn(c, mj)
2838+ then kn(c, mk)
28352839 else if (("ONBOARD" == cy))
28362840 then kg(c)
28372841 else throw("Unknown artifact")
28382842 }
2839- (fj ++ lk)
2840- }
2841- }
2842-
2843-
2844-
2845-@Callable(gK)
2846-func mergeLands (kD) = {
2847- let lk = lg(gK)
2843+ (fj ++ ll)
2844+ }
2845+ }
2846+
2847+
2848+
2849+@Callable(gK)
2850+func mergeLands (kE) = {
2851+ let ll = lh(gK)
28482852 if ((size(gK.payments) != 0))
28492853 then throw("No payments required")
28502854 else {
2851- let fj = lb(toString(gK.caller), kD)
2852- $Tuple2(((fj._1 ++ lk) ++ kf(toString(gK.caller), ab)._1), fj._2)
2853- }
2854- }
2855-
2856-
2857-
2858-@Callable(gK)
2859-func cargoExchange (mk,P) = {
2860- let lk = lg(gK)
2855+ let fj = lc(toString(gK.caller), kE)
2856+ $Tuple2(((fj._1 ++ ll) ++ kf(toString(gK.caller), ab)._1), fj._2)
2857+ }
2858+ }
2859+
2860+
2861+
2862+@Callable(gK)
2863+func cargoExchange (ml,P) = {
2864+ let ll = lh(gK)
28612865 if ((size(gK.payments) != 0))
28622866 then throw("No payments required")
28632867 else {
2864- let in = split_4C(mk, ":")
2868+ let in = split_4C(ml, ":")
28652869 let c = toString(gK.originCaller)
28662870 let js = value(assetInfo(fromBase58String(P)))
28672871 let jt = br(P)
28902894 let ig = split(hP[bc], "_")
28912895 let jH = (parseIntValue(ig[be]) + fj._7)
28922896 let jI = (parseIntValue(ig[bf]) - fj._7)
2893- ([StringEntry(hL, makeString_2C([io[bh], fj._4, fj._5, fj._6], ":")), StringEntry(hY, makeString_2C([hP[aY], fj._1, fj._2, fj._3, makeString([ig[bd], toString(jH), toString(jI), ig[bg]], "_")], ":"))] ++ lk)
2897+ ([StringEntry(hL, makeString_2C([io[bh], fj._4, fj._5, fj._6], ":")), StringEntry(hY, makeString_2C([hP[aY], fj._1, fj._2, fj._3, makeString([ig[bd], toString(jH), toString(jI), ig[bg]], "_")], ":"))] ++ ll)
28942898 }
28952899 }
28962900 }
29082912 if ((size(id) != 5))
29092913 then throw("warehouse string should contain 4 ':' separators")
29102914 else {
2911- let ml = split(id[bc], "_")[bd]
2915+ let mm = split(id[bc], "_")[bd]
29122916 let jH = hO(id)
2913- let mm = hM(id[aY])
2914- let jI = ((mm - parseIntValue(ml)) - jH)
2915- let mn = makeString_2C([id[aY], id[aZ], id[ba], id[bb], makeString([ml, toString(jH), toString(jI), toString(mm)], "_")], ":")
2916- $Tuple2([StringEntry(hY, mn)], mn)
2917+ let mn = hM(id[aY])
2918+ let jI = ((mn - parseIntValue(mm)) - jH)
2919+ let mo = makeString_2C([id[aY], id[aZ], id[ba], id[bb], makeString([mm, toString(jH), toString(jI), toString(mn)], "_")], ":")
2920+ $Tuple2([StringEntry(hY, mo)], mo)
29172921 }
29182922 }
29192923
29282932 let hZ = (dH(split(js.description, "_")[di]) / cF)
29292933 let ia = valueOrElse(getInteger(by(P)), 0)
29302934 let id = hX(hY, hZ, ia)
2931- let ml = dz(invoke(dc, "recalcLockedVolumeREADONLY", [P, id], nil))
2935+ let mm = dz(invoke(dc, "recalcLockedVolumeREADONLY", [P, id], nil))
29322936 let jH = hO(id)
2933- let mm = hM(id[aY])
2934- let jI = ((mm - ml) - jH)
2935- let mn = makeString_2C([id[aY], id[aZ], id[ba], id[bb], makeString([toString(ml), toString(jH), toString(jI), toString(mm)], "_")], ":")
2936- $Tuple2([StringEntry(hY, mn)], mn)
2937+ let mn = hM(id[aY])
2938+ let jI = ((mn - mm) - jH)
2939+ let mo = makeString_2C([id[aY], id[aZ], id[ba], id[bb], makeString([toString(mm), toString(jH), toString(jI), toString(mn)], "_")], ":")
2940+ $Tuple2([StringEntry(hY, mo)], mo)
29372941 }
29382942
29392943
29402944
29412945 @Callable(gK)
2942-func fixContinentProportions (kD) = if ((gK.caller != db))
2946+func fixContinentProportions (kE) = if ((gK.caller != db))
29432947 then throw("Access denied")
29442948 else {
2945- func mo (eR,mp) = (eR :+ valueOrElse(getString(ds(mp)), "0_0_0_0_0_0"))
2949+ func mp (eR,mq) = (eR :+ valueOrElse(getString(ds(mq)), "0_0_0_0_0_0"))
29462950
29472951 let gu = {
29482952 let eT = aP
29502954 let eV = nil
29512955 func eW (eX,eY) = if ((eY >= eU))
29522956 then eX
2953- else mo(eX, eT[eY])
2957+ else mp(eX, eT[eY])
29542958
29552959 func eZ (eX,eY) = if ((eY >= eU))
29562960 then eX
29582962
29592963 eZ(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5)
29602964 }
2961- func mq (eR,P) = {
2965+ func mr (eR,P) = {
29622966 let js = value(assetInfo(fromBase58String(P)))
29632967 let jw = split(js.description, "_")
29642968 let hZ = (dH(jw[di]) / cF)
2965- let mp = jw[dk]
2969+ let mq = jw[dk]
29662970 let gG = gM(jw[dj])
2967- let ho = value(indexOf(aP, mp))
2968- let kS = split(eR[ho], "_")
2969- let mr = makeString(gE(kS, gG, hZ, 1), "_")
2970- let cy = mp
2971+ let ho = value(indexOf(aP, mq))
2972+ let kT = split(eR[ho], "_")
2973+ let ms = makeString(gE(kT, gG, hZ, 1), "_")
2974+ let cy = mq
29712975 if (("Americas" == cy))
2972- then [mr, eR[1], eR[2], eR[3], eR[4]]
2976+ then [ms, eR[1], eR[2], eR[3], eR[4]]
29732977 else if (("Europe" == cy))
2974- then [eR[0], mr, eR[2], eR[3], eR[4]]
2978+ then [eR[0], ms, eR[2], eR[3], eR[4]]
29752979 else if (("Asia" == cy))
2976- then [eR[0], eR[1], mr, eR[3], eR[4]]
2980+ then [eR[0], eR[1], ms, eR[3], eR[4]]
29772981 else if (("Africa" == cy))
2978- then [eR[0], eR[1], eR[2], mr, eR[4]]
2982+ then [eR[0], eR[1], eR[2], ms, eR[4]]
29792983 else if (("Oceania" == cy))
2980- then [eR[0], eR[1], eR[2], eR[3], mr]
2984+ then [eR[0], eR[1], eR[2], eR[3], ms]
29812985 else throw("wrong continent")
29822986 }
29832987
29842988 let fc = {
2985- let eT = kD
2989+ let eT = kE
29862990 let eU = size(eT)
29872991 let eV = gu
29882992 func hF (eX,eY) = if ((eY >= eU))
29892993 then eX
2990- else mq(eX, eT[eY])
2994+ else mr(eX, eT[eY])
29912995
29922996 func hG (eX,eY) = if ((eY >= eU))
29932997 then eX
30043008 func fixStakedPieces (cM) = if ((gK.caller != db))
30053009 then throw("Access denied")
30063010 else {
3007- let kW = if ((cM == ""))
3011+ let kX = if ((cM == ""))
30083012 then 0
30093013 else {
3010- let kP = getString(an, du(cM))
3011- let kL = if (isDefined(kP))
3012- then split_51C(value(kP), "_")
3014+ let kQ = getString(an, du(cM))
3015+ let kM = if (isDefined(kQ))
3016+ then split_51C(value(kQ), "_")
30133017 else nil
3014- func ms (eR,P) = {
3018+ func mt (eR,P) = {
30153019 let js = value(assetInfo(fromBase58String(P)))
30163020 let dI = split(js.description, "_")[di]
30173021 (eR + dH(dI))
30183022 }
30193023
3020- let eT = kL
3024+ let eT = kM
30213025 let eU = size(eT)
30223026 let eV = 0
30233027 func eW (eX,eY) = if ((eY >= eU))
30243028 then eX
3025- else ms(eX, eT[eY])
3029+ else mt(eX, eT[eY])
30263030
30273031 func eZ (eX,eY) = if ((eY >= eU))
30283032 then eX
30303034
30313035 eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
30323036 }
3033- $Tuple2([IntegerEntry(dv(cM), kW)], kW)
3037+ $Tuple2([IntegerEntry(dv(cM), kX)], kX)
30343038 }
30353039
30363040
30373041
30383042 @Callable(gK)
3039-func setCustomName (bp,kN,bt) = {
3040- let lk = lg(gK)
3043+func setCustomName (bp,kO,bt) = {
3044+ let ll = lh(gK)
30413045 if ((size(gK.payments) != 1))
30423046 then throw("Exactly one payment required")
30433047 else {
3044- let ll = value(gK.payments[0])
3045- if ((ll.assetId != cx))
3048+ let lm = value(gK.payments[0])
3049+ if ((lm.assetId != cx))
30463050 then throw("Allowed USDT payment only!")
3047- else if ((ll.amount != ec))
3051+ else if ((lm.amount != ec))
30483052 then throw(("Payment should be " + toString(ec)))
3049- else if (contains(kN, "__"))
3050- then throw(("Name should not contain '__': " + kN))
3051- else if ((size(kN) > ed))
3053+ else if (contains(kO, "__"))
3054+ then throw(("Name should not contain '__': " + kO))
3055+ else if ((size(kO) > ed))
30523056 then throw(("Name too long, maxLength=" + toString(ed)))
30533057 else {
30543058 let c = toString(gK.originCaller)
3055- let mt = {
3059+ let mu = {
30563060 let cy = bt
30573061 if (("ACCOUNT" == cy))
30583062 then {
3059- let mu = ex(kN)
3060- let mv = getString(mu)
3061- if (isDefined(mv))
3062- then throw(("Name already registered: " + kN))
3063+ let mv = ex(kO)
3064+ let mw = getString(mv)
3065+ if (isDefined(mw))
3066+ then throw(("Name already registered: " + kO))
30633067 else {
3064- let mw = bB(c)
3065- let mx = getString(mw)
3066- let my = if (isDefined(mx))
3067- then [DeleteEntry(ex(value(mx)))]
3068+ let mx = bB(c)
3069+ let my = getString(mx)
3070+ let mz = if (isDefined(my))
3071+ then [DeleteEntry(ex(value(my)))]
30683072 else nil
3069- (((my :+ StringEntry(mw, kN)) :+ StringEntry(mu, c)) ++ kf(c, Y)._1)
3073+ (((mz :+ StringEntry(mx, kO)) :+ StringEntry(mv, c)) ++ kf(c, Y)._1)
30703074 }
30713075 }
30723076 else if (("LAND" == cy))
30803084 if ((jv != c))
30813085 then throw((aC + " is not yours"))
30823086 else {
3083- let mu = eq(kN)
3084- let mv = getString(mu)
3085- if (isDefined(mv))
3086- then throw(("Name already registered: " + kN))
3087+ let mv = eq(kO)
3088+ let mw = getString(mv)
3089+ if (isDefined(mw))
3090+ then throw(("Name already registered: " + kO))
30873091 else {
3088- let mz = bq(bp)
3089- let mx = getString(mz)
3090- let my = if (isDefined(mx))
3091- then [DeleteEntry(eq(value(mx)))]
3092+ let mA = bq(bp)
3093+ let my = getString(mA)
3094+ let mz = if (isDefined(my))
3095+ then [DeleteEntry(eq(value(my)))]
30923096 else nil
3093- (((my :+ StringEntry(mz, kN)) :+ StringEntry(mu, bp)) ++ kf(c, Y)._1)
3097+ (((mz :+ StringEntry(mA, kO)) :+ StringEntry(mv, bp)) ++ kf(c, Y)._1)
30943098 }
30953099 }
30963100 }
31083112 if ((jv != c))
31093113 then throw((aD + " is not yours"))
31103114 else {
3111- let mu = ew(kN)
3112- let mv = getString(mu)
3113- if (isDefined(mv))
3114- then throw(("Name already registered: " + kN))
3115+ let mv = ew(kO)
3116+ let mw = getString(mv)
3117+ if (isDefined(mw))
3118+ then throw(("Name already registered: " + kO))
31153119 else {
3116- let mz = bA(bp)
3117- let mx = getString(mz)
3118- let my = if (isDefined(mx))
3119- then [DeleteEntry(ew(value(mx)))]
3120+ let mA = bA(bp)
3121+ let my = getString(mA)
3122+ let mz = if (isDefined(my))
3123+ then [DeleteEntry(ew(value(my)))]
31203124 else nil
3121- (((my :+ StringEntry(mz, kN)) :+ StringEntry(mu, bp)) ++ jZ(bp, Y)._1)
3125+ (((mz :+ StringEntry(mA, kO)) :+ StringEntry(mv, bp)) ++ jZ(bp, Y)._1)
31223126 }
31233127 }
31243128 }
31253129 }
31263130 else throw("Unknown entity type")
31273131 }
3128- $Tuple2(((mt :+ ScriptTransfer(dc, ll.amount, cx)) ++ lk), 0)
3132+ $Tuple2(((mu :+ ScriptTransfer(dc, lm.amount, cx)) ++ ll), 0)
31293133 }
31303134 }
31313135 }
31333137
31343138
31353139 @Callable(gK)
3136-func setReferrals (mA,mB) = if ((gK.callerPublicKey != dZ))
3140+func setReferrals (mB,mC) = if ((gK.callerPublicKey != dZ))
31373141 then throw("Permission denied")
31383142 else {
3139- let lk = lg(gK)
3143+ let ll = lh(gK)
31403144 if ((size(gK.payments) != 0))
31413145 then throw("No payments required")
3142- else if (!(isDefined(addressFromString(mA))))
3143- then throw(("Invalid address: " + mA))
3144- else if (!(isDefined(addressFromString(mB))))
3145- then throw(("Invalid address: " + mB))
3146+ else if (!(isDefined(addressFromString(mB))))
3147+ then throw(("Invalid address: " + mB))
3148+ else if (!(isDefined(addressFromString(mC))))
3149+ then throw(("Invalid address: " + mC))
31463150 else {
3147- let mC = ey()
3148- let mD = getString(mC)
3149- let mE = if (isDefined(mD))
3150- then split_4C(value(mD), "_")
3151+ let mD = ey()
3152+ let mE = getString(mD)
3153+ let mF = if (isDefined(mE))
3154+ then split_4C(value(mE), "_")
31513155 else nil
3152- if (containsElement(mE, mB))
3153- then throw((mB + " is not newbie (already has referrals)"))
3156+ if (containsElement(mF, mC))
3157+ then throw((mC + " is not newbie (already has referrals)"))
31543158 else {
3155- let kh = bC(mB)
3159+ let kh = bC(mC)
31563160 let ki = getString(kh)
31573161 if (if (isDefined(ki))
31583162 then isDefined(addressFromString(value(ki)))
31593163 else false)
3160- then throw(((mB + " already has refBy: ") + value(ki)))
3164+ then throw(((mC + " already has refBy: ") + value(ki)))
31613165 else {
3162- let mF = bF(mA)
3163- let mG = getString(mF)
3164- let mH = if (isDefined(mG))
3165- then split_4C(value(mG), "_")
3166+ let mG = bF(mB)
3167+ let mH = getString(mG)
3168+ let mI = if (isDefined(mH))
3169+ then split_4C(value(mH), "_")
31663170 else nil
3167- if (containsElement(mH, mB))
3168- then throw((((mA + " already contains ") + mB) + " within referrals"))
3171+ if (containsElement(mI, mC))
3172+ then throw((((mB + " already contains ") + mC) + " within referrals"))
31693173 else {
3170- let mI = makeString_2C((mH :+ mB), "_")
3171- let mJ = if (containsElement(mE, mA))
3172- then value(mD)
3173- else makeString_2C((mE :+ mA), "_")
3174- $Tuple2(([StringEntry(kh, mA), StringEntry(mF, mI), StringEntry(mC, mJ)] ++ lk), 0)
3174+ let mJ = makeString_2C((mI :+ mC), "_")
3175+ let mK = if (containsElement(mF, mB))
3176+ then value(mE)
3177+ else makeString_2C((mF :+ mB), "_")
3178+ $Tuple2(([StringEntry(kh, mB), StringEntry(mG, mJ), StringEntry(mD, mK)] ++ ll), 0)
31753179 }
31763180 }
31773181 }
31813185
31823186
31833187 @Callable(gK)
3184-func distributePoints (mK,mL,mM,mN,mO) = {
3185- let lk = lg(gK)
3188+func distributePoints (mL,mM,mN,mO,mP) = {
3189+ let ll = lh(gK)
31863190 if ((size(gK.payments) != 0))
31873191 then throw("No payments required")
31883192 else {
31893193 let c = toString(gK.originCaller)
3190- let mP = dB(invoke(de, "checkWlgXpREADONLY", [c], nil))
3191- let mQ = dz(mP[1])
3192- let mR = if ((0 >= mQ))
3194+ let mQ = dB(invoke(de, "checkWlgXpREADONLY", [c], nil))
3195+ let mR = dz(mQ[1])
3196+ let mS = if ((0 >= mR))
31933197 then $Tuple2(0, nil)
31943198 else {
31953199 let ka = dz(invoke(de, "takeWlgXp", [c], nil))
31963200 if ((ka == ka))
3197- then $Tuple2(mQ, [IntegerEntry(H(c), dz(mP[0])), IntegerEntry(G(c), dz(mP[2]))])
3201+ then $Tuple2(mR, [IntegerEntry(H(c), dz(mQ[0])), IntegerEntry(G(c), dz(mQ[2]))])
31983202 else throw("Strict value is not equal to itself.")
31993203 }
3200- let mS = mR._1
3201- let mT = mR._2
3204+ let mT = mS._1
3205+ let mU = mS._2
32023206 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
3203- let mU = I(c)
3204- let mV = (valueOrElse(getInteger(mU), 0) + mS)
3205- let mW = E(A)
3206- let mX = valueOrElse(getInteger(mW), 0)
3207- let mY = (mV + mX)
3208- let mZ = ((((mK + mL) + mM) + mN) + mO)
3209- if ((mZ > mY))
3210- then throw((("There are only " + toString(mY)) + " free points to distribute"))
3207+ let mV = I(c)
3208+ let mW = (valueOrElse(getInteger(mV), 0) + mT)
3209+ let mX = E(A)
3210+ let mY = valueOrElse(getInteger(mX), 0)
3211+ let mZ = (mW + mY)
3212+ let na = ((((mL + mM) + mN) + mO) + mP)
3213+ if ((na > mZ))
3214+ then throw((("There are only " + toString(mZ)) + " free points to distribute"))
32113215 else {
3212- let na = B(A)
3213- let aq = split(valueOrElse(getString(na), "0_0_0_0_0"), "_")
3214- let nb = (mV - mZ)
3215- $Tuple2((([IntegerEntry(mU, if ((0 > nb))
3216+ let nb = B(A)
3217+ let aq = split(valueOrElse(getString(nb), "0_0_0_0_0"), "_")
3218+ let nc = (mW - na)
3219+ $Tuple2((([IntegerEntry(mV, if ((0 > nc))
32163220 then 0
3217- else nb), IntegerEntry(mW, if ((0 > nb))
3218- then (mX + nb)
3219- else mX), StringEntry(na, makeString([toString((parseIntValue(aq[k]) + mK)), toString((parseIntValue(aq[l]) + mL)), toString((parseIntValue(aq[m]) + mM)), toString((parseIntValue(aq[n]) + mN)), toString((parseIntValue(aq[o]) + mO))], "_"))] ++ lk) ++ mT), 0)
3221+ else nc), IntegerEntry(mX, if ((0 > nc))
3222+ then (mY + nc)
3223+ else mY), StringEntry(nb, makeString([toString((parseIntValue(aq[k]) + mL)), toString((parseIntValue(aq[l]) + mM)), toString((parseIntValue(aq[m]) + mN)), toString((parseIntValue(aq[n]) + mO)), toString((parseIntValue(aq[o]) + mP))], "_"))] ++ ll) ++ mU), 0)
32203224 }
32213225 }
32223226 }
32293233
32303234
32313235 @Callable(gK)
3232-func splitByGlobalAndLocalWeightsREADONLY (nc,nd,gN) = {
3236+func splitByGlobalAndLocalWeightsREADONLY (nd,ne,gN) = {
32333237 let gG = gM(gN)
3234- $Tuple2(nil, $Tuple2(fa(nc), eL(nd, gG)))
3238+ $Tuple2(nil, $Tuple2(fa(nd), eL(ne, gG)))
32353239 }
32363240
32373241
32543258 @Callable(gK)
32553259 func saveLastTx () = if (!(containsElement([de, dc, df, dg], gK.caller)))
32563260 then throw("Access denied")
3257- else $Tuple2(lg(gK), 42)
3261+ else $Tuple2(lh(gK), 42)
32583262
32593263
32603264
32733277
32743278
32753279 @Callable(gK)
3276-func equipDuck (ne) = {
3277- let lk = lg(gK)
3280+func equipDuck (nf) = {
3281+ let ll = lh(gK)
32783282 if ((size(gK.payments) != 0))
32793283 then throw("No payments required")
32803284 else {
32863290 then throw("equipDuck_checkDelivery")
32873291 else {
32883292 let gx = F(A)
3289- let nf = split(valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3293+ let ng = split(valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
32903294 let hL = bI(A)
32913295 let io = hK(hL)
3292- let lB = split(ne, "_")
3293- if ((size(lB) != q))
3296+ let lC = split(nf, "_")
3297+ if ((size(lC) != q))
32943298 then throw("Wrong equipment string")
32953299 else {
3296- let gz = gm(nf, fx(io[bk]), true, nil)
3297- let gA = split(lB[p], ";")[1]
3300+ let gz = gm(ng, fx(io[bk]), true, nil)
3301+ let gA = split(lC[p], ";")[1]
32983302 let ao = if ((gA == ""))
32993303 then 0
33003304 else {
33193323 }
33203324 }
33213325 let gh = am(this, A, ao, true)
3322- let gD = gm(lB, gz, false, gh)
3323- let ng = fC(gD)
3324- $Tuple2(([StringEntry(gx, ne), StringEntry(hL, makeString_2C([io[bh], io[bi], io[bj], ng], ":")), StringEntry(L(A), makeString([toString(gh[7]), toString(gh[8]), toString(gh[9]), toString(gh[10]), toString(gh[11])], "_"))] ++ lk), 0)
3326+ let gD = gm(lC, gz, false, gh)
3327+ let nh = fC(gD)
3328+ $Tuple2(([StringEntry(gx, nf), StringEntry(hL, makeString_2C([io[bh], io[bi], io[bj], nh], ":")), StringEntry(L(A), makeString([toString(gh[7]), toString(gh[8]), toString(gh[9]), toString(gh[10]), toString(gh[11])], "_"))] ++ ll), 0)
33253329 }
33263330 }
33273331 }
33303334
33313335
33323336 @Callable(gK)
3333-func fortificateLand (P,nh) = {
3334- let lk = lg(gK)
3337+func fortificateLand (P,ni) = {
3338+ let ll = lh(gK)
33353339 if ((size(gK.payments) != 0))
33363340 then throw("No payments required")
33373341 else {
33383342 let c = toString(gK.originCaller)
33393343 let A = valueOrElse(getString(bH(c)), "")
33403344 let fH = am(this, A, 0, false)
3341- let ni = bz(P)
3342- let nj = split(valueOrElse(getString(ni), ":0_15:0_18:0"), "_")
3345+ let nj = bz(P)
3346+ let nk = split(valueOrElse(getString(nj), ":0_15:0_18:0"), "_")
33433347 let js = value(assetInfo(fromBase58String(P)))
33443348 let hZ = (dH(split(js.description, "_")[di]) / cF)
33453349 let ia = valueOrElse(getInteger(by(P)), 0)
33463350 let hY = bx(P)
33473351 let id = hX(hY, hZ, ia)
3348- let nk = split(id[bc], "_")
3349- let nl = parseIntValue(nk[be])
3350- let nm = parseIntValue(nk[bf])
3351- let nn = split(nh, "_")
3352- let no = gt(nj, fx(id[bb]), nl, nm, true, nil)
3353- let gz = no._1
3354- let np = no._2
3355- let nq = no._3
3356- let nr = gt(nn, gz, np, nq, false, fH)
3357- let gD = nr._1
3358- let ns = nr._2
3359- let nt = nr._3
3360- let ng = fC(gD)
3361- let jY = makeString([nk[bd], toString(ns), toString(nt), nk[bg]], "_")
3362- $Tuple2(([StringEntry(ni, nh), StringEntry(hY, makeString_2C([id[aY], id[aZ], id[ba], ng, jY], ":"))] ++ lk), 0)
3352+ let nl = split(id[bc], "_")
3353+ let nm = parseIntValue(nl[be])
3354+ let nn = parseIntValue(nl[bf])
3355+ let no = split(ni, "_")
3356+ let np = gt(nk, fx(id[bb]), nm, nn, true, nil)
3357+ let gz = np._1
3358+ let nq = np._2
3359+ let nr = np._3
3360+ let ns = gt(no, gz, nq, nr, false, fH)
3361+ let gD = ns._1
3362+ let nt = ns._2
3363+ let nu = ns._3
3364+ let nh = fC(gD)
3365+ let jY = makeString([nl[bd], toString(nt), toString(nu), nl[bg]], "_")
3366+ $Tuple2(([StringEntry(nj, ni), StringEntry(hY, makeString_2C([id[aY], id[aZ], id[ba], nh, jY], ":"))] ++ ll), 0)
33633367 }
33643368 }
33653369
33713375 else {
33723376 let jb = z(A)
33733377 let jc = ag(valueOrElse(getInteger(D(A)), 0))
3374- let kt = valueOrElse(getInteger(jb), jc)
3375- let nu = bJ(A)
3376- let jq = valueOrElse(getString(nu), aJ)
3378+ let ku = valueOrElse(getInteger(jb), jc)
3379+ let nv = bJ(A)
3380+ let jq = valueOrElse(getString(nv), aJ)
33773381 let ce = valueOrElse(getInteger(df, bP), 0)
3378- let nv = (toString(ce) + "_T_0")
3379- $Tuple2([IntegerEntry(J(A), kt), IntegerEntry(jb, jc), StringEntry(K(A), jq), StringEntry(nu, nv)], nv)
3382+ let nw = (toString(ce) + "_T_0")
3383+ $Tuple2([IntegerEntry(J(A), ku), IntegerEntry(jb, jc), StringEntry(K(A), jq), StringEntry(nv, nw)], nw)
33803384 }
33813385
33823386
33833387
33843388 @Callable(gK)
33853389 func breakAttempt () = {
3386- let lk = lg(gK)
3390+ let ll = lh(gK)
33873391 let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked")
3388- let nu = bJ(A)
3389- let jq = valueOrElse(getString(nu), aJ)
3392+ let nv = bJ(A)
3393+ let jq = valueOrElse(getString(nv), aJ)
33903394 if ((split(jq, "_")[bm] != "T"))
33913395 then throw("Your duck is not in the tournament")
33923396 else {
3393- let ky = getIntegerValue(J(A))
3394- let kz = getStringValue(K(A))
3395- $Tuple2(((lk :+ IntegerEntry(z(A), ky)) :+ StringEntry(nu, kz)), jq)
3397+ let kz = getIntegerValue(J(A))
3398+ let kA = getStringValue(K(A))
3399+ $Tuple2(((ll :+ IntegerEntry(z(A), kz)) :+ StringEntry(nv, kA)), jq)
33963400 }
33973401 }
33983402
34023406 func exitTournamentInternal (A) = if ((gK.caller != this))
34033407 then throw("Access denied")
34043408 else {
3405- let ky = getIntegerValue(J(A))
3406- let kz = getStringValue(K(A))
3407- $Tuple2([IntegerEntry(z(A), ky), StringEntry(bJ(A), kz)], false)
3409+ let kz = getIntegerValue(J(A))
3410+ let kA = getStringValue(K(A))
3411+ $Tuple2([IntegerEntry(z(A), kz), StringEntry(bJ(A), kA)], false)
34083412 }
34093413
34103414
34133417 func exitDeliveryInternal (A) = if ((gK.caller != this))
34143418 then throw("Access denied")
34153419 else {
3416- let mh = kr(A)
3417- $Tuple2((mh._1 ++ mh._2), false)
3420+ let mi = kr(A, false, 0)
3421+ $Tuple2((mi._1 ++ mi._2), false)
34183422 }
34193423
34203424
34213425
34223426 @Callable(gK)
3423-func autoExitDelivery (A) = if ((gK.caller != this))
3427+func autoExitDelivery (A,iV) = if ((gK.caller != this))
34243428 then throw("Access denied")
34253429 else {
3426- let mh = kr(A)
3427- $Tuple2(mh._1, $Tuple2(mh._3, mh._4))
3430+ let mi = kr(A, true, iV)
3431+ $Tuple2(mi._1, $Tuple2(mi._3, mi._4))
34283432 }
34293433
34303434
34313435
34323436 @Callable(gK)
34333437 func prepareRobbery (iQ,iR) = {
3434- let lk = lg(gK)
3438+ let ll = lh(gK)
34353439 if (!(sigVerify_8Kb(iQ, iR, dZ)))
34363440 then throw("signature does not match")
34373441 else if ((size(gK.payments) != 1))
34383442 then throw("exactly 1 payment must be attached")
34393443 else {
3440- let ll = gK.payments[0]
3441- let nw = ll.amount
3442- if (if (!(isDefined(ll.assetId)))
3444+ let lm = gK.payments[0]
3445+ let nx = lm.amount
3446+ if (if (!(isDefined(lm.assetId)))
34433447 then true
3444- else (value(ll.assetId) != dm))
3448+ else (value(lm.assetId) != dm))
34453449 then throw("WLGOLD payments only!")
34463450 else {
34473451 let fp = split(toUtf8String(iQ), "|")
34553459 then throw("prepareRobbery_checkDelivery")
34563460 else {
34573461 let ay = au(this, A)._1
3458- if ((ay > nw))
3459- then throw(((("Payment " + toString(nw)) + " < required ") + toString(ay)))
3462+ if ((ay > nx))
3463+ then throw(((("Payment " + toString(nx)) + " < required ") + toString(ay)))
34603464 else {
3461- let nx = split(fp[1], "_")
3465+ let ny = split(fp[1], "_")
34623466 let ax = lastBlock.timestamp
34633467 let az = valueOrElse(getInteger(R(A)), 0)
34643468 let aA = valueOrElse(getString(S(A)), "")
34683472 else false)
34693473 then throw(("You already started robbing, wait till " + toString(aB)))
34703474 else {
3471- func ny (eR,P) = {
3472- let nz = valueOrElse(getInteger(O(P)), 0)
3473- let nA = valueOrElse(getInteger(Q(P)), 0)
3474- if ((nz > size(u)))
3475+ func nz (eR,P) = {
3476+ let nA = valueOrElse(getInteger(O(P)), 0)
3477+ let nB = valueOrElse(getInteger(Q(P)), 0)
3478+ if ((nA > size(u)))
34753479 then throw("Invalid state")
3476- else if ((ax > nA))
3480+ else if ((ax > nB))
34773481 then {
3478- let nB = valueOrElse(getInteger(br(P)), 0)
3479- if ((0 >= nB))
3482+ let nC = valueOrElse(getInteger(br(P)), 0)
3483+ if ((0 >= nC))
34803484 then eR
34813485 else {
34823486 let gr = value(assetInfo(fromBase58String(P)))
34833487 let jw = split(gr.description, "_")
34843488 let ji = dH(jw[di])
3485- let nC = jh(P, ji)
3486- let gQ = (ax - nB)
3487- let jz = fraction(gQ, (nC * ji), a)
3489+ let nD = jh(P, ji)
3490+ let gQ = (ax - nC)
3491+ let jz = fraction(gQ, (nD * ji), a)
34883492 if ((v > jz))
34893493 then eR
34903494 else (eR :+ P)
34933497 else eR
34943498 }
34953499
3496- let nD = {
3497- let eT = nx
3500+ let nE = {
3501+ let eT = ny
34983502 let eU = size(eT)
34993503 let eV = nil
35003504 func eW (eX,eY) = if ((eY >= eU))
35013505 then eX
3502- else ny(eX, eT[eY])
3506+ else nz(eX, eT[eY])
35033507
35043508 func eZ (eX,eY) = if ((eY >= eU))
35053509 then eX
35073511
35083512 eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
35093513 }
3510- if ((size(nD) == 0))
3514+ if ((size(nE) == 0))
35113515 then throw("No candidates for robbery")
35123516 else {
3513- let nE = dR(size(nD), height, (iR + gK.transactionId))
3514- let P = nD[nE]
3515- $Tuple2(([IntegerEntry(O(P), w), IntegerEntry(Q(P), (ax + u[w])), IntegerEntry(R(A), y), StringEntry(S(A), P)] ++ lk), P)
3517+ let nF = dR(size(nE), height, (iR + gK.transactionId))
3518+ let P = nE[nF]
3519+ $Tuple2(([IntegerEntry(O(P), w), IntegerEntry(Q(P), (ax + u[w])), IntegerEntry(R(A), y), StringEntry(S(A), P)] ++ ll), P)
35163520 }
35173521 }
35183522 }
35263530
35273531 @Callable(gK)
35283532 func robLand (iQ,iR) = {
3529- let lk = lg(gK)
3533+ let ll = lh(gK)
35303534 if (!(sigVerify_8Kb(iQ, iR, dZ)))
35313535 then throw("signature does not match")
35323536 else {
35333537 let bL = toString(gK.caller)
35343538 let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked")
35353539 let ax = lastBlock.timestamp
3536- $Tuple2((lk :+ IntegerEntry(M(A), ax)), 0)
3540+ $Tuple2((ll :+ IntegerEntry(M(A), ax)), 0)
35373541 }
35383542 }
35393543
35433547 func acceptDelivery () = if (!(cv))
35443548 then throw("Delivery feature is turned off!")
35453549 else {
3546- let lk = lg(gK)
3550+ let ll = lh(gK)
35473551 let bL = toString(gK.caller)
35483552 let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked")
3549- let nF = valueOrElse(getInteger(dc, bN), 0)
3550- let kw = valueOrElse(getInteger(dc, bO), 0)
3551- if ((aM > (nF - kw)))
3552- then throw(((("Delivery is not available, fund=" + dM(nF, 6)) + ", locked=") + dM(kw, 6)))
3553+ let nG = valueOrElse(getInteger(dc, bN), 0)
3554+ let kx = valueOrElse(getInteger(dc, bO), 0)
3555+ if ((aM > (nG - kx)))
3556+ then throw(((("Delivery is not available, fund=" + dM(nG, 6)) + ", locked=") + dM(kx, 6)))
35533557 else {
35543558 let ax = lastBlock.timestamp
3555- let nG = valueOrElse(getInteger(T(A)), 0)
3556- if ((nG > ax))
3557- then throw(("Delivery is forbidden for your duck until " + toString(nG)))
3559+ let nH = valueOrElse(getInteger(T(A)), 0)
3560+ if ((nH > ax))
3561+ then throw(("Delivery is forbidden for your duck until " + toString(nH)))
35583562 else if (kp(A))
35593563 then throw("acceptDelivery_checkTournament")
35603564 else if (kq(A))
35613565 then throw("acceptDelivery_checkDelivery")
35623566 else {
3563- let nH = dz(invoke(dc, "updateDeliveryLocked", [(kw + aM)], nil))
3567+ let nI = dz(invoke(dc, "updateDeliveryLocked", [(kx + aM)], nil))
35643568 let jb = z(A)
35653569 let jc = ag(valueOrElse(getInteger(D(A)), 0))
3566- let kt = valueOrElse(getInteger(jb), jc)
3567- let nu = bJ(A)
3568- let jq = valueOrElse(getString(nu), aJ)
3569- let nI = (toString(ax) + "_D_0")
3570- $Tuple2(([IntegerEntry(J(A), kt), IntegerEntry(jb, jc), StringEntry(K(A), jq), StringEntry(nu, nI)] ++ lk), $Tuple2(nI, nH))
3570+ let ku = valueOrElse(getInteger(jb), jc)
3571+ let nv = bJ(A)
3572+ let jq = valueOrElse(getString(nv), aJ)
3573+ let nJ = (toString(ax) + "_D_0")
3574+ $Tuple2(([IntegerEntry(J(A), ku), IntegerEntry(jb, jc), StringEntry(K(A), jq), StringEntry(nv, nJ)] ++ ll), $Tuple2(nJ, nI))
35713575 }
35723576 }
35733577 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 86400000
55
66 func b (c) = ("lastArbTimeUser_" + c)
77
88
99 let d = 100000000
1010
1111 let e = 3200
1212
1313 let f = 4000
1414
1515 let g = 3
1616
1717 let h = 100000000
1818
1919 let i = 400
2020
2121 let j = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
2222
2323 let k = 0
2424
2525 let l = 1
2626
2727 let m = 2
2828
2929 let n = 3
3030
3131 let o = 4
3232
3333 let p = 0
3434
3535 let q = 6
3636
3737 let r = 2
3838
3939 let s = 2
4040
4141 let t = 30
4242
4343 let u = [0, 600000, 900000, 43200000, 21600000]
4444
4545 let v = 20000000
4646
4747 let w = 1
4848
4949 let x = 0
5050
5151 let y = 1
5252
5353 func z (A) = ("duckHealth_" + A)
5454
5555
5656 func B (A) = ("duckChars_" + A)
5757
5858
5959 func C (A) = ("duckXP_" + A)
6060
6161
6262 func D (A) = ("duckLevel_" + A)
6363
6464
6565 func E (A) = ("duckFreePoints_" + A)
6666
6767
6868 func F (A) = ("duckEquipment_" + A)
6969
7070
7171 func G (c) = ("userXP_" + c)
7272
7373
7474 func H (c) = ("userLevel_" + c)
7575
7676
7777 func I (c) = ("userFreePoints_" + c)
7878
7979
8080 func J (A) = ("savedHealth_" + A)
8181
8282
8383 func K (A) = ("savedLocation_" + A)
8484
8585
8686 func L (A) = ("duckBuffs_" + A)
8787
8888
8989 func M (A) = ("lastRobberyTime_" + A)
9090
9191
9292 func N (A) = ("lastRobberyCost_" + A)
9393
9494
9595 func O (P) = ("landRobberyState_" + P)
9696
9797
9898 func Q (P) = ("landCooldownETA_" + P)
9999
100100
101101 func R (A) = ("duckRobberyState_" + A)
102102
103103
104104 func S (A) = ("lockedLandByDuck_" + A)
105105
106106
107107 func T (A) = ("deliveryDelayByDuck_" + A)
108108
109109
110110 let U = 10000
111111
112112 let V = 10000
113113
114114 let W = 2000
115115
116116 let X = 100000
117117
118118 let Y = 1000000
119119
120120 let Z = 5000000
121121
122122 let aa = 10000
123123
124124 let ab = 1000000
125125
126126 let ac = 1000000
127127
128128 let ad = 10000
129129
130130 func ae (af) = fraction(e, pow(af, 4, f, 4, 4, DOWN), d)
131131
132132
133133 func ag (ah) = (100 + ah)
134134
135135
136136 func ai (aj,ak) = {
137137 let al = ae(ak)
138138 [al, (g * (al - aj))]
139139 }
140140
141141
142142 func am (an,A,ao,ap) = {
143143 let aq = split(valueOrElse(getString(an, B(A)), "0_0_0_0_0"), "_")
144144 let ar = valueOrElse(getInteger(an, D(A)), 0)
145145 let as = valueOrElse(getInteger(an, z(A)), ag(ar))
146146 let at = split(valueOrElse(getString(an, L(A)), "0_0_0_0_0"), "_")
147147 ([parseIntValue(aq[k]), parseIntValue(aq[l]), parseIntValue(aq[m]), parseIntValue(aq[n]), parseIntValue(aq[o]), ar, as] ++ (if (ap)
148148 then [ao, ao, ao, ao, ao]
149149 else [parseIntValue(at[k]), parseIntValue(at[l]), parseIntValue(at[m]), parseIntValue(at[n]), parseIntValue(at[o])]))
150150 }
151151
152152
153153 func au (an,A) = {
154154 let av = valueOrElse(getInteger(an, N(A)), 0)
155155 let aw = valueOrElse(getInteger(an, M(A)), 0)
156156 let ax = lastBlock.timestamp
157157 let ay = max([h, (av - (i * (ax - aw)))])
158158 let az = valueOrElse(getInteger(an, R(A)), 0)
159159 let aA = valueOrElse(getString(an, S(A)), "")
160160 let aB = valueOrElse(getInteger(an, Q(aA)), 0)
161161 $Tuple5(ay, aw, az, aA, aB)
162162 }
163163
164164
165165 let aC = "LAND"
166166
167167 let aD = "DUCK"
168168
169169 let aE = "PRESALE"
170170
171171 let aF = 6
172172
173173 let aG = 25
174174
175175 let aH = 3456000
176176
177177 let aI = 10000000000
178178
179179 let aJ = "Africa_F_Africa"
180180
181181 let aK = 39637
182182
183183 let aL = 10
184184
185185 let aM = 50000
186186
187187 let aN = 600000
188188
189189 let aO = ["First Aid Kit L1", "First Aid Kit L2", "First Aid Kit L3", "Backpack L1", "Backpack L2", "Backpack L3", "Food Ration L1", "Food Ration L2", "Food Ration L3", "Jet Pack L1", "Jet Pack L2", "Jet Pack L3", "Shield L1", "Shield L2", "Shield L3", "Mine L1", "Mine L2", "Mine L3", "Trap L1", "Trap L2", "Trap L3"]
190190
191191 let aP = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
192192
193193 let aQ = 10000000
194194
195195 let aR = [15, 16, 17, 18, 19, 20]
196196
197197 let aS = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_"]
198198
199199 let aT = 6
200200
201201 let aU = 8
202202
203203 let aV = 9
204204
205205 let aW = 10
206206
207207 let aX = 10
208208
209209 let aY = 0
210210
211211 let aZ = 1
212212
213213 let ba = 2
214214
215215 let bb = 3
216216
217217 let bc = 4
218218
219219 let bd = 0
220220
221221 let be = 1
222222
223223 let bf = 2
224224
225225 let bg = 3
226226
227227 let bh = 0
228228
229229 let bi = 1
230230
231231 let bj = 2
232232
233233 let bk = 3
234234
235235 let bl = 0
236236
237237 let bm = 1
238238
239239 let bn = 2
240240
241241 func bo (bp) = ("no_" + bp)
242242
243243
244244 func bq (bp) = ("lcna_" + bp)
245245
246246
247247 func br (bp) = ("st_" + bp)
248248
249249
250250 func bs (bt,bp) = makeString(["las", bt, bp], "_")
251251
252252
253253 func bu (bv,bp,bw) = ((((("sttao_" + bv) + "_") + bp) + "_") + bw)
254254
255255
256256 func bx (P) = ("wh_" + P)
257257
258258
259259 func by (bp) = ("infraLevel_" + bp)
260260
261261
262262 func bz (P) = ("fortifications_" + P)
263263
264264
265265 func bA (bp) = ("duckCustomNameByAssetId_" + bp)
266266
267267
268268 func bB (c) = ("accountCustomNameByAddr_" + c)
269269
270270
271271 func bC (c) = ("accRefBy_" + c)
272272
273273
274274 func bD (A) = ("onboardArtActivatedOnDuck_" + A)
275275
276276
277277 func bE (c) = ("onboardArtActivatedDuckBy_" + c)
278278
279279
280280 func bF (c) = ("accReferrals_" + c)
281281
282282
283283 func bG (bp) = ("duckOwner_" + bp)
284284
285285
286286 func bH (bw) = ("stakedDuckByOwner_" + bw)
287287
288288
289289 func bI (A) = ("backPack_" + A)
290290
291291
292292 func bJ (A) = ("duckLocation_" + A)
293293
294294
295295 func bK (bL) = ("%s%s__userGwlReleaseTime__" + bL)
296296
297297
298298 func bM () = "emergencyWarehouseProducts"
299299
300300
301301 let bN = "deliveryFund"
302302
303303 let bO = "deliveryLocked"
304304
305305 let bP = "%s__lastTourId"
306306
307307 func bQ (bR) = ("%s%d__tourStaticData__" + toString(bR))
308308
309309
310310 func bS (bR) = ("%s%d__tourDynamicData__" + toString(bR))
311311
312312
313313 func bT (bR,A) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bR), A], "__")
314314
315315
316316 let bU = 0
317317
318318 let bV = 1
319319
320320 let bW = 6
321321
322322 let bX = 1
323323
324324 func bY (bZ,bR) = {
325325 let ca = split(valueOrErrorMessage(getString(bZ, bQ(bR)), (("Error reading tournament " + toString(bR)) + " data")), "__")
326326 let cb = split_4C(valueOrErrorMessage(getString(bZ, bS(bR)), (("Error reading tournament " + toString(bR)) + " data")), "__")
327327 [ca, cb]
328328 }
329329
330330
331331 func cc (bZ,cd) = {
332332 let ce = valueOrElse(getInteger(bZ, bP), 0)
333333 let cf = split(cd, "_")
334334 let ax = lastBlock.timestamp
335335 let cg = bY(bZ, ce)
336336 let ca = cg[bU]
337337 let cb = cg[bV]
338338 if (if (if ((cf[bm] == "T"))
339339 then (parseIntValue(cf[bl]) == ce)
340340 else false)
341341 then (cb[bX] == "INPROGRESS")
342342 else false)
343343 then (parseIntValue(ca[bW]) > ax)
344344 else false
345345 }
346346
347347
348348 func ch (cd) = {
349349 let cf = split(cd, "_")
350350 let ax = lastBlock.timestamp
351351 let ci = parseIntValue(cf[bl])
352352 let cj = parseIntValue(cf[bn])
353353 if (if ((cf[bm] == "D"))
354354 then (ax > (ci + aN))
355355 else false)
356356 then (3 >= cj)
357357 else false
358358 }
359359
360360
361361 func ck (cd) = {
362362 let cl = split(cd, "_")[bm]
363363 if ((cl != "T"))
364364 then (cl != "D")
365365 else false
366366 }
367367
368368
369369 func cm (bZ,cd) = {
370370 let ce = valueOrElse(getInteger(bZ, bP), 0)
371371 let cf = split(cd, "_")
372372 let ax = lastBlock.timestamp
373373 let cg = bY(bZ, ce)
374374 let ca = cg[bU]
375375 let cb = cg[bV]
376376 let cl = cf[bm]
377377 if ((cl == "D"))
378378 then true
379379 else if (if (if ((cf[bm] == "T"))
380380 then (parseIntValue(cf[bl]) == ce)
381381 else false)
382382 then (cb[bX] == "INPROGRESS")
383383 else false)
384384 then (parseIntValue(ca[bW]) > ax)
385385 else false
386386 }
387387
388388
389389 func cn (co) = (parseIntValue(co[aT]) * aQ)
390390
391391
392392 func cp (cq,cr,cs) = throw(((((("Cheat attempt: oldLoc=" + cq) + ", newLoc=") + cr) + ", case=") + toString(cs)))
393393
394394
395395 let ct = false
396396
397397 let cu = false
398398
399399 let cv = true
400400
401401 let cw = take(drop(this.bytes, 1), 1)
402402
403403 let cx = {
404404 let cy = cw
405405 if ((base58'2W' == cy))
406406 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
407407 else if ((base58'2T' == cy))
408408 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
409409 else throw("Unknown chain")
410410 }
411411
412412 let cz = {
413413 let cy = cw
414414 if ((base58'2W' == cy))
415415 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
416416 else if ((base58'2T' == cy))
417417 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
418418 else throw("Unknown chain")
419419 }
420420
421421 let cA = {
422422 let cy = cw
423423 if ((base58'2W' == cy))
424424 then 10000000000
425425 else if ((base58'2T' == cy))
426426 then 100000000
427427 else throw("Unknown chain")
428428 }
429429
430430 let cB = {
431431 let cy = cw
432432 if ((base58'2W' == cy))
433433 then 86400000
434434 else if ((base58'2T' == cy))
435435 then 60000
436436 else throw("Unknown chain")
437437 }
438438
439439 let cC = "__"
440440
441441 let cD = 1000000
442442
443443 let cE = 100000000
444444
445445 let cF = 25
446446
447447 let cG = 100
448448
449449 let cH = 225
450450
451451 let cI = 400
452452
453453 let cJ = 625
454454
455455 let cK = [0, 1, 2, 3, 4, 5]
456456
457457 func cL (cM,cN) = valueOrErrorMessage(getString(cM, cN), makeString(["mandatory ", toString(cM), ".", cN, " is not defined"], ""))
458458
459459
460460 let cO = 1
461461
462462 let cP = 2
463463
464464 let cQ = 3
465465
466466 let cR = 4
467467
468468 let cS = 7
469469
470470 let cT = 8
471471
472472 func cU () = "%s__restConfig"
473473
474474
475475 func cV () = "%s__restAddr"
476476
477477
478478 func cW (cX) = split_4C(cL(cX, cU()), cC)
479479
480480
481481 func cY (cZ,da) = valueOrErrorMessage(addressFromString(cZ[da]), ("Rest cfg doesn't contain address at index " + toString(da)))
482482
483483
484484 let db = addressFromStringValue(valueOrElse(getString(this, cV()), cz))
485485
486486 let cZ = cW(db)
487487
488488 let an = cY(cZ, cO)
489489
490490 let dc = cY(cZ, cP)
491491
492492 let dd = cY(cZ, cQ)
493493
494494 let de = cY(cZ, cR)
495495
496496 let df = cY(cZ, cS)
497497
498498 let dg = cY(cZ, cT)
499499
500500 let dh = 0
501501
502502 let di = 1
503503
504504 let dj = 2
505505
506506 let dk = 3
507507
508508 let dl = "wlg_assetId"
509509
510510 let dm = valueOrErrorMessage(getBinary(de, dl), "WLGOLD is not issued yet")
511511
512512 let dn = "acresAssetId"
513513
514514 let do = valueOrErrorMessage(getBinary(dg, dn), "ACRES is not issued yet")
515515
516516 let dp = 2
517517
518518 func dq (cM) = ("finishBlockForAddr_" + cM)
519519
520520
521521 func dr () = "resTypesProportions"
522522
523523
524524 func ds (dt) = ("resTypesByContinent_" + dt)
525525
526526
527527 func du (bw) = ("stakedLandsByOwner_" + bw)
528528
529529
530530 func dv (bw) = ("stakedPiecesByOwner_" + bw)
531531
532532
533533 func dw (dx) = {
534534 let cy = dx
535535 if ($isInstanceOf(cy, "String"))
536536 then {
537537 let dy = cy
538538 dy
539539 }
540540 else throw("fail to cast into String")
541541 }
542542
543543
544544 func dz (dx) = {
545545 let cy = dx
546546 if ($isInstanceOf(cy, "Int"))
547547 then {
548548 let dA = cy
549549 dA
550550 }
551551 else throw("fail to cast into Int")
552552 }
553553
554554
555555 func dB (dx) = {
556556 let cy = dx
557557 if ($isInstanceOf(cy, "List[Any]"))
558558 then {
559559 let dC = cy
560560 dC
561561 }
562562 else throw("fail to cast into List[Any]")
563563 }
564564
565565
566566 func dD (dx) = {
567567 let cy = dx
568568 if ($isInstanceOf(cy, "Boolean"))
569569 then {
570570 let dy = cy
571571 dy
572572 }
573573 else throw("fail to cast into Boolean")
574574 }
575575
576576
577577 func dE (dF) = {
578578 let cy = dF
579579 if ($isInstanceOf(cy, "(String, Int)"))
580580 then {
581581 let dG = cy
582582 dG
583583 }
584584 else throw("fail to cast into (String, Int)")
585585 }
586586
587587
588588 func dH (dI) = {
589589 let cy = dI
590590 if (("S" == cy))
591591 then cF
592592 else if (("M" == cy))
593593 then cG
594594 else if (("L" == cy))
595595 then cH
596596 else if (("XL" == cy))
597597 then cI
598598 else if (("XXL" == cy))
599599 then cJ
600600 else throw("Unknown land size")
601601 }
602602
603603
604604 func dJ (dy) = isDefined(parseInt(dy))
605605
606606
607607 func dK () = "contractsBlocked"
608608
609609
610610 func dL (c) = ("lastTxIdByUser_" + c)
611611
612612
613613 func dM (dF,dN) = {
614614 let dO = pow(10, 0, dN, 0, 0, DOWN)
615615 let dP = toString((dF % dO))
616616 let dQ = drop(toString(dO), (1 + size(dP)))
617617 (((toString((dF / dO)) + ".") + dQ) + dP)
618618 }
619619
620620
621621 func dR (dS,dT,dU) = {
622622 let dV = value(blockInfoByHeight(dT))
623623 let dW = sha256((value(dV.vrf) + dU))
624624 (toInt(dW) % dS)
625625 }
626626
627627
628628 let dX = {
629629 let cy = cw
630630 if ((base58'2W' == cy))
631631 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
632632 else if ((base58'2T' == cy))
633633 then this
634634 else throw("Unknown chain")
635635 }
636636
637637 let dY = {
638638 let cy = cw
639639 if ((base58'2W' == cy))
640640 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
641641 else if ((base58'2T' == cy))
642642 then this
643643 else throw("Unknown chain")
644644 }
645645
646646 let dZ = {
647647 let cy = cw
648648 if ((base58'2W' == cy))
649649 then if (ct)
650650 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
651651 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
652652 else if ((base58'2T' == cy))
653653 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
654654 else throw("Unknown chain")
655655 }
656656
657657 let ea = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
658658
659659 let eb = 300000
660660
661661 let ec = 5000000
662662
663663 let ed = 50
664664
665665 let ee = 10000000
666666
667667 let ef = {
668668 let cy = cw
669669 if ((base58'2W' == cy))
670670 then 252289527462
671671 else if ((base58'2T' == cy))
672672 then 2522895274
673673 else throw("Unknown chain")
674674 }
675675
676676 let eg = {
677677 let cy = cw
678678 if ((base58'2W' == cy))
679679 then 250000000
680680 else if ((base58'2T' == cy))
681681 then 250000000
682682 else throw("Unknown chain")
683683 }
684684
685685 let eh = 2500000000
686686
687687 let ei = toBigInt(5)
688688
689689 let ej = toBigInt(20)
690690
691691 let ek = toBigInt((20 * 20))
692692
693693 let el = toBigInt(((20 * 20) * 20))
694694
695695 let em = toBigInt((((20 * 20) * 20) * 20))
696696
697697 let en = toBigInt(((((20 * 20) * 20) * 20) * 20))
698698
699699 let eo = 500
700700
701701 func ep () = "nextLandNum"
702702
703703
704704 func eq (er) = ("lcn_" + er)
705705
706706
707707 func es (et) = ("la_" + et)
708708
709709
710710 func eu (bp,bw) = ((("ilao_" + bp) + "_") + bw)
711711
712712
713713 func ev (et) = ("lo_" + et)
714714
715715
716716 func ew (er) = ("duckByCustomName_" + er)
717717
718718
719719 func ex (er) = ("accountByCustomName_" + er)
720720
721721
722722 func ey () = "oldiesList"
723723
724724
725725 let ez = 0
726726
727727 let eA = 1
728728
729729 let eB = 2
730730
731731 let eC = 0
732732
733733 let eD = 5
734734
735735 let eE = 6
736736
737737 let eF = 7
738738
739739 func eG (et,dI) = ((aC + et) + dI)
740740
741741
742742 func eH (eI,eJ) = {
743743 let eK = if ((eI >= 0))
744744 then (((eI + eJ) - 1) / eJ)
745745 else -((((-(eI) + eJ) - 1) / eJ))
746746 (eK * cE)
747747 }
748748
749749
750750 func eL (eM,eN) = {
751751 let eO = (((((eN[0] + eN[1]) + eN[2]) + eN[3]) + eN[4]) + eN[5])
752752 if ((0 >= eO))
753753 then throw("Zero weights sum")
754754 else {
755755 let eP = fraction(eM, cD, eO)
756756 func eQ (eR,eS) = (eR :+ fraction(eS, eP, cD))
757757
758758 let eT = eN
759759 let eU = size(eT)
760760 let eV = nil
761761 func eW (eX,eY) = if ((eY >= eU))
762762 then eX
763763 else eQ(eX, eT[eY])
764764
765765 func eZ (eX,eY) = if ((eY >= eU))
766766 then eX
767767 else throw("List size exceeds 6")
768768
769769 eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
770770 }
771771 }
772772
773773
774774 func fa (eM) = {
775775 let fb = split(value(getString(dr())), "_")
776776 if ((size(fb) != aF))
777777 then throw("Wrong proportions data")
778778 else {
779779 let fc = [parseIntValue(fb[0]), parseIntValue(fb[1]), parseIntValue(fb[2]), parseIntValue(fb[3]), parseIntValue(fb[4]), parseIntValue(fb[5])]
780780 eL(eM, fc)
781781 }
782782 }
783783
784784
785785 func fd (fe,ff,fg) = {
786786 let fh = fa(fg)
787787 func fi (eR,da) = {
788788 let fj = (parseIntValue(ff[da]) - fh[da])
789789 if ((0 > fj))
790790 then throw(((((("Not enough material idx=" + toString(da)) + ", you have ") + ff[da]) + ", but need ") + toString(fh[da])))
791791 else (eR :+ toString(fj))
792792 }
793793
794794 if (fe)
795795 then {
796796 let eT = cK
797797 let eU = size(eT)
798798 let eV = nil
799799 func eW (eX,eY) = if ((eY >= eU))
800800 then eX
801801 else fi(eX, eT[eY])
802802
803803 func eZ (eX,eY) = if ((eY >= eU))
804804 then eX
805805 else throw("List size exceeds 6")
806806
807807 eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
808808 }
809809 else ff
810810 }
811811
812812
813813 func fk (fl,fm) = if ((fm == ""))
814814 then $Tuple2(fl, false)
815815 else {
816816 func fn (eR,fo) = {
817817 let fp = split(fo, ",")
818818 if ((size(fp) != 2))
819819 then throw("Incorrect format, should be index,amount")
820820 else {
821821 let da = parseIntValue(fp[0])
822822 if (if ((0 > da))
823823 then true
824824 else (da >= size(aS)))
825825 then throw("Unknown product idx")
826826 else {
827827 let fq = parseIntValue(fp[1])
828828 let fr = split(eR._1, (fp[0] + ":"))
829829 if ((size(fr) != 2))
830830 then throw((("You don't have " + aO[da]) + " equipped"))
831831 else {
832832 let fs = fr[1]
833833 let ft = if (dJ(take(drop(fs, 1), 1)))
834834 then 2
835835 else 1
836836 let fu = parseIntValue(take(fs, ft))
837837 let fv = drop(fs, ft)
838838 let fw = if ((fu >= fq))
839839 then (fu - fq)
840840 else throw(((((("You equipped " + toString(fu)) + " of ") + aO[da]) + ", but tried to use ") + toString(fq)))
841841 $Tuple2(((((fr[0] + fp[0]) + ":") + toString(fw)) + fv), if (eR._2)
842842 then true
843843 else if (if ((da >= 6))
844844 then (8 >= da)
845845 else false)
846846 then (fw == 0)
847847 else false)
848848 }
849849 }
850850 }
851851 }
852852
853853 let eT = split(fm, "_")
854854 let eU = size(eT)
855855 let eV = $Tuple2(fl, false)
856856 func eW (eX,eY) = if ((eY >= eU))
857857 then eX
858858 else fn(eX, eT[eY])
859859
860860 func eZ (eX,eY) = if ((eY >= eU))
861861 then eX
862862 else throw("List size exceeds 10")
863863
864864 eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
865865 }
866866
867867
868868 func fx (fy) = {
869869 let fz = if ((fy == ""))
870870 then nil
871871 else split_4C(fy, "_")
872872 func fA (eR,co) = {
873873 let fB = (size(eR) / 8)
874874 let fu = if ((size(fz) > fB))
875875 then parseIntValue(fz[fB])
876876 else 0
877877 (eR + toBytes(fu))
878878 }
879879
880880 let eT = aS
881881 let eU = size(eT)
882882 let eV = base58''
883883 func eW (eX,eY) = if ((eY >= eU))
884884 then eX
885885 else fA(eX, eT[eY])
886886
887887 func eZ (eX,eY) = if ((eY >= eU))
888888 then eX
889889 else throw("List size exceeds 50")
890890
891891 eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
892892 }
893893
894894
895895 func fC (fD) = {
896896 func fE (eR,co) = {
897897 let fB = size(eR)
898898 let fF = take(drop(fD, (8 * fB)), 8)
899899 (eR :+ toString(toInt(fF)))
900900 }
901901
902902 makeString_2C({
903903 let eT = aS
904904 let eU = size(eT)
905905 let eV = nil
906906 func eW (eX,eY) = if ((eY >= eU))
907907 then eX
908908 else fE(eX, eT[eY])
909909
910910 func eZ (eX,eY) = if ((eY >= eU))
911911 then eX
912912 else throw("List size exceeds 50")
913913
914914 eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
915915 }, "_")
916916 }
917917
918918
919919 func fG (fH,fI) = {
920920 func fJ (eR,fB) = {
921921 let fK = if ((size(fH) > (7 + fB)))
922922 then fH[(7 + fB)]
923923 else 0
924924 if ((parseIntValue(fI[fB]) > (fH[fB] + fK)))
925925 then throw(("Requirement not satisfied: " + j[fB]))
926926 else true
927927 }
928928
929929 let eT = [0, 1, 2, 3, 4, 5, 6]
930930 let eU = size(eT)
931931 let eV = false
932932 func eW (eX,eY) = if ((eY >= eU))
933933 then eX
934934 else fJ(eX, eT[eY])
935935
936936 func eZ (eX,eY) = if ((eY >= eU))
937937 then eX
938938 else throw("List size exceeds 7")
939939
940940 eZ(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7)
941941 }
942942
943943
944944 func fL (fM,fz,fN,fH,fO,fP) = {
945945 let fp = split(fM, ":")
946946 if ((size(fp) != 2))
947947 then throw("Incorrect format, should be index:amount")
948948 else if (if (!(fN))
949949 then (size(fp[0]) != 2)
950950 else false)
951951 then throw("Product idx should be 2 digits, zero padded")
952952 else {
953953 let fQ = parseIntValue(fp[0])
954954 let fR = parseIntValue(fp[1])
955955 if (!(containsElement(aR, fQ)))
956956 then throw((("Product '" + aO[fQ]) + "' cannot be used for land defense"))
957957 else if ((0 > fR))
958958 then throw("Count can't be negative")
959959 else if ((fR > t))
960960 then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fQ]))
961961 else if ((fR == 0))
962962 then $Tuple3(fz, fO, fP)
963963 else {
964964 let fS = take(fz, (8 * fQ))
965965 let fu = toInt(take(drop(fz, (8 * fQ)), 8))
966966 let fv = drop(fz, (8 * (fQ + 1)))
967967 let co = split(aS[fQ], "_")
968968 if (if (!(fN))
969969 then (fR > fu)
970970 else false)
971971 then throw(((((("You have " + toString(fu)) + " of ") + aO[fQ]) + ", but tried to use ") + toString(fR)))
972972 else {
973973 let fw = if (if (!(fN))
974974 then fG(fH, split(co[aV], ","))
975975 else false)
976976 then (fu - fR)
977977 else (fu + fR)
978978 let fT = (eH(fw, aX) - eH(fu, aX))
979979 $Tuple3(((fS + toBytes(fw)) + fv), (fO + fT), (fP - fT))
980980 }
981981 }
982982 }
983983 }
984984
985985
986986 func fU (fM,fz,fN,fV,fW,fX,fH) = {
987987 let fp = split(fM, ":")
988988 if ((size(fp) != 2))
989989 then throw("Incorrect format, should be index:amount")
990990 else if (if (!(fN))
991991 then (size(fp[0]) != 2)
992992 else false)
993993 then throw("Product idx should be 2 digits, zero padded")
994994 else {
995995 let fQ = parseIntValue(fp[0])
996996 let fR = parseIntValue(fp[1])
997997 if (if ((0 > fQ))
998998 then true
999999 else (fQ >= size(aS)))
10001000 then throw("Unknown product idx")
10011001 else if ((0 > fR))
10021002 then throw("Count can't be negative")
10031003 else if ((fR > t))
10041004 then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fQ]))
10051005 else if ((fR == 0))
10061006 then $Tuple2(fz, false)
10071007 else {
10081008 let fS = take(fz, (8 * fQ))
10091009 let fu = toInt(take(drop(fz, (8 * fQ)), 8))
10101010 let fv = drop(fz, (8 * (fQ + 1)))
10111011 let co = split(aS[fQ], "_")
10121012 if (if (!(fN))
10131013 then (fR > fu)
10141014 else false)
10151015 then throw(((((("You have " + toString(fu)) + " of ") + aO[fQ]) + ", but tried to use ") + toString(fR)))
10161016 else {
10171017 let fY = if (if (!(fN))
10181018 then fG(fH, split(co[aV], ","))
10191019 else false)
10201020 then {
10211021 let fZ = co[aW]
10221022 if ((fZ == ""))
10231023 then throw("Item cannot be equipped")
10241024 else {
10251025 let ga = parseIntValue(fZ)
10261026 let gb = (ga / 100)
10271027 if ((fV != gb))
10281028 then throw("Segment incompatible")
10291029 else {
10301030 let gc = ((ga % 100) / 10)
10311031 if ((fW != gc))
10321032 then throw("Slot incompatible")
10331033 else {
10341034 let gd = (ga % 10)
10351035 if (if ((fX != 0))
10361036 then (gd > 1)
10371037 else false)
10381038 then throw("Big items should occupy slot 0")
10391039 else (gd > 1)
10401040 }
10411041 }
10421042 }
10431043 }
10441044 else false
10451045 $Tuple2(((fS + toBytes((fu + (if (fN)
10461046 then fR
10471047 else -(fR))))) + fv), fY)
10481048 }
10491049 }
10501050 }
10511051 }
10521052
10531053
10541054 func ge (gf,gg,fN,fV,fW,gh) = if ((gf != ""))
10551055 then {
10561056 let gi = split(gf, ",")
10571057 if ((size(gi) > s))
10581058 then throw("Wrong slots format")
10591059 else {
10601060 let gj = gi[0]
10611061 let gk = if ((size(gi) > 1))
10621062 then gi[1]
10631063 else ""
10641064 if (if ((gj == ""))
10651065 then (gk == "")
10661066 else false)
10671067 then gg
10681068 else {
10691069 let gl = if ((gj != ""))
10701070 then fU(gj, gg, fN, fV, fW, 0, gh)
10711071 else $Tuple2(gg, false)
10721072 if ((gk != ""))
10731073 then if (gl._2)
10741074 then throw("Big item already occupies slot")
10751075 else fU(gk, gl._1, fN, fV, fW, 1, gh)._1
10761076 else gl._1
10771077 }
10781078 }
10791079 }
10801080 else gg
10811081
10821082
10831083 func gm (gn,go,fN,gh) = {
10841084 func fV (eR,gp) = {
10851085 let fB = eR._1
10861086 let fW = split(gp, ";")
10871087 if ((size(fW) != r))
10881088 then throw("Wrong segment format")
10891089 else {
10901090 let gq = fW[0]
10911091 let gr = fW[1]
10921092 if (if ((gq == ""))
10931093 then (gr == "")
10941094 else false)
10951095 then $Tuple2((fB + 1), eR._2)
10961096 else {
10971097 let gs = ge(gq, eR._2, fN, fB, 0, gh)
10981098 $Tuple2((fB + 1), ge(gr, gs, fN, fB, 1, gh))
10991099 }
11001100 }
11011101 }
11021102
11031103 ( let eT = gn
11041104 let eU = size(eT)
11051105 let eV = $Tuple2(0, go)
11061106 func eW (eX,eY) = if ((eY >= eU))
11071107 then eX
11081108 else fV(eX, eT[eY])
11091109
11101110 func eZ (eX,eY) = if ((eY >= eU))
11111111 then eX
11121112 else throw("List size exceeds 6")
11131113
11141114 eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6))._2
11151115 }
11161116
11171117
11181118 func gt (gn,go,fO,fP,fN,fH) = if ((3 > size(gn)))
11191119 then throw("At least duck, mines and traps parts are required")
11201120 else {
11211121 func fV (eR,gp) = {
11221122 let fB = eR._1
11231123 if ((fB == 0))
11241124 then $Tuple4((fB + 1), eR._2, eR._3, eR._4)
11251125 else {
11261126 let gu = fL(gp, eR._2, fN, fH, eR._3, eR._4)
11271127 $Tuple4((fB + 1), gu._1, gu._2, gu._3)
11281128 }
11291129 }
11301130
11311131 let gv = {
11321132 let eT = gn
11331133 let eU = size(eT)
11341134 let eV = $Tuple4(0, go, fO, fP)
11351135 func eW (eX,eY) = if ((eY >= eU))
11361136 then eX
11371137 else fV(eX, eT[eY])
11381138
11391139 func eZ (eX,eY) = if ((eY >= eU))
11401140 then eX
11411141 else throw("List size exceeds 10")
11421142
11431143 eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
11441144 }
11451145 $Tuple3(gv._2, gv._3, gv._4)
11461146 }
11471147
11481148
11491149 func gw (A) = {
11501150 let gx = F(A)
11511151 let gy = split(valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
11521152 let gz = gm(gy, ea, true, nil)
11531153 let gA = split(gy[p], ";")[1]
11541154 let ao = if ((gA == ""))
11551155 then 0
11561156 else {
11571157 let gB = split(gA, ",")[0]
11581158 if ((gB == ""))
11591159 then 0
11601160 else {
11611161 let fM = split(gB, ":")
11621162 let da = fM[0]
11631163 let gC = fM[1]
11641164 if (if (if (if (if ((da == "06"))
11651165 then true
11661166 else (da == "07"))
11671167 then true
11681168 else (da == "08"))
11691169 then (gC != "")
11701170 else false)
11711171 then (parseIntValue(gC) > 0)
11721172 else false)
11731173 then parseIntValue(split(aS[parseIntValue(da)], "_")[aU])
11741174 else 0
11751175 }
11761176 }
11771177 let gh = am(this, A, ao, true)
11781178 let gD = gm(gy, gz, false, gh)
11791179 (gD == gD)
11801180 }
11811181
11821182
11831183 func gE (gF,gG,gH,gI) = if ((size(gF) != aF))
11841184 then throw("Wrong proportions data")
11851185 else {
11861186 func gJ (eR,gK) = {
11871187 let fj = (parseIntValue(gF[gK]) + ((gI * gG[gK]) * gH))
11881188 if ((0 > fj))
11891189 then throw(((((((("Panic! Pieces of type=" + toString(gK)) + ", sign=") + toString(gI)) + ", terrainCounts[i]=") + toString(gG[gK])) + ", landSizeIndex=") + toString(gH)))
11901190 else (eR :+ toString(fj))
11911191 }
11921192
11931193 let eT = cK
11941194 let eU = size(eT)
11951195 let eV = nil
11961196 func eW (eX,eY) = if ((eY >= eU))
11971197 then eX
11981198 else gJ(eX, eT[eY])
11991199
12001200 func eZ (eX,eY) = if ((eY >= eU))
12011201 then eX
12021202 else throw("List size exceeds 6")
12031203
12041204 eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
12051205 }
12061206
12071207
12081208 func gL (gG,gH,gI) = {
12091209 let gF = split(valueOrElse(getString(dr()), "0_0_0_0_0_0"), "_")
12101210 makeString(gE(gF, gG, gH, gI), "_")
12111211 }
12121212
12131213
12141214 func gM (gN) = [(size(split(gN, "A")) - 1), (size(split(gN, "B")) - 1), (size(split(gN, "C")) - 1), (size(split(gN, "D")) - 1), (size(split(gN, "E")) - 1), (size(split(gN, "F")) - 1)]
12151215
12161216
12171217 func gO (gP,gG,gQ,gH,gR) = {
12181218 func gS (eR,gK) = {
12191219 let gT = ((fraction(gQ, gR, a) * gG[gK]) * gH)
12201220 (eR :+ toString((parseIntValue(gP[gK]) + gT)))
12211221 }
12221222
12231223 let fc = {
12241224 let eT = cK
12251225 let eU = size(eT)
12261226 let eV = nil
12271227 func eW (eX,eY) = if ((eY >= eU))
12281228 then eX
12291229 else gS(eX, eT[eY])
12301230
12311231 func eZ (eX,eY) = if ((eY >= eU))
12321232 then eX
12331233 else throw("List size exceeds 6")
12341234
12351235 eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
12361236 }
12371237 makeString(fc, "_")
12381238 }
12391239
12401240
12411241 func gU (gG,gQ,gH,gR) = {
12421242 func gS (eR,gK) = {
12431243 let gT = ((fraction(gQ, gR, a) * gG[gK]) * gH)
12441244 $Tuple2((eR._1 :+ gT), (eR._2 + gT))
12451245 }
12461246
12471247 let eT = cK
12481248 let eU = size(eT)
12491249 let eV = $Tuple2(nil, 0)
12501250 func eW (eX,eY) = if ((eY >= eU))
12511251 then eX
12521252 else gS(eX, eT[eY])
12531253
12541254 func eZ (eX,eY) = if ((eY >= eU))
12551255 then eX
12561256 else throw("List size exceeds 6")
12571257
12581258 eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
12591259 }
12601260
12611261
12621262 func gV (gW,gX,gY,gZ) = {
12631263 let ha = gY._1
12641264 let hb = gY._2
12651265 if ((hb == 0))
12661266 then $Tuple2(makeString(gW, "_"), makeString(gX, "_"))
12671267 else if ((gZ >= hb))
12681268 then {
12691269 func hc (eR,gK) = (eR :+ toString((parseIntValue(gW[gK]) + ha[gK])))
12701270
12711271 let fc = {
12721272 let eT = cK
12731273 let eU = size(eT)
12741274 let eV = nil
12751275 func eW (eX,eY) = if ((eY >= eU))
12761276 then eX
12771277 else hc(eX, eT[eY])
12781278
12791279 func eZ (eX,eY) = if ((eY >= eU))
12801280 then eX
12811281 else throw("List size exceeds 6")
12821282
12831283 eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
12841284 }
12851285 $Tuple2(makeString(fc, "_"), makeString(gX, "_"))
12861286 }
12871287 else {
12881288 func hd (eR,gK) = {
12891289 let he = fraction(ha[gK], gZ, hb)
12901290 $Tuple2((eR._1 :+ toString((parseIntValue(gW[gK]) + he))), (eR._2 :+ toString(((parseIntValue(gX[gK]) + ha[gK]) - he))))
12911291 }
12921292
12931293 let fc = {
12941294 let eT = cK
12951295 let eU = size(eT)
12961296 let eV = $Tuple2(nil, nil)
12971297 func eW (eX,eY) = if ((eY >= eU))
12981298 then eX
12991299 else hd(eX, eT[eY])
13001300
13011301 func eZ (eX,eY) = if ((eY >= eU))
13021302 then eX
13031303 else throw("List size exceeds 6")
13041304
13051305 eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
13061306 }
13071307 $Tuple2(makeString(fc._1, "_"), makeString(fc._2, "_"))
13081308 }
13091309 }
13101310
13111311
13121312 func hf (hg) = if ((hg >= toBigInt(0)))
13131313 then hg
13141314 else -(hg)
13151315
13161316
13171317 let hh = [[6, 9, 14, 15, 16], [5, 8, 13, 14, 15], [1, 4, 9, 10, 15], [1, 6, 7, 15, 19], [4, 7, 8, 13, 18]]
13181318
13191319 func hi (dA,hj) = {
13201320 let hk = toInt((dA % ej))
13211321 let hl = if ((hj[0] > hk))
13221322 then "A"
13231323 else if ((hj[1] > hk))
13241324 then "B"
13251325 else if ((hj[2] > hk))
13261326 then "C"
13271327 else if ((hj[3] > hk))
13281328 then "D"
13291329 else if ((hj[4] > hk))
13301330 then "E"
13311331 else "F"
13321332 hl
13331333 }
13341334
13351335
13361336 func hm (hn,ho) = {
13371337 let hp = hh[ho]
13381338 func hq (eR,eS) = $Tuple2((((((eR._1 + hi(eR._2, hp)) + hi((eR._2 / ej), hp)) + hi((eR._2 / ek), hp)) + hi((eR._2 / el), hp)) + hi((eR._2 / em), hp)), (eR._2 / en))
13391339
13401340 let gv = {
13411341 let eT = [1, 2, 3, 4, 5]
13421342 let eU = size(eT)
13431343 let eV = $Tuple2("", (hn / ei))
13441344 func eW (eX,eY) = if ((eY >= eU))
13451345 then eX
13461346 else hq(eX, eT[eY])
13471347
13481348 func eZ (eX,eY) = if ((eY >= eU))
13491349 then eX
13501350 else throw("List size exceeds 5")
13511351
13521352 eZ(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5)
13531353 }
13541354 gv._1
13551355 }
13561356
13571357
13581358 let hr = [7, 2, 15, 19, 8, 24, 1, 21, 16, 5, 0, 22, 20, 23, 11, 4, 18, 12, 6, 10, 3, 17, 13, 9, 14]
13591359
13601360 let hs = ["A", "B", "C", "D", "E", "F"]
13611361
13621362 func ht (hu,gH) = {
13631363 func hv (eR,dy) = {
13641364 let fB = eR._2
13651365 let hw = parseIntValue(dy)
13661366 let hg = if ((hw == 0))
13671367 then 0
13681368 else if ((hw >= (4 * gH)))
13691369 then (hw / gH)
13701370 else if ((hw > (3 * gH)))
13711371 then 3
13721372 else (((hw - 1) / gH) + 1)
13731373 $Tuple3((eR._1 :+ hg), (eR._2 + 1), (eR._3 + hg))
13741374 }
13751375
13761376 let gv = {
13771377 let eT = hu
13781378 let eU = size(eT)
13791379 let eV = $Tuple3(nil, 0, 0)
13801380 func eW (eX,eY) = if ((eY >= eU))
13811381 then eX
13821382 else hv(eX, eT[eY])
13831383
13841384 func eZ (eX,eY) = if ((eY >= eU))
13851385 then eX
13861386 else throw("List size exceeds 6")
13871387
13881388 eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
13891389 }
13901390 let hx = gv._1
13911391 let hy = value(indexOf(hx, max(hx)))
13921392 let hz = (gv._3 - 25)
13931393 func hA (eR,da) = {
13941394 let dF = if ((da == hy))
13951395 then (hx[da] - hz)
13961396 else hx[da]
13971397 let dQ = if ((dF == 0))
13981398 then nil
13991399 else split(drop(toString(pow(10, 0, dF, 0, 0, DOWN)), 1), "")
14001400 let ga = hs[da]
14011401 func hB (hC,hD) = (hC :+ ga)
14021402
14031403 let hE = {
14041404 let eT = dQ
14051405 let eU = size(eT)
14061406 let eV = nil
14071407 func hF (eX,eY) = if ((eY >= eU))
14081408 then eX
14091409 else hB(eX, eT[eY])
14101410
14111411 func hG (eX,eY) = if ((eY >= eU))
14121412 then eX
14131413 else throw("List size exceeds 25")
14141414
14151415 hG(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25)
14161416 }
14171417 (eR ++ hE)
14181418 }
14191419
14201420 let fc = {
14211421 let eT = cK
14221422 let eU = size(eT)
14231423 let eV = nil
14241424 func hF (eX,eY) = if ((eY >= eU))
14251425 then eX
14261426 else hA(eX, eT[eY])
14271427
14281428 func hG (eX,eY) = if ((eY >= eU))
14291429 then eX
14301430 else throw("List size exceeds 6")
14311431
14321432 hG(hF(hF(hF(hF(hF(hF(eV, 0), 1), 2), 3), 4), 5), 6)
14331433 }
14341434 func hH (eR,fB) = (eR + fc[fB])
14351435
14361436 let eT = hr
14371437 let eU = size(eT)
14381438 let eV = ""
14391439 func hI (eX,eY) = if ((eY >= eU))
14401440 then eX
14411441 else hH(eX, eT[eY])
14421442
14431443 func hJ (eX,eY) = if ((eY >= eU))
14441444 then eX
14451445 else throw("List size exceeds 25")
14461446
14471447 hJ(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25)
14481448 }
14491449
14501450
14511451 func hK (hL) = {
14521452 let gu = split(valueOrElse(getString(hL), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
14531453 [toString(valueOrElse(parseInt(gu[bh]), 0)), if ((size(split(gu[bi], "_")) == aF))
14541454 then gu[bi]
14551455 else "0_0_0_0_0_0", if ((size(split(gu[bj], "_")) == aF))
14561456 then gu[bj]
14571457 else "0_0_0_0_0_0", gu[bk]]
14581458 }
14591459
14601460
14611461 func hM (hN) = {
14621462 let fp = split(hN, "_")
14631463 ((aI * (parseIntValue(fp[1]) + 1)) * parseIntValue(fp[0]))
14641464 }
14651465
14661466
14671467 func hO (hP) = {
14681468 let hQ = hP[bb]
14691469 func hR (eR,hS) = (eR + parseIntValue(hS))
14701470
14711471 func hT (eR,hS) = {
14721472 let da = eR._1
14731473 let eK = (((parseIntValue(hS) + aX) - 1) / aX)
14741474 $Tuple2((da + 1), (eR._2 + (eK * cE)))
14751475 }
14761476
14771477 let hU = {
14781478 let eT = split(hP[aZ], "_")
14791479 let eU = size(eT)
14801480 let eV = 0
14811481 func eW (eX,eY) = if ((eY >= eU))
14821482 then eX
14831483 else hR(eX, eT[eY])
14841484
14851485 func eZ (eX,eY) = if ((eY >= eU))
14861486 then eX
14871487 else throw("List size exceeds 6")
14881488
14891489 eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
14901490 }
14911491 let hV = {
14921492 let eT = split(hP[ba], "_")
14931493 let eU = size(eT)
14941494 let eV = 0
14951495 func hF (eX,eY) = if ((eY >= eU))
14961496 then eX
14971497 else hR(eX, eT[eY])
14981498
14991499 func hG (eX,eY) = if ((eY >= eU))
15001500 then eX
15011501 else throw("List size exceeds 6")
15021502
15031503 hG(hF(hF(hF(hF(hF(hF(eV, 0), 1), 2), 3), 4), 5), 6)
15041504 }
15051505 let hW = if ((hQ == ""))
15061506 then 0
15071507 else ( let eT = split_4C(hQ, "_")
15081508 let eU = size(eT)
15091509 let eV = $Tuple2(0, 0)
15101510 func hI (eX,eY) = if ((eY >= eU))
15111511 then eX
15121512 else hT(eX, eT[eY])
15131513
15141514 func hJ (eX,eY) = if ((eY >= eU))
15151515 then eX
15161516 else throw("List size exceeds 50")
15171517
15181518 hJ(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50))._2
15191519 ((hU + hV) + hW)
15201520 }
15211521
15221522
15231523 func hX (hY,hZ,ia) = {
15241524 let hN = ((toString(hZ) + "_") + toString(ia))
15251525 let ib = hM(hN)
15261526 let ic = valueOrElse(getString(hY), (hN + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
15271527 let id = split_4C(ic, ":")
15281528 let ie = hO(id)
15291529 let if = if ((5 > size(id)))
15301530 then makeString(["0", toString(ie), toString((ib - ie)), toString(ib)], "_")
15311531 else {
15321532 let ig = split(id[bc], "_")
15331533 let ih = parseIntValue(ig[bd])
15341534 let ii = if ((size(ig) > 1))
15351535 then parseIntValue(ig[be])
15361536 else ie
15371537 makeString([toString(ih), toString(ii), toString(((ib - ih) - ii)), toString(ib)], "_")
15381538 }
15391539 [id[aY], if ((size(split(id[aZ], "_")) == aF))
15401540 then id[aZ]
15411541 else "0_0_0_0_0_0", if ((size(split(id[ba], "_")) == aF))
15421542 then id[ba]
15431543 else "0_0_0_0_0_0", id[bb], if]
15441544 }
15451545
15461546
15471547 func ij (hP) = {
15481548 let ik = hO(hP)
15491549 let il = parseIntValue(split(hP[bc], "_")[bd])
15501550 ((hM(hP[aY]) - ik) - il)
15511551 }
15521552
15531553
15541554 func im (in,hP,io) = if ((size(in) != 3))
15551555 then throw("cargoListStr should contain exactly 2 ':' separators")
15561556 else {
15571557 let ip = split(in[0], "_")
15581558 let iq = split(in[1], "_")
15591559 let ir = if ((in[2] == ""))
15601560 then nil
15611561 else split_4C(in[2], "_")
15621562 if ((size(ip) != aF))
15631563 then throw("All 6 resources should be passed")
15641564 else if ((size(iq) != aF))
15651565 then throw("All 6 materials should be passed")
15661566 else {
15671567 let gZ = ij(hP)
15681568 let is = split(hP[aZ], "_")
15691569 let it = split(hP[ba], "_")
15701570 let iu = if ((hP[bb] == ""))
15711571 then nil
15721572 else split_4C(hP[bb], "_")
15731573 let gX = split(io[bi], "_")
15741574 let iv = split(io[bj], "_")
15751575 let iw = if ((io[bk] == ""))
15761576 then nil
15771577 else split_4C(io[bk], "_")
15781578 func ix (eR,hS) = {
15791579 let gK = eR._1
15801580 let iy = parseIntValue(hS)
15811581 let iz = parseIntValue(is[gK])
15821582 let iA = parseIntValue(gX[gK])
15831583 if ((iy == 0))
15841584 then $Tuple4((gK + 1), (eR._2 :+ is[gK]), (eR._3 :+ gX[gK]), eR._4)
15851585 else if ((iy > 0))
15861586 then if ((iy > iA))
15871587 then throw((((("Attempt to take " + hS) + " from backpack, but only ") + toString(iA)) + " available"))
15881588 else $Tuple4((gK + 1), (eR._2 :+ toString((iz + iy))), (eR._3 :+ toString((iA - iy))), (eR._4 + iy))
15891589 else if ((-(iy) > iz))
15901590 then throw((((("Attempt to take " + toString(-(iy))) + " from warehouse, but only ") + toString(iz)) + " available"))
15911591 else $Tuple4((gK + 1), (eR._2 :+ toString((iz + iy))), (eR._3 :+ toString((iA - iy))), (eR._4 + iy))
15921592 }
15931593
15941594 let fc = {
15951595 let eT = ip
15961596 let eU = size(eT)
15971597 let eV = $Tuple4(0, nil, nil, 0)
15981598 func eW (eX,eY) = if ((eY >= eU))
15991599 then eX
16001600 else ix(eX, eT[eY])
16011601
16021602 func eZ (eX,eY) = if ((eY >= eU))
16031603 then eX
16041604 else throw("List size exceeds 6")
16051605
16061606 eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
16071607 }
16081608 func iB (eR,hS) = {
16091609 let gK = eR._1
16101610 let iy = parseIntValue(hS)
16111611 let iC = parseIntValue(it[gK])
16121612 let iD = parseIntValue(iv[gK])
16131613 if ((iy == 0))
16141614 then $Tuple4((gK + 1), (eR._2 :+ it[gK]), (eR._3 :+ iv[gK]), eR._4)
16151615 else if ((iy > 0))
16161616 then if ((iy > iD))
16171617 then throw((((("Attempt to take " + hS) + " from backpack, but only ") + toString(iD)) + " available"))
16181618 else $Tuple4((gK + 1), (eR._2 :+ toString((iC + iy))), (eR._3 :+ toString((iD - iy))), (eR._4 + iy))
16191619 else if ((-(iy) > iC))
16201620 then throw((((("Attempt to take " + toString(-(iy))) + " from warehouse, but only ") + toString(iC)) + " available"))
16211621 else $Tuple4((gK + 1), (eR._2 :+ toString((iC + iy))), (eR._3 :+ toString((iD - iy))), (eR._4 + iy))
16221622 }
16231623
16241624 let gq = {
16251625 let eT = iq
16261626 let eU = size(eT)
16271627 let eV = $Tuple4(0, nil, nil, fc._4)
16281628 func hF (eX,eY) = if ((eY >= eU))
16291629 then eX
16301630 else iB(eX, eT[eY])
16311631
16321632 func hG (eX,eY) = if ((eY >= eU))
16331633 then eX
16341634 else throw("List size exceeds 6")
16351635
16361636 hG(hF(hF(hF(hF(hF(hF(eV, 0), 1), 2), 3), 4), 5), 6)
16371637 }
16381638 func iE (eR,hS) = {
16391639 let gK = eR._1
16401640 let iy = parseIntValue(hS)
16411641 let iF = if ((size(iu) > gK))
16421642 then parseIntValue(iu[gK])
16431643 else 0
16441644 let iG = if ((size(iw) > gK))
16451645 then parseIntValue(iw[gK])
16461646 else 0
16471647 if ((iy == 0))
16481648 then $Tuple4((gK + 1), (eR._2 :+ toString(iF)), (eR._3 :+ toString(iG)), eR._4)
16491649 else if ((iy > 0))
16501650 then if ((iy > iG))
16511651 then throw((((("Attempt to take " + hS) + " from backpack, but only ") + toString(iG)) + " available"))
16521652 else {
16531653 let fT = (eH((iF + iy), aX) - eH(iF, aX))
16541654 $Tuple4((gK + 1), (eR._2 :+ toString((iF + iy))), (eR._3 :+ toString((iG - iy))), (eR._4 + fT))
16551655 }
16561656 else if ((-(iy) > iF))
16571657 then throw((((("Attempt to take " + toString(-(iy))) + " from warehouse, but only ") + toString(iF)) + " available"))
16581658 else {
16591659 let fT = (eH((iF + iy), aX) - eH(iF, aX))
16601660 $Tuple4((gK + 1), (eR._2 :+ toString((iF + iy))), (eR._3 :+ toString((iG - iy))), (eR._4 + fT))
16611661 }
16621662 }
16631663
16641664 let gu = if ((size(ir) != 0))
16651665 then {
16661666 let eT = ir
16671667 let eU = size(eT)
16681668 let eV = $Tuple4(0, nil, nil, gq._4)
16691669 func hI (eX,eY) = if ((eY >= eU))
16701670 then eX
16711671 else iE(eX, eT[eY])
16721672
16731673 func hJ (eX,eY) = if ((eY >= eU))
16741674 then eX
16751675 else throw("List size exceeds 50")
16761676
16771677 hJ(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
16781678 }
16791679 else $Tuple4(0, iu, iw, gq._4)
16801680 let iH = gu._4
16811681 if ((iH > gZ))
16821682 then throw((((("Attempt to put total " + toString(iH)) + " stuff, but only ") + toString(gZ)) + " warehouse space left"))
16831683 else $Tuple7(makeString(fc._2, "_"), makeString(gq._2, "_"), makeString_2C(gu._2, "_"), makeString(fc._3, "_"), makeString(gq._3, "_"), makeString_2C(gu._3, "_"), iH)
16841684 }
16851685 }
16861686
16871687
16881688 func iI (iJ,iK) = {
16891689 let bL = toString(iJ)
16901690 let iL = hf(toBigInt(iK))
16911691 let iM = valueOrElse(getInteger(ep()), (eo + 1))
16921692 let et = toString(iM)
16931693 let ho = toInt((iL % ei))
16941694 let gN = hm(iL, ho)
16951695 let dt = aP[ho]
16961696 let iN = Issue(eG(et, "S"), makeString([et, "S", gN, dt], "_"), 1, 0, false)
16971697 let bp = calculateAssetId(iN)
16981698 let iO = toBase58String(bp)
16991699 $Tuple2([IntegerEntry(ep(), (iM + 1)), iN, StringEntry(es(et), iO), StringEntry(bo(iO), bL), StringEntry(ev(et), bL), IntegerEntry(by(iO), 0), IntegerEntry(eu(iO, bL), 0), ScriptTransfer(iJ, 1, bp)], $Tuple2(iO, dt))
17001700 }
17011701
17021702
17031703 func iP (bL,iQ,iR) = if (!(sigVerify_8Kb(iQ, iR, dZ)))
17041704 then throw("signature does not match")
17051705 else {
17061706 let fp = split_4C(toUtf8String(iQ), ";")
17071707 let iS = split_4C(fp[0], "|")
17081708 let iT = split(iS[eC], "_")
17091709 let iU = parseIntValue(iT[0])
17101710 let iV = parseIntValue(iT[1])
17111711 let iW = split(fp[1], ":")
17121712 let iX = iW[0]
17131713 let iY = parseIntValue(iS[eD])
17141714 if (if ((iY > (lastBlock.timestamp + eb)))
17151715 then true
17161716 else ((lastBlock.timestamp - eb) > iY))
17171717 then throw(((("signature outdated: logTime=" + toString(iY)) + ", bcTime=") + toString(lastBlock.timestamp)))
17181718 else {
17191719 let iZ = iW[1]
17201720 let ja = valueOrElse(getString(dL(bL)), "")
17211721 if ((ja != iZ))
17221722 then throw(((("Tx ids don't match! In state: " + ja) + ", in msg: ") + iZ))
17231723 else {
17241724 let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked")
17251725 let jb = z(A)
17261726 let jc = ag(valueOrElse(getInteger(D(A)), 0))
17271727 let jd = valueOrElse(getInteger(jb), jc)
17281728 if ((jd != iU))
17291729 then throw(((("oldHealth=" + toString(jd)) + " from state does not match one from flight log=") + toString(iU)))
17301730 else if ((0 >= iU))
17311731 then throw("You can't fly with zero health")
17321732 else if (!(gw(A)))
17331733 then throw("Equipment incompatible")
17341734 else {
17351735 let je = if ((size(iS) > eE))
17361736 then iS[eE]
17371737 else ""
17381738 let jf = if ((size(iS) > eF))
17391739 then iS[eF]
17401740 else ""
17411741 let jg = if (if ((iV > 0))
17421742 then (je == "$")
17431743 else false)
17441744 then dz(invoke(db, "sendUsdtPrize", [bL], nil))
17451745 else 0
17461746 $Tuple5(iV, A, jg, iX, jf)
17471747 }
17481748 }
17491749 }
17501750 }
17511751
17521752
17531753 func jh (P,ji) = {
17541754 let ia = valueOrElse(getInteger(by(P)), 0)
17551755 let jj = valueOrElse(getInteger(bs(aE, P)), 0)
17561756 let jk = (ia / 6)
17571757 let jl = (ia / 7)
17581758 ((aH + fraction(aH, ((ia + jk) + (2 * jl)), 5)) + fraction(aH, jj, (ji * 5)))
17591759 }
17601760
17611761
17621762 func jm (c,jn,jo) = {
17631763 let jp = if ((jn == ez))
17641764 then $Tuple2(jo, valueOrElse(getString(bH(c)), ""))
17651765 else {
17661766 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
17671767 let jq = valueOrElse(getString(bJ(A)), aJ)
17681768 let cf = split(value(jq), "_")
17691769 if ((cf[bm] != "L"))
17701770 then throw((("Duck location type is " + cf[bm]) + ", but should be L"))
17711771 else $Tuple2(cf[bn], A)
17721772 }
17731773 let P = jp._1
17741774 let jr = jp._2
17751775 let js = value(assetInfo(fromBase58String(P)))
17761776 let jt = br(P)
17771777 let ju = valueOrErrorMessage(getInteger(jt), (("Land " + js.name) + " is not staked"))
17781778 let jv = valueOrErrorMessage(getString(bo(P)), (("NFT " + js.name) + " is orphaned"))
17791779 if ((jv != c))
17801780 then throw((aC + " is not yours"))
17811781 else {
17821782 let jw = split(js.description, "_")
17831783 $Tuple4(jr, P, jw, ju)
17841784 }
17851785 }
17861786
17871787
17881788 func jx (c,eI,jn,jo) = if ((0 > eI))
17891789 then throw("Negative amount")
17901790 else {
17911791 let ga = jm(c, jn, jo)
17921792 let dI = ga._3[di]
17931793 let gG = gM(ga._3[dj])
17941794 let gQ = (lastBlock.timestamp - ga._4)
17951795 if ((0 > gQ))
17961796 then throw(((("Saved timestamp is in future, saved = " + toString(ga._4)) + ", current = ") + toString(lastBlock.timestamp)))
17971797 else {
17981798 let ji = dH(dI)
17991799 let jy = jh(ga._2, ji)
18001800 let jz = fraction(gQ, (jy * ji), a)
18011801 if ((eI > jz))
18021802 then throw(((("Not enough resources, available = " + toString(jz)) + ", requested = ") + toString(eI)))
18031803 else {
18041804 let jA = fraction((jz - eI), a, (jy * ji))
18051805 let jB = (lastBlock.timestamp - jA)
18061806 let hZ = (ji / cF)
18071807 let gY = gU(gG, (gQ - jA), hZ, jy)
18081808 let hY = bx(ga._2)
18091809 let ia = valueOrElse(getInteger(by(ga._2)), 0)
18101810 let hP = hX(hY, hZ, ia)
18111811 let ig = split(hP[bc], "_")
18121812 let gZ = parseIntValue(ig[bf])
18131813 if (if ((jn == ez))
18141814 then (eI > gZ)
18151815 else false)
18161816 then throw((("Only " + toString(gZ)) + " space left in warehouse"))
18171817 else {
18181818 let hL = bI(ga._1)
18191819 let io = hK(hL)
18201820 let gX = split(io[bi], "_")
18211821 let gW = split(hP[aZ], "_")
18221822 let jC = if ((jn == ez))
18231823 then $Tuple4(gO(gW, gG, (gQ - jA), hZ, jy), io[bi], (parseIntValue(ig[be]) + gY._2), (parseIntValue(ig[bf]) - gY._2))
18241824 else if ((jn == eA))
18251825 then $Tuple4(hP[aZ], gO(gX, gG, (gQ - jA), hZ, jy), parseIntValue(ig[be]), parseIntValue(ig[bf]))
18261826 else {
18271827 let jD = gV(gW, gX, gY, gZ)
18281828 let jE = min([parseIntValue(ig[bf]), gY._2])
18291829 $Tuple4(jD._1, jD._2, (parseIntValue(ig[be]) + jE), (parseIntValue(ig[bf]) - jE))
18301830 }
18311831 let jF = jC._1
18321832 let jG = jC._2
18331833 let jH = jC._3
18341834 let jI = jC._4
18351835 $Tuple5([IntegerEntry(br(ga._2), jB), IntegerEntry(bu(aC, ga._2, c), jB)], hL, [io[bh], jG, io[bj], io[bk]], hY, [hP[aY], jF, hP[ba], hP[bb], makeString([ig[bd], toString(jH), toString(jI), ig[bg]], "_")])
18361836 }
18371837 }
18381838 }
18391839 }
18401840
18411841
18421842 func jJ (c,P,ji,jn) = {
18431843 let jt = br(P)
18441844 let ju = value(getInteger(jt))
18451845 let jz = (fraction((lastBlock.timestamp - ju), jh(P, ji), a) * ji)
18461846 jx(c, jz, jn, P)
18471847 }
18481848
18491849
18501850 func jK (fe,iJ,jL,P) = {
18511851 let c = toString(iJ)
18521852 let ga = jm(c, eB, P)
18531853 let ji = dH(ga._3[di])
18541854 let jM = by(ga._2)
18551855 let jN = valueOrElse(getInteger(jM), 0)
18561856 if (if (!(cu))
18571857 then (jN >= 3)
18581858 else false)
18591859 then throw("Currently max infrastructure level = 3")
18601860 else {
18611861 let jO = ((sqrt(ji, 0, 0, DOWN) / 5) + 2)
18621862 let al = (jN + 1)
18631863 if (if (cu)
18641864 then (al > jO)
18651865 else false)
18661866 then throw(("Currently max infrastructure level = " + toString(jO)))
18671867 else {
18681868 let jP = fraction(ee, (ji * al), cF)
18691869 if (if (!(fe))
18701870 then (jL != jP)
18711871 else false)
18721872 then throw(("Payment attached should be " + toString(jP)))
18731873 else {
18741874 let hL = bI(ga._1)
18751875 let io = hK(hL)
18761876 let jQ = split(io[bj], "_")
18771877 let jR = fraction(cA, (ji * al), cF)
18781878 let jS = makeString(fd(fe, jQ, jR), "_")
18791879 let jT = jJ(c, ga._2, ji, eB)
18801880 let jU = jT._5
18811881 let jV = hM(jU[aY])
18821882 let jW = makeString([split(jU[aY], "_")[0], toString(al)], "_")
18831883 let jX = hM(jW)
18841884 let ig = split(jU[bc], "_")
18851885 let jY = makeString([ig[bd], ig[be], toString(((parseIntValue(ig[bf]) + jX) - jV)), toString(jX)], "_")
18861886 $Tuple3(([IntegerEntry(jM, al), IntegerEntry(eu(ga._2, c), al), StringEntry(hL, makeString([io[bh], jT._3[bi], jS, io[bk]], ":")), StringEntry(jT._4, makeString([jW, jU[aZ], jU[ba], jU[bb], jY], ":"))] ++ jT._1), al, jR)
18871887 }
18881888 }
18891889 }
18901890 }
18911891
18921892
18931893 func jZ (A,ka) = {
18941894 let kb = D(A)
18951895 let kc = C(A)
18961896 let af = valueOrElse(getInteger(kc), 0)
18971897 let ak = (af + ka)
18981898 let kd = ai(valueOrElse(getInteger(kb), 0), ak)
18991899 let ke = E(A)
19001900 $Tuple2([IntegerEntry(kb, kd[0]), IntegerEntry(kc, ak), IntegerEntry(ke, (valueOrElse(getInteger(ke), 0) + kd[1]))], ak)
19011901 }
19021902
19031903
19041904 func kf (c,ka) = {
19051905 let kb = H(c)
19061906 let kc = G(c)
19071907 let af = valueOrElse(getInteger(kc), 0)
19081908 let ak = (af + ka)
19091909 let kd = ai(valueOrElse(getInteger(kb), 0), ak)
19101910 let ke = I(c)
19111911 $Tuple2([IntegerEntry(kb, kd[0]), IntegerEntry(kc, ak), IntegerEntry(ke, (valueOrElse(getInteger(ke), 0) + kd[1]))], ak)
19121912 }
19131913
19141914
19151915 func kg (c) = {
19161916 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
19171917 let kh = bC(c)
19181918 let ki = getString(kh)
19191919 if (!(isDefined(ki)))
19201920 then throw("You are not eligible for ONBOARD artifact")
19211921 else {
19221922 let kj = bE(c)
19231923 let kk = getString(kj)
19241924 if (isDefined(kk))
19251925 then throw(("You already used your ONBOARD artifact on duck " + value(kk)))
19261926 else {
19271927 let kl = bD(A)
19281928 let km = getString(kl)
19291929 if (isDefined(km))
19301930 then throw(((("The duck " + A) + " already got points from ONBOARD artifact from user ") + value(km)))
19311931 else ([StringEntry(kj, A), StringEntry(kl, c)] ++ jZ(A, ac)._1)
19321932 }
19331933 }
19341934 }
19351935
19361936
19371937 func kn (c,jo) = {
19381938 let ga = jm(c, eB, jo)
19391939 let P = ga._2
19401940 let ji = dH(ga._3[di])
19411941 let ko = bs(aE, P)
19421942 if ((valueOrElse(getInteger(ko), 0) > 0))
19431943 then throw("Presale artifact is already activated")
19441944 else if ((parseIntValue(ga._3[dh]) > eo))
19451945 then throw((((aC + " ") + P) + " is not eligible for presale artifact"))
19461946 else {
19471947 let jT = jJ(c, P, ji, eB)
19481948 (((jT._1 :+ IntegerEntry(ko, ji)) :+ StringEntry(jT._2, makeString(jT._3, ":"))) :+ StringEntry(jT._4, makeString(jT._5, ":")))
19491949 }
19501950 }
19511951
19521952
19531953 func kp (A) = {
19541954 let ce = valueOrElse(getInteger(df, bP), 0)
19551955 let jq = split(valueOrElse(getString(bJ(A)), aJ), "_")
19561956 let ax = lastBlock.timestamp
19571957 let cg = bY(df, ce)
19581958 let ca = cg[bU]
19591959 let cb = cg[bV]
19601960 if ((jq[bm] != "T"))
19611961 then false
19621962 else if (if (if ((parseIntValue(jq[bl]) == ce))
19631963 then (cb[bX] == "INPROGRESS")
19641964 else false)
19651965 then (parseIntValue(ca[bW]) > ax)
19661966 else false)
19671967 then throw("Your duck is taking part in the tournament")
19681968 else dD(invoke(this, "exitTournamentInternal", [A], nil))
19691969 }
19701970
19711971
19721972 func kq (A) = if (!(cv))
19731973 then false
19741974 else {
19751975 let jq = split(valueOrElse(getString(bJ(A)), aJ), "_")
19761976 let ax = lastBlock.timestamp
19771977 if ((jq[bm] != "D"))
19781978 then false
19791979 else {
19801980 let ci = parseIntValue(jq[bl])
19811981 let cj = parseIntValue(jq[bn])
19821982 if (if ((ax > (ci + aN)))
19831983 then (3 > cj)
19841984 else false)
19851985 then throw("Your duck is on delivery mission")
19861986 else dD(invoke(this, "exitDeliveryInternal", [A], nil))
19871987 }
19881988 }
19891989
19901990
1991-func kr (A) = {
1991+func kr (A,ks,iV) = {
19921992 let jq = split(valueOrElse(getString(bJ(A)), aJ), "_")
19931993 let ax = lastBlock.timestamp
19941994 let ci = parseIntValue(jq[bl])
19951995 let cj = parseIntValue(jq[bn])
19961996 let jv = valueOrErrorMessage(getString(bG(A)), "NFT duck is orphaned")
1997- let ks = z(A)
1998- let kt = getIntegerValue(ks)
1999- let ku = if ((cj >= 3))
1997+ let kt = z(A)
1998+ let ku = getIntegerValue(kt)
1999+ let kv = if ((cj >= 3))
20002000 then {
2001- let kv = invoke(dc, "sendDeliveryReward", [jv], nil)
2002- if ((kv == kv))
2001+ let kw = invoke(dc, "sendDeliveryReward", [jv], nil)
2002+ if ((kw == kw))
20032003 then nil
20042004 else throw("Strict value is not equal to itself.")
20052005 }
2006- else if ((ax > (ci + aN)))
2006+ else if (if (if (ks)
2007+ then (iV > 0)
2008+ else false)
2009+ then (ax > (ci + aN))
2010+ else false)
20072011 then throw("Your duck is still on delivery mission")
20082012 else {
2009- let kw = valueOrElse(getInteger(dc, bO), 0)
2010- let kx = invoke(dc, "updateDeliveryLocked", [(kw - aM)], nil)
2011- if ((kx == kx))
2012- then if ((0 >= kt))
2013+ let kx = valueOrElse(getInteger(dc, bO), 0)
2014+ let ky = invoke(dc, "updateDeliveryLocked", [(kx - aM)], nil)
2015+ if ((ky == ky))
2016+ then if ((0 >= ku))
20132017 then nil
20142018 else [IntegerEntry(T(A), (ci + a))]
20152019 else throw("Strict value is not equal to itself.")
20162020 }
2017- let ky = getIntegerValue(J(A))
2018- let kz = getStringValue(K(A))
2019- $Tuple4(ku, [IntegerEntry(ks, ky), StringEntry(bJ(A), kz)], kz, ky)
2020- }
2021-
2022-
2023-func kA (kB,al,kC,c,kD,kE) = {
2021+ let kz = getIntegerValue(J(A))
2022+ let kA = getStringValue(K(A))
2023+ $Tuple4(kv, [IntegerEntry(kt, kz), StringEntry(bJ(A), kA)], kA, kz)
2024+ }
2025+
2026+
2027+func kB (kC,al,kD,c,kE,kF) = {
20242028 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
20252029 if (kp(A))
20262030 then throw("mergeInternal_checkTournament")
20272031 else if (kq(A))
20282032 then throw("mergeInternal_checkDelivery")
20292033 else {
2030- func kF (eR,P) = {
2034+ func kG (eR,P) = {
20312035 let js = value(assetInfo(fromBase58String(P)))
20322036 let jt = br(P)
20332037 let ju = valueOrErrorMessage(getInteger(jt), (("NFT " + js.name) + " is not staked"))
20342038 let jv = valueOrErrorMessage(getString(bo(P)), (("NFT " + js.name) + " is orphaned"))
20352039 if ((jv != c))
20362040 then throw((aC + " is not yours"))
20372041 else {
20382042 let jw = split(js.description, "_")
20392043 let dt = jw[dk]
20402044 if (if ((eR._3 != ""))
20412045 then (eR._3 != dt)
20422046 else false)
20432047 then throw("Lands should be on the same continent to merge")
20442048 else {
20452049 let dI = jw[di]
2046- let kG = eR._1
2047- let gK = valueOrErrorMessage(indexOf(kG, dI), "You haven't passed all the lands needed")
2048- let kH = (take(kG, gK) + drop(kG, (gK + 1)))
2050+ let kH = eR._1
2051+ let gK = valueOrErrorMessage(indexOf(kH, dI), "You haven't passed all the lands needed")
2052+ let kI = (take(kH, gK) + drop(kH, (gK + 1)))
20492053 let ji = dH(dI)
2050- let kI = (eR._2 + valueOrElse(getInteger(bs(aE, P)), 0))
2054+ let kJ = (eR._2 + valueOrElse(getInteger(bs(aE, P)), 0))
20512055 let ia = valueOrElse(getInteger(by(P)), 0)
2052- let kJ = {
2056+ let kK = {
20532057 let cy = dI
20542058 if (("S" == cy))
20552059 then 3
20562060 else if (("M" == cy))
20572061 then 4
20582062 else if (("L" == cy))
20592063 then 5
20602064 else if (("XL" == cy))
20612065 then 6
20622066 else throw("Only S, M, L, XL can merge")
20632067 }
2064- if ((ia != kJ))
2068+ if ((ia != kK))
20652069 then throw("All lands should be maxed to merge")
20662070 else {
20672071 let et = jw[dh]
20682072 let gG = gM(jw[dj])
20692073 let gQ = (lastBlock.timestamp - ju)
20702074 if ((0 > gQ))
20712075 then throw(((("Saved timestamp is in future, saved = " + toString(ju)) + ", current = ") + toString(lastBlock.timestamp)))
20722076 else {
20732077 let jy = jh(P, ji)
20742078 let hZ = (ji / cF)
20752079 let jG = gO(split(eR._4, "_"), gG, gQ, hZ, jy)
20762080 let fb = gE(eR._6, gG, hZ, -1)
2077- let kK = gE(eR._10, gG, hZ, -1)
2081+ let kL = gE(eR._10, gG, hZ, -1)
20782082 let hu = gE(eR._9, gG, hZ, 1)
2079- let kL = eR._7
2080- let da = indexOf(kL, P)
2083+ let kM = eR._7
2084+ let da = indexOf(kM, P)
20812085 if (!(isDefined(da)))
20822086 then throw(("Your staked lands don't contain " + P))
20832087 else {
2084- let kM = bq(P)
2085- let kN = valueOrElse(getString(kM), "")
2086- $Tuple10(kH, kI, dt, jG, ((((((((((((eR._5 :+ DeleteEntry(br(P))) :+ DeleteEntry(bu(aC, P, c))) :+ DeleteEntry(es(et))) :+ DeleteEntry(bo(P))) :+ DeleteEntry(by(P))) :+ DeleteEntry(eu(P, c))) :+ DeleteEntry(bs(aE, P))) :+ DeleteEntry(ev(et))) :+ DeleteEntry(bx(P))) :+ DeleteEntry(kM)) :+ Burn(fromBase58String(P), 1)) ++ (if ((kN != ""))
2087- then [DeleteEntry(eq(kN))]
2088- else nil)), fb, removeByIndex(kL, value(da)), (eR._8 + ji), hu, kK)
2088+ let kN = bq(P)
2089+ let kO = valueOrElse(getString(kN), "")
2090+ $Tuple10(kI, kJ, dt, jG, ((((((((((((eR._5 :+ DeleteEntry(br(P))) :+ DeleteEntry(bu(aC, P, c))) :+ DeleteEntry(es(et))) :+ DeleteEntry(bo(P))) :+ DeleteEntry(by(P))) :+ DeleteEntry(eu(P, c))) :+ DeleteEntry(bs(aE, P))) :+ DeleteEntry(ev(et))) :+ DeleteEntry(bx(P))) :+ DeleteEntry(kN)) :+ Burn(fromBase58String(P), 1)) ++ (if ((kO != ""))
2091+ then [DeleteEntry(eq(kO))]
2092+ else nil)), fb, removeByIndex(kM, value(da)), (eR._8 + ji), hu, kL)
20892093 }
20902094 }
20912095 }
20922096 }
20932097 }
20942098 }
20952099
20962100 let hL = bI(A)
20972101 let io = hK(hL)
20982102 let gF = split(valueOrElse(getString(dr()), "0_0_0_0_0_0"), "_")
2099- let kO = du(c)
2100- let kP = getString(kO)
2101- let kQ = if (isDefined(kP))
2102- then split_51C(value(kP), "_")
2103+ let kP = du(c)
2104+ let kQ = getString(kP)
2105+ let kR = if (isDefined(kQ))
2106+ then split_51C(value(kQ), "_")
21032107 else nil
2104- let kR = split(value(assetInfo(fromBase58String(kD[0]))).description, "_")[dk]
2105- let kS = split(valueOrElse(getString(ds(kR)), "0_0_0_0_0_0"), "_")
2108+ let kS = split(value(assetInfo(fromBase58String(kE[0]))).description, "_")[dk]
2109+ let kT = split(valueOrElse(getString(ds(kS)), "0_0_0_0_0_0"), "_")
21062110 let fc = {
2107- let eT = kD
2111+ let eT = kE
21082112 let eU = size(eT)
2109- let eV = $Tuple10(kC, 0, "", io[bi], nil, gF, kQ, 0, split("0_0_0_0_0_0", "_"), kS)
2113+ let eV = $Tuple10(kD, 0, "", io[bi], nil, gF, kR, 0, split("0_0_0_0_0_0", "_"), kT)
21102114 func eW (eX,eY) = if ((eY >= eU))
21112115 then eX
2112- else kF(eX, eT[eY])
2116+ else kG(eX, eT[eY])
21132117
21142118 func eZ (eX,eY) = if ((eY >= eU))
21152119 then eX
21162120 else throw("List size exceeds 5")
21172121
21182122 eZ(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5)
21192123 }
21202124 let dt = fc._3
21212125 let ho = valueOrErrorMessage(indexOf(aP, dt), ("Unknown continent: " + dt))
2122- let gN = ht(fc._9, (dH(kB) / cF))
2126+ let gN = ht(fc._9, (dH(kC) / cF))
21232127 let iM = valueOrElse(getInteger(ep()), (eo + 1))
2124- let kT = toString(iM)
2125- let iN = Issue(eG(kT, kB), makeString([kT, kB, gN, dt], "_"), 1, 0, false)
2128+ let kU = toString(iM)
2129+ let iN = Issue(eG(kU, kC), makeString([kU, kC, gN, dt], "_"), 1, 0, false)
21262130 let bp = calculateAssetId(iN)
2127- let kU = toBase58String(bp)
2128- let jS = makeString(fd((kE > 0), split(io[bj], "_"), kE), "_")
2129- let kV = dv(c)
2130- let kW = valueOrElse(getInteger(kV), 0)
2131+ let kV = toBase58String(bp)
2132+ let jS = makeString(fd((kF > 0), split(io[bj], "_"), kF), "_")
2133+ let kW = dv(c)
2134+ let kX = valueOrElse(getInteger(kW), 0)
21312135 $Tuple2((((((((((((((((fc._5 :+ (if ((size(fc._7) > 0))
2132- then StringEntry(kO, makeString_11C(fc._7, "_"))
2133- else DeleteEntry(kO))) :+ IntegerEntry(kV, if ((fc._8 > kW))
2136+ then StringEntry(kP, makeString_11C(fc._7, "_"))
2137+ else DeleteEntry(kP))) :+ IntegerEntry(kW, if ((fc._8 > kX))
21342138 then 0
2135- else (kW - fc._8))) :+ IntegerEntry(ep(), (iM + 1))) :+ iN) :+ StringEntry(es(kT), kU)) :+ StringEntry(bo(kU), c)) :+ StringEntry(ev(kT), c)) :+ IntegerEntry(bs(aE, kU), fc._2)) :+ IntegerEntry(by(kU), al)) :+ IntegerEntry(eu(kU, c), al)) :+ StringEntry(hL, makeString([io[bh], fc._4, jS, io[bk]], ":"))) :+ StringEntry(dr(), makeString(fc._6, "_"))) :+ StringEntry(ds(dt), makeString(fc._10, "_"))) :+ StringEntry(bJ(A), makeString([dt, "L", kU], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bp)), kU)
2139+ else (kX - fc._8))) :+ IntegerEntry(ep(), (iM + 1))) :+ iN) :+ StringEntry(es(kU), kV)) :+ StringEntry(bo(kV), c)) :+ StringEntry(ev(kU), c)) :+ IntegerEntry(bs(aE, kV), fc._2)) :+ IntegerEntry(by(kV), al)) :+ IntegerEntry(eu(kV, c), al)) :+ StringEntry(hL, makeString([io[bh], fc._4, jS, io[bk]], ":"))) :+ StringEntry(dr(), makeString(fc._6, "_"))) :+ StringEntry(ds(dt), makeString(fc._10, "_"))) :+ StringEntry(bJ(A), makeString([dt, "L", kV], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bp)), kV)
21362140 }
21372141 }
21382142
21392143
2140-func kX (c,kD) = kA("M", 3, "SSSS", c, kD, 0)
2141-
2142-
2143-func kY (c,kD) = kA("L", 4, "SMM", c, kD, (cA * 4))
2144-
2145-
2146-func kZ (c,kD) = kA("XL", 5, "SSSML", c, kD, (cA * 47))
2147-
2148-
2149-func la (c,kD) = kA("XXL", 6, "LXL", c, kD, (cA * 54))
2150-
2151-
2152-func lb (c,kD) = {
2153- let cy = size(kD)
2144+func kY (c,kE) = kB("M", 3, "SSSS", c, kE, 0)
2145+
2146+
2147+func kZ (c,kE) = kB("L", 4, "SMM", c, kE, (cA * 4))
2148+
2149+
2150+func la (c,kE) = kB("XL", 5, "SSSML", c, kE, (cA * 47))
2151+
2152+
2153+func lb (c,kE) = kB("XXL", 6, "LXL", c, kE, (cA * 54))
2154+
2155+
2156+func lc (c,kE) = {
2157+ let cy = size(kE)
21542158 if ((4 == cy))
2155- then kX(c, kD)
2159+ then kY(c, kE)
21562160 else if ((3 == cy))
2157- then kY(c, kD)
2161+ then kZ(c, kE)
21582162 else if ((5 == cy))
2159- then kZ(c, kD)
2163+ then la(c, kE)
21602164 else if ((2 == cy))
2161- then la(c, kD)
2165+ then lb(c, kE)
21622166 else throw("Unknown merge")
21632167 }
21642168
21652169
2166-func lc (bL) = {
2167- let ld = getString(bH(bL))
2170+func ld (bL) = {
2171+ let le = getString(bH(bL))
21682172 if (if (cv)
2169- then isDefined(ld)
2173+ then isDefined(le)
21702174 else false)
21712175 then {
2172- let A = value(ld)
2173- let le = bJ(A)
2174- let cf = split(valueOrElse(getString(le), aJ), "_")
2176+ let A = value(le)
2177+ let lf = bJ(A)
2178+ let cf = split(valueOrElse(getString(lf), aJ), "_")
21752179 let ci = parseIntValue(cf[bl])
21762180 if (if ((cf[bm] != "D"))
21772181 then true
21782182 else (lastBlock.timestamp > (ci + aN)))
21792183 then nil
21802184 else {
2181- let ks = z(A)
2185+ let kt = z(A)
21822186 if ((parseIntValue(cf[bn]) >= 3))
21832187 then {
2184- let kv = invoke(dc, "sendDeliveryReward", [bL], nil)
2185- if ((kv == kv))
2188+ let kw = invoke(dc, "sendDeliveryReward", [bL], nil)
2189+ if ((kw == kw))
21862190 then nil
21872191 else throw("Strict value is not equal to itself.")
21882192 }
21892193 else (({
2190- let kw = valueOrElse(getInteger(dc, bO), 0)
2191- let kx = invoke(dc, "updateDeliveryLocked", [(kw - aM)], nil)
2192- if ((kx == kx))
2193- then if ((0 >= getIntegerValue(ks)))
2194+ let kx = valueOrElse(getInteger(dc, bO), 0)
2195+ let ky = invoke(dc, "updateDeliveryLocked", [(kx - aM)], nil)
2196+ if ((ky == ky))
2197+ then if ((0 >= getIntegerValue(kt)))
21942198 then nil
21952199 else {
2196- let lf = invoke(this, "saveInteger", [T(A), (ci + a)], nil)
2197- if ((lf == lf))
2200+ let lg = invoke(this, "saveInteger", [T(A), (ci + a)], nil)
2201+ if ((lg == lg))
21982202 then nil
21992203 else throw("Strict value is not equal to itself.")
22002204 }
22012205 else throw("Strict value is not equal to itself.")
2202- } :+ IntegerEntry(ks, getIntegerValue(J(A)))) :+ StringEntry(le, getStringValue(K(A))))
2206+ } :+ IntegerEntry(kt, getIntegerValue(J(A)))) :+ StringEntry(lf, getStringValue(K(A))))
22032207 }
22042208 }
22052209 else nil
22062210 }
22072211
22082212
2209-func lg (gK) = if (if ((gK.originCaller != db))
2213+func lh (gK) = if (if ((gK.originCaller != db))
22102214 then valueOrElse(getBoolean(dK()), false)
22112215 else false)
22122216 then throw("Contracts are under maintenance")
22132217 else {
22142218 let bL = toString(gK.originCaller)
2215- (lc(bL) :+ StringEntry(dL(bL), toBase58String(gK.transactionId)))
2219+ (ld(bL) :+ StringEntry(dL(bL), toBase58String(gK.transactionId)))
22162220 }
22172221
22182222
2219-func lh (gK) = if (if ((gK.originCaller != db))
2223+func li (gK) = if (if ((gK.originCaller != db))
22202224 then valueOrElse(getBoolean(dK()), false)
22212225 else false)
22222226 then throw("Contracts are under maintenance")
22232227 else [StringEntry(dL(toString(gK.originCaller)), toBase58String(gK.transactionId))]
22242228
22252229
22262230 @Callable(gK)
2227-func constructorV1 (li) = if ((gK.caller != this))
2231+func constructorV1 (lj) = if ((gK.caller != this))
22282232 then throw("Permission denied")
2229- else [StringEntry(cV(), li)]
2233+ else [StringEntry(cV(), lj)]
22302234
22312235
22322236
22332237 @Callable(gK)
22342238 func saveInteger (cN,eI) = if ((gK.caller != this))
22352239 then throw("saveInteger is not public method")
22362240 else [IntegerEntry(cN, eI)]
22372241
22382242
22392243
22402244 @Callable(gK)
2241-func setBlocked (lj) = if ((gK.caller != this))
2245+func setBlocked (lk) = if ((gK.caller != this))
22422246 then throw("permission denied")
2243- else [BooleanEntry(dK(), lj)]
2247+ else [BooleanEntry(dK(), lk)]
22442248
22452249
22462250
22472251 @Callable(gK)
22482252 func stakeLand () = {
2249- let lk = lg(gK)
2253+ let ll = lh(gK)
22502254 if ((size(gK.payments) != 1))
22512255 then throw("Exactly one payment required")
22522256 else {
2253- let ll = value(gK.payments[0])
2254- let bp = value(ll.assetId)
2257+ let lm = value(gK.payments[0])
2258+ let bp = value(lm.assetId)
22552259 let cM = toString(gK.caller)
2256- if ((ll.amount != 1))
2260+ if ((lm.amount != 1))
22572261 then throw((("NFT " + aC) + " token should be attached as payment"))
22582262 else {
22592263 let js = value(assetInfo(bp))
22602264 if ((js.issuer != this))
22612265 then throw("Unknown issuer of token")
22622266 else if (!(contains(js.name, aC)))
22632267 then throw((("Only NFT " + aC) + " tokens are accepted"))
22642268 else {
2265- let lm = drop(js.name, 4)
2266- let et = if (contains(lm, "XXL"))
2267- then dropRight(lm, 3)
2268- else if (contains(lm, "XL"))
2269- then dropRight(lm, 2)
2270- else dropRight(lm, 1)
2269+ let ln = drop(js.name, 4)
2270+ let et = if (contains(ln, "XXL"))
2271+ then dropRight(ln, 3)
2272+ else if (contains(ln, "XL"))
2273+ then dropRight(ln, 2)
2274+ else dropRight(ln, 1)
22712275 if (!(isDefined(parseInt(et))))
22722276 then throw(("Cannot parse land number from " + js.name))
22732277 else {
22742278 let P = toBase58String(bp)
22752279 let jt = br(P)
22762280 if (isDefined(getInteger(jt)))
22772281 then throw((("NFT " + js.name) + " is already staked"))
22782282 else {
22792283 let jw = split(js.description, "_")
22802284 let gG = gM(jw[dj])
22812285 let ji = dH(jw[di])
22822286 let hZ = (ji / cF)
22832287 let fb = gL(gG, hZ, 1)
2284- let ln = ds(jw[dk])
2285- let kS = split(valueOrElse(getString(ln), "0_0_0_0_0_0"), "_")
2286- let lo = makeString(gE(kS, gG, hZ, 1), "_")
2287- let kO = du(cM)
2288- let kP = getString(kO)
2289- let kL = if (isDefined(kP))
2290- then split_51C(value(kP), "_")
2288+ let lo = ds(jw[dk])
2289+ let kT = split(valueOrElse(getString(lo), "0_0_0_0_0_0"), "_")
2290+ let lp = makeString(gE(kT, gG, hZ, 1), "_")
2291+ let kP = du(cM)
2292+ let kQ = getString(kP)
2293+ let kM = if (isDefined(kQ))
2294+ then split_51C(value(kQ), "_")
22912295 else nil
2292- if (containsElement(kL, P))
2296+ if (containsElement(kM, P))
22932297 then throw(("Your staked lands already contain " + P))
2294- else if ((size(kL) >= aG))
2298+ else if ((size(kM) >= aG))
22952299 then throw((("Your already staked max (" + toString(aG)) + ") lands"))
22962300 else {
22972301 let ia = valueOrElse(getInteger(by(P)), 0)
2298- let kV = dv(cM)
2299- let lp = valueOrElse(getInteger(kV), 0)
2300- let lq = invoke(de, "onStakeUnstakeLand", [cM], nil)
2301- $Tuple2(([IntegerEntry(jt, lastBlock.timestamp), IntegerEntry(bu(aC, P, cM), lastBlock.timestamp), StringEntry(kO, makeString_11C((kL :+ P), "_")), IntegerEntry(kV, (lp + ji)), StringEntry(bo(P), cM), StringEntry(ev(et), cM), IntegerEntry(eu(P, cM), ia), StringEntry(dr(), fb), StringEntry(ln, lo)] ++ lk), lq)
2302+ let kW = dv(cM)
2303+ let lq = valueOrElse(getInteger(kW), 0)
2304+ let lr = invoke(de, "onStakeUnstakeLand", [cM], nil)
2305+ $Tuple2(([IntegerEntry(jt, lastBlock.timestamp), IntegerEntry(bu(aC, P, cM), lastBlock.timestamp), StringEntry(kP, makeString_11C((kM :+ P), "_")), IntegerEntry(kW, (lq + ji)), StringEntry(bo(P), cM), StringEntry(ev(et), cM), IntegerEntry(eu(P, cM), ia), StringEntry(dr(), fb), StringEntry(lo, lp)] ++ ll), lr)
23022306 }
23032307 }
23042308 }
23052309 }
23062310 }
23072311 }
23082312 }
23092313
23102314
23112315
23122316 @Callable(gK)
23132317 func unstakeLand (jo) = {
2314- let lk = lg(gK)
2318+ let ll = lh(gK)
23152319 if ((size(gK.payments) != 0))
23162320 then throw("No payments required")
23172321 else {
23182322 let c = toString(gK.caller)
23192323 let ga = jm(c, eA, jo)
23202324 let P = ga._2
23212325 let jw = ga._3
2322- let kO = du(c)
2326+ let kP = du(c)
23232327 let gG = gM(jw[dj])
23242328 let ji = dH(jw[di])
23252329 let hZ = (ji / cF)
23262330 let fb = gL(gG, hZ, -1)
2327- let ln = ds(jw[dk])
2328- let kS = split(valueOrElse(getString(ln), "0_0_0_0_0_0"), "_")
2329- let lo = makeString(gE(kS, gG, hZ, -1), "_")
2331+ let lo = ds(jw[dk])
2332+ let kT = split(valueOrElse(getString(lo), "0_0_0_0_0_0"), "_")
2333+ let lp = makeString(gE(kT, gG, hZ, -1), "_")
23302334 let jT = jJ(c, P, ji, eA)
2331- let kL = split_51C(valueOrElse(getString(kO), ""), "_")
2332- let da = indexOf(kL, P)
2335+ let kM = split_51C(valueOrElse(getString(kP), ""), "_")
2336+ let da = indexOf(kM, P)
23332337 if (!(isDefined(da)))
23342338 then throw(("Your staked lands don't contain " + P))
23352339 else {
23362340 let ax = lastBlock.timestamp
2337- let lr = valueOrElse(getInteger(dd, bK(c)), 0)
2338- if ((lr >= ax))
2339- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lr)))
2341+ let ls = valueOrElse(getInteger(dd, bK(c)), 0)
2342+ if ((ls >= ax))
2343+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(ls)))
23402344 else {
2341- let ls = (valueOrElse(getInteger(de, b(c)), 0) + cB)
2342- if ((ls > ax))
2343- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(ls)))
2345+ let lt = (valueOrElse(getInteger(de, b(c)), 0) + cB)
2346+ if ((lt > ax))
2347+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lt)))
23442348 else {
2345- let kV = dv(c)
2346- let kW = valueOrElse(getInteger(kV), 0)
2347- let lt = if ((ji > kW))
2349+ let kW = dv(c)
2350+ let kX = valueOrElse(getInteger(kW), 0)
2351+ let lu = if ((ji > kX))
23482352 then 0
2349- else (kW - ji)
2350- let lq = invoke(de, "onStakeUnstakeLand", [c], nil)
2351- $Tuple2(([ScriptTransfer(gK.caller, 1, fromBase58String(P)), DeleteEntry(br(P)), DeleteEntry(bu(aC, P, c)), StringEntry(dr(), fb), StringEntry(ln, lo), StringEntry(jT._2, makeString(jT._3, ":")), if ((size(kL) > 1))
2352- then StringEntry(kO, makeString_11C(removeByIndex(kL, value(da)), "_"))
2353- else DeleteEntry(kO), IntegerEntry(kV, lt)] ++ lk), lq)
2353+ else (kX - ji)
2354+ let lr = invoke(de, "onStakeUnstakeLand", [c], nil)
2355+ $Tuple2(([ScriptTransfer(gK.caller, 1, fromBase58String(P)), DeleteEntry(br(P)), DeleteEntry(bu(aC, P, c)), StringEntry(dr(), fb), StringEntry(lo, lp), StringEntry(jT._2, makeString(jT._3, ":")), if ((size(kM) > 1))
2356+ then StringEntry(kP, makeString_11C(removeByIndex(kM, value(da)), "_"))
2357+ else DeleteEntry(kP), IntegerEntry(kW, lu)] ++ ll), lr)
23542358 }
23552359 }
23562360 }
23572361 }
23582362 }
23592363
23602364
23612365
23622366 @Callable(gK)
23632367 func stakeDuck () = {
2364- let lk = lg(gK)
2368+ let ll = lh(gK)
23652369 if ((size(gK.payments) != 1))
23662370 then throw("Exactly one payment required")
23672371 else {
2368- let ll = value(gK.payments[0])
2369- let bp = value(ll.assetId)
2372+ let lm = value(gK.payments[0])
2373+ let bp = value(lm.assetId)
23702374 let cM = toString(gK.caller)
2371- if ((ll.amount != 1))
2375+ if ((lm.amount != 1))
23722376 then throw((("NFT " + aD) + " token should be attached as payment"))
23732377 else {
23742378 let js = value(assetInfo(bp))
23752379 if (if ((js.issuer != dX))
23762380 then (js.issuer != dY)
23772381 else false)
23782382 then throw((("Unknown issuer of " + aD) + " token"))
23792383 else if (!(contains(js.name, aD)))
23802384 then throw((("Only NFT " + aD) + " tokens are accepted"))
23812385 else {
2382- let lu = toBase58String(bp)
2383- let jt = br(lu)
2386+ let lv = toBase58String(bp)
2387+ let jt = br(lv)
23842388 if (isDefined(getInteger(jt)))
23852389 then throw((("NFT " + js.name) + " is already staked"))
23862390 else if (isDefined(getString(bH(cM))))
23872391 then throw(("You already staked one duck: " + js.name))
23882392 else {
2389- let le = bJ(lu)
2390- let cd = getString(le)
2391- let hL = bI(lu)
2392- let lv = getString(hL)
2393- let jb = z(lu)
2394- let jc = ag(valueOrElse(getInteger(D(lu)), 0))
2395- let kt = valueOrElse(getInteger(jb), jc)
2396- ([IntegerEntry(jt, lastBlock.timestamp), IntegerEntry(bu(aD, toBase58String(bp), cM), lastBlock.timestamp), StringEntry(bG(lu), cM), StringEntry(bH(cM), lu)] ++ (if (isDefined(cd))
2393+ let lf = bJ(lv)
2394+ let cd = getString(lf)
2395+ let hL = bI(lv)
2396+ let lw = getString(hL)
2397+ let jb = z(lv)
2398+ let jc = ag(valueOrElse(getInteger(D(lv)), 0))
2399+ let ku = valueOrElse(getInteger(jb), jc)
2400+ ([IntegerEntry(jt, lastBlock.timestamp), IntegerEntry(bu(aD, toBase58String(bp), cM), lastBlock.timestamp), StringEntry(bG(lv), cM), StringEntry(bH(cM), lv)] ++ (if (isDefined(cd))
23972401 then nil
2398- else ([StringEntry(le, aJ)] ++ (if (isDefined(lv))
2402+ else ([StringEntry(lf, aJ)] ++ (if (isDefined(lw))
23992403 then nil
2400- else (([StringEntry(hL, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jb, kt)) ++ lk)))))
2404+ else (([StringEntry(hL, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jb, ku)) ++ ll)))))
24012405 }
24022406 }
24032407 }
24042408 }
24052409 }
24062410
24072411
24082412
24092413 @Callable(gK)
2410-func unstakeDuck (lu) = {
2411- let lk = lg(gK)
2414+func unstakeDuck (lv) = {
2415+ let ll = lh(gK)
24122416 if ((size(gK.payments) != 0))
24132417 then throw("No payments required")
24142418 else {
2415- let bp = fromBase58String(lu)
2419+ let bp = fromBase58String(lv)
24162420 let cM = toString(gK.caller)
24172421 let js = value(assetInfo(bp))
2418- let jt = br(lu)
2422+ let jt = br(lv)
24192423 if (!(isDefined(getInteger(jt))))
24202424 then throw((("NFT " + js.name) + " is not staked"))
24212425 else if (!(isDefined(getString(bH(cM)))))
24222426 then throw((("The duck " + js.name) + " is not staked"))
24232427 else {
2424- let jv = valueOrErrorMessage(getString(bG(lu)), (("NFT " + js.name) + " is orphaned"))
2428+ let jv = valueOrErrorMessage(getString(bG(lv)), (("NFT " + js.name) + " is orphaned"))
24252429 if ((jv != cM))
24262430 then throw("Staked NFT is not yours")
2427- else if (kp(lu))
2431+ else if (kp(lv))
24282432 then throw("unstakeDuck_checkTournament")
2429- else if (kq(lu))
2433+ else if (kq(lv))
24302434 then throw("unstakeDuck_checkDelivery")
24312435 else {
2432- let jb = z(lu)
2433- let jc = ag(valueOrElse(getInteger(D(lu)), 0))
2436+ let jb = z(lv)
2437+ let jc = ag(valueOrElse(getInteger(D(lv)), 0))
24342438 let as = valueOrElse(getInteger(jb), jc)
24352439 if ((jc > as))
24362440 then throw((("Please heal your duck to " + toString(jc)) + "hp before unstaking"))
2437- else ([ScriptTransfer(gK.caller, 1, bp), DeleteEntry(jt), DeleteEntry(jb), DeleteEntry(bJ(lu)), DeleteEntry(bG(lu)), DeleteEntry(bu(aD, lu, cM)), DeleteEntry(bH(cM))] ++ lk)
2441+ else ([ScriptTransfer(gK.caller, 1, bp), DeleteEntry(jt), DeleteEntry(jb), DeleteEntry(bJ(lv)), DeleteEntry(bG(lv)), DeleteEntry(bu(aD, lv, cM)), DeleteEntry(bH(cM))] ++ ll)
24382442 }
24392443 }
24402444 }
24412445 }
24422446
24432447
24442448
24452449 @Callable(gK)
2446-func claimRes (eI,lw) = {
2447- let lk = lg(gK)
2450+func claimRes (eI,lx) = {
2451+ let ll = lh(gK)
24482452 if ((size(gK.payments) != 0))
24492453 then throw("No payments required")
24502454 else {
24512455 let c = toString(gK.originCaller)
2452- let fj = jx(c, eI, eA, lw)
2456+ let fj = jx(c, eI, eA, lx)
24532457 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
2454- $Tuple2(((((fj._1 ++ jZ(A, fraction(U, eI, cE))._1) :+ StringEntry(fj._2, makeString(fj._3, ":"))) :+ StringEntry(fj._4, makeString(fj._5, ":"))) ++ lk), fj._3[bi])
2455- }
2456- }
2457-
2458-
2459-
2460-@Callable(gK)
2461-func claimResToWH (eI,lw) = {
2462- let lk = lg(gK)
2458+ $Tuple2(((((fj._1 ++ jZ(A, fraction(U, eI, cE))._1) :+ StringEntry(fj._2, makeString(fj._3, ":"))) :+ StringEntry(fj._4, makeString(fj._5, ":"))) ++ ll), fj._3[bi])
2459+ }
2460+ }
2461+
2462+
2463+
2464+@Callable(gK)
2465+func claimResToWH (eI,lx) = {
2466+ let ll = lh(gK)
24632467 if ((size(gK.payments) != 0))
24642468 then throw("No payments required")
24652469 else {
24662470 let c = toString(gK.originCaller)
2467- let fj = jx(c, eI, ez, lw)
2468- $Tuple2(((((fj._1 ++ kf(c, fraction(U, eI, cE))._1) :+ StringEntry(fj._2, makeString(fj._3, ":"))) :+ StringEntry(fj._4, makeString(fj._5, ":"))) ++ lk), fj._5[aZ])
2471+ let fj = jx(c, eI, ez, lx)
2472+ $Tuple2(((((fj._1 ++ kf(c, fraction(U, eI, cE))._1) :+ StringEntry(fj._2, makeString(fj._3, ":"))) :+ StringEntry(fj._4, makeString(fj._5, ":"))) ++ ll), fj._5[aZ])
24692473 }
24702474 }
24712475
24722476
24732477
24742478 @Callable(gK)
24752479 func flight (iQ,iR) = {
2476- let lk = lh(gK)
2480+ let ll = li(gK)
24772481 if ((size(gK.payments) != 0))
24782482 then throw("No payments required")
24792483 else {
24802484 let bL = toString(gK.caller)
24812485 let hp = iP(bL, iQ, iR)
24822486 let iV = hp._1
24832487 let A = hp._2
2484- let le = bJ(A)
2485- let jq = valueOrElse(getString(le), aJ)
2488+ let lf = bJ(A)
2489+ let jq = valueOrElse(getString(lf), aJ)
24862490 let iX = hp._4
24872491 if ((iX == jq))
24882492 then throw("You can't fly to the same location")
24892493 else {
24902494 let cr = split(iX, "_")
2491- let lx = (cr[bm] == "T")
2492- let ly = (cr[bm] == "D")
2495+ let ly = (cr[bm] == "T")
2496+ let lz = (cr[bm] == "D")
24932497 let gx = F(A)
2494- let lz = valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,")
2495- let lA = fk(lz, hp._5)
2496- let lB = lA._1
2497- let lC = lA._2
2498- let lD = if (!(cm(df, jq)))
2498+ let lA = valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,")
2499+ let lB = fk(lA, hp._5)
2500+ let lC = lB._1
2501+ let lD = lB._2
2502+ let lE = if (!(cm(df, jq)))
24992503 then if (!(ck(iX)))
25002504 then cp(jq, iX, 5)
25012505 else if ((iV > 0))
25022506 then $Tuple2(iX, iV)
25032507 else $Tuple2(jq, 0)
25042508 else if (cc(df, jq))
25052509 then if (!(cc(df, iX)))
25062510 then throw("Your duck is taking part in the tournament")
25072511 else {
2508- let lE = parseIntValue(cr[bn])
2509- let lF = split(jq, "_")
2512+ let lF = parseIntValue(cr[bn])
2513+ let lG = split(jq, "_")
25102514 let ce = valueOrElse(getInteger(df, bP), 0)
2511- if ((lE != (parseIntValue(lF[bn]) + 1)))
2515+ if ((lF != (parseIntValue(lG[bn]) + 1)))
25122516 then cp(jq, iX, 7)
25132517 else if ((iV > 0))
25142518 then {
2515- let lG = valueOrElse(getInteger(df, bT(ce, A)), 0)
2516- let lH = if ((lE > lG))
2517- then invoke(df, "saveDuckResult", [A, lE], nil)
2519+ let lH = valueOrElse(getInteger(df, bT(ce, A)), 0)
2520+ let lI = if ((lF > lH))
2521+ then invoke(df, "saveDuckResult", [A, lF], nil)
25182522 else unit
2519- if ((lH == lH))
2523+ if ((lI == lI))
25202524 then $Tuple2(iX, iV)
25212525 else throw("Strict value is not equal to itself.")
25222526 }
25232527 else $Tuple2(jq, 0)
25242528 }
25252529 else if (!(ch(jq)))
25262530 then {
2527- let lI = dE(invoke(this, "autoExitDelivery", [A], nil))
2528- if ((lI == lI))
2529- then if (ly)
2530- then lI
2531+ let lJ = dE(invoke(this, "autoExitDelivery", [A, iV], nil))
2532+ if ((lJ == lJ))
2533+ then if (lz)
2534+ then lJ
25312535 else if ((iV > 0))
25322536 then $Tuple2(iX, iV)
2533- else $Tuple2(lI._1, 0)
2537+ else $Tuple2(lJ._1, 0)
25342538 else throw("Strict value is not equal to itself.")
25352539 }
2536- else if (!(ly))
2540+ else if (!(lz))
25372541 then throw("Your duck is taking part in delivery")
25382542 else if (!(ch(iX)))
25392543 then cp(jq, iX, 13)
25402544 else {
2541- let lE = parseIntValue(cr[bn])
2542- let lF = split(jq, "_")
2543- if ((lE != (parseIntValue(lF[bn]) + 1)))
2545+ let lF = parseIntValue(cr[bn])
2546+ let lG = split(jq, "_")
2547+ if ((lF != (parseIntValue(lG[bn]) + 1)))
25442548 then cp(jq, iX, 14)
25452549 else if (if ((iV > 0))
2546- then (3 > lE)
2550+ then (3 > lF)
25472551 else false)
25482552 then $Tuple2(iX, iV)
25492553 else {
2550- let lI = dE(invoke(this, "autoExitDelivery", [A], nil))
2551- if ((lI == lI))
2552- then lI
2554+ let lJ = dE(invoke(this, "autoExitDelivery", [A, iV], nil))
2555+ if ((lJ == lJ))
2556+ then lJ
25532557 else throw("Strict value is not equal to itself.")
25542558 }
25552559 }
2556- let lJ = lD._1
2557- let lK = lD._2
2558- $Tuple2(((([StringEntry(le, lJ), StringEntry(gx, lB), IntegerEntry(z(A), iV)] ++ lk) ++ (if (lC)
2560+ let lK = lE._1
2561+ let lL = lE._2
2562+ $Tuple2(((([StringEntry(lf, lK), StringEntry(gx, lC), IntegerEntry(z(A), iV)] ++ ll) ++ (if (lD)
25592563 then [StringEntry(L(A), "0_0_0_0_0")]
25602564 else nil)) ++ jZ(A, if ((iV > 0))
25612565 then V
25622566 else W)._1), hp._3)
25632567 }
25642568 }
25652569 }
25662570
25672571
25682572
25692573 @Callable(gK)
2570-func heal (lL,lM,lN) = {
2571- let lk = lg(gK)
2572- if (if (if ((0 > lL))
2573- then true
2574- else (0 > lM))
2574+func heal (lM,lN,lO) = {
2575+ let ll = lh(gK)
2576+ if (if (if ((0 > lM))
25752577 then true
25762578 else (0 > lN))
2579+ then true
2580+ else (0 > lO))
25772581 then throw("Quantity cannot be negative")
25782582 else {
25792583 let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked")
25802584 if (kp(A))
25812585 then throw("heal_checkTournament")
25822586 else if (kq(A))
25832587 then throw("heal_checkDelivery")
25842588 else {
2585- let lO = [lL, lM, lN]
2589+ let lP = [lM, lN, lO]
25862590 let jb = z(A)
25872591 let jc = ag(valueOrElse(getInteger(D(A)), 0))
2588- let lP = valueOrElse(getInteger(jb), jc)
2589- if ((lP >= jc))
2592+ let lQ = valueOrElse(getInteger(jb), jc)
2593+ if ((lQ >= jc))
25902594 then throw((("HP should be < " + toString(jc)) + " to heal"))
25912595 else {
25922596 let hL = bI(A)
25932597 let io = hK(hL)
2594- let lQ = if ((io[bk] == ""))
2598+ let lR = if ((io[bk] == ""))
25952599 then nil
25962600 else split_4C(io[bk], "_")
2597- func lR (eR,co) = {
2601+ func lS (eR,co) = {
25982602 let dA = eR._2
2599- let hg = if ((size(lQ) > dA))
2600- then parseIntValue(lQ[dA])
2603+ let hg = if ((size(lR) > dA))
2604+ then parseIntValue(lR[dA])
26012605 else 0
26022606 if ((3 > dA))
26032607 then {
2604- let lS = lO[dA]
2605- if ((lS > hg))
2608+ let lT = lP[dA]
2609+ if ((lT > hg))
26062610 then throw(((("You have only " + toString(hg)) + " of ") + aO[dA]))
2607- else $Tuple3((eR._1 :+ toString((hg - lS))), (dA + 1), (eR._3 + (parseIntValue(split(co, "_")[aU]) * lS)))
2611+ else $Tuple3((eR._1 :+ toString((hg - lT))), (dA + 1), (eR._3 + (parseIntValue(split(co, "_")[aU]) * lT)))
26082612 }
26092613 else $Tuple3((eR._1 :+ toString(hg)), (dA + 1), eR._3)
26102614 }
26112615
26122616 let fj = {
26132617 let eT = aS
26142618 let eU = size(eT)
26152619 let eV = $Tuple3(nil, 0, 0)
26162620 func eW (eX,eY) = if ((eY >= eU))
26172621 then eX
2618- else lR(eX, eT[eY])
2622+ else lS(eX, eT[eY])
26192623
26202624 func eZ (eX,eY) = if ((eY >= eU))
26212625 then eX
26222626 else throw("List size exceeds 50")
26232627
26242628 eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
26252629 }
2626- let lT = min([jc, (lP + fj._3)])
2627- $Tuple2((([IntegerEntry(jb, lT), StringEntry(hL, makeString_2C([io[bh], io[bi], io[bj], makeString(fj._1, "_")], ":"))] ++ lk) ++ jZ(A, (ad * ((lL + lM) + lN)))._1), lT)
2630+ let lU = min([jc, (lQ + fj._3)])
2631+ $Tuple2((([IntegerEntry(jb, lU), StringEntry(hL, makeString_2C([io[bh], io[bi], io[bj], makeString(fj._1, "_")], ":"))] ++ ll) ++ jZ(A, (ad * ((lM + lN) + lO)))._1), lU)
26282632 }
26292633 }
26302634 }
26312635 }
26322636
26332637
26342638
26352639 @Callable(gK)
26362640 func healES () = {
2637- let lk = lg(gK)
2641+ let ll = lh(gK)
26382642 if ((size(gK.payments) != 1))
26392643 then throw("Exactly one payment required")
26402644 else {
2641- let ll = value(gK.payments[0])
2642- if ((ll.assetId != cx))
2645+ let lm = value(gK.payments[0])
2646+ if ((lm.assetId != cx))
26432647 then throw("Allowed USDT payment only!")
26442648 else {
26452649 let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked")
26462650 if (kp(A))
26472651 then throw("healES_checkTournament")
26482652 else if (kq(A))
26492653 then throw("healES_checkDelivery")
26502654 else {
26512655 let jb = z(A)
26522656 let jc = ag(valueOrElse(getInteger(D(A)), 0))
2653- let lP = valueOrElse(getInteger(jb), jc)
2654- if ((lP > 0))
2657+ let lQ = valueOrElse(getInteger(jb), jc)
2658+ if ((lQ > 0))
26552659 then throw("HP should be 0 to call Emergency Service")
26562660 else {
26572661 let hL = bI(A)
26582662 let io = hK(hL)
2659- let lQ = if ((io[bk] == ""))
2663+ let lR = if ((io[bk] == ""))
26602664 then nil
26612665 else split_4C(io[bk], "_")
2662- let lU = if ((size(lQ) > 0))
2663- then parseIntValue(lQ[0])
2666+ let lV = if ((size(lR) > 0))
2667+ then parseIntValue(lR[0])
26642668 else 0
2665- let lV = if ((size(lQ) > 1))
2666- then parseIntValue(lQ[1])
2669+ let lW = if ((size(lR) > 1))
2670+ then parseIntValue(lR[1])
26672671 else 0
2668- let lW = if ((size(lQ) > 2))
2669- then parseIntValue(lQ[2])
2672+ let lX = if ((size(lR) > 2))
2673+ then parseIntValue(lR[2])
26702674 else 0
2671- if (if (if ((lU > 0))
2672- then true
2673- else (lV > 0))
2675+ if (if (if ((lV > 0))
26742676 then true
26752677 else (lW > 0))
2678+ then true
2679+ else (lX > 0))
26762680 then throw("You have to use own Medical Kit")
26772681 else {
2678- let lX = getString(dc, bM())
2679- let lY = if (isDefined(lX))
2680- then split_4C(value(lX), "_")
2682+ let lY = getString(dc, bM())
2683+ let lZ = if (isDefined(lY))
2684+ then split_4C(value(lY), "_")
26812685 else nil
2682- let lZ = if ((size(lY) > 0))
2683- then parseIntValue(lY[0])
2686+ let ma = if ((size(lZ) > 0))
2687+ then parseIntValue(lZ[0])
26842688 else 0
2685- if ((0 >= lZ))
2689+ if ((0 >= ma))
26862690 then throw("There are no Medical Kits L1 at Emergency Service storage")
26872691 else {
2688- let lT = (lP + parseIntValue(split(aS[0], "_")[aU]))
2689- let ma = makeString([toString((lZ - 1)), removeByIndex(lY, 0)], "_")
2692+ let lU = (lQ + parseIntValue(split(aS[0], "_")[aU]))
2693+ let mb = makeString([toString((ma - 1)), removeByIndex(lZ, 0)], "_")
26902694 let co = split(aS[0], "_")
2691- let mb = cn(co)
2692- let mc = fraction((mb * aL), aK, (cE * aX))
2693- if ((ll.amount != mc))
2694- then throw(("Payment attached should be " + toString(mc)))
2695+ let mc = cn(co)
2696+ let md = fraction((mc * aL), aK, (cE * aX))
2697+ if ((lm.amount != md))
2698+ then throw(("Payment attached should be " + toString(md)))
26952699 else {
2696- let fj = dw(invoke(dc, "updateEsStorage", [ma], [AttachedPayment(cx, mc)]))
2697- $Tuple2(((lk :+ IntegerEntry(jb, lT)) ++ jZ(A, X)._1), fj)
2700+ let fj = dw(invoke(dc, "updateEsStorage", [mb], [AttachedPayment(cx, md)]))
2701+ $Tuple2(((ll :+ IntegerEntry(jb, lU)) ++ jZ(A, X)._1), fj)
26982702 }
26992703 }
27002704 }
27012705 }
27022706 }
27032707 }
27042708 }
27052709 }
27062710
27072711
27082712
27092713 @Callable(gK)
2710-func updateBackpack (A,md) = if ((gK.caller != dc))
2714+func updateBackpack (A,me) = if ((gK.caller != dc))
27112715 then throw("permission denied")
2712- else $Tuple2([StringEntry(bI(A), md)], md)
2716+ else $Tuple2([StringEntry(bI(A), me)], me)
27132717
27142718
27152719
27162720 @Callable(gK)
27172721 func commitForRandom () = {
2718- let lk = lg(gK)
2719- let me = (height + dp)
2722+ let ll = lh(gK)
2723+ let mf = (height + dp)
27202724 let c = toString(gK.caller)
2721- $Tuple2(([IntegerEntry(dq(c), me)] ++ lk), me)
2725+ $Tuple2(([IntegerEntry(dq(c), mf)] ++ ll), mf)
27222726 }
27232727
27242728
27252729
27262730 @Callable(gK)
27272731 func buySLand () = {
2728- let lk = lg(gK)
2732+ let ll = lh(gK)
27292733 if ((size(gK.payments) != 1))
27302734 then throw("Exactly one payment required")
27312735 else {
2732- let ll = value(gK.payments[0])
2733- if ((ll.assetId != cx))
2736+ let lm = value(gK.payments[0])
2737+ if ((lm.assetId != cx))
27342738 then throw("Allowed USDT payment only!")
2735- else if ((ll.amount != eg))
2739+ else if ((lm.amount != eg))
27362740 then throw(("Payment attached should be " + toString(eg)))
27372741 else {
27382742 let fj = iI(gK.caller, gK.transactionId)
2739- let mf = dz(invoke(dg, "burnAcres", [eh], nil))
2740- $Tuple2((((fj._1 :+ ScriptTransfer(dc, ll.amount, cx)) ++ kf(toString(gK.caller), Z)._1) ++ lk), $Tuple2(fj._2._1, mf))
2743+ let mg = dz(invoke(dg, "burnAcres", [eh], nil))
2744+ $Tuple2((((fj._1 :+ ScriptTransfer(dc, lm.amount, cx)) ++ kf(toString(gK.caller), Z)._1) ++ ll), $Tuple2(fj._2._1, mg))
27412745 }
27422746 }
27432747 }
27442748
27452749
27462750
27472751 @Callable(gK)
27482752 func expedition (iQ,iR) = {
2749- let lk = lg(gK)
2753+ let ll = lh(gK)
27502754 if ((size(gK.payments) != 0))
27512755 then throw("No payments required")
27522756 else {
27532757 let bL = toString(gK.caller)
27542758 let hp = iP(bL, iQ, iR)
27552759 let A = hp._2
27562760 let jb = z(A)
27572761 let hL = bI(A)
27582762 let io = hK(hL)
27592763 let jQ = split(io[bj], "_")
27602764 let jS = makeString(fd(true, jQ, ef), "_")
27612765 let gx = F(A)
2762- let lz = valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,")
2763- let mg = fk(lz, hp._5)
2764- let lB = mg._1
2765- let lC = mg._2
2766- let mh = iI(gK.caller, gK.transactionId)
2767- let iO = mh._2._1
2766+ let lA = valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,")
2767+ let mh = fk(lA, hp._5)
2768+ let lC = mh._1
2769+ let lD = mh._2
2770+ let mi = iI(gK.caller, gK.transactionId)
2771+ let iO = mi._2._1
27682772 let fj = if ((0 >= hp._1))
2769- then $Tuple3([IntegerEntry(jb, 0), StringEntry(gx, lB)], "", 0)
2770- else $Tuple3((mh._1 ++ (if (lC)
2773+ then $Tuple3([IntegerEntry(jb, 0), StringEntry(gx, lC)], "", 0)
2774+ else $Tuple3((mi._1 ++ (if (lD)
27712775 then [StringEntry(L(A), "0_0_0_0_0")]
2772- else ((((nil :+ StringEntry(bJ(A), makeString([mh._2._2, "L", iO], "_"))) :+ IntegerEntry(jb, hp._1)) :+ StringEntry(gx, lB)) :+ StringEntry(hL, makeString([io[bh], io[bi], jS, io[bk]], ":"))))), iO, hp._3)
2776+ else ((((nil :+ StringEntry(bJ(A), makeString([mi._2._2, "L", iO], "_"))) :+ IntegerEntry(jb, hp._1)) :+ StringEntry(gx, lC)) :+ StringEntry(hL, makeString([io[bh], io[bi], jS, io[bk]], ":"))))), iO, hp._3)
27732777 if (kp(A))
27742778 then throw("expedition_checkTournament")
27752779 else if (kq(A))
27762780 then throw("expedition_checkDelivery")
27772781 else {
2778- let mf = dz(invoke(dg, "burnAcres", [eh], nil))
2779- $Tuple2(((fj._1 ++ jZ(A, Z)._1) ++ lk), $Tuple3(fj._2, fj._3, mf))
2782+ let mg = dz(invoke(dg, "burnAcres", [eh], nil))
2783+ $Tuple2(((fj._1 ++ jZ(A, Z)._1) ++ ll), $Tuple3(fj._2, fj._3, mg))
27802784 }
27812785 }
27822786 }
27832787
27842788
27852789
27862790 @Callable(gK)
27872791 func buySLandForAcres () = {
2788- let lk = lg(gK)
2792+ let ll = lh(gK)
27892793 if ((size(gK.payments) != 1))
27902794 then throw("exactly 1 payment must be attached")
27912795 else {
2792- let ll = gK.payments[0]
2793- let fq = ll.amount
2794- if (if (!(isDefined(ll.assetId)))
2796+ let lm = gK.payments[0]
2797+ let fq = lm.amount
2798+ if (if (!(isDefined(lm.assetId)))
27952799 then true
2796- else (value(ll.assetId) != do))
2800+ else (value(lm.assetId) != do))
27972801 then throw("ACRES payments only!")
27982802 else if ((fq != eh))
27992803 then throw(("Payment attached should be " + toString(eh)))
28002804 else {
28012805 let fj = iI(gK.caller, gK.transactionId)
2802- let mf = dz(invoke(dg, "burnAcres", [eh], [AttachedPayment(do, fq)]))
2803- $Tuple2(((fj._1 ++ kf(toString(gK.caller), Z)._1) ++ lk), $Tuple2(fj._2._1, mf))
2806+ let mg = dz(invoke(dg, "burnAcres", [eh], [AttachedPayment(do, fq)]))
2807+ $Tuple2(((fj._1 ++ kf(toString(gK.caller), Z)._1) ++ ll), $Tuple2(fj._2._1, mg))
28042808 }
28052809 }
28062810 }
28072811
28082812
28092813
28102814 @Callable(gK)
28112815 func upgradeInfra (P) = {
2812- let lk = lg(gK)
2816+ let ll = lh(gK)
28132817 if ((size(gK.payments) != 0))
28142818 then throw("No payments required")
28152819 else {
28162820 let fj = jK(true, gK.caller, 0, P)
28172821 let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked")
2818- $Tuple2(((fj._1 ++ lk) ++ jZ(A, fraction(aa, fj._3, cE))._1), fj._2)
2819- }
2820- }
2821-
2822-
2823-
2824-@Callable(gK)
2825-func activateArtifact (mi,mj) = {
2826- let lk = lg(gK)
2822+ $Tuple2(((fj._1 ++ ll) ++ jZ(A, fraction(aa, fj._3, cE))._1), fj._2)
2823+ }
2824+ }
2825+
2826+
2827+
2828+@Callable(gK)
2829+func activateArtifact (mj,mk) = {
2830+ let ll = lh(gK)
28272831 if ((size(gK.payments) != 0))
28282832 then throw("No payments required")
28292833 else {
28302834 let c = toString(gK.caller)
28312835 let fj = {
2832- let cy = mi
2836+ let cy = mj
28332837 if (("PRESALE" == cy))
2834- then kn(c, mj)
2838+ then kn(c, mk)
28352839 else if (("ONBOARD" == cy))
28362840 then kg(c)
28372841 else throw("Unknown artifact")
28382842 }
2839- (fj ++ lk)
2840- }
2841- }
2842-
2843-
2844-
2845-@Callable(gK)
2846-func mergeLands (kD) = {
2847- let lk = lg(gK)
2843+ (fj ++ ll)
2844+ }
2845+ }
2846+
2847+
2848+
2849+@Callable(gK)
2850+func mergeLands (kE) = {
2851+ let ll = lh(gK)
28482852 if ((size(gK.payments) != 0))
28492853 then throw("No payments required")
28502854 else {
2851- let fj = lb(toString(gK.caller), kD)
2852- $Tuple2(((fj._1 ++ lk) ++ kf(toString(gK.caller), ab)._1), fj._2)
2853- }
2854- }
2855-
2856-
2857-
2858-@Callable(gK)
2859-func cargoExchange (mk,P) = {
2860- let lk = lg(gK)
2855+ let fj = lc(toString(gK.caller), kE)
2856+ $Tuple2(((fj._1 ++ ll) ++ kf(toString(gK.caller), ab)._1), fj._2)
2857+ }
2858+ }
2859+
2860+
2861+
2862+@Callable(gK)
2863+func cargoExchange (ml,P) = {
2864+ let ll = lh(gK)
28612865 if ((size(gK.payments) != 0))
28622866 then throw("No payments required")
28632867 else {
2864- let in = split_4C(mk, ":")
2868+ let in = split_4C(ml, ":")
28652869 let c = toString(gK.originCaller)
28662870 let js = value(assetInfo(fromBase58String(P)))
28672871 let jt = br(P)
28682872 if (!(isDefined(getInteger(jt))))
28692873 then throw((js.name + " is not staked"))
28702874 else {
28712875 let jv = valueOrErrorMessage(getString(bo(P)), (("NFT " + js.name) + " is orphaned"))
28722876 if ((jv != c))
28732877 then throw((aC + " is not yours"))
28742878 else {
28752879 let hZ = (dH(split(js.description, "_")[di]) / cF)
28762880 let ia = valueOrElse(getInteger(by(P)), 0)
28772881 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
28782882 let jq = valueOrElse(getString(bJ(A)), aJ)
28792883 let cf = split(value(jq), "_")
28802884 if ((cf[bm] != "L"))
28812885 then throw((("Duck location type is " + cf[bm]) + ", but should be L"))
28822886 else if ((cf[bn] != P))
28832887 then throw(("Duck should be on the land " + P))
28842888 else {
28852889 let hY = bx(P)
28862890 let hP = hX(hY, hZ, ia)
28872891 let hL = bI(A)
28882892 let io = hK(hL)
28892893 let fj = im(in, hP, io)
28902894 let ig = split(hP[bc], "_")
28912895 let jH = (parseIntValue(ig[be]) + fj._7)
28922896 let jI = (parseIntValue(ig[bf]) - fj._7)
2893- ([StringEntry(hL, makeString_2C([io[bh], fj._4, fj._5, fj._6], ":")), StringEntry(hY, makeString_2C([hP[aY], fj._1, fj._2, fj._3, makeString([ig[bd], toString(jH), toString(jI), ig[bg]], "_")], ":"))] ++ lk)
2897+ ([StringEntry(hL, makeString_2C([io[bh], fj._4, fj._5, fj._6], ":")), StringEntry(hY, makeString_2C([hP[aY], fj._1, fj._2, fj._3, makeString([ig[bd], toString(jH), toString(jI), ig[bg]], "_")], ":"))] ++ ll)
28942898 }
28952899 }
28962900 }
28972901 }
28982902 }
28992903
29002904
29012905
29022906 @Callable(gK)
29032907 func saveWarehouse (ic,P) = if ((gK.caller != dc))
29042908 then throw("Access denied")
29052909 else {
29062910 let hY = bx(P)
29072911 let id = split_4C(ic, ":")
29082912 if ((size(id) != 5))
29092913 then throw("warehouse string should contain 4 ':' separators")
29102914 else {
2911- let ml = split(id[bc], "_")[bd]
2915+ let mm = split(id[bc], "_")[bd]
29122916 let jH = hO(id)
2913- let mm = hM(id[aY])
2914- let jI = ((mm - parseIntValue(ml)) - jH)
2915- let mn = makeString_2C([id[aY], id[aZ], id[ba], id[bb], makeString([ml, toString(jH), toString(jI), toString(mm)], "_")], ":")
2916- $Tuple2([StringEntry(hY, mn)], mn)
2917+ let mn = hM(id[aY])
2918+ let jI = ((mn - parseIntValue(mm)) - jH)
2919+ let mo = makeString_2C([id[aY], id[aZ], id[ba], id[bb], makeString([mm, toString(jH), toString(jI), toString(mn)], "_")], ":")
2920+ $Tuple2([StringEntry(hY, mo)], mo)
29172921 }
29182922 }
29192923
29202924
29212925
29222926 @Callable(gK)
29232927 func fixWarehouseFormat (P) = if ((gK.caller != db))
29242928 then throw("Access denied")
29252929 else {
29262930 let hY = bx(P)
29272931 let js = value(assetInfo(fromBase58String(P)))
29282932 let hZ = (dH(split(js.description, "_")[di]) / cF)
29292933 let ia = valueOrElse(getInteger(by(P)), 0)
29302934 let id = hX(hY, hZ, ia)
2931- let ml = dz(invoke(dc, "recalcLockedVolumeREADONLY", [P, id], nil))
2935+ let mm = dz(invoke(dc, "recalcLockedVolumeREADONLY", [P, id], nil))
29322936 let jH = hO(id)
2933- let mm = hM(id[aY])
2934- let jI = ((mm - ml) - jH)
2935- let mn = makeString_2C([id[aY], id[aZ], id[ba], id[bb], makeString([toString(ml), toString(jH), toString(jI), toString(mm)], "_")], ":")
2936- $Tuple2([StringEntry(hY, mn)], mn)
2937+ let mn = hM(id[aY])
2938+ let jI = ((mn - mm) - jH)
2939+ let mo = makeString_2C([id[aY], id[aZ], id[ba], id[bb], makeString([toString(mm), toString(jH), toString(jI), toString(mn)], "_")], ":")
2940+ $Tuple2([StringEntry(hY, mo)], mo)
29372941 }
29382942
29392943
29402944
29412945 @Callable(gK)
2942-func fixContinentProportions (kD) = if ((gK.caller != db))
2946+func fixContinentProportions (kE) = if ((gK.caller != db))
29432947 then throw("Access denied")
29442948 else {
2945- func mo (eR,mp) = (eR :+ valueOrElse(getString(ds(mp)), "0_0_0_0_0_0"))
2949+ func mp (eR,mq) = (eR :+ valueOrElse(getString(ds(mq)), "0_0_0_0_0_0"))
29462950
29472951 let gu = {
29482952 let eT = aP
29492953 let eU = size(eT)
29502954 let eV = nil
29512955 func eW (eX,eY) = if ((eY >= eU))
29522956 then eX
2953- else mo(eX, eT[eY])
2957+ else mp(eX, eT[eY])
29542958
29552959 func eZ (eX,eY) = if ((eY >= eU))
29562960 then eX
29572961 else throw("List size exceeds 5")
29582962
29592963 eZ(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5)
29602964 }
2961- func mq (eR,P) = {
2965+ func mr (eR,P) = {
29622966 let js = value(assetInfo(fromBase58String(P)))
29632967 let jw = split(js.description, "_")
29642968 let hZ = (dH(jw[di]) / cF)
2965- let mp = jw[dk]
2969+ let mq = jw[dk]
29662970 let gG = gM(jw[dj])
2967- let ho = value(indexOf(aP, mp))
2968- let kS = split(eR[ho], "_")
2969- let mr = makeString(gE(kS, gG, hZ, 1), "_")
2970- let cy = mp
2971+ let ho = value(indexOf(aP, mq))
2972+ let kT = split(eR[ho], "_")
2973+ let ms = makeString(gE(kT, gG, hZ, 1), "_")
2974+ let cy = mq
29712975 if (("Americas" == cy))
2972- then [mr, eR[1], eR[2], eR[3], eR[4]]
2976+ then [ms, eR[1], eR[2], eR[3], eR[4]]
29732977 else if (("Europe" == cy))
2974- then [eR[0], mr, eR[2], eR[3], eR[4]]
2978+ then [eR[0], ms, eR[2], eR[3], eR[4]]
29752979 else if (("Asia" == cy))
2976- then [eR[0], eR[1], mr, eR[3], eR[4]]
2980+ then [eR[0], eR[1], ms, eR[3], eR[4]]
29772981 else if (("Africa" == cy))
2978- then [eR[0], eR[1], eR[2], mr, eR[4]]
2982+ then [eR[0], eR[1], eR[2], ms, eR[4]]
29792983 else if (("Oceania" == cy))
2980- then [eR[0], eR[1], eR[2], eR[3], mr]
2984+ then [eR[0], eR[1], eR[2], eR[3], ms]
29812985 else throw("wrong continent")
29822986 }
29832987
29842988 let fc = {
2985- let eT = kD
2989+ let eT = kE
29862990 let eU = size(eT)
29872991 let eV = gu
29882992 func hF (eX,eY) = if ((eY >= eU))
29892993 then eX
2990- else mq(eX, eT[eY])
2994+ else mr(eX, eT[eY])
29912995
29922996 func hG (eX,eY) = if ((eY >= eU))
29932997 then eX
29942998 else throw("List size exceeds 100")
29952999
29963000 hG(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
29973001 }
29983002 $Tuple2([StringEntry(ds("Americas"), fc[0]), StringEntry(ds("Europe"), fc[1]), StringEntry(ds("Asia"), fc[2]), StringEntry(ds("Africa"), fc[3]), StringEntry(ds("Oceania"), fc[4])], 0)
29993003 }
30003004
30013005
30023006
30033007 @Callable(gK)
30043008 func fixStakedPieces (cM) = if ((gK.caller != db))
30053009 then throw("Access denied")
30063010 else {
3007- let kW = if ((cM == ""))
3011+ let kX = if ((cM == ""))
30083012 then 0
30093013 else {
3010- let kP = getString(an, du(cM))
3011- let kL = if (isDefined(kP))
3012- then split_51C(value(kP), "_")
3014+ let kQ = getString(an, du(cM))
3015+ let kM = if (isDefined(kQ))
3016+ then split_51C(value(kQ), "_")
30133017 else nil
3014- func ms (eR,P) = {
3018+ func mt (eR,P) = {
30153019 let js = value(assetInfo(fromBase58String(P)))
30163020 let dI = split(js.description, "_")[di]
30173021 (eR + dH(dI))
30183022 }
30193023
3020- let eT = kL
3024+ let eT = kM
30213025 let eU = size(eT)
30223026 let eV = 0
30233027 func eW (eX,eY) = if ((eY >= eU))
30243028 then eX
3025- else ms(eX, eT[eY])
3029+ else mt(eX, eT[eY])
30263030
30273031 func eZ (eX,eY) = if ((eY >= eU))
30283032 then eX
30293033 else throw("List size exceeds 100")
30303034
30313035 eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
30323036 }
3033- $Tuple2([IntegerEntry(dv(cM), kW)], kW)
3037+ $Tuple2([IntegerEntry(dv(cM), kX)], kX)
30343038 }
30353039
30363040
30373041
30383042 @Callable(gK)
3039-func setCustomName (bp,kN,bt) = {
3040- let lk = lg(gK)
3043+func setCustomName (bp,kO,bt) = {
3044+ let ll = lh(gK)
30413045 if ((size(gK.payments) != 1))
30423046 then throw("Exactly one payment required")
30433047 else {
3044- let ll = value(gK.payments[0])
3045- if ((ll.assetId != cx))
3048+ let lm = value(gK.payments[0])
3049+ if ((lm.assetId != cx))
30463050 then throw("Allowed USDT payment only!")
3047- else if ((ll.amount != ec))
3051+ else if ((lm.amount != ec))
30483052 then throw(("Payment should be " + toString(ec)))
3049- else if (contains(kN, "__"))
3050- then throw(("Name should not contain '__': " + kN))
3051- else if ((size(kN) > ed))
3053+ else if (contains(kO, "__"))
3054+ then throw(("Name should not contain '__': " + kO))
3055+ else if ((size(kO) > ed))
30523056 then throw(("Name too long, maxLength=" + toString(ed)))
30533057 else {
30543058 let c = toString(gK.originCaller)
3055- let mt = {
3059+ let mu = {
30563060 let cy = bt
30573061 if (("ACCOUNT" == cy))
30583062 then {
3059- let mu = ex(kN)
3060- let mv = getString(mu)
3061- if (isDefined(mv))
3062- then throw(("Name already registered: " + kN))
3063+ let mv = ex(kO)
3064+ let mw = getString(mv)
3065+ if (isDefined(mw))
3066+ then throw(("Name already registered: " + kO))
30633067 else {
3064- let mw = bB(c)
3065- let mx = getString(mw)
3066- let my = if (isDefined(mx))
3067- then [DeleteEntry(ex(value(mx)))]
3068+ let mx = bB(c)
3069+ let my = getString(mx)
3070+ let mz = if (isDefined(my))
3071+ then [DeleteEntry(ex(value(my)))]
30683072 else nil
3069- (((my :+ StringEntry(mw, kN)) :+ StringEntry(mu, c)) ++ kf(c, Y)._1)
3073+ (((mz :+ StringEntry(mx, kO)) :+ StringEntry(mv, c)) ++ kf(c, Y)._1)
30703074 }
30713075 }
30723076 else if (("LAND" == cy))
30733077 then {
30743078 let js = value(assetInfo(fromBase58String(bp)))
30753079 let jt = br(bp)
30763080 if (!(isDefined(getInteger(jt))))
30773081 then throw((js.name + " is not staked"))
30783082 else {
30793083 let jv = valueOrErrorMessage(getString(bo(bp)), (("NFT " + js.name) + " is orphaned"))
30803084 if ((jv != c))
30813085 then throw((aC + " is not yours"))
30823086 else {
3083- let mu = eq(kN)
3084- let mv = getString(mu)
3085- if (isDefined(mv))
3086- then throw(("Name already registered: " + kN))
3087+ let mv = eq(kO)
3088+ let mw = getString(mv)
3089+ if (isDefined(mw))
3090+ then throw(("Name already registered: " + kO))
30873091 else {
3088- let mz = bq(bp)
3089- let mx = getString(mz)
3090- let my = if (isDefined(mx))
3091- then [DeleteEntry(eq(value(mx)))]
3092+ let mA = bq(bp)
3093+ let my = getString(mA)
3094+ let mz = if (isDefined(my))
3095+ then [DeleteEntry(eq(value(my)))]
30923096 else nil
3093- (((my :+ StringEntry(mz, kN)) :+ StringEntry(mu, bp)) ++ kf(c, Y)._1)
3097+ (((mz :+ StringEntry(mA, kO)) :+ StringEntry(mv, bp)) ++ kf(c, Y)._1)
30943098 }
30953099 }
30963100 }
30973101 }
30983102 else if (("DUCK" == cy))
30993103 then {
31003104 let js = value(assetInfo(fromBase58String(bp)))
31013105 let jt = br(bp)
31023106 if (if (!(isDefined(getInteger(jt))))
31033107 then true
31043108 else !(isDefined(getString(bH(c)))))
31053109 then throw((js.name + " is not staked"))
31063110 else {
31073111 let jv = valueOrErrorMessage(getString(bG(bp)), (("NFT " + js.name) + " is orphaned"))
31083112 if ((jv != c))
31093113 then throw((aD + " is not yours"))
31103114 else {
3111- let mu = ew(kN)
3112- let mv = getString(mu)
3113- if (isDefined(mv))
3114- then throw(("Name already registered: " + kN))
3115+ let mv = ew(kO)
3116+ let mw = getString(mv)
3117+ if (isDefined(mw))
3118+ then throw(("Name already registered: " + kO))
31153119 else {
3116- let mz = bA(bp)
3117- let mx = getString(mz)
3118- let my = if (isDefined(mx))
3119- then [DeleteEntry(ew(value(mx)))]
3120+ let mA = bA(bp)
3121+ let my = getString(mA)
3122+ let mz = if (isDefined(my))
3123+ then [DeleteEntry(ew(value(my)))]
31203124 else nil
3121- (((my :+ StringEntry(mz, kN)) :+ StringEntry(mu, bp)) ++ jZ(bp, Y)._1)
3125+ (((mz :+ StringEntry(mA, kO)) :+ StringEntry(mv, bp)) ++ jZ(bp, Y)._1)
31223126 }
31233127 }
31243128 }
31253129 }
31263130 else throw("Unknown entity type")
31273131 }
3128- $Tuple2(((mt :+ ScriptTransfer(dc, ll.amount, cx)) ++ lk), 0)
3132+ $Tuple2(((mu :+ ScriptTransfer(dc, lm.amount, cx)) ++ ll), 0)
31293133 }
31303134 }
31313135 }
31323136
31333137
31343138
31353139 @Callable(gK)
3136-func setReferrals (mA,mB) = if ((gK.callerPublicKey != dZ))
3140+func setReferrals (mB,mC) = if ((gK.callerPublicKey != dZ))
31373141 then throw("Permission denied")
31383142 else {
3139- let lk = lg(gK)
3143+ let ll = lh(gK)
31403144 if ((size(gK.payments) != 0))
31413145 then throw("No payments required")
3142- else if (!(isDefined(addressFromString(mA))))
3143- then throw(("Invalid address: " + mA))
3144- else if (!(isDefined(addressFromString(mB))))
3145- then throw(("Invalid address: " + mB))
3146+ else if (!(isDefined(addressFromString(mB))))
3147+ then throw(("Invalid address: " + mB))
3148+ else if (!(isDefined(addressFromString(mC))))
3149+ then throw(("Invalid address: " + mC))
31463150 else {
3147- let mC = ey()
3148- let mD = getString(mC)
3149- let mE = if (isDefined(mD))
3150- then split_4C(value(mD), "_")
3151+ let mD = ey()
3152+ let mE = getString(mD)
3153+ let mF = if (isDefined(mE))
3154+ then split_4C(value(mE), "_")
31513155 else nil
3152- if (containsElement(mE, mB))
3153- then throw((mB + " is not newbie (already has referrals)"))
3156+ if (containsElement(mF, mC))
3157+ then throw((mC + " is not newbie (already has referrals)"))
31543158 else {
3155- let kh = bC(mB)
3159+ let kh = bC(mC)
31563160 let ki = getString(kh)
31573161 if (if (isDefined(ki))
31583162 then isDefined(addressFromString(value(ki)))
31593163 else false)
3160- then throw(((mB + " already has refBy: ") + value(ki)))
3164+ then throw(((mC + " already has refBy: ") + value(ki)))
31613165 else {
3162- let mF = bF(mA)
3163- let mG = getString(mF)
3164- let mH = if (isDefined(mG))
3165- then split_4C(value(mG), "_")
3166+ let mG = bF(mB)
3167+ let mH = getString(mG)
3168+ let mI = if (isDefined(mH))
3169+ then split_4C(value(mH), "_")
31663170 else nil
3167- if (containsElement(mH, mB))
3168- then throw((((mA + " already contains ") + mB) + " within referrals"))
3171+ if (containsElement(mI, mC))
3172+ then throw((((mB + " already contains ") + mC) + " within referrals"))
31693173 else {
3170- let mI = makeString_2C((mH :+ mB), "_")
3171- let mJ = if (containsElement(mE, mA))
3172- then value(mD)
3173- else makeString_2C((mE :+ mA), "_")
3174- $Tuple2(([StringEntry(kh, mA), StringEntry(mF, mI), StringEntry(mC, mJ)] ++ lk), 0)
3174+ let mJ = makeString_2C((mI :+ mC), "_")
3175+ let mK = if (containsElement(mF, mB))
3176+ then value(mE)
3177+ else makeString_2C((mF :+ mB), "_")
3178+ $Tuple2(([StringEntry(kh, mB), StringEntry(mG, mJ), StringEntry(mD, mK)] ++ ll), 0)
31753179 }
31763180 }
31773181 }
31783182 }
31793183 }
31803184
31813185
31823186
31833187 @Callable(gK)
3184-func distributePoints (mK,mL,mM,mN,mO) = {
3185- let lk = lg(gK)
3188+func distributePoints (mL,mM,mN,mO,mP) = {
3189+ let ll = lh(gK)
31863190 if ((size(gK.payments) != 0))
31873191 then throw("No payments required")
31883192 else {
31893193 let c = toString(gK.originCaller)
3190- let mP = dB(invoke(de, "checkWlgXpREADONLY", [c], nil))
3191- let mQ = dz(mP[1])
3192- let mR = if ((0 >= mQ))
3194+ let mQ = dB(invoke(de, "checkWlgXpREADONLY", [c], nil))
3195+ let mR = dz(mQ[1])
3196+ let mS = if ((0 >= mR))
31933197 then $Tuple2(0, nil)
31943198 else {
31953199 let ka = dz(invoke(de, "takeWlgXp", [c], nil))
31963200 if ((ka == ka))
3197- then $Tuple2(mQ, [IntegerEntry(H(c), dz(mP[0])), IntegerEntry(G(c), dz(mP[2]))])
3201+ then $Tuple2(mR, [IntegerEntry(H(c), dz(mQ[0])), IntegerEntry(G(c), dz(mQ[2]))])
31983202 else throw("Strict value is not equal to itself.")
31993203 }
3200- let mS = mR._1
3201- let mT = mR._2
3204+ let mT = mS._1
3205+ let mU = mS._2
32023206 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
3203- let mU = I(c)
3204- let mV = (valueOrElse(getInteger(mU), 0) + mS)
3205- let mW = E(A)
3206- let mX = valueOrElse(getInteger(mW), 0)
3207- let mY = (mV + mX)
3208- let mZ = ((((mK + mL) + mM) + mN) + mO)
3209- if ((mZ > mY))
3210- then throw((("There are only " + toString(mY)) + " free points to distribute"))
3207+ let mV = I(c)
3208+ let mW = (valueOrElse(getInteger(mV), 0) + mT)
3209+ let mX = E(A)
3210+ let mY = valueOrElse(getInteger(mX), 0)
3211+ let mZ = (mW + mY)
3212+ let na = ((((mL + mM) + mN) + mO) + mP)
3213+ if ((na > mZ))
3214+ then throw((("There are only " + toString(mZ)) + " free points to distribute"))
32113215 else {
3212- let na = B(A)
3213- let aq = split(valueOrElse(getString(na), "0_0_0_0_0"), "_")
3214- let nb = (mV - mZ)
3215- $Tuple2((([IntegerEntry(mU, if ((0 > nb))
3216+ let nb = B(A)
3217+ let aq = split(valueOrElse(getString(nb), "0_0_0_0_0"), "_")
3218+ let nc = (mW - na)
3219+ $Tuple2((([IntegerEntry(mV, if ((0 > nc))
32163220 then 0
3217- else nb), IntegerEntry(mW, if ((0 > nb))
3218- then (mX + nb)
3219- else mX), StringEntry(na, makeString([toString((parseIntValue(aq[k]) + mK)), toString((parseIntValue(aq[l]) + mL)), toString((parseIntValue(aq[m]) + mM)), toString((parseIntValue(aq[n]) + mN)), toString((parseIntValue(aq[o]) + mO))], "_"))] ++ lk) ++ mT), 0)
3221+ else nc), IntegerEntry(mX, if ((0 > nc))
3222+ then (mY + nc)
3223+ else mY), StringEntry(nb, makeString([toString((parseIntValue(aq[k]) + mL)), toString((parseIntValue(aq[l]) + mM)), toString((parseIntValue(aq[m]) + mN)), toString((parseIntValue(aq[n]) + mO)), toString((parseIntValue(aq[o]) + mP))], "_"))] ++ ll) ++ mU), 0)
32203224 }
32213225 }
32223226 }
32233227
32243228
32253229
32263230 @Callable(gK)
32273231 func splitByGlobalWeightsREADONLY (eI) = $Tuple2(nil, fa(eI))
32283232
32293233
32303234
32313235 @Callable(gK)
3232-func splitByGlobalAndLocalWeightsREADONLY (nc,nd,gN) = {
3236+func splitByGlobalAndLocalWeightsREADONLY (nd,ne,gN) = {
32333237 let gG = gM(gN)
3234- $Tuple2(nil, $Tuple2(fa(nc), eL(nd, gG)))
3238+ $Tuple2(nil, $Tuple2(fa(nd), eL(ne, gG)))
32353239 }
32363240
32373241
32383242
32393243 @Callable(gK)
32403244 func getBackpackREADONLY (A) = $Tuple2(nil, makeString(hK(bI(A)), ":"))
32413245
32423246
32433247
32443248 @Callable(gK)
32453249 func getWarehouseREADONLY (P) = {
32463250 let js = value(assetInfo(fromBase58String(P)))
32473251 let hZ = (dH(split(js.description, "_")[di]) / cF)
32483252 let ia = valueOrElse(getInteger(by(P)), 0)
32493253 $Tuple2(nil, makeString_2C(hX(bx(P), hZ, ia), ":"))
32503254 }
32513255
32523256
32533257
32543258 @Callable(gK)
32553259 func saveLastTx () = if (!(containsElement([de, dc, df, dg], gK.caller)))
32563260 then throw("Access denied")
3257- else $Tuple2(lg(gK), 42)
3261+ else $Tuple2(lh(gK), 42)
32583262
32593263
32603264
32613265 @Callable(gK)
32623266 func updateDuckStats (A,ka) = if ((gK.caller != dc))
32633267 then throw("Access denied")
32643268 else jZ(A, ka)
32653269
32663270
32673271
32683272 @Callable(gK)
32693273 func updateAccStats (c,ka) = if (!(containsElement([de, dc, dg], gK.caller)))
32703274 then throw("Access denied")
32713275 else kf(c, ka)
32723276
32733277
32743278
32753279 @Callable(gK)
3276-func equipDuck (ne) = {
3277- let lk = lg(gK)
3280+func equipDuck (nf) = {
3281+ let ll = lh(gK)
32783282 if ((size(gK.payments) != 0))
32793283 then throw("No payments required")
32803284 else {
32813285 let c = toString(gK.originCaller)
32823286 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
32833287 if (kp(A))
32843288 then throw("equipDuck_checkTournament")
32853289 else if (kq(A))
32863290 then throw("equipDuck_checkDelivery")
32873291 else {
32883292 let gx = F(A)
3289- let nf = split(valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3293+ let ng = split(valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
32903294 let hL = bI(A)
32913295 let io = hK(hL)
3292- let lB = split(ne, "_")
3293- if ((size(lB) != q))
3296+ let lC = split(nf, "_")
3297+ if ((size(lC) != q))
32943298 then throw("Wrong equipment string")
32953299 else {
3296- let gz = gm(nf, fx(io[bk]), true, nil)
3297- let gA = split(lB[p], ";")[1]
3300+ let gz = gm(ng, fx(io[bk]), true, nil)
3301+ let gA = split(lC[p], ";")[1]
32983302 let ao = if ((gA == ""))
32993303 then 0
33003304 else {
33013305 let gB = split(gA, ",")[0]
33023306 if ((gB == ""))
33033307 then 0
33043308 else {
33053309 let fM = split(gB, ":")
33063310 let da = fM[0]
33073311 let gC = fM[1]
33083312 if (if (if (if (if ((da == "06"))
33093313 then true
33103314 else (da == "07"))
33113315 then true
33123316 else (da == "08"))
33133317 then (gC != "")
33143318 else false)
33153319 then (parseIntValue(gC) > 0)
33163320 else false)
33173321 then parseIntValue(split(aS[parseIntValue(da)], "_")[aU])
33183322 else 0
33193323 }
33203324 }
33213325 let gh = am(this, A, ao, true)
3322- let gD = gm(lB, gz, false, gh)
3323- let ng = fC(gD)
3324- $Tuple2(([StringEntry(gx, ne), StringEntry(hL, makeString_2C([io[bh], io[bi], io[bj], ng], ":")), StringEntry(L(A), makeString([toString(gh[7]), toString(gh[8]), toString(gh[9]), toString(gh[10]), toString(gh[11])], "_"))] ++ lk), 0)
3326+ let gD = gm(lC, gz, false, gh)
3327+ let nh = fC(gD)
3328+ $Tuple2(([StringEntry(gx, nf), StringEntry(hL, makeString_2C([io[bh], io[bi], io[bj], nh], ":")), StringEntry(L(A), makeString([toString(gh[7]), toString(gh[8]), toString(gh[9]), toString(gh[10]), toString(gh[11])], "_"))] ++ ll), 0)
33253329 }
33263330 }
33273331 }
33283332 }
33293333
33303334
33313335
33323336 @Callable(gK)
3333-func fortificateLand (P,nh) = {
3334- let lk = lg(gK)
3337+func fortificateLand (P,ni) = {
3338+ let ll = lh(gK)
33353339 if ((size(gK.payments) != 0))
33363340 then throw("No payments required")
33373341 else {
33383342 let c = toString(gK.originCaller)
33393343 let A = valueOrElse(getString(bH(c)), "")
33403344 let fH = am(this, A, 0, false)
3341- let ni = bz(P)
3342- let nj = split(valueOrElse(getString(ni), ":0_15:0_18:0"), "_")
3345+ let nj = bz(P)
3346+ let nk = split(valueOrElse(getString(nj), ":0_15:0_18:0"), "_")
33433347 let js = value(assetInfo(fromBase58String(P)))
33443348 let hZ = (dH(split(js.description, "_")[di]) / cF)
33453349 let ia = valueOrElse(getInteger(by(P)), 0)
33463350 let hY = bx(P)
33473351 let id = hX(hY, hZ, ia)
3348- let nk = split(id[bc], "_")
3349- let nl = parseIntValue(nk[be])
3350- let nm = parseIntValue(nk[bf])
3351- let nn = split(nh, "_")
3352- let no = gt(nj, fx(id[bb]), nl, nm, true, nil)
3353- let gz = no._1
3354- let np = no._2
3355- let nq = no._3
3356- let nr = gt(nn, gz, np, nq, false, fH)
3357- let gD = nr._1
3358- let ns = nr._2
3359- let nt = nr._3
3360- let ng = fC(gD)
3361- let jY = makeString([nk[bd], toString(ns), toString(nt), nk[bg]], "_")
3362- $Tuple2(([StringEntry(ni, nh), StringEntry(hY, makeString_2C([id[aY], id[aZ], id[ba], ng, jY], ":"))] ++ lk), 0)
3352+ let nl = split(id[bc], "_")
3353+ let nm = parseIntValue(nl[be])
3354+ let nn = parseIntValue(nl[bf])
3355+ let no = split(ni, "_")
3356+ let np = gt(nk, fx(id[bb]), nm, nn, true, nil)
3357+ let gz = np._1
3358+ let nq = np._2
3359+ let nr = np._3
3360+ let ns = gt(no, gz, nq, nr, false, fH)
3361+ let gD = ns._1
3362+ let nt = ns._2
3363+ let nu = ns._3
3364+ let nh = fC(gD)
3365+ let jY = makeString([nl[bd], toString(nt), toString(nu), nl[bg]], "_")
3366+ $Tuple2(([StringEntry(nj, ni), StringEntry(hY, makeString_2C([id[aY], id[aZ], id[ba], nh, jY], ":"))] ++ ll), 0)
33633367 }
33643368 }
33653369
33663370
33673371
33683372 @Callable(gK)
33693373 func initDuckTourAttempt (A) = if ((gK.caller != df))
33703374 then throw("Access denied")
33713375 else {
33723376 let jb = z(A)
33733377 let jc = ag(valueOrElse(getInteger(D(A)), 0))
3374- let kt = valueOrElse(getInteger(jb), jc)
3375- let nu = bJ(A)
3376- let jq = valueOrElse(getString(nu), aJ)
3378+ let ku = valueOrElse(getInteger(jb), jc)
3379+ let nv = bJ(A)
3380+ let jq = valueOrElse(getString(nv), aJ)
33773381 let ce = valueOrElse(getInteger(df, bP), 0)
3378- let nv = (toString(ce) + "_T_0")
3379- $Tuple2([IntegerEntry(J(A), kt), IntegerEntry(jb, jc), StringEntry(K(A), jq), StringEntry(nu, nv)], nv)
3382+ let nw = (toString(ce) + "_T_0")
3383+ $Tuple2([IntegerEntry(J(A), ku), IntegerEntry(jb, jc), StringEntry(K(A), jq), StringEntry(nv, nw)], nw)
33803384 }
33813385
33823386
33833387
33843388 @Callable(gK)
33853389 func breakAttempt () = {
3386- let lk = lg(gK)
3390+ let ll = lh(gK)
33873391 let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked")
3388- let nu = bJ(A)
3389- let jq = valueOrElse(getString(nu), aJ)
3392+ let nv = bJ(A)
3393+ let jq = valueOrElse(getString(nv), aJ)
33903394 if ((split(jq, "_")[bm] != "T"))
33913395 then throw("Your duck is not in the tournament")
33923396 else {
3393- let ky = getIntegerValue(J(A))
3394- let kz = getStringValue(K(A))
3395- $Tuple2(((lk :+ IntegerEntry(z(A), ky)) :+ StringEntry(nu, kz)), jq)
3397+ let kz = getIntegerValue(J(A))
3398+ let kA = getStringValue(K(A))
3399+ $Tuple2(((ll :+ IntegerEntry(z(A), kz)) :+ StringEntry(nv, kA)), jq)
33963400 }
33973401 }
33983402
33993403
34003404
34013405 @Callable(gK)
34023406 func exitTournamentInternal (A) = if ((gK.caller != this))
34033407 then throw("Access denied")
34043408 else {
3405- let ky = getIntegerValue(J(A))
3406- let kz = getStringValue(K(A))
3407- $Tuple2([IntegerEntry(z(A), ky), StringEntry(bJ(A), kz)], false)
3409+ let kz = getIntegerValue(J(A))
3410+ let kA = getStringValue(K(A))
3411+ $Tuple2([IntegerEntry(z(A), kz), StringEntry(bJ(A), kA)], false)
34083412 }
34093413
34103414
34113415
34123416 @Callable(gK)
34133417 func exitDeliveryInternal (A) = if ((gK.caller != this))
34143418 then throw("Access denied")
34153419 else {
3416- let mh = kr(A)
3417- $Tuple2((mh._1 ++ mh._2), false)
3420+ let mi = kr(A, false, 0)
3421+ $Tuple2((mi._1 ++ mi._2), false)
34183422 }
34193423
34203424
34213425
34223426 @Callable(gK)
3423-func autoExitDelivery (A) = if ((gK.caller != this))
3427+func autoExitDelivery (A,iV) = if ((gK.caller != this))
34243428 then throw("Access denied")
34253429 else {
3426- let mh = kr(A)
3427- $Tuple2(mh._1, $Tuple2(mh._3, mh._4))
3430+ let mi = kr(A, true, iV)
3431+ $Tuple2(mi._1, $Tuple2(mi._3, mi._4))
34283432 }
34293433
34303434
34313435
34323436 @Callable(gK)
34333437 func prepareRobbery (iQ,iR) = {
3434- let lk = lg(gK)
3438+ let ll = lh(gK)
34353439 if (!(sigVerify_8Kb(iQ, iR, dZ)))
34363440 then throw("signature does not match")
34373441 else if ((size(gK.payments) != 1))
34383442 then throw("exactly 1 payment must be attached")
34393443 else {
3440- let ll = gK.payments[0]
3441- let nw = ll.amount
3442- if (if (!(isDefined(ll.assetId)))
3444+ let lm = gK.payments[0]
3445+ let nx = lm.amount
3446+ if (if (!(isDefined(lm.assetId)))
34433447 then true
3444- else (value(ll.assetId) != dm))
3448+ else (value(lm.assetId) != dm))
34453449 then throw("WLGOLD payments only!")
34463450 else {
34473451 let fp = split(toUtf8String(iQ), "|")
34483452 if ((size(fp) != 2))
34493453 then throw("Wrong message format")
34503454 else {
34513455 let A = fp[0]
34523456 if (kp(A))
34533457 then throw("prepareRobbery_checkTournament")
34543458 else if (kq(A))
34553459 then throw("prepareRobbery_checkDelivery")
34563460 else {
34573461 let ay = au(this, A)._1
3458- if ((ay > nw))
3459- then throw(((("Payment " + toString(nw)) + " < required ") + toString(ay)))
3462+ if ((ay > nx))
3463+ then throw(((("Payment " + toString(nx)) + " < required ") + toString(ay)))
34603464 else {
3461- let nx = split(fp[1], "_")
3465+ let ny = split(fp[1], "_")
34623466 let ax = lastBlock.timestamp
34633467 let az = valueOrElse(getInteger(R(A)), 0)
34643468 let aA = valueOrElse(getString(S(A)), "")
34653469 let aB = valueOrElse(getInteger(Q(aA)), 0)
34663470 if (if ((az != x))
34673471 then (aB > ax)
34683472 else false)
34693473 then throw(("You already started robbing, wait till " + toString(aB)))
34703474 else {
3471- func ny (eR,P) = {
3472- let nz = valueOrElse(getInteger(O(P)), 0)
3473- let nA = valueOrElse(getInteger(Q(P)), 0)
3474- if ((nz > size(u)))
3475+ func nz (eR,P) = {
3476+ let nA = valueOrElse(getInteger(O(P)), 0)
3477+ let nB = valueOrElse(getInteger(Q(P)), 0)
3478+ if ((nA > size(u)))
34753479 then throw("Invalid state")
3476- else if ((ax > nA))
3480+ else if ((ax > nB))
34773481 then {
3478- let nB = valueOrElse(getInteger(br(P)), 0)
3479- if ((0 >= nB))
3482+ let nC = valueOrElse(getInteger(br(P)), 0)
3483+ if ((0 >= nC))
34803484 then eR
34813485 else {
34823486 let gr = value(assetInfo(fromBase58String(P)))
34833487 let jw = split(gr.description, "_")
34843488 let ji = dH(jw[di])
3485- let nC = jh(P, ji)
3486- let gQ = (ax - nB)
3487- let jz = fraction(gQ, (nC * ji), a)
3489+ let nD = jh(P, ji)
3490+ let gQ = (ax - nC)
3491+ let jz = fraction(gQ, (nD * ji), a)
34883492 if ((v > jz))
34893493 then eR
34903494 else (eR :+ P)
34913495 }
34923496 }
34933497 else eR
34943498 }
34953499
3496- let nD = {
3497- let eT = nx
3500+ let nE = {
3501+ let eT = ny
34983502 let eU = size(eT)
34993503 let eV = nil
35003504 func eW (eX,eY) = if ((eY >= eU))
35013505 then eX
3502- else ny(eX, eT[eY])
3506+ else nz(eX, eT[eY])
35033507
35043508 func eZ (eX,eY) = if ((eY >= eU))
35053509 then eX
35063510 else throw("List size exceeds 10")
35073511
35083512 eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
35093513 }
3510- if ((size(nD) == 0))
3514+ if ((size(nE) == 0))
35113515 then throw("No candidates for robbery")
35123516 else {
3513- let nE = dR(size(nD), height, (iR + gK.transactionId))
3514- let P = nD[nE]
3515- $Tuple2(([IntegerEntry(O(P), w), IntegerEntry(Q(P), (ax + u[w])), IntegerEntry(R(A), y), StringEntry(S(A), P)] ++ lk), P)
3517+ let nF = dR(size(nE), height, (iR + gK.transactionId))
3518+ let P = nE[nF]
3519+ $Tuple2(([IntegerEntry(O(P), w), IntegerEntry(Q(P), (ax + u[w])), IntegerEntry(R(A), y), StringEntry(S(A), P)] ++ ll), P)
35163520 }
35173521 }
35183522 }
35193523 }
35203524 }
35213525 }
35223526 }
35233527 }
35243528
35253529
35263530
35273531 @Callable(gK)
35283532 func robLand (iQ,iR) = {
3529- let lk = lg(gK)
3533+ let ll = lh(gK)
35303534 if (!(sigVerify_8Kb(iQ, iR, dZ)))
35313535 then throw("signature does not match")
35323536 else {
35333537 let bL = toString(gK.caller)
35343538 let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked")
35353539 let ax = lastBlock.timestamp
3536- $Tuple2((lk :+ IntegerEntry(M(A), ax)), 0)
3540+ $Tuple2((ll :+ IntegerEntry(M(A), ax)), 0)
35373541 }
35383542 }
35393543
35403544
35413545
35423546 @Callable(gK)
35433547 func acceptDelivery () = if (!(cv))
35443548 then throw("Delivery feature is turned off!")
35453549 else {
3546- let lk = lg(gK)
3550+ let ll = lh(gK)
35473551 let bL = toString(gK.caller)
35483552 let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked")
3549- let nF = valueOrElse(getInteger(dc, bN), 0)
3550- let kw = valueOrElse(getInteger(dc, bO), 0)
3551- if ((aM > (nF - kw)))
3552- then throw(((("Delivery is not available, fund=" + dM(nF, 6)) + ", locked=") + dM(kw, 6)))
3553+ let nG = valueOrElse(getInteger(dc, bN), 0)
3554+ let kx = valueOrElse(getInteger(dc, bO), 0)
3555+ if ((aM > (nG - kx)))
3556+ then throw(((("Delivery is not available, fund=" + dM(nG, 6)) + ", locked=") + dM(kx, 6)))
35533557 else {
35543558 let ax = lastBlock.timestamp
3555- let nG = valueOrElse(getInteger(T(A)), 0)
3556- if ((nG > ax))
3557- then throw(("Delivery is forbidden for your duck until " + toString(nG)))
3559+ let nH = valueOrElse(getInteger(T(A)), 0)
3560+ if ((nH > ax))
3561+ then throw(("Delivery is forbidden for your duck until " + toString(nH)))
35583562 else if (kp(A))
35593563 then throw("acceptDelivery_checkTournament")
35603564 else if (kq(A))
35613565 then throw("acceptDelivery_checkDelivery")
35623566 else {
3563- let nH = dz(invoke(dc, "updateDeliveryLocked", [(kw + aM)], nil))
3567+ let nI = dz(invoke(dc, "updateDeliveryLocked", [(kx + aM)], nil))
35643568 let jb = z(A)
35653569 let jc = ag(valueOrElse(getInteger(D(A)), 0))
3566- let kt = valueOrElse(getInteger(jb), jc)
3567- let nu = bJ(A)
3568- let jq = valueOrElse(getString(nu), aJ)
3569- let nI = (toString(ax) + "_D_0")
3570- $Tuple2(([IntegerEntry(J(A), kt), IntegerEntry(jb, jc), StringEntry(K(A), jq), StringEntry(nu, nI)] ++ lk), $Tuple2(nI, nH))
3570+ let ku = valueOrElse(getInteger(jb), jc)
3571+ let nv = bJ(A)
3572+ let jq = valueOrElse(getString(nv), aJ)
3573+ let nJ = (toString(ax) + "_D_0")
3574+ $Tuple2(([IntegerEntry(J(A), ku), IntegerEntry(jb, jc), StringEntry(K(A), jq), StringEntry(nv, nJ)] ++ ll), $Tuple2(nJ, nI))
35713575 }
35723576 }
35733577 }
35743578
35753579

github/deemru/w8io/873ac7e 
653.06 ms