tx · 6L38t3LCTKvRaoEJb5xnjrgMqYzodAwZHSbksCaiVFop

3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm:  -0.10500000 Waves

2023.09.24 20:09 [2769762] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves

{ "type": 13, "id": "6L38t3LCTKvRaoEJb5xnjrgMqYzodAwZHSbksCaiVFop", "fee": 10500000, "feeAssetId": null, "timestamp": 1695575424538, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "3VmXgG1V7vFiB57G1nFc6AcL7keM2Nj1ZkJUQksnyauFJ6EGZ9qpHcvb9TjwuwxFrNeuAZeVn8wcFXcRQPr2EeKB" ], "script": "base64:BgLgAQgCEgMKAQgSAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASAwoBCBIAEgQKAgICEgASAwoBCBIECgIICBIDCgEYEgQKAggIEgQKAggIEgMKAQgSAwoBGBIDCgEIEgUKAwgICBIECgIICBIHCgUBAQEBARIDCgEBEgUKAwEBCBIDCgEIEgMKAQgSABIECgIIARIECgIIARIDCgEIEgQKAggIEgMKAQgSABIDCgEIEgMKAQgSAwoBCBIECgICAhIECgICAhIAmQIACURBWU1JTExJUwCAuJkpARRrZXlMYXN0QXJiVGltZUJ5VXNlcgEEYWRkcgkArAICAhBsYXN0QXJiVGltZVVzZXJfBQRhZGRyAAZTQ0FMRTgAgMLXLwAMeHBMZXZlbFNjYWxlAIAZAA94cExldmVsUmVjaXBQb3cAoB8AEm51bVBvaW50c09uTGV2ZWxVcAADAA5yb2JiZXJ5Q29zdE1pbgCAwtcvABRyb2JiZXJ5Q29vbGRvd25Db2VmZgCQAwAMcmVxdWlyZW1lbnRzCQDMCAICCFN0cmVuZ3RoCQDMCAICCEFjY3VyYWN5CQDMCAICCUludGVsbGVjdAkAzAgCAglFbmR1cmFuY2UJAMwIAgIJRGV4dGVyaXR5CQDMCAICBUxldmVsCQDMCAICBkhlYWx0aAUDbmlsAAxjaGFyU3RyZW5ndGgAAAAMY2hhckFjY3VyYWN5AAEADWNoYXJJbnRlbGxlY3QAAgANY2hhckVuZHVyYW5jZQADAA1jaGFyRGV4dGVyaXR5AAQAC3NlZ0JhY2twYWNrAAAAC05VTVNFR01FTlRTAAYACk5VTU1BSU5BVVgAAgAITUFYU0xPVFMAAgANTUFYUFJPRElOU0xPVAAeABBsYW5kUm9iQ29vbGRvd25zCQDMCAIAAAkAzAgCAMDPJAkAzAgCAKD3NgkAzAgCAIDczBQJAMwIAgCArqYKBQNuaWwADk1JTl9SRVNfVE9fUk9CAIDaxAkADHJvYklkeExvY2tlZAABAAtkdWNrSWR4RnJlZQAAABBkdWNrSWR4UHJlcGFyaW5nAAEBDWtleUR1Y2tIZWFsdGgBC2R1Y2tBc3NldElkCQCsAgICC2R1Y2tIZWFsdGhfBQtkdWNrQXNzZXRJZAEMa2V5RHVja0NoYXJzAQtkdWNrQXNzZXRJZAkArAICAgpkdWNrQ2hhcnNfBQtkdWNrQXNzZXRJZAEJa2V5RHVja1hQAQtkdWNrQXNzZXRJZAkArAICAgdkdWNrWFBfBQtkdWNrQXNzZXRJZAEMa2V5RHVja0xldmVsAQtkdWNrQXNzZXRJZAkArAICAgpkdWNrTGV2ZWxfBQtkdWNrQXNzZXRJZAERa2V5RHVja0ZyZWVQb2ludHMBC2R1Y2tBc3NldElkCQCsAgICD2R1Y2tGcmVlUG9pbnRzXwULZHVja0Fzc2V0SWQBEGtleUR1Y2tFcXVpcG1lbnQBC2R1Y2tBc3NldElkCQCsAgICDmR1Y2tFcXVpcG1lbnRfBQtkdWNrQXNzZXRJZAEJa2V5VXNlclhQAQRhZGRyCQCsAgICB3VzZXJYUF8FBGFkZHIBDGtleVVzZXJMZXZlbAEEYWRkcgkArAICAgp1c2VyTGV2ZWxfBQRhZGRyARFrZXlVc2VyRnJlZVBvaW50cwEEYWRkcgkArAICAg91c2VyRnJlZVBvaW50c18FBGFkZHIBDmtleVNhdmVkSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgxzYXZlZEhlYWx0aF8FC2R1Y2tBc3NldElkARBrZXlTYXZlZExvY2F0aW9uAQtkdWNrQXNzZXRJZAkArAICAg5zYXZlZExvY2F0aW9uXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tCdWZmcwELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0J1ZmZzXwULZHVja0Fzc2V0SWQBGGtleUxhc3RSb2JiZXJ5VGltZUJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIQbGFzdFJvYmJlcnlUaW1lXwULZHVja0Fzc2V0SWQBGGtleUxhc3RSb2JiZXJ5Q29zdEJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIQbGFzdFJvYmJlcnlDb3N0XwULZHVja0Fzc2V0SWQBE2tleUxhbmRSb2JiZXJ5U3RhdGUBC2xhbmRBc3NldElkCQCsAgICEWxhbmRSb2JiZXJ5U3RhdGVfBQtsYW5kQXNzZXRJZAESa2V5TGFuZENvb2xkb3duRVRBAQtsYW5kQXNzZXRJZAkArAICAhBsYW5kQ29vbGRvd25FVEFfBQtsYW5kQXNzZXRJZAETa2V5RHVja1JvYmJlcnlTdGF0ZQELZHVja0Fzc2V0SWQJAKwCAgIRZHVja1JvYmJlcnlTdGF0ZV8FC2R1Y2tBc3NldElkARNrZXlMb2NrZWRMYW5kQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAhFsb2NrZWRMYW5kQnlEdWNrXwULZHVja0Fzc2V0SWQBFmtleURlbGl2ZXJ5RGVsYXlCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICFGRlbGl2ZXJ5RGVsYXlCeUR1Y2tfBQtkdWNrQXNzZXRJZAAHeHBDbGFpbQCQTgAPeHBTdWNjZXNzRmxpZ2h0AJBOAAx4cEZhaWxGbGlnaHQA0A8ACHhwQ2FsbEVTAKCNBgAMeHBDdXN0b21OYW1lAMCEPQAKeHBOZXdTTGFuZADAlrECAA54cFVwZ3JhZGVJbmZyYQCQTgAHeHBNZXJnZQDAhD0ACXhwT25ib2FyZADAhD0ABnhwSGVhbACQTgEJbGV2ZWxCeVhQAQJ4cAkAawMFDHhwTGV2ZWxTY2FsZQkAbAYFAnhwAAQFD3hwTGV2ZWxSZWNpcFBvdwAEAAQFBERPV04FBlNDQUxFOAEJbWF4SGVhbHRoAQVsZXZlbAkAZAIAZAUFbGV2ZWwBB2xldmVsVXACCWN1cnJMZXZlbAVuZXdYUAQIbmV3TGV2ZWwJAQlsZXZlbEJ5WFABBQVuZXdYUAkAzAgCBQhuZXdMZXZlbAkAzAgCCQBoAgUSbnVtUG9pbnRzT25MZXZlbFVwCQBlAgUIbmV3TGV2ZWwFCWN1cnJMZXZlbAUDbmlsAQxnZXREdWNrU3RhdHMED3N0YWtpbmdDb250cmFjdAtkdWNrQXNzZXRJZApidWZmRWZmZWN0CmZvcmNlQnVmZnMEBWNoYXJzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0NoYXJzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAIBXwQDbHZsCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAEBmhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQJAQltYXhIZWFsdGgBBQNsdmwECnN0YXRlQnVmZnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wAgFfCQDOCAIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyU3RyZW5ndGgJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyQWNjdXJhY3kJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFySW50ZWxsZWN0CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckVuZHVyYW5jZQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJEZXh0ZXJpdHkJAMwIAgUDbHZsCQDMCAIFBmhlYWx0aAUDbmlsAwUKZm9yY2VCdWZmcwkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QFA25pbAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUMY2hhclN0cmVuZ3RoCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQxjaGFyQWNjdXJhY3kJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJJbnRlbGxlY3QJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJFbmR1cmFuY2UJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJEZXh0ZXJpdHkFA25pbAEOZ2V0Um9iYmVyeURhdGECD3N0YWtpbmdDb250cmFjdAtkdWNrQXNzZXRJZAQLbGFzdFJvYkNvc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEYa2V5TGFzdFJvYmJlcnlDb3N0QnlEdWNrAQULZHVja0Fzc2V0SWQAAAQLbGFzdFJvYlRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEYa2V5TGFzdFJvYmJlcnlUaW1lQnlEdWNrAQULZHVja0Fzc2V0SWQAAAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQHcm9iQ29zdAkAlgMBCQDMCAIFDnJvYmJlcnlDb3N0TWluCQDMCAIJAGUCBQtsYXN0Um9iQ29zdAkAaAIFFHJvYmJlcnlDb29sZG93bkNvZWZmCQBlAgUDbm93BQtsYXN0Um9iVGltZQUDbmlsBAlkdWNrU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQETa2V5RHVja1JvYmJlcnlTdGF0ZQEFC2R1Y2tBc3NldElkAAAECmxvY2tlZExhbmQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQETa2V5TG9ja2VkTGFuZEJ5RHVjawEFC2R1Y2tBc3NldElkAgAEB2xhbmRFVEEJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQESa2V5TGFuZENvb2xkb3duRVRBAQUKbG9ja2VkTGFuZAAACQCXCgUFB3JvYkNvc3QFC2xhc3RSb2JUaW1lBQlkdWNrU3RhdGUFCmxvY2tlZExhbmQFB2xhbmRFVEEACkxBTkRQUkVGSVgCBExBTkQACkRVQ0tQUkVGSVgCBERVQ0sACkFSVFBSRVNBTEUCB1BSRVNBTEUABk5VTVJFUwAGABhNQVhfTEFORFNfU1RBS0VEX0JZX1VTRVIAGQAPREFJTFlSRVNCWVBJRUNFAID40gEADFdITVVMVElQTElFUgCAyK+gJQAPREVGQVVMVExPQ0FUSU9OAg9BZnJpY2FfRl9BZnJpY2EAEFJFU09VUkNFUFJJQ0VNSU4A1bUCAApFU1NFTExDT0VGAAoAFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQDQhgMAElRFTl9NSU5VVEVTX01JTExJUwDAzyQACXByb2RUeXBlcwkAzAgCAhBGaXJzdCBBaWQgS2l0IEwxCQDMCAICEEZpcnN0IEFpZCBLaXQgTDIJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMwkAzAgCAgtCYWNrcGFjayBMMQkAzAgCAgtCYWNrcGFjayBMMgkAzAgCAgtCYWNrcGFjayBMMwkAzAgCAg5Gb29kIFJhdGlvbiBMMQkAzAgCAg5Gb29kIFJhdGlvbiBMMgkAzAgCAg5Gb29kIFJhdGlvbiBMMwkAzAgCAgtKZXQgUGFjayBMMQkAzAgCAgtKZXQgUGFjayBMMgkAzAgCAgtKZXQgUGFjayBMMwkAzAgCAglTaGllbGQgTDEJAMwIAgIJU2hpZWxkIEwyCQDMCAICCVNoaWVsZCBMMwkAzAgCAgdNaW5lIEwxCQDMCAICB01pbmUgTDIJAMwIAgIHTWluZSBMMwkAzAgCAgdUcmFwIEwxCQDMCAICB1RyYXAgTDIJAMwIAgIHVHJhcCBMMwUDbmlsAApjb250aW5lbnRzCQDMCAICCEFtZXJpY2FzCQDMCAICBkV1cm9wZQkAzAgCAgRBc2lhCQDMCAICBkFmcmljYQkAzAgCAgdPY2VhbmlhBQNuaWwACUNPRUZGMk1BVACAreIEABBmb3J0QWxsb3dlZFByb2RzCQDMCAIADwkAzAgCABAJAMwIAgARCQDMCAIAEgkAzAgCABMJAMwIAgAUBQNuaWwAEHByb2R1Y3Rpb25NYXRyaXgJAMwIAgIlOF84XzhfMTdfMTdfNDJfMTJfMF8zMF8wLDAsMCwwLDAsMCwwXwkAzAgCAiU4XzhfOF8xN18xN180Ml8yNF8wXzYwXzAsMCw1LDIsMCwwLDBfCQDMCAICJzhfOF84XzE3XzE3XzQyXzM2XzBfMTIwXzAsMCwxMCw0LDAsMCwwXwkAzAgCAik4XzE5XzE5XzhfMjdfMTlfMjZfMV8yMF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNTJfMV80MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNzhfMV84MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAiU4XzhfOF84XzhfNjBfMTNfMl8yXzAsMCwwLDAsMCwwLDBfMDExCQDMCAICJThfOF84XzhfOF82MF8yNl8yXzRfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzM5XzJfOF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfMzBfM18zMF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfNjBfM181MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfOTBfM183MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8xMV80XzEwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzIyXzRfMjBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMzNfNF8zMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAio0XzEzXzIyXzRfMzVfMjJfMjNfMF81MCwxLDBfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNF8xM18yMl80XzM1XzIyXzQ2XzBfNTAsMSwxXzAsMiw1LDAsMCwwLDBfCQDMCAICKzRfMTNfMjJfNF8zNV8yMl82OV8wXzUwLDIsMV8wLDUsMTAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzIwXzFfMzAsMSwxXzAsMCwwLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV80MF8xXzMwLDEsMl8yLDEsMywwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfNjBfMV8zMCwxLDNfNSwyLDgsMCwwLDAsMF8FA25pbAAJcklkeENvZWZmAAYACnJJZHhFZmZlY3QACAAQcklkeFJlcXVpcmVtZW50cwAJAAlySWR4U2xvdHMACgAOUFJPRFVDVFBLR1NJWkUACgALd2hJZHhMZXZlbHMAAAAId2hJZHhSZXMAAQAId2hJZHhNYXQAAgAJd2hJZHhQcm9kAAMACXdoSWR4TE9GVAAEAAl2b2xMb2NrZWQAAAALdm9sT2NjdXBpZWQAAQAHdm9sRnJlZQACAAh2b2xUb3RhbAADAApicElkeExldmVsAAAACGJwSWR4UmVzAAEACGJwSWR4TWF0AAIACWJwSWR4UHJvZAADAA9sb2NJZHhDb250aW5lbnQAAAAKbG9jSWR4VHlwZQABAAhsb2NJZHhJZAACARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIDbm9fBQdhc3NldElkARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEHYXNzZXRJZAkArAICAgVsY25hXwUHYXNzZXRJZAEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgNzdF8FB2Fzc2V0SWQBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgR0eXBlB2Fzc2V0SWQJALkJAgkAzAgCAgNsYXMJAMwIAgUEdHlwZQkAzAgCBQdhc3NldElkBQNuaWwCAV8BImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDB25mdFR5cGUHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgZzdHRhb18FB25mdFR5cGUCAV8FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgESa2V5V2FyZWhvdXNlQnlMYW5kAQtsYW5kQXNzZXRJZAkArAICAgN3aF8FC2xhbmRBc3NldElkARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQdhc3NldElkCQCsAgICC2luZnJhTGV2ZWxfBQdhc3NldElkARdrZXlGb3J0aWZpY2F0aW9uc0J5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIPZm9ydGlmaWNhdGlvbnNfBQtsYW5kQXNzZXRJZAEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIYZHVja0N1c3RvbU5hbWVCeUFzc2V0SWRfBQdhc3NldElkARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQRhZGRyCQCsAgICGGFjY291bnRDdXN0b21OYW1lQnlBZGRyXwUEYWRkcgEPa2V5QWRkcmVzc1JlZkJ5AQRhZGRyCQCsAgICCWFjY1JlZkJ5XwUEYWRkcgEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawELZHVja0Fzc2V0SWQJAKwCAgIab25ib2FyZEFydEFjdGl2YXRlZE9uRHVja18FC2R1Y2tBc3NldElkARxrZXlPbmJvYXJkQXJ0RHVja0FjdGl2YXRlZEJ5AQRhZGRyCQCsAgICGm9uYm9hcmRBcnRBY3RpdmF0ZWREdWNrQnlfBQRhZGRyARNrZXlBZGRyZXNzUmVmZXJyYWxzAQRhZGRyCQCsAgICDWFjY1JlZmVycmFsc18FBGFkZHIBEGtleUR1Y2tJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIKZHVja093bmVyXwUHYXNzZXRJZAEUa2V5U3Rha2VkRHVja0J5T3duZXIBCW93bmVyQWRkcgkArAICAhJzdGFrZWREdWNrQnlPd25lcl8FCW93bmVyQWRkcgERa2V5QmFja3BhY2tCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICCWJhY2tQYWNrXwULZHVja0Fzc2V0SWQBD2tleUR1Y2tMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgINZHVja0xvY2F0aW9uXwULZHVja0Fzc2V0SWQBFWtleVVzZXJHd2xSZWxlYXNlVGltZQEIdXNlckFkZHIJAKwCAgIaJXMlc19fdXNlckd3bFJlbGVhc2VUaW1lX18FCHVzZXJBZGRyAQ5rZXlFc1dhcmVob3VzZQACGmVtZXJnZW5jeVdhcmVob3VzZVByb2R1Y3RzAA9kZWxpdmVyeUZ1bmRLZXkCDGRlbGl2ZXJ5RnVuZAARZGVsaXZlcnlMb2NrZWRLZXkCDmRlbGl2ZXJ5TG9ja2VkAA1sYXN0VG91cklkS2V5Ag4lc19fbGFzdFRvdXJJZAEVa2V5VG91clN0YXRpY0RhdGFCeUlkAQN0SWQJAKwCAgIWJXMlZF9fdG91clN0YXRpY0RhdGFfXwkApAMBBQN0SWQBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBA3RJZAkArAICAhclcyVkX190b3VyRHluYW1pY0RhdGFfXwkApAMBBQN0SWQBGmtleUJlc3RSZXN1bHRCeVRvdXJBbmREdWNrAgN0SWQLZHVja0Fzc2V0SWQJALkJAgkAzAgCAh8lcyVkJXNfX2Jlc3RSZXN1bHRCeVRvdXJBbmREdWNrCQDMCAIJAKQDAQUDdElkCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwCAl9fAAlpZHhTdGF0aWMAAAAKaWR4RHluYW1pYwABAAp0U3RhdGljRW5kAAYADnREeW5hbWljU3RhdHVzAAEBC2dldFRvdXJEYXRhAgx0b3VyQ29udHJhY3QDdElkBAZzdGF0aWMJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDHRvdXJDb250cmFjdAkBFWtleVRvdXJTdGF0aWNEYXRhQnlJZAEFA3RJZAkArAICCQCsAgICGUVycm9yIHJlYWRpbmcgdG91cm5hbWVudCAJAKQDAQUDdElkAgUgZGF0YQICX18EB2R5bmFtaWMJALwJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDHRvdXJDb250cmFjdAkBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBBQN0SWQJAKwCAgkArAICAhlFcnJvciByZWFkaW5nIHRvdXJuYW1lbnQgCQCkAwEFA3RJZAIFIGRhdGECAl9fCQDMCAIFBnN0YXRpYwkAzAgCBQdkeW5hbWljBQNuaWwBDmlzSW5Ub3VybmFtZW50Agx0b3VyQ29udHJhY3QIbG9jYXRpb24EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQx0b3VyQ29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQDbG9jCQC1CQIFCGxvY2F0aW9uAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUMdG91ckNvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljAwMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAVQJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAcJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcBDGlzSW5EZWxpdmVyeQEIbG9jYXRpb24EA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJc3RhcnRUaW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQECGRpc3RhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQhsb2NJZHhJZAMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUQJAGYCBQNub3cJAGQCBQlzdGFydFRpbWUFElRFTl9NSU5VVEVTX01JTExJUwcJAGcCAAMFCGRpc3RhbmNlBwEPaXNVc3VhbExvY2F0aW9uAQhsb2NhdGlvbgQHbG9jVHlwZQkAkQMCCQC1CQIFCGxvY2F0aW9uAgFfBQpsb2NJZHhUeXBlAwkBAiE9AgUHbG9jVHlwZQIBVAkBAiE9AgUHbG9jVHlwZQIBRAcBDG5vdE9uTWlzc2lvbgIMdG91ckNvbnRyYWN0CGxvY2F0aW9uBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMdG91ckNvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFDHRvdXJDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwQHbG9jVHlwZQkAkQMCBQNsb2MFCmxvY0lkeFR5cGUDAwkBAiE9AgUHbG9jVHlwZQIBVAkBAiE9AgUHbG9jVHlwZQIBRAcGCQEBIQEDAwMJAAACCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBVAkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFD2xvY0lkeENvbnRpbmVudAUGbGFzdElkBwkAAAIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MHCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbm93BwESZ2V0UmVjaXBlTWF0ZXJpYWxzAQZyZWNpcGUJAGgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGcmVjaXBlBQlySWR4Q29lZmYFCUNPRUZGMk1BVAEMY2hlYXRBdHRlbXB0AgZvbGRMb2MGbmV3TG9jCQACAQkArAICCQCsAgIJAKwCAgIWQ2hlYXQgYXR0ZW1wdDogb2xkTG9jPQUGb2xkTG9jAgksIG5ld0xvYz0FBm5ld0xvYwAWS1NfU0VQQVJBVEVfUFVCTElDX0tFWQcAGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQYAEUtTX0FMTE9XX0RFTElWRVJZBgAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEAC3VzZHRBc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQMJAAACAQFUBQckbWF0Y2gwASBVsdifcoeC7+XjW42sBatl3ppDoS8WuwXzGreHpfHFGAkAAgECDVVua25vd24gY2hhaW4AFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAIjM1BRQ3V2RmJ2aDRMa1BVbnJuVTF6M2puYkExcDltM1dOaHYDCQAAAgEBVAUHJG1hdGNoMAIjM011bWtHR3p0Q0tBWHBXRHF4a2Rkb2ZxWFNVYnFRa3ZTSnkJAAIBAg1Vbmtub3duIGNoYWluABFJbmZyYVVwZ3JhZGVDb3N0UwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAyK+gJQMJAAACAQFUBQckbWF0Y2gwAIDC1y8JAAIBAg1Vbmtub3duIGNoYWluAA5hcmJpdHJhZ2VEZWxheQQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAuJkpAwkAAAIBAVQFByRtYXRjaDAA4NQDCQACAQINVW5rbm93biBjaGFpbgADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAAVTU0laRQAZAAVNU0laRQBkAAVMU0laRQDhAQAGWExTSVpFAJADAAdYWExTSVpFAPEEAAVJVEVSNgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQUDbmlsAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAARSWR4Q2ZnU3Rha2luZ0RhcHAAAQARSWR4Q2ZnRWNvbm9teURhcHAAAgAUSWR4Q2ZnR292ZXJuYW5jZURhcHAAAwANSWR4Q2ZnV2xnRGFwcAAEABRJZHhDZmdUb3VybmFtZW50RGFwcAAHAA9JZHhDZmdBY3Jlc0RhcHAACAEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ5rZXlSZXN0QWRkcmVzcwACDCVzX19yZXN0QWRkcgERcmVhZFJlc3RDZmdPckZhaWwBBHJlc3QJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHJlc3QJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCB3Jlc3RDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdyZXN0Q2ZnBQNpZHgJAKwCAgIqUmVzdCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAMcmVzdENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlSZXN0QWRkcmVzcwAFFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgAHcmVzdENmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAQUMcmVzdENvbnRyYWN0AA9zdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdTdGFraW5nRGFwcAAPZWNvbm9teUNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnRWNvbm9teURhcHAAC2dvdkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnR292ZXJuYW5jZURhcHAAC3dsZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUNSWR4Q2ZnV2xnRGFwcAASdG91cm5hbWVudENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnVG91cm5hbWVudERhcHAADWFjcmVzQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBQ9JZHhDZmdBY3Jlc0RhcHAACnJlY0xhbmROdW0AAAALcmVjTGFuZFNpemUAAQALcmVjVGVycmFpbnMAAgAMcmVjQ29udGluZW50AAMADXdsZ0Fzc2V0SWRLZXkCC3dsZ19hc3NldElkAAp3bGdBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgULd2xnQ29udHJhY3QFDXdsZ0Fzc2V0SWRLZXkCGFdMR09MRCBpcyBub3QgaXNzdWVkIHlldAAPYWNyZXNBc3NldElkS2V5AgxhY3Jlc0Fzc2V0SWQADGFjcmVzQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFDWFjcmVzQ29udHJhY3QFD2FjcmVzQXNzZXRJZEtleQIXQUNSRVMgaXMgbm90IGlzc3VlZCB5ZXQAC3JhbmRvbURlbGF5AAIBCWtleUNvbW1pdAEHYWRkcmVzcwkArAICAhNmaW5pc2hCbG9ja0ZvckFkZHJfBQdhZGRyZXNzARFrZXlSZXNQcm9wb3J0aW9ucwACE3Jlc1R5cGVzUHJvcG9ydGlvbnMBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBCWNvbnRpbmVudAkArAICAhRyZXNUeXBlc0J5Q29udGluZW50XwUJY29udGluZW50ARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBCW93bmVyQWRkcgkArAICAhNzdGFrZWRMYW5kc0J5T3duZXJfBQlvd25lckFkZHIBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBCW93bmVyQWRkcgkArAICAhRzdGFrZWRQaWVjZXNCeU93bmVyXwUJb3duZXJBZGRyAQhhc1N0cmluZwEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBbgUHJG1hdGNoMAUBbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEJYXNCb29sZWFuAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAXMFByRtYXRjaDAFAXMJAAIBAhlmYWlsIHRvIGNhc3QgaW50byBCb29sZWFuARBhc1N0cmluZ0ludFR1cGxlAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAg0oU3RyaW5nLCBJbnQpBAJ0MgUHJG1hdGNoMAUCdDIJAAIBAh9mYWlsIHRvIGNhc3QgaW50byAoU3RyaW5nLCBJbnQpAQ9udW1QaWVjZXNCeVNpemUBCGxhbmRTaXplBAckbWF0Y2gwBQhsYW5kU2l6ZQMJAAACAgFTBQckbWF0Y2gwBQVTU0laRQMJAAACAgFNBQckbWF0Y2gwBQVNU0laRQMJAAACAgFMBQckbWF0Y2gwBQVMU0laRQMJAAACAgJYTAUHJG1hdGNoMAUGWExTSVpFAwkAAAICA1hYTAUHJG1hdGNoMAUHWFhMU0laRQkAAgECEVVua25vd24gbGFuZCBzaXplAQdpc0RpZ2l0AQFzCQEJaXNEZWZpbmVkAQkAtgkBBQFzAQprZXlCbG9ja2VkAAIQY29udHJhY3RzQmxvY2tlZAERa2V5TGFzdFR4SWRCeVVzZXIBBGFkZHIJAKwCAgIPbGFzdFR4SWRCeVVzZXJfBQRhZGRyAQpmaXhlZFBvaW50AgN2YWwIZGVjaW1hbHMEBnRlblBvdwkAbAYACgAABQhkZWNpbWFscwAAAAAFBERPV04EB2xvd1BhcnQJAKQDAQkAagIFA3ZhbAUGdGVuUG93BAZ6ZXJvZXMJALACAgkApAMBBQZ0ZW5Qb3cJAGQCAAEJALECAQUHbG93UGFydAkArAICCQCsAgIJAKwCAgkApAMBCQBpAgUDdmFsBQZ0ZW5Qb3cCAS4FBnplcm9lcwUHbG93UGFydAEPZ2V0UmFuZG9tTnVtYmVyAwhtYXhWYWx1ZQxmaW5pc2hIZWlnaHQKYXV4RW50cm9weQQPcmFuZG9tU2VlZEJsb2NrCQEFdmFsdWUBCQDtBwEFDGZpbmlzaEhlaWdodAQKcmFuZG9tSGFzaAkA9wMBCQDLAQIJAQV2YWx1ZQEIBQ9yYW5kb21TZWVkQmxvY2sDdnJmBQphdXhFbnRyb3B5CQBqAgkAsQkBBQpyYW5kb21IYXNoBQhtYXhWYWx1ZQANaW5jdWJhdG9yQWRkcgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BFa3RWdXgyUmhjaFNONjNEc0RvNGI0bXo0UXF6S1NlRHYDCQAAAgEBVAUHJG1hdGNoMAUEdGhpcwkAAgECDVVua25vd24gY2hhaW4AC2JyZWVkZXJBZGRyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUERWdVU0NUg3RWg1ZG10TmJuUk5SU3RHd1VMQTdOWTZIYgMJAAACAQFUBQckbWF0Y2gwBQR0aGlzCQACAQINVW5rbm93biBjaGFpbgADcHViBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAwUWS1NfU0VQQVJBVEVfUFVCTElDX0tFWQEgqxdXjxVn41lUQbDWcutmm8Sj02Ze1ZmGUN+YNx+yCQgBIE9T4ho/VKjWnVJOEx1GJ1W9s1PzLHvJVFSw/0PBtBQoAwkAAAIBAVQFByRtYXRjaDABIE9T4ho/VKjWnVJOEx1GJ1W9s1PzLHvJVFSw/0PBtBQoCQACAQINVW5rbm93biBjaGFpbgAMRU1QVFlfUFJPRDUwAZADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARRklWRU1JTlVURVNNSUxMSVMA4KcSAAxSRU5BTUlOR0NPU1QAwJaxAgAKTUFYTkFNRUxFTgAyABVJbmZyYVVwZ3JhZGVDb3N0U1VzZHQAgK3iBAAMRVhQTUFURVJJQUxTBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAKbdgu2rBwMJAAACAQFUBQckbWF0Y2gwAKqngbMJCQACAQINVW5rbm93biBjaGFpbgAHRVhQVVNEVAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACA5Zp3AwkAAAIBAVQFByRtYXRjaDAAgOWadwkAAgECDVVua25vd24gY2hhaW4ADFNfQ09TVF9BQ1JFUwCA8ouoCQAFRklWRVgJALYCAQAFAAdUV0VOVFlYCQC2AgEAFAAIVFdFTlRZMlgJALYCAQkAaAIAFAAUAAhUV0VOVFkzWAkAtgIBCQBoAgkAaAIAFAAUABQACFRXRU5UWTRYCQC2AgEJAGgCCQBoAgkAaAIAFAAUABQAFAAIVFdFTlRZNVgJALYCAQkAaAIJAGgCCQBoAgkAaAIAFAAUABQAFAAUAA9QUkVTQUxFTlVNTEFORFMA9AMBEmtleU5leHRGcmVlTGFuZE51bQACC25leHRMYW5kTnVtARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEEbmFtZQkArAICAgRsY25fBQRuYW1lARBrZXlMYW5kVG9Bc3NldElkAQdsYW5kTnVtCQCsAgICA2xhXwUHbGFuZE51bQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgdhc3NldElkCW93bmVyQWRkcgkArAICCQCsAgIJAKwCAgIFaWxhb18FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgERa2V5TGFuZE51bVRvT3duZXIBB2xhbmROdW0JAKwCAgIDbG9fBQdsYW5kTnVtARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEEbmFtZQkArAICAhFkdWNrQnlDdXN0b21OYW1lXwUEbmFtZQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEEbmFtZQkArAICAhRhY2NvdW50QnlDdXN0b21OYW1lXwUEbmFtZQEJa2V5T2xkaWVzAAIKb2xkaWVzTGlzdAALY2xhaW1Nb2RlV2gAAAANY2xhaW1Nb2RlRHVjawABABNjbGFpbU1vZGVXaFRoZW5EdWNrAAIACGZsSGVhbHRoAAAAC2ZsVGltZXN0YW1wAAUAB2ZsQm9udXMABgALZmxQcm9kc1VzZWQABwEHbmZ0TmFtZQIHbGFuZE51bQhsYW5kU2l6ZQkArAICCQCsAgIFCkxBTkRQUkVGSVgFB2xhbmROdW0FCGxhbmRTaXplAQh0b1ZvbHVtZQIGYW1vdW50B3BrZ1NpemUEBHBrZ3MDCQBnAgUGYW1vdW50AAAJAGkCCQBlAgkAZAIFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQEBLQEJAGkCCQBlAgkAZAIJAQEtAQUGYW1vdW50BQdwa2dTaXplAAEFB3BrZ1NpemUJAGgCBQRwa2dzBQVNVUxUOAETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFdG90YWwHd2VpZ2h0cwQDc3VtCQBkAgkAZAIJAGQCCQBkAgkAZAIJAJEDAgUHd2VpZ2h0cwAACQCRAwIFB3dlaWdodHMAAQkAkQMCBQd3ZWlnaHRzAAIJAJEDAgUHd2VpZ2h0cwADCQCRAwIFB3dlaWdodHMABAkAkQMCBQd3ZWlnaHRzAAUDCQBnAgAABQNzdW0JAAIBAhBaZXJvIHdlaWdodHMgc3VtBAVub3JtNgkAawMFBXRvdGFsBQVNVUxUNgUDc3VtCgEKbm9ybWFsaXplcgIDYWNjBGVsZW0JAM0IAgUDYWNjCQBrAwUEZWxlbQUFbm9ybTYFBU1VTFQ2CgACJGwFB3dlaWdodHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCm5vcm1hbGl6ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEmdldE5lZWRlZE1hdGVyaWFscwEFdG90YWwEBXByb3BzCQC1CQIJAQV2YWx1ZQEJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAIBXwMJAQIhPQIJAJADAQUFcHJvcHMFBk5VTVJFUwkAAgECFldyb25nIHByb3BvcnRpb25zIGRhdGEEAXIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAAJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAEJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAMJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAQJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAUFA25pbAkBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBQV0b3RhbAUBcgERc3VidHJhY3RNYXRlcmlhbHMDDHNob3VsZFVzZU1hdANoYXMJdG90YWxOZWVkBARuZWVkCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUJdG90YWxOZWVkCgEKc3VidHJhY3RvcgIDYWNjA2lkeAQGcmVzdWx0CQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2hhcwUDaWR4CQCRAwIFBG5lZWQFA2lkeAMJAGYCAAAFBnJlc3VsdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhhOb3QgZW5vdWdoIG1hdGVyaWFsIGlkeD0JAKQDAQUDaWR4AgssIHlvdSBoYXZlIAkAkQMCBQNoYXMFA2lkeAILLCBidXQgbmVlZCAJAKQDAQkAkQMCBQRuZWVkBQNpZHgJAM0IAgUDYWNjCQCkAwEFBnJlc3VsdAMFDHNob3VsZFVzZU1hdAoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKc3VidHJhY3RvcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgUDaGFzARFzdWJ0cmFjdEVxdWlwbWVudAIFb2xkRXEFcFVzZWQDCQAAAgUFcFVzZWQCAAkAlAoCBQVvbGRFcQcKAQdzdWJVc2VkAgNhY2MGaWR4QW10BAVwYXJ0cwkAtQkCBQZpZHhBbXQCASwDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAihJbmNvcnJlY3QgZm9ybWF0LCBzaG91bGQgYmUgaW5kZXgsYW1vdW50BANpZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAAAwMJAGYCAAAFA2lkeAYJAGcCBQNpZHgJAJADAQUQcHJvZHVjdGlvbk1hdHJpeAkAAgECE1Vua25vd24gcHJvZHVjdCBpZHgEA2FtdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEEB2VxUGFydHMJALUJAggFA2FjYwJfMQkArAICCQCRAwIFBXBhcnRzAAACAToDCQECIT0CCQCQAwEFB2VxUGFydHMAAgkAAgEJAKwCAgkArAICAg9Zb3UgZG9uJ3QgaGF2ZSAJAJEDAgUJcHJvZFR5cGVzBQNpZHgCCSBlcXVpcHBlZAQDdG1wCQCRAwIFB2VxUGFydHMAAQQGbnVtTGVuAwkBB2lzRGlnaXQBCQCvAgIJALACAgUDdG1wAAEAAQACAAEEBGN1cnIJAQ1wYXJzZUludFZhbHVlAQkArwICBQN0bXAFBm51bUxlbgQEdGFpbAkAsAICBQN0bXAFBm51bUxlbgQGbmV3QW10AwkAZwIFBGN1cnIFA2FtdAkAZQIFBGN1cnIFA2FtdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg1Zb3UgZXF1aXBwZWQgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQNpZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUDYW10CQCUCgIJAKwCAgkArAICCQCsAgIJAKwCAgkAkQMCBQdlcVBhcnRzAAAJAJEDAgUFcGFydHMAAAIBOgkApAMBBQZuZXdBbXQFBHRhaWwDCAUDYWNjAl8yBgMDCQBnAgUDaWR4AAYJAGcCAAgFA2lkeAcJAAACBQZuZXdBbXQAAAcKAAIkbAkAtQkCBQVwVXNlZAIBXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUFb2xkRXEHCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzdWJVc2VkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAQ5wcm9kU3RyVG9CeXRlcwEHcHJvZFN0cgQFcExpc3QDCQAAAgUHcHJvZFN0cgIABQNuaWwJALwJAgUHcHJvZFN0cgIBXwoBBHRvQlYCA2FjYwZyZWNpcGUEAWoJAGkCCQDIAQEFA2FjYwAIBARjdXJyAwkAZgIJAJADAQUFcExpc3QFAWoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwTGlzdAUBagAACQDLAQIFA2FjYwkAmgMBBQRjdXJyCgACJGwFEHByb2R1Y3Rpb25NYXRyaXgKAAIkcwkAkAMBBQIkbAoABSRhY2MwAQAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBHRvQlYCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDUwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgEOYnl0ZXNUb1Byb2RTdHIBAmJ2CgEGZnJvbUJWAgNhY2MGcmVjaXBlBAFqCQCQAwEFA2FjYwQBYgkAyQECCQDKAQIFAmJ2CQBoAgAIBQFqAAgJAM0IAgUDYWNjCQCkAwEJALEJAQUBYgkAugkCCgACJGwFEHByb2R1Y3Rpb25NYXRyaXgKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBmZyb21CVgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyAgFfARVjaGVja1N0YXRSZXF1aXJlbWVudHMCCWR1Y2tTdGF0cwRyZXFzCgEFY2hlY2sCA2FjYwFqBARidWZmAwkAZgIJAJADAQUJZHVja1N0YXRzCQBkAgAHBQFqCQCRAwIFCWR1Y2tTdGF0cwkAZAIABwUBagAAAwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRyZXFzBQFqCQBkAgkAkQMCBQlkdWNrU3RhdHMFAWoFBGJ1ZmYJAAIBCQCsAgICG1JlcXVpcmVtZW50IG5vdCBzYXRpc2ZpZWQ6IAkAkQMCBQxyZXF1aXJlbWVudHMFAWoGCgACJGwJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGBQNuaWwKAAIkcwkAkAMBBQIkbAoABSRhY2MwBwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFY2hlY2sCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDcJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwEKcGxhY2VQcm9kQgYGaWR4Q250BXBMaXN0CmlzUG9zaXRpdmUJZHVja1N0YXRzCG9jY3VwaWVkBGZyZWUEBXBhcnRzCQC1CQIFBmlkeENudAIBOgMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleDphbW91bnQDAwkBASEBBQppc1Bvc2l0aXZlCQECIT0CCQCxAgEJAJEDAgUFcGFydHMAAAACBwkAAgECK1Byb2R1Y3QgaWR4IHNob3VsZCBiZSAyIGRpZ2l0cywgemVybyBwYWRkZWQECnByb2R1Y3RJZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAABAVjb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEDCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCBRBmb3J0QWxsb3dlZFByb2RzBQpwcm9kdWN0SWR4CQACAQkArAICCQCsAgICCVByb2R1Y3QgJwkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCIScgY2Fubm90IGJlIHVzZWQgZm9yIGxhbmQgZGVmZW5zZQMJAGYCAAAFBWNvdW50CQACAQIXQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmUDCQBmAgUFY291bnQFDU1BWFBST0RJTlNMT1QJAAIBCQCsAgIJAKwCAgkArAICAhRDYW4ndCBwdXQgbW9yZSB0aGFuIAkApAMBBQ1NQVhQUk9ESU5TTE9UAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAMJAAACBQVjb3VudAAACQCVCgMFBXBMaXN0BQhvY2N1cGllZAUEZnJlZQQEaGVhZAkAyQECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAQEY3VycgkAsQkBCQDJAQIJAMoBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgACAQEdGFpbAkAygECBQVwTGlzdAkAaAIACAkAZAIFCnByb2R1Y3RJZHgAAQQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAUKcHJvZHVjdElkeAIBXwMDCQEBIQEFCmlzUG9zaXRpdmUJAGYCBQVjb3VudAUEY3VycgcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJWW91IGhhdmUgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AhMsIGJ1dCB0cmllZCB0byB1c2UgCQCkAwEFBWNvdW50BAZuZXdBbXQDAwkBASEBBQppc1Bvc2l0aXZlCQEVY2hlY2tTdGF0UmVxdWlyZW1lbnRzAgUJZHVja1N0YXRzCQC1CQIJAJEDAgUGcmVjaXBlBRBySWR4UmVxdWlyZW1lbnRzAgEsBwkAZQIFBGN1cnIFBWNvdW50CQBkAgUEY3VycgUFY291bnQECGRlbHRhVm9sCQBlAgkBCHRvVm9sdW1lAgUGbmV3QW10BQ5QUk9EVUNUUEtHU0laRQkBCHRvVm9sdW1lAgUEY3VycgUOUFJPRFVDVFBLR1NJWkUJAJUKAwkAywECCQDLAQIFBGhlYWQJAJoDAQUGbmV3QW10BQR0YWlsCQBkAgUIb2NjdXBpZWQFCGRlbHRhVm9sCQBlAgUEZnJlZQUIZGVsdGFWb2wBCGFkZFByb2RCBwZpZHhDbnQFcExpc3QKaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgEc2xvdAlkdWNrU3RhdHMEBXBhcnRzCQC1CQIFBmlkeENudAIBOgMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleDphbW91bnQDAwkBASEBBQppc1Bvc2l0aXZlCQECIT0CCQCxAgEJAJEDAgUFcGFydHMAAAACBwkAAgECK1Byb2R1Y3QgaWR4IHNob3VsZCBiZSAyIGRpZ2l0cywgemVybyBwYWRkZWQECnByb2R1Y3RJZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAABAVjb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEDAwkAZgIAAAUKcHJvZHVjdElkeAYJAGcCBQpwcm9kdWN0SWR4CQCQAwEFEHByb2R1Y3Rpb25NYXRyaXgJAAIBAhNVbmtub3duIHByb2R1Y3QgaWR4AwkAZgIAAAUFY291bnQJAAIBAhdDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZQMJAGYCBQVjb3VudAUNTUFYUFJPRElOU0xPVAkAAgEJAKwCAgkArAICCQCsAgICFENhbid0IHB1dCBtb3JlIHRoYW4gCQCkAwEFDU1BWFBST0RJTlNMT1QCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AwkAAAIFBWNvdW50AAAJAJQKAgUFcExpc3QHBARoZWFkCQDJAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4BARjdXJyCQCxCQEJAMkBAgkAygECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAAIBAR0YWlsCQDKAQIFBXBMaXN0CQBoAgAICQBkAgUKcHJvZHVjdElkeAABBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQpwcm9kdWN0SWR4AgFfAwMJAQEhAQUKaXNQb3NpdGl2ZQkAZgIFBWNvdW50BQRjdXJyBwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglZb3UgaGF2ZSAJAKQDAQUEY3VycgIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUFY291bnQECWlzQmlnSXRlbQMDCQEBIQEFCmlzUG9zaXRpdmUJARVjaGVja1N0YXRSZXF1aXJlbWVudHMCBQlkdWNrU3RhdHMJALUJAgkAkQMCBQZyZWNpcGUFEHJJZHhSZXF1aXJlbWVudHMCASwHBAZjb21wYXQJAJEDAgUGcmVjaXBlBQlySWR4U2xvdHMDCQAAAgUGY29tcGF0AgAJAAIBAhdJdGVtIGNhbm5vdCBiZSBlcXVpcHBlZAQBYwkBDXBhcnNlSW50VmFsdWUBBQZjb21wYXQEBGNTZWcJAGkCBQFjAGQDCQECIT0CBQdzZWdtZW50BQRjU2VnCQACAQIUU2VnbWVudCBpbmNvbXBhdGlibGUECGNNYWluQXV4CQBpAgkAagIFAWMAZAAKAwkBAiE9AgUHbWFpbkF1eAUIY01haW5BdXgJAAIBAhFTbG90IGluY29tcGF0aWJsZQQJY051bVNsb3RzCQBqAgUBYwAKAwMJAQIhPQIFBHNsb3QAAAkAZgIFCWNOdW1TbG90cwABBwkAAgECHkJpZyBpdGVtcyBzaG91bGQgb2NjdXB5IHNsb3QgMAkAZgIFCWNOdW1TbG90cwABBwkAlAoCCQDLAQIJAMsBAgUEaGVhZAkAmgMBCQBkAgUEY3VycgMFCmlzUG9zaXRpdmUFBWNvdW50CQEBLQEFBWNvdW50BQR0YWlsBQlpc0JpZ0l0ZW0BC3Nsb3RzR3JvdXBCBgFnBGJwSW4KaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgFc3RhdHMDCQECIT0CBQFnAgAEBXNsb3RzCQC1CQIFAWcCASwDCQBmAgkAkAMBBQVzbG90cwUITUFYU0xPVFMJAAIBAhJXcm9uZyBzbG90cyBmb3JtYXQEAnMwCQCRAwIFBXNsb3RzAAAEAnMxAwkAZgIJAJADAQUFc2xvdHMAAQkAkQMCBQVzbG90cwABAgADAwkAAAIFAnMwAgAJAAACBQJzMQIABwUEYnBJbgQFdG1wUzADCQECIT0CBQJzMAIACQEIYWRkUHJvZEIHBQJzMAUEYnBJbgUKaXNQb3NpdGl2ZQUHc2VnbWVudAUHbWFpbkF1eAAABQVzdGF0cwkAlAoCBQRicEluBwMJAQIhPQIFAnMxAgADCAUFdG1wUzACXzIJAAIBAh5CaWcgaXRlbSBhbHJlYWR5IG9jY3VwaWVzIHNsb3QICQEIYWRkUHJvZEIHBQJzMQgFBXRtcFMwAl8xBQppc1Bvc2l0aXZlBQdzZWdtZW50BQdtYWluQXV4AAEFBXN0YXRzAl8xCAUFdG1wUzACXzEFBGJwSW4BBmRyZXNzQgQHc2VnTGlzdAZwQnl0ZXMKaXNQb3NpdGl2ZQVzdGF0cwoBB3NlZ21lbnQCA2FjYwNzZWcEAWoIBQNhY2MCXzEEB21haW5BdXgJALUJAgUDc2VnAgE7AwkBAiE9AgkAkAMBBQdtYWluQXV4BQpOVU1NQUlOQVVYCQACAQIUV3Jvbmcgc2VnbWVudCBmb3JtYXQEAW0JAJEDAgUHbWFpbkF1eAAABAFhCQCRAwIFB21haW5BdXgAAQMDCQAAAgUBbQIACQAAAgUBYQIABwkAlAoCCQBkAgUBagABCAUDYWNjAl8yBAR0bXBNCQELc2xvdHNHcm91cEIGBQFtCAUDYWNjAl8yBQppc1Bvc2l0aXZlBQFqAAAFBXN0YXRzCQCUCgIJAGQCBQFqAAEJAQtzbG90c0dyb3VwQgYFAWEFBHRtcE0FCmlzUG9zaXRpdmUFAWoAAQUFc3RhdHMICgACJGwFB3NlZ0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAUGcEJ5dGVzCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzZWdtZW50AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAl8yAQVmb3J0QgYHc2VnTGlzdAZwQnl0ZXMIb2NjdXBpZWQEZnJlZQppc1Bvc2l0aXZlCWR1Y2tTdGF0cwMJAGYCAAMJAJADAQUHc2VnTGlzdAkAAgECMUF0IGxlYXN0IGR1Y2ssIG1pbmVzIGFuZCB0cmFwcyBwYXJ0cyBhcmUgcmVxdWlyZWQKAQdzZWdtZW50AgNhY2MDc2VnBAFqCAUDYWNjAl8xAwkAAAIFAWoAAAkAlgoECQBkAgUBagABCAUDYWNjAl8yCAUDYWNjAl8zCAUDYWNjAl80BAFwCQEKcGxhY2VQcm9kQgYFA3NlZwgFA2FjYwJfMgUKaXNQb3NpdGl2ZQUJZHVja1N0YXRzCAUDYWNjAl8zCAUDYWNjAl80CQCWCgQJAGQCBQFqAAEIBQFwAl8xCAUBcAJfMggFAXACXzMEAXQKAAIkbAUHc2VnTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAAABQZwQnl0ZXMFCG9jY3VwaWVkBQRmcmVlCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzZWdtZW50AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKCQCVCgMIBQF0Al8yCAUBdAJfMwgFAXQCXzQBF2NhbldlYXJDdXJyZW50RXF1aXBtZW50AQtkdWNrQXNzZXRJZAQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQEBmN1cnJFcQkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAIBXwQJdGVtcFByb2RCCQEGZHJlc3NCBAUGY3VyckVxBQxFTVBUWV9QUk9ENTAGBQNuaWwECHNlZ0JwQXV4CQCRAwIJALUJAgkAkQMCBQZjdXJyRXEFC3NlZ0JhY2twYWNrAgE7AAEECmJ1ZmZFZmZlY3QDCQAAAgUIc2VnQnBBdXgCAAAABARhdXgwCQCRAwIJALUJAgUIc2VnQnBBdXgCASwAAAMJAAACBQRhdXgwAgAAAAQGaWR4Q250CQC1CQIFBGF1eDACAToEA2lkeAkAkQMCBQZpZHhDbnQAAAQDY250CQCRAwIFBmlkeENudAABAwMDAwMJAAACBQNpZHgCAjA2BgkAAAIFA2lkeAICMDcGCQAAAgUDaWR4AgIwOAkBAiE9AgUDY250AgAHCQBmAgkBDXBhcnNlSW50VmFsdWUBBQNjbnQAAAcJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAkBDXBhcnNlSW50VmFsdWUBBQNpZHgCAV8FCnJJZHhFZmZlY3QAAAQFc3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAUKYnVmZkVmZmVjdAYECG5ld1Byb2RCCQEGZHJlc3NCBAUGY3VyckVxBQl0ZW1wUHJvZEIHBQVzdGF0cwkAAAIFCG5ld1Byb2RCBQhuZXdQcm9kQgEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIcHJvcExpc3QNdGVycmFpbkNvdW50cw1sYW5kU2l6ZUluZGV4BHNpZ24DCQECIT0CCQCQAwEFCHByb3BMaXN0BQZOVU1SRVMJAAIBAhZXcm9uZyBwcm9wb3J0aW9ucyBkYXRhCgEHdXBkYXRlcgIDYWNjAWkEBnJlc3VsdAkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9wTGlzdAUBaQkAaAIJAGgCBQRzaWduCQCRAwIFDXRlcnJh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b2Z0CQC1CQIJAJEDAgUCd2gFCXdoSWR4TE9GVAIBXwQId2hMb2NrZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQEA29jYwMJAGYCCQCQAwEFBGxvZnQAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkBQp3aE9jY3VwaWVkCQC5CQIJAMwIAgkApAMBBQh3aExvY2tlZAkAzAgCCQCkAwEFA29jYwkAzAgCCQCkAwEJAGUCCQBlAgUHd2hUb3RhbAUId2hMb2NrZWQFA29jYwkAzAgCCQCkAwEFB3doVG90YWwFA25pbAIBXwkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAndoBQh3aElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAndoBQh3aElkeFJlcwILMF8wXzBfMF8wXzAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCBQZ3aExvZnQFA25pbAEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQljdXJyZW50V2gEC29jY3VwaWVkVm9sCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQljdXJyZW50V2gED2N1cnJXaExvY2tlZFZvbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkCQBlAgkAZQIJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwULb2NjdXBpZWRWb2wFD2N1cnJXaExvY2tlZFZvbAEJbW92ZVN0dWZmAwpjYXJnb1BhcnRzCWN1cnJlbnRXaAtjdXJyZW50UGFjawMJAQIhPQIJAJADAQUKY2FyZ29QYXJ0cwADCQACAQI0Y2FyZ29MaXN0U3RyIHNob3VsZCBjb250YWluIGV4YWN0bHkgMiAnOicgc2VwYXJhdG9ycwQIcmVzUGFydHMJALUJAgkAkQMCBQpjYXJnb1BhcnRzAAACAV8ECG1hdFBhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwABAgFfBAlwcm9kUGFydHMDCQAAAgkAkQMCBQpjYXJnb1BhcnRzAAICAAUDbmlsCQC8CQIJAJEDAgUKY2FyZ29QYXJ0cwACAgFfAwkBAiE9AgkAkAMBBQhyZXNQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgcmVzb3VyY2VzIHNob3VsZCBiZSBwYXNzZWQDCQECIT0CCQCQAwEFCG1hdFBhcnRzBQZOVU1SRVMJAAIBAiBBbGwgNiBtYXRlcmlhbHMgc2hvdWxkIGJlIHBhc3NlZAQLd2hTcGFjZUxlZnQJARVnZXRXYXJlaG91c2VTcGFjZUxlZnQBBQljdXJyZW50V2gECWN1cnJXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8ECWN1cnJXaE1hdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8ECmN1cnJXaFByb2QDCQAAAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIBXwQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDmN1cnJlbnRQYWNrTWF0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBA9jdXJyZW50UGFja1Byb2QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8KAQNtdlICA2FjYwRpdGVtBAFpCAUDYWNjAl8xBAJhbQkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAN3aHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQljdXJyV2hSZXMFAWkEA2JwcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpAwkAAAIFAmFtAAAJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCRAwIFCWN1cnJXaFJlcwUBaQkAzQgCCAUDYWNjAl8zCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpCAUDYWNjAl80AwkAZgIFAmFtAAADCQBmAgUCYW0FA2JwcgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAUEaXRlbQIZIGZyb20gYmFja3BhY2ssIGJ1dCBvbmx5IAkApAMBBQNicHICCiBhdmFpbGFibGUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHIFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcgUCYW0JAGQCCAUDYWNjAl80BQJhbQMJAGYCCQEBLQEFAmFtBQN3aHIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAJAKQDAQkBAS0BBQJhbQIaIGZyb20gd2FyZWhvdXNlLCBidXQgb25seSAJAKQDAQUDd2hyAgogYXZhaWxhYmxlCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hyBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicHIFAmFtCQBkAggFA2FjYwJfNAUCYW0EAXIKAAIkbAUIcmVzUGFydHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQAAAUDbmlsBQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDbXZSAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCgEDbXZNAgNhY2MEaXRlbQQBaQgFA2FjYwJfMQQCYW0JAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQDd2htCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJY3VycldoTWF0BQFpBANicG0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5jdXJyZW50UGFja01hdAUBaQMJAAACBQJhbQAACQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkAkQMCBQljdXJyV2hNYXQFAWkJAM0IAggFA2FjYwJfMwkAkQMCBQ5jdXJyZW50UGFja01hdAUBaQgFA2FjYwJfNAMJAGYCBQJhbQAAAwkAZgIFAmFtBQNicG0JAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAFBGl0ZW0CGSBmcm9tIGJhY2twYWNrLCBidXQgb25seSAJAKQDAQUDYnBtAgogYXZhaWxhYmxlCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2htBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicG0FAmFtCQBkAggFA2FjYwJfNAUCYW0DCQBmAgkBAS0BBQJhbQUDd2htCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgCQCkAwEJAQEtAQUCYW0CGiBmcm9tIHdhcmVob3VzZSwgYnV0IG9ubHkgCQCkAwEFA3dobQIKIGF2YWlsYWJsZQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3dobQUCYW0JAM0IAggFA2FjYwJfMwkApAMBCQBlAgUDYnBtBQJhbQkAZAIIBQNhY2MCXzQFAmFtBAFtCgACJGwFCG1hdFBhcnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEAAAFA25pbAUDbmlsCAUBcgJfNAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDbXZNAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCgEDbXZQAgNhY2MEaXRlbQQBaQgFA2FjYwJfMQQCYW0JAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQDd2hwAwkAZgIJAJADAQUKY3VycldoUHJvZAUBaQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmN1cnJXaFByb2QFAWkAAAQDYnBwAwkAZgIJAJADAQUPY3VycmVudFBhY2tQcm9kBQFpCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUPY3VycmVudFBhY2tQcm9kBQFpAAADCQAAAgUCYW0AAAkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQUDd2hwCQDNCAIIBQNhY2MCXzMJAKQDAQUDYnBwCAUDYWNjAl80AwkAZgIFAmFtAAADCQBmAgUCYW0FA2JwcAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAUEaXRlbQIZIGZyb20gYmFja3BhY2ssIGJ1dCBvbmx5IAkApAMBBQNicHACCiBhdmFpbGFibGUECGRlbHRhVm9sCQBlAgkBCHRvVm9sdW1lAgkAZAIFA3docAUCYW0FDlBST0RVQ1RQS0dTSVpFCQEIdG9Wb2x1bWUCBQN3aHAFDlBST0RVQ1RQS0dTSVpFCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hwBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicHAFAmFtCQBkAggFA2FjYwJfNAUIZGVsdGFWb2wDCQBmAgkBAS0BBQJhbQUDd2hwCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgCQCkAwEJAQEtAQUCYW0CGiBmcm9tIHdhcmVob3VzZSwgYnV0IG9ubHkgCQCkAwEFA3docAIKIGF2YWlsYWJsZQQIZGVsdGFWb2wJAGUCCQEIdG9Wb2x1bWUCCQBkAgUDd2hwBQJhbQUOUFJPRFVDVFBLR1NJWkUJAQh0b1ZvbHVtZQIFA3docAUOUFJPRFVDVFBLR1NJWkUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHAFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcAUCYW0JAGQCCAUDYWNjAl80BQhkZWx0YVZvbAQBcAMJAQIhPQIJAJADAQUJcHJvZFBhcnRzAAAKAAIkbAUJcHJvZFBhcnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEAAAFA25pbAUDbmlsCAUBbQJfNAoBBSRmMl8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDbXZQAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYyXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMl8yAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIJAJYKBAAABQpjdXJyV2hQcm9kBQ9jdXJyZW50UGFja1Byb2QIBQFtAl80BAh2b2xTYWxkbwgFAXACXzQDCQBmAgUIdm9sU2FsZG8FC3doU3BhY2VMZWZ0CQACAQkArAICCQCsAgIJAKwCAgkArAICAhVBdHRlbXB0IHRvIHB1dCB0b3RhbCAJAKQDAQUIdm9sU2FsZG8CESBzdHVmZiwgYnV0IG9ubHkgCQCkAwEFC3doU3BhY2VMZWZ0AhUgd2FyZWhvdXNlIHNwYWNlIGxlZnQJAJkKBwkAuQkCCAUBcgJfMgIBXwkAuQkCCAUBbQJfMgIBXwkAugkCCAUBcAJfMgIBXwkAuQkCCAUBcgJfMwIBXwkAuQkCCAUBbQJfMwIBXwkAugkCCAUBcAJfMwIBXwUIdm9sU2FsZG8BEmV4cGVkaXRpb25JbnRlcm5hbAIGY2FsbGVyBHR4SWQECHVzZXJBZGRyCQClCAEFBmNhbGxlcgQGYmlnTnVtCQEDYWJzAQkAngMBBQR0eElkBAdmcmVlTnVtCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUPUFJFU0FMRU5VTUxBTkRTAAEEB2xhbmROdW0JAKQDAQUHZnJlZU51bQQMY29udGluZW50SWR4CQCgAwEJALsCAgUGYmlnTnVtBQVGSVZFWAQIdGVycmFpbnMJAQtnZW5UZXJyYWlucwIFBmJpZ051bQUMY29udGluZW50SWR4BAljb250aW5lbnQJAJEDAgUKY29udGluZW50cwUMY29udGluZW50SWR4BAVpc3N1ZQkAwggFCQEHbmZ0TmFtZQIFB2xhbmROdW0CAVMJALkJAgkAzAgCBQdsYW5kTnVtCQDMCAICAVMJAMwIAgUIdGVycmFpbnMJAMwIAgUJY29udGluZW50BQNuaWwCAV8AAQAABwQHYXNzZXRJZAkAuAgBBQVpc3N1ZQQCaWQJANgEAQUHYXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQkAzAgCBQVpc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0FAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQJpZAUIdXNlckFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUIdXNlckFkZHIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUCaWQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFAmlkBQh1c2VyQWRkcgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgABBQdhc3NldElkBQNuaWwJAJQKAgUCaWQFCWNvbnRpbmVudAEMZmxpZ2h0Q29tbW9uAwh1c2VyQWRkcgdtZXNzYWdlA3NpZwMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAQFcGFydHMJALwJAgkAsAkBBQdtZXNzYWdlAgE7BAlmbGlnaHRMb2cJALwJAgkAkQMCBQVwYXJ0cwAAAgF8BAJocAkAtQkCCQCRAwIFCWZsaWdodExvZwUIZmxIZWFsdGgCAV8EBWN1ckhQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAAQFbmV3SFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAABBAtuZXdMb2NUeFZlcgkAtQkCCQCRAwIFBXBhcnRzAAECAToEC25ld0xvY2F0aW9uCQCRAwIFC25ld0xvY1R4VmVyAAAEBHRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlmbGlnaHRMb2cFC2ZsVGltZXN0YW1wAwMJAGYCBQR0aW1lCQBkAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBgkAZgIJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMFBHRpbWUJAAIBCQCsAgIJAKwCAgkArAICAhxzaWduYXR1cmUgb3V0ZGF0ZWQ6IGxvZ1RpbWU9CQCkAwEFBHRpbWUCCSwgYmNUaW1lPQkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJdHhGcm9tTXNnCQCRAwIFC25ld0xvY1R4VmVyAAEEBmxhc3RUeAkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5TGFzdFR4SWRCeVVzZXIBBQh1c2VyQWRkcgIAAwkBAiE9AgUGbGFzdFR4BQl0eEZyb21Nc2cJAAIBCQCsAgIJAKwCAgkArAICAh5UeCBpZHMgZG9uJ3QgbWF0Y2ghIEluIHN0YXRlOiAFBmxhc3RUeAIKLCBpbiBtc2c6IAUJdHhGcm9tTXNnBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQMb2xkRnJvbVN0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQECIT0CBQxvbGRGcm9tU3RhdGUFBWN1ckhQCQACAQkArAICCQCsAgIJAKwCAgIKb2xkSGVhbHRoPQkApAMBBQxvbGRGcm9tU3RhdGUCLyBmcm9tIHN0YXRlIGRvZXMgbm90IG1hdGNoIG9uZSBmcm9tIGZsaWdodCBsb2c9CQCkAwEFBWN1ckhQAwkAZwIAAAUFY3VySFAJAAIBAh5Zb3UgY2FuJ3QgZmx5IHdpdGggemVybyBoZWFsdGgDCQEBIQEJARdjYW5XZWFyQ3VycmVudEVxdWlwbWVudAEFC2R1Y2tBc3NldElkCQACAQIWRXF1aXBtZW50IGluY29tcGF0aWJsZQQFYm9udXMDCQBmAgkAkAMBBQlmbGlnaHRMb2cFB2ZsQm9udXMJAJEDAgUJZmxpZ2h0TG9nBQdmbEJvbnVzAgAECHByb2RVc2VkAwkAZgIJAJADAQUJZmxpZ2h0TG9nBQtmbFByb2RzVXNlZAkAkQMCBQlmbGlnaHRMb2cFC2ZsUHJvZHNVc2VkAgAECnNlbnRBbW91bnQDAwkAZgIFBW5ld0hQAAAJAAACBQVib251cwIBJAcJAQVhc0ludAEJAPwHBAUMcmVzdENvbnRyYWN0Ag1zZW5kVXNkdFByaXplCQDMCAIFCHVzZXJBZGRyBQNuaWwFA25pbAAACQCXCgUFBW5ld0hQBQtkdWNrQXNzZXRJZAUKc2VudEFtb3VudAULbmV3TG9jYXRpb24FCHByb2RVc2VkAQxhcHBseUJvbnVzZXMCC2xhbmRBc3NldElkBnBpZWNlcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECWFydFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABARhZGQ2CQBpAgUKaW5mcmFMZXZlbAAGBARhZGQ3CQBpAgUKaW5mcmFMZXZlbAAHCQBkAgkAZAIFD0RBSUxZUkVTQllQSUVDRQkAawMFD0RBSUxZUkVTQllQSUVDRQkAZAIJAGQCBQppbmZyYUxldmVsBQRhZGQ2CQBoAgACBQRhZGQ3AAUJAGsDBQ9EQUlMWVJFU0JZUElFQ0UFCWFydFBpZWNlcwkAaAIFBnBpZWNlcwAFARRjaGVja0NsYWltQ29uZGl0aW9ucwMEYWRkcgljbGFpbU1vZGUNbGFuZEFzc2V0SWRJbgQNJHQwMzM3MzgzNDI3NwMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQCUCgIFDWxhbmRBc3NldElkSW4JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OBANsb2MJALUJAgkBBXZhbHVlAQULY3VyTG9jYXRpb24CAV8DCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBTAkAAgEJAKwCAgkArAICAhZEdWNrIGxvY2F0aW9uIHR5cGUgaXMgCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIRLCBidXQgc2hvdWxkIGJlIEwJAJQKAgkAkQMCBQNsb2MFCGxvY0lkeElkBQtkdWNrQXNzZXRJZAQLbGFuZEFzc2V0SWQIBQ0kdDAzMzczODM0Mjc3Al8xBAZkdWNrSWQIBQ0kdDAzMzczODM0Mjc3Al8yBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQd0aW1lS2V5CQCsAgIJAKwCAgIFTGFuZCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfCQCWCgQFBmR1Y2tJZAULbGFuZEFzc2V0SWQFAWQFCXNhdmVkVGltZQEQY2xhaW1SZXNJbnRlcm5hbAQEYWRkcgZhbW91bnQJY2xhaW1Nb2RlDWxhbmRBc3NldElkSW4DCQBmAgAABQZhbW91bnQJAAIBAg9OZWdhdGl2ZSBhbW91bnQEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFCWNsYWltTW9kZQUNbGFuZEFzc2V0SWRJbgQIbGFuZFNpemUJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAggFAWMCXzMFC3JlY1RlcnJhaW5zBAlkZWx0YVRpbWUJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAgFAWMCXzQDCQBmAgAABQlkZWx0YVRpbWUJAAIBCQCsAgIJAKwCAgkArAICAiZTYXZlZCB0aW1lc3RhbXAgaXMgaW4gZnV0dXJlLCBzYXZlZCA9IAkApAMBCAUBYwJfNAIMLCBjdXJyZW50ID0gCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBBQhsYW5kU2l6ZQQWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDGFwcGx5Qm9udXNlcwIIBQFjAl8yBQZwaWVjZXMECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQUGcGllY2VzBQlEQVlNSUxMSVMDCQBmAgUGYW1vdW50BQhhdmFpbFJlcwkAAgEJAKwCAgkArAICCQCsAgICIk5vdCBlbm91Z2ggcmVzb3VyY2VzLCBhdmFpbGFibGUgPSAJAKQDAQUIYXZhaWxSZXMCDiwgcmVxdWVzdGVkID0gCQCkAwEFBmFtb3VudAQMbmV3RGVsdGFUaW1lCQBrAwkAZQIFCGF2YWlsUmVzBQZhbW91bnQFCURBWU1JTExJUwkAaAIFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UFBnBpZWNlcwQMbmV3VGltZXN0YW1wCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFDG5ld0RlbHRhVGltZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQKcmVzVG9DbGFpbQkBCXZpcnRDbGFpbQQFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEIBQFjAl8yBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQgFAWMCXzIAAAQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQEbG9mdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBAt3aFNwYWNlTGVmdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUDAwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAGYCBQZhbW91bnQFC3doU3BhY2VMZWZ0BwkAAgEJAKwCAgkArAICAgVPbmx5IAkApAMBBQt3aFNwYWNlTGVmdAIYIHNwYWNlIGxlZnQgaW4gd2FyZWhvdXNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDGN1cnJlbnRXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8EDSR0MDM2NjUxMzc1MjIDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAlgoECQEGYWRkUmVzBQUMY3VycmVudFdoUmVzBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQIBQpyZXNUb0NsYWltAl8yCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUIBQpyZXNUb0NsYWltAl8yAwkAAAIFCWNsYWltTW9kZQUNY2xhaW1Nb2RlRHVjawkAlgoECQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMJAQZhZGRSZXMFBQ5jdXJyZW50UGFja1JlcwUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUEBWRpc3RyCQENZGlzdHJpYnV0ZVJlcwQFDGN1cnJlbnRXaFJlcwUOY3VycmVudFBhY2tSZXMFCnJlc1RvQ2xhaW0FC3doU3BhY2VMZWZ0BAR3aEFtCQCXAwEJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUJAMwIAggFCnJlc1RvQ2xhaW0CXzIFA25pbAkAlgoECAUFZGlzdHICXzEIBQVkaXN0cgJfMgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAUEd2hBbQkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBQR3aEFtBAV3aFJlcwgFDSR0MDM2NjUxMzc1MjICXzEEBWJwUmVzCAUNJHQwMzY2NTEzNzUyMgJfMgQFbG9mdE8IBQ0kdDAzNjY1MTM3NTIyAl8zBAVsb2Z0RggFDSR0MDM2NjUxMzc1MjICXzQJAJcKBQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBCAUBYwJfMgUMbmV3VGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgIBQFjAl8yBQRhZGRyBQxuZXdUaW1lc3RhbXAFA25pbAUFYnBLZXkJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCBQVicFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAUFd2hLZXkJAMwIAgkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzCQDMCAIFBXdoUmVzCQDMCAIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAkAzAgCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCCQCRAwIFBGxvZnQFCXZvbExvY2tlZAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkAkQMCBQRsb2Z0BQh2b2xUb3RhbAUDbmlsAgFfBQNuaWwBCGNsYWltQWxsBARhZGRyC2xhbmRBc3NldElkBnBpZWNlcwljbGFpbU1vZGUEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBBXZhbHVlAQkAnwgBBQd0aW1lS2V5BAhhdmFpbFJlcwkAaAIJAGsDCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCXNhdmVkVGltZQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMFCURBWU1JTExJUwUGcGllY2VzCQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFCGF2YWlsUmVzBQljbGFpbU1vZGUFC2xhbmRBc3NldElkAQ11cEluZnJhQ29tbW9uBAxzaG91bGRVc2VNYXQGY2FsbGVyDXBheW1lbnRBbW91bnQLbGFuZEFzc2V0SWQEBGFkZHIJAKUIAQUGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBRNjbGFpbU1vZGVXaFRoZW5EdWNrBQtsYW5kQXNzZXRJZAQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUECGluZnJhS2V5CQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEIBQFjAl8yBAhjdXJMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQhpbmZyYUtleQAAAwMJAQEhAQUYS1NfQUxMT1dfQklHX0lORlJBX01FUkdFCQBnAgUIY3VyTGV2ZWwAAwcJAAIBAiZDdXJyZW50bHkgbWF4IGluZnJhc3RydWN0dXJlIGxldmVsID0gMwQIbWF4SW5mcmEJAGQCCQBpAgkBBHNxcnQEBQZwaWVjZXMAAAAABQRET1dOAAUAAgQIbmV3TGV2ZWwJAGQCBQhjdXJMZXZlbAABAwMFGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQkAZgIFCG5ld0xldmVsBQhtYXhJbmZyYQcJAAIBCQCsAgICJUN1cnJlbnRseSBtYXggaW5mcmFzdHJ1Y3R1cmUgbGV2ZWwgPSAJAKQDAQUIbWF4SW5mcmEEBGNvc3QJAGsDBRVJbmZyYVVwZ3JhZGVDb3N0U1VzZHQJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQMDCQEBIQEFDHNob3VsZFVzZU1hdAkBAiE9AgUNcGF5bWVudEFtb3VudAUEY29zdAcJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQRjb3N0BAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbUxpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EB21hdFVzZWQJAGsDBRFJbmZyYVVwZ3JhZGVDb3N0UwkAaAIFBnBpZWNlcwUIbmV3TGV2ZWwFBVNTSVpFBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwUMc2hvdWxkVXNlTWF0BQVtTGlzdAUHbWF0VXNlZAIBXwQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIIBQFjAl8yBQZwaWVjZXMFE2NsYWltTW9kZVdoVGhlbkR1Y2sEBndoRGF0YQgFC2NsYWltUmVzdWx0Al81BAZvbGRWb2wJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUGd2hEYXRhBQt3aElkeExldmVscwQKbmV3Vm9sRGF0YQkAuQkCCQDMCAIJAJEDAgkAtQkCCQCRAwIFBndoRGF0YQULd2hJZHhMZXZlbHMCAV8AAAkAzAgCCQCkAwEFCG5ld0xldmVsBQNuaWwCAV8EBm5ld1ZvbAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQUKbmV3Vm9sRGF0YQQEbG9mdAkAtQkCCQCRAwIFBndoRGF0YQUJd2hJZHhMT0ZUAgFfBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAkAzAgCCQCkAwEJAGUCCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUFBm5ld1ZvbAUGb2xkVm9sCQDMCAIJAKQDAQUGbmV3Vm9sBQNuaWwCAV8JAJUKAwkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhpbmZyYUtleQUIbmV3TGV2ZWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICCAUBYwJfMgUEYWRkcgUIbmV3TGV2ZWwJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAggFC2NsYWltUmVzdWx0Al8zBQhicElkeFJlcwkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al80CQC5CQIJAMwIAgUKbmV3Vm9sRGF0YQkAzAgCCQCRAwIFBndoRGF0YQUId2hJZHhSZXMJAMwIAgkAkQMCBQZ3aERhdGEFCHdoSWR4TWF0CQDMCAIJAJEDAgUGd2hEYXRhBQl3aElkeFByb2QJAMwIAgUKbmV3TG9mdFN0cgUDbmlsAgE6BQNuaWwIBQtjbGFpbVJlc3VsdAJfMQUIbmV3TGV2ZWwFB21hdFVzZWQBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgtkdWNrQXNzZXRJZAdkZWx0YVhQBAZsdmxLZXkJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAQFeHBLZXkJAQlrZXlEdWNrWFABBQtkdWNrQXNzZXRJZAQCeHAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0BQV4cEtleQAABAVuZXdYUAkAZAIFAnhwBQdkZWx0YVhQBAlsdmxQb2ludHMJAQdsZXZlbFVwAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QFBmx2bEtleQAABQVuZXdYUAQJa2V5UG9pbnRzCQERa2V5RHVja0ZyZWVQb2ludHMBBQtkdWNrQXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZsdmxLZXkJAJEDAgUJbHZsUG9pbnRzAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFBXhwS2V5BQVuZXdYUAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5UG9pbnRzCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlQb2ludHMAAAkAkQMCBQlsdmxQb2ludHMAAQUDbmlsBQVuZXdYUAEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIEYWRkcgdkZWx0YVhQBAZsdmxLZXkJAQxrZXlVc2VyTGV2ZWwBBQRhZGRyBAV4cEtleQkBCWtleVVzZXJYUAEFBGFkZHIEAnhwCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAUFeHBLZXkAAAQFbmV3WFAJAGQCBQJ4cAUHZGVsdGFYUAQJbHZsUG9pbnRzCQEHbGV2ZWxVcAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0BQZsdmxLZXkAAAUFbmV3WFAECWtleVBvaW50cwkBEWtleVVzZXJGcmVlUG9pbnRzAQUEYWRkcgkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZsdmxLZXkJAJEDAgUJbHZsUG9pbnRzAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFBXhwS2V5BQVuZXdYUAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5UG9pbnRzCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlQb2ludHMAAAkAkQMCBQlsdmxQb2ludHMAAQUDbmlsBQVuZXdYUAESYWN0aXZhdGVPbmJvYXJkQXJ0AQRhZGRyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECHJlZkJ5S2V5CQEPa2V5QWRkcmVzc1JlZkJ5AQUEYWRkcgQFcmVmQnkJAKIIAQUIcmVmQnlLZXkDCQEBIQEJAQlpc0RlZmluZWQBBQVyZWZCeQkAAgECKVlvdSBhcmUgbm90IGVsaWdpYmxlIGZvciBPTkJPQVJEIGFydGlmYWN0BAZhcnRLZXkJARxrZXlPbmJvYXJkQXJ0RHVja0FjdGl2YXRlZEJ5AQUEYWRkcgQHYXJ0RHVjawkAoggBBQZhcnRLZXkDCQEJaXNEZWZpbmVkAQUHYXJ0RHVjawkAAgEJAKwCAgIvWW91IGFscmVhZHkgdXNlZCB5b3VyIE9OQk9BUkQgYXJ0aWZhY3Qgb24gZHVjayAJAQV2YWx1ZQEFB2FydER1Y2sEEGR1Y2tBY3RpdmF0b3JLZXkJARxrZXlPbmJvYXJkQXJ0QWN0aXZhdGVkT25EdWNrAQULZHVja0Fzc2V0SWQEDWR1Y2tBY3RpdmF0b3IJAKIIAQUQZHVja0FjdGl2YXRvcktleQMJAQlpc0RlZmluZWQBBQ1kdWNrQWN0aXZhdG9yCQACAQkArAICCQCsAgIJAKwCAgIJVGhlIGR1Y2sgBQtkdWNrQXNzZXRJZAI0IGFscmVhZHkgZ290IHBvaW50cyBmcm9tIE9OQk9BUkQgYXJ0aWZhY3QgZnJvbSB1c2VyIAkBBXZhbHVlAQUNZHVja0FjdGl2YXRvcgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmFydEtleQULZHVja0Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUQZHVja0FjdGl2YXRvcktleQUEYWRkcgUDbmlsCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCXhwT25ib2FyZAJfMQESYWN0aXZhdGVQcmVzYWxlQXJ0AgRhZGRyDWxhbmRBc3NldElkSW4EAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFE2NsYWltTW9kZVdoVGhlbkR1Y2sFDWxhbmRBc3NldElkSW4EC2xhbmRBc3NldElkCAUBYwJfMgQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUEDWFjdGl2YXRpb25LZXkJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAwkAZgIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUNYWN0aXZhdGlvbktleQAAAAAJAAIBAiVQcmVzYWxlIGFydGlmYWN0IGlzIGFscmVhZHkgYWN0aXZhdGVkAwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCCAUBYwJfMwUKcmVjTGFuZE51bQUPUFJFU0FMRU5VTUxBTkRTCQACAQkArAICCQCsAgIJAKwCAgUKTEFORFBSRUZJWAIBIAULbGFuZEFzc2V0SWQCJSBpcyBub3QgZWxpZ2libGUgZm9yIHByZXNhbGUgYXJ0aWZhY3QEC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyBQtsYW5kQXNzZXRJZAUGcGllY2VzBRNjbGFpbU1vZGVXaFRoZW5EdWNrCQDNCAIJAM0IAgkAzQgCCAULY2xhaW1SZXN1bHQCXzEJAQxJbnRlZ2VyRW50cnkCBQ1hY3RpdmF0aW9uS2V5BQZwaWVjZXMJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfMgkAuQkCCAULY2xhaW1SZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfNAkAuQkCCAULY2xhaW1SZXN1bHQCXzUCAToBD2NoZWNrVG91cm5hbWVudAELZHVja0Fzc2V0SWQEBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFEnRvdXJuYW1lbnRDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwMJAQIhPQIJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUCAVQHAwMDCQAAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAkAAAIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MHCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbm93BwkAAgECKllvdXIgZHVjayBpcyB0YWtpbmcgcGFydCBpbiB0aGUgdG91cm5hbWVudAkBCWFzQm9vbGVhbgEJAPwHBAUEdGhpcwIWZXhpdFRvdXJuYW1lbnRJbnRlcm5hbAkAzAgCBQtkdWNrQXNzZXRJZAUDbmlsBQNuaWwBDWNoZWNrRGVsaXZlcnkBC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBRAcECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQ9sb2NJZHhDb250aW5lbnQECGRpc3RhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FCGxvY0lkeElkAwMJAGYCBQNub3cJAGQCBQlzdGFydFRpbWUFElRFTl9NSU5VVEVTX01JTExJUwkAZgIAAwUIZGlzdGFuY2UHCQACAQIgWW91ciBkdWNrIGlzIG9uIGRlbGl2ZXJ5IG1pc3Npb24JAQlhc0Jvb2xlYW4BCQD8BwQFBHRoaXMCFGV4aXREZWxpdmVyeUludGVybmFsCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAESZXhpdERlbGl2ZXJ5Q29tbW9uAQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJc3RhcnRUaW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FD2xvY0lkeENvbnRpbmVudAQIZGlzdGFuY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUIbG9jSWR4SWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQtkdWNrQXNzZXRJZAIUTkZUIGR1Y2sgaXMgb3JwaGFuZWQECWhlYWx0aEtleQkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQJY3VySGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBBQloZWFsdGhLZXkEDm91dGNvbWVBY3Rpb25zAwkAZwIFCGRpc3RhbmNlAAMEBnJld2FyZAkA/AcEBQ9lY29ub215Q29udHJhY3QCEnNlbmREZWxpdmVyeVJld2FyZAkAzAgCBQVvd25lcgUDbmlsBQNuaWwDCQAAAgUGcmV3YXJkBQZyZXdhcmQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAGYCBQNub3cJAGQCBQlzdGFydFRpbWUFElRFTl9NSU5VVEVTX01JTExJUwkAAgECJllvdXIgZHVjayBpcyBzdGlsbCBvbiBkZWxpdmVyeSBtaXNzaW9uBAtsb2NrZWRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9lY29ub215Q29udHJhY3QFEWRlbGl2ZXJ5TG9ja2VkS2V5AAAEBnVubG9jawkA/AcEBQ9lY29ub215Q29udHJhY3QCFHVwZGF0ZURlbGl2ZXJ5TG9ja2VkCQDMCAIJAGUCBQtsb2NrZWRUb3RhbAUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQNuaWwFA25pbAMJAAACBQZ1bmxvY2sFBnVubG9jawMJAGcCAAAFCWN1ckhlYWx0aAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5RGVsaXZlcnlEZWxheUJ5RHVjawEFC2R1Y2tBc3NldElkCQBkAgUJc3RhcnRUaW1lBQlEQVlNSUxMSVMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQLc2F2ZWRIZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBA1zYXZlZExvY2F0aW9uCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQCWCgQFDm91dGNvbWVBY3Rpb25zCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQloZWFsdGhLZXkFC3NhdmVkSGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUNc2F2ZWRMb2NhdGlvbgUDbmlsBQ1zYXZlZExvY2F0aW9uBQtzYXZlZEhlYWx0aAENbWVyZ2VJbnRlcm5hbAYLbmV3TGFuZFNpemUIbmV3TGV2ZWwHZm9ybXVsYQRhZGRyDGxhbmRBc3NldElkcwduZWVkTWF0BAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh1tZXJnZUludGVybmFsX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhttZXJnZUludGVybmFsX2NoZWNrRGVsaXZlcnkKAQpjaGVja01lcmdlAgNhY2MLbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFB3RpbWVLZXkJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwQJY29udGluZW50CQCRAwIFAWQFDHJlY0NvbnRpbmVudAMDCQECIT0CCAUDYWNjAl8zAgAJAQIhPQIIBQNhY2MCXzMFCWNvbnRpbmVudAcJAAIBAi5MYW5kcyBzaG91bGQgYmUgb24gdGhlIHNhbWUgY29udGluZW50IHRvIG1lcmdlBAhsYW5kU2l6ZQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQHc2l6ZXNJbggFA2FjYwJfMQQBaQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCzCQIFB3NpemVzSW4FCGxhbmRTaXplAidZb3UgaGF2ZW4ndCBwYXNzZWQgYWxsIHRoZSBsYW5kcyBuZWVkZWQECHNpemVzT3V0CQCsAgIJAK8CAgUHc2l6ZXNJbgUBaQkAsAICBQdzaXplc0luCQBkAgUBaQABBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBBQhsYW5kU2l6ZQQEYXJ0cwkAZAIIBQNhY2MCXzIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQAAAQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECHJlcUxldmVsBAckbWF0Y2gwBQhsYW5kU2l6ZQMJAAACAgFTBQckbWF0Y2gwAAMDCQAAAgIBTQUHJG1hdGNoMAAEAwkAAAICAUwFByRtYXRjaDAABQMJAAACAgJYTAUHJG1hdGNoMAAGCQACAQIaT25seSBTLCBNLCBMLCBYTCBjYW4gbWVyZ2UDCQECIT0CBQppbmZyYUxldmVsBQhyZXFMZXZlbAkAAgECIkFsbCBsYW5kcyBzaG91bGQgYmUgbWF4ZWQgdG8gbWVyZ2UEB2xhbmROdW0JAJEDAgUBZAUKcmVjTGFuZE51bQQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAlkZWx0YVRpbWUJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUJc2F2ZWRUaW1lAwkAZgIAAAUJZGVsdGFUaW1lCQACAQkArAICCQCsAgIJAKwCAgImU2F2ZWQgdGltZXN0YW1wIGlzIGluIGZ1dHVyZSwgc2F2ZWQgPSAJAKQDAQUJc2F2ZWRUaW1lAgwsIGN1cnJlbnQgPSAJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAEFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBAVicFJlcwkBBmFkZFJlcwUJALUJAggFA2FjYwJfNAIBXwUNdGVycmFpbkNvdW50cwUJZGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UEBXByb3BzCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MCXzYFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAZjUHJvcHMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwNfMTAFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAtzdW1UZXJyYWlucwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjAl85BQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQQFbGFuZHMIBQNhY2MCXzcEA2lkeAkAzwgCBQVsYW5kcwULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBBQNpZHgJAAIBCQCsAgICIFlvdXIgc3Rha2VkIGxhbmRzIGRvbid0IGNvbnRhaW4gBQtsYW5kQXNzZXRJZAQJY3VzdG9tS2V5CQEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBBQtsYW5kQXNzZXRJZAQKY3VzdG9tTmFtZQkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXN0b21LZXkCAAkAnAoKBQhzaXplc091dAUEYXJ0cwUJY29udGluZW50BQVicFJlcwkAzggCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAggFA2FjYwJfNQkBC0RlbGV0ZUVudHJ5AQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgkBC0RlbGV0ZUVudHJ5AQkBEGtleUxhbmRUb0Fzc2V0SWQBBQdsYW5kTnVtCQELRGVsZXRlRW50cnkBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQtsYW5kQXNzZXRJZAUEYWRkcgkBC0RlbGV0ZUVudHJ5AQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0JAQtEZWxldGVFbnRyeQEJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQUJY3VzdG9tS2V5CQEEQnVybgIJANkEAQULbGFuZEFzc2V0SWQAAQMJAQIhPQIFCmN1c3RvbU5hbWUCAAkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBQNuaWwFA25pbAUFcHJvcHMJANEIAgUFbGFuZHMJAQV2YWx1ZQEFA2lkeAkAZAIIBQNhY2MCXzgFBnBpZWNlcwULc3VtVGVycmFpbnMFBmNQcm9wcwQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkECHByb3BMaXN0CQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAILMF8wXzBfMF8wXzACAV8ECGxhbmRzS2V5CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUEYWRkcgQIbGFuZHNTdHIJAKIIAQUIbGFuZHNLZXkEB2xhbmRzSW4DCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAQFY29udDAJAJEDAgkAtQkCCAkBBXZhbHVlAQkA7AcBCQDZBAEJAJEDAgUMbGFuZEFzc2V0SWRzAAALZGVzY3JpcHRpb24CAV8FDHJlY0NvbnRpbmVudAQJY29udFByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBBQVjb250MAILMF8wXzBfMF8wXzACAV8EAXIKAAIkbAUMbGFuZEFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAnAoKBQdmb3JtdWxhAAACAAkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMFA25pbAUIcHJvcExpc3QFB2xhbmRzSW4AAAkAtQkCAgswXzBfMF8wXzBfMAIBXwUJY29udFByb3BzCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpjaGVja01lcmdlAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQQJY29udGluZW50CAUBcgJfMwQMY29udGluZW50SWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAM8IAgUKY29udGluZW50cwUJY29udGluZW50CQCsAgICE1Vua25vd24gY29udGluZW50OiAFCWNvbnRpbmVudAQIdGVycmFpbnMJARNnZW5UZXJyYWluc0Zvck1lcmdlAggFAXICXzkJAGkCCQEPbnVtUGllY2VzQnlTaXplAQULbmV3TGFuZFNpemUFBVNTSVpFBAdmcmVlTnVtCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUPUFJFU0FMRU5VTUxBTkRTAAEECm5ld0xhbmROdW0JAKQDAQUHZnJlZU51bQQFaXNzdWUJAMIIBQkBB25mdE5hbWUCBQpuZXdMYW5kTnVtBQtuZXdMYW5kU2l6ZQkAuQkCCQDMCAIFCm5ld0xhbmROdW0JAMwIAgULbmV3TGFuZFNpemUJAMwIAgUIdGVycmFpbnMJAMwIAgUJY29udGluZW50BQNuaWwCAV8AAQAABwQHYXNzZXRJZAkAuAgBBQVpc3N1ZQQObmV3TGFuZEFzc2V0SWQJANgEAQUHYXNzZXRJZAQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMJAGYCBQduZWVkTWF0AAAJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8FB25lZWRNYXQCAV8ECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQRhZGRyBAxzdGFrZWRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAJAJQKAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAggFAXICXzUDCQBmAgkAkAMBCAUBcgJfNwAACQELU3RyaW5nRW50cnkCBQhsYW5kc0tleQkAuwkCCAUBcgJfNwIBXwkBC0RlbGV0ZUVudHJ5AQUIbGFuZHNLZXkJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkDCQBmAggFAXICXzgFDHN0YWtlZFBpZWNlcwAACQBlAgUMc3Rha2VkUGllY2VzCAUBcgJfOAkBDEludGVnZXJFbnRyeQIJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUHZnJlZU51bQABBQVpc3N1ZQkBC1N0cmluZ0VudHJ5AgkBEGtleUxhbmRUb0Fzc2V0SWQBBQpuZXdMYW5kTnVtBQ5uZXdMYW5kQXNzZXRJZAkBC1N0cmluZ0VudHJ5AgkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFDm5ld0xhbmRBc3NldElkBQRhZGRyCQELU3RyaW5nRW50cnkCCQERa2V5TGFuZE51bVRvT3duZXIBBQpuZXdMYW5kTnVtBQRhZGRyCQEMSW50ZWdlckVudHJ5AgkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQUObmV3TGFuZEFzc2V0SWQIBQFyAl8yCQEMSW50ZWdlckVudHJ5AgkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQ5uZXdMYW5kQXNzZXRJZAUIbmV3TGV2ZWwJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgUObmV3TGFuZEFzc2V0SWQFBGFkZHIFCG5ld0xldmVsCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAggFAXICXzQJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6CQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMACQC5CQIIBQFyAl82AgFfCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEFCWNvbnRpbmVudAkAuQkCCAUBcgNfMTACAV8JAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIFCWNvbnRpbmVudAkAzAgCAgFMCQDMCAIFDm5ld0xhbmRBc3NldElkBQNuaWwCAV8JAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBGFkZHIAAQUHYXNzZXRJZAUObmV3TGFuZEFzc2V0SWQBA3MybQIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIBTQADAgRTU1NTBQRhZGRyBQxsYW5kQXNzZXRJZHMAAAEDbTJsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgFMAAQCA1NNTQUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMABAEEbDJ4bAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgICWEwABQIFU1NTTUwFBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTAC8BBnhsMnh4bAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIDWFhMAAYCA0xYTAUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMANgELbWVyZ2VDb21tb24CBGFkZHIMbGFuZEFzc2V0SWRzBAckbWF0Y2gwCQCQAwEFDGxhbmRBc3NldElkcwMJAAACAAQFByRtYXRjaDAJAQNzMm0CBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgADBQckbWF0Y2gwCQEDbTJsAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIABQUHJG1hdGNoMAkBBGwyeGwCBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgACBQckbWF0Y2gwCQEGeGwyeHhsAgUEYWRkcgUMbGFuZEFzc2V0SWRzCQACAQINVW5rbm93biBtZXJnZQEGcHJvbG9nAQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUMcmVzdENvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQkBC1N0cmluZ0VudHJ5AgkBEWtleUxhc3RUeElkQnlVc2VyAQkApQgBCAUBaQxvcmlnaW5DYWxsZXIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZC0BaQENY29uc3RydWN0b3JWMQEIcmVzdEFkZHIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5UmVzdEFkZHJlc3MABQhyZXN0QWRkcgUDbmlsAWkBCnNldEJsb2NrZWQBCWlzQmxvY2tlZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQxCb29sZWFuRW50cnkCCQEKa2V5QmxvY2tlZAAFCWlzQmxvY2tlZAUDbmlsAWkBCXN0YWtlTGFuZAAEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHYXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIIBQNwbXQGYW1vdW50AAEJAAIBCQCsAgIJAKwCAgIETkZUIAUKTEFORFBSRUZJWAIkIHRva2VuIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBwYXltZW50BAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkAwkBAiE9AggFBWFzc2V0Bmlzc3VlcgUEdGhpcwkAAgECF1Vua25vd24gaXNzdWVyIG9mIHRva2VuAwkBASEBCQEIY29udGFpbnMCCAUFYXNzZXQEbmFtZQUKTEFORFBSRUZJWAkAAgEJAKwCAgkArAICAglPbmx5IE5GVCAFCkxBTkRQUkVGSVgCFCB0b2tlbnMgYXJlIGFjY2VwdGVkBAtsYW5kTnVtU2l6ZQkAsAICCAUFYXNzZXQEbmFtZQAEBAdsYW5kTnVtAwkBCGNvbnRhaW5zAgULbGFuZE51bVNpemUCA1hYTAkAswICBQtsYW5kTnVtU2l6ZQADAwkBCGNvbnRhaW5zAgULbGFuZE51bVNpemUCAlhMCQCzAgIFC2xhbmROdW1TaXplAAIJALMCAgULbGFuZE51bVNpemUAAQMJAQEhAQkBCWlzRGVmaW5lZAEJALYJAQUHbGFuZE51bQkAAgEJAKwCAgIeQ2Fubm90IHBhcnNlIGxhbmQgbnVtYmVyIGZyb20gCAUFYXNzZXQEbmFtZQQLbGFuZEFzc2V0SWQJANgEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAMJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCEiBpcyBhbHJlYWR5IHN0YWtlZAQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8EDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFcHJvcHMJARF1cGRhdGVQcm9wb3J0aW9ucwMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABBAxyZXNCeUNvbnRLZXkJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQkAkQMCBQFkBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFDHJlc0J5Q29udEtleQILMF8wXzBfMF8wXzACAV8EEHVwZGF0ZWRDb250UHJvcHMJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABAgFfBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFB2FkZHJlc3MECGxhbmRzU3RyCQCiCAEFCGxhbmRzS2V5BAVsYW5kcwMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFBWxhbmRzBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgIiWW91ciBzdGFrZWQgbGFuZHMgYWxyZWFkeSBjb250YWluIAULbGFuZEFzc2V0SWQDCQBnAgkAkAMBBQVsYW5kcwUYTUFYX0xBTkRTX1NUQUtFRF9CWV9VU0VSCQACAQkArAICCQCsAgICGVlvdXIgYWxyZWFkeSBzdGFrZWQgbWF4ICgJAKQDAQUYTUFYX0xBTkRTX1NUQUtFRF9CWV9VU0VSAgcpIGxhbmRzBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFB2FkZHJlc3MECW9sZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAQJd2xnUmVzdWx0CQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUHYWRkcmVzcwUDbmlsBQNuaWwJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIJAM0IAgUFbGFuZHMFC2xhbmRBc3NldElkAgFfCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkJAGQCBQlvbGRQaWVjZXMFBnBpZWNlcwkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUHYWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFC2xhbmRBc3NldElkBQdhZGRyZXNzBQppbmZyYUxldmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAFBXByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIFDHJlc0J5Q29udEtleQUQdXBkYXRlZENvbnRQcm9wcwkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAUJd2xnUmVzdWx0AWkBC3Vuc3Rha2VMYW5kAQ1sYW5kQXNzZXRJZEluBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQ1jbGFpbU1vZGVEdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEAWQIBQFjAl8zBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFcHJvcHMJARF1cGRhdGVQcm9wb3J0aW9ucwMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAxyZXNCeUNvbnRLZXkJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQkAkQMCBQFkBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFDHJlc0J5Q29udEtleQILMF8wXzBfMF8wXzACAV8EEHVwZGF0ZWRDb250UHJvcHMJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BAgFfBAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUNY2xhaW1Nb2RlRHVjawQFbGFuZHMJAL0JAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQhsYW5kc0tleQIAAgFfBANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEDmdvdlJlbGVhc2VUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFC2dvdkNvbnRyYWN0CQEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQUEYWRkcgAAAwkAZwIFDmdvdlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICOVlvdXIgZ1dMIGFyZSB0YWtpbmcgcGFydCBpbiB2b3RpbmcsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5nb3ZSZWxlYXNlVGltZQQOYXJiUmVsZWFzZVRpbWUJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFC3dsZ0NvbnRyYWN0CQEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBQRhZGRyAAAFDmFyYml0cmFnZURlbGF5AwkAZgIFDmFyYlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICP1lvdXIgc3Rha2VkIGxhbmRzIHRvb2sgcGFydCBpbiBhcmJpdHJhZ2UsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5hcmJSZWxlYXNlVGltZQQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAQJbmV3UGllY2VzAwkAZgIFBnBpZWNlcwUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMFBnBpZWNlcwQJd2xnUmVzdWx0CQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUEYWRkcgUDbmlsBQNuaWwJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQkA2QQBBQtsYW5kQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFBGFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAUFcHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AgUMcmVzQnlDb250S2V5BRB1cGRhdGVkQ29udFByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfMgkAuQkCCAULY2xhaW1SZXN1bHQCXzMCAToJAMwIAgMJAGYCCQCQAwEFBWxhbmRzAAEJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIJANEIAgUFbGFuZHMJAQV2YWx1ZQEFA2lkeAIBXwkBC0RlbGV0ZUVudHJ5AQUIbGFuZHNLZXkJAMwIAgkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQUJbmV3UGllY2VzCQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsBQl3bGdSZXN1bHQBaQEJc3Rha2VEdWNrAAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAdhc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyAwkBAiE9AggFA3BtdAZhbW91bnQAAQkAAgEJAKwCAgkArAICAgRORlQgBQpEVUNLUFJFRklYAiQgdG9rZW4gc2hvdWxkIGJlIGF0dGFjaGVkIGFzIHBheW1lbnQEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQDAwkBAiE9AggFBWFzc2V0Bmlzc3VlcgUNaW5jdWJhdG9yQWRkcgkBAiE9AggFBWFzc2V0Bmlzc3VlcgULYnJlZWRlckFkZHIHCQACAQkArAICCQCsAgICElVua25vd24gaXNzdWVyIG9mIAUKRFVDS1BSRUZJWAIGIHRva2VuAwkBASEBCQEIY29udGFpbnMCCAUFYXNzZXQEbmFtZQUKRFVDS1BSRUZJWAkAAgEJAKwCAgkArAICAglPbmx5IE5GVCAFCkRVQ0tQUkVGSVgCFCB0b2tlbnMgYXJlIGFjY2VwdGVkBAphc3NldElkU3RyCQDYBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUKYXNzZXRJZFN0cgMJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCEiBpcyBhbHJlYWR5IHN0YWtlZAMJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAAIBCQCsAgICHVlvdSBhbHJlYWR5IHN0YWtlZCBvbmUgZHVjazogCAUFYXNzZXQEbmFtZQQGbG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgQIbG9jYXRpb24JAKIIAQUGbG9jS2V5BAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQUKYXNzZXRJZFN0cgQIYmFja3BhY2sJAKIIAQUFYnBLZXkECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQphc3NldElkU3RyBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFCmFzc2V0SWRTdHIAAAQJY3VySGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFAJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKRFVDS1BSRUZJWAkA2AQBBQdhc3NldElkBQdhZGRyZXNzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwUKYXNzZXRJZFN0cgUDbmlsAwkBCWlzRGVmaW5lZAEFCGxvY2F0aW9uBQNuaWwJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZsb2NLZXkFD0RFRkFVTFRMT0NBVElPTgUDbmlsAwkBCWlzRGVmaW5lZAEFCGJhY2twYWNrBQNuaWwJAM0IAgkAzQgCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5AhowOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOgUDbmlsCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQljdXJIZWFsdGgFDHByb2xvZ0FjdGlvbgFpAQt1bnN0YWtlRHVjawEKYXNzZXRJZFN0cgQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAdhc3NldElkCQDZBAEFCmFzc2V0SWRTdHIEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyBAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFCmFzc2V0SWRTdHIDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkAwkBASEBCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzCQACAQkArAICCQCsAgICCVRoZSBkdWNrIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQUKYXNzZXRJZFN0cgkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUHYWRkcmVzcwkAAgECF1N0YWtlZCBORlQgaXMgbm90IHlvdXJzAwkBD2NoZWNrVG91cm5hbWVudAEFCmFzc2V0SWRTdHIJAAIBAht1bnN0YWtlRHVja19jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFCmFzc2V0SWRTdHIJAAIBAhl1bnN0YWtlRHVja19jaGVja0RlbGl2ZXJ5BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQUKYXNzZXRJZFN0cgQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQphc3NldElkU3RyAAAEBmhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkAZgIFBW1heEhQBQZoZWFsdGgJAAIBCQCsAgIJAKwCAgIZUGxlYXNlIGhlYWwgeW91ciBkdWNrIHRvIAkApAMBBQVtYXhIUAITaHAgYmVmb3JlIHVuc3Rha2luZwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBBQd0aW1lS2V5CQDMCAIJAQtEZWxldGVFbnRyeQEFCWtleUhlYWx0aAkAzAgCCQELRGVsZXRlRW50cnkBCQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwBaQEIY2xhaW1SZXMCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAUNY2xhaW1Nb2RlRHVjawUObGFuZEFzc2V0SWRTdHIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDNCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQxwcm9sb2dBY3Rpb24JAJEDAggFBnJlc3VsdAJfMwUIYnBJZHhSZXMBaQEMY2xhaW1SZXNUb1dIAgZhbW91bnQObGFuZEFzc2V0SWRTdHIEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBnJlc3VsdAkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQZhbW91bnQFC2NsYWltTW9kZVdoBQ5sYW5kQXNzZXRJZFN0cgkAlAoCCQDNCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIJAGsDBQd4cENsYWltBQZhbW91bnQFBU1VTFQ4Al8xCQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al8yCQC5CQIIBQZyZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzQJALkJAggFBnJlc3VsdAJfNQIBOgUMcHJvbG9nQWN0aW9uCQCRAwIIBQZyZXN1bHQCXzUFCHdoSWR4UmVzAWkBBmZsaWdodAIHbWVzc2FnZQNzaWcEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAFmCQEMZmxpZ2h0Q29tbW9uAwUIdXNlckFkZHIFB21lc3NhZ2UFA3NpZwQFbmV3SFAIBQFmAl8xBAtkdWNrQXNzZXRJZAgFAWYCXzIEBmxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQZsb2NLZXkFD0RFRkFVTFRMT0NBVElPTgQLbmV3TG9jYXRpb24IBQFmAl80AwkAAAIFC25ld0xvY2F0aW9uBQtjdXJMb2NhdGlvbgkAAgECIllvdSBjYW4ndCBmbHkgdG8gdGhlIHNhbWUgbG9jYXRpb24EBm5ld0xvYwkAtQkCBQtuZXdMb2NhdGlvbgIBXwQGaXNUb3VyCQAAAgkAkQMCBQZuZXdMb2MFCmxvY0lkeFR5cGUCAVQEB2lzRGVsaXYJAAACCQCRAwIFBm5ld0xvYwUKbG9jSWR4VHlwZQIBRAQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQECWN1cnJlbnRFcQkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywEDSR0MDY4NDE5Njg1MTYJARFzdWJ0cmFjdEVxdWlwbWVudAIFCWN1cnJlbnRFcQgFAWYCXzUEBW5ld0VxCAUNJHQwNjg0MTk2ODUxNgJfMQQPc2hvdWxkWmVyb0J1ZmZzCAUNJHQwNjg0MTk2ODUxNgJfMgQNJHQwNjg1MTk3MTU0NwMJAQxub3RPbk1pc3Npb24CBRJ0b3VybmFtZW50Q29udHJhY3QFC2N1ckxvY2F0aW9uAwkBASEBCQEPaXNVc3VhbExvY2F0aW9uAQULbmV3TG9jYXRpb24JAQxjaGVhdEF0dGVtcHQCBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24DCQBmAgUFbmV3SFAAAAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAJAJQKAgULY3VyTG9jYXRpb24AAAMJAQ5pc0luVG91cm5hbWVudAIFEnRvdXJuYW1lbnRDb250cmFjdAULY3VyTG9jYXRpb24DCQEBIQEJAQ5pc0luVG91cm5hbWVudAIFEnRvdXJuYW1lbnRDb250cmFjdAULbmV3TG9jYXRpb24JAAIBAipZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gdGhlIHRvdXJuYW1lbnQEBXNjb3JlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGbmV3TG9jBQhsb2NJZHhJZAQGY3VyTG9jCQC1CQIFC2N1ckxvY2F0aW9uAgFfBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAADCQECIT0CBQVzY29yZQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZjdXJMb2MFCGxvY0lkeElkAAEJAQxjaGVhdEF0dGVtcHQCBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24DCQBmAgUFbmV3SFAAAAQJbG9jYWxCZXN0CQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAkBGmtleUJlc3RSZXN1bHRCeVRvdXJBbmREdWNrAgUGbGFzdElkBQtkdWNrQXNzZXRJZAAABAh1cGRMb2NhbAMJAGYCBQVzY29yZQUJbG9jYWxCZXN0CQD8BwQFEnRvdXJuYW1lbnRDb250cmFjdAIOc2F2ZUR1Y2tSZXN1bHQJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUFc2NvcmUFA25pbAUDbmlsBQR1bml0AwkAAAIFCHVwZExvY2FsBQh1cGRMb2NhbAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgULY3VyTG9jYXRpb24AAAMJAQEhAQkBDGlzSW5EZWxpdmVyeQEFC2N1ckxvY2F0aW9uBAlsb2NIZWFsdGgJARBhc1N0cmluZ0ludFR1cGxlAQkA/AcEBQR0aGlzAhBhdXRvRXhpdERlbGl2ZXJ5CQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAMJAAACBQlsb2NIZWFsdGgFCWxvY0hlYWx0aAMFB2lzRGVsaXYFCWxvY0hlYWx0aAMJAGYCBQVuZXdIUAAACQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAkAlAoCCAUJbG9jSGVhbHRoAl8xAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQEBIQEFB2lzRGVsaXYJAAIBAiRZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gZGVsaXZlcnkDCQEBIQEJAQxpc0luRGVsaXZlcnkBBQtuZXdMb2NhdGlvbgkBDGNoZWF0QXR0ZW1wdAIFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgQFc2NvcmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZuZXdMb2MFCGxvY0lkeElkBAZjdXJMb2MJALUJAgULY3VyTG9jYXRpb24CAV8DCQECIT0CBQVzY29yZQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZjdXJMb2MFCGxvY0lkeElkAAEJAQxjaGVhdEF0dGVtcHQCBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24DCQBmAgUFbmV3SFAAAAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAECWxvY0hlYWx0aAkBEGFzU3RyaW5nSW50VHVwbGUBCQD8BwQFBHRoaXMCEGF1dG9FeGl0RGVsaXZlcnkJAMwIAgULZHVja0Fzc2V0SWQFA25pbAUDbmlsAwkAAAIFCWxvY0hlYWx0aAUJbG9jSGVhbHRoBQlsb2NIZWFsdGgJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ECWxvY1RvU2F2ZQgFDSR0MDY4NTE5NzE1NDcCXzEECGhwVG9TYXZlCAUNJHQwNjg1MTk3MTU0NwJfMgkAlAoCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGbG9jS2V5BQlsb2NUb1NhdmUJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQVuZXdIUAkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAMFD3Nob3VsZFplcm9CdWZmcwkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAUDbmlsCQDOCAIFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkAwkAZgIFBW5ld0hQAAAFD3hwU3VjY2Vzc0ZsaWdodAUMeHBGYWlsRmxpZ2h0Al8xCAUBZgJfMwFpAQRoZWFsAwpxdWFudGl0eUwxCnF1YW50aXR5TDIKcXVhbnRpdHlMMwQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMDAwkAZgIAAAUKcXVhbnRpdHlMMQYJAGYCAAAFCnF1YW50aXR5TDIGCQBmAgAABQpxdWFudGl0eUwzCQACAQIbUXVhbnRpdHkgY2Fubm90IGJlIG5lZ2F0aXZlBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIUaGVhbF9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQISaGVhbF9jaGVja0RlbGl2ZXJ5BANxdHMJAMwIAgUKcXVhbnRpdHlMMQkAzAgCBQpxdWFudGl0eUwyCQDMCAIFCnF1YW50aXR5TDMFA25pbAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAECW9sZEhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkAZwIFCW9sZEhlYWx0aAUFbWF4SFAJAAIBCQCsAgIJAKwCAgIPSFAgc2hvdWxkIGJlIDwgCQCkAwEFBW1heEhQAgggdG8gaGVhbAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkECHByb2RMaXN0AwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfCgELaXRlcmF0ZVByb2QCA2FjYwZyZWNpcGUEAW4IBQNhY2MCXzIEAXgDCQBmAgkAkAMBBQhwcm9kTGlzdAUBbgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0BQFuAAADCQBmAgADBQFuBAFxCQCRAwIFA3F0cwUBbgMJAGYCBQFxBQF4CQACAQkArAICCQCsAgIJAKwCAgIOWW91IGhhdmUgb25seSAJAKQDAQUBeAIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFAW4JAJUKAwkAzQgCCAUDYWNjAl8xCQCkAwEJAGUCBQF4BQFxCQBkAgUBbgABCQBkAggFA2FjYwJfMwkAaAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIFBnJlY2lwZQIBXwUKcklkeEVmZmVjdAUBcQkAlQoDCQDNCAIIBQNhY2MCXzEJAKQDAQUBeAkAZAIFAW4AAQgFA2FjYwJfMwQGcmVzdWx0CgACJGwFEHByb2R1Y3Rpb25NYXRyaXgKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCVCgMFA25pbAAAAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBC2l0ZXJhdGVQcm9kAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIECW5ld0hlYWx0aAkAlwMBCQDMCAIFBW1heEhQCQDMCAIJAGQCBQlvbGRIZWFsdGgIBQZyZXN1bHQCXzMFA25pbAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJbmV3SGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQC5CQIIBQZyZXN1bHQCXzECAV8FA25pbAIBOgkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkCQBoAgUGeHBIZWFsCQBkAgkAZAIFCnF1YW50aXR5TDEFCnF1YW50aXR5TDIFCnF1YW50aXR5TDMCXzEFCW5ld0hlYWx0aAFpAQZoZWFsRVMABAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhZoZWFsRVNfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECFGhlYWxFU19jaGVja0RlbGl2ZXJ5BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJb2xkSGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBmAgUJb2xkSGVhbHRoAAAJAAIBAihIUCBzaG91bGQgYmUgMCB0byBjYWxsIEVtZXJnZW5jeSBTZXJ2aWNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8EDW1lZEtpdEFtb3VudDEDCQBmAgkAkAMBBQhwcm9kTGlzdAAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAAAABA1tZWRLaXRBbW91bnQyAwkAZgIJAJADAQUIcHJvZExpc3QAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAEAAAQNbWVkS2l0QW1vdW50MwMJAGYCCQCQAwEFCHByb2RMaXN0AAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAACAAADAwMJAGYCBQ1tZWRLaXRBbW91bnQxAAAGCQBmAgUNbWVkS2l0QW1vdW50MgAABgkAZgIFDW1lZEtpdEFtb3VudDMAAAkAAgECH1lvdSBoYXZlIHRvIHVzZSBvd24gTWVkaWNhbCBLaXQECGV4aXN0U3RyCQCdCAIFD2Vjb25vbXlDb250cmFjdAkBDmtleUVzV2FyZWhvdXNlAAQMZXhpc3RBbW91bnRzAwkBCWlzRGVmaW5lZAEFCGV4aXN0U3RyCQC8CQIJAQV2YWx1ZQEFCGV4aXN0U3RyAgFfBQNuaWwEC2V4aXN0QW1vdW50AwkAZgIJAJADAQUMZXhpc3RBbW91bnRzAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQxleGlzdEFtb3VudHMAAAAAAwkAZwIAAAULZXhpc3RBbW91bnQJAAIBAjlUaGVyZSBhcmUgbm8gTWVkaWNhbCBLaXRzIEwxIGF0IEVtZXJnZW5jeSBTZXJ2aWNlIHN0b3JhZ2UECW5ld0hlYWx0aAkAZAIFCW9sZEhlYWx0aAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4AAACAV8FCnJJZHhFZmZlY3QEBW5ld0VTCQC5CQIJAMwIAgkApAMBCQBlAgULZXhpc3RBbW91bnQAAQkA0QgCBQxleGlzdEFtb3VudHMAAAIBXwQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAAAAgFfBAh0b3RhbE1hdAkBEmdldFJlY2lwZU1hdGVyaWFscwEFBnJlY2lwZQQJc2VsbFByaWNlCQBrAwkAaAIFCHRvdGFsTWF0BQpFU1NFTExDT0VGBRBSRVNPVVJDRVBSSUNFTUlOCQBoAgUFTVVMVDgFDlBST0RVQ1RQS0dTSVpFAwkBAiE9AggFA3BtdAZhbW91bnQFCXNlbGxQcmljZQkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFCXNlbGxQcmljZQQGcmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIPdXBkYXRlRXNTdG9yYWdlCQDMCAIFBW5ld0VTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3VzZHRBc3NldElkBQlzZWxsUHJpY2UFA25pbAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJbmV3SGVhbHRoCQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCHhwQ2FsbEVTAl8xBQZyZXN1bHQBaQEOdXBkYXRlQmFja3BhY2sCC2R1Y2tBc3NldElkB25ld1BhY2sDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQFB25ld1BhY2sFA25pbAUHbmV3UGFjawFpAQ9jb21taXRGb3JSYW5kb20ABAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpBAtmaW5pc2hCbG9jawkAZAIFBmhlaWdodAULcmFuZG9tRGVsYXkEBGFkZHIJAKUIAQgFAWkGY2FsbGVyCQCUCgIJAM0IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCWtleUNvbW1pdAEFBGFkZHIFC2ZpbmlzaEJsb2NrBQNuaWwFDHByb2xvZ0FjdGlvbgULZmluaXNoQmxvY2sBaQEKYXdhcmRTTGFuZAEHYWRkcmVzcwMJAQIhPQIIBQFpBmNhbGxlcgUSdG91cm5hbWVudENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJARJleHBlZGl0aW9uSW50ZXJuYWwCCQERQGV4dHJOYXRpdmUoMTA2MikBBQdhZGRyZXNzCAUBaQ10cmFuc2FjdGlvbklkCQCUCgIIBQZyZXN1bHQCXzEICAUGcmVzdWx0Al8yAl8xAWkBCGJ1eVNMYW5kAAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhAwkBAiE9AggFA3BtdAZhbW91bnQFB0VYUFVTRFQJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQdFWFBVU0RUBAZyZXN1bHQJARJleHBlZGl0aW9uSW50ZXJuYWwCCAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQEC2FjcmVzUmVzdWx0CQEFYXNJbnQBCQD8BwQFDWFjcmVzQ29udHJhY3QCCWJ1cm5BY3JlcwkAzAgCBQxTX0NPU1RfQUNSRVMFA25pbAUDbmlsCQCUCgIJAM0IAgkAzggCCQDNCAIIBQZyZXN1bHQCXzEJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCCQClCAEIBQFpBmNhbGxlcgUKeHBOZXdTTGFuZAJfMQUMcHJvbG9nQWN0aW9uCQCUCgIICAUGcmVzdWx0Al8yAl8xBQthY3Jlc1Jlc3VsdAFpAQpleHBlZGl0aW9uAgdtZXNzYWdlA3NpZwQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAh1c2VyQWRkcgkApQgBCAUBaQZjYWxsZXIEAWYJAQxmbGlnaHRDb21tb24DBQh1c2VyQWRkcgUHbWVzc2FnZQUDc2lnBAtkdWNrQXNzZXRJZAgFAWYCXzIECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW1MaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwYFBW1MaXN0BQxFWFBNQVRFUklBTFMCAV8EBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAljdXJyZW50RXEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssBA0kdDA3ODk1MTc5MDQ4CQERc3VidHJhY3RFcXVpcG1lbnQCBQljdXJyZW50RXEIBQFmAl81BAVuZXdFcQgFDSR0MDc4OTUxNzkwNDgCXzEED3Nob3VsZFplcm9CdWZmcwgFDSR0MDc4OTUxNzkwNDgCXzIEAWUJARJleHBlZGl0aW9uSW50ZXJuYWwCCAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQEAmlkCAgFAWUCXzICXzEEBnJlc3VsdAMJAGcCAAAIBQFmAl8xCQCVCgMJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAAACQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQUDbmlsAgAAAAkAlQoDCQDOCAIIBQFlAl8xAwUPc2hvdWxkWmVyb0J1ZmZzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wBQNuaWwJAM0IAgkAzQgCCQDNCAIJAM0IAgUDbmlsCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCCAgFAWUCXzICXzIJAMwIAgIBTAkAzAgCBQJpZAUDbmlsAgFfCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoCAUBZgJfMQkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6BQJpZAgFAWYCXzMDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhpleHBlZGl0aW9uX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhhleHBlZGl0aW9uX2NoZWNrRGVsaXZlcnkEC2FjcmVzUmVzdWx0CQEFYXNJbnQBCQD8BwQFDWFjcmVzQ29udHJhY3QCCWJ1cm5BY3JlcwkAzAgCBQxTX0NPU1RfQUNSRVMFA25pbAUDbmlsCQCUCgIJAM0IAgkAzggCCAUGcmVzdWx0Al8xCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCnhwTmV3U0xhbmQCXzEFDHByb2xvZ0FjdGlvbgkAlQoDCAUGcmVzdWx0Al8yCAUGcmVzdWx0Al8zBQthY3Jlc1Jlc3VsdAFpARBidXlTTGFuZEZvckFjcmVzAAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUMYWNyZXNBc3NldElkCQACAQIUQUNSRVMgcGF5bWVudHMgb25seSEDCQECIT0CBQNhbXQFDFNfQ09TVF9BQ1JFUwkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFDFNfQ09TVF9BQ1JFUwQGcmVzdWx0CQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFDGFjcmVzQXNzZXRJZAUDYW10BQNuaWwJAJQKAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQp4cE5ld1NMYW5kAl8xBQxwcm9sb2dBY3Rpb24JAJQKAggIBQZyZXN1bHQCXzICXzEFC2FjcmVzUmVzdWx0AWkBDHVwZ3JhZGVJbmZyYQELbGFuZEFzc2V0SWQEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQGcmVzdWx0CQENdXBJbmZyYUNvbW1vbgQGCAUBaQZjYWxsZXIAAAULbGFuZEFzc2V0SWQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQJAJQKAgkAzggCCQDNCAIIBQZyZXN1bHQCXzEFDHByb2xvZ0FjdGlvbggJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkCQBrAwUOeHBVcGdyYWRlSW5mcmEIBQZyZXN1bHQCXzMFBU1VTFQ4Al8xCAUGcmVzdWx0Al8yAWkBEGFjdGl2YXRlQXJ0aWZhY3QCB2FydE5hbWUObGFuZEFzc2V0SWRPcHQEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQZjYWxsZXIEBnJlc3VsdAQHJG1hdGNoMAUHYXJ0TmFtZQMJAAACAgdQUkVTQUxFBQckbWF0Y2gwCQESYWN0aXZhdGVQcmVzYWxlQXJ0AgUEYWRkcgUObGFuZEFzc2V0SWRPcHQDCQAAAgIHT05CT0FSRAUHJG1hdGNoMAkBEmFjdGl2YXRlT25ib2FyZEFydAEFBGFkZHIJAAIBAhBVbmtub3duIGFydGlmYWN0CQDNCAIFBnJlc3VsdAUMcHJvbG9nQWN0aW9uAWkBCm1lcmdlTGFuZHMBDGxhbmRBc3NldElkcwQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQttZXJnZUNvbW1vbgIJAKUIAQgFAWkGY2FsbGVyBQxsYW5kQXNzZXRJZHMJAJQKAgkAzggCCQDNCAIIBQZyZXN1bHQCXzEFDHByb2xvZ0FjdGlvbggJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgkApQgBCAUBaQZjYWxsZXIFB3hwTWVyZ2UCXzEIBQZyZXN1bHQCXzIBaQENY2FyZ29FeGNoYW5nZQIMY2FyZ29MaXN0U3RyC2xhbmRBc3NldElkBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECmNhcmdvUGFydHMJALwJAgUMY2FyZ29MaXN0U3RyAgE6BARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04EA2xvYwkAtQkCCQEFdmFsdWUBBQtjdXJMb2NhdGlvbgIBXwMJAQIhPQIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFMCQACAQkArAICCQCsAgICFkR1Y2sgbG9jYXRpb24gdHlwZSBpcyAJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAhEsIGJ1dCBzaG91bGQgYmUgTAMJAQIhPQIJAJEDAgUDbG9jBQhsb2NJZHhJZAULbGFuZEFzc2V0SWQJAAIBCQCsAgICG0R1Y2sgc2hvdWxkIGJlIG9uIHRoZSBsYW5kIAULbGFuZEFzc2V0SWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQECWN1cnJlbnRXaAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAZyZXN1bHQJAQltb3ZlU3R1ZmYDBQpjYXJnb1BhcnRzBQljdXJyZW50V2gFC2N1cnJlbnRQYWNrBARsb2Z0CQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8EBWxvZnRPCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCAUGcmVzdWx0Al83BAVsb2Z0RgkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCAUGcmVzdWx0Al83CQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCAUGcmVzdWx0Al80CQDMCAIIBQZyZXN1bHQCXzUJAMwIAggFBnJlc3VsdAJfNgUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5CQC6CQIJAMwIAgkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzCQDMCAIIBQZyZXN1bHQCXzEJAMwIAggFBnJlc3VsdAJfMgkAzAgCCAUGcmVzdWx0Al8zCQDMCAIJALkJAgkAzAgCCQCRAwIFBGxvZnQFCXZvbExvY2tlZAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkAkQMCBQRsb2Z0BQh2b2xUb3RhbAUDbmlsAgFfBQNuaWwCAToJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwBaQENc2F2ZVdhcmVob3VzZQIFd2hTdHILbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEAndoCQC8CQIFBXdoU3RyAgE6AwkBAiE9AgkAkAMBBQJ3aAAFCQACAQIwd2FyZWhvdXNlIHN0cmluZyBzaG91bGQgY29udGFpbiA0ICc6JyBzZXBhcmF0b3JzBAVsb2Z0TAkAkQMCCQC1CQIJAJEDAgUCd2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkBAVsb2Z0TwkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBWxvZnRUCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFAndoBQt3aElkeExldmVscwQFbG9mdEYJAGUCCQBlAgUFbG9mdFQJAQ1wYXJzZUludFZhbHVlAQUFbG9mdEwFBWxvZnRPBAhuZXdXaFN0cgkAugkCCQDMCAIJAJEDAgUCd2gFC3doSWR4TGV2ZWxzCQDMCAIJAJEDAgUCd2gFCHdoSWR4UmVzCQDMCAIJAJEDAgUCd2gFCHdoSWR4TWF0CQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCCQC5CQIJAMwIAgUFbG9mdEwJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAKQDAQUFbG9mdFQFA25pbAIBXwUDbmlsAgE6CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkFCG5ld1doU3RyBQNuaWwFCG5ld1doU3RyAWkBEmZpeFdhcmVob3VzZUZvcm1hdAELbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAJ3aAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBWxvZnRMCQEFYXNJbnQBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIacmVjYWxjTG9ja2VkVm9sdW1lUkVBRE9OTFkJAMwIAgULbGFuZEFzc2V0SWQJAMwIAgUCd2gFA25pbAUDbmlsBAVsb2Z0TwkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBWxvZnRUCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFAndoBQt3aElkeExldmVscwQFbG9mdEYJAGUCCQBlAgUFbG9mdFQFBWxvZnRMBQVsb2Z0TwQIbmV3V2hTdHIJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIJAKQDAQUFbG9mdEwJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAKQDAQUFbG9mdFQFA25pbAIBXwUDbmlsAgE6CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkFCG5ld1doU3RyBQNuaWwFCG5ld1doU3RyAWkBF2ZpeENvbnRpbmVudFByb3BvcnRpb25zAQxsYW5kQXNzZXRJZHMDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQKAQhnZXRQcm9wcwIDYWNjBGNvbnQJAM0IAgUDYWNjCQELdmFsdWVPckVsc2UCCQCiCAEJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUEY29udAILMF8wXzBfMF8wXzAEAXAKAAIkbAUKY29udGluZW50cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZ2V0UHJvcHMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFCgEJcHJvY2Vzc29yAgNhY2MLbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQUFU1NJWkUEBGNvbnQJAJEDAgUBZAUMcmVjQ29udGluZW50BA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEDGNvbnRpbmVudElkeAkBBXZhbHVlAQkAzwgCBQpjb250aW5lbnRzBQRjb250BAljb250UHJvcHMJALUJAgkAkQMCBQNhY2MFDGNvbnRpbmVudElkeAIBXwQHdXBkYXRlZAkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCWNvbnRQcm9wcwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAECAV8EByRtYXRjaDAFBGNvbnQDCQAAAgIIQW1lcmljYXMFByRtYXRjaDAJAMwIAgUHdXBkYXRlZAkAzAgCCQCRAwIFA2FjYwABCQDMCAIJAJEDAgUDYWNjAAIJAMwIAgkAkQMCBQNhY2MAAwkAzAgCCQCRAwIFA2FjYwAEBQNuaWwDCQAAAgIGRXVyb3BlBQckbWF0Y2gwCQDMCAIJAJEDAgUDYWNjAAAJAMwIAgUHdXBkYXRlZAkAzAgCCQCRAwIFA2FjYwACCQDMCAIJAJEDAgUDYWNjAAMJAMwIAgkAkQMCBQNhY2MABAUDbmlsAwkAAAICBEFzaWEFByRtYXRjaDAJAMwIAgkAkQMCBQNhY2MAAAkAzAgCCQCRAwIFA2FjYwABCQDMCAIFB3VwZGF0ZWQJAMwIAgkAkQMCBQNhY2MAAwkAzAgCCQCRAwIFA2FjYwAEBQNuaWwDCQAAAgIGQWZyaWNhBQckbWF0Y2gwCQDMCAIJAJEDAgUDYWNjAAAJAMwIAgkAkQMCBQNhY2MAAQkAzAgCCQCRAwIFA2FjYwACCQDMCAIFB3VwZGF0ZWQJAMwIAgkAkQMCBQNhY2MABAUDbmlsAwkAAAICB09jZWFuaWEFByRtYXRjaDAJAMwIAgkAkQMCBQNhY2MAAAkAzAgCCQCRAwIFA2FjYwABCQDMCAIJAJEDAgUDYWNjAAIJAMwIAgkAkQMCBQNhY2MAAwkAzAgCBQd1cGRhdGVkBQNuaWwJAAIBAg93cm9uZyBjb250aW5lbnQEAXIKAAIkbAUMbGFuZEFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUBcAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJcHJvY2Vzc29yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhVMaXN0IHNpemUgZXhjZWVkcyAxMDAJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIIQW1lcmljYXMJAJEDAgUBcgAACQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIGRXVyb3BlCQCRAwIFAXIAAQkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECBEFzaWEJAJEDAgUBcgACCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIGQWZyaWNhCQCRAwIFAXIAAwkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECB09jZWFuaWEJAJEDAgUBcgAEBQNuaWwAAAFpAQ9maXhTdGFrZWRQaWVjZXMBB2FkZHJlc3MDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEDHN0YWtlZFBpZWNlcwMJAAACBQdhZGRyZXNzAgAAAAQIbGFuZHNTdHIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUHYWRkcmVzcwQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAoBB29uZUxhbmQCA2FjYwtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQIbGFuZFNpemUJAJEDAgkAtQkCCAUFYXNzZXQL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Y29udGFpbiAnX18nOiAFCmN1c3RvbU5hbWUDCQBmAgkAsQIBBQpjdXN0b21OYW1lBQpNQVhOQU1FTEVOCQACAQkArAICAhlOYW1lIHRvbyBsb25nLCBtYXhMZW5ndGg9CQCkAwEFCk1BWE5BTUVMRU4EBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAdhY3Rpb25zBAckbWF0Y2gwBQR0eXBlAwkAAAICB0FDQ09VTlQFByRtYXRjaDAECnJldmVyc2VLZXkJARZrZXlDdXN0b21OYW1lVG9BZGRyZXNzAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA1hZGRyVG9OYW1lS2V5CQEWa2V5QWRkcmVzc1RvQ3VzdG9tTmFtZQEFBGFkZHIEB29sZE5hbWUJAKIIAQUNYWRkclRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlDdXN0b21OYW1lVG9BZGRyZXNzAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDWFkZHJUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFBGFkZHIICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFDHhwQ3VzdG9tTmFtZQJfMQMJAAACAgRMQU5EBQckbWF0Y2gwBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUHYXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQdhc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBApyZXZlcnNlS2V5CQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDmFzc2V0VG9OYW1lS2V5CQEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBBQdhc3NldElkBAdvbGROYW1lCQCiCAEFDmFzc2V0VG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDmFzc2V0VG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQdhc3NldElkCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQx4cEN1c3RvbU5hbWUCXzEDCQAAAgIERFVDSwUHJG1hdGNoMAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFB2Fzc2V0SWQDAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5BgkBASEBCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyCQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQdhc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpEVUNLUFJFRklYAg0gaXMgbm90IHlvdXJzBApyZXZlcnNlS2V5CQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDmFzc2V0VG9OYW1lS2V5CQEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBBQdhc3NldElkBAdvbGROYW1lCQCiCAEFDmFzc2V0VG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDmFzc2V0VG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQdhc3NldElkCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgUHYXNzZXRJZAUMeHBDdXN0b21OYW1lAl8xCQACAQITVW5rbm93biBlbnRpdHkgdHlwZQkAlAoCCQDNCAIJAM0IAgUHYWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQFDHByb2xvZ0FjdGlvbgAAAWkBDHNldFJlZmVycmFscwIJb2xkUGxheWVyCW5ld1BsYXllcgMJAQIhPQIIBQFpD2NhbGxlclB1YmxpY0tleQUDcHViCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUJb2xkUGxheWVyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJb2xkUGxheWVyAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBQluZXdQbGF5ZXIJAAIBCQCsAgICEUludmFsaWQgYWRkcmVzczogBQluZXdQbGF5ZXIEB29sZHNLZXkJAQlrZXlPbGRpZXMABARvbGRzCQCiCAEFB29sZHNLZXkEBm9sZGllcwMJAQlpc0RlZmluZWQBBQRvbGRzCQC8CQIJAQV2YWx1ZQEFBG9sZHMCAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQZvbGRpZXMFCW5ld1BsYXllcgkAAgEJAKwCAgUJbmV3UGxheWVyAiYgaXMgbm90IG5ld2JpZSAoYWxyZWFkeSBoYXMgcmVmZXJyYWxzKQQIcmVmQnlLZXkJAQ9rZXlBZGRyZXNzUmVmQnkBBQluZXdQbGF5ZXIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwMJAQlpc0RlZmluZWQBBQVyZWZCeQkBCWlzRGVmaW5lZAEJAKYIAQkBBXZhbHVlAQUFcmVmQnkHCQACAQkArAICCQCsAgIFCW5ld1BsYXllcgIUIGFscmVhZHkgaGFzIHJlZkJ5OiAJAQV2YWx1ZQEFBXJlZkJ5BAdyZWZzS2V5CQETa2V5QWRkcmVzc1JlZmVycmFscwEFCW9sZFBsYXllcgQEcmVmcwkAoggBBQdyZWZzS2V5BAlyZWZzQXJyYXkDCQEJaXNEZWZpbmVkAQUEcmVmcwkAvAkCCQEFdmFsdWUBBQRyZWZzAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUJcmVmc0FycmF5BQluZXdQbGF5ZXIJAAIBCQCsAgIJAKwCAgkArAICBQlvbGRQbGF5ZXICEiBhbHJlYWR5IGNvbnRhaW5zIAUJbmV3UGxheWVyAhEgd2l0aGluIHJlZmVycmFscwQHbmV3UmVmcwkAugkCCQDNCAIFCXJlZnNBcnJheQUJbmV3UGxheWVyAgFfBAduZXdPbGRzAwkBD2NvbnRhaW5zRWxlbWVudAIFBm9sZGllcwUJb2xkUGxheWVyCQEFdmFsdWUBBQRvbGRzCQC6CQIJAM0IAgUGb2xkaWVzBQlvbGRQbGF5ZXICAV8JAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQhyZWZCeUtleQUJb2xkUGxheWVyCQDMCAIJAQtTdHJpbmdFbnRyeQIFB3JlZnNLZXkFB25ld1JlZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgUHb2xkc0tleQUHbmV3T2xkcwkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAAAAWkBEGRpc3RyaWJ1dGVQb2ludHMFCHN0cmVuZ3RoCGFjY3VyYWN5CWludGVsbGVjdAllbmR1cmFuY2UJZGV4dGVyaXR5BAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECmZyZWVLZXlBY2MJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIEDWZyZWVQb2ludHNBY2MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0BQpmcmVlS2V5QWNjAAAEC2ZyZWVLZXlEdWNrCQERa2V5RHVja0ZyZWVQb2ludHMBBQtkdWNrQXNzZXRJZAQOZnJlZVBvaW50c0R1Y2sJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0BQtmcmVlS2V5RHVjawAABAdzdW1GcmVlCQBkAgUNZnJlZVBvaW50c0FjYwUOZnJlZVBvaW50c0R1Y2sED3N1bVRvRGlzdHJpYnV0ZQkAZAIJAGQCCQBkAgkAZAIFCHN0cmVuZ3RoBQhhY2N1cmFjeQUJaW50ZWxsZWN0BQllbmR1cmFuY2UFCWRleHRlcml0eQMJAGYCBQ9zdW1Ub0Rpc3RyaWJ1dGUFB3N1bUZyZWUJAAIBCQCsAgIJAKwCAgIPVGhlcmUgYXJlIG9ubHkgCQCkAwEFB3N1bUZyZWUCGiBmcmVlIHBvaW50cyB0byBkaXN0cmlidXRlBAhjaGFyc0tleQkBDGtleUR1Y2tDaGFycwEFC2R1Y2tBc3NldElkBAVjaGFycwkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAUIY2hhcnNLZXkCCTBfMF8wXzBfMAIBXwQGbmV3QWNjCQBlAgUNZnJlZVBvaW50c0FjYwUPc3VtVG9EaXN0cmlidXRlCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFCmZyZWVLZXlBY2MDCQBmAgAABQZuZXdBY2MAAAUGbmV3QWNjCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQtmcmVlS2V5RHVjawMJAGYCAAAFBm5ld0FjYwkAZAIFDmZyZWVQb2ludHNEdWNrBQZuZXdBY2MFDmZyZWVQb2ludHNEdWNrCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGNoYXJzS2V5CQC5CQIJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyU3RyZW5ndGgFCHN0cmVuZ3RoCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhckFjY3VyYWN5BQhhY2N1cmFjeQkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJJbnRlbGxlY3QFCWludGVsbGVjdAkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJFbmR1cmFuY2UFCWVuZHVyYW5jZQkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJEZXh0ZXJpdHkFCWRleHRlcml0eQUDbmlsAgFfCQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsAAABaQEcc3BsaXRCeUdsb2JhbFdlaWdodHNSRUFET05MWQEGYW1vdW50CQCUCgIFA25pbAkBEmdldE5lZWRlZE1hdGVyaWFscwEFBmFtb3VudAFpASRzcGxpdEJ5R2xvYmFsQW5kTG9jYWxXZWlnaHRzUkVBRE9OTFkDCW1hdEFtb3VudAlyZXNBbW91bnQIdGVycmFpbnMEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQUIdGVycmFpbnMJAJQKAgUDbmlsCQCUCgIJARJnZXROZWVkZWRNYXRlcmlhbHMBBQltYXRBbW91bnQJARNkaXN0cmlidXRlQnlXZWlnaHRzAgUJcmVzQW1vdW50BQ10ZXJyYWluQ291bnRzAWkBE2dldEJhY2twYWNrUkVBRE9OTFkBC2R1Y2tBc3NldElkCQCUCgIFA25pbAkAuQkCCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAIBOgFpARRnZXRXYXJlaG91c2VSRUFET05MWQELbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAACQCUCgIFA25pbAkAugkCCQEMZ2V0V2FyZWhvdXNlAwkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwCAToBaQEKc2F2ZUxhc3RUeAAEBmNhbGxlcggFAWkGY2FsbGVyAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQt3bGdDb250cmFjdAkAzAgCBQ9lY29ub215Q29udHJhY3QJAMwIAgUSdG91cm5hbWVudENvbnRyYWN0CQDMCAIFDWFjcmVzQ29udHJhY3QFA25pbAUGY2FsbGVyCQACAQINQWNjZXNzIGRlbmllZAkAlAoCCQDMCAIJAQZwcm9sb2cBBQFpBQNuaWwAKgFpAQ91cGRhdGVEdWNrU3RhdHMCC2R1Y2tBc3NldElkB2RlbHRhWFADCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQdkZWx0YVhQAWkBDnVwZGF0ZUFjY1N0YXRzAgRhZGRyB2RlbHRhWFADAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAQIhPQIIBQFpBmNhbGxlcgUNYWNyZXNDb250cmFjdAcJAAIBAg1BY2Nlc3MgZGVuaWVkCQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFB2RlbHRhWFABaQEJZXF1aXBEdWNrAQllcXVpcG1lbnQEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECGWVxdWlwRHVja19jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIXZXF1aXBEdWNrX2NoZWNrRGVsaXZlcnkEBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAtjdXJyZW50U2VncwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAIBXwQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW5ld0VxCQC1CQIFCWVxdWlwbWVudAIBXwMJAQIhPQIJAJADAQUFbmV3RXEFC05VTVNFR01FTlRTCQACAQIWV3JvbmcgZXF1aXBtZW50IHN0cmluZwQJdGVtcFByb2RCCQEGZHJlc3NCBAULY3VycmVudFNlZ3MJAQ5wcm9kU3RyVG9CeXRlcwEJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAYFA25pbAQIc2VnQnBBdXgJAJEDAgkAtQkCCQCRAwIFBW5ld0VxBQtzZWdCYWNrcGFjawIBOwABBApidWZmRWZmZWN0AwkAAAIFCHNlZ0JwQXV4AgAAAAQEYXV4MAkAkQMCCQC1CQIFCHNlZ0JwQXV4AgEsAAADCQAAAgUEYXV4MAIAAAAEBmlkeENudAkAtQkCBQRhdXgwAgE6BANpZHgJAJEDAgUGaWR4Q250AAAEA2NudAkAkQMCBQZpZHhDbnQAAQMDAwMDCQAAAgUDaWR4AgIwNgYJAAACBQNpZHgCAjA3BgkAAAIFA2lkeAICMDgJAQIhPQIFA2NudAIABwkAZgIJAQ1wYXJzZUludFZhbHVlAQUDY250AAAHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgJAQ1wYXJzZUludFZhbHVlAQUDaWR4AgFfBQpySWR4RWZmZWN0AAAEBXN0YXRzCQEMZ2V0RHVja1N0YXRzBAUEdGhpcwULZHVja0Fzc2V0SWQFCmJ1ZmZFZmZlY3QGBAhuZXdQcm9kQgkBBmRyZXNzQgQFBW5ld0VxBQl0ZW1wUHJvZEIHBQVzdGF0cwQKbmV3UHJvZFN0cgkBDmJ5dGVzVG9Qcm9kU3RyAQUIbmV3UHJvZEIJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUJZXF1aXBtZW50CQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCBQpuZXdQcm9kU3RyBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAcJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAgJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAkJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAoJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAsFA25pbAIBXwkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAAAAWkBD2ZvcnRpZmljYXRlTGFuZAILbGFuZEFzc2V0SWQEcGxhbgQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLZHVja0Fzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIABAlkdWNrU3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAAABwQHZm9ydEtleQkBF2tleUZvcnRpZmljYXRpb25zQnlMYW5kAQULbGFuZEFzc2V0SWQEDGN1cnJlbnRGb3J0cwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFB2ZvcnRLZXkCDDowXzE1OjBfMTg6MAIBXwQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEAndoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQHY3VyTG9mdAkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8EBGN1ck8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdjdXJMb2Z0BQt2b2xPY2N1cGllZAQEY3VyRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB2N1ckxvZnQFB3ZvbEZyZWUECG5ld0ZvcnRzCQC1CQIFBHBsYW4CAV8EDyR0MDEwMTE1MjEwMTI2NwkBBWZvcnRCBgUMY3VycmVudEZvcnRzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFAndoBQl3aElkeFByb2QFBGN1ck8FBGN1ckYGBQNuaWwECXRlbXBQcm9kQggFDyR0MDEwMTE1MjEwMTI2NwJfMQQFdGVtcE8IBQ8kdDAxMDExNTIxMDEyNjcCXzIEBXRlbXBGCAUPJHQwMTAxMTUyMTAxMjY3Al8zBA8kdDAxMDEyNzAxMDEzNjYJAQVmb3J0QgYFCG5ld0ZvcnRzBQl0ZW1wUHJvZEIFBXRlbXBPBQV0ZW1wRgcFCWR1Y2tTdGF0cwQIbmV3UHJvZEIIBQ8kdDAxMDEyNzAxMDEzNjYCXzEEBG5ld08IBQ8kdDAxMDEyNzAxMDEzNjYCXzIEBG5ld0YIBQ8kdDAxMDEyNzAxMDEzNjYCXzMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQdjdXJMb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQRuZXdPCQDMCAIJAKQDAQUEbmV3RgkAzAgCCQCRAwIFB2N1ckxvZnQFCHZvbFRvdGFsBQNuaWwCAV8JAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQdmb3J0S2V5BQRwbGFuCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5CQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgUKbmV3UHJvZFN0cgkAzAgCBQpuZXdMb2Z0U3RyBQNuaWwCAToJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwAAAFpARNpbml0RHVja1RvdXJBdHRlbXB0AQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUSdG91cm5hbWVudENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAECWN1ckhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQBAljdXJMb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VyTG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQMdG91ckxvY2F0aW9uCQCsAgIJAKQDAQUGbGFzdElkAgRfVF8wCQCUCgIJAMwIAgUMcHJvbG9nQWN0aW9uCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAUJY3VySGVhbHRoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFBW1heEhQCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFC2N1ckxvY2F0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUMdG91ckxvY2F0aW9uBQNuaWwFDHRvdXJMb2NhdGlvbgFpAQxicmVha0F0dGVtcHQABAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAljdXJMb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VyTG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04DCQECIT0CCQCRAwIJALUJAgULY3VyTG9jYXRpb24CAV8FCmxvY0lkeFR5cGUCAVQJAAIBAiJZb3VyIGR1Y2sgaXMgbm90IGluIHRoZSB0b3VybmFtZW50BAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJQKAgkAzAgCBQxwcm9sb2dBY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFC3NhdmVkSGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUNc2F2ZWRMb2NhdGlvbgUDbmlsBQtjdXJMb2NhdGlvbgFpARZleGl0VG91cm5hbWVudEludGVybmFsAQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEC3NhdmVkSGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAQNc2F2ZWRMb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQtzYXZlZEhlYWx0aAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFDXNhdmVkTG9jYXRpb24FA25pbAcBaQEUZXhpdERlbGl2ZXJ5SW50ZXJuYWwBC2R1Y2tBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQINQWNjZXNzIGRlbmllZAQBZQkBEmV4aXREZWxpdmVyeUNvbW1vbgEFC2R1Y2tBc3NldElkCQCUCgIJAM4IAggFAWUCXzEIBQFlAl8yBwFpARBhdXRvRXhpdERlbGl2ZXJ5AQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEAWUJARJleGl0RGVsaXZlcnlDb21tb24BBQtkdWNrQXNzZXRJZAkAlAoCCAUBZQJfMQkAlAoCCAUBZQJfMwgFAWUCXzQBaQEOcHJlcGFyZVJvYmJlcnkCB21lc3NhZ2UDc2lnBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBASEBCQDEEwMFB21lc3NhZ2UFA3NpZwUDcHViCQACAQIYc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEBndsZ0FtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQp3bGdBc3NldElkCQACAQIVV0xHT0xEIHBheW1lbnRzIG9ubHkhBAVwYXJ0cwkAtQkCCQCwCQEFB21lc3NhZ2UCAXwDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAhRXcm9uZyBtZXNzYWdlIGZvcm1hdAQLZHVja0Fzc2V0SWQJAJEDAgUFcGFydHMAAAQHcm9iQ29zdAgJAQ5nZXRSb2JiZXJ5RGF0YQIFBHRoaXMFC2R1Y2tBc3NldElkAl8xAwkAZgIFB3JvYkNvc3QFBndsZ0FtdAkAAgEJAKwCAgkArAICCQCsAgICCFBheW1lbnQgCQCkAwEFBndsZ0FtdAIMIDwgcmVxdWlyZWQgCQCkAwEFB3JvYkNvc3QECmNhbmRpZGF0ZXMJALUJAgkAkQMCBQVwYXJ0cwABAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlkdWNrU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAAABApsb2NrZWRMYW5kCQELdmFsdWVPckVsc2UCCQCiCAEJARNrZXlMb2NrZWRMYW5kQnlEdWNrAQULZHVja0Fzc2V0SWQCAAQHbGFuZEVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQUKbG9ja2VkTGFuZAAAAwMJAQIhPQIFCWR1Y2tTdGF0ZQULZHVja0lkeEZyZWUJAGYCBQdsYW5kRVRBBQNub3cHCQACAQkArAICAidZb3UgYWxyZWFkeSBzdGFydGVkIHJvYmJpbmcsIHdhaXQgdGlsbCAJAKQDAQUHbGFuZEVUQQoBB2NoZWNrZXICA2FjYwtsYW5kQXNzZXRJZAQFc3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUxhbmRSb2JiZXJ5U3RhdGUBBQtsYW5kQXNzZXRJZAAABAtjb29sZG93bkVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQULbGFuZEFzc2V0SWQAAAMJAGYCBQVzdGF0ZQkAkAMBBRBsYW5kUm9iQ29vbGRvd25zCQACAQINSW52YWxpZCBzdGF0ZQMJAGYCBQNub3cFC2Nvb2xkb3duRVRBBApzdGFrZWRUaW1lCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAMJAGcCAAAFCnN0YWtlZFRpbWUFA2FjYwQBYQkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAFkCQC1CQIIBQFhC2Rlc2NyaXB0aW9uAgFfBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAxwcm9kdWN0aXZpdHkJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBAlkZWx0YVRpbWUJAGUCBQNub3cFCnN0YWtlZFRpbWUECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUMcHJvZHVjdGl2aXR5BQZwaWVjZXMFCURBWU1JTExJUwMJAGYCBQ5NSU5fUkVTX1RPX1JPQgUIYXZhaWxSZXMFA2FjYwkAzQgCBQNhY2MFC2xhbmRBc3NldElkBQNhY2MECGZpbHRlcmVkCgACJGwFCmNhbmRpZGF0ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2NoZWNrZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDCQAAAgkAkAMBBQhmaWx0ZXJlZAAACQACAQIZTm8gY2FuZGlkYXRlcyBmb3Igcm9iYmVyeQQGcm5kSWR4CQEPZ2V0UmFuZG9tTnVtYmVyAwkAkAMBBQhmaWx0ZXJlZAUGaGVpZ2h0CQDLAQIFA3NpZwgFAWkNdHJhbnNhY3Rpb25JZAQLbGFuZEFzc2V0SWQJAJEDAgUIZmlsdGVyZWQFBnJuZElkeAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQETa2V5TGFuZFJvYmJlcnlTdGF0ZQEFC2xhbmRBc3NldElkBQxyb2JJZHhMb2NrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARJrZXlMYW5kQ29vbGRvd25FVEEBBQtsYW5kQXNzZXRJZAkAZAIFA25vdwkAkQMCBRBsYW5kUm9iQ29vbGRvd25zBQxyb2JJZHhMb2NrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARNrZXlEdWNrUm9iYmVyeVN0YXRlAQULZHVja0Fzc2V0SWQFEGR1Y2tJZHhQcmVwYXJpbmcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBE2tleUxvY2tlZExhbmRCeUR1Y2sBBQtkdWNrQXNzZXRJZAULbGFuZEFzc2V0SWQJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwFC2xhbmRBc3NldElkAWkBB3JvYkxhbmQCB21lc3NhZ2UDc2lnBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBASEBCQDEEwMFB21lc3NhZ2UFA3NpZwUDcHViCQACAQIYc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoBAh1c2VyQWRkcgkApQgBCAUBaQZjYWxsZXIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUIdXNlckFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAJQKAgkAzAgCBQxwcm9sb2dBY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIJARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBBQtkdWNrQXNzZXRJZAUDbm93BQNuaWwAAAFpAQ5hY2NlcHREZWxpdmVyeQADCQEBIQEFEUtTX0FMTE9XX0RFTElWRVJZCQACAQIfRGVsaXZlcnkgZmVhdHVyZSBpcyB0dXJuZWQgb2ZmIQQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlmdW5kVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BQ9kZWxpdmVyeUZ1bmRLZXkAAAQLbG9ja2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BRFkZWxpdmVyeUxvY2tlZEtleQAAAwkAZgIFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQkAZQIFCWZ1bmRUb3RhbAULbG9ja2VkVG90YWwJAAIBCQCsAgIJAKwCAgkArAICAiBEZWxpdmVyeSBpcyBub3QgYXZhaWxhYmxlLCBmdW5kPQkBCmZpeGVkUG9pbnQCBQlmdW5kVG90YWwABgIJLCBsb2NrZWQ9CQEKZml4ZWRQb2ludAIFC2xvY2tlZFRvdGFsAAYEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECGRlbGF5RVRBCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQULZHVja0Fzc2V0SWQAAAMJAGYCBQhkZWxheUVUQQUDbm93CQACAQkArAICAipEZWxpdmVyeSBpcyBmb3JiaWRkZW4gZm9yIHlvdXIgZHVjayB1bnRpbCAJAKQDAQUIZGVsYXlFVEEDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh5hY2NlcHREZWxpdmVyeV9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIcYWNjZXB0RGVsaXZlcnlfY2hlY2tEZWxpdmVyeQQObmV3TG9ja2VkVG90YWwJAQVhc0ludAEJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhR1cGRhdGVEZWxpdmVyeUxvY2tlZAkAzAgCCQBkAgULbG9ja2VkVG90YWwFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUDbmlsBQNuaWwECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OBBBkZWxpdmVyeUxvY2F0aW9uCQCsAgIJAKQDAQUDbm93AgRfRF8wCQCUCgIJAMwIAgUMcHJvbG9nQWN0aW9uCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAUJY3VySGVhbHRoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFBW1heEhQCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFC2N1ckxvY2F0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUQZGVsaXZlcnlMb2NhdGlvbgUDbmlsCQCUCgIFEGRlbGl2ZXJ5TG9jYXRpb24FDm5ld0xvY2tlZFRvdGFsADoDolA=", "height": 2769762, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8RhRnoCrB9KL43ncxmWmtdKbZnjCHef1poLFPejkf8ES Next: BTNXGq8VV5w26RP2yi6n5jycwoB3NRtnbp2nrXCbB1Tb Diff:
OldNewDifferences
396396
397397 let cs = false
398398
399-let ct = false
399+let ct = true
400400
401401 let cu = true
402402
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 86400000
55
66 func b (c) = ("lastArbTimeUser_" + c)
77
88
99 let d = 100000000
1010
1111 let e = 3200
1212
1313 let f = 4000
1414
1515 let g = 3
1616
1717 let h = 100000000
1818
1919 let i = 400
2020
2121 let j = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
2222
2323 let k = 0
2424
2525 let l = 1
2626
2727 let m = 2
2828
2929 let n = 3
3030
3131 let o = 4
3232
3333 let p = 0
3434
3535 let q = 6
3636
3737 let r = 2
3838
3939 let s = 2
4040
4141 let t = 30
4242
4343 let u = [0, 600000, 900000, 43200000, 21600000]
4444
4545 let v = 20000000
4646
4747 let w = 1
4848
4949 let x = 0
5050
5151 let y = 1
5252
5353 func z (A) = ("duckHealth_" + A)
5454
5555
5656 func B (A) = ("duckChars_" + A)
5757
5858
5959 func C (A) = ("duckXP_" + A)
6060
6161
6262 func D (A) = ("duckLevel_" + A)
6363
6464
6565 func E (A) = ("duckFreePoints_" + A)
6666
6767
6868 func F (A) = ("duckEquipment_" + A)
6969
7070
7171 func G (c) = ("userXP_" + c)
7272
7373
7474 func H (c) = ("userLevel_" + c)
7575
7676
7777 func I (c) = ("userFreePoints_" + c)
7878
7979
8080 func J (A) = ("savedHealth_" + A)
8181
8282
8383 func K (A) = ("savedLocation_" + A)
8484
8585
8686 func L (A) = ("duckBuffs_" + A)
8787
8888
8989 func M (A) = ("lastRobberyTime_" + A)
9090
9191
9292 func N (A) = ("lastRobberyCost_" + A)
9393
9494
9595 func O (P) = ("landRobberyState_" + P)
9696
9797
9898 func Q (P) = ("landCooldownETA_" + P)
9999
100100
101101 func R (A) = ("duckRobberyState_" + A)
102102
103103
104104 func S (A) = ("lockedLandByDuck_" + A)
105105
106106
107107 func T (A) = ("deliveryDelayByDuck_" + A)
108108
109109
110110 let U = 10000
111111
112112 let V = 10000
113113
114114 let W = 2000
115115
116116 let X = 100000
117117
118118 let Y = 1000000
119119
120120 let Z = 5000000
121121
122122 let aa = 10000
123123
124124 let ab = 1000000
125125
126126 let ac = 1000000
127127
128128 let ad = 10000
129129
130130 func ae (af) = fraction(e, pow(af, 4, f, 4, 4, DOWN), d)
131131
132132
133133 func ag (ah) = (100 + ah)
134134
135135
136136 func ai (aj,ak) = {
137137 let al = ae(ak)
138138 [al, (g * (al - aj))]
139139 }
140140
141141
142142 func am (an,A,ao,ap) = {
143143 let aq = split(valueOrElse(getString(an, B(A)), "0_0_0_0_0"), "_")
144144 let ar = valueOrElse(getInteger(an, D(A)), 0)
145145 let as = valueOrElse(getInteger(an, z(A)), ag(ar))
146146 let at = split(valueOrElse(getString(an, L(A)), "0_0_0_0_0"), "_")
147147 ([parseIntValue(aq[k]), parseIntValue(aq[l]), parseIntValue(aq[m]), parseIntValue(aq[n]), parseIntValue(aq[o]), ar, as] ++ (if (ap)
148148 then [ao, ao, ao, ao, ao]
149149 else [parseIntValue(at[k]), parseIntValue(at[l]), parseIntValue(at[m]), parseIntValue(at[n]), parseIntValue(at[o])]))
150150 }
151151
152152
153153 func au (an,A) = {
154154 let av = valueOrElse(getInteger(an, N(A)), 0)
155155 let aw = valueOrElse(getInteger(an, M(A)), 0)
156156 let ax = lastBlock.timestamp
157157 let ay = max([h, (av - (i * (ax - aw)))])
158158 let az = valueOrElse(getInteger(an, R(A)), 0)
159159 let aA = valueOrElse(getString(an, S(A)), "")
160160 let aB = valueOrElse(getInteger(an, Q(aA)), 0)
161161 $Tuple5(ay, aw, az, aA, aB)
162162 }
163163
164164
165165 let aC = "LAND"
166166
167167 let aD = "DUCK"
168168
169169 let aE = "PRESALE"
170170
171171 let aF = 6
172172
173173 let aG = 25
174174
175175 let aH = 3456000
176176
177177 let aI = 10000000000
178178
179179 let aJ = "Africa_F_Africa"
180180
181181 let aK = 39637
182182
183183 let aL = 10
184184
185185 let aM = 50000
186186
187187 let aN = 600000
188188
189189 let aO = ["First Aid Kit L1", "First Aid Kit L2", "First Aid Kit L3", "Backpack L1", "Backpack L2", "Backpack L3", "Food Ration L1", "Food Ration L2", "Food Ration L3", "Jet Pack L1", "Jet Pack L2", "Jet Pack L3", "Shield L1", "Shield L2", "Shield L3", "Mine L1", "Mine L2", "Mine L3", "Trap L1", "Trap L2", "Trap L3"]
190190
191191 let aP = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
192192
193193 let aQ = 10000000
194194
195195 let aR = [15, 16, 17, 18, 19, 20]
196196
197197 let aS = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_"]
198198
199199 let aT = 6
200200
201201 let aU = 8
202202
203203 let aV = 9
204204
205205 let aW = 10
206206
207207 let aX = 10
208208
209209 let aY = 0
210210
211211 let aZ = 1
212212
213213 let ba = 2
214214
215215 let bb = 3
216216
217217 let bc = 4
218218
219219 let bd = 0
220220
221221 let be = 1
222222
223223 let bf = 2
224224
225225 let bg = 3
226226
227227 let bh = 0
228228
229229 let bi = 1
230230
231231 let bj = 2
232232
233233 let bk = 3
234234
235235 let bl = 0
236236
237237 let bm = 1
238238
239239 let bn = 2
240240
241241 func bo (bp) = ("no_" + bp)
242242
243243
244244 func bq (bp) = ("lcna_" + bp)
245245
246246
247247 func br (bp) = ("st_" + bp)
248248
249249
250250 func bs (bt,bp) = makeString(["las", bt, bp], "_")
251251
252252
253253 func bu (bv,bp,bw) = ((((("sttao_" + bv) + "_") + bp) + "_") + bw)
254254
255255
256256 func bx (P) = ("wh_" + P)
257257
258258
259259 func by (bp) = ("infraLevel_" + bp)
260260
261261
262262 func bz (P) = ("fortifications_" + P)
263263
264264
265265 func bA (bp) = ("duckCustomNameByAssetId_" + bp)
266266
267267
268268 func bB (c) = ("accountCustomNameByAddr_" + c)
269269
270270
271271 func bC (c) = ("accRefBy_" + c)
272272
273273
274274 func bD (A) = ("onboardArtActivatedOnDuck_" + A)
275275
276276
277277 func bE (c) = ("onboardArtActivatedDuckBy_" + c)
278278
279279
280280 func bF (c) = ("accReferrals_" + c)
281281
282282
283283 func bG (bp) = ("duckOwner_" + bp)
284284
285285
286286 func bH (bw) = ("stakedDuckByOwner_" + bw)
287287
288288
289289 func bI (A) = ("backPack_" + A)
290290
291291
292292 func bJ (A) = ("duckLocation_" + A)
293293
294294
295295 func bK (bL) = ("%s%s__userGwlReleaseTime__" + bL)
296296
297297
298298 func bM () = "emergencyWarehouseProducts"
299299
300300
301301 let bN = "deliveryFund"
302302
303303 let bO = "deliveryLocked"
304304
305305 let bP = "%s__lastTourId"
306306
307307 func bQ (bR) = ("%s%d__tourStaticData__" + toString(bR))
308308
309309
310310 func bS (bR) = ("%s%d__tourDynamicData__" + toString(bR))
311311
312312
313313 func bT (bR,A) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bR), A], "__")
314314
315315
316316 let bU = 0
317317
318318 let bV = 1
319319
320320 let bW = 6
321321
322322 let bX = 1
323323
324324 func bY (bZ,bR) = {
325325 let ca = split(valueOrErrorMessage(getString(bZ, bQ(bR)), (("Error reading tournament " + toString(bR)) + " data")), "__")
326326 let cb = split_4C(valueOrErrorMessage(getString(bZ, bS(bR)), (("Error reading tournament " + toString(bR)) + " data")), "__")
327327 [ca, cb]
328328 }
329329
330330
331331 func cc (bZ,cd) = {
332332 let ce = valueOrElse(getInteger(bZ, bP), 0)
333333 let cf = split(cd, "_")
334334 let ax = lastBlock.timestamp
335335 let cg = bY(bZ, ce)
336336 let ca = cg[bU]
337337 let cb = cg[bV]
338338 if (if (if ((cf[bm] == "T"))
339339 then (parseIntValue(cf[bl]) == ce)
340340 else false)
341341 then (cb[bX] == "INPROGRESS")
342342 else false)
343343 then (parseIntValue(ca[bW]) > ax)
344344 else false
345345 }
346346
347347
348348 func ch (cd) = {
349349 let cf = split(cd, "_")
350350 let ax = lastBlock.timestamp
351351 let ci = parseIntValue(cf[bl])
352352 let cj = parseIntValue(cf[bn])
353353 if (if ((cf[bm] == "D"))
354354 then (ax > (ci + aN))
355355 else false)
356356 then (3 >= cj)
357357 else false
358358 }
359359
360360
361361 func ck (cd) = {
362362 let cl = split(cd, "_")[bm]
363363 if ((cl != "T"))
364364 then (cl != "D")
365365 else false
366366 }
367367
368368
369369 func cm (bZ,cd) = {
370370 let ce = valueOrElse(getInteger(bZ, bP), 0)
371371 let cf = split(cd, "_")
372372 let ax = lastBlock.timestamp
373373 let cg = bY(bZ, ce)
374374 let ca = cg[bU]
375375 let cb = cg[bV]
376376 let cl = cf[bm]
377377 if (if ((cl != "T"))
378378 then (cl != "D")
379379 else false)
380380 then true
381381 else !(if (if (if ((cf[bm] == "T"))
382382 then (parseIntValue(cf[bl]) == ce)
383383 else false)
384384 then (cb[bX] == "INPROGRESS")
385385 else false)
386386 then (parseIntValue(ca[bW]) > ax)
387387 else false)
388388 }
389389
390390
391391 func cn (co) = (parseIntValue(co[aT]) * aQ)
392392
393393
394394 func cp (cq,cr) = throw(((("Cheat attempt: oldLoc=" + cq) + ", newLoc=") + cr))
395395
396396
397397 let cs = false
398398
399-let ct = false
399+let ct = true
400400
401401 let cu = true
402402
403403 let cv = take(drop(this.bytes, 1), 1)
404404
405405 let cw = {
406406 let cx = cv
407407 if ((base58'2W' == cx))
408408 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
409409 else if ((base58'2T' == cx))
410410 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
411411 else throw("Unknown chain")
412412 }
413413
414414 let cy = {
415415 let cx = cv
416416 if ((base58'2W' == cx))
417417 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
418418 else if ((base58'2T' == cx))
419419 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
420420 else throw("Unknown chain")
421421 }
422422
423423 let cz = {
424424 let cx = cv
425425 if ((base58'2W' == cx))
426426 then 10000000000
427427 else if ((base58'2T' == cx))
428428 then 100000000
429429 else throw("Unknown chain")
430430 }
431431
432432 let cA = {
433433 let cx = cv
434434 if ((base58'2W' == cx))
435435 then 86400000
436436 else if ((base58'2T' == cx))
437437 then 60000
438438 else throw("Unknown chain")
439439 }
440440
441441 let cB = "__"
442442
443443 let cC = 1000000
444444
445445 let cD = 100000000
446446
447447 let cE = 25
448448
449449 let cF = 100
450450
451451 let cG = 225
452452
453453 let cH = 400
454454
455455 let cI = 625
456456
457457 let cJ = [0, 1, 2, 3, 4, 5]
458458
459459 func cK (cL,cM) = valueOrErrorMessage(getString(cL, cM), makeString(["mandatory ", toString(cL), ".", cM, " is not defined"], ""))
460460
461461
462462 let cN = 1
463463
464464 let cO = 2
465465
466466 let cP = 3
467467
468468 let cQ = 4
469469
470470 let cR = 7
471471
472472 let cS = 8
473473
474474 func cT () = "%s__restConfig"
475475
476476
477477 func cU () = "%s__restAddr"
478478
479479
480480 func cV (cW) = split_4C(cK(cW, cT()), cB)
481481
482482
483483 func cX (cY,cZ) = valueOrErrorMessage(addressFromString(cY[cZ]), ("Rest cfg doesn't contain address at index " + toString(cZ)))
484484
485485
486486 let da = addressFromStringValue(valueOrElse(getString(this, cU()), cy))
487487
488488 let cY = cV(da)
489489
490490 let an = cX(cY, cN)
491491
492492 let db = cX(cY, cO)
493493
494494 let dc = cX(cY, cP)
495495
496496 let dd = cX(cY, cQ)
497497
498498 let de = cX(cY, cR)
499499
500500 let df = cX(cY, cS)
501501
502502 let dg = 0
503503
504504 let dh = 1
505505
506506 let di = 2
507507
508508 let dj = 3
509509
510510 let dk = "wlg_assetId"
511511
512512 let dl = valueOrErrorMessage(getBinary(dd, dk), "WLGOLD is not issued yet")
513513
514514 let dm = "acresAssetId"
515515
516516 let dn = valueOrErrorMessage(getBinary(df, dm), "ACRES is not issued yet")
517517
518518 let do = 2
519519
520520 func dp (cL) = ("finishBlockForAddr_" + cL)
521521
522522
523523 func dq () = "resTypesProportions"
524524
525525
526526 func dr (ds) = ("resTypesByContinent_" + ds)
527527
528528
529529 func dt (bw) = ("stakedLandsByOwner_" + bw)
530530
531531
532532 func du (bw) = ("stakedPiecesByOwner_" + bw)
533533
534534
535535 func dv (dw) = {
536536 let cx = dw
537537 if ($isInstanceOf(cx, "String"))
538538 then {
539539 let dx = cx
540540 dx
541541 }
542542 else throw("fail to cast into String")
543543 }
544544
545545
546546 func dy (dw) = {
547547 let cx = dw
548548 if ($isInstanceOf(cx, "Int"))
549549 then {
550550 let dz = cx
551551 dz
552552 }
553553 else throw("fail to cast into Int")
554554 }
555555
556556
557557 func dA (dw) = {
558558 let cx = dw
559559 if ($isInstanceOf(cx, "Boolean"))
560560 then {
561561 let dx = cx
562562 dx
563563 }
564564 else throw("fail to cast into Boolean")
565565 }
566566
567567
568568 func dB (dC) = {
569569 let cx = dC
570570 if ($isInstanceOf(cx, "(String, Int)"))
571571 then {
572572 let dD = cx
573573 dD
574574 }
575575 else throw("fail to cast into (String, Int)")
576576 }
577577
578578
579579 func dE (dF) = {
580580 let cx = dF
581581 if (("S" == cx))
582582 then cE
583583 else if (("M" == cx))
584584 then cF
585585 else if (("L" == cx))
586586 then cG
587587 else if (("XL" == cx))
588588 then cH
589589 else if (("XXL" == cx))
590590 then cI
591591 else throw("Unknown land size")
592592 }
593593
594594
595595 func dG (dx) = isDefined(parseInt(dx))
596596
597597
598598 func dH () = "contractsBlocked"
599599
600600
601601 func dI (c) = ("lastTxIdByUser_" + c)
602602
603603
604604 func dJ (dC,dK) = {
605605 let dL = pow(10, 0, dK, 0, 0, DOWN)
606606 let dM = toString((dC % dL))
607607 let dN = drop(toString(dL), (1 + size(dM)))
608608 (((toString((dC / dL)) + ".") + dN) + dM)
609609 }
610610
611611
612612 func dO (dP,dQ,dR) = {
613613 let dS = value(blockInfoByHeight(dQ))
614614 let dT = sha256((value(dS.vrf) + dR))
615615 (toInt(dT) % dP)
616616 }
617617
618618
619619 let dU = {
620620 let cx = cv
621621 if ((base58'2W' == cx))
622622 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
623623 else if ((base58'2T' == cx))
624624 then this
625625 else throw("Unknown chain")
626626 }
627627
628628 let dV = {
629629 let cx = cv
630630 if ((base58'2W' == cx))
631631 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
632632 else if ((base58'2T' == cx))
633633 then this
634634 else throw("Unknown chain")
635635 }
636636
637637 let dW = {
638638 let cx = cv
639639 if ((base58'2W' == cx))
640640 then if (cs)
641641 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
642642 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
643643 else if ((base58'2T' == cx))
644644 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
645645 else throw("Unknown chain")
646646 }
647647
648648 let dX = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
649649
650650 let dY = 300000
651651
652652 let dZ = 5000000
653653
654654 let ea = 50
655655
656656 let eb = 10000000
657657
658658 let ec = {
659659 let cx = cv
660660 if ((base58'2W' == cx))
661661 then 252289527462
662662 else if ((base58'2T' == cx))
663663 then 2522895274
664664 else throw("Unknown chain")
665665 }
666666
667667 let ed = {
668668 let cx = cv
669669 if ((base58'2W' == cx))
670670 then 250000000
671671 else if ((base58'2T' == cx))
672672 then 250000000
673673 else throw("Unknown chain")
674674 }
675675
676676 let ee = 2500000000
677677
678678 let ef = toBigInt(5)
679679
680680 let eg = toBigInt(20)
681681
682682 let eh = toBigInt((20 * 20))
683683
684684 let ei = toBigInt(((20 * 20) * 20))
685685
686686 let ej = toBigInt((((20 * 20) * 20) * 20))
687687
688688 let ek = toBigInt(((((20 * 20) * 20) * 20) * 20))
689689
690690 let el = 500
691691
692692 func em () = "nextLandNum"
693693
694694
695695 func en (eo) = ("lcn_" + eo)
696696
697697
698698 func ep (eq) = ("la_" + eq)
699699
700700
701701 func er (bp,bw) = ((("ilao_" + bp) + "_") + bw)
702702
703703
704704 func es (eq) = ("lo_" + eq)
705705
706706
707707 func et (eo) = ("duckByCustomName_" + eo)
708708
709709
710710 func eu (eo) = ("accountByCustomName_" + eo)
711711
712712
713713 func ev () = "oldiesList"
714714
715715
716716 let ew = 0
717717
718718 let ex = 1
719719
720720 let ey = 2
721721
722722 let ez = 0
723723
724724 let eA = 5
725725
726726 let eB = 6
727727
728728 let eC = 7
729729
730730 func eD (eq,dF) = ((aC + eq) + dF)
731731
732732
733733 func eE (eF,eG) = {
734734 let eH = if ((eF >= 0))
735735 then (((eF + eG) - 1) / eG)
736736 else -((((-(eF) + eG) - 1) / eG))
737737 (eH * cD)
738738 }
739739
740740
741741 func eI (eJ,eK) = {
742742 let eL = (((((eK[0] + eK[1]) + eK[2]) + eK[3]) + eK[4]) + eK[5])
743743 if ((0 >= eL))
744744 then throw("Zero weights sum")
745745 else {
746746 let eM = fraction(eJ, cC, eL)
747747 func eN (eO,eP) = (eO :+ fraction(eP, eM, cC))
748748
749749 let eQ = eK
750750 let eR = size(eQ)
751751 let eS = nil
752752 func eT (eU,eV) = if ((eV >= eR))
753753 then eU
754754 else eN(eU, eQ[eV])
755755
756756 func eW (eU,eV) = if ((eV >= eR))
757757 then eU
758758 else throw("List size exceeds 6")
759759
760760 eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6)
761761 }
762762 }
763763
764764
765765 func eX (eJ) = {
766766 let eY = split(value(getString(dq())), "_")
767767 if ((size(eY) != aF))
768768 then throw("Wrong proportions data")
769769 else {
770770 let eZ = [parseIntValue(eY[0]), parseIntValue(eY[1]), parseIntValue(eY[2]), parseIntValue(eY[3]), parseIntValue(eY[4]), parseIntValue(eY[5])]
771771 eI(eJ, eZ)
772772 }
773773 }
774774
775775
776776 func fa (fb,fc,fd) = {
777777 let fe = eX(fd)
778778 func ff (eO,cZ) = {
779779 let fg = (parseIntValue(fc[cZ]) - fe[cZ])
780780 if ((0 > fg))
781781 then throw(((((("Not enough material idx=" + toString(cZ)) + ", you have ") + fc[cZ]) + ", but need ") + toString(fe[cZ])))
782782 else (eO :+ toString(fg))
783783 }
784784
785785 if (fb)
786786 then {
787787 let eQ = cJ
788788 let eR = size(eQ)
789789 let eS = nil
790790 func eT (eU,eV) = if ((eV >= eR))
791791 then eU
792792 else ff(eU, eQ[eV])
793793
794794 func eW (eU,eV) = if ((eV >= eR))
795795 then eU
796796 else throw("List size exceeds 6")
797797
798798 eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6)
799799 }
800800 else fc
801801 }
802802
803803
804804 func fh (fi,fj) = if ((fj == ""))
805805 then $Tuple2(fi, false)
806806 else {
807807 func fk (eO,fl) = {
808808 let fm = split(fl, ",")
809809 if ((size(fm) != 2))
810810 then throw("Incorrect format, should be index,amount")
811811 else {
812812 let cZ = parseIntValue(fm[0])
813813 if (if ((0 > cZ))
814814 then true
815815 else (cZ >= size(aS)))
816816 then throw("Unknown product idx")
817817 else {
818818 let fn = parseIntValue(fm[1])
819819 let fo = split(eO._1, (fm[0] + ":"))
820820 if ((size(fo) != 2))
821821 then throw((("You don't have " + aO[cZ]) + " equipped"))
822822 else {
823823 let fp = fo[1]
824824 let fq = if (dG(take(drop(fp, 1), 1)))
825825 then 2
826826 else 1
827827 let fr = parseIntValue(take(fp, fq))
828828 let fs = drop(fp, fq)
829829 let ft = if ((fr >= fn))
830830 then (fr - fn)
831831 else throw(((((("You equipped " + toString(fr)) + " of ") + aO[cZ]) + ", but tried to use ") + toString(fn)))
832832 $Tuple2(((((fo[0] + fm[0]) + ":") + toString(ft)) + fs), if (eO._2)
833833 then true
834834 else if (if ((cZ >= 6))
835835 then (8 >= cZ)
836836 else false)
837837 then (ft == 0)
838838 else false)
839839 }
840840 }
841841 }
842842 }
843843
844844 let eQ = split(fj, "_")
845845 let eR = size(eQ)
846846 let eS = $Tuple2(fi, false)
847847 func eT (eU,eV) = if ((eV >= eR))
848848 then eU
849849 else fk(eU, eQ[eV])
850850
851851 func eW (eU,eV) = if ((eV >= eR))
852852 then eU
853853 else throw("List size exceeds 10")
854854
855855 eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
856856 }
857857
858858
859859 func fu (fv) = {
860860 let fw = if ((fv == ""))
861861 then nil
862862 else split_4C(fv, "_")
863863 func fx (eO,co) = {
864864 let fy = (size(eO) / 8)
865865 let fr = if ((size(fw) > fy))
866866 then parseIntValue(fw[fy])
867867 else 0
868868 (eO + toBytes(fr))
869869 }
870870
871871 let eQ = aS
872872 let eR = size(eQ)
873873 let eS = base58''
874874 func eT (eU,eV) = if ((eV >= eR))
875875 then eU
876876 else fx(eU, eQ[eV])
877877
878878 func eW (eU,eV) = if ((eV >= eR))
879879 then eU
880880 else throw("List size exceeds 50")
881881
882882 eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 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)
883883 }
884884
885885
886886 func fz (fA) = {
887887 func fB (eO,co) = {
888888 let fy = size(eO)
889889 let fC = take(drop(fA, (8 * fy)), 8)
890890 (eO :+ toString(toInt(fC)))
891891 }
892892
893893 makeString_2C({
894894 let eQ = aS
895895 let eR = size(eQ)
896896 let eS = nil
897897 func eT (eU,eV) = if ((eV >= eR))
898898 then eU
899899 else fB(eU, eQ[eV])
900900
901901 func eW (eU,eV) = if ((eV >= eR))
902902 then eU
903903 else throw("List size exceeds 50")
904904
905905 eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 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)
906906 }, "_")
907907 }
908908
909909
910910 func fD (fE,fF) = {
911911 func fG (eO,fy) = {
912912 let fH = if ((size(fE) > (7 + fy)))
913913 then fE[(7 + fy)]
914914 else 0
915915 if ((parseIntValue(fF[fy]) > (fE[fy] + fH)))
916916 then throw(("Requirement not satisfied: " + j[fy]))
917917 else true
918918 }
919919
920920 let eQ = [0, 1, 2, 3, 4, 5, 6]
921921 let eR = size(eQ)
922922 let eS = false
923923 func eT (eU,eV) = if ((eV >= eR))
924924 then eU
925925 else fG(eU, eQ[eV])
926926
927927 func eW (eU,eV) = if ((eV >= eR))
928928 then eU
929929 else throw("List size exceeds 7")
930930
931931 eW(eT(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6), 7)
932932 }
933933
934934
935935 func fI (fJ,fw,fK,fE,fL,fM) = {
936936 let fm = split(fJ, ":")
937937 if ((size(fm) != 2))
938938 then throw("Incorrect format, should be index:amount")
939939 else if (if (!(fK))
940940 then (size(fm[0]) != 2)
941941 else false)
942942 then throw("Product idx should be 2 digits, zero padded")
943943 else {
944944 let fN = parseIntValue(fm[0])
945945 let fO = parseIntValue(fm[1])
946946 if (!(containsElement(aR, fN)))
947947 then throw((("Product '" + aO[fN]) + "' cannot be used for land defense"))
948948 else if ((0 > fO))
949949 then throw("Count can't be negative")
950950 else if ((fO > t))
951951 then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fN]))
952952 else if ((fO == 0))
953953 then $Tuple3(fw, fL, fM)
954954 else {
955955 let fP = take(fw, (8 * fN))
956956 let fr = toInt(take(drop(fw, (8 * fN)), 8))
957957 let fs = drop(fw, (8 * (fN + 1)))
958958 let co = split(aS[fN], "_")
959959 if (if (!(fK))
960960 then (fO > fr)
961961 else false)
962962 then throw(((((("You have " + toString(fr)) + " of ") + aO[fN]) + ", but tried to use ") + toString(fO)))
963963 else {
964964 let ft = if (if (!(fK))
965965 then fD(fE, split(co[aV], ","))
966966 else false)
967967 then (fr - fO)
968968 else (fr + fO)
969969 let fQ = (eE(ft, aX) - eE(fr, aX))
970970 $Tuple3(((fP + toBytes(ft)) + fs), (fL + fQ), (fM - fQ))
971971 }
972972 }
973973 }
974974 }
975975
976976
977977 func fR (fJ,fw,fK,fS,fT,fU,fE) = {
978978 let fm = split(fJ, ":")
979979 if ((size(fm) != 2))
980980 then throw("Incorrect format, should be index:amount")
981981 else if (if (!(fK))
982982 then (size(fm[0]) != 2)
983983 else false)
984984 then throw("Product idx should be 2 digits, zero padded")
985985 else {
986986 let fN = parseIntValue(fm[0])
987987 let fO = parseIntValue(fm[1])
988988 if (if ((0 > fN))
989989 then true
990990 else (fN >= size(aS)))
991991 then throw("Unknown product idx")
992992 else if ((0 > fO))
993993 then throw("Count can't be negative")
994994 else if ((fO > t))
995995 then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fN]))
996996 else if ((fO == 0))
997997 then $Tuple2(fw, false)
998998 else {
999999 let fP = take(fw, (8 * fN))
10001000 let fr = toInt(take(drop(fw, (8 * fN)), 8))
10011001 let fs = drop(fw, (8 * (fN + 1)))
10021002 let co = split(aS[fN], "_")
10031003 if (if (!(fK))
10041004 then (fO > fr)
10051005 else false)
10061006 then throw(((((("You have " + toString(fr)) + " of ") + aO[fN]) + ", but tried to use ") + toString(fO)))
10071007 else {
10081008 let fV = if (if (!(fK))
10091009 then fD(fE, split(co[aV], ","))
10101010 else false)
10111011 then {
10121012 let fW = co[aW]
10131013 if ((fW == ""))
10141014 then throw("Item cannot be equipped")
10151015 else {
10161016 let fX = parseIntValue(fW)
10171017 let fY = (fX / 100)
10181018 if ((fS != fY))
10191019 then throw("Segment incompatible")
10201020 else {
10211021 let fZ = ((fX % 100) / 10)
10221022 if ((fT != fZ))
10231023 then throw("Slot incompatible")
10241024 else {
10251025 let ga = (fX % 10)
10261026 if (if ((fU != 0))
10271027 then (ga > 1)
10281028 else false)
10291029 then throw("Big items should occupy slot 0")
10301030 else (ga > 1)
10311031 }
10321032 }
10331033 }
10341034 }
10351035 else false
10361036 $Tuple2(((fP + toBytes((fr + (if (fK)
10371037 then fO
10381038 else -(fO))))) + fs), fV)
10391039 }
10401040 }
10411041 }
10421042 }
10431043
10441044
10451045 func gb (gc,gd,fK,fS,fT,ge) = if ((gc != ""))
10461046 then {
10471047 let gf = split(gc, ",")
10481048 if ((size(gf) > s))
10491049 then throw("Wrong slots format")
10501050 else {
10511051 let gg = gf[0]
10521052 let gh = if ((size(gf) > 1))
10531053 then gf[1]
10541054 else ""
10551055 if (if ((gg == ""))
10561056 then (gh == "")
10571057 else false)
10581058 then gd
10591059 else {
10601060 let gi = if ((gg != ""))
10611061 then fR(gg, gd, fK, fS, fT, 0, ge)
10621062 else $Tuple2(gd, false)
10631063 if ((gh != ""))
10641064 then if (gi._2)
10651065 then throw("Big item already occupies slot")
10661066 else fR(gh, gi._1, fK, fS, fT, 1, ge)._1
10671067 else gi._1
10681068 }
10691069 }
10701070 }
10711071 else gd
10721072
10731073
10741074 func gj (gk,gl,fK,ge) = {
10751075 func fS (eO,gm) = {
10761076 let fy = eO._1
10771077 let fT = split(gm, ";")
10781078 if ((size(fT) != r))
10791079 then throw("Wrong segment format")
10801080 else {
10811081 let gn = fT[0]
10821082 let go = fT[1]
10831083 if (if ((gn == ""))
10841084 then (go == "")
10851085 else false)
10861086 then $Tuple2((fy + 1), eO._2)
10871087 else {
10881088 let gp = gb(gn, eO._2, fK, fy, 0, ge)
10891089 $Tuple2((fy + 1), gb(go, gp, fK, fy, 1, ge))
10901090 }
10911091 }
10921092 }
10931093
10941094 ( let eQ = gk
10951095 let eR = size(eQ)
10961096 let eS = $Tuple2(0, gl)
10971097 func eT (eU,eV) = if ((eV >= eR))
10981098 then eU
10991099 else fS(eU, eQ[eV])
11001100
11011101 func eW (eU,eV) = if ((eV >= eR))
11021102 then eU
11031103 else throw("List size exceeds 6")
11041104
11051105 eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6))._2
11061106 }
11071107
11081108
11091109 func gq (gk,gl,fL,fM,fK,fE) = if ((3 > size(gk)))
11101110 then throw("At least duck, mines and traps parts are required")
11111111 else {
11121112 func fS (eO,gm) = {
11131113 let fy = eO._1
11141114 if ((fy == 0))
11151115 then $Tuple4((fy + 1), eO._2, eO._3, eO._4)
11161116 else {
11171117 let gr = fI(gm, eO._2, fK, fE, eO._3, eO._4)
11181118 $Tuple4((fy + 1), gr._1, gr._2, gr._3)
11191119 }
11201120 }
11211121
11221122 let gs = {
11231123 let eQ = gk
11241124 let eR = size(eQ)
11251125 let eS = $Tuple4(0, gl, fL, fM)
11261126 func eT (eU,eV) = if ((eV >= eR))
11271127 then eU
11281128 else fS(eU, eQ[eV])
11291129
11301130 func eW (eU,eV) = if ((eV >= eR))
11311131 then eU
11321132 else throw("List size exceeds 10")
11331133
11341134 eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
11351135 }
11361136 $Tuple3(gs._2, gs._3, gs._4)
11371137 }
11381138
11391139
11401140 func gt (A) = {
11411141 let gu = F(A)
11421142 let gv = split(valueOrElse(getString(gu), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
11431143 let gw = gj(gv, dX, true, nil)
11441144 let gx = split(gv[p], ";")[1]
11451145 let ao = if ((gx == ""))
11461146 then 0
11471147 else {
11481148 let gy = split(gx, ",")[0]
11491149 if ((gy == ""))
11501150 then 0
11511151 else {
11521152 let fJ = split(gy, ":")
11531153 let cZ = fJ[0]
11541154 let gz = fJ[1]
11551155 if (if (if (if (if ((cZ == "06"))
11561156 then true
11571157 else (cZ == "07"))
11581158 then true
11591159 else (cZ == "08"))
11601160 then (gz != "")
11611161 else false)
11621162 then (parseIntValue(gz) > 0)
11631163 else false)
11641164 then parseIntValue(split(aS[parseIntValue(cZ)], "_")[aU])
11651165 else 0
11661166 }
11671167 }
11681168 let ge = am(this, A, ao, true)
11691169 let gA = gj(gv, gw, false, ge)
11701170 (gA == gA)
11711171 }
11721172
11731173
11741174 func gB (gC,gD,gE,gF) = if ((size(gC) != aF))
11751175 then throw("Wrong proportions data")
11761176 else {
11771177 func gG (eO,gH) = {
11781178 let fg = (parseIntValue(gC[gH]) + ((gF * gD[gH]) * gE))
11791179 if ((0 > fg))
11801180 then throw(((((((("Panic! Pieces of type=" + toString(gH)) + ", sign=") + toString(gF)) + ", terrainCounts[i]=") + toString(gD[gH])) + ", landSizeIndex=") + toString(gE)))
11811181 else (eO :+ toString(fg))
11821182 }
11831183
11841184 let eQ = cJ
11851185 let eR = size(eQ)
11861186 let eS = nil
11871187 func eT (eU,eV) = if ((eV >= eR))
11881188 then eU
11891189 else gG(eU, eQ[eV])
11901190
11911191 func eW (eU,eV) = if ((eV >= eR))
11921192 then eU
11931193 else throw("List size exceeds 6")
11941194
11951195 eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6)
11961196 }
11971197
11981198
11991199 func gI (gD,gE,gF) = {
12001200 let gC = split(valueOrElse(getString(dq()), "0_0_0_0_0_0"), "_")
12011201 makeString(gB(gC, gD, gE, gF), "_")
12021202 }
12031203
12041204
12051205 func gJ (gK) = [(size(split(gK, "A")) - 1), (size(split(gK, "B")) - 1), (size(split(gK, "C")) - 1), (size(split(gK, "D")) - 1), (size(split(gK, "E")) - 1), (size(split(gK, "F")) - 1)]
12061206
12071207
12081208 func gL (gM,gD,gN,gE,gO) = {
12091209 func gP (eO,gH) = {
12101210 let gQ = ((fraction(gN, gO, a) * gD[gH]) * gE)
12111211 (eO :+ toString((parseIntValue(gM[gH]) + gQ)))
12121212 }
12131213
12141214 let eZ = {
12151215 let eQ = cJ
12161216 let eR = size(eQ)
12171217 let eS = nil
12181218 func eT (eU,eV) = if ((eV >= eR))
12191219 then eU
12201220 else gP(eU, eQ[eV])
12211221
12221222 func eW (eU,eV) = if ((eV >= eR))
12231223 then eU
12241224 else throw("List size exceeds 6")
12251225
12261226 eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6)
12271227 }
12281228 makeString(eZ, "_")
12291229 }
12301230
12311231
12321232 func gR (gD,gN,gE,gO) = {
12331233 func gP (eO,gH) = {
12341234 let gQ = ((fraction(gN, gO, a) * gD[gH]) * gE)
12351235 $Tuple2((eO._1 :+ gQ), (eO._2 + gQ))
12361236 }
12371237
12381238 let eQ = cJ
12391239 let eR = size(eQ)
12401240 let eS = $Tuple2(nil, 0)
12411241 func eT (eU,eV) = if ((eV >= eR))
12421242 then eU
12431243 else gP(eU, eQ[eV])
12441244
12451245 func eW (eU,eV) = if ((eV >= eR))
12461246 then eU
12471247 else throw("List size exceeds 6")
12481248
12491249 eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6)
12501250 }
12511251
12521252
12531253 func gS (gT,gU,gV,gW) = {
12541254 let gX = gV._1
12551255 let gY = gV._2
12561256 if ((gY == 0))
12571257 then $Tuple2(makeString(gT, "_"), makeString(gU, "_"))
12581258 else if ((gW >= gY))
12591259 then {
12601260 func gZ (eO,gH) = (eO :+ toString((parseIntValue(gT[gH]) + gX[gH])))
12611261
12621262 let eZ = {
12631263 let eQ = cJ
12641264 let eR = size(eQ)
12651265 let eS = nil
12661266 func eT (eU,eV) = if ((eV >= eR))
12671267 then eU
12681268 else gZ(eU, eQ[eV])
12691269
12701270 func eW (eU,eV) = if ((eV >= eR))
12711271 then eU
12721272 else throw("List size exceeds 6")
12731273
12741274 eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6)
12751275 }
12761276 $Tuple2(makeString(eZ, "_"), makeString(gU, "_"))
12771277 }
12781278 else {
12791279 func ha (eO,gH) = {
12801280 let hb = fraction(gX[gH], gW, gY)
12811281 $Tuple2((eO._1 :+ toString((parseIntValue(gT[gH]) + hb))), (eO._2 :+ toString(((parseIntValue(gU[gH]) + gX[gH]) - hb))))
12821282 }
12831283
12841284 let eZ = {
12851285 let eQ = cJ
12861286 let eR = size(eQ)
12871287 let eS = $Tuple2(nil, nil)
12881288 func eT (eU,eV) = if ((eV >= eR))
12891289 then eU
12901290 else ha(eU, eQ[eV])
12911291
12921292 func eW (eU,eV) = if ((eV >= eR))
12931293 then eU
12941294 else throw("List size exceeds 6")
12951295
12961296 eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6)
12971297 }
12981298 $Tuple2(makeString(eZ._1, "_"), makeString(eZ._2, "_"))
12991299 }
13001300 }
13011301
13021302
13031303 func hc (hd) = if ((hd >= toBigInt(0)))
13041304 then hd
13051305 else -(hd)
13061306
13071307
13081308 let he = [[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]]
13091309
13101310 func hf (dz,hg) = {
13111311 let hh = toInt((dz % eg))
13121312 let hi = if ((hg[0] > hh))
13131313 then "A"
13141314 else if ((hg[1] > hh))
13151315 then "B"
13161316 else if ((hg[2] > hh))
13171317 then "C"
13181318 else if ((hg[3] > hh))
13191319 then "D"
13201320 else if ((hg[4] > hh))
13211321 then "E"
13221322 else "F"
13231323 hi
13241324 }
13251325
13261326
13271327 func hj (hk,hl) = {
13281328 let hm = he[hl]
13291329 func hn (eO,eP) = $Tuple2((((((eO._1 + hf(eO._2, hm)) + hf((eO._2 / eg), hm)) + hf((eO._2 / eh), hm)) + hf((eO._2 / ei), hm)) + hf((eO._2 / ej), hm)), (eO._2 / ek))
13301330
13311331 let gs = {
13321332 let eQ = [1, 2, 3, 4, 5]
13331333 let eR = size(eQ)
13341334 let eS = $Tuple2("", (hk / ef))
13351335 func eT (eU,eV) = if ((eV >= eR))
13361336 then eU
13371337 else hn(eU, eQ[eV])
13381338
13391339 func eW (eU,eV) = if ((eV >= eR))
13401340 then eU
13411341 else throw("List size exceeds 5")
13421342
13431343 eW(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5)
13441344 }
13451345 gs._1
13461346 }
13471347
13481348
13491349 let ho = [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]
13501350
13511351 let hp = ["A", "B", "C", "D", "E", "F"]
13521352
13531353 func hq (hr,gE) = {
13541354 func hs (eO,dx) = {
13551355 let fy = eO._2
13561356 let ht = parseIntValue(dx)
13571357 let hd = if ((ht == 0))
13581358 then 0
13591359 else if ((ht >= (4 * gE)))
13601360 then (ht / gE)
13611361 else if ((ht > (3 * gE)))
13621362 then 3
13631363 else (((ht - 1) / gE) + 1)
13641364 $Tuple3((eO._1 :+ hd), (eO._2 + 1), (eO._3 + hd))
13651365 }
13661366
13671367 let gs = {
13681368 let eQ = hr
13691369 let eR = size(eQ)
13701370 let eS = $Tuple3(nil, 0, 0)
13711371 func eT (eU,eV) = if ((eV >= eR))
13721372 then eU
13731373 else hs(eU, eQ[eV])
13741374
13751375 func eW (eU,eV) = if ((eV >= eR))
13761376 then eU
13771377 else throw("List size exceeds 6")
13781378
13791379 eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6)
13801380 }
13811381 let hu = gs._1
13821382 let hv = value(indexOf(hu, max(hu)))
13831383 let hw = (gs._3 - 25)
13841384 func hx (eO,cZ) = {
13851385 let dC = if ((cZ == hv))
13861386 then (hu[cZ] - hw)
13871387 else hu[cZ]
13881388 let dN = if ((dC == 0))
13891389 then nil
13901390 else split(drop(toString(pow(10, 0, dC, 0, 0, DOWN)), 1), "")
13911391 let fX = hp[cZ]
13921392 func hy (hz,hA) = (hz :+ fX)
13931393
13941394 let hB = {
13951395 let eQ = dN
13961396 let eR = size(eQ)
13971397 let eS = nil
13981398 func hC (eU,eV) = if ((eV >= eR))
13991399 then eU
14001400 else hy(eU, eQ[eV])
14011401
14021402 func hD (eU,eV) = if ((eV >= eR))
14031403 then eU
14041404 else throw("List size exceeds 25")
14051405
14061406 hD(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(eS, 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)
14071407 }
14081408 (eO ++ hB)
14091409 }
14101410
14111411 let eZ = {
14121412 let eQ = cJ
14131413 let eR = size(eQ)
14141414 let eS = nil
14151415 func hC (eU,eV) = if ((eV >= eR))
14161416 then eU
14171417 else hx(eU, eQ[eV])
14181418
14191419 func hD (eU,eV) = if ((eV >= eR))
14201420 then eU
14211421 else throw("List size exceeds 6")
14221422
14231423 hD(hC(hC(hC(hC(hC(hC(eS, 0), 1), 2), 3), 4), 5), 6)
14241424 }
14251425 func hE (eO,fy) = (eO + eZ[fy])
14261426
14271427 let eQ = ho
14281428 let eR = size(eQ)
14291429 let eS = ""
14301430 func hF (eU,eV) = if ((eV >= eR))
14311431 then eU
14321432 else hE(eU, eQ[eV])
14331433
14341434 func hG (eU,eV) = if ((eV >= eR))
14351435 then eU
14361436 else throw("List size exceeds 25")
14371437
14381438 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(eS, 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)
14391439 }
14401440
14411441
14421442 func hH (hI) = {
14431443 let gr = split(valueOrElse(getString(hI), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
14441444 [toString(valueOrElse(parseInt(gr[bh]), 0)), if ((size(split(gr[bi], "_")) == aF))
14451445 then gr[bi]
14461446 else "0_0_0_0_0_0", if ((size(split(gr[bj], "_")) == aF))
14471447 then gr[bj]
14481448 else "0_0_0_0_0_0", gr[bk]]
14491449 }
14501450
14511451
14521452 func hJ (hK) = {
14531453 let fm = split(hK, "_")
14541454 ((aI * (parseIntValue(fm[1]) + 1)) * parseIntValue(fm[0]))
14551455 }
14561456
14571457
14581458 func hL (hM) = {
14591459 let hN = hM[bb]
14601460 func hO (eO,hP) = (eO + parseIntValue(hP))
14611461
14621462 func hQ (eO,hP) = {
14631463 let cZ = eO._1
14641464 let eH = (((parseIntValue(hP) + aX) - 1) / aX)
14651465 $Tuple2((cZ + 1), (eO._2 + (eH * cD)))
14661466 }
14671467
14681468 let hR = {
14691469 let eQ = split(hM[aZ], "_")
14701470 let eR = size(eQ)
14711471 let eS = 0
14721472 func eT (eU,eV) = if ((eV >= eR))
14731473 then eU
14741474 else hO(eU, eQ[eV])
14751475
14761476 func eW (eU,eV) = if ((eV >= eR))
14771477 then eU
14781478 else throw("List size exceeds 6")
14791479
14801480 eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6)
14811481 }
14821482 let hS = {
14831483 let eQ = split(hM[ba], "_")
14841484 let eR = size(eQ)
14851485 let eS = 0
14861486 func hC (eU,eV) = if ((eV >= eR))
14871487 then eU
14881488 else hO(eU, eQ[eV])
14891489
14901490 func hD (eU,eV) = if ((eV >= eR))
14911491 then eU
14921492 else throw("List size exceeds 6")
14931493
14941494 hD(hC(hC(hC(hC(hC(hC(eS, 0), 1), 2), 3), 4), 5), 6)
14951495 }
14961496 let hT = if ((hN == ""))
14971497 then 0
14981498 else ( let eQ = split_4C(hN, "_")
14991499 let eR = size(eQ)
15001500 let eS = $Tuple2(0, 0)
15011501 func hF (eU,eV) = if ((eV >= eR))
15021502 then eU
15031503 else hQ(eU, eQ[eV])
15041504
15051505 func hG (eU,eV) = if ((eV >= eR))
15061506 then eU
15071507 else throw("List size exceeds 50")
15081508
15091509 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(eS, 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
15101510 ((hR + hS) + hT)
15111511 }
15121512
15131513
15141514 func hU (hV,hW,hX) = {
15151515 let hK = ((toString(hW) + "_") + toString(hX))
15161516 let hY = hJ(hK)
15171517 let hZ = valueOrElse(getString(hV), (hK + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
15181518 let ia = split_4C(hZ, ":")
15191519 let ib = hL(ia)
15201520 let ic = if ((5 > size(ia)))
15211521 then makeString(["0", toString(ib), toString((hY - ib)), toString(hY)], "_")
15221522 else {
15231523 let id = split(ia[bc], "_")
15241524 let ie = parseIntValue(id[bd])
15251525 let if = if ((size(id) > 1))
15261526 then parseIntValue(id[be])
15271527 else ib
15281528 makeString([toString(ie), toString(if), toString(((hY - ie) - if)), toString(hY)], "_")
15291529 }
15301530 [ia[aY], if ((size(split(ia[aZ], "_")) == aF))
15311531 then ia[aZ]
15321532 else "0_0_0_0_0_0", if ((size(split(ia[ba], "_")) == aF))
15331533 then ia[ba]
15341534 else "0_0_0_0_0_0", ia[bb], ic]
15351535 }
15361536
15371537
15381538 func ig (hM) = {
15391539 let ih = hL(hM)
15401540 let ii = parseIntValue(split(hM[bc], "_")[bd])
15411541 ((hJ(hM[aY]) - ih) - ii)
15421542 }
15431543
15441544
15451545 func ij (ik,hM,il) = if ((size(ik) != 3))
15461546 then throw("cargoListStr should contain exactly 2 ':' separators")
15471547 else {
15481548 let im = split(ik[0], "_")
15491549 let in = split(ik[1], "_")
15501550 let io = if ((ik[2] == ""))
15511551 then nil
15521552 else split_4C(ik[2], "_")
15531553 if ((size(im) != aF))
15541554 then throw("All 6 resources should be passed")
15551555 else if ((size(in) != aF))
15561556 then throw("All 6 materials should be passed")
15571557 else {
15581558 let gW = ig(hM)
15591559 let ip = split(hM[aZ], "_")
15601560 let iq = split(hM[ba], "_")
15611561 let ir = if ((hM[bb] == ""))
15621562 then nil
15631563 else split_4C(hM[bb], "_")
15641564 let gU = split(il[bi], "_")
15651565 let is = split(il[bj], "_")
15661566 let it = if ((il[bk] == ""))
15671567 then nil
15681568 else split_4C(il[bk], "_")
15691569 func iu (eO,hP) = {
15701570 let gH = eO._1
15711571 let iv = parseIntValue(hP)
15721572 let iw = parseIntValue(ip[gH])
15731573 let ix = parseIntValue(gU[gH])
15741574 if ((iv == 0))
15751575 then $Tuple4((gH + 1), (eO._2 :+ ip[gH]), (eO._3 :+ gU[gH]), eO._4)
15761576 else if ((iv > 0))
15771577 then if ((iv > ix))
15781578 then throw((((("Attempt to take " + hP) + " from backpack, but only ") + toString(ix)) + " available"))
15791579 else $Tuple4((gH + 1), (eO._2 :+ toString((iw + iv))), (eO._3 :+ toString((ix - iv))), (eO._4 + iv))
15801580 else if ((-(iv) > iw))
15811581 then throw((((("Attempt to take " + toString(-(iv))) + " from warehouse, but only ") + toString(iw)) + " available"))
15821582 else $Tuple4((gH + 1), (eO._2 :+ toString((iw + iv))), (eO._3 :+ toString((ix - iv))), (eO._4 + iv))
15831583 }
15841584
15851585 let eZ = {
15861586 let eQ = im
15871587 let eR = size(eQ)
15881588 let eS = $Tuple4(0, nil, nil, 0)
15891589 func eT (eU,eV) = if ((eV >= eR))
15901590 then eU
15911591 else iu(eU, eQ[eV])
15921592
15931593 func eW (eU,eV) = if ((eV >= eR))
15941594 then eU
15951595 else throw("List size exceeds 6")
15961596
15971597 eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6)
15981598 }
15991599 func iy (eO,hP) = {
16001600 let gH = eO._1
16011601 let iv = parseIntValue(hP)
16021602 let iz = parseIntValue(iq[gH])
16031603 let iA = parseIntValue(is[gH])
16041604 if ((iv == 0))
16051605 then $Tuple4((gH + 1), (eO._2 :+ iq[gH]), (eO._3 :+ is[gH]), eO._4)
16061606 else if ((iv > 0))
16071607 then if ((iv > iA))
16081608 then throw((((("Attempt to take " + hP) + " from backpack, but only ") + toString(iA)) + " available"))
16091609 else $Tuple4((gH + 1), (eO._2 :+ toString((iz + iv))), (eO._3 :+ toString((iA - iv))), (eO._4 + iv))
16101610 else if ((-(iv) > iz))
16111611 then throw((((("Attempt to take " + toString(-(iv))) + " from warehouse, but only ") + toString(iz)) + " available"))
16121612 else $Tuple4((gH + 1), (eO._2 :+ toString((iz + iv))), (eO._3 :+ toString((iA - iv))), (eO._4 + iv))
16131613 }
16141614
16151615 let gn = {
16161616 let eQ = in
16171617 let eR = size(eQ)
16181618 let eS = $Tuple4(0, nil, nil, eZ._4)
16191619 func hC (eU,eV) = if ((eV >= eR))
16201620 then eU
16211621 else iy(eU, eQ[eV])
16221622
16231623 func hD (eU,eV) = if ((eV >= eR))
16241624 then eU
16251625 else throw("List size exceeds 6")
16261626
16271627 hD(hC(hC(hC(hC(hC(hC(eS, 0), 1), 2), 3), 4), 5), 6)
16281628 }
16291629 func iB (eO,hP) = {
16301630 let gH = eO._1
16311631 let iv = parseIntValue(hP)
16321632 let iC = if ((size(ir) > gH))
16331633 then parseIntValue(ir[gH])
16341634 else 0
16351635 let iD = if ((size(it) > gH))
16361636 then parseIntValue(it[gH])
16371637 else 0
16381638 if ((iv == 0))
16391639 then $Tuple4((gH + 1), (eO._2 :+ toString(iC)), (eO._3 :+ toString(iD)), eO._4)
16401640 else if ((iv > 0))
16411641 then if ((iv > iD))
16421642 then throw((((("Attempt to take " + hP) + " from backpack, but only ") + toString(iD)) + " available"))
16431643 else {
16441644 let fQ = (eE((iC + iv), aX) - eE(iC, aX))
16451645 $Tuple4((gH + 1), (eO._2 :+ toString((iC + iv))), (eO._3 :+ toString((iD - iv))), (eO._4 + fQ))
16461646 }
16471647 else if ((-(iv) > iC))
16481648 then throw((((("Attempt to take " + toString(-(iv))) + " from warehouse, but only ") + toString(iC)) + " available"))
16491649 else {
16501650 let fQ = (eE((iC + iv), aX) - eE(iC, aX))
16511651 $Tuple4((gH + 1), (eO._2 :+ toString((iC + iv))), (eO._3 :+ toString((iD - iv))), (eO._4 + fQ))
16521652 }
16531653 }
16541654
16551655 let gr = if ((size(io) != 0))
16561656 then {
16571657 let eQ = io
16581658 let eR = size(eQ)
16591659 let eS = $Tuple4(0, nil, nil, gn._4)
16601660 func hF (eU,eV) = if ((eV >= eR))
16611661 then eU
16621662 else iB(eU, eQ[eV])
16631663
16641664 func hG (eU,eV) = if ((eV >= eR))
16651665 then eU
16661666 else throw("List size exceeds 50")
16671667
16681668 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(eS, 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)
16691669 }
16701670 else $Tuple4(0, ir, it, gn._4)
16711671 let iE = gr._4
16721672 if ((iE > gW))
16731673 then throw((((("Attempt to put total " + toString(iE)) + " stuff, but only ") + toString(gW)) + " warehouse space left"))
16741674 else $Tuple7(makeString(eZ._2, "_"), makeString(gn._2, "_"), makeString_2C(gr._2, "_"), makeString(eZ._3, "_"), makeString(gn._3, "_"), makeString_2C(gr._3, "_"), iE)
16751675 }
16761676 }
16771677
16781678
16791679 func iF (iG,iH) = {
16801680 let bL = toString(iG)
16811681 let iI = hc(toBigInt(iH))
16821682 let iJ = valueOrElse(getInteger(em()), (el + 1))
16831683 let eq = toString(iJ)
16841684 let hl = toInt((iI % ef))
16851685 let gK = hj(iI, hl)
16861686 let ds = aP[hl]
16871687 let iK = Issue(eD(eq, "S"), makeString([eq, "S", gK, ds], "_"), 1, 0, false)
16881688 let bp = calculateAssetId(iK)
16891689 let iL = toBase58String(bp)
16901690 $Tuple2([IntegerEntry(em(), (iJ + 1)), iK, StringEntry(ep(eq), iL), StringEntry(bo(iL), bL), StringEntry(es(eq), bL), IntegerEntry(by(iL), 0), IntegerEntry(er(iL, bL), 0), ScriptTransfer(iG, 1, bp)], $Tuple2(iL, ds))
16911691 }
16921692
16931693
16941694 func iM (bL,iN,iO) = if (!(sigVerify_8Kb(iN, iO, dW)))
16951695 then throw("signature does not match")
16961696 else {
16971697 let fm = split_4C(toUtf8String(iN), ";")
16981698 let iP = split_4C(fm[0], "|")
16991699 let iQ = split(iP[ez], "_")
17001700 let iR = parseIntValue(iQ[0])
17011701 let iS = parseIntValue(iQ[1])
17021702 let iT = split(fm[1], ":")
17031703 let iU = iT[0]
17041704 let iV = parseIntValue(iP[eA])
17051705 if (if ((iV > (lastBlock.timestamp + dY)))
17061706 then true
17071707 else ((lastBlock.timestamp - dY) > iV))
17081708 then throw(((("signature outdated: logTime=" + toString(iV)) + ", bcTime=") + toString(lastBlock.timestamp)))
17091709 else {
17101710 let iW = iT[1]
17111711 let iX = valueOrElse(getString(dI(bL)), "")
17121712 if ((iX != iW))
17131713 then throw(((("Tx ids don't match! In state: " + iX) + ", in msg: ") + iW))
17141714 else {
17151715 let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked")
17161716 let iY = z(A)
17171717 let iZ = ag(valueOrElse(getInteger(D(A)), 0))
17181718 let ja = valueOrElse(getInteger(iY), iZ)
17191719 if ((ja != iR))
17201720 then throw(((("oldHealth=" + toString(ja)) + " from state does not match one from flight log=") + toString(iR)))
17211721 else if ((0 >= iR))
17221722 then throw("You can't fly with zero health")
17231723 else if (!(gt(A)))
17241724 then throw("Equipment incompatible")
17251725 else {
17261726 let jb = if ((size(iP) > eB))
17271727 then iP[eB]
17281728 else ""
17291729 let jc = if ((size(iP) > eC))
17301730 then iP[eC]
17311731 else ""
17321732 let jd = if (if ((iS > 0))
17331733 then (jb == "$")
17341734 else false)
17351735 then dy(invoke(da, "sendUsdtPrize", [bL], nil))
17361736 else 0
17371737 $Tuple5(iS, A, jd, iU, jc)
17381738 }
17391739 }
17401740 }
17411741 }
17421742
17431743
17441744 func je (P,jf) = {
17451745 let hX = valueOrElse(getInteger(by(P)), 0)
17461746 let jg = valueOrElse(getInteger(bs(aE, P)), 0)
17471747 let jh = (hX / 6)
17481748 let ji = (hX / 7)
17491749 ((aH + fraction(aH, ((hX + jh) + (2 * ji)), 5)) + fraction(aH, jg, (jf * 5)))
17501750 }
17511751
17521752
17531753 func jj (c,jk,jl) = {
17541754 let jm = if ((jk == ew))
17551755 then $Tuple2(jl, valueOrElse(getString(bH(c)), ""))
17561756 else {
17571757 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
17581758 let jn = valueOrElse(getString(bJ(A)), aJ)
17591759 let cf = split(value(jn), "_")
17601760 if ((cf[bm] != "L"))
17611761 then throw((("Duck location type is " + cf[bm]) + ", but should be L"))
17621762 else $Tuple2(cf[bn], A)
17631763 }
17641764 let P = jm._1
17651765 let jo = jm._2
17661766 let jp = value(assetInfo(fromBase58String(P)))
17671767 let jq = br(P)
17681768 let jr = valueOrErrorMessage(getInteger(jq), (("Land " + jp.name) + " is not staked"))
17691769 let js = valueOrErrorMessage(getString(bo(P)), (("NFT " + jp.name) + " is orphaned"))
17701770 if ((js != c))
17711771 then throw((aC + " is not yours"))
17721772 else {
17731773 let jt = split(jp.description, "_")
17741774 $Tuple4(jo, P, jt, jr)
17751775 }
17761776 }
17771777
17781778
17791779 func ju (c,eF,jk,jl) = if ((0 > eF))
17801780 then throw("Negative amount")
17811781 else {
17821782 let fX = jj(c, jk, jl)
17831783 let dF = fX._3[dh]
17841784 let gD = gJ(fX._3[di])
17851785 let gN = (lastBlock.timestamp - fX._4)
17861786 if ((0 > gN))
17871787 then throw(((("Saved timestamp is in future, saved = " + toString(fX._4)) + ", current = ") + toString(lastBlock.timestamp)))
17881788 else {
17891789 let jf = dE(dF)
17901790 let jv = je(fX._2, jf)
17911791 let jw = fraction(gN, (jv * jf), a)
17921792 if ((eF > jw))
17931793 then throw(((("Not enough resources, available = " + toString(jw)) + ", requested = ") + toString(eF)))
17941794 else {
17951795 let jx = fraction((jw - eF), a, (jv * jf))
17961796 let jy = (lastBlock.timestamp - jx)
17971797 let hW = (jf / cE)
17981798 let gV = gR(gD, (gN - jx), hW, jv)
17991799 let hV = bx(fX._2)
18001800 let hX = valueOrElse(getInteger(by(fX._2)), 0)
18011801 let hM = hU(hV, hW, hX)
18021802 let id = split(hM[bc], "_")
18031803 let gW = parseIntValue(id[bf])
18041804 if (if ((jk == ew))
18051805 then (eF > gW)
18061806 else false)
18071807 then throw((("Only " + toString(gW)) + " space left in warehouse"))
18081808 else {
18091809 let hI = bI(fX._1)
18101810 let il = hH(hI)
18111811 let gU = split(il[bi], "_")
18121812 let gT = split(hM[aZ], "_")
18131813 let jz = if ((jk == ew))
18141814 then $Tuple4(gL(gT, gD, (gN - jx), hW, jv), il[bi], (parseIntValue(id[be]) + gV._2), (parseIntValue(id[bf]) - gV._2))
18151815 else if ((jk == ex))
18161816 then $Tuple4(hM[aZ], gL(gU, gD, (gN - jx), hW, jv), parseIntValue(id[be]), parseIntValue(id[bf]))
18171817 else {
18181818 let jA = gS(gT, gU, gV, gW)
18191819 let jB = min([parseIntValue(id[bf]), gV._2])
18201820 $Tuple4(jA._1, jA._2, (parseIntValue(id[be]) + jB), (parseIntValue(id[bf]) - jB))
18211821 }
18221822 let jC = jz._1
18231823 let jD = jz._2
18241824 let jE = jz._3
18251825 let jF = jz._4
18261826 $Tuple5([IntegerEntry(br(fX._2), jy), IntegerEntry(bu(aC, fX._2, c), jy)], hI, [il[bh], jD, il[bj], il[bk]], hV, [hM[aY], jC, hM[ba], hM[bb], makeString([id[bd], toString(jE), toString(jF), id[bg]], "_")])
18271827 }
18281828 }
18291829 }
18301830 }
18311831
18321832
18331833 func jG (c,P,jf,jk) = {
18341834 let jq = br(P)
18351835 let jr = value(getInteger(jq))
18361836 let jw = (fraction((lastBlock.timestamp - jr), je(P, jf), a) * jf)
18371837 ju(c, jw, jk, P)
18381838 }
18391839
18401840
18411841 func jH (fb,iG,jI,P) = {
18421842 let c = toString(iG)
18431843 let fX = jj(c, ey, P)
18441844 let jf = dE(fX._3[dh])
18451845 let jJ = by(fX._2)
18461846 let jK = valueOrElse(getInteger(jJ), 0)
18471847 if (if (!(ct))
18481848 then (jK >= 3)
18491849 else false)
18501850 then throw("Currently max infrastructure level = 3")
18511851 else {
18521852 let jL = ((sqrt(jf, 0, 0, DOWN) / 5) + 2)
18531853 let al = (jK + 1)
18541854 if (if (ct)
18551855 then (al > jL)
18561856 else false)
18571857 then throw(("Currently max infrastructure level = " + toString(jL)))
18581858 else {
18591859 let jM = fraction(eb, (jf * al), cE)
18601860 if (if (!(fb))
18611861 then (jI != jM)
18621862 else false)
18631863 then throw(("Payment attached should be " + toString(jM)))
18641864 else {
18651865 let hI = bI(fX._1)
18661866 let il = hH(hI)
18671867 let jN = split(il[bj], "_")
18681868 let jO = fraction(cz, (jf * al), cE)
18691869 let jP = makeString(fa(fb, jN, jO), "_")
18701870 let jQ = jG(c, fX._2, jf, ey)
18711871 let jR = jQ._5
18721872 let jS = hJ(jR[aY])
18731873 let jT = makeString([split(jR[aY], "_")[0], toString(al)], "_")
18741874 let jU = hJ(jT)
18751875 let id = split(jR[bc], "_")
18761876 let jV = makeString([id[bd], id[be], toString(((parseIntValue(id[bf]) + jU) - jS)), toString(jU)], "_")
18771877 $Tuple3(([IntegerEntry(jJ, al), IntegerEntry(er(fX._2, c), al), StringEntry(hI, makeString([il[bh], jQ._3[bi], jP, il[bk]], ":")), StringEntry(jQ._4, makeString([jT, jR[aZ], jR[ba], jR[bb], jV], ":"))] ++ jQ._1), al, jO)
18781878 }
18791879 }
18801880 }
18811881 }
18821882
18831883
18841884 func jW (A,jX) = {
18851885 let jY = D(A)
18861886 let jZ = C(A)
18871887 let af = valueOrElse(getInteger(an, jZ), 0)
18881888 let ak = (af + jX)
18891889 let ka = ai(valueOrElse(getInteger(an, jY), 0), ak)
18901890 let kb = E(A)
18911891 $Tuple2([IntegerEntry(jY, ka[0]), IntegerEntry(jZ, ak), IntegerEntry(kb, (valueOrElse(getInteger(kb), 0) + ka[1]))], ak)
18921892 }
18931893
18941894
18951895 func kc (c,jX) = {
18961896 let jY = H(c)
18971897 let jZ = G(c)
18981898 let af = valueOrElse(getInteger(an, jZ), 0)
18991899 let ak = (af + jX)
19001900 let ka = ai(valueOrElse(getInteger(an, jY), 0), ak)
19011901 let kb = I(c)
19021902 $Tuple2([IntegerEntry(jY, ka[0]), IntegerEntry(jZ, ak), IntegerEntry(kb, (valueOrElse(getInteger(kb), 0) + ka[1]))], ak)
19031903 }
19041904
19051905
19061906 func kd (c) = {
19071907 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
19081908 let ke = bC(c)
19091909 let kf = getString(ke)
19101910 if (!(isDefined(kf)))
19111911 then throw("You are not eligible for ONBOARD artifact")
19121912 else {
19131913 let kg = bE(c)
19141914 let kh = getString(kg)
19151915 if (isDefined(kh))
19161916 then throw(("You already used your ONBOARD artifact on duck " + value(kh)))
19171917 else {
19181918 let ki = bD(A)
19191919 let kj = getString(ki)
19201920 if (isDefined(kj))
19211921 then throw(((("The duck " + A) + " already got points from ONBOARD artifact from user ") + value(kj)))
19221922 else ([StringEntry(kg, A), StringEntry(ki, c)] ++ jW(A, ac)._1)
19231923 }
19241924 }
19251925 }
19261926
19271927
19281928 func kk (c,jl) = {
19291929 let fX = jj(c, ey, jl)
19301930 let P = fX._2
19311931 let jf = dE(fX._3[dh])
19321932 let kl = bs(aE, P)
19331933 if ((valueOrElse(getInteger(kl), 0) > 0))
19341934 then throw("Presale artifact is already activated")
19351935 else if ((parseIntValue(fX._3[dg]) > el))
19361936 then throw((((aC + " ") + P) + " is not eligible for presale artifact"))
19371937 else {
19381938 let jQ = jG(c, P, jf, ey)
19391939 (((jQ._1 :+ IntegerEntry(kl, jf)) :+ StringEntry(jQ._2, makeString(jQ._3, ":"))) :+ StringEntry(jQ._4, makeString(jQ._5, ":")))
19401940 }
19411941 }
19421942
19431943
19441944 func km (A) = {
19451945 let ce = valueOrElse(getInteger(de, bP), 0)
19461946 let jn = split(valueOrElse(getString(bJ(A)), aJ), "_")
19471947 let ax = lastBlock.timestamp
19481948 let cg = bY(de, ce)
19491949 let ca = cg[bU]
19501950 let cb = cg[bV]
19511951 if ((jn[bm] != "T"))
19521952 then false
19531953 else if (if (if ((parseIntValue(jn[bl]) == ce))
19541954 then (cb[bX] == "INPROGRESS")
19551955 else false)
19561956 then (parseIntValue(ca[bW]) > ax)
19571957 else false)
19581958 then throw("Your duck is taking part in the tournament")
19591959 else dA(invoke(this, "exitTournamentInternal", [A], nil))
19601960 }
19611961
19621962
19631963 func kn (A) = {
19641964 let jn = split(valueOrElse(getString(bJ(A)), aJ), "_")
19651965 let ax = lastBlock.timestamp
19661966 if ((jn[bm] != "D"))
19671967 then false
19681968 else {
19691969 let ci = parseIntValue(jn[bl])
19701970 let cj = parseIntValue(jn[bn])
19711971 if (if ((ax > (ci + aN)))
19721972 then (3 > cj)
19731973 else false)
19741974 then throw("Your duck is on delivery mission")
19751975 else dA(invoke(this, "exitDeliveryInternal", [A], nil))
19761976 }
19771977 }
19781978
19791979
19801980 func ko (A) = {
19811981 let jn = split(valueOrElse(getString(bJ(A)), aJ), "_")
19821982 let ax = lastBlock.timestamp
19831983 let ci = parseIntValue(jn[bl])
19841984 let cj = parseIntValue(jn[bn])
19851985 let js = valueOrErrorMessage(getString(bG(A)), "NFT duck is orphaned")
19861986 let kp = z(A)
19871987 let kq = getIntegerValue(kp)
19881988 let kr = if ((cj >= 3))
19891989 then {
19901990 let ks = invoke(db, "sendDeliveryReward", [js], nil)
19911991 if ((ks == ks))
19921992 then nil
19931993 else throw("Strict value is not equal to itself.")
19941994 }
19951995 else if ((ax > (ci + aN)))
19961996 then throw("Your duck is still on delivery mission")
19971997 else {
19981998 let kt = valueOrElse(getInteger(db, bO), 0)
19991999 let ku = invoke(db, "updateDeliveryLocked", [(kt - aM)], nil)
20002000 if ((ku == ku))
20012001 then if ((0 >= kq))
20022002 then nil
20032003 else [IntegerEntry(T(A), (ci + a))]
20042004 else throw("Strict value is not equal to itself.")
20052005 }
20062006 let kv = getIntegerValue(J(A))
20072007 let kw = getStringValue(K(A))
20082008 $Tuple4(kr, [IntegerEntry(kp, kv), StringEntry(bJ(A), kw)], kw, kv)
20092009 }
20102010
20112011
20122012 func kx (ky,al,kz,c,kA,kB) = {
20132013 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
20142014 if (km(A))
20152015 then throw("mergeInternal_checkTournament")
20162016 else if (kn(A))
20172017 then throw("mergeInternal_checkDelivery")
20182018 else {
20192019 func kC (eO,P) = {
20202020 let jp = value(assetInfo(fromBase58String(P)))
20212021 let jq = br(P)
20222022 let jr = valueOrErrorMessage(getInteger(jq), (("NFT " + jp.name) + " is not staked"))
20232023 let js = valueOrErrorMessage(getString(bo(P)), (("NFT " + jp.name) + " is orphaned"))
20242024 if ((js != c))
20252025 then throw((aC + " is not yours"))
20262026 else {
20272027 let jt = split(jp.description, "_")
20282028 let ds = jt[dj]
20292029 if (if ((eO._3 != ""))
20302030 then (eO._3 != ds)
20312031 else false)
20322032 then throw("Lands should be on the same continent to merge")
20332033 else {
20342034 let dF = jt[dh]
20352035 let kD = eO._1
20362036 let gH = valueOrErrorMessage(indexOf(kD, dF), "You haven't passed all the lands needed")
20372037 let kE = (take(kD, gH) + drop(kD, (gH + 1)))
20382038 let jf = dE(dF)
20392039 let kF = (eO._2 + valueOrElse(getInteger(bs(aE, P)), 0))
20402040 let hX = valueOrElse(getInteger(by(P)), 0)
20412041 let kG = {
20422042 let cx = dF
20432043 if (("S" == cx))
20442044 then 3
20452045 else if (("M" == cx))
20462046 then 4
20472047 else if (("L" == cx))
20482048 then 5
20492049 else if (("XL" == cx))
20502050 then 6
20512051 else throw("Only S, M, L, XL can merge")
20522052 }
20532053 if ((hX != kG))
20542054 then throw("All lands should be maxed to merge")
20552055 else {
20562056 let eq = jt[dg]
20572057 let gD = gJ(jt[di])
20582058 let gN = (lastBlock.timestamp - jr)
20592059 if ((0 > gN))
20602060 then throw(((("Saved timestamp is in future, saved = " + toString(jr)) + ", current = ") + toString(lastBlock.timestamp)))
20612061 else {
20622062 let jv = je(P, jf)
20632063 let hW = (jf / cE)
20642064 let jD = gL(split(eO._4, "_"), gD, gN, hW, jv)
20652065 let eY = gB(eO._6, gD, hW, -1)
20662066 let kH = gB(eO._10, gD, hW, -1)
20672067 let hr = gB(eO._9, gD, hW, 1)
20682068 let kI = eO._7
20692069 let cZ = indexOf(kI, P)
20702070 if (!(isDefined(cZ)))
20712071 then throw(("Your staked lands don't contain " + P))
20722072 else {
20732073 let kJ = bq(P)
20742074 let kK = valueOrElse(getString(kJ), "")
20752075 $Tuple10(kE, kF, ds, jD, ((((((((((((eO._5 :+ DeleteEntry(br(P))) :+ DeleteEntry(bu(aC, P, c))) :+ DeleteEntry(ep(eq))) :+ DeleteEntry(bo(P))) :+ DeleteEntry(by(P))) :+ DeleteEntry(er(P, c))) :+ DeleteEntry(bs(aE, P))) :+ DeleteEntry(es(eq))) :+ DeleteEntry(bx(P))) :+ DeleteEntry(kJ)) :+ Burn(fromBase58String(P), 1)) ++ (if ((kK != ""))
20762076 then [DeleteEntry(en(kK))]
20772077 else nil)), eY, removeByIndex(kI, value(cZ)), (eO._8 + jf), hr, kH)
20782078 }
20792079 }
20802080 }
20812081 }
20822082 }
20832083 }
20842084
20852085 let hI = bI(A)
20862086 let il = hH(hI)
20872087 let gC = split(valueOrElse(getString(dq()), "0_0_0_0_0_0"), "_")
20882088 let kL = dt(c)
20892089 let kM = getString(kL)
20902090 let kN = if (isDefined(kM))
20912091 then split_51C(value(kM), "_")
20922092 else nil
20932093 let kO = split(value(assetInfo(fromBase58String(kA[0]))).description, "_")[dj]
20942094 let kP = split(valueOrElse(getString(dr(kO)), "0_0_0_0_0_0"), "_")
20952095 let eZ = {
20962096 let eQ = kA
20972097 let eR = size(eQ)
20982098 let eS = $Tuple10(kz, 0, "", il[bi], nil, gC, kN, 0, split("0_0_0_0_0_0", "_"), kP)
20992099 func eT (eU,eV) = if ((eV >= eR))
21002100 then eU
21012101 else kC(eU, eQ[eV])
21022102
21032103 func eW (eU,eV) = if ((eV >= eR))
21042104 then eU
21052105 else throw("List size exceeds 5")
21062106
21072107 eW(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5)
21082108 }
21092109 let ds = eZ._3
21102110 let hl = valueOrErrorMessage(indexOf(aP, ds), ("Unknown continent: " + ds))
21112111 let gK = hq(eZ._9, (dE(ky) / cE))
21122112 let iJ = valueOrElse(getInteger(em()), (el + 1))
21132113 let kQ = toString(iJ)
21142114 let iK = Issue(eD(kQ, ky), makeString([kQ, ky, gK, ds], "_"), 1, 0, false)
21152115 let bp = calculateAssetId(iK)
21162116 let kR = toBase58String(bp)
21172117 let jP = makeString(fa((kB > 0), split(il[bj], "_"), kB), "_")
21182118 let kS = du(c)
21192119 let kT = valueOrElse(getInteger(kS), 0)
21202120 $Tuple2((((((((((((((((eZ._5 :+ (if ((size(eZ._7) > 0))
21212121 then StringEntry(kL, makeString_11C(eZ._7, "_"))
21222122 else DeleteEntry(kL))) :+ IntegerEntry(kS, if ((eZ._8 > kT))
21232123 then 0
21242124 else (kT - eZ._8))) :+ IntegerEntry(em(), (iJ + 1))) :+ iK) :+ StringEntry(ep(kQ), kR)) :+ StringEntry(bo(kR), c)) :+ StringEntry(es(kQ), c)) :+ IntegerEntry(bs(aE, kR), eZ._2)) :+ IntegerEntry(by(kR), al)) :+ IntegerEntry(er(kR, c), al)) :+ StringEntry(hI, makeString([il[bh], eZ._4, jP, il[bk]], ":"))) :+ StringEntry(dq(), makeString(eZ._6, "_"))) :+ StringEntry(dr(ds), makeString(eZ._10, "_"))) :+ StringEntry(bJ(A), makeString([ds, "L", kR], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bp)), kR)
21252125 }
21262126 }
21272127
21282128
21292129 func kU (c,kA) = kx("M", 3, "SSSS", c, kA, 0)
21302130
21312131
21322132 func kV (c,kA) = kx("L", 4, "SMM", c, kA, (cz * 4))
21332133
21342134
21352135 func kW (c,kA) = kx("XL", 5, "SSSML", c, kA, (cz * 47))
21362136
21372137
21382138 func kX (c,kA) = kx("XXL", 6, "LXL", c, kA, (cz * 54))
21392139
21402140
21412141 func kY (c,kA) = {
21422142 let cx = size(kA)
21432143 if ((4 == cx))
21442144 then kU(c, kA)
21452145 else if ((3 == cx))
21462146 then kV(c, kA)
21472147 else if ((5 == cx))
21482148 then kW(c, kA)
21492149 else if ((2 == cx))
21502150 then kX(c, kA)
21512151 else throw("Unknown merge")
21522152 }
21532153
21542154
21552155 func kZ (gH) = if (if ((gH.originCaller != da))
21562156 then valueOrElse(getBoolean(dH()), false)
21572157 else false)
21582158 then throw("Contracts are under maintenance")
21592159 else StringEntry(dI(toString(gH.originCaller)), toBase58String(gH.transactionId))
21602160
21612161
21622162 @Callable(gH)
21632163 func constructorV1 (la) = if ((gH.caller != this))
21642164 then throw("Permission denied")
21652165 else [StringEntry(cU(), la)]
21662166
21672167
21682168
21692169 @Callable(gH)
21702170 func setBlocked (lb) = if ((gH.caller != this))
21712171 then throw("permission denied")
21722172 else [BooleanEntry(dH(), lb)]
21732173
21742174
21752175
21762176 @Callable(gH)
21772177 func stakeLand () = {
21782178 let lc = kZ(gH)
21792179 if ((size(gH.payments) != 1))
21802180 then throw("Exactly one payment required")
21812181 else {
21822182 let ld = value(gH.payments[0])
21832183 let bp = value(ld.assetId)
21842184 let cL = toString(gH.caller)
21852185 if ((ld.amount != 1))
21862186 then throw((("NFT " + aC) + " token should be attached as payment"))
21872187 else {
21882188 let jp = value(assetInfo(bp))
21892189 if ((jp.issuer != this))
21902190 then throw("Unknown issuer of token")
21912191 else if (!(contains(jp.name, aC)))
21922192 then throw((("Only NFT " + aC) + " tokens are accepted"))
21932193 else {
21942194 let le = drop(jp.name, 4)
21952195 let eq = if (contains(le, "XXL"))
21962196 then dropRight(le, 3)
21972197 else if (contains(le, "XL"))
21982198 then dropRight(le, 2)
21992199 else dropRight(le, 1)
22002200 if (!(isDefined(parseInt(eq))))
22012201 then throw(("Cannot parse land number from " + jp.name))
22022202 else {
22032203 let P = toBase58String(bp)
22042204 let jq = br(P)
22052205 if (isDefined(getInteger(jq)))
22062206 then throw((("NFT " + jp.name) + " is already staked"))
22072207 else {
22082208 let jt = split(jp.description, "_")
22092209 let gD = gJ(jt[di])
22102210 let jf = dE(jt[dh])
22112211 let hW = (jf / cE)
22122212 let eY = gI(gD, hW, 1)
22132213 let lf = dr(jt[dj])
22142214 let kP = split(valueOrElse(getString(lf), "0_0_0_0_0_0"), "_")
22152215 let lg = makeString(gB(kP, gD, hW, 1), "_")
22162216 let kL = dt(cL)
22172217 let kM = getString(kL)
22182218 let kI = if (isDefined(kM))
22192219 then split_51C(value(kM), "_")
22202220 else nil
22212221 if (containsElement(kI, P))
22222222 then throw(("Your staked lands already contain " + P))
22232223 else if ((size(kI) >= aG))
22242224 then throw((("Your already staked max (" + toString(aG)) + ") lands"))
22252225 else {
22262226 let hX = valueOrElse(getInteger(by(P)), 0)
22272227 let kS = du(cL)
22282228 let lh = valueOrElse(getInteger(kS), 0)
22292229 let li = invoke(dd, "onStakeUnstakeLand", [cL], nil)
22302230 $Tuple2([IntegerEntry(jq, lastBlock.timestamp), IntegerEntry(bu(aC, P, cL), lastBlock.timestamp), StringEntry(kL, makeString_11C((kI :+ P), "_")), IntegerEntry(kS, (lh + jf)), StringEntry(bo(P), cL), StringEntry(es(eq), cL), IntegerEntry(er(P, cL), hX), StringEntry(dq(), eY), StringEntry(lf, lg), lc], li)
22312231 }
22322232 }
22332233 }
22342234 }
22352235 }
22362236 }
22372237 }
22382238
22392239
22402240
22412241 @Callable(gH)
22422242 func unstakeLand (jl) = {
22432243 let lc = kZ(gH)
22442244 if ((size(gH.payments) != 0))
22452245 then throw("No payments required")
22462246 else {
22472247 let c = toString(gH.caller)
22482248 let fX = jj(c, ex, jl)
22492249 let P = fX._2
22502250 let jt = fX._3
22512251 let kL = dt(c)
22522252 let gD = gJ(jt[di])
22532253 let jf = dE(jt[dh])
22542254 let hW = (jf / cE)
22552255 let eY = gI(gD, hW, -1)
22562256 let lf = dr(jt[dj])
22572257 let kP = split(valueOrElse(getString(lf), "0_0_0_0_0_0"), "_")
22582258 let lg = makeString(gB(kP, gD, hW, -1), "_")
22592259 let jQ = jG(c, P, jf, ex)
22602260 let kI = split_51C(valueOrElse(getString(kL), ""), "_")
22612261 let cZ = indexOf(kI, P)
22622262 if (!(isDefined(cZ)))
22632263 then throw(("Your staked lands don't contain " + P))
22642264 else {
22652265 let ax = lastBlock.timestamp
22662266 let lj = valueOrElse(getInteger(dc, bK(c)), 0)
22672267 if ((lj >= ax))
22682268 then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lj)))
22692269 else {
22702270 let lk = (valueOrElse(getInteger(dd, b(c)), 0) + cA)
22712271 if ((lk > ax))
22722272 then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lk)))
22732273 else {
22742274 let kS = du(c)
22752275 let kT = valueOrElse(getInteger(kS), 0)
22762276 let ll = if ((jf > kT))
22772277 then 0
22782278 else (kT - jf)
22792279 let li = invoke(dd, "onStakeUnstakeLand", [c], nil)
22802280 $Tuple2([ScriptTransfer(gH.caller, 1, fromBase58String(P)), DeleteEntry(br(P)), DeleteEntry(bu(aC, P, c)), StringEntry(dq(), eY), StringEntry(lf, lg), StringEntry(jQ._2, makeString(jQ._3, ":")), if ((size(kI) > 1))
22812281 then StringEntry(kL, makeString_11C(removeByIndex(kI, value(cZ)), "_"))
22822282 else DeleteEntry(kL), IntegerEntry(kS, ll), lc], li)
22832283 }
22842284 }
22852285 }
22862286 }
22872287 }
22882288
22892289
22902290
22912291 @Callable(gH)
22922292 func stakeDuck () = {
22932293 let lc = kZ(gH)
22942294 if ((size(gH.payments) != 1))
22952295 then throw("Exactly one payment required")
22962296 else {
22972297 let ld = value(gH.payments[0])
22982298 let bp = value(ld.assetId)
22992299 let cL = toString(gH.caller)
23002300 if ((ld.amount != 1))
23012301 then throw((("NFT " + aD) + " token should be attached as payment"))
23022302 else {
23032303 let jp = value(assetInfo(bp))
23042304 if (if ((jp.issuer != dU))
23052305 then (jp.issuer != dV)
23062306 else false)
23072307 then throw((("Unknown issuer of " + aD) + " token"))
23082308 else if (!(contains(jp.name, aD)))
23092309 then throw((("Only NFT " + aD) + " tokens are accepted"))
23102310 else {
23112311 let lm = toBase58String(bp)
23122312 let jq = br(lm)
23132313 if (isDefined(getInteger(jq)))
23142314 then throw((("NFT " + jp.name) + " is already staked"))
23152315 else if (isDefined(getString(bH(cL))))
23162316 then throw(("You already staked one duck: " + jp.name))
23172317 else {
23182318 let ln = bJ(lm)
23192319 let cd = getString(ln)
23202320 let hI = bI(lm)
23212321 let lo = getString(hI)
23222322 let iY = z(lm)
23232323 let iZ = ag(valueOrElse(getInteger(D(lm)), 0))
23242324 let kq = valueOrElse(getInteger(iY), iZ)
23252325 ([IntegerEntry(jq, lastBlock.timestamp), IntegerEntry(bu(aD, toBase58String(bp), cL), lastBlock.timestamp), StringEntry(bG(lm), cL), StringEntry(bH(cL), lm)] ++ (if (isDefined(cd))
23262326 then nil
23272327 else ([StringEntry(ln, aJ)] ++ (if (isDefined(lo))
23282328 then nil
23292329 else (([StringEntry(hI, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iY, kq)) :+ lc)))))
23302330 }
23312331 }
23322332 }
23332333 }
23342334 }
23352335
23362336
23372337
23382338 @Callable(gH)
23392339 func unstakeDuck (lm) = {
23402340 let lc = kZ(gH)
23412341 if ((size(gH.payments) != 0))
23422342 then throw("No payments required")
23432343 else {
23442344 let bp = fromBase58String(lm)
23452345 let cL = toString(gH.caller)
23462346 let jp = value(assetInfo(bp))
23472347 let jq = br(lm)
23482348 if (!(isDefined(getInteger(jq))))
23492349 then throw((("NFT " + jp.name) + " is not staked"))
23502350 else if (!(isDefined(getString(bH(cL)))))
23512351 then throw((("The duck " + jp.name) + " is not staked"))
23522352 else {
23532353 let js = valueOrErrorMessage(getString(bG(lm)), (("NFT " + jp.name) + " is orphaned"))
23542354 if ((js != cL))
23552355 then throw("Staked NFT is not yours")
23562356 else if (km(lm))
23572357 then throw("unstakeDuck_checkTournament")
23582358 else if (kn(lm))
23592359 then throw("unstakeDuck_checkDelivery")
23602360 else {
23612361 let iY = z(lm)
23622362 let iZ = ag(valueOrElse(getInteger(D(lm)), 0))
23632363 let as = valueOrElse(getInteger(iY), iZ)
23642364 if ((iZ > as))
23652365 then throw((("Please heal your duck to " + toString(iZ)) + "hp before unstaking"))
23662366 else [ScriptTransfer(gH.caller, 1, bp), DeleteEntry(jq), DeleteEntry(iY), DeleteEntry(bJ(lm)), DeleteEntry(bG(lm)), DeleteEntry(bu(aD, lm, cL)), DeleteEntry(bH(cL)), lc]
23672367 }
23682368 }
23692369 }
23702370 }
23712371
23722372
23732373
23742374 @Callable(gH)
23752375 func claimRes (eF,lp) = {
23762376 let lc = kZ(gH)
23772377 if ((size(gH.payments) != 0))
23782378 then throw("No payments required")
23792379 else {
23802380 let c = toString(gH.originCaller)
23812381 let fg = ju(c, eF, ex, lp)
23822382 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
23832383 $Tuple2(((((fg._1 ++ jW(A, fraction(U, eF, cD))._1) :+ StringEntry(fg._2, makeString(fg._3, ":"))) :+ StringEntry(fg._4, makeString(fg._5, ":"))) :+ lc), fg._3[bi])
23842384 }
23852385 }
23862386
23872387
23882388
23892389 @Callable(gH)
23902390 func claimResToWH (eF,lp) = {
23912391 let lc = kZ(gH)
23922392 if ((size(gH.payments) != 0))
23932393 then throw("No payments required")
23942394 else {
23952395 let c = toString(gH.originCaller)
23962396 let fg = ju(c, eF, ew, lp)
23972397 $Tuple2(((((fg._1 ++ kc(c, fraction(U, eF, cD))._1) :+ StringEntry(fg._2, makeString(fg._3, ":"))) :+ StringEntry(fg._4, makeString(fg._5, ":"))) :+ lc), fg._5[aZ])
23982398 }
23992399 }
24002400
24012401
24022402
24032403 @Callable(gH)
24042404 func flight (iN,iO) = {
24052405 let lc = kZ(gH)
24062406 if ((size(gH.payments) != 0))
24072407 then throw("No payments required")
24082408 else {
24092409 let bL = toString(gH.caller)
24102410 let hm = iM(bL, iN, iO)
24112411 let iS = hm._1
24122412 let A = hm._2
24132413 let ln = bJ(A)
24142414 let jn = valueOrElse(getString(ln), aJ)
24152415 let iU = hm._4
24162416 if ((iU == jn))
24172417 then throw("You can't fly to the same location")
24182418 else {
24192419 let cr = split(iU, "_")
24202420 let lq = (cr[bm] == "T")
24212421 let lr = (cr[bm] == "D")
24222422 let gu = F(A)
24232423 let ls = valueOrElse(getString(gu), ",;,_,;,_,;,_,;,_,;,_,;,")
24242424 let lt = fh(ls, hm._5)
24252425 let lu = lt._1
24262426 let lv = lt._2
24272427 let lw = if (cm(de, jn))
24282428 then if (!(ck(iU)))
24292429 then cp(jn, iU)
24302430 else if ((iS > 0))
24312431 then $Tuple2(iU, iS)
24322432 else $Tuple2(jn, 0)
24332433 else if (cc(de, jn))
24342434 then if (!(cc(de, iU)))
24352435 then throw("Your duck is taking part in the tournament")
24362436 else {
24372437 let lx = parseIntValue(cr[bn])
24382438 let ly = split(jn, "_")
24392439 let ce = valueOrElse(getInteger(de, bP), 0)
24402440 if ((lx != (parseIntValue(ly[bn]) + 1)))
24412441 then cp(jn, iU)
24422442 else if ((iS > 0))
24432443 then {
24442444 let lz = valueOrElse(getInteger(de, bT(ce, A)), 0)
24452445 let lA = if ((lx > lz))
24462446 then invoke(de, "saveDuckResult", [A, lx], nil)
24472447 else unit
24482448 if ((lA == lA))
24492449 then $Tuple2(iU, iS)
24502450 else throw("Strict value is not equal to itself.")
24512451 }
24522452 else $Tuple2(jn, 0)
24532453 }
24542454 else if (!(ch(jn)))
24552455 then {
24562456 let lB = dB(invoke(this, "autoExitDelivery", [A], nil))
24572457 if ((lB == lB))
24582458 then if (lr)
24592459 then lB
24602460 else if ((iS > 0))
24612461 then $Tuple2(iU, iS)
24622462 else $Tuple2(lB._1, 0)
24632463 else throw("Strict value is not equal to itself.")
24642464 }
24652465 else if (!(lr))
24662466 then throw("Your duck is taking part in delivery")
24672467 else if (!(ch(iU)))
24682468 then cp(jn, iU)
24692469 else {
24702470 let lx = parseIntValue(cr[bn])
24712471 let ly = split(jn, "_")
24722472 if ((lx != (parseIntValue(ly[bn]) + 1)))
24732473 then cp(jn, iU)
24742474 else if ((iS > 0))
24752475 then $Tuple2(iU, iS)
24762476 else {
24772477 let lB = dB(invoke(this, "autoExitDelivery", [A], nil))
24782478 if ((lB == lB))
24792479 then lB
24802480 else throw("Strict value is not equal to itself.")
24812481 }
24822482 }
24832483 let lC = lw._1
24842484 let lD = lw._2
24852485 $Tuple2(([StringEntry(ln, lC), StringEntry(gu, lu), IntegerEntry(z(A), iS), lc] ++ (if (lv)
24862486 then [StringEntry(L(A), "0_0_0_0_0")]
24872487 else (nil ++ jW(A, if ((iS > 0))
24882488 then V
24892489 else W)._1))), hm._3)
24902490 }
24912491 }
24922492 }
24932493
24942494
24952495
24962496 @Callable(gH)
24972497 func heal (lE,lF,lG) = {
24982498 let lc = kZ(gH)
24992499 if (if (if ((0 > lE))
25002500 then true
25012501 else (0 > lF))
25022502 then true
25032503 else (0 > lG))
25042504 then throw("Quantity cannot be negative")
25052505 else {
25062506 let A = valueOrErrorMessage(getString(bH(toString(gH.caller))), "You don't have a duck staked")
25072507 if (km(A))
25082508 then throw("heal_checkTournament")
25092509 else if (kn(A))
25102510 then throw("heal_checkDelivery")
25112511 else {
25122512 let lH = [lE, lF, lG]
25132513 let iY = z(A)
25142514 let iZ = ag(valueOrElse(getInteger(D(A)), 0))
25152515 let lI = valueOrElse(getInteger(iY), iZ)
25162516 if ((lI >= iZ))
25172517 then throw((("HP should be < " + toString(iZ)) + " to heal"))
25182518 else {
25192519 let hI = bI(A)
25202520 let il = hH(hI)
25212521 let lJ = if ((il[bk] == ""))
25222522 then nil
25232523 else split_4C(il[bk], "_")
25242524 func lK (eO,co) = {
25252525 let dz = eO._2
25262526 let hd = if ((size(lJ) > dz))
25272527 then parseIntValue(lJ[dz])
25282528 else 0
25292529 if ((3 > dz))
25302530 then {
25312531 let lL = lH[dz]
25322532 if ((lL > hd))
25332533 then throw(((("You have only " + toString(hd)) + " of ") + aO[dz]))
25342534 else $Tuple3((eO._1 :+ toString((hd - lL))), (dz + 1), (eO._3 + (parseIntValue(split(co, "_")[aU]) * lL)))
25352535 }
25362536 else $Tuple3((eO._1 :+ toString(hd)), (dz + 1), eO._3)
25372537 }
25382538
25392539 let fg = {
25402540 let eQ = aS
25412541 let eR = size(eQ)
25422542 let eS = $Tuple3(nil, 0, 0)
25432543 func eT (eU,eV) = if ((eV >= eR))
25442544 then eU
25452545 else lK(eU, eQ[eV])
25462546
25472547 func eW (eU,eV) = if ((eV >= eR))
25482548 then eU
25492549 else throw("List size exceeds 50")
25502550
25512551 eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 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)
25522552 }
25532553 let lM = min([iZ, (lI + fg._3)])
25542554 $Tuple2(([IntegerEntry(iY, lM), StringEntry(hI, makeString_2C([il[bh], il[bi], il[bj], makeString(fg._1, "_")], ":")), lc] ++ jW(A, (ad * ((lE + lF) + lG)))._1), lM)
25552555 }
25562556 }
25572557 }
25582558 }
25592559
25602560
25612561
25622562 @Callable(gH)
25632563 func healES () = {
25642564 let lc = kZ(gH)
25652565 if ((size(gH.payments) != 1))
25662566 then throw("Exactly one payment required")
25672567 else {
25682568 let ld = value(gH.payments[0])
25692569 if ((ld.assetId != cw))
25702570 then throw("Allowed USDT payment only!")
25712571 else {
25722572 let A = valueOrErrorMessage(getString(bH(toString(gH.caller))), "You don't have a duck staked")
25732573 if (km(A))
25742574 then throw("healES_checkTournament")
25752575 else if (kn(A))
25762576 then throw("healES_checkDelivery")
25772577 else {
25782578 let iY = z(A)
25792579 let iZ = ag(valueOrElse(getInteger(D(A)), 0))
25802580 let lI = valueOrElse(getInteger(iY), iZ)
25812581 if ((lI > 0))
25822582 then throw("HP should be 0 to call Emergency Service")
25832583 else {
25842584 let hI = bI(A)
25852585 let il = hH(hI)
25862586 let lJ = if ((il[bk] == ""))
25872587 then nil
25882588 else split_4C(il[bk], "_")
25892589 let lN = if ((size(lJ) > 0))
25902590 then parseIntValue(lJ[0])
25912591 else 0
25922592 let lO = if ((size(lJ) > 1))
25932593 then parseIntValue(lJ[1])
25942594 else 0
25952595 let lP = if ((size(lJ) > 2))
25962596 then parseIntValue(lJ[2])
25972597 else 0
25982598 if (if (if ((lN > 0))
25992599 then true
26002600 else (lO > 0))
26012601 then true
26022602 else (lP > 0))
26032603 then throw("You have to use own Medical Kit")
26042604 else {
26052605 let lQ = getString(db, bM())
26062606 let lR = if (isDefined(lQ))
26072607 then split_4C(value(lQ), "_")
26082608 else nil
26092609 let lS = if ((size(lR) > 0))
26102610 then parseIntValue(lR[0])
26112611 else 0
26122612 if ((0 >= lS))
26132613 then throw("There are no Medical Kits L1 at Emergency Service storage")
26142614 else {
26152615 let lM = (lI + parseIntValue(split(aS[0], "_")[aU]))
26162616 let lT = makeString([toString((lS - 1)), removeByIndex(lR, 0)], "_")
26172617 let co = split(aS[0], "_")
26182618 let lU = cn(co)
26192619 let lV = fraction((lU * aL), aK, (cD * aX))
26202620 if ((ld.amount != lV))
26212621 then throw(("Payment attached should be " + toString(lV)))
26222622 else {
26232623 let fg = dv(invoke(db, "updateEsStorage", [lT], [AttachedPayment(cw, lV)]))
26242624 $Tuple2(([IntegerEntry(iY, lM), lc] ++ jW(A, X)._1), fg)
26252625 }
26262626 }
26272627 }
26282628 }
26292629 }
26302630 }
26312631 }
26322632 }
26332633
26342634
26352635
26362636 @Callable(gH)
26372637 func updateBackpack (A,lW) = if ((gH.caller != db))
26382638 then throw("permission denied")
26392639 else $Tuple2([StringEntry(bI(A), lW)], lW)
26402640
26412641
26422642
26432643 @Callable(gH)
26442644 func commitForRandom () = {
26452645 let lc = kZ(gH)
26462646 let lX = (height + do)
26472647 let c = toString(gH.caller)
26482648 $Tuple2(([IntegerEntry(dp(c), lX)] :+ lc), lX)
26492649 }
26502650
26512651
26522652
26532653 @Callable(gH)
26542654 func awardSLand (cL) = if ((gH.caller != de))
26552655 then throw("Access denied")
26562656 else if ((size(gH.payments) != 0))
26572657 then throw("No payments required")
26582658 else {
26592659 let fg = iF(addressFromStringValue(cL), gH.transactionId)
26602660 $Tuple2(fg._1, fg._2._1)
26612661 }
26622662
26632663
26642664
26652665 @Callable(gH)
26662666 func buySLand () = {
26672667 let lc = kZ(gH)
26682668 if ((size(gH.payments) != 1))
26692669 then throw("Exactly one payment required")
26702670 else {
26712671 let ld = value(gH.payments[0])
26722672 if ((ld.assetId != cw))
26732673 then throw("Allowed USDT payment only!")
26742674 else if ((ld.amount != ed))
26752675 then throw(("Payment attached should be " + toString(ed)))
26762676 else {
26772677 let fg = iF(gH.caller, gH.transactionId)
26782678 let lY = dy(invoke(df, "burnAcres", [ee], nil))
26792679 $Tuple2((((fg._1 :+ ScriptTransfer(db, ld.amount, cw)) ++ kc(toString(gH.caller), Z)._1) :+ lc), $Tuple2(fg._2._1, lY))
26802680 }
26812681 }
26822682 }
26832683
26842684
26852685
26862686 @Callable(gH)
26872687 func expedition (iN,iO) = {
26882688 let lc = kZ(gH)
26892689 if ((size(gH.payments) != 0))
26902690 then throw("No payments required")
26912691 else {
26922692 let bL = toString(gH.caller)
26932693 let hm = iM(bL, iN, iO)
26942694 let A = hm._2
26952695 let iY = z(A)
26962696 let hI = bI(A)
26972697 let il = hH(hI)
26982698 let jN = split(il[bj], "_")
26992699 let jP = makeString(fa(true, jN, ec), "_")
27002700 let gu = F(A)
27012701 let ls = valueOrElse(getString(gu), ",;,_,;,_,;,_,;,_,;,_,;,")
27022702 let lZ = fh(ls, hm._5)
27032703 let lu = lZ._1
27042704 let lv = lZ._2
27052705 let ma = iF(gH.caller, gH.transactionId)
27062706 let iL = ma._2._1
27072707 let fg = if ((0 >= hm._1))
27082708 then $Tuple3([IntegerEntry(iY, 0), StringEntry(gu, lu)], "", 0)
27092709 else $Tuple3((ma._1 ++ (if (lv)
27102710 then [StringEntry(L(A), "0_0_0_0_0")]
27112711 else ((((nil :+ StringEntry(bJ(A), makeString([ma._2._2, "L", iL], "_"))) :+ IntegerEntry(iY, hm._1)) :+ StringEntry(gu, lu)) :+ StringEntry(hI, makeString([il[bh], il[bi], jP, il[bk]], ":"))))), iL, hm._3)
27122712 if (km(A))
27132713 then throw("expedition_checkTournament")
27142714 else if (kn(A))
27152715 then throw("expedition_checkDelivery")
27162716 else {
27172717 let lY = dy(invoke(df, "burnAcres", [ee], nil))
27182718 $Tuple2(((fg._1 ++ jW(A, Z)._1) :+ lc), $Tuple3(fg._2, fg._3, lY))
27192719 }
27202720 }
27212721 }
27222722
27232723
27242724
27252725 @Callable(gH)
27262726 func buySLandForAcres () = {
27272727 let lc = kZ(gH)
27282728 if ((size(gH.payments) != 1))
27292729 then throw("exactly 1 payment must be attached")
27302730 else {
27312731 let ld = gH.payments[0]
27322732 let fn = ld.amount
27332733 if (if (!(isDefined(ld.assetId)))
27342734 then true
27352735 else (value(ld.assetId) != dn))
27362736 then throw("ACRES payments only!")
27372737 else if ((fn != ee))
27382738 then throw(("Payment attached should be " + toString(ee)))
27392739 else {
27402740 let fg = iF(gH.caller, gH.transactionId)
27412741 let lY = dy(invoke(df, "burnAcres", [ee], [AttachedPayment(dn, fn)]))
27422742 $Tuple2(((fg._1 ++ kc(toString(gH.caller), Z)._1) :+ lc), $Tuple2(fg._2._1, lY))
27432743 }
27442744 }
27452745 }
27462746
27472747
27482748
27492749 @Callable(gH)
27502750 func upgradeInfra (P) = {
27512751 let lc = kZ(gH)
27522752 if ((size(gH.payments) != 0))
27532753 then throw("No payments required")
27542754 else {
27552755 let fg = jH(true, gH.caller, 0, P)
27562756 let A = valueOrErrorMessage(getString(bH(toString(gH.caller))), "You don't have a duck staked")
27572757 $Tuple2(((fg._1 :+ lc) ++ jW(A, fraction(aa, fg._3, cD))._1), fg._2)
27582758 }
27592759 }
27602760
27612761
27622762
27632763 @Callable(gH)
27642764 func activateArtifact (mb,mc) = {
27652765 let lc = kZ(gH)
27662766 if ((size(gH.payments) != 0))
27672767 then throw("No payments required")
27682768 else {
27692769 let c = toString(gH.caller)
27702770 let fg = {
27712771 let cx = mb
27722772 if (("PRESALE" == cx))
27732773 then kk(c, mc)
27742774 else if (("ONBOARD" == cx))
27752775 then kd(c)
27762776 else throw("Unknown artifact")
27772777 }
27782778 (fg :+ lc)
27792779 }
27802780 }
27812781
27822782
27832783
27842784 @Callable(gH)
27852785 func mergeLands (kA) = {
27862786 let lc = kZ(gH)
27872787 if ((size(gH.payments) != 0))
27882788 then throw("No payments required")
27892789 else {
27902790 let fg = kY(toString(gH.caller), kA)
27912791 $Tuple2(((fg._1 :+ lc) ++ kc(toString(gH.caller), ab)._1), fg._2)
27922792 }
27932793 }
27942794
27952795
27962796
27972797 @Callable(gH)
27982798 func cargoExchange (md,P) = {
27992799 let lc = kZ(gH)
28002800 if ((size(gH.payments) != 0))
28012801 then throw("No payments required")
28022802 else {
28032803 let ik = split_4C(md, ":")
28042804 let c = toString(gH.originCaller)
28052805 let jp = value(assetInfo(fromBase58String(P)))
28062806 let jq = br(P)
28072807 if (!(isDefined(getInteger(jq))))
28082808 then throw((jp.name + " is not staked"))
28092809 else {
28102810 let js = valueOrErrorMessage(getString(bo(P)), (("NFT " + jp.name) + " is orphaned"))
28112811 if ((js != c))
28122812 then throw((aC + " is not yours"))
28132813 else {
28142814 let hW = (dE(split(jp.description, "_")[dh]) / cE)
28152815 let hX = valueOrElse(getInteger(by(P)), 0)
28162816 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
28172817 let jn = valueOrElse(getString(bJ(A)), aJ)
28182818 let cf = split(value(jn), "_")
28192819 if ((cf[bm] != "L"))
28202820 then throw((("Duck location type is " + cf[bm]) + ", but should be L"))
28212821 else if ((cf[bn] != P))
28222822 then throw(("Duck should be on the land " + P))
28232823 else {
28242824 let hV = bx(P)
28252825 let hM = hU(hV, hW, hX)
28262826 let hI = bI(A)
28272827 let il = hH(hI)
28282828 let fg = ij(ik, hM, il)
28292829 let id = split(hM[bc], "_")
28302830 let jE = (parseIntValue(id[be]) + fg._7)
28312831 let jF = (parseIntValue(id[bf]) - fg._7)
28322832 [StringEntry(hI, makeString_2C([il[bh], fg._4, fg._5, fg._6], ":")), StringEntry(hV, makeString_2C([hM[aY], fg._1, fg._2, fg._3, makeString([id[bd], toString(jE), toString(jF), id[bg]], "_")], ":")), lc]
28332833 }
28342834 }
28352835 }
28362836 }
28372837 }
28382838
28392839
28402840
28412841 @Callable(gH)
28422842 func saveWarehouse (hZ,P) = if ((gH.caller != db))
28432843 then throw("Access denied")
28442844 else {
28452845 let hV = bx(P)
28462846 let ia = split_4C(hZ, ":")
28472847 if ((size(ia) != 5))
28482848 then throw("warehouse string should contain 4 ':' separators")
28492849 else {
28502850 let me = split(ia[bc], "_")[bd]
28512851 let jE = hL(ia)
28522852 let mf = hJ(ia[aY])
28532853 let jF = ((mf - parseIntValue(me)) - jE)
28542854 let mg = makeString_2C([ia[aY], ia[aZ], ia[ba], ia[bb], makeString([me, toString(jE), toString(jF), toString(mf)], "_")], ":")
28552855 $Tuple2([StringEntry(hV, mg)], mg)
28562856 }
28572857 }
28582858
28592859
28602860
28612861 @Callable(gH)
28622862 func fixWarehouseFormat (P) = if ((gH.caller != da))
28632863 then throw("Access denied")
28642864 else {
28652865 let hV = bx(P)
28662866 let jp = value(assetInfo(fromBase58String(P)))
28672867 let hW = (dE(split(jp.description, "_")[dh]) / cE)
28682868 let hX = valueOrElse(getInteger(by(P)), 0)
28692869 let ia = hU(hV, hW, hX)
28702870 let me = dy(invoke(db, "recalcLockedVolumeREADONLY", [P, ia], nil))
28712871 let jE = hL(ia)
28722872 let mf = hJ(ia[aY])
28732873 let jF = ((mf - me) - jE)
28742874 let mg = makeString_2C([ia[aY], ia[aZ], ia[ba], ia[bb], makeString([toString(me), toString(jE), toString(jF), toString(mf)], "_")], ":")
28752875 $Tuple2([StringEntry(hV, mg)], mg)
28762876 }
28772877
28782878
28792879
28802880 @Callable(gH)
28812881 func fixContinentProportions (kA) = if ((gH.caller != da))
28822882 then throw("Access denied")
28832883 else {
28842884 func mh (eO,mi) = (eO :+ valueOrElse(getString(dr(mi)), "0_0_0_0_0_0"))
28852885
28862886 let gr = {
28872887 let eQ = aP
28882888 let eR = size(eQ)
28892889 let eS = nil
28902890 func eT (eU,eV) = if ((eV >= eR))
28912891 then eU
28922892 else mh(eU, eQ[eV])
28932893
28942894 func eW (eU,eV) = if ((eV >= eR))
28952895 then eU
28962896 else throw("List size exceeds 5")
28972897
28982898 eW(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5)
28992899 }
29002900 func mj (eO,P) = {
29012901 let jp = value(assetInfo(fromBase58String(P)))
29022902 let jt = split(jp.description, "_")
29032903 let hW = (dE(jt[dh]) / cE)
29042904 let mi = jt[dj]
29052905 let gD = gJ(jt[di])
29062906 let hl = value(indexOf(aP, mi))
29072907 let kP = split(eO[hl], "_")
29082908 let mk = makeString(gB(kP, gD, hW, 1), "_")
29092909 let cx = mi
29102910 if (("Americas" == cx))
29112911 then [mk, eO[1], eO[2], eO[3], eO[4]]
29122912 else if (("Europe" == cx))
29132913 then [eO[0], mk, eO[2], eO[3], eO[4]]
29142914 else if (("Asia" == cx))
29152915 then [eO[0], eO[1], mk, eO[3], eO[4]]
29162916 else if (("Africa" == cx))
29172917 then [eO[0], eO[1], eO[2], mk, eO[4]]
29182918 else if (("Oceania" == cx))
29192919 then [eO[0], eO[1], eO[2], eO[3], mk]
29202920 else throw("wrong continent")
29212921 }
29222922
29232923 let eZ = {
29242924 let eQ = kA
29252925 let eR = size(eQ)
29262926 let eS = gr
29272927 func hC (eU,eV) = if ((eV >= eR))
29282928 then eU
29292929 else mj(eU, eQ[eV])
29302930
29312931 func hD (eU,eV) = if ((eV >= eR))
29322932 then eU
29332933 else throw("List size exceeds 100")
29342934
29352935 hD(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(eS, 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)
29362936 }
29372937 $Tuple2([StringEntry(dr("Americas"), eZ[0]), StringEntry(dr("Europe"), eZ[1]), StringEntry(dr("Asia"), eZ[2]), StringEntry(dr("Africa"), eZ[3]), StringEntry(dr("Oceania"), eZ[4])], 0)
29382938 }
29392939
29402940
29412941
29422942 @Callable(gH)
29432943 func fixStakedPieces (cL) = if ((gH.caller != da))
29442944 then throw("Access denied")
29452945 else {
29462946 let kT = if ((cL == ""))
29472947 then 0
29482948 else {
29492949 let kM = getString(an, dt(cL))
29502950 let kI = if (isDefined(kM))
29512951 then split_51C(value(kM), "_")
29522952 else nil
29532953 func ml (eO,P) = {
29542954 let jp = value(assetInfo(fromBase58String(P)))
29552955 let dF = split(jp.description, "_")[dh]
29562956 (eO + dE(dF))
29572957 }
29582958
29592959 let eQ = kI
29602960 let eR = size(eQ)
29612961 let eS = 0
29622962 func eT (eU,eV) = if ((eV >= eR))
29632963 then eU
29642964 else ml(eU, eQ[eV])
29652965
29662966 func eW (eU,eV) = if ((eV >= eR))
29672967 then eU
29682968 else throw("List size exceeds 100")
29692969
29702970 eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 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)
29712971 }
29722972 $Tuple2([IntegerEntry(du(cL), kT)], kT)
29732973 }
29742974
29752975
29762976
29772977 @Callable(gH)
29782978 func setCustomName (bp,kK,bt) = {
29792979 let lc = kZ(gH)
29802980 if ((size(gH.payments) != 1))
29812981 then throw("Exactly one payment required")
29822982 else {
29832983 let ld = value(gH.payments[0])
29842984 if ((ld.assetId != cw))
29852985 then throw("Allowed USDT payment only!")
29862986 else if ((ld.amount != dZ))
29872987 then throw(("Payment should be " + toString(dZ)))
29882988 else if (contains(kK, "__"))
29892989 then throw(("Name should not contain '__': " + kK))
29902990 else if ((size(kK) > ea))
29912991 then throw(("Name too long, maxLength=" + toString(ea)))
29922992 else {
29932993 let c = toString(gH.originCaller)
29942994 let mm = {
29952995 let cx = bt
29962996 if (("ACCOUNT" == cx))
29972997 then {
29982998 let mn = eu(kK)
29992999 let mo = getString(mn)
30003000 if (isDefined(mo))
30013001 then throw(("Name already registered: " + kK))
30023002 else {
30033003 let mp = bB(c)
30043004 let mq = getString(mp)
30053005 let mr = if (isDefined(mq))
30063006 then [DeleteEntry(eu(value(mq)))]
30073007 else nil
30083008 (((mr :+ StringEntry(mp, kK)) :+ StringEntry(mn, c)) ++ kc(c, Y)._1)
30093009 }
30103010 }
30113011 else if (("LAND" == cx))
30123012 then {
30133013 let jp = value(assetInfo(fromBase58String(bp)))
30143014 let jq = br(bp)
30153015 if (!(isDefined(getInteger(jq))))
30163016 then throw((jp.name + " is not staked"))
30173017 else {
30183018 let js = valueOrErrorMessage(getString(bo(bp)), (("NFT " + jp.name) + " is orphaned"))
30193019 if ((js != c))
30203020 then throw((aC + " is not yours"))
30213021 else {
30223022 let mn = en(kK)
30233023 let mo = getString(mn)
30243024 if (isDefined(mo))
30253025 then throw(("Name already registered: " + kK))
30263026 else {
30273027 let ms = bq(bp)
30283028 let mq = getString(ms)
30293029 let mr = if (isDefined(mq))
30303030 then [DeleteEntry(en(value(mq)))]
30313031 else nil
30323032 (((mr :+ StringEntry(ms, kK)) :+ StringEntry(mn, bp)) ++ kc(c, Y)._1)
30333033 }
30343034 }
30353035 }
30363036 }
30373037 else if (("DUCK" == cx))
30383038 then {
30393039 let jp = value(assetInfo(fromBase58String(bp)))
30403040 let jq = br(bp)
30413041 if (if (!(isDefined(getInteger(jq))))
30423042 then true
30433043 else !(isDefined(getString(bH(c)))))
30443044 then throw((jp.name + " is not staked"))
30453045 else {
30463046 let js = valueOrErrorMessage(getString(bG(bp)), (("NFT " + jp.name) + " is orphaned"))
30473047 if ((js != c))
30483048 then throw((aD + " is not yours"))
30493049 else {
30503050 let mn = et(kK)
30513051 let mo = getString(mn)
30523052 if (isDefined(mo))
30533053 then throw(("Name already registered: " + kK))
30543054 else {
30553055 let ms = bA(bp)
30563056 let mq = getString(ms)
30573057 let mr = if (isDefined(mq))
30583058 then [DeleteEntry(et(value(mq)))]
30593059 else nil
30603060 (((mr :+ StringEntry(ms, kK)) :+ StringEntry(mn, bp)) ++ jW(bp, Y)._1)
30613061 }
30623062 }
30633063 }
30643064 }
30653065 else throw("Unknown entity type")
30663066 }
30673067 $Tuple2(((mm :+ ScriptTransfer(db, ld.amount, cw)) :+ lc), 0)
30683068 }
30693069 }
30703070 }
30713071
30723072
30733073
30743074 @Callable(gH)
30753075 func setReferrals (mt,mu) = if ((gH.callerPublicKey != dW))
30763076 then throw("Permission denied")
30773077 else {
30783078 let lc = kZ(gH)
30793079 if ((size(gH.payments) != 0))
30803080 then throw("No payments required")
30813081 else if (!(isDefined(addressFromString(mt))))
30823082 then throw(("Invalid address: " + mt))
30833083 else if (!(isDefined(addressFromString(mu))))
30843084 then throw(("Invalid address: " + mu))
30853085 else {
30863086 let mv = ev()
30873087 let mw = getString(mv)
30883088 let mx = if (isDefined(mw))
30893089 then split_4C(value(mw), "_")
30903090 else nil
30913091 if (containsElement(mx, mu))
30923092 then throw((mu + " is not newbie (already has referrals)"))
30933093 else {
30943094 let ke = bC(mu)
30953095 let kf = getString(ke)
30963096 if (if (isDefined(kf))
30973097 then isDefined(addressFromString(value(kf)))
30983098 else false)
30993099 then throw(((mu + " already has refBy: ") + value(kf)))
31003100 else {
31013101 let my = bF(mt)
31023102 let mz = getString(my)
31033103 let mA = if (isDefined(mz))
31043104 then split_4C(value(mz), "_")
31053105 else nil
31063106 if (containsElement(mA, mu))
31073107 then throw((((mt + " already contains ") + mu) + " within referrals"))
31083108 else {
31093109 let mB = makeString_2C((mA :+ mu), "_")
31103110 let mC = if (containsElement(mx, mt))
31113111 then value(mw)
31123112 else makeString_2C((mx :+ mt), "_")
31133113 $Tuple2([StringEntry(ke, mt), StringEntry(my, mB), StringEntry(mv, mC), lc], 0)
31143114 }
31153115 }
31163116 }
31173117 }
31183118 }
31193119
31203120
31213121
31223122 @Callable(gH)
31233123 func distributePoints (mD,mE,mF,mG,mH) = {
31243124 let lc = kZ(gH)
31253125 if ((size(gH.payments) != 0))
31263126 then throw("No payments required")
31273127 else {
31283128 let c = toString(gH.originCaller)
31293129 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
31303130 let mI = I(c)
31313131 let mJ = valueOrElse(getInteger(an, mI), 0)
31323132 let mK = E(A)
31333133 let mL = valueOrElse(getInteger(an, mK), 0)
31343134 let mM = (mJ + mL)
31353135 let mN = ((((mD + mE) + mF) + mG) + mH)
31363136 if ((mN > mM))
31373137 then throw((("There are only " + toString(mM)) + " free points to distribute"))
31383138 else {
31393139 let mO = B(A)
31403140 let aq = split(valueOrElse(getString(an, mO), "0_0_0_0_0"), "_")
31413141 let mP = (mJ - mN)
31423142 $Tuple2([IntegerEntry(mI, if ((0 > mP))
31433143 then 0
31443144 else mP), IntegerEntry(mK, if ((0 > mP))
31453145 then (mL + mP)
31463146 else mL), StringEntry(mO, makeString([toString((parseIntValue(aq[k]) + mD)), toString((parseIntValue(aq[l]) + mE)), toString((parseIntValue(aq[m]) + mF)), toString((parseIntValue(aq[n]) + mG)), toString((parseIntValue(aq[o]) + mH))], "_")), lc], 0)
31473147 }
31483148 }
31493149 }
31503150
31513151
31523152
31533153 @Callable(gH)
31543154 func splitByGlobalWeightsREADONLY (eF) = $Tuple2(nil, eX(eF))
31553155
31563156
31573157
31583158 @Callable(gH)
31593159 func splitByGlobalAndLocalWeightsREADONLY (mQ,mR,gK) = {
31603160 let gD = gJ(gK)
31613161 $Tuple2(nil, $Tuple2(eX(mQ), eI(mR, gD)))
31623162 }
31633163
31643164
31653165
31663166 @Callable(gH)
31673167 func getBackpackREADONLY (A) = $Tuple2(nil, makeString(hH(bI(A)), ":"))
31683168
31693169
31703170
31713171 @Callable(gH)
31723172 func getWarehouseREADONLY (P) = {
31733173 let jp = value(assetInfo(fromBase58String(P)))
31743174 let hW = (dE(split(jp.description, "_")[dh]) / cE)
31753175 let hX = valueOrElse(getInteger(by(P)), 0)
31763176 $Tuple2(nil, makeString_2C(hU(bx(P), hW, hX), ":"))
31773177 }
31783178
31793179
31803180
31813181 @Callable(gH)
31823182 func saveLastTx () = {
31833183 let iG = gH.caller
31843184 if (!(containsElement([dd, db, de, df], iG)))
31853185 then throw("Access denied")
31863186 else $Tuple2([kZ(gH)], 42)
31873187 }
31883188
31893189
31903190
31913191 @Callable(gH)
31923192 func updateDuckStats (A,jX) = if ((gH.caller != db))
31933193 then throw("Access denied")
31943194 else jW(A, jX)
31953195
31963196
31973197
31983198 @Callable(gH)
31993199 func updateAccStats (c,jX) = if (if ((gH.caller != db))
32003200 then (gH.caller != df)
32013201 else false)
32023202 then throw("Access denied")
32033203 else kc(c, jX)
32043204
32053205
32063206
32073207 @Callable(gH)
32083208 func equipDuck (mS) = {
32093209 let lc = kZ(gH)
32103210 if ((size(gH.payments) != 0))
32113211 then throw("No payments required")
32123212 else {
32133213 let c = toString(gH.originCaller)
32143214 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
32153215 if (km(A))
32163216 then throw("equipDuck_checkTournament")
32173217 else if (kn(A))
32183218 then throw("equipDuck_checkDelivery")
32193219 else {
32203220 let gu = F(A)
32213221 let mT = split(valueOrElse(getString(gu), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
32223222 let hI = bI(A)
32233223 let il = hH(hI)
32243224 let lu = split(mS, "_")
32253225 if ((size(lu) != q))
32263226 then throw("Wrong equipment string")
32273227 else {
32283228 let gw = gj(mT, fu(il[bk]), true, nil)
32293229 let gx = split(lu[p], ";")[1]
32303230 let ao = if ((gx == ""))
32313231 then 0
32323232 else {
32333233 let gy = split(gx, ",")[0]
32343234 if ((gy == ""))
32353235 then 0
32363236 else {
32373237 let fJ = split(gy, ":")
32383238 let cZ = fJ[0]
32393239 let gz = fJ[1]
32403240 if (if (if (if (if ((cZ == "06"))
32413241 then true
32423242 else (cZ == "07"))
32433243 then true
32443244 else (cZ == "08"))
32453245 then (gz != "")
32463246 else false)
32473247 then (parseIntValue(gz) > 0)
32483248 else false)
32493249 then parseIntValue(split(aS[parseIntValue(cZ)], "_")[aU])
32503250 else 0
32513251 }
32523252 }
32533253 let ge = am(this, A, ao, true)
32543254 let gA = gj(lu, gw, false, ge)
32553255 let mU = fz(gA)
32563256 $Tuple2([StringEntry(gu, mS), StringEntry(hI, makeString_2C([il[bh], il[bi], il[bj], mU], ":")), StringEntry(L(A), makeString([toString(ge[7]), toString(ge[8]), toString(ge[9]), toString(ge[10]), toString(ge[11])], "_")), lc], 0)
32573257 }
32583258 }
32593259 }
32603260 }
32613261
32623262
32633263
32643264 @Callable(gH)
32653265 func fortificateLand (P,mV) = {
32663266 let lc = kZ(gH)
32673267 if ((size(gH.payments) != 0))
32683268 then throw("No payments required")
32693269 else {
32703270 let c = toString(gH.originCaller)
32713271 let A = valueOrElse(getString(bH(c)), "")
32723272 let fE = am(this, A, 0, false)
32733273 let mW = bz(P)
32743274 let mX = split(valueOrElse(getString(mW), ":0_15:0_18:0"), "_")
32753275 let jp = value(assetInfo(fromBase58String(P)))
32763276 let hW = (dE(split(jp.description, "_")[dh]) / cE)
32773277 let hX = valueOrElse(getInteger(by(P)), 0)
32783278 let hV = bx(P)
32793279 let ia = hU(hV, hW, hX)
32803280 let mY = split(ia[bc], "_")
32813281 let mZ = parseIntValue(mY[be])
32823282 let na = parseIntValue(mY[bf])
32833283 let nb = split(mV, "_")
32843284 let nc = gq(mX, fu(ia[bb]), mZ, na, true, nil)
32853285 let gw = nc._1
32863286 let nd = nc._2
32873287 let ne = nc._3
32883288 let nf = gq(nb, gw, nd, ne, false, fE)
32893289 let gA = nf._1
32903290 let ng = nf._2
32913291 let nh = nf._3
32923292 let mU = fz(gA)
32933293 let jV = makeString([mY[bd], toString(ng), toString(nh), mY[bg]], "_")
32943294 $Tuple2([StringEntry(mW, mV), StringEntry(hV, makeString_2C([ia[aY], ia[aZ], ia[ba], mU, jV], ":")), lc], 0)
32953295 }
32963296 }
32973297
32983298
32993299
33003300 @Callable(gH)
33013301 func initDuckTourAttempt (A) = if ((gH.caller != de))
33023302 then throw("Access denied")
33033303 else {
33043304 let lc = kZ(gH)
33053305 let iY = z(A)
33063306 let iZ = ag(valueOrElse(getInteger(D(A)), 0))
33073307 let kq = valueOrElse(getInteger(iY), iZ)
33083308 let ni = bJ(A)
33093309 let jn = valueOrElse(getString(ni), aJ)
33103310 let ce = valueOrElse(getInteger(de, bP), 0)
33113311 let nj = (toString(ce) + "_T_0")
33123312 $Tuple2([lc, IntegerEntry(J(A), kq), IntegerEntry(iY, iZ), StringEntry(K(A), jn), StringEntry(ni, nj)], nj)
33133313 }
33143314
33153315
33163316
33173317 @Callable(gH)
33183318 func breakAttempt () = {
33193319 let lc = kZ(gH)
33203320 let A = valueOrErrorMessage(getString(bH(toString(gH.caller))), "You don't have a duck staked")
33213321 let ni = bJ(A)
33223322 let jn = valueOrElse(getString(ni), aJ)
33233323 if ((split(jn, "_")[bm] != "T"))
33243324 then throw("Your duck is not in the tournament")
33253325 else {
33263326 let kv = getIntegerValue(J(A))
33273327 let kw = getStringValue(K(A))
33283328 $Tuple2([lc, IntegerEntry(z(A), kv), StringEntry(ni, kw)], jn)
33293329 }
33303330 }
33313331
33323332
33333333
33343334 @Callable(gH)
33353335 func exitTournamentInternal (A) = if ((gH.caller != this))
33363336 then throw("Access denied")
33373337 else {
33383338 let kv = getIntegerValue(J(A))
33393339 let kw = getStringValue(K(A))
33403340 $Tuple2([IntegerEntry(z(A), kv), StringEntry(bJ(A), kw)], false)
33413341 }
33423342
33433343
33443344
33453345 @Callable(gH)
33463346 func exitDeliveryInternal (A) = if ((gH.caller != this))
33473347 then throw("Access denied")
33483348 else {
33493349 let ma = ko(A)
33503350 $Tuple2((ma._1 ++ ma._2), false)
33513351 }
33523352
33533353
33543354
33553355 @Callable(gH)
33563356 func autoExitDelivery (A) = if ((gH.caller != this))
33573357 then throw("Access denied")
33583358 else {
33593359 let ma = ko(A)
33603360 $Tuple2(ma._1, $Tuple2(ma._3, ma._4))
33613361 }
33623362
33633363
33643364
33653365 @Callable(gH)
33663366 func prepareRobbery (iN,iO) = {
33673367 let lc = kZ(gH)
33683368 if (!(sigVerify_8Kb(iN, iO, dW)))
33693369 then throw("signature does not match")
33703370 else if ((size(gH.payments) != 1))
33713371 then throw("exactly 1 payment must be attached")
33723372 else {
33733373 let ld = gH.payments[0]
33743374 let nk = ld.amount
33753375 if (if (!(isDefined(ld.assetId)))
33763376 then true
33773377 else (value(ld.assetId) != dl))
33783378 then throw("WLGOLD payments only!")
33793379 else {
33803380 let fm = split(toUtf8String(iN), "|")
33813381 if ((size(fm) != 2))
33823382 then throw("Wrong message format")
33833383 else {
33843384 let A = fm[0]
33853385 let ay = au(this, A)._1
33863386 if ((ay > nk))
33873387 then throw(((("Payment " + toString(nk)) + " < required ") + toString(ay)))
33883388 else {
33893389 let nl = split(fm[1], "_")
33903390 let ax = lastBlock.timestamp
33913391 let az = valueOrElse(getInteger(R(A)), 0)
33923392 let aA = valueOrElse(getString(S(A)), "")
33933393 let aB = valueOrElse(getInteger(Q(aA)), 0)
33943394 if (if ((az != x))
33953395 then (aB > ax)
33963396 else false)
33973397 then throw(("You already started robbing, wait till " + toString(aB)))
33983398 else {
33993399 func nm (eO,P) = {
34003400 let nn = valueOrElse(getInteger(O(P)), 0)
34013401 let no = valueOrElse(getInteger(Q(P)), 0)
34023402 if ((nn > size(u)))
34033403 then throw("Invalid state")
34043404 else if ((ax > no))
34053405 then {
34063406 let np = valueOrElse(getInteger(br(P)), 0)
34073407 if ((0 >= np))
34083408 then eO
34093409 else {
34103410 let go = value(assetInfo(fromBase58String(P)))
34113411 let jt = split(go.description, "_")
34123412 let jf = dE(jt[dh])
34133413 let nq = je(P, jf)
34143414 let gN = (ax - np)
34153415 let jw = fraction(gN, (nq * jf), a)
34163416 if ((v > jw))
34173417 then eO
34183418 else (eO :+ P)
34193419 }
34203420 }
34213421 else eO
34223422 }
34233423
34243424 let nr = {
34253425 let eQ = nl
34263426 let eR = size(eQ)
34273427 let eS = nil
34283428 func eT (eU,eV) = if ((eV >= eR))
34293429 then eU
34303430 else nm(eU, eQ[eV])
34313431
34323432 func eW (eU,eV) = if ((eV >= eR))
34333433 then eU
34343434 else throw("List size exceeds 10")
34353435
34363436 eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
34373437 }
34383438 if ((size(nr) == 0))
34393439 then throw("No candidates for robbery")
34403440 else {
34413441 let ns = dO(size(nr), height, (iO + gH.transactionId))
34423442 let P = nr[ns]
34433443 $Tuple2([IntegerEntry(O(P), w), IntegerEntry(Q(P), (ax + u[w])), IntegerEntry(R(A), y), StringEntry(S(A), P), lc], P)
34443444 }
34453445 }
34463446 }
34473447 }
34483448 }
34493449 }
34503450 }
34513451
34523452
34533453
34543454 @Callable(gH)
34553455 func robLand (iN,iO) = {
34563456 let lc = kZ(gH)
34573457 if (!(sigVerify_8Kb(iN, iO, dW)))
34583458 then throw("signature does not match")
34593459 else {
34603460 let bL = toString(gH.caller)
34613461 let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked")
34623462 let ax = lastBlock.timestamp
34633463 $Tuple2([lc, IntegerEntry(M(A), ax)], 0)
34643464 }
34653465 }
34663466
34673467
34683468
34693469 @Callable(gH)
34703470 func acceptDelivery () = if (!(cu))
34713471 then throw("Delivery feature is turned off!")
34723472 else {
34733473 let lc = kZ(gH)
34743474 let bL = toString(gH.caller)
34753475 let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked")
34763476 let nt = valueOrElse(getInteger(db, bN), 0)
34773477 let kt = valueOrElse(getInteger(db, bO), 0)
34783478 if ((aM > (nt - kt)))
34793479 then throw(((("Delivery is not available, fund=" + dJ(nt, 6)) + ", locked=") + dJ(kt, 6)))
34803480 else {
34813481 let ax = lastBlock.timestamp
34823482 let nu = valueOrElse(getInteger(T(A)), 0)
34833483 if ((nu > ax))
34843484 then throw(("Delivery is forbidden for your duck until " + toString(nu)))
34853485 else if (km(A))
34863486 then throw("acceptDelivery_checkTournament")
34873487 else if (kn(A))
34883488 then throw("acceptDelivery_checkDelivery")
34893489 else {
34903490 let nv = dy(invoke(db, "updateDeliveryLocked", [(kt + aM)], nil))
34913491 let iY = z(A)
34923492 let iZ = ag(valueOrElse(getInteger(D(A)), 0))
34933493 let kq = valueOrElse(getInteger(iY), iZ)
34943494 let ni = bJ(A)
34953495 let jn = valueOrElse(getString(ni), aJ)
34963496 let nw = (toString(ax) + "_D_0")
34973497 $Tuple2([lc, IntegerEntry(J(A), kq), IntegerEntry(iY, iZ), StringEntry(K(A), jn), StringEntry(ni, nw)], $Tuple2(nw, nv))
34983498 }
34993499 }
35003500 }
35013501
35023502

github/deemru/w8io/169f3d6 
306.95 ms