tx · GEZj7p5JmMZxx4ZAKbdq2C6LMeWEAVPgifuH4QChTz2J

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.03600000 Waves

2022.12.22 15:04 [2371479] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "GEZj7p5JmMZxx4ZAKbdq2C6LMeWEAVPgifuH4QChTz2J", "fee": 3600000, "feeAssetId": null, "timestamp": 1671710638469, "version": 1, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "5b71FGFXquSvb8Y2Us95LCaP1ntqZRVgWvsh3kerw6UzmGVGLJgtByLGAUmB8KKemvuTJHvFV72EGa7E1HecCAbG" ], "script": "base64:BgKLKQgCEgMKAQgSAwoBCBIAEgQKAgEEEgQKAgEEEgASBAoCCAESABIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEBARIFCgMBCAESBAoCAQgSBAoCAQgSBAoCCAgSBAoCCAgSBAoCCAESABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAIgZzY2FsZTgiDHNjYWxlOEJpZ0ludCIHc2NhbGUxOCIKemVyb0JpZ0ludCIEYmlnMCIEYmlnMSIEYmlnMiIEYmlnMyIEYmlnNCIKc2xpcHBhZ2U0RCILd2F2ZXNTdHJpbmciBUFtdWx0IgVEY29udiIDU0VQIgVFTVBUWSIKUG9vbEFjdGl2ZSIKUG9vbFB1dERpcyIOUG9vbE1hdGNoZXJEaXMiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiCWlkeFBvb2xTdCIJaWR4TFBBc0lkIglpZHhBbUFzSWQiCWlkeFByQXNJZCILaWR4QW10QXNEY20iDWlkeFByaWNlQXNEY20iC2lkeElBbXRBc0lkIg1pZHhJUHJpY2VBc0lkIg9pZHhGYWN0U3Rha0NudHIiEmlkeEZhY3RvcnlSZXN0Q250ciIQaWR4RmFjdFNsaXBwQ250ciIRaWR4RmFjdEd3eFJld0NudHIiCmZlZURlZmF1bHQiAnQxIgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0IgJmMSIDdmFsIg9yZXN1bHRTY2FsZU11bHQiDGZyb21YMThSb3VuZCIFcm91bmQiAnRzIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIBdCIDcGF1IgJ1YSIEdHhJZCIDZ2F1IgJhYSICcGEiA2FtcCIDYWRhIgZrZXlGZWUiA2ZlZSIGa2V5RExwIhVrZXlETHBSZWZyZXNoZWRIZWlnaHQiEmtleURMcFJlZnJlc2hEZWxheSIWZExwUmVmcmVzaERlbGF5RGVmYXVsdCIPZExwUmVmcmVzaERlbGF5IgRmY2ZnIgRtdHBrIgJwYyIGaUFtdEFzIgVpUHJBcyIDbWJhIgViQVN0ciIDYXBzIhxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIgN0b2UiA29yViIGc2VuZHJWIgZtYXRjaFYiBHN0cmYiBGFkZHIiA2tleSIEaW50ZiIIdGhyb3dFcnIiA21zZyIGZm10RXJyIgNmY2EiAUEiA2lncyICbXAiE2ZlZUNvbGxlY3RvckFkZHJlc3MiA2dwYyIFYW10QXMiB3ByaWNlQXMiCGlQcmljZUFzIgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwNzM4Mzc2MTIiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIhJjZmdJbkFtb3VudEFzc2VkSWQiEWNmZ0luUHJpY2VBc3NldElkIgNnZmMiDWZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIPc2xpcGFnZUNvbnRyYWN0Igtnd3hDb250cmFjdCIMcmVzdENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIIYW10QXNEY20iB3ByQXNEY20iCHByaWNlWDE4IghscEFtdFgxOCINbHBQckluQW1Bc1gxOCINbHBQckluUHJBc1gxOCIPY2FsY3VsYXRlUHJpY2VzIgFwIgd0YWtlRmVlIgZhbW91bnQiCWZlZUFtb3VudCIDZWdvIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10Igt1c2VyQWRkcmVzcyIEbHBJZCIEYW1JZCIEcHJJZCIFYW1EY20iBXByRGNtIgNzdHMiB2xwRW1pc3MiCWFtQmFsYW5jZSIMYW1CYWxhbmNlWDE4IglwckJhbGFuY2UiDHByQmFsYW5jZVgxOCILY3VyUHJpY2VYMTgiCGN1clByaWNlIgtwbXRMcEFtdFgxOCIKbHBFbWlzc1gxOCILb3V0QW1BbXRYMTgiC291dFByQW10WDE4IghvdXRBbUFtdCIIb3V0UHJBbXQiBXN0YXRlIgNlcG8iB2luQW1BbXQiBmluQW1JZCIHaW5QckFtdCIGaW5QcklkIgZpc0V2YWwiBmVtaXRMcCIKaXNPbmVBc3NldCIQdmFsaWRhdGVTbGlwcGFnZSIGcG10QW10IgVwbXRJZCIHYW1JZFN0ciIHcHJJZFN0ciIJaW5BbUlkU3RyIglpblBySWRTdHIiBmFtdERjbSIIcHJpY2VEY20iBGxwRW0iD2luQW1Bc3NldEFtdFgxOCIPaW5QckFzc2V0QW10WDE4Igx1c2VyUHJpY2VYMTgiAXIiC3NsaXBwYWdlWDE4Ig9zbGlwcGFnZVJlYWxYMTgiDWxwRW1pc3Npb25YMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiDSR0MDE4MDE3MTgzNjIiCndyaXRlQW1BbXQiCndyaXRlUHJBbXQiC2NvbW1vblN0YXRlIgRnZXREIgJ4cCIDeHAwIgN4cDEiAXMiAWEiA2FubiILeHAwX3hwMV9uX24iBWFubl9zIgVhbm5fMSIJY2FsY0ROZXh0IgFkIgJkZCIDZGRkIgJkcCIEY2FsYyIDYWNjIgFpIgVkTmV4dCIIZERpZmZSYXciBWREaWZmIgNhcnIiDSR0MDIwMjkwMjAzMzgiAiRsIgIkcyIFJGFjYzAiBSRmMF8xIgIkYSICJGkiBSRmMF8yIgVmb3VuZCIHZ2V0RE9sZCIBbiIKYVByZWNpc2lvbiIQYW5uX3NfYVByZWNpc2lvbiIOYW5uX2FQcmVjaXNpb24iAm4xIgNjdXIiDSR0MDIwOTY3MjA5ODciDSR0MDIxNDA4MjE0NTUiBWdldFlEIgFEIgF4IgFjIgFiIg0kdDAyMTk1NTIxOTc1IgF5IgV5TmV4dCIFeURpZmYiDSR0MDIyMjgyMjIzMjkiB2NhbGNETHAiDWFtb3VudEJhbGFuY2UiDHByaWNlQmFsYW5jZSIKbHBFbWlzc2lvbiIKdXBkYXRlZERMcCIOY2FsY0N1cnJlbnRETHAiEGFtb3VudEFzc2V0RGVsdGEiD3ByaWNlQXNzZXREZWx0YSIUbHBBc3NldEVtaXNzaW9uRGVsdGEiEmFtb3VudEFzc2V0QmFsYW5jZSIRcHJpY2VBc3NldEJhbGFuY2UiD2xwQXNzZXRFbWlzc2lvbiIKY3VycmVudERMcCIScmVmcmVzaERMcEludGVybmFsIhdhbW91bnRBc3NldEJhbGFuY2VEZWx0YSIWcHJpY2VBc3NldEJhbGFuY2VEZWx0YSIHYWN0aW9ucyISdmFsaWRhdGVVcGRhdGVkRExwIgZvbGRETHAiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiEWFtb3VudEFzc2V0QW1vdW50IhBwcmljZUFzc2V0QW1vdW50Ig0kdDAyNDI2ODI0NDgwIgNkTHAiDSR0MDI0ODEwMjQ5MTAiDXVudXNlZEFjdGlvbnMiBmRMcE5ldyIMaXNPcmRlclZhbGlkIgJjZyIDcG10IgJjcCIGY2FsbGVyIgdhbUFzUG10IgdwckFzUG10Ig1jYWxjUHV0T25lVGtuIglwbXRBbXRSYXciC3dpdGhUYWtlRmVlIg1jaGVjaEVtaXNzaW9uIg0kdDAyNzE3NjI3NjM4IgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCINJHQwMjc2NDQyNzgyMCILYW1BbW91bnRSYXciC3ByQW1vdW50UmF3Ig0kdDAyNzgyNDI4MDYzIghhbUFtb3VudCIIcHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IgZjaGVja0QiCGxwQW1vdW50Ig5wb29sUHJvcG9ydGlvbiIPYW1vdW50QXNzZXRQYXJ0Ig5wcmljZUFzc2V0UGFydCIJbHBBbXRCb3RoIgVib251cyITZ2V0T25lVGtuVjJJbnRlcm5hbCIKb3V0QXNzZXRJZCIMbWluT3V0QW1vdW50IghwYXltZW50cyIMb3JpZ2luQ2FsbGVyIg10cmFuc2FjdGlvbklkIgphbURlY2ltYWxzIgpwckRlY2ltYWxzIgpwb29sU3RhdHVzIg0kdDAzMDExMzMwMjI0IgFAIgh0b3RhbEdldCILdG90YWxBbW91bnQiDSR0MDMwNDE0MzA3MjEiBW91dEFtIgVvdXRQciIIY3VyUHJYMTgiBWN1clByIhFvdXRBc3NldElkT3JXYXZlcyIQc2VuZEZlZVRvTWF0Y2hlciIEYnVybiINJHQwMzE1MDYzMTg1NiIQZmVlQW1vdW50Rm9yQ2FsYyIQb3V0SW5BbW91bnRBc3NldCINJHQwMzE4NTkzMTk2NyIRcmVmcmVzaERMcEFjdGlvbnMiEWlzVXBkYXRlZERMcFZhbGlkIgFtIgckbWF0Y2gwIgJwbSICcGQiCWlzTWFuYWdlciICcGsiAm1tIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSICY20iA2hwbSIDY3BtIgRzbGlwIglhdXRvU3Rha2UiB2ZhY3RDZmciC3N0YWtpbmdDbnRyIghzbGlwQ250ciIKYW1Bc3NldFBtdCIKcHJBc3NldFBtdCIBZSIJbHBBc3NldElkIgJlbCIGbGVnYWN5IgJzYSICc3AiCGxwVHJuc2ZyIgJzcyINJHQwMzYxMTYzNjE4MSIFY2hlY2siFGxwQXNzZXRFbWlzc2lvbkFmdGVyIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCINaXNQdXREaXNhYmxlZCIGY2hlY2tzIg0kdDAzNzY1MjM3ODEwIgdlc3RpbUxQIg0kdDAzODYyNTM4OTc0IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMzg5NzczOTA4NSIJb3V0QW10QW10Ig0kdDA0MTM5NzQxNDc5Ig1pc0dldERpc2FibGVkIg0kdDA0MjM2OTQyNTI0IhhsYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiHWNoZWNrTGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ig0kdDA0MzA0ODQzMTEyIhBkTHBVcGRhdGVBY3Rpb25zIg1scEFzc2V0QW1vdW50IgVpbmRleCIEbmV3WSICZHkiC3RvdGFsR2V0UmF3Ig0kdDA0NDA0MjQ0MDkxIg0kdDA0NDQ2NjQ0NTgxIg5zdW1PZkdldEFzc2V0cyISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCIDYWFiIgNwYWIiA2xhZSIEbGFlYSIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDSR0MDQ2MTIyNDYyNzgiBWVycm9yIg1jaGVja1BheW1lbnRzIgpmYWN0b3J5Q2ZnIgdzdGFraW5nIgp1bnN0YWtlSW52IgF2IgVidXJuQSINJHQwNDc0ODM0NzU2NCINdW5zdGFrZUFtb3VudCIVbm9MZXNzVGhlbkFtb3VudEFzc2V0IgNyZXMiDGNoZWNrQW1vdW50cyINJHQwNDg4MTI0ODg5MyINJHQwNDk3ODg0OTk3NiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiDSR0MDUwMTA0NTAyMDciDSR0MDUwMzU1NTA0NTkiCGFtdEFzU3RyIgdwckFzU3RyIgFrIgJwciIMcmVzU2NhbGVNdWx0Igd1c3JBZGRyIgdwbXRBc0lkIgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiCm9yZGVyVmFsaWQiC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaHwAAWEAgMLXLwABYgkAtgIBAIDC1y8AAWMJALYCAQCAgJC7utat8A0AAWQJALYCAQAAAAFlCQC2AgEAAAABZgkAtgIBAAEAAWcJALYCAQACAAFoCQC2AgEAAwABaQkAtgIBAAQAAWoJALYCAQkAZQIFAWEJAGkCCQBoAgUBYQABBQFhAAFrAgVXQVZFUwABbAIDMTAwAAFtAgExAAFuAgJfXwABbwIAAAFwAAEAAXEAAgABcgADAAFzAAQAAXQAAQABdQACAAF2AAMAAXcABAABeAAFAAF5AAYAAXoABwABQQAIAAFCAAkAAUMAAQABRAAGAAFFAAcAAUYACgABRwkAawMACgUBYQCQTgEBSAIBSQFKCQC8AgMJALYCAQUBSQUBYwkAtgIBBQFKAQFLAgFMAU0JAKADAQkAvAIDBQFMCQC2AgEFAU0FAWMBAU4DAUwBTQFPCQCgAwEJAL0CBAUBTAkAtgIBBQFNBQFjBQFPAQFQAwFRAVIBUwkAawMFAVEFAVIFAVMBAVQBAUwDCQC/AgIFAWQFAUwJAL4CAQUBTAUBTAEBVQEBTAMJAL8CAgUBZAUBTAkAvgIBBQFMBQFMAQFWAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBVwACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFYAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFZAAIRJXMlc19fcHJpY2VfX2xhc3QBAVoCAmFhAmFiCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUCYWEJAMwIAgkApAMBBQJhYgUDbmlsBQFuAQJhYwICYWQCYWUJAKwCAgkArAICCQCsAgICCyVzJXMlc19fUF9fBQJhZAICX18FAmFlAQJhZgICYWQCYWUJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQJhZAICX18FAmFlAQJhZwACDyVzX19hbW91bnRBc3NldAECYWgAAg4lc19fcHJpY2VBc3NldAECYWkAAgclc19fYW1wAQJhagACDSVzX19hZGRvbkFkZHIAAmFrAgclc19fZmVlAAJhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhawUBRwACYW0JALkJAgkAzAgCAgIlcwkAzAgCAgNkTHAFA25pbAUBbgACYW4JALkJAgkAzAgCAgIlcwkAzAgCAhJkTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBbgACYW8JALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoRExwRGVsYXkFA25pbAUBbgACYXAAAQACYXEJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYW8FAmFwAQJhcgACESVzX19mYWN0b3J5Q29uZmlnAQJhcwACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYXQCAmF1AmF2CQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhdQICX18FAmF2AghfX2NvbmZpZwECYXcBAmF4CQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmF4AQJheQACDCVzX19zaHV0ZG93bgECYXoAAh0lc19fYWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAECYUEAAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYUIDAmFDAmFEAmFFCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEUZhaWxlZDogb3JkVmFsaWQ9CQClAwEFAmFDAgsgc25kclZhbGlkPQkApQMBBQJhRAIMIG10Y2hyVmFsaWQ9CQClAwEFAmFFAQJhRgICYUcCYUgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhRwUCYUgJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYUcJAMwIAgIBLgkAzAgCBQJhSAkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQJhSQICYUcCYUgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJhRwUCYUgJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYUcJAMwIAgIBLgkAzAgCBQJhSAkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQJhSgECYUsJAAIBCQC5CQIJAMwIAgIPbHBfc3RhYmxlLnJpZGU6CQDMCAIFAmFLBQNuaWwCASABAmFMAQJhSwkAuQkCCQDMCAICD2xwX3N0YWJsZS5yaWRlOgkAzAgCBQJhSwUDbmlsAgEgAAJhTQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFGAgUEdGhpcwkBAVYAAAJhTgkBAmFGAgUEdGhpcwkBAmFpAAECYU8ACQELdmFsdWVPckVsc2UCCQCbCAIFAmFNCQECYXkABwECYVAACQDZBAEJAQJhRgIFAmFNCQECYXMAAAJhUQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFGAgUCYU0JAQJhQQABAmFSAAQCYVMJAQJhRgIFBHRoaXMJAQJhZwAEAmFUCQECYUYCBQR0aGlzCQECYWgABAJhVQkBAmFJAgUCYU0JAQJhdwEFAmFUBAJhdQkBAmFJAgUCYU0JAQJhdwEFAmFTCQC1CQIJAQJhRgIFAmFNCQECYXQCCQCkAwEFAmF1CQCkAwEFAmFVBQFuAQJhVgECYVcDCQAAAgUCYVcFAWsFBHVuaXQJANkEAQUCYVcBAmFYAQJhVwMJAAACBQJhVwUEdW5pdAUBawkA2AQBCQEFdmFsdWUBBQJhVwECYVkBAmFaCQCbCgkJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYVoFAXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhWgUBdQkA2QQBCQCRAwIFAmFaBQF2CQECYVYBCQCRAwIFAmFaBQF3CQECYVYBCQCRAwIFAmFaBQF4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVoFAXkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhWgUBegkA2QQBCQCRAwIFAmFaBQFBCQDZBAEJAJEDAgUCYVoFAUIAAmJhCQECYVkBCQECYVIAAAJiYgUCYmEAAmJjCAUCYmICXzEAAmJkCAUCYmICXzIAAmJlCAUCYmICXzMAAmJmCAUCYmICXzQAAmJnCAUCYmICXzUAAmJoCAUCYmICXzYAAmJpCAUCYmICXzcAAmJqCAUCYmICXzgAAmJrCAUCYmICXzkBAmJsAAkAtQkCCQECYUYCBQJhTQkBAmFyAAUBbgACYm0JAQJibAAAAmJuCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJibQUBQwIgSW52YWxpZCBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MAAmJvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJibQUBRQIgSW52YWxpZCBzbGlwYWdlIGNvbnRyYWN0IGFkZHJlc3MAAmJwCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJibQUBRgIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwACYnEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJtBQFEAhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzAQJicgoCYnMCYnQCYnUCYnYCYncCYngCYnkCYnoCYkECYkIJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJzCQDMCAIJAKQDAQUCYnQJAMwIAgkApAMBBQJidQkAzAgCCQCkAwEFAmJ2CQDMCAIJAKQDAQUCYncJAMwIAgkApAMBBQJieAkAzAgCCQCkAwEFAmJ5CQDMCAIJAKQDAQUCYnoJAMwIAgkApAMBBQJiQQkAzAgCCQCkAwEFAmJCBQNuaWwFAW4BAmJDBgJiRAJiRQJiRgJidgJieQJiegkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJECQDMCAIJAKQDAQUCYkUJAMwIAgkApAMBBQJiRgkAzAgCCQCkAwEFAmJ2CQDMCAIJAKQDAQUCYnkJAMwIAgkApAMBBQJiegUDbmlsBQFuAQJiRwECYkgDCQAAAgUCYkgCBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFAmJIAQJiSQICYkoCYksJALwCAwUCYkoFAWMFAmJLAQJiTAMCYk0CYk4CYk8EAmJQCQC8AgMJALgCAgUCYk0FAmJOBQFiBQJiTgQCYlEJAL8CAgkAuAICBQJiTwkBAVQBBQJiUAUBZAMJAQEhAQUCYlEJAAIBCQCsAgICCkJpZyBzbHBnOiAJAKYDAQUCYlAJAJQKAgUCYlEJAJkDAQkAzAgCBQJiTQkAzAgCBQJiTgUDbmlsAQJiUgMCYlMCYlQCYlUEAmJQCQC8AgMFAmJUBQFiBQJiUwQCYlYJAL8CAgUCYlUFAmJQAwMFAmJWBgkAvwICBQJiVAUCYlMJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCmAwEFAmJUAgEgCQCmAwEFAmJTAgEgCQCmAwEFAmJQAgEgCQCmAwEFAmJVBQJiVgECYlcEAmJYAmJZAmJaAmNhBAJjYgkBAUgCBQJiWgUCYlgEAmNjCQEBSAIFAmNhBQJiWQkBAmJJAgUCY2MFAmNiAQJjZAMCYloCY2ECY2UEAmNmBQJiaAQCY2cFAmJpBAJjaAkBAmJXBAUCY2YFAmNnBQJiWgUCY2EEAmJLCQEBSAIFAmJaBQJjZgQCYkoJAQFIAgUCY2EFAmNnBAJjaQkBAUgCBQJjZQUBYQQCY2oJAQJiSQIFAmJLBQJjaQQCY2sJAQJiSQIFAmJKBQJjaQkAzAgCBQJjaAkAzAgCBQJjagkAzAgCBQJjawUDbmlsAQJjbAMCYloCY2ECY2UEAmNtCQECY2QDBQJiWgUCY2EFAmNlCQDMCAIJAQFLAgkAkQMCBQJjbQAABQFhCQDMCAIJAQFLAgkAkQMCBQJjbQABBQFhCQDMCAIJAQFLAgkAkQMCBQJjbQACBQFhBQNuaWwBAmNuAQJjbwQCY3AJAGsDBQJjbwUCYWwFAWEJAJQKAgkAZQIFAmNvBQJjcAUCY3ABAmNxBAJjcgJjcwJjdAJjdQQCY3YFAmJlBAJjdwkA2AQBCQEFdmFsdWUBBQJiZgQCY3gJANgEAQkBBXZhbHVlAQUCYmcEAmN5BQJiaAQCY3oFAmJpBAJjQQkApAMBBQJiZAQCY0IICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY3YCC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgkA2AQBBQJjdgUCY3MJAAIBAg9Xcm9uZyBwbXQgYXNzZXQEAmNDCQECYkcBBQJjdwQCY0QJAQFIAgUCY0MFAmN5BAJjRQkBAmJHAQUCY3gEAmNGCQEBSAIFAmNFBQJjegQCY0cJAQJiSQIFAmNGBQJjRAQCY0gJAQFLAgUCY0cFAWEEAmNJCQEBSAIFAmN0BQFhBAJjSgkBAUgCBQJjQgUBYQQCY0sJALwCAwUCY0QFAmNJBQJjSgQCY0wJALwCAwUCY0YFAmNJBQJjSgQCY00JAQFOAwUCY0sFAmN5BQVGTE9PUgQCY04JAQFOAwUCY0wFAmN6BQVGTE9PUgQCY08DCQAAAgUCY3ICAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmN1BQJjTQMJAAACBQJjdwIFV0FWRVMFBHVuaXQJANkEAQUCY3cJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY3UFAmNOAwkAAAIFAmN4AgVXQVZFUwUEdW5pdAkA2QQBBQJjeAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWYCCQClCAEFAmN1BQJjcgkBAmJDBgUCY00FAmNOBQJjdAUCY0gFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFZAAUCY0gJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFaAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0gFA25pbAkAnAoKBQJjTQUCY04FAmN3BQJjeAUCY0MFAmNFBQJjQgUCY0cFAmNBBQJjTwECY1ANAmNyAmJPAmNRAmNSAmNTAmNUAmN1AmNVAmNWAmNXAmNYAmNZAmNaBAJjdgUCYmUEAmRhCQDYBAEJAQV2YWx1ZQEFAmJmBAJkYgkA2AQBCQEFdmFsdWUBBQJiZwQCZGMFAmJqBAJkZAUCYmsEAmRlBQJiaAQCZGYFAmJpBAJjQQkApAMBBQJiZAQCZGcICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY3YCCFdyIGxwIGFzCHF1YW50aXR5BAJjQwMFAmNVCQECYkcBBQJkYQMDBQJjVwkAAAIFAmNaBQJkYQcJAGUCCQECYkcBBQJkYQUCY1kDBQJjVwkBAmJHAQUCZGEJAGUCCQECYkcBBQJkYQUCY1EEAmNFAwUCY1UJAQJiRwEFAmRiAwMFAmNXCQAAAgUCY1oFAmRiBwkAZQIJAQJiRwEFAmRiBQJjWQMFAmNXCQECYkcBBQJkYgkAZQIJAQJiRwEFAmRiBQJjUwQCZGgJAQFIAgUCY1EFAmRlBAJkaQkBAUgCBQJjUwUCZGYEAmRqCQECYkkCBQJkaQUCZGgEAmNECQEBSAIFAmNDBQJkZQQCY0YJAQFIAgUCY0UFAmRmBAJkawMJAAACBQJkZwAABAJjRwUBZAQCZGwFAWQEAmNpCQB2BgkAuQICBQJkaAUCZGkAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFLAgUCY2kFAWEJAQFLAgUCZGgFAmRlCQEBSwIFAmRpBQJkZgkBAmJJAgkAtwICBQJjRgUCZGkJALcCAgUCY0QFAmRoBQJkbAQCY0cJAQJiSQIFAmNGBQJjRAQCZG0JALwCAwkBAVQBCQC4AgIFAmNHBQJkagUBYwUCY0cEAmRsCQEBSAIFAmJPBQFhAwMDBQJjWAkBAiE9AgUCY0cFAWQHCQC/AgIFAmRtBQJkbAcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCZG0CAyA+IAkApgMBBQJkbAQCZG4JAQFIAgUCZGcFAWEEAmRvCQC8AgMFAmRoBQJjRwUBYwQCZHAJALwCAwUCZGkFAWMFAmNHBAJkcQMJAL8CAgUCZG8FAmRpCQCUCgIFAmRwBQJkaQkAlAoCBQJkaAUCZG8EAmRyCAUCZHECXzEEAmRzCAUCZHECXzIEAmNpCQC8AgMFAmRuBQJkcwUCY0YJAJcKBQkBAU4DBQJjaQUBYQUFRkxPT1IJAQFOAwUCZHIFAmRlBQdDRUlMSU5HCQEBTgMFAmRzBQJkZgUHQ0VJTElORwUCY0cFAmRsBAJkdAgFAmRrAl8xBAJkdQgFAmRrAl8yBAJkdggFAmRrAl8zBAJjSAkBAUsCCAUCZGsCXzQFAWEEAmR3CQEBSwIIBQJkawJfNQUBYQMJAGcCAAAFAmR0CQACAQIHTFAgPD0gMAQCZHgDCQEBIQEFAmNWAAAFAmR0BAJkeQkAZQIFAmNRBQJkdQQCZHoJAGUCBQJjUwUCZHYEAmRBAwMFAmNXCQAAAgUCY1oFAmRhBwkAlAoCBQJjWQAAAwMFAmNXCQAAAgUCY1oFAmRiBwkAlAoCAAAFAmNZCQCUCgIFAmR1BQJkdgQCZEIIBQJkQQJfMQQCZEMIBQJkQQJfMgQCZEQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFZAAUCY0gJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFaAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0gJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFjAgUCY3UFAmNyCQECYnIKBQJkQgUCZEMFAmR4BQJjSAUCYk8FAmR3BQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkeQUCZHoFA25pbAkAnwoNBQJkdAUCZHgFAmNIBQJjQwUCY0UFAmRnBQJjdgUCY0EFAmREBQJkeQUCZHoFAmNSBQJjVAECZEUBAmRGBAJkRwkAkQMCBQJkRgAABAJkSAkAkQMCBQJkRgABBAJkSQkAtwICBQJkRwUCZEgDCQAAAgUCZEkFAWUFAWUEAmRKCQENcGFyc2VJbnRWYWx1ZQEFAmFOBAJkSwkAaAIFAmRKAAIEAmNtCQC8AgMFAmRHBQJkSAUBZgQCZEwJALwCAwUCY20FAWkFAWYEAmRNCQC8AgMJALYCAQUCZEsFAmRJBQFmBAJkTgkAtgIBCQBlAgUCZEsAAQoBAmRPAQJkUAQCZFEJALwCAwUCZFAFAmRQBQFmBAJkUgkAvAIDBQJkUQUCZFAFAWYEAmRTCQC8AgMFAmRSBQFmBQJkTAkAvQIECQC3AgIFAmRNCQC8AgMFAmRTBQFnBQFmBQJkUAkAtwICCQC8AgMFAmROBQJkUAUBZgkAvAIDBQFoBQJkUwUBZgUHQ0VJTElORwoBAmRUAgJkVQJkVgMIBQJkVQJfMgUCZFUEAmRQCAUCZFUCXzEEAmRXCQECZE8BBQJkUAQCZFgJAKADAQkAuAICBQJkVwkBBXZhbHVlAQUCZFAEAmRZAwkAZgIAAAUCZFgJAQEtAQUCZFgFAmRYAwkAZwIAAQUCZFkJAJQKAgUCZFcGCQCUCgIFAmRXBwQCZFoJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZWEKAAJlYgUCZFoKAAJlYwkAkAMBBQJlYgoAAmVkCQCUCgIFAmRJBwoBAmVlAgJlZgJlZwMJAGcCBQJlZwUCZWMFAmVmCQECZFQCBQJlZgkAkQMCBQJlYgUCZWcKAQJlaAICZWYCZWcDCQBnAgUCZWcFAmVjBQJlZgkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZWgCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCBQJlZAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJkUAgFAmVhAl8xBAJlaQgFAmVhAl8yAwUCZWkFAmRQCQACAQkArAICAhlEIGNhbGN1bGF0aW9uIGVycm9yLCBEID0gCQCmAwEFAmRQAQJlagECZEYEAmVrBQFnBAJkRwkAkQMCBQJkRgAABAJkSAkAkQMCBQJkRgABBAJlbAkApwMBBQFsBAJkSgkAuQICCQCnAwEFAmFOBQJlbAQCZEkJALcCAgUCZEcFAmRIAwkAAAIFAmRJBQFlBQFlBAJkSwkAuQICBQJkSgUCZWsEAmRMCQC5AgIJALkCAgkAuQICBQJkRwUCZEgFAmVrBQJlawQCZW0JALoCAgkAuQICBQJkSwUCZEkFAmVsBAJlbgkAuAICBQJkSwUCZWwEAmVvCQC3AgIFAmVrBQFmCgECZFQCAmRVAmVwBAJlcQUCZFUEAmRQCAUCZXECXzEEAmVpCAUCZXECXzIDCQECIT0CBQJlaQUEdW5pdAUCZFUEAmRTCQC6AgIJALkCAgkAuQICBQJkUAUCZFAFAmRQBQJkTAQCZFcJALoCAgkAuQICCQC3AgIFAmVtCQC5AgIFAmRTBQJlawUCZFAJALcCAgkAugICCQC5AgIFAmVuBQJkUAUCZWwJALkCAgUCZW8FAmRTBAJkWQkBAVUBCQC4AgIFAmRXCQEFdmFsdWUBBQJkUAMJAMACAgUBZgUCZFkJAJQKAgUCZFcFAmVwCQCUCgIFAmRXBQR1bml0BAJkWgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlcgoAAmViBQJkWgoAAmVjCQCQAwEFAmViCgACZWQJAJQKAgUCZEkFBHVuaXQKAQJlZQICZWYCZWcDCQBnAgUCZWcFAmVjBQJlZgkBAmRUAgUCZWYJAJEDAgUCZWIFAmVnCgECZWgCAmVmAmVnAwkAZwIFAmVnBQJlYwUCZWYJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmVoAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgUCZWQAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZFAIBQJlcgJfMQQCZWkIBQJlcgJfMgMJAQIhPQIFAmVpBQR1bml0BQJkUAkAAgEJAKwCAgIZRCBjYWxjdWxhdGlvbiBlcnJvciwgRCA9IAkApgMBBQJkUAECZXMDAmRGAmRWAmV0BAJlawUBZwQCZXUJAJEDAgUCZEYDCQAAAgUCZFYAAAABAAAEAmVsCQCnAwEFAWwEAmRKCQC5AgIJAKcDAQUCYU4FAmVsBAJkSQUCZXUEAmRLCQC5AgIFAmRKBQJlawQCZXYJALoCAgkAuQICCQC5AgIJALoCAgkAuQICBQJldAUCZXQJALkCAgUCZXUFAmVrBQJldAUCZWwJALkCAgUCZEsFAmVrBAJldwkAuAICCQC3AgIFAmRJCQC6AgIJALkCAgUCZXQFAmVsBQJkSwUCZXQKAQJkVAICZFUCZXAEAmV4BQJkVQQCZXkIBQJleAJfMQQCZWkIBQJleAJfMgMJAQIhPQIFAmVpBQR1bml0BQJkVQQCZXoJALoCAgkAtwICCQC5AgIFAmV5BQJleQUCZXYJALcCAgkAuQICBQFnBQJleQUCZXcEAmVBCQEBVQEJALgCAgUCZXoJAQV2YWx1ZQEFAmV5AwkAwAICBQFmBQJlQQkAlAoCBQJlegUCZXAJAJQKAgUCZXoFBHVuaXQEAmRaCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmVCCgACZWIFAmRaCgACZWMJAJADAQUCZWIKAAJlZAkAlAoCBQJldAUEdW5pdAoBAmVlAgJlZgJlZwMJAGcCBQJlZwUCZWMFAmVmCQECZFQCBQJlZgkAkQMCBQJlYgUCZWcKAQJlaAICZWYCZWcDCQBnAgUCZWcFAmVjBQJlZgkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZWgCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCBQJlZAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJleQgFAmVCAl8xBAJlaQgFAmVCAl8yAwkBAiE9AgUCZWkFBHVuaXQFAmV5CQACAQkArAICAhlZIGNhbGN1bGF0aW9uIGVycm9yLCBZID0gCQCmAwEFAmV5AQJlQwMCZUQCZUUCZUYEAmVHCQC8AgMJAQJkRQEJAMwIAgUCZUQJAMwIAgUCZUUFA25pbAUBYwUCZUYDCQAAAgUCZUYFAWUFAWUFAmVHAQJlSAMCZUkCZUoCZUsEAmVMCQC4AgIJALYCAQkBAmJHAQkBAmFYAQUCYmYFAmVJBAJlTQkAuAICCQC2AgEJAQJiRwEJAQJhWAEFAmJnBQJlSgQCZU4JALgCAgkAtgIBCAkBBXZhbHVlAQkA7AcBBQJiZQhxdWFudGl0eQUCZUsEAmVPCQECZUMDBQJlTAUCZU0FAmVOBQJlTwECZVADAmVRAmVSAmVLBAJlTAkAZAIJAQJiRwEJAQJhWAEFAmJmBQJlUQQCZU0JAGQCCQECYkcBCQECYVgBBQJiZwUCZVIEAmVOCQBkAggJAQV2YWx1ZQEJAOwHAQUCYmUIcXVhbnRpdHkFAmVLBAJlRwkBAmVDAwkAtgIBBQJlTAkAtgIBBQJlTQkAtgIBBQJlTgQCZVMJAMwIAgkBDEludGVnZXJFbnRyeQIFAmFuBQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYW0JAKYDAQUCZUcFA25pbAkAlAoCBQJlUwUCZUcBAmVUAgJlVQJlRwMJAMACAgUCZUcFAmVVBgkBAmFKAQIidXBkYXRlZCBETHAgbG93ZXIgdGhhbiBjdXJyZW50IERMcAECZVYBAmVXBAJlWAgFAmVXBmFtb3VudAQCZVkJAG4ECAUCZVcGYW1vdW50CAUCZVcFcHJpY2UFAWEFBUZMT09SBAJlWgMJAAACCAUCZVcJb3JkZXJUeXBlBQNCdXkJAJQKAgUCZVgJAQEtAQUCZVkJAJQKAgkBAS0BBQJlWAUCZVkEAmVRCAUCZVoCXzEEAmVSCAUCZVoCXzIDAwMJAQJhTwAGCQAAAgUCYmQFAXIGCQAAAgUCYmQFAXMJAAIBAg1BZG1pbiBibG9ja2VkAwMJAQIhPQIICAUCZVcJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BQJiZgYJAQIhPQIICAUCZVcJYXNzZXRQYWlyCnByaWNlQXNzZXQFAmJnCQACAQIJV3IgYXNzZXRzBAJmYQkApwMBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQJhbQQCZmIJAQJlUAMFAmVRBQJlUgAABAJmYwgFAmZiAl8xBAJmZAgFAmZiAl8yBAJmZQkAwAICBQJmZAUCZmEFAmZlAQJmZgECZFYDCQECIT0CCQCQAwEIBQJkVghwYXltZW50cwABCQACAQIKMSBwbW50IGV4cAQCZmcJAQV2YWx1ZQEJAJEDAggFAmRWCHBheW1lbnRzAAAEAmNzCQEFdmFsdWUBCAUCZmcHYXNzZXRJZAQCY1kIBQJmZwZhbW91bnQEAmRrCQECY3EECQDYBAEIBQJkVg10cmFuc2FjdGlvbklkCQDYBAEFAmNzBQJjWQgFAmRWBmNhbGxlcgQCY00IBQJkawJfMQQCY04IBQJkawJfMgQCY0EJAQ1wYXJzZUludFZhbHVlAQgFAmRrAl85BAJjTwgFAmRrA18xMAMDCQECYU8ABgkAAAIFAmNBBQFzCQACAQkArAICAg9BZG1pbiBibG9ja2VkOiAJAKQDAQUCY0EJAJcKBQUCY00FAmNOBQJjWQUCY3MFAmNPAQJmaAoCZmkCYWUCZmoCZmsCYk8CY1YCY1cCY1gCY1kCY1oEAmRrCQECY1ANBQJhZQUCYk8ICQEFdmFsdWUBBQJmagZhbW91bnQICQEFdmFsdWUBBQJmagdhc3NldElkCAkBBXZhbHVlAQUCZmsGYW1vdW50CAkBBXZhbHVlAQUCZmsHYXNzZXRJZAUCZmkJAAACBQJhZQIABQJjVgUCY1cFAmNYBQJjWQUCY1oEAmNBCQENcGFyc2VJbnRWYWx1ZQEIBQJkawJfOAMDAwkBAmFPAAYJAAACBQJjQQUBcQYJAAACBQJjQQUBcwkAAgEJAKwCAgIIQmxvY2tlZDoJAKQDAQUCY0EFAmRrAQJmbAUCZm0CY3MCY3UCYWUCZm4EAmN3CQDYBAEJAQV2YWx1ZQEFAmJmBAJjeAkA2AQBCQEFdmFsdWUBBQJiZwQCY3YFAmJlBAJkZQUCYmgEAmRmBQJiaQQCZU4JALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjdgIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCZm8DCQC/AgIFAmVOBQFlBgkAAgECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZm8FAmZvBAJjQwkBAmJHAQUCY3cEAmNFCQECYkcBBQJjeAQCZnADCQAAAgUCYWUCAAkAlAoCBQJjQwUCY0UDCQAAAgUCY3MFAmN3AwkAZgIFAmZtBQJjQwkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgkAZQIFAmNDBQJmbQUCY0UDCQAAAgUCY3MFAmN4AwkAZgIFAmZtBQJjRQkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgUCY0MJAGUCBQJjRQUCZm0JAAIBAhB3cm9uZyBwbXRBc3NldElkBAJmcQgFAmZwAl8xBAJmcggFAmZwAl8yBAJmcwMJAAACBQJjcwUCY3cJAJQKAgUCZm0AAAMJAAACBQJjcwUCY3gJAJQKAgAABQJmbQkAAgECD2ludmFsaWQgcGF5bWVudAQCZnQIBQJmcwJfMQQCZnUIBQJmcwJfMgQCZnYDBQJmbgkAlQoDCAkBAmNuAQUCZnQCXzEICQECY24BBQJmdQJfMQgJAQJjbgEFAmZtAl8yCQCVCgMFAmZ0BQJmdQAABAJmdwgFAmZ2Al8xBAJmeAgFAmZ2Al8yBAJjcAgFAmZ2Al8zBAJmeQkAZAIFAmZxBQJmdwQCZnoJAGQCBQJmcgUCZngEAmJUCQECZEUBCQDMCAIJALYCAQUCZnEJAMwIAgkAtgIBBQJmcgUDbmlsBAJiUwkBAmRFAQkAzAgCCQC2AgEFAmZ5CQDMCAIJALYCAQUCZnoFA25pbAQCZkEDCQC/AgIFAmJTBQJiVAYJAQV0aHJvdwADCQAAAgUCZkEFAmZBBAJmQgkAvQIEBQJlTgkAuAICBQJiUwUCYlQFAmJUBQVGTE9PUgQCY0gJAQFLAgkBAmJJAgkBAUgCBQJmegUCZGYJAQFIAgUCZnkFAmRlBQFhBAJkRAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVkABQJjSAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVoCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjSAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMCBQJjdQUCYWUJAQJicgoFAmZ0BQJmdQkAoAMBBQJmQgUCY0gAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJmQwkAawMFAmZyBQFhBQJmcQQCZkQJAGsDBQJmbQUBYQkAZAIFAmZDBQFhBAJmRQkAZQIFAmZtBQJmRAQCZkYJALwCAwUCZU4JALYCAQUCZkUJALYCAQUCZnIEAmZHCQCgAwEJALwCAwkAuAICBQJmQgUCZkYFAWIFAmZGCQCWCgQJAKADAQUCZkIFAmREBQJjcAUCZkcJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZIBgJmSQJmSgJmSwJmaQJmTAJmTQQCY3YJANgEAQkBBXZhbHVlAQUCYmUEAmN3CQDYBAEJAQV2YWx1ZQEFAmJmBAJjeAkA2AQBCQEFdmFsdWUBBQJiZwQCZk4FAmJoBAJmTwUCYmkEAmZQBQJiZAQCY3UDCQAAAgUCZmkFAmJxBQJmTAUCZmkEAmZnCQEFdmFsdWUBCQCRAwIFAmZLAAAEAmNzCQEFdmFsdWUBCAUCZmcHYXNzZXRJZAQCY1kIBQJmZwZhbW91bnQEAmVPCQECZUgDBQFlBQFlBQFlAwkAAAIFAmVPBQJlTwQCY3IJANgEAQUCZk0DCQECIT0CBQJjdgkA2AQBBQJjcwkAAgECCFdyb25nIExQBAJjQwkBAmJHAQUCY3cEAmNFCQECYkcBBQJjeAQCZlEKAAJmUgkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmZJCQDMCAIFAmNZBQNuaWwFA25pbAMJAAECBQJmUgIKKEludCwgSW50KQUCZlIJAAIBCQCsAgIJAAMBBQJmUgIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQMJAAACBQJmUQUCZlEEAmNwCAUCZlECXzIEAmZTCAUCZlECXzEEAmZUAwMJAGYCBQJmSgAACQBmAgUCZkoFAmZTBwkBAmFKAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmSgUDbmlsAgAFAmZTBAJmVQMJAAACBQJmSQUCY3cJAJYKBAUCZlQAAAkAZQIJAGUCBQJjQwUCZlQFAmNwBQJjRQMJAAACBQJmSQUCY3gJAJYKBAAABQJmVAUCY0MJAGUCCQBlAgUCY0UFAmZUBQJjcAkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJmVggFAmZVAl8xBAJmVwgFAmZVAl8yBAJmeQgFAmZVAl8zBAJmeggFAmZVAl80BAJmWAkBAmJJAgkBAUgCBQJmegUCZk8JAQFIAgUCZnkFAmZOBAJmWQkBAUsCBQJmWAUBYQQCZloDCQAAAgUCZkkCBVdBVkVTBQR1bml0CQDZBAEFAmZJBAJnYQMJAGYCBQJjcAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFRBQJjcAUCZloFA25pbAUDbmlsBAJjTwkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmN1BQJmVAUCZloJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFmAgkApQgBBQJjdQUCY3IJAQJiQwYFAmZWBQJmVwUCY1kFAmZZBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWQAFAmZZCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmZZBQNuaWwFAmdhAwkAAAIFAmNPBQJjTwQCZ2IJAPwHBAUCYU0CBGJ1cm4JAMwIAgUCY1kFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3MFAmNZBQNuaWwDCQAAAgUCZ2IFAmdiBAJnYwQCZ2QDCQAAAgUEdGhpcwUCYVEAAAUCY3AEAmdlAwkAAAIJAQJhVgEFAmZJBQJiZgYHAwUCZ2UJAJQKAgkBAS0BCQBkAgUCZlMFAmdkAAAJAJQKAgAACQEBLQEJAGQCBQJmUwUCZ2QEAmVRCAUCZ2MCXzEEAmVSCAUCZ2MCXzIEAmdmCQECZVADBQJlUQUCZVIAAAQCZ2cIBQJnZgJfMQQCZUcIBQJnZgJfMgQCZ2gJAQJlVAIFAmVPBQJlRwMJAAACBQJnaAUCZ2gJAJQKAgkAzggCBQJjTwUCZ2cFAmZUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJnaQAEAmdqCQCiCAEJAQFXAAMJAAECBQJnagIGU3RyaW5nBAJkSQUCZ2oJANkEAQUCZEkDCQABAgUCZ2oCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZ2sABAJnagkAoggBCQEBWAADCQABAgUCZ2oCBlN0cmluZwQCZEkFAmdqCQDZBAEFAmRJAwkAAQIFAmdqAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAAmdsCQACAQIRUGVybWlzc2lvbiBkZW5pZWQBAmdtAQJkVgQCZ2oJAQJnaQADCQABAgUCZ2oCCkJ5dGVWZWN0b3IEAmduBQJnagkAAAIIBQJkVg9jYWxsZXJQdWJsaWNLZXkFAmduAwkAAQIFAmdqAgRVbml0CQAAAggFAmRWBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJnbwECZFYEAmdqCQECZ2kAAwkAAQIFAmdqAgpCeXRlVmVjdG9yBAJnbgUCZ2oDCQAAAggFAmRWD2NhbGxlclB1YmxpY0tleQUCZ24GBQJnbAMJAAECBQJnagIEVW5pdAMJAAACCAUCZFYGY2FsbGVyBQR0aGlzBgUCZ2wJAAIBAgtNYXRjaCBlcnJvchwCZFYBC2NvbnN0cnVjdG9yAQFWBAJldgkBAmdvAQUCZFYDCQAAAgUCZXYFAmV2CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFWAAUBVgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWAQpzZXRNYW5hZ2VyAQJncAQCZXYJAQJnbwEFAmRWAwkAAAIFAmV2BQJldgQCZ3EJANkEAQUCZ3ADCQAAAgUCZ3EFAmdxCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFYAAUCZ3AFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgEOY29uZmlybU1hbmFnZXIABAJjbQkBAmdrAAQCZ3IDCQEJaXNEZWZpbmVkAQUCY20GCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmdyBQJncgQCZ3MDCQAAAggFAmRWD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCY20GCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmdzBQJncwkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwAJANgEAQkBBXZhbHVlAQUCY20JAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVgABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBA3B1dAICZ3QCZ3UEAmd2CQECYmwABAJndwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZ3YFAUMCCldyIHN0IGFkZHIEAmd4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJndgUBRQIKV3Igc2wgYWRkcgMJAGYCAAAFAmd0CQACAQIOV3Jvbmcgc2xpcHBhZ2UDCQECIT0CCQCQAwEIBQJkVghwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJneQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZFYIcGF5bWVudHMAAAZhbW91bnQEAmd6CQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkVghwYXltZW50cwABBmFtb3VudAQCZUwJALgCAgkAtgIBCQECYkcBCQECYVgBBQJiZgUCZ3kDCQAAAgUCZUwFAmVMBAJlTQkAuAICCQC2AgEJAQJiRwEJAQJhWAEFAmJnBQJnegMJAAACBQJlTQUCZU0EAmVOCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJlCHF1YW50aXR5AwkAAAIFAmVOBQJlTgQCZU8JAQJlSAMFAmd5BQJnegkAtgIBAAADCQAAAgUCZU8FAmVPBAJnQQkBAmZoCgkApQgBCAUCZFYGY2FsbGVyCQDYBAEIBQJkVg10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmRWCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmRWCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJkVghwYXltZW50cwABBQJndAYHBgAAAgAEAmR4CAUCZ0ECXzIEAmdCCAUCZ0ECXzcEAmNPCAUCZ0ECXzkEAmR5CAUCZ0EDXzEwBAJkeggFAmdBA18xMQQCY3cIBQJnQQNfMTIEAmN4CAUCZ0EDXzEzBAJkawkA/AcEBQJhTQIEZW1pdAkAzAgCBQJkeAUDbmlsBQNuaWwDCQAAAgUCZGsFAmRrBAJnQwQCZ2oFAmRrAwkAAQIFAmdqAgdBZGRyZXNzBAJnRAUCZ2oJAPwHBAUCZ0QCBGVtaXQJAMwIAgUCZHgFA25pbAUDbmlsBQR1bml0AwkAAAIFAmdDBQJnQwQCZ0UDCQBmAgUCZHkAAAkA/AcEBQJneAIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmN3BQJkeQUDbmlsBQNuaWwDCQAAAgUCZ0UFAmdFBAJnRgMJAGYCBQJkegAACQD8BwQFAmd4AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3gFAmR6BQNuaWwFA25pbAMJAAACBQJnRgUCZ0YEAmdHAwUCZ3UEAmdICQD8BwQFAmd3AgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnQgUCZHgFA25pbAMJAAACBQJnSAUCZ0gFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZFYGY2FsbGVyBQJkeAUCZ0IFA25pbAQCZ0kJAQJlUAMAAAAAAAAEAmdnCAUCZ0kCXzEEAmVHCAUCZ0kCXzIEAmdoCQECZVQCBQJlTwUCZUcDCQAAAgUCZ2gFAmdoBAJnSgMJAMACAgUCZUcFAmVPBgkBAmFKAQIidXBkYXRlZCBETHAgbG93ZXIgdGhhbiBjdXJyZW50IERMcAMJAAACBQJnSgUCZ0oEAmdLCAkBBXZhbHVlAQkA7AcBBQJiZQhxdWFudGl0eQMJAAACBQJnSwUCZ0sJAM4IAgkAzggCBQJjTwUCZ0cFAmdnCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWAQtwdXRPbmVUa25WMgICZkoCZ3UEAmdMCgACZlIJAPwHBAUCYU0CKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJmUgIHQm9vbGVhbgUCZlIJAAIBCQCsAgIJAAMBBQJmUgIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZ00DAwMJAQJhTwAGCQAAAgUCYmQFAXEGCQAAAgUCYmQFAXMGBQJnTAQCZ04JAMwIAgMDCQEBIQEFAmdNBgkBAmdtAQUCZFYGCQECYUoBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkVghwYXltZW50cwABBgkBAmFKAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ04FAmdOBAJjdwkA2AQBCQEFdmFsdWUBBQJiZgQCY3gJANgEAQkBBXZhbHVlAQUCYmcEAmN2BQJiZQQCZk4FAmJoBAJmTwUCYmkEAmN1AwkAAAIIBQJkVgZjYWxsZXIFBHRoaXMIBQJkVgxvcmlnaW5DYWxsZXIIBQJkVgZjYWxsZXIEAmZnCQEFdmFsdWUBCQCRAwIIBQJkVghwYXltZW50cwAABAJjcwkA2AQBCQEFdmFsdWUBCAUCZmcHYXNzZXRJZAQCY1kIBQJmZwZhbW91bnQEAmVPAwkAAAIIBQJmZwdhc3NldElkBQJiZgkBAmVIAwkAtgIBBQJjWQkAtgIBAAAJALYCAQAACQECZUgDCQC2AgEAAAkAtgIBBQJjWQkAtgIBAAADCQAAAgUCZU8FAmVPBAJnTwkBAmZsBQUCY1kFAmNzCQClCAEFAmN1CQDYBAEIBQJkVg10cmFuc2FjdGlvbklkBgMJAAACBQJnTwUCZ08EAmNwCAUCZ08CXzMEAmNPCAUCZ08CXzIEAmdQCAUCZ08CXzEEAmR4AwMJAGYCBQJmSgAACQBmAgUCZkoFAmdQBwkBAmFKAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmSgUDbmlsAgAFAmdQBAJnQQkA/AcEBQJhTQIEZW1pdAkAzAgCBQJkeAUDbmlsBQNuaWwDCQAAAgUCZ0EFAmdBBAJnQwQCZ2oFAmdBAwkAAQIFAmdqAgdBZGRyZXNzBAJnRAUCZ2oJAPwHBAUCZ0QCBGVtaXQJAMwIAgUCZHgFA25pbAUDbmlsBQR1bml0AwkAAAIFAmdDBQJnQwQCZ0cDBQJndQQCZ0gJAPwHBAUCYm4CBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmN2BQJkeAUDbmlsAwkAAAIFAmdIBQJnSAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkVgZjYWxsZXIFAmR4BQJjdgUDbmlsBAJnYQMJAGYCBQJjcAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFRBQJjcAkA2QQBBQJjcwUDbmlsBQNuaWwEAmdRAwkAAAIFBHRoaXMFAmFRCQCUCgIAAAAABAJnUgMJAAACCAUCZmcHYXNzZXRJZAUCYmYGBwMFAmdSCQCUCgIJAQEtAQUCY3AAAAkAlAoCAAAJAQEtAQUCY3AEAmVRCAUCZ1ECXzEEAmVSCAUCZ1ECXzIEAmdTCQECZVADBQJlUQUCZVIAAAQCZ2cIBQJnUwJfMQQCZUcIBQJnUwJfMgQCZ2gJAQJlVAIFAmVPBQJlRwMJAAACBQJnaAUCZ2gJAJQKAgkAzggCCQDOCAIJAM4IAgUCY08FAmdHBQJnYQUCZ2cFAmR4CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWAQNnZXQABAJlTwkBAmVIAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlTwUCZU8EAmRrCQECZmYBBQJkVgQCZ1QIBQJkawJfMQQCY04IBQJkawJfMgQCY1kIBQJkawJfMwQCY3MIBQJkawJfNAQCY08IBQJkawJfNQQCZXcJAPwHBAUCYU0CBGJ1cm4JAMwIAgUCY1kFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3MFAmNZBQNuaWwDCQAAAgUCZXcFAmV3BAJnVQkBAmVQAwkBAS0BBQJnVAkBAS0BBQJjTgAABAJnZwgFAmdVAl8xBAJlRwgFAmdVAl8yBAJnaAkBAmVUAgUCZU8FAmVHAwkAAAIFAmdoBQJnaAkAzggCBQJjTwUCZ2cJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBC2dldE9uZVRrblYyAgJmSQJmSgQCZ0wKAAJmUgkA/AcEBQJhTQIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmZSAgdCb29sZWFuBQJmUgkAAgEJAKwCAgkAAwEFAmZSAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnVgMDCQECYU8ABgkAAAIFAmJkBQFzBgUCZ0wEAmdOCQDMCAIDAwkBASEBBQJnVgYJAQJnbQEFAmRWBgkBAmFKAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZFYIcGF5bWVudHMAAQYJAQJhSgECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdOBQJnTgQCZ1cJAQJmSAYFAmZJBQJmSggFAmRWCHBheW1lbnRzCAUCZFYGY2FsbGVyCAUCZFYMb3JpZ2luQ2FsbGVyCAUCZFYNdHJhbnNhY3Rpb25JZAQCY08IBQJnVwJfMQQCZlQIBQJnVwJfMgkAlAoCBQJjTwUCZlQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBCnJlZnJlc2hETHAABAJnWAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQJhbgAABAJnWQMJAGcCCQBlAgUGaGVpZ2h0BQJnWAUCYXEFBHVuaXQJAQJhSgEJALkJAgkAzAgCCQCkAwEFAmFxCQDMCAICLyBibG9ja3MgaGF2ZSBub3QgcGFzc2VkIHNpbmNlIHRoZSBwcmV2aW91cyBjYWxsBQNuaWwCAAMJAAACBQJnWQUCZ1kEAmZhCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQJhbQIBMAkBAmFMAQILaW52YWxpZCBkTHAEAmdaCQECZVADAAAAAAAABAJoYQgFAmdaAl8xBAJlRwgFAmdaAl8yBAJlUwMJAQIhPQIFAmZhBQJlRwUCaGEJAQJhSgECEm5vdGhpbmcgdG8gcmVmcmVzaAkAlAoCBQJlUwkApgMBBQJlRwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgETZ2V0T25lVGtuVjJSRUFET05MWQICZkkCaGIEAmN3CQDYBAEJAQV2YWx1ZQEFAmJmBAJjeAkA2AQBCQEFdmFsdWUBBQJiZwQCY3YJANgEAQkBBXZhbHVlAQUCYmUEAmRGCQDMCAIJALYCAQkBAmJHAQUCY3cJAMwIAgkAtgIBCQECYkcBBQJjeAUDbmlsBAJlRgkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCY3YCEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmJUCQECZEUBBQJkRgQCYlMJALgCAgUCYlQJALwCAwkAtgIBBQJoYgUCYlQFAmVGBAJoYwMJAAACBQJmSQUCY3cAAAMJAAACBQJmSQUCY3gAAQkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJoZAkBAmVzAwUCZEYFAmhjBQJiUwQCaGUJALgCAgkAkQMCBQJkRgUCaGMFAmhkBAJoZgkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALgCAgUCaGUFAWYFA25pbAQCaGcJAQJjbgEFAmhmBAJmUwgFAmhnAl8xBAJjcAgFAmhnAl8yCQCUCgIFA25pbAkAlAoCBQJmUwUCY3ACZFYBHGdldE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmZJAmhiBAJjdwkA2AQBCQEFdmFsdWUBBQJiZgQCY3gJANgEAQkBBXZhbHVlAQUCYmcEAmN2CQDYBAEJAQV2YWx1ZQEFAmJlBAJjQwkBAmJHAQUCY3cEAmNFCQECYkcBBQJjeAQCaGgKAAJmUgkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmZJCQDMCAIFAmhiBQNuaWwFA25pbAMJAAECBQJmUgIKKEludCwgSW50KQUCZlIJAAIBCQCsAgIJAAMBBQJmUgIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZlMIBQJoaAJfMQQCY3AIBQJoaAJfMgQCZGsJAQJjcQQCAAUCY3YFAmhiBQR0aGlzBAJjTQgFAmRrAl8xBAJjTggFAmRrAl8yBAJoaQkAZAIFAmNNBQJjTgQCZkcDCQAAAgUCaGkAAAMJAAACBQJmUwAAAAAJAAIBAhdib251cyBjYWxjdWxhdGlvbiBlcnJvcgkAawMJAGUCBQJmUwUCaGkFAWEFAmhpCQCUCgIFA25pbAkAlQoDBQJmUwUCY3AFAmZHAmRWAQlnZXROb0xlc3MCAmhqAmhrBAJobAkAtgIBCQECYkcBCQECYVgBBQJiZgMJAAACBQJobAUCaGwEAmhtCQC2AgEJAQJiRwEJAQJhWAEFAmJnAwkAAAIFAmhtBQJobQQCaG4JALYCAQgJAQV2YWx1ZQEJAOwHAQUCYmUIcXVhbnRpdHkDCQAAAgUCaG4FAmhuBAJobwkAuAICBQJobgkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZFYIcGF5bWVudHMAAAZhbW91bnQDCQAAAgUCaG8FAmhvBAJkawkBAmZmAQUCZFYEAmNNCAUCZGsCXzEEAmNOCAUCZGsCXzIEAmNZCAUCZGsCXzMEAmNzCAUCZGsCXzQEAmNPCAUCZGsCXzUDCQBmAgUCaGoFAmNNCQACAQkArAICCQCsAgIJAKwCAgIJRmFpbGVkOiAgCQCkAwEFAmNNAgMgPCAJAKQDAQUCaGoDCQBmAgUCaGsFAmNOCQACAQkArAICCQCsAgIJAKwCAgIIRmFpbGVkOiAJAKQDAQUCY04CAyA8IAkApAMBBQJoawQCZU8JAQJlSAMJALYCAQAACQC2AgEAAAkAtgIBBQJjWQQCaHAJAPwHBAUCYU0CBGJ1cm4JAMwIAgUCY1kFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3MFAmNZBQNuaWwDCQAAAgUCaHAFAmhwBAJocQkBAmVQAwkBAS0BBQJjTQkBAS0BBQJjTgAABAJnZwgFAmhxAl8xBAJlRwgFAmhxAl8yBAJocgMJAMACAgUCZUcFAmVPBgkBAmFKAQkAuQkCCQDMCAICInVwZGF0ZWQgRExwIGxvd2VyIHRoYW4gY3VycmVudCBETHAJAMwIAgkApgMBBQJobAkAzAgCCQCmAwEFAmhtCQDMCAIJAKYDAQUCZU8JAMwIAgkApgMBBQJlRwkAzAgCCQCmAwEFAmhuCQDMCAIJAKYDAQUCaG8FA25pbAIBIAMJAAACBQJocgUCaHIJAM4IAgUCY08FAmdnCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWAQ11bnN0YWtlQW5kR2V0AQJjbwQCaHMDCQECIT0CCQCQAwEIBQJkVghwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCaHMFAmhzBAJodAkBAmJsAAQCZ0IFAmJlBAJodQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaHQFAUMCCldyIHN0IGFkZHIEAmVPCQECZUgDCQC2AgEAAAkAtgIBAAAJALYCAQAABAJodgkA/AcEBQJodQIHdW5zdGFrZQkAzAgCCQDYBAEFAmdCCQDMCAIFAmNvBQNuaWwFA25pbAMJAAACBQJodgUCaHYEAmRrCQECY3EECQDYBAEIBQJkVg10cmFuc2FjdGlvbklkCQDYBAEFAmdCBQJjbwgFAmRWBmNhbGxlcgQCY00IBQJkawJfMQQCY04IBQJkawJfMgQCY0EJAQ1wYXJzZUludFZhbHVlAQgFAmRrAl85BAJjTwgFAmRrA18xMAQCaHcDAwkBAmFPAAYJAAACBQJjQQUBcwkAAgEJAKwCAgIJQmxvY2tlZDogCQCkAwEFAmNBBgMJAAACBQJodwUCaHcEAmh4CQD8BwQFAmFNAgRidXJuCQDMCAIFAmNvBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdCBQJjbwUDbmlsAwkAAAIFAmh4BQJoeAQCaHkJAQJlUAMJAQEtAQUCY00JAQEtAQUCY04AAAQCZ2cIBQJoeQJfMQQCZUcIBQJoeQJfMgQCZ2gJAQJlVAIFAmVPBQJlRwMJAAACBQJnaAUCZ2gJAM4IAgUCY08FAmdnCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJoegJoQQJoawQCZ1YDCQECYU8ABgkAAAIFAmJkBQFzBAJnTgkAzAgCAwkBASEBBQJnVgYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkVghwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdOBQJnTgQCZU8JAQJlSAMJALYCAQAACQC2AgEAAAkAtgIBAAAEAmh2CQD8BwQFAmJuAgd1bnN0YWtlCQDMCAIJANgEAQUCYmUJAMwIAgUCaHoFA25pbAUDbmlsAwkAAAIFAmh2BQJodgQCaEIJAQJjcQQJANgEAQgFAmRWDXRyYW5zYWN0aW9uSWQJANgEAQUCYmUFAmh6CAUCZFYGY2FsbGVyBAJjTQgFAmhCAl8xBAJjTggFAmhCAl8yBAJjTwgFAmhCA18xMAQCaEMJAMwIAgMJAGcCBQJjTQUCaEEGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaEEFA25pbAIACQDMCAIDCQBnAgUCY04FAmhrBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaGsFA25pbAIABQNuaWwDCQAAAgUCaEMFAmhDBAJocAkA/AcEBQJhTQIEYnVybgkAzAgCBQJoegUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiZQUCaHoFA25pbAMJAAACBQJocAUCaHAEAmhECQECZVADCQEBLQEFAmNNCQEBLQEFAmNOAAAEAmdnCAUCaEQCXzEEAmVHCAUCaEQCXzIEAmdoCQECZVQCBQJlTwUCZUcDCQAAAgUCZ2gFAmdoCQDOCAIFAmNPBQJnZwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgEVdW5zdGFrZUFuZEdldE9uZVRrblYyAwJoegJmSQJmSgQCZ0wKAAJmUgkA/AcEBQJhTQIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmZSAgdCb29sZWFuBQJmUgkAAgEJAKwCAgkAAwEFAmZSAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnVgMDCQECYU8ABgkAAAIFAmJkBQFzBgUCZ0wEAmdOCQDMCAIDAwkBASEBBQJnVgYJAQJnbQEFAmRWBgkBAmFKAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZFYIcGF5bWVudHMAAAYJAQJhSgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdOBQJnTgQCaHQJAQJibAAEAmdCBQJiZQQCaHUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmh0BQFDAgpXciBzdCBhZGRyBAJodgkA/AcEBQJodQIHdW5zdGFrZQkAzAgCCQDYBAEFAmdCCQDMCAIFAmh6BQNuaWwFA25pbAMJAAACBQJodgUCaHYEAmhFCQECZkgGBQJmSQUCZkoJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdCBQJoegUDbmlsCAUCZFYGY2FsbGVyCAUCZFYMb3JpZ2luQ2FsbGVyCAUCZFYNdHJhbnNhY3Rpb25JZAQCY08IBQJoRQJfMQQCZlQIBQJoRQJfMgkAlAoCBQJjTwUCZlQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBHHB1dE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmhGAmhHBAJoSAkBAmZsBQUCaEYFAmhHAgACAAYEAmZCCAUCaEgCXzEEAmNPCAUCaEgCXzIEAmNwCAUCaEgCXzMEAmZHCAUCaEgCXzQJAJQKAgUDbmlsCQCVCgMFAmZCBQJjcAUCZkcCZFYBIXB1dE9uZVRrblYyV2l0aG91dFRha2VGZWVSRUFET05MWQICaEYCaEcEAmhJCQECZmwFBQJoRgUCaEcCAAIABwQCZkIIBQJoSQJfMQQCY08IBQJoSQJfMgQCY3AIBQJoSQJfMwQCZkcIBQJoSQJfNAkAlAoCBQNuaWwJAJUKAwUCZkIFAmNwBQJmRwJkVgEIYWN0aXZhdGUCAmhKAmhLAwkBAiE9AgkApQgBCAUCZFYGY2FsbGVyCQClCAEFAmFNCQACAQIGZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFnAAUCaEoJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFoAAUCaEsFA25pbAIHc3VjY2VzcwJkVgEEc2V0UwICaEwCaHcDCQECIT0CCQClCAEIBQJkVgZjYWxsZXIJAQJhRgIFBHRoaXMJAQJhagAFAmdsCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmhMBQJodwUDbmlsAmRWAQRzZXRJAgJoTAJodwMJAQIhPQIJAKUIAQgFAmRWBmNhbGxlcgkBAmFGAgUEdGhpcwkBAmFqAAUCZ2wJAMwIAgkBDEludGVnZXJFbnRyeQIFAmhMBQJodwUDbmlsAmRWARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhUgACZFYBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJICQCUCgIFA25pbAkBAmJHAQUCYkgCZFYBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmJaAmNhAmNlBAJoTQkBAmNkAwUCYloFAmNhBQJjZQkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmhNAAAJAMwIAgkApgMBCQCRAwIFAmhNAAEJAMwIAgkApgMBCQCRAwIFAmhNAAIFA25pbAJkVgEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBTAJoTgkAlAoCBQNuaWwJAQFLAgkApwMBBQFMBQJoTgJkVgEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUkBSgkAlAoCBQNuaWwJAKYDAQkBAUgCBQFJBQFKAmRWAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCAmJKAmJLCQCUCgIFA25pbAkApgMBCQECYkkCCQCnAwEFAmJKCQCnAwEFAmJLAmRWASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkCY3ICYk8CY1ECY1ICY1MCY1QCaE8CY1UCY1YJAJQKAgUDbmlsCQECY1ANBQJjcgUCYk8FAmNRBQJjUgUCY1MFAmNUBQJoTwUCY1UFAmNWBgcAAAIAAmRWASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCY3ICaFACY3QCaE8EAmRrCQECY3EEBQJjcgUCaFAFAmN0CQERQGV4dHJOYXRpdmUoMTA2MikBBQJoTwkAlAoCBQNuaWwJAJwKCggFAmRrAl8xCAUCZGsCXzIIBQJkawJfMwgFAmRrAl80CAUCZGsCXzUIBQJkawJfNggFAmRrAl83CQCmAwEIBQJkawJfOAgFAmRrAl85CAUCZGsDXzEwAmRWAQ5nZXRGZWVSRUFET05MWQAJAJQKAgUDbmlsBQJhbAECaFEBAmhSAAQCaFMEAmdqCQECZ2kAAwkAAQIFAmdqAgpCeXRlVmVjdG9yBAJnbgUCZ2oFAmduAwkAAQIFAmdqAgRVbml0CAUCaFEPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmdqBQJoUQMJAAECBQJnagIFT3JkZXIEAmVXBQJnagQCaFQJAQJhUAAEAmhVCQECZVYBBQJlVwQCaFYJAPQDAwgFAmVXCWJvZHlCeXRlcwkAkQMCCAUCZVcGcHJvb2ZzAAAIBQJlVw9zZW5kZXJQdWJsaWNLZXkEAmhXCQD0AwMIBQJlVwlib2R5Qnl0ZXMJAJEDAggFAmVXBnByb29mcwABBQJoVAMDAwUCaFUFAmhWBwUCaFcHBgkBAmFCAwUCaFUFAmhWBQJoVwMJAAECBQJnagIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmRJBQJnagQCaFgJAPYDAQkBBXZhbHVlAQgFAmRJBnNjcmlwdAQCaFkJANsEAQkBBXZhbHVlAQkAnQgCBQJhTQkBAmF6AAQCaFoJAPEHAQUEdGhpcwMDCQAAAgUCaFkFAmhYCQECIT0CBQJoWgUCaFgHBgkA9AMDCAUCaFEJYm9keUJ5dGVzCQCRAwIIBQJoUQZwcm9vZnMAAAUCaFMJAPQDAwgFAmhRCWJvZHlCeXRlcwkAkQMCCAUCaFEGcHJvb2ZzAAAFAmhTrPENsA==", "chainId": 84, "height": 2371479, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7XU439cCbaxVwt3ZHa5HL2tCLnaRrLUi9a4jR5tb5xRK Next: 7nWYfoQr9MKRPuUtfsjRqPJ181iZXMj8gHYDRmocK7LA Diff:
OldNewDifferences
11651165
11661166 @Callable(dV)
11671167 func get () = {
1168- let gT = toBigInt(bG(aX(bf)))
1169- if ((gT == gT))
1168+ let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
1169+ if ((eO == eO))
11701170 then {
1171- let gU = toBigInt(bG(aX(bg)))
1172- if ((gU == gU))
1171+ let dk = ff(dV)
1172+ let gT = dk._1
1173+ let cN = dk._2
1174+ let cY = dk._3
1175+ let cs = dk._4
1176+ let cO = dk._5
1177+ let ew = invoke(aM, "burn", [cY], [AttachedPayment(cs, cY)])
1178+ if ((ew == ew))
11731179 then {
1174- let gV = toBigInt(value(assetInfo(be)).quantity)
1175- if ((gV == gV))
1176- then {
1177- let gW = (gV - toBigInt(value(dV.payments[0]).amount))
1178- if ((gW == gW))
1179- then {
1180- let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
1181- if ((eO == eO))
1182- then {
1183- let dk = ff(dV)
1184- let gX = dk._1
1185- let cN = dk._2
1186- let cY = dk._3
1187- let cs = dk._4
1188- let cO = dk._5
1189- let ew = invoke(aM, "burn", [cY], [AttachedPayment(cs, cY)])
1190- if ((ew == ew))
1191- then {
1192- let gY = eP(-(gX), -(cN), 0)
1193- let gg = gY._1
1194- let eG = gY._2
1195- let gZ = if ((eG >= eO))
1196- then true
1197- else aJ(makeString(["updated DLp lower than current DLp", toString(gT), toString(gU), toString(eO), toString(eG), toString(gV), toString(gW)], " "))
1198- if ((gZ == gZ))
1199- then (cO ++ gg)
1200- else throw("Strict value is not equal to itself.")
1201- }
1202- else throw("Strict value is not equal to itself.")
1203- }
1204- else throw("Strict value is not equal to itself.")
1205- }
1206- else throw("Strict value is not equal to itself.")
1207- }
1180+ let gU = eP(-(gT), -(cN), 0)
1181+ let gg = gU._1
1182+ let eG = gU._2
1183+ let gh = eT(eO, eG)
1184+ if ((gh == gh))
1185+ then (cO ++ gg)
12081186 else throw("Strict value is not equal to itself.")
12091187 }
12101188 else throw("Strict value is not equal to itself.")
12221200 then fR
12231201 else throw(($getType(fR) + " couldn't be cast to Boolean"))
12241202 }
1225- let ha = if (if (aO())
1203+ let gV = if (if (aO())
12261204 then true
12271205 else (bd == s))
12281206 then true
12291207 else gL
1230- let gN = [if (if (!(ha))
1208+ let gN = [if (if (!(gV))
12311209 then true
12321210 else gm(dV))
12331211 then true
12361214 else aJ("exactly 1 payment are expected")]
12371215 if ((gN == gN))
12381216 then {
1239- let hb = fH(fI, fJ, dV.payments, dV.caller, dV.originCaller, dV.transactionId)
1240- let cO = hb._1
1241- let fT = hb._2
1217+ let gW = fH(fI, fJ, dV.payments, dV.caller, dV.originCaller, dV.transactionId)
1218+ let cO = gW._1
1219+ let fT = gW._2
12421220 $Tuple2(cO, fT)
12431221 }
12441222 else throw("Strict value is not equal to itself.")
12481226
12491227 @Callable(dV)
12501228 func refreshDLp () = {
1251- let hc = valueOrElse(getInteger(an), 0)
1252- let hd = if (((height - hc) >= aq))
1229+ let gX = valueOrElse(getInteger(an), 0)
1230+ let gY = if (((height - gX) >= aq))
12531231 then unit
12541232 else aJ(makeString([toString(aq), " blocks have not passed since the previous call"], ""))
1255- if ((hd == hd))
1233+ if ((gY == gY))
12561234 then {
12571235 let fa = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, am), "0")), aL("invalid dLp"))
1258- let he = eP(0, 0, 0)
1259- let hf = he._1
1260- let eG = he._2
1236+ let gZ = eP(0, 0, 0)
1237+ let ha = gZ._1
1238+ let eG = gZ._2
12611239 let eS = if ((fa != eG))
1262- then hf
1240+ then ha
12631241 else aJ("nothing to refresh")
12641242 $Tuple2(eS, toString(eG))
12651243 }
12691247
12701248
12711249 @Callable(dV)
1272-func getOneTknV2READONLY (fI,hg) = {
1250+func getOneTknV2READONLY (fI,hb) = {
12731251 let cw = toBase58String(value(bf))
12741252 let cx = toBase58String(value(bg))
12751253 let cv = toBase58String(value(be))
12761254 let dF = [toBigInt(bG(cw)), toBigInt(bG(cx))]
12771255 let eF = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
12781256 let bT = dE(dF)
1279- let bS = (bT - fraction(toBigInt(hg), bT, eF))
1280- let hh = if ((fI == cw))
1257+ let bS = (bT - fraction(toBigInt(hb), bT, eF))
1258+ let hc = if ((fI == cw))
12811259 then 0
12821260 else if ((fI == cx))
12831261 then 1
12841262 else throw("invalid out asset id")
1285- let hi = es(dF, hh, bS)
1286- let hj = (dF[hh] - hi)
1287- let hk = max([0, toInt((hj - f))])
1288- let hl = cn(hk)
1289- let fS = hl._1
1290- let cp = hl._2
1263+ let hd = es(dF, hc, bS)
1264+ let he = (dF[hc] - hd)
1265+ let hf = max([0, toInt((he - f))])
1266+ let hg = cn(hf)
1267+ let fS = hg._1
1268+ let cp = hg._2
12911269 $Tuple2(nil, $Tuple2(fS, cp))
12921270 }
12931271
12941272
12951273
12961274 @Callable(dV)
1297-func getOneTknV2WithBonusREADONLY (fI,hg) = {
1275+func getOneTknV2WithBonusREADONLY (fI,hb) = {
12981276 let cw = toBase58String(value(bf))
12991277 let cx = toBase58String(value(bg))
13001278 let cv = toBase58String(value(be))
13011279 let cC = bG(cw)
13021280 let cE = bG(cx)
1303- let hm = {
1304- let fR = invoke(this, "getOneTknV2READONLY", [fI, hg], nil)
1281+ let hh = {
1282+ let fR = invoke(this, "getOneTknV2READONLY", [fI, hb], nil)
13051283 if ($isInstanceOf(fR, "(Int, Int)"))
13061284 then fR
13071285 else throw(($getType(fR) + " couldn't be cast to (Int, Int)"))
13081286 }
1309- let fS = hm._1
1310- let cp = hm._2
1311- let dk = cq("", cv, hg, this)
1287+ let fS = hh._1
1288+ let cp = hh._2
1289+ let dk = cq("", cv, hb, this)
13121290 let cM = dk._1
13131291 let cN = dk._2
1314- let hn = (cM + cN)
1315- let fG = if ((hn == 0))
1292+ let hi = (cM + cN)
1293+ let fG = if ((hi == 0))
13161294 then if ((fS == 0))
13171295 then 0
13181296 else throw("bonus calculation error")
1319- else fraction((fS - hn), a, hn)
1297+ else fraction((fS - hi), a, hi)
13201298 $Tuple2(nil, $Tuple3(fS, cp, fG))
13211299 }
13221300
13231301
13241302
13251303 @Callable(dV)
1326-func getNoLess (ho,hp) = {
1327- let dk = ff(dV)
1328- let cM = dk._1
1329- let cN = dk._2
1330- let cY = dk._3
1331- let cs = dk._4
1332- let cO = dk._5
1333- if ((ho > cM))
1334- then throw(((("Failed: " + toString(cM)) + " < ") + toString(ho)))
1335- else if ((hp > cN))
1336- then throw(((("Failed: " + toString(cN)) + " < ") + toString(hp)))
1337- else {
1338- let eO = eH(toBigInt(0), toBigInt(0), toBigInt(cY))
1339- let hq = invoke(aM, "burn", [cY], [AttachedPayment(cs, cY)])
1340- if ((hq == hq))
1341- then {
1342- let hr = eP(-(cM), -(cN), 0)
1343- let gg = hr._1
1344- let eG = hr._2
1345- let gh = eT(eO, eG)
1346- if ((gh == gh))
1347- then (cO ++ gg)
1348- else throw("Strict value is not equal to itself.")
1349- }
1350- else throw("Strict value is not equal to itself.")
1351- }
1304+func getNoLess (hj,hk) = {
1305+ let hl = toBigInt(bG(aX(bf)))
1306+ if ((hl == hl))
1307+ then {
1308+ let hm = toBigInt(bG(aX(bg)))
1309+ if ((hm == hm))
1310+ then {
1311+ let hn = toBigInt(value(assetInfo(be)).quantity)
1312+ if ((hn == hn))
1313+ then {
1314+ let ho = (hn - toBigInt(value(dV.payments[0]).amount))
1315+ if ((ho == ho))
1316+ then {
1317+ let dk = ff(dV)
1318+ let cM = dk._1
1319+ let cN = dk._2
1320+ let cY = dk._3
1321+ let cs = dk._4
1322+ let cO = dk._5
1323+ if ((hj > cM))
1324+ then throw(((("Failed: " + toString(cM)) + " < ") + toString(hj)))
1325+ else if ((hk > cN))
1326+ then throw(((("Failed: " + toString(cN)) + " < ") + toString(hk)))
1327+ else {
1328+ let eO = eH(toBigInt(0), toBigInt(0), toBigInt(cY))
1329+ let hp = invoke(aM, "burn", [cY], [AttachedPayment(cs, cY)])
1330+ if ((hp == hp))
1331+ then {
1332+ let hq = eP(-(cM), -(cN), 0)
1333+ let gg = hq._1
1334+ let eG = hq._2
1335+ let hr = if ((eG >= eO))
1336+ then true
1337+ else aJ(makeString(["updated DLp lower than current DLp", toString(hl), toString(hm), toString(eO), toString(eG), toString(hn), toString(ho)], " "))
1338+ if ((hr == hr))
1339+ then (cO ++ gg)
1340+ else throw("Strict value is not equal to itself.")
1341+ }
1342+ else throw("Strict value is not equal to itself.")
1343+ }
1344+ }
1345+ else throw("Strict value is not equal to itself.")
1346+ }
1347+ else throw("Strict value is not equal to itself.")
1348+ }
1349+ else throw("Strict value is not equal to itself.")
1350+ }
1351+ else throw("Strict value is not equal to itself.")
13521352 }
13531353
13541354
14021402
14031403
14041404 @Callable(dV)
1405-func unstakeAndGetNoLess (hz,hA,hp) = {
1406- let ha = if (aO())
1405+func unstakeAndGetNoLess (hz,hA,hk) = {
1406+ let gV = if (aO())
14071407 then true
14081408 else (bd == s)
1409- let gN = [if (!(ha))
1409+ let gN = [if (!(gV))
14101410 then true
14111411 else throw("get operation is blocked by admin"), if ((size(dV.payments) == 0))
14121412 then true
14231423 let cO = hB._10
14241424 let hC = [if ((cM >= hA))
14251425 then true
1426- else throw(makeString(["amount asset amount to receive is less than ", toString(hA)], "")), if ((cN >= hp))
1426+ else throw(makeString(["amount asset amount to receive is less than ", toString(hA)], "")), if ((cN >= hk))
14271427 then true
1428- else throw(makeString(["price asset amount to receive is less than ", toString(hp)], ""))]
1428+ else throw(makeString(["price asset amount to receive is less than ", toString(hk)], ""))]
14291429 if ((hC == hC))
14301430 then {
1431- let hq = invoke(aM, "burn", [hz], [AttachedPayment(be, hz)])
1432- if ((hq == hq))
1431+ let hp = invoke(aM, "burn", [hz], [AttachedPayment(be, hz)])
1432+ if ((hp == hp))
14331433 then {
14341434 let hD = eP(-(cM), -(cN), 0)
14351435 let gg = hD._1
14581458 then fR
14591459 else throw(($getType(fR) + " couldn't be cast to Boolean"))
14601460 }
1461- let ha = if (if (aO())
1461+ let gV = if (if (aO())
14621462 then true
14631463 else (bd == s))
14641464 then true
14651465 else gL
1466- let gN = [if (if (!(ha))
1466+ let gN = [if (if (!(gV))
14671467 then true
14681468 else gm(dV))
14691469 then true
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt(2)
1717
1818 let h = toBigInt(3)
1919
2020 let i = toBigInt(4)
2121
2222 let j = toBigInt((a - ((a * 1) / a)))
2323
2424 let k = "WAVES"
2525
2626 let l = "100"
2727
2828 let m = "1"
2929
3030 let n = "__"
3131
3232 let o = ""
3333
3434 let p = 1
3535
3636 let q = 2
3737
3838 let r = 3
3939
4040 let s = 4
4141
4242 let t = 1
4343
4444 let u = 2
4545
4646 let v = 3
4747
4848 let w = 4
4949
5050 let x = 5
5151
5252 let y = 6
5353
5454 let z = 7
5555
5656 let A = 8
5757
5858 let B = 9
5959
6060 let C = 1
6161
6262 let D = 6
6363
6464 let E = 7
6565
6666 let F = 10
6767
6868 let G = fraction(10, a, 10000)
6969
7070 func H (I,J) = fraction(toBigInt(I), c, toBigInt(J))
7171
7272
7373 func K (L,M) = toInt(fraction(L, toBigInt(M), c))
7474
7575
7676 func N (L,M,O) = toInt(fraction(L, toBigInt(M), c, O))
7777
7878
7979 func P (Q,R,S) = fraction(Q, R, S)
8080
8181
8282 func T (L) = if ((d > L))
8383 then -(L)
8484 else L
8585
8686
8787 func U (L) = if ((d > L))
8888 then -(L)
8989 else L
9090
9191
9292 func V () = "%s__factoryContract"
9393
9494
9595 func W () = "%s__managerPublicKey"
9696
9797
9898 func X () = "%s__pendingManagerPublicKey"
9999
100100
101101 func Y () = "%s%s__price__last"
102102
103103
104104 func Z (aa,ab) = makeString(["%s%s%d%d__price__history", toString(aa), toString(ab)], n)
105105
106106
107107 func ac (ad,ae) = ((("%s%s%s__P__" + ad) + "__") + ae)
108108
109109
110110 func af (ad,ae) = ((("%s%s%s__G__" + ad) + "__") + ae)
111111
112112
113113 func ag () = "%s__amountAsset"
114114
115115
116116 func ah () = "%s__priceAsset"
117117
118118
119119 func ai () = "%s__amp"
120120
121121
122122 func aj () = "%s__addonAddr"
123123
124124
125125 let ak = "%s__fee"
126126
127127 let al = valueOrElse(getInteger(this, ak), G)
128128
129129 let am = makeString(["%s", "dLp"], n)
130130
131131 let an = makeString(["%s", "dLpRefreshedHeight"], n)
132132
133133 let ao = makeString(["%s", "refreshDLpDelay"], n)
134134
135135 let ap = 1
136136
137137 let aq = valueOrElse(getInteger(this, ao), ap)
138138
139139 func ar () = "%s__factoryConfig"
140140
141141
142142 func as () = "%s%s__matcher__publicKey"
143143
144144
145145 func at (au,av) = (((("%d%d%s__" + au) + "__") + av) + "__config")
146146
147147
148148 func aw (ax) = ("%s%s%s__mappings__baseAsset2internalId__" + ax)
149149
150150
151151 func ay () = "%s__shutdown"
152152
153153
154154 func az () = "%s__allowedLpStableScriptHash"
155155
156156
157157 func aA () = "%s__feeCollectorAddress"
158158
159159
160160 func aB (aC,aD,aE) = throw(((((("Failed: ordValid=" + toString(aC)) + " sndrValid=") + toString(aD)) + " mtchrValid=") + toString(aE)))
161161
162162
163163 func aF (aG,aH) = valueOrErrorMessage(getString(aG, aH), makeString(["mandatory ", toString(aG), ".", aH, " not defined"], ""))
164164
165165
166166 func aI (aG,aH) = valueOrErrorMessage(getInteger(aG, aH), makeString(["mandatory ", toString(aG), ".", aH, " not defined"], ""))
167167
168168
169169 func aJ (aK) = throw(makeString(["lp_stable.ride:", aK], " "))
170170
171171
172172 func aL (aK) = makeString(["lp_stable.ride:", aK], " ")
173173
174174
175175 let aM = addressFromStringValue(aF(this, V()))
176176
177177 let aN = aF(this, ai())
178178
179179 func aO () = valueOrElse(getBoolean(aM, ay()), false)
180180
181181
182182 func aP () = fromBase58String(aF(aM, as()))
183183
184184
185185 let aQ = addressFromStringValue(aF(aM, aA()))
186186
187187 func aR () = {
188188 let aS = aF(this, ag())
189189 let aT = aF(this, ah())
190190 let aU = aI(aM, aw(aT))
191191 let au = aI(aM, aw(aS))
192192 split(aF(aM, at(toString(au), toString(aU))), n)
193193 }
194194
195195
196196 func aV (aW) = if ((aW == k))
197197 then unit
198198 else fromBase58String(aW)
199199
200200
201201 func aX (aW) = if ((aW == unit))
202202 then k
203203 else toBase58String(value(aW))
204204
205205
206206 func aY (aZ) = $Tuple9(addressFromStringValue(aZ[t]), parseIntValue(aZ[u]), fromBase58String(aZ[v]), aV(aZ[w]), aV(aZ[x]), parseIntValue(aZ[y]), parseIntValue(aZ[z]), fromBase58String(aZ[A]), fromBase58String(aZ[B]))
207207
208208
209209 let ba = aY(aR())
210210
211211 let bb = ba
212212
213213 let bc = bb._1
214214
215215 let bd = bb._2
216216
217217 let be = bb._3
218218
219219 let bf = bb._4
220220
221221 let bg = bb._5
222222
223223 let bh = bb._6
224224
225225 let bi = bb._7
226226
227227 let bj = bb._8
228228
229229 let bk = bb._9
230230
231231 func bl () = split(aF(aM, ar()), n)
232232
233233
234234 let bm = bl()
235235
236236 let bn = valueOrErrorMessage(addressFromString(bm[C]), "Invalid staking contract address")
237237
238238 let bo = valueOrErrorMessage(addressFromString(bm[E]), "Invalid slipage contract address")
239239
240240 let bp = valueOrErrorMessage(addressFromString(bm[F]), "Invalid gwx contract address")
241241
242242 let bq = valueOrErrorMessage(addressFromString(bm[D]), "Invalid gwx contract address")
243243
244244 func br (bs,bt,bu,bv,bw,bx,by,bz,bA,bB) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz), toString(bA), toString(bB)], n)
245245
246246
247247 func bC (bD,bE,bF,bv,by,bz) = makeString(["%d%d%d%d%d%d", toString(bD), toString(bE), toString(bF), toString(bv), toString(by), toString(bz)], n)
248248
249249
250250 func bG (bH) = if ((bH == "WAVES"))
251251 then wavesBalance(this).available
252252 else assetBalance(this, fromBase58String(bH))
253253
254254
255255 func bI (bJ,bK) = fraction(bJ, c, bK)
256256
257257
258258 func bL (bM,bN,bO) = {
259259 let bP = fraction((bM - bN), b, bN)
260260 let bQ = ((bO - T(bP)) > d)
261261 if (!(bQ))
262262 then throw(("Big slpg: " + toString(bP)))
263263 else $Tuple2(bQ, min([bM, bN]))
264264 }
265265
266266
267267 func bR (bS,bT,bU) = {
268268 let bP = fraction(bT, b, bS)
269269 let bV = (bU > bP)
270270 if (if (bV)
271271 then true
272272 else (bT > bS))
273273 then throw(((((((toString(bT) + " ") + toString(bS)) + " ") + toString(bP)) + " ") + toString(bU)))
274274 else bV
275275 }
276276
277277
278278 func bW (bX,bY,bZ,ca) = {
279279 let cb = H(bZ, bX)
280280 let cc = H(ca, bY)
281281 bI(cc, cb)
282282 }
283283
284284
285285 func cd (bZ,ca,ce) = {
286286 let cf = bh
287287 let cg = bi
288288 let ch = bW(cf, cg, bZ, ca)
289289 let bK = H(bZ, cf)
290290 let bJ = H(ca, cg)
291291 let ci = H(ce, a)
292292 let cj = bI(bK, ci)
293293 let ck = bI(bJ, ci)
294294 [ch, cj, ck]
295295 }
296296
297297
298298 func cl (bZ,ca,ce) = {
299299 let cm = cd(bZ, ca, ce)
300300 [K(cm[0], a), K(cm[1], a), K(cm[2], a)]
301301 }
302302
303303
304304 func cn (co) = {
305305 let cp = fraction(co, al, a)
306306 $Tuple2((co - cp), cp)
307307 }
308308
309309
310310 func cq (cr,cs,ct,cu) = {
311311 let cv = be
312312 let cw = toBase58String(value(bf))
313313 let cx = toBase58String(value(bg))
314314 let cy = bh
315315 let cz = bi
316316 let cA = toString(bd)
317317 let cB = valueOrErrorMessage(assetInfo(cv), "Wrong LP id").quantity
318318 if ((toBase58String(cv) != cs))
319319 then throw("Wrong pmt asset")
320320 else {
321321 let cC = bG(cw)
322322 let cD = H(cC, cy)
323323 let cE = bG(cx)
324324 let cF = H(cE, cz)
325325 let cG = bI(cF, cD)
326326 let cH = K(cG, a)
327327 let cI = H(ct, a)
328328 let cJ = H(cB, a)
329329 let cK = fraction(cD, cI, cJ)
330330 let cL = fraction(cF, cI, cJ)
331331 let cM = N(cK, cy, FLOOR)
332332 let cN = N(cL, cz, FLOOR)
333333 let cO = if ((cr == ""))
334334 then nil
335335 else [ScriptTransfer(cu, cM, if ((cw == "WAVES"))
336336 then unit
337337 else fromBase58String(cw)), ScriptTransfer(cu, cN, if ((cx == "WAVES"))
338338 then unit
339339 else fromBase58String(cx)), StringEntry(af(toString(cu), cr), bC(cM, cN, ct, cH, height, lastBlock.timestamp)), IntegerEntry(Y(), cH), IntegerEntry(Z(height, lastBlock.timestamp), cH)]
340340 $Tuple10(cM, cN, cw, cx, cC, cE, cB, cG, cA, cO)
341341 }
342342 }
343343
344344
345345 func cP (cr,bO,cQ,cR,cS,cT,cu,cU,cV,cW,cX,cY,cZ) = {
346346 let cv = be
347347 let da = toBase58String(value(bf))
348348 let db = toBase58String(value(bg))
349349 let dc = bj
350350 let dd = bk
351351 let de = bh
352352 let df = bi
353353 let cA = toString(bd)
354354 let dg = valueOrErrorMessage(assetInfo(cv), "Wr lp as").quantity
355355 let cC = if (cU)
356356 then bG(da)
357357 else if (if (cW)
358358 then (cZ == da)
359359 else false)
360360 then (bG(da) - cY)
361361 else if (cW)
362362 then bG(da)
363363 else (bG(da) - cQ)
364364 let cE = if (cU)
365365 then bG(db)
366366 else if (if (cW)
367367 then (cZ == db)
368368 else false)
369369 then (bG(db) - cY)
370370 else if (cW)
371371 then bG(db)
372372 else (bG(db) - cS)
373373 let dh = H(cQ, de)
374374 let di = H(cS, df)
375375 let dj = bI(di, dh)
376376 let cD = H(cC, de)
377377 let cF = H(cE, df)
378378 let dk = if ((dg == 0))
379379 then {
380380 let cG = d
381381 let dl = d
382382 let ci = pow((dh * di), 0, toBigInt(5), 1, 0, DOWN)
383383 $Tuple5(K(ci, a), K(dh, de), K(di, df), bI((cF + di), (cD + dh)), dl)
384384 }
385385 else {
386386 let cG = bI(cF, cD)
387387 let dm = fraction(T((cG - dj)), c, cG)
388388 let dl = H(bO, a)
389389 if (if (if (cX)
390390 then (cG != d)
391391 else false)
392392 then (dm > dl)
393393 else false)
394394 then throw(((("Price slippage " + toString(dm)) + " > ") + toString(dl)))
395395 else {
396396 let dn = H(dg, a)
397397 let do = fraction(dh, cG, c)
398398 let dp = fraction(di, c, cG)
399399 let dq = if ((do > di))
400400 then $Tuple2(dp, di)
401401 else $Tuple2(dh, do)
402402 let dr = dq._1
403403 let ds = dq._2
404404 let ci = fraction(dn, ds, cF)
405405 $Tuple5(N(ci, a, FLOOR), N(dr, de, CEILING), N(ds, df, CEILING), cG, dl)
406406 }
407407 }
408408 let dt = dk._1
409409 let du = dk._2
410410 let dv = dk._3
411411 let cH = K(dk._4, a)
412412 let dw = K(dk._5, a)
413413 if ((0 >= dt))
414414 then throw("LP <= 0")
415415 else {
416416 let dx = if (!(cV))
417417 then 0
418418 else dt
419419 let dy = (cQ - du)
420420 let dz = (cS - dv)
421421 let dA = if (if (cW)
422422 then (cZ == da)
423423 else false)
424424 then $Tuple2(cY, 0)
425425 else if (if (cW)
426426 then (cZ == db)
427427 else false)
428428 then $Tuple2(0, cY)
429429 else $Tuple2(du, dv)
430430 let dB = dA._1
431431 let dC = dA._2
432432 let dD = [IntegerEntry(Y(), cH), IntegerEntry(Z(height, lastBlock.timestamp), cH), StringEntry(ac(cu, cr), br(dB, dC, dx, cH, bO, dw, height, lastBlock.timestamp, dy, dz))]
433433 $Tuple13(dt, dx, cH, cC, cE, dg, cv, cA, dD, dy, dz, cR, cT)
434434 }
435435 }
436436
437437
438438 func dE (dF) = {
439439 let dG = dF[0]
440440 let dH = dF[1]
441441 let dI = (dG + dH)
442442 if ((dI == e))
443443 then e
444444 else {
445445 let dJ = parseIntValue(aN)
446446 let dK = (dJ * 2)
447447 let cm = fraction(dG, dH, f)
448448 let dL = fraction(cm, i, f)
449449 let dM = fraction(toBigInt(dK), dI, f)
450450 let dN = toBigInt((dK - 1))
451451 func dO (dP) = {
452452 let dQ = fraction(dP, dP, f)
453453 let dR = fraction(dQ, dP, f)
454454 let dS = fraction(dR, f, dL)
455455 fraction((dM + fraction(dS, g, f)), dP, (fraction(dN, dP, f) + fraction(h, dS, f)), CEILING)
456456 }
457457
458458 func dT (dU,dV) = if (dU._2)
459459 then dU
460460 else {
461461 let dP = dU._1
462462 let dW = dO(dP)
463463 let dX = toInt((dW - value(dP)))
464464 let dY = if ((0 > dX))
465465 then -(dX)
466466 else dX
467467 if ((1 >= dY))
468468 then $Tuple2(dW, true)
469469 else $Tuple2(dW, false)
470470 }
471471
472472 let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
473473 let ea = {
474474 let eb = dZ
475475 let ec = size(eb)
476476 let ed = $Tuple2(dI, false)
477477 func ee (ef,eg) = if ((eg >= ec))
478478 then ef
479479 else dT(ef, eb[eg])
480480
481481 func eh (ef,eg) = if ((eg >= ec))
482482 then ef
483483 else throw("List size exceeds 15")
484484
485485 eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
486486 }
487487 let dP = ea._1
488488 let ei = ea._2
489489 if (ei)
490490 then dP
491491 else throw(("D calculation error, D = " + toString(dP)))
492492 }
493493 }
494494
495495
496496 func ej (dF) = {
497497 let ek = g
498498 let dG = dF[0]
499499 let dH = dF[1]
500500 let el = parseBigIntValue(l)
501501 let dJ = (parseBigIntValue(aN) * el)
502502 let dI = (dG + dH)
503503 if ((dI == e))
504504 then e
505505 else {
506506 let dK = (dJ * ek)
507507 let dL = (((dG * dH) * ek) * ek)
508508 let em = ((dK * dI) / el)
509509 let en = (dK - el)
510510 let eo = (ek + f)
511511 func dT (dU,ep) = {
512512 let eq = dU
513513 let dP = eq._1
514514 let ei = eq._2
515515 if ((ei != unit))
516516 then dU
517517 else {
518518 let dS = (((dP * dP) * dP) / dL)
519519 let dW = (((em + (dS * ek)) * dP) / (((en * dP) / el) + (eo * dS)))
520520 let dY = U((dW - value(dP)))
521521 if ((f >= dY))
522522 then $Tuple2(dW, ep)
523523 else $Tuple2(dW, unit)
524524 }
525525 }
526526
527527 let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
528528 let er = {
529529 let eb = dZ
530530 let ec = size(eb)
531531 let ed = $Tuple2(dI, unit)
532532 func ee (ef,eg) = if ((eg >= ec))
533533 then ef
534534 else dT(ef, eb[eg])
535535
536536 func eh (ef,eg) = if ((eg >= ec))
537537 then ef
538538 else throw("List size exceeds 15")
539539
540540 eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
541541 }
542542 let dP = er._1
543543 let ei = er._2
544544 if ((ei != unit))
545545 then dP
546546 else throw(("D calculation error, D = " + toString(dP)))
547547 }
548548 }
549549
550550
551551 func es (dF,dV,et) = {
552552 let ek = g
553553 let eu = dF[if ((dV == 0))
554554 then 1
555555 else 0]
556556 let el = parseBigIntValue(l)
557557 let dJ = (parseBigIntValue(aN) * el)
558558 let dI = eu
559559 let dK = (dJ * ek)
560560 let ev = (((((et * et) / (eu * ek)) * et) * el) / (dK * ek))
561561 let ew = ((dI + ((et * el) / dK)) - et)
562562 func dT (dU,ep) = {
563563 let ex = dU
564564 let ey = ex._1
565565 let ei = ex._2
566566 if ((ei != unit))
567567 then dU
568568 else {
569569 let ez = (((ey * ey) + ev) / ((g * ey) + ew))
570570 let eA = U((ez - value(ey)))
571571 if ((f >= eA))
572572 then $Tuple2(ez, ep)
573573 else $Tuple2(ez, unit)
574574 }
575575 }
576576
577577 let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
578578 let eB = {
579579 let eb = dZ
580580 let ec = size(eb)
581581 let ed = $Tuple2(et, unit)
582582 func ee (ef,eg) = if ((eg >= ec))
583583 then ef
584584 else dT(ef, eb[eg])
585585
586586 func eh (ef,eg) = if ((eg >= ec))
587587 then ef
588588 else throw("List size exceeds 15")
589589
590590 eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
591591 }
592592 let ey = eB._1
593593 let ei = eB._2
594594 if ((ei != unit))
595595 then ey
596596 else throw(("Y calculation error, Y = " + toString(ey)))
597597 }
598598
599599
600600 func eC (eD,eE,eF) = {
601601 let eG = fraction(dE([eD, eE]), c, eF)
602602 if ((eF == e))
603603 then e
604604 else eG
605605 }
606606
607607
608608 func eH (eI,eJ,eK) = {
609609 let eL = (toBigInt(bG(aX(bf))) - eI)
610610 let eM = (toBigInt(bG(aX(bg))) - eJ)
611611 let eN = (toBigInt(value(assetInfo(be)).quantity) - eK)
612612 let eO = eC(eL, eM, eN)
613613 eO
614614 }
615615
616616
617617 func eP (eQ,eR,eK) = {
618618 let eL = (bG(aX(bf)) + eQ)
619619 let eM = (bG(aX(bg)) + eR)
620620 let eN = (value(assetInfo(be)).quantity + eK)
621621 let eG = eC(toBigInt(eL), toBigInt(eM), toBigInt(eN))
622622 let eS = [IntegerEntry(an, height), StringEntry(am, toString(eG))]
623623 $Tuple2(eS, eG)
624624 }
625625
626626
627627 func eT (eU,eG) = if ((eG >= eU))
628628 then true
629629 else aJ("updated DLp lower than current DLp")
630630
631631
632632 func eV (eW) = {
633633 let eX = eW.amount
634634 let eY = fraction(eW.amount, eW.price, a, FLOOR)
635635 let eZ = if ((eW.orderType == Buy))
636636 then $Tuple2(eX, -(eY))
637637 else $Tuple2(-(eX), eY)
638638 let eQ = eZ._1
639639 let eR = eZ._2
640640 if (if (if (aO())
641641 then true
642642 else (bd == r))
643643 then true
644644 else (bd == s))
645645 then throw("Admin blocked")
646646 else if (if ((eW.assetPair.amountAsset != bf))
647647 then true
648648 else (eW.assetPair.priceAsset != bg))
649649 then throw("Wr assets")
650650 else {
651651 let fa = parseBigIntValue(getStringValue(this, am))
652652 let fb = eP(eQ, eR, 0)
653653 let fc = fb._1
654654 let fd = fb._2
655655 let fe = (fd >= fa)
656656 fe
657657 }
658658 }
659659
660660
661661 func ff (dV) = if ((size(dV.payments) != 1))
662662 then throw("1 pmnt exp")
663663 else {
664664 let fg = value(dV.payments[0])
665665 let cs = value(fg.assetId)
666666 let cY = fg.amount
667667 let dk = cq(toBase58String(dV.transactionId), toBase58String(cs), cY, dV.caller)
668668 let cM = dk._1
669669 let cN = dk._2
670670 let cA = parseIntValue(dk._9)
671671 let cO = dk._10
672672 if (if (aO())
673673 then true
674674 else (cA == s))
675675 then throw(("Admin blocked: " + toString(cA)))
676676 else $Tuple5(cM, cN, cY, cs, cO)
677677 }
678678
679679
680680 func fh (fi,ae,fj,fk,bO,cV,cW,cX,cY,cZ) = {
681681 let dk = cP(ae, bO, value(fj).amount, value(fj).assetId, value(fk).amount, value(fk).assetId, fi, (ae == ""), cV, cW, cX, cY, cZ)
682682 let cA = parseIntValue(dk._8)
683683 if (if (if (aO())
684684 then true
685685 else (cA == q))
686686 then true
687687 else (cA == s))
688688 then throw(("Blocked:" + toString(cA)))
689689 else dk
690690 }
691691
692692
693693 func fl (fm,cs,cu,ae,fn) = {
694694 let cw = toBase58String(value(bf))
695695 let cx = toBase58String(value(bg))
696696 let cv = be
697697 let de = bh
698698 let df = bi
699699 let eN = toBigInt(valueOrErrorMessage(assetInfo(cv), "invalid lp asset").quantity)
700700 let fo = if ((eN > e))
701701 then true
702702 else throw("initial deposit requires all coins")
703703 if ((fo == fo))
704704 then {
705705 let cC = bG(cw)
706706 let cE = bG(cx)
707707 let fp = if ((ae == ""))
708708 then $Tuple2(cC, cE)
709709 else if ((cs == cw))
710710 then if ((fm > cC))
711711 then throw("invalid payment amount")
712712 else $Tuple2((cC - fm), cE)
713713 else if ((cs == cx))
714714 then if ((fm > cE))
715715 then throw("invalid payment amount")
716716 else $Tuple2(cC, (cE - fm))
717717 else throw("wrong pmtAssetId")
718718 let fq = fp._1
719719 let fr = fp._2
720720 let fs = if ((cs == cw))
721721 then $Tuple2(fm, 0)
722722 else if ((cs == cx))
723723 then $Tuple2(0, fm)
724724 else throw("invalid payment")
725725 let ft = fs._1
726726 let fu = fs._2
727727 let fv = if (fn)
728728 then $Tuple3(cn(ft)._1, cn(fu)._1, cn(fm)._2)
729729 else $Tuple3(ft, fu, 0)
730730 let fw = fv._1
731731 let fx = fv._2
732732 let cp = fv._3
733733 let fy = (fq + fw)
734734 let fz = (fr + fx)
735735 let bT = dE([toBigInt(fq), toBigInt(fr)])
736736 let bS = dE([toBigInt(fy), toBigInt(fz)])
737737 let fA = if ((bS > bT))
738738 then true
739739 else throw()
740740 if ((fA == fA))
741741 then {
742742 let fB = fraction(eN, (bS - bT), bT, FLOOR)
743743 let cH = K(bI(H(fz, df), H(fy, de)), a)
744744 let dD = [IntegerEntry(Y(), cH), IntegerEntry(Z(height, lastBlock.timestamp), cH), StringEntry(ac(cu, ae), br(ft, fu, toInt(fB), cH, 0, 0, height, lastBlock.timestamp, 0, 0))]
745745 let fC = fraction(fr, a, fq)
746746 let fD = fraction(fm, a, (fC + a))
747747 let fE = (fm - fD)
748748 let fF = fraction(eN, toBigInt(fE), toBigInt(fr))
749749 let fG = toInt(fraction((fB - fF), b, fF))
750750 $Tuple4(toInt(fB), dD, cp, fG)
751751 }
752752 else throw("Strict value is not equal to itself.")
753753 }
754754 else throw("Strict value is not equal to itself.")
755755 }
756756
757757
758758 func fH (fI,fJ,fK,fi,fL,fM) = {
759759 let cv = toBase58String(value(be))
760760 let cw = toBase58String(value(bf))
761761 let cx = toBase58String(value(bg))
762762 let fN = bh
763763 let fO = bi
764764 let fP = bd
765765 let cu = if ((fi == bq))
766766 then fL
767767 else fi
768768 let fg = value(fK[0])
769769 let cs = value(fg.assetId)
770770 let cY = fg.amount
771771 let eO = eH(e, e, e)
772772 if ((eO == eO))
773773 then {
774774 let cr = toBase58String(fM)
775775 if ((cv != toBase58String(cs)))
776776 then throw("Wrong LP")
777777 else {
778778 let cC = bG(cw)
779779 let cE = bG(cx)
780780 let fQ = {
781781 let fR = invoke(this, "getOneTknV2READONLY", [fI, cY], nil)
782782 if ($isInstanceOf(fR, "(Int, Int)"))
783783 then fR
784784 else throw(($getType(fR) + " couldn't be cast to (Int, Int)"))
785785 }
786786 if ((fQ == fQ))
787787 then {
788788 let cp = fQ._2
789789 let fS = fQ._1
790790 let fT = if (if ((fJ > 0))
791791 then (fJ > fS)
792792 else false)
793793 then aJ(makeString(["amount to receive is less than ", toString(fJ)], ""))
794794 else fS
795795 let fU = if ((fI == cw))
796796 then $Tuple4(fT, 0, ((cC - fT) - cp), cE)
797797 else if ((fI == cx))
798798 then $Tuple4(0, fT, cC, ((cE - fT) - cp))
799799 else throw("invalid out asset id")
800800 let fV = fU._1
801801 let fW = fU._2
802802 let fy = fU._3
803803 let fz = fU._4
804804 let fX = bI(H(fz, fO), H(fy, fN))
805805 let fY = K(fX, a)
806806 let fZ = if ((fI == "WAVES"))
807807 then unit
808808 else fromBase58String(fI)
809809 let ga = if ((cp > 0))
810810 then [ScriptTransfer(aQ, cp, fZ)]
811811 else nil
812812 let cO = ([ScriptTransfer(cu, fT, fZ), StringEntry(af(toString(cu), cr), bC(fV, fW, cY, fY, height, lastBlock.timestamp)), IntegerEntry(Y(), fY), IntegerEntry(Z(height, lastBlock.timestamp), fY)] ++ ga)
813813 if ((cO == cO))
814814 then {
815815 let gb = invoke(aM, "burn", [cY], [AttachedPayment(cs, cY)])
816816 if ((gb == gb))
817817 then {
818818 let gc = {
819819 let gd = if ((this == aQ))
820820 then 0
821821 else cp
822822 let ge = if ((aV(fI) == bf))
823823 then true
824824 else false
825825 if (ge)
826826 then $Tuple2(-((fS + gd)), 0)
827827 else $Tuple2(0, -((fS + gd)))
828828 }
829829 let eQ = gc._1
830830 let eR = gc._2
831831 let gf = eP(eQ, eR, 0)
832832 let gg = gf._1
833833 let eG = gf._2
834834 let gh = eT(eO, eG)
835835 if ((gh == gh))
836836 then $Tuple2((cO ++ gg), fT)
837837 else throw("Strict value is not equal to itself.")
838838 }
839839 else throw("Strict value is not equal to itself.")
840840 }
841841 else throw("Strict value is not equal to itself.")
842842 }
843843 else throw("Strict value is not equal to itself.")
844844 }
845845 }
846846 else throw("Strict value is not equal to itself.")
847847 }
848848
849849
850850 func gi () = {
851851 let gj = getString(W())
852852 if ($isInstanceOf(gj, "String"))
853853 then {
854854 let dI = gj
855855 fromBase58String(dI)
856856 }
857857 else if ($isInstanceOf(gj, "Unit"))
858858 then unit
859859 else throw("Match error")
860860 }
861861
862862
863863 func gk () = {
864864 let gj = getString(X())
865865 if ($isInstanceOf(gj, "String"))
866866 then {
867867 let dI = gj
868868 fromBase58String(dI)
869869 }
870870 else if ($isInstanceOf(gj, "Unit"))
871871 then unit
872872 else throw("Match error")
873873 }
874874
875875
876876 let gl = throw("Permission denied")
877877
878878 func gm (dV) = {
879879 let gj = gi()
880880 if ($isInstanceOf(gj, "ByteVector"))
881881 then {
882882 let gn = gj
883883 (dV.callerPublicKey == gn)
884884 }
885885 else if ($isInstanceOf(gj, "Unit"))
886886 then (dV.caller == this)
887887 else throw("Match error")
888888 }
889889
890890
891891 func go (dV) = {
892892 let gj = gi()
893893 if ($isInstanceOf(gj, "ByteVector"))
894894 then {
895895 let gn = gj
896896 if ((dV.callerPublicKey == gn))
897897 then true
898898 else gl
899899 }
900900 else if ($isInstanceOf(gj, "Unit"))
901901 then if ((dV.caller == this))
902902 then true
903903 else gl
904904 else throw("Match error")
905905 }
906906
907907
908908 @Callable(dV)
909909 func constructor (V) = {
910910 let ev = go(dV)
911911 if ((ev == ev))
912912 then [StringEntry(V(), V)]
913913 else throw("Strict value is not equal to itself.")
914914 }
915915
916916
917917
918918 @Callable(dV)
919919 func setManager (gp) = {
920920 let ev = go(dV)
921921 if ((ev == ev))
922922 then {
923923 let gq = fromBase58String(gp)
924924 if ((gq == gq))
925925 then [StringEntry(X(), gp)]
926926 else throw("Strict value is not equal to itself.")
927927 }
928928 else throw("Strict value is not equal to itself.")
929929 }
930930
931931
932932
933933 @Callable(dV)
934934 func confirmManager () = {
935935 let cm = gk()
936936 let gr = if (isDefined(cm))
937937 then true
938938 else throw("No pending manager")
939939 if ((gr == gr))
940940 then {
941941 let gs = if ((dV.callerPublicKey == value(cm)))
942942 then true
943943 else throw("You are not pending manager")
944944 if ((gs == gs))
945945 then [StringEntry(W(), toBase58String(value(cm))), DeleteEntry(X())]
946946 else throw("Strict value is not equal to itself.")
947947 }
948948 else throw("Strict value is not equal to itself.")
949949 }
950950
951951
952952
953953 @Callable(dV)
954954 func put (gt,gu) = {
955955 let gv = bl()
956956 let gw = valueOrErrorMessage(addressFromString(gv[C]), "Wr st addr")
957957 let gx = valueOrErrorMessage(addressFromString(gv[E]), "Wr sl addr")
958958 if ((0 > gt))
959959 then throw("Wrong slippage")
960960 else if ((size(dV.payments) != 2))
961961 then throw("2 pmnts expd")
962962 else {
963963 let gy = toBigInt(value(dV.payments[0]).amount)
964964 let gz = toBigInt(value(dV.payments[1]).amount)
965965 let eL = (toBigInt(bG(aX(bf))) - gy)
966966 if ((eL == eL))
967967 then {
968968 let eM = (toBigInt(bG(aX(bg))) - gz)
969969 if ((eM == eM))
970970 then {
971971 let eN = toBigInt(value(assetInfo(be)).quantity)
972972 if ((eN == eN))
973973 then {
974974 let eO = eH(gy, gz, toBigInt(0))
975975 if ((eO == eO))
976976 then {
977977 let gA = fh(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gt, true, false, true, 0, "")
978978 let dx = gA._2
979979 let gB = gA._7
980980 let cO = gA._9
981981 let dy = gA._10
982982 let dz = gA._11
983983 let cw = gA._12
984984 let cx = gA._13
985985 let dk = invoke(aM, "emit", [dx], nil)
986986 if ((dk == dk))
987987 then {
988988 let gC = {
989989 let gj = dk
990990 if ($isInstanceOf(gj, "Address"))
991991 then {
992992 let gD = gj
993993 invoke(gD, "emit", [dx], nil)
994994 }
995995 else unit
996996 }
997997 if ((gC == gC))
998998 then {
999999 let gE = if ((dy > 0))
10001000 then invoke(gx, "put", nil, [AttachedPayment(cw, dy)])
10011001 else nil
10021002 if ((gE == gE))
10031003 then {
10041004 let gF = if ((dz > 0))
10051005 then invoke(gx, "put", nil, [AttachedPayment(cx, dz)])
10061006 else nil
10071007 if ((gF == gF))
10081008 then {
10091009 let gG = if (gu)
10101010 then {
10111011 let gH = invoke(gw, "stake", nil, [AttachedPayment(gB, dx)])
10121012 if ((gH == gH))
10131013 then nil
10141014 else throw("Strict value is not equal to itself.")
10151015 }
10161016 else [ScriptTransfer(dV.caller, dx, gB)]
10171017 let gI = eP(0, 0, 0)
10181018 let gg = gI._1
10191019 let eG = gI._2
10201020 let gh = eT(eO, eG)
10211021 if ((gh == gh))
10221022 then {
10231023 let gJ = if ((eG >= eO))
10241024 then true
10251025 else aJ("updated DLp lower than current DLp")
10261026 if ((gJ == gJ))
10271027 then {
10281028 let gK = value(assetInfo(be)).quantity
10291029 if ((gK == gK))
10301030 then ((cO ++ gG) ++ gg)
10311031 else throw("Strict value is not equal to itself.")
10321032 }
10331033 else throw("Strict value is not equal to itself.")
10341034 }
10351035 else throw("Strict value is not equal to itself.")
10361036 }
10371037 else throw("Strict value is not equal to itself.")
10381038 }
10391039 else throw("Strict value is not equal to itself.")
10401040 }
10411041 else throw("Strict value is not equal to itself.")
10421042 }
10431043 else throw("Strict value is not equal to itself.")
10441044 }
10451045 else throw("Strict value is not equal to itself.")
10461046 }
10471047 else throw("Strict value is not equal to itself.")
10481048 }
10491049 else throw("Strict value is not equal to itself.")
10501050 }
10511051 else throw("Strict value is not equal to itself.")
10521052 }
10531053 }
10541054
10551055
10561056
10571057 @Callable(dV)
10581058 func putOneTknV2 (fJ,gu) = {
10591059 let gL = {
10601060 let fR = invoke(aM, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10611061 if ($isInstanceOf(fR, "Boolean"))
10621062 then fR
10631063 else throw(($getType(fR) + " couldn't be cast to Boolean"))
10641064 }
10651065 let gM = if (if (if (aO())
10661066 then true
10671067 else (bd == q))
10681068 then true
10691069 else (bd == s))
10701070 then true
10711071 else gL
10721072 let gN = [if (if (!(gM))
10731073 then true
10741074 else gm(dV))
10751075 then true
10761076 else aJ("put operation is blocked by admin"), if ((size(dV.payments) == 1))
10771077 then true
10781078 else aJ("exactly 1 payment are expected")]
10791079 if ((gN == gN))
10801080 then {
10811081 let cw = toBase58String(value(bf))
10821082 let cx = toBase58String(value(bg))
10831083 let cv = be
10841084 let fN = bh
10851085 let fO = bi
10861086 let cu = if ((dV.caller == this))
10871087 then dV.originCaller
10881088 else dV.caller
10891089 let fg = value(dV.payments[0])
10901090 let cs = toBase58String(value(fg.assetId))
10911091 let cY = fg.amount
10921092 let eO = if ((fg.assetId == bf))
10931093 then eH(toBigInt(cY), toBigInt(0), toBigInt(0))
10941094 else eH(toBigInt(0), toBigInt(cY), toBigInt(0))
10951095 if ((eO == eO))
10961096 then {
10971097 let gO = fl(cY, cs, toString(cu), toBase58String(dV.transactionId), true)
10981098 if ((gO == gO))
10991099 then {
11001100 let cp = gO._3
11011101 let cO = gO._2
11021102 let gP = gO._1
11031103 let dx = if (if ((fJ > 0))
11041104 then (fJ > gP)
11051105 else false)
11061106 then aJ(makeString(["amount to receive is less than ", toString(fJ)], ""))
11071107 else gP
11081108 let gA = invoke(aM, "emit", [dx], nil)
11091109 if ((gA == gA))
11101110 then {
11111111 let gC = {
11121112 let gj = gA
11131113 if ($isInstanceOf(gj, "Address"))
11141114 then {
11151115 let gD = gj
11161116 invoke(gD, "emit", [dx], nil)
11171117 }
11181118 else unit
11191119 }
11201120 if ((gC == gC))
11211121 then {
11221122 let gG = if (gu)
11231123 then {
11241124 let gH = invoke(bn, "stake", nil, [AttachedPayment(cv, dx)])
11251125 if ((gH == gH))
11261126 then nil
11271127 else throw("Strict value is not equal to itself.")
11281128 }
11291129 else [ScriptTransfer(dV.caller, dx, cv)]
11301130 let ga = if ((cp > 0))
11311131 then [ScriptTransfer(aQ, cp, fromBase58String(cs))]
11321132 else nil
11331133 let gQ = if ((this == aQ))
11341134 then $Tuple2(0, 0)
11351135 else {
11361136 let gR = if ((fg.assetId == bf))
11371137 then true
11381138 else false
11391139 if (gR)
11401140 then $Tuple2(-(cp), 0)
11411141 else $Tuple2(0, -(cp))
11421142 }
11431143 let eQ = gQ._1
11441144 let eR = gQ._2
11451145 let gS = eP(eQ, eR, 0)
11461146 let gg = gS._1
11471147 let eG = gS._2
11481148 let gh = eT(eO, eG)
11491149 if ((gh == gh))
11501150 then $Tuple2((((cO ++ gG) ++ ga) ++ gg), dx)
11511151 else throw("Strict value is not equal to itself.")
11521152 }
11531153 else throw("Strict value is not equal to itself.")
11541154 }
11551155 else throw("Strict value is not equal to itself.")
11561156 }
11571157 else throw("Strict value is not equal to itself.")
11581158 }
11591159 else throw("Strict value is not equal to itself.")
11601160 }
11611161 else throw("Strict value is not equal to itself.")
11621162 }
11631163
11641164
11651165
11661166 @Callable(dV)
11671167 func get () = {
1168- let gT = toBigInt(bG(aX(bf)))
1169- if ((gT == gT))
1168+ let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
1169+ if ((eO == eO))
11701170 then {
1171- let gU = toBigInt(bG(aX(bg)))
1172- if ((gU == gU))
1171+ let dk = ff(dV)
1172+ let gT = dk._1
1173+ let cN = dk._2
1174+ let cY = dk._3
1175+ let cs = dk._4
1176+ let cO = dk._5
1177+ let ew = invoke(aM, "burn", [cY], [AttachedPayment(cs, cY)])
1178+ if ((ew == ew))
11731179 then {
1174- let gV = toBigInt(value(assetInfo(be)).quantity)
1175- if ((gV == gV))
1176- then {
1177- let gW = (gV - toBigInt(value(dV.payments[0]).amount))
1178- if ((gW == gW))
1179- then {
1180- let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
1181- if ((eO == eO))
1182- then {
1183- let dk = ff(dV)
1184- let gX = dk._1
1185- let cN = dk._2
1186- let cY = dk._3
1187- let cs = dk._4
1188- let cO = dk._5
1189- let ew = invoke(aM, "burn", [cY], [AttachedPayment(cs, cY)])
1190- if ((ew == ew))
1191- then {
1192- let gY = eP(-(gX), -(cN), 0)
1193- let gg = gY._1
1194- let eG = gY._2
1195- let gZ = if ((eG >= eO))
1196- then true
1197- else aJ(makeString(["updated DLp lower than current DLp", toString(gT), toString(gU), toString(eO), toString(eG), toString(gV), toString(gW)], " "))
1198- if ((gZ == gZ))
1199- then (cO ++ gg)
1200- else throw("Strict value is not equal to itself.")
1201- }
1202- else throw("Strict value is not equal to itself.")
1203- }
1204- else throw("Strict value is not equal to itself.")
1205- }
1206- else throw("Strict value is not equal to itself.")
1207- }
1180+ let gU = eP(-(gT), -(cN), 0)
1181+ let gg = gU._1
1182+ let eG = gU._2
1183+ let gh = eT(eO, eG)
1184+ if ((gh == gh))
1185+ then (cO ++ gg)
12081186 else throw("Strict value is not equal to itself.")
12091187 }
12101188 else throw("Strict value is not equal to itself.")
12111189 }
12121190 else throw("Strict value is not equal to itself.")
12131191 }
12141192
12151193
12161194
12171195 @Callable(dV)
12181196 func getOneTknV2 (fI,fJ) = {
12191197 let gL = {
12201198 let fR = invoke(aM, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12211199 if ($isInstanceOf(fR, "Boolean"))
12221200 then fR
12231201 else throw(($getType(fR) + " couldn't be cast to Boolean"))
12241202 }
1225- let ha = if (if (aO())
1203+ let gV = if (if (aO())
12261204 then true
12271205 else (bd == s))
12281206 then true
12291207 else gL
1230- let gN = [if (if (!(ha))
1208+ let gN = [if (if (!(gV))
12311209 then true
12321210 else gm(dV))
12331211 then true
12341212 else aJ("get operation is blocked by admin"), if ((size(dV.payments) == 1))
12351213 then true
12361214 else aJ("exactly 1 payment are expected")]
12371215 if ((gN == gN))
12381216 then {
1239- let hb = fH(fI, fJ, dV.payments, dV.caller, dV.originCaller, dV.transactionId)
1240- let cO = hb._1
1241- let fT = hb._2
1217+ let gW = fH(fI, fJ, dV.payments, dV.caller, dV.originCaller, dV.transactionId)
1218+ let cO = gW._1
1219+ let fT = gW._2
12421220 $Tuple2(cO, fT)
12431221 }
12441222 else throw("Strict value is not equal to itself.")
12451223 }
12461224
12471225
12481226
12491227 @Callable(dV)
12501228 func refreshDLp () = {
1251- let hc = valueOrElse(getInteger(an), 0)
1252- let hd = if (((height - hc) >= aq))
1229+ let gX = valueOrElse(getInteger(an), 0)
1230+ let gY = if (((height - gX) >= aq))
12531231 then unit
12541232 else aJ(makeString([toString(aq), " blocks have not passed since the previous call"], ""))
1255- if ((hd == hd))
1233+ if ((gY == gY))
12561234 then {
12571235 let fa = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, am), "0")), aL("invalid dLp"))
1258- let he = eP(0, 0, 0)
1259- let hf = he._1
1260- let eG = he._2
1236+ let gZ = eP(0, 0, 0)
1237+ let ha = gZ._1
1238+ let eG = gZ._2
12611239 let eS = if ((fa != eG))
1262- then hf
1240+ then ha
12631241 else aJ("nothing to refresh")
12641242 $Tuple2(eS, toString(eG))
12651243 }
12661244 else throw("Strict value is not equal to itself.")
12671245 }
12681246
12691247
12701248
12711249 @Callable(dV)
1272-func getOneTknV2READONLY (fI,hg) = {
1250+func getOneTknV2READONLY (fI,hb) = {
12731251 let cw = toBase58String(value(bf))
12741252 let cx = toBase58String(value(bg))
12751253 let cv = toBase58String(value(be))
12761254 let dF = [toBigInt(bG(cw)), toBigInt(bG(cx))]
12771255 let eF = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
12781256 let bT = dE(dF)
1279- let bS = (bT - fraction(toBigInt(hg), bT, eF))
1280- let hh = if ((fI == cw))
1257+ let bS = (bT - fraction(toBigInt(hb), bT, eF))
1258+ let hc = if ((fI == cw))
12811259 then 0
12821260 else if ((fI == cx))
12831261 then 1
12841262 else throw("invalid out asset id")
1285- let hi = es(dF, hh, bS)
1286- let hj = (dF[hh] - hi)
1287- let hk = max([0, toInt((hj - f))])
1288- let hl = cn(hk)
1289- let fS = hl._1
1290- let cp = hl._2
1263+ let hd = es(dF, hc, bS)
1264+ let he = (dF[hc] - hd)
1265+ let hf = max([0, toInt((he - f))])
1266+ let hg = cn(hf)
1267+ let fS = hg._1
1268+ let cp = hg._2
12911269 $Tuple2(nil, $Tuple2(fS, cp))
12921270 }
12931271
12941272
12951273
12961274 @Callable(dV)
1297-func getOneTknV2WithBonusREADONLY (fI,hg) = {
1275+func getOneTknV2WithBonusREADONLY (fI,hb) = {
12981276 let cw = toBase58String(value(bf))
12991277 let cx = toBase58String(value(bg))
13001278 let cv = toBase58String(value(be))
13011279 let cC = bG(cw)
13021280 let cE = bG(cx)
1303- let hm = {
1304- let fR = invoke(this, "getOneTknV2READONLY", [fI, hg], nil)
1281+ let hh = {
1282+ let fR = invoke(this, "getOneTknV2READONLY", [fI, hb], nil)
13051283 if ($isInstanceOf(fR, "(Int, Int)"))
13061284 then fR
13071285 else throw(($getType(fR) + " couldn't be cast to (Int, Int)"))
13081286 }
1309- let fS = hm._1
1310- let cp = hm._2
1311- let dk = cq("", cv, hg, this)
1287+ let fS = hh._1
1288+ let cp = hh._2
1289+ let dk = cq("", cv, hb, this)
13121290 let cM = dk._1
13131291 let cN = dk._2
1314- let hn = (cM + cN)
1315- let fG = if ((hn == 0))
1292+ let hi = (cM + cN)
1293+ let fG = if ((hi == 0))
13161294 then if ((fS == 0))
13171295 then 0
13181296 else throw("bonus calculation error")
1319- else fraction((fS - hn), a, hn)
1297+ else fraction((fS - hi), a, hi)
13201298 $Tuple2(nil, $Tuple3(fS, cp, fG))
13211299 }
13221300
13231301
13241302
13251303 @Callable(dV)
1326-func getNoLess (ho,hp) = {
1327- let dk = ff(dV)
1328- let cM = dk._1
1329- let cN = dk._2
1330- let cY = dk._3
1331- let cs = dk._4
1332- let cO = dk._5
1333- if ((ho > cM))
1334- then throw(((("Failed: " + toString(cM)) + " < ") + toString(ho)))
1335- else if ((hp > cN))
1336- then throw(((("Failed: " + toString(cN)) + " < ") + toString(hp)))
1337- else {
1338- let eO = eH(toBigInt(0), toBigInt(0), toBigInt(cY))
1339- let hq = invoke(aM, "burn", [cY], [AttachedPayment(cs, cY)])
1340- if ((hq == hq))
1341- then {
1342- let hr = eP(-(cM), -(cN), 0)
1343- let gg = hr._1
1344- let eG = hr._2
1345- let gh = eT(eO, eG)
1346- if ((gh == gh))
1347- then (cO ++ gg)
1348- else throw("Strict value is not equal to itself.")
1349- }
1350- else throw("Strict value is not equal to itself.")
1351- }
1304+func getNoLess (hj,hk) = {
1305+ let hl = toBigInt(bG(aX(bf)))
1306+ if ((hl == hl))
1307+ then {
1308+ let hm = toBigInt(bG(aX(bg)))
1309+ if ((hm == hm))
1310+ then {
1311+ let hn = toBigInt(value(assetInfo(be)).quantity)
1312+ if ((hn == hn))
1313+ then {
1314+ let ho = (hn - toBigInt(value(dV.payments[0]).amount))
1315+ if ((ho == ho))
1316+ then {
1317+ let dk = ff(dV)
1318+ let cM = dk._1
1319+ let cN = dk._2
1320+ let cY = dk._3
1321+ let cs = dk._4
1322+ let cO = dk._5
1323+ if ((hj > cM))
1324+ then throw(((("Failed: " + toString(cM)) + " < ") + toString(hj)))
1325+ else if ((hk > cN))
1326+ then throw(((("Failed: " + toString(cN)) + " < ") + toString(hk)))
1327+ else {
1328+ let eO = eH(toBigInt(0), toBigInt(0), toBigInt(cY))
1329+ let hp = invoke(aM, "burn", [cY], [AttachedPayment(cs, cY)])
1330+ if ((hp == hp))
1331+ then {
1332+ let hq = eP(-(cM), -(cN), 0)
1333+ let gg = hq._1
1334+ let eG = hq._2
1335+ let hr = if ((eG >= eO))
1336+ then true
1337+ else aJ(makeString(["updated DLp lower than current DLp", toString(hl), toString(hm), toString(eO), toString(eG), toString(hn), toString(ho)], " "))
1338+ if ((hr == hr))
1339+ then (cO ++ gg)
1340+ else throw("Strict value is not equal to itself.")
1341+ }
1342+ else throw("Strict value is not equal to itself.")
1343+ }
1344+ }
1345+ else throw("Strict value is not equal to itself.")
1346+ }
1347+ else throw("Strict value is not equal to itself.")
1348+ }
1349+ else throw("Strict value is not equal to itself.")
1350+ }
1351+ else throw("Strict value is not equal to itself.")
13521352 }
13531353
13541354
13551355
13561356 @Callable(dV)
13571357 func unstakeAndGet (co) = {
13581358 let hs = if ((size(dV.payments) != 0))
13591359 then throw("No pmnts expd")
13601360 else true
13611361 if ((hs == hs))
13621362 then {
13631363 let ht = bl()
13641364 let gB = be
13651365 let hu = valueOrErrorMessage(addressFromString(ht[C]), "Wr st addr")
13661366 let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
13671367 let hv = invoke(hu, "unstake", [toBase58String(gB), co], nil)
13681368 if ((hv == hv))
13691369 then {
13701370 let dk = cq(toBase58String(dV.transactionId), toBase58String(gB), co, dV.caller)
13711371 let cM = dk._1
13721372 let cN = dk._2
13731373 let cA = parseIntValue(dk._9)
13741374 let cO = dk._10
13751375 let hw = if (if (aO())
13761376 then true
13771377 else (cA == s))
13781378 then throw(("Blocked: " + toString(cA)))
13791379 else true
13801380 if ((hw == hw))
13811381 then {
13821382 let hx = invoke(aM, "burn", [co], [AttachedPayment(gB, co)])
13831383 if ((hx == hx))
13841384 then {
13851385 let hy = eP(-(cM), -(cN), 0)
13861386 let gg = hy._1
13871387 let eG = hy._2
13881388 let gh = eT(eO, eG)
13891389 if ((gh == gh))
13901390 then (cO ++ gg)
13911391 else throw("Strict value is not equal to itself.")
13921392 }
13931393 else throw("Strict value is not equal to itself.")
13941394 }
13951395 else throw("Strict value is not equal to itself.")
13961396 }
13971397 else throw("Strict value is not equal to itself.")
13981398 }
13991399 else throw("Strict value is not equal to itself.")
14001400 }
14011401
14021402
14031403
14041404 @Callable(dV)
1405-func unstakeAndGetNoLess (hz,hA,hp) = {
1406- let ha = if (aO())
1405+func unstakeAndGetNoLess (hz,hA,hk) = {
1406+ let gV = if (aO())
14071407 then true
14081408 else (bd == s)
1409- let gN = [if (!(ha))
1409+ let gN = [if (!(gV))
14101410 then true
14111411 else throw("get operation is blocked by admin"), if ((size(dV.payments) == 0))
14121412 then true
14131413 else throw("no payments are expected")]
14141414 if ((gN == gN))
14151415 then {
14161416 let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
14171417 let hv = invoke(bn, "unstake", [toBase58String(be), hz], nil)
14181418 if ((hv == hv))
14191419 then {
14201420 let hB = cq(toBase58String(dV.transactionId), toBase58String(be), hz, dV.caller)
14211421 let cM = hB._1
14221422 let cN = hB._2
14231423 let cO = hB._10
14241424 let hC = [if ((cM >= hA))
14251425 then true
1426- else throw(makeString(["amount asset amount to receive is less than ", toString(hA)], "")), if ((cN >= hp))
1426+ else throw(makeString(["amount asset amount to receive is less than ", toString(hA)], "")), if ((cN >= hk))
14271427 then true
1428- else throw(makeString(["price asset amount to receive is less than ", toString(hp)], ""))]
1428+ else throw(makeString(["price asset amount to receive is less than ", toString(hk)], ""))]
14291429 if ((hC == hC))
14301430 then {
1431- let hq = invoke(aM, "burn", [hz], [AttachedPayment(be, hz)])
1432- if ((hq == hq))
1431+ let hp = invoke(aM, "burn", [hz], [AttachedPayment(be, hz)])
1432+ if ((hp == hp))
14331433 then {
14341434 let hD = eP(-(cM), -(cN), 0)
14351435 let gg = hD._1
14361436 let eG = hD._2
14371437 let gh = eT(eO, eG)
14381438 if ((gh == gh))
14391439 then (cO ++ gg)
14401440 else throw("Strict value is not equal to itself.")
14411441 }
14421442 else throw("Strict value is not equal to itself.")
14431443 }
14441444 else throw("Strict value is not equal to itself.")
14451445 }
14461446 else throw("Strict value is not equal to itself.")
14471447 }
14481448 else throw("Strict value is not equal to itself.")
14491449 }
14501450
14511451
14521452
14531453 @Callable(dV)
14541454 func unstakeAndGetOneTknV2 (hz,fI,fJ) = {
14551455 let gL = {
14561456 let fR = invoke(aM, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
14571457 if ($isInstanceOf(fR, "Boolean"))
14581458 then fR
14591459 else throw(($getType(fR) + " couldn't be cast to Boolean"))
14601460 }
1461- let ha = if (if (aO())
1461+ let gV = if (if (aO())
14621462 then true
14631463 else (bd == s))
14641464 then true
14651465 else gL
1466- let gN = [if (if (!(ha))
1466+ let gN = [if (if (!(gV))
14671467 then true
14681468 else gm(dV))
14691469 then true
14701470 else aJ("get operation is blocked by admin"), if ((size(dV.payments) == 0))
14711471 then true
14721472 else aJ("no payments are expected")]
14731473 if ((gN == gN))
14741474 then {
14751475 let ht = bl()
14761476 let gB = be
14771477 let hu = valueOrErrorMessage(addressFromString(ht[C]), "Wr st addr")
14781478 let hv = invoke(hu, "unstake", [toBase58String(gB), hz], nil)
14791479 if ((hv == hv))
14801480 then {
14811481 let hE = fH(fI, fJ, [AttachedPayment(gB, hz)], dV.caller, dV.originCaller, dV.transactionId)
14821482 let cO = hE._1
14831483 let fT = hE._2
14841484 $Tuple2(cO, fT)
14851485 }
14861486 else throw("Strict value is not equal to itself.")
14871487 }
14881488 else throw("Strict value is not equal to itself.")
14891489 }
14901490
14911491
14921492
14931493 @Callable(dV)
14941494 func putOneTknV2WithBonusREADONLY (hF,hG) = {
14951495 let hH = fl(hF, hG, "", "", true)
14961496 let fB = hH._1
14971497 let cO = hH._2
14981498 let cp = hH._3
14991499 let fG = hH._4
15001500 $Tuple2(nil, $Tuple3(fB, cp, fG))
15011501 }
15021502
15031503
15041504
15051505 @Callable(dV)
15061506 func putOneTknV2WithoutTakeFeeREADONLY (hF,hG) = {
15071507 let hI = fl(hF, hG, "", "", false)
15081508 let fB = hI._1
15091509 let cO = hI._2
15101510 let cp = hI._3
15111511 let fG = hI._4
15121512 $Tuple2(nil, $Tuple3(fB, cp, fG))
15131513 }
15141514
15151515
15161516
15171517 @Callable(dV)
15181518 func activate (hJ,hK) = if ((toString(dV.caller) != toString(aM)))
15191519 then throw("denied")
15201520 else $Tuple2([StringEntry(ag(), hJ), StringEntry(ah(), hK)], "success")
15211521
15221522
15231523
15241524 @Callable(dV)
15251525 func setS (hL,hw) = if ((toString(dV.caller) != aF(this, aj())))
15261526 then gl
15271527 else [StringEntry(hL, hw)]
15281528
15291529
15301530
15311531 @Callable(dV)
15321532 func setI (hL,hw) = if ((toString(dV.caller) != aF(this, aj())))
15331533 then gl
15341534 else [IntegerEntry(hL, hw)]
15351535
15361536
15371537
15381538 @Callable(dV)
15391539 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aR())
15401540
15411541
15421542
15431543 @Callable(dV)
15441544 func getAccBalanceWrapperREADONLY (bH) = $Tuple2(nil, bG(bH))
15451545
15461546
15471547
15481548 @Callable(dV)
15491549 func calcPricesWrapperREADONLY (bZ,ca,ce) = {
15501550 let hM = cd(bZ, ca, ce)
15511551 $Tuple2(nil, [toString(hM[0]), toString(hM[1]), toString(hM[2])])
15521552 }
15531553
15541554
15551555
15561556 @Callable(dV)
15571557 func fromX18WrapperREADONLY (L,hN) = $Tuple2(nil, K(parseBigIntValue(L), hN))
15581558
15591559
15601560
15611561 @Callable(dV)
15621562 func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
15631563
15641564
15651565
15661566 @Callable(dV)
15671567 func calcPriceBigIntWrapperREADONLY (bJ,bK) = $Tuple2(nil, toString(bI(parseBigIntValue(bJ), parseBigIntValue(bK))))
15681568
15691569
15701570
15711571 @Callable(dV)
15721572 func estimatePutOperationWrapperREADONLY (cr,bO,cQ,cR,cS,cT,hO,cU,cV) = $Tuple2(nil, cP(cr, bO, cQ, cR, cS, cT, hO, cU, cV, true, false, 0, ""))
15731573
15741574
15751575
15761576 @Callable(dV)
15771577 func estimateGetOperationWrapperREADONLY (cr,hP,ct,hO) = {
15781578 let dk = cq(cr, hP, ct, addressFromStringValue(hO))
15791579 $Tuple2(nil, $Tuple10(dk._1, dk._2, dk._3, dk._4, dk._5, dk._6, dk._7, toString(dk._8), dk._9, dk._10))
15801580 }
15811581
15821582
15831583
15841584 @Callable(dV)
15851585 func getFeeREADONLY () = $Tuple2(nil, al)
15861586
15871587
15881588 @Verifier(hQ)
15891589 func hR () = {
15901590 let hS = {
15911591 let gj = gi()
15921592 if ($isInstanceOf(gj, "ByteVector"))
15931593 then {
15941594 let gn = gj
15951595 gn
15961596 }
15971597 else if ($isInstanceOf(gj, "Unit"))
15981598 then hQ.senderPublicKey
15991599 else throw("Match error")
16001600 }
16011601 let gj = hQ
16021602 if ($isInstanceOf(gj, "Order"))
16031603 then {
16041604 let eW = gj
16051605 let hT = aP()
16061606 let hU = eV(eW)
16071607 let hV = sigVerify(eW.bodyBytes, eW.proofs[0], eW.senderPublicKey)
16081608 let hW = sigVerify(eW.bodyBytes, eW.proofs[1], hT)
16091609 if (if (if (hU)
16101610 then hV
16111611 else false)
16121612 then hW
16131613 else false)
16141614 then true
16151615 else aB(hU, hV, hW)
16161616 }
16171617 else if ($isInstanceOf(gj, "SetScriptTransaction"))
16181618 then {
16191619 let dI = gj
16201620 let hX = blake2b256(value(dI.script))
16211621 let hY = fromBase64String(value(getString(aM, az())))
16221622 let hZ = scriptHash(this)
16231623 if (if ((hY == hX))
16241624 then (hZ != hX)
16251625 else false)
16261626 then true
16271627 else sigVerify(hQ.bodyBytes, hQ.proofs[0], hS)
16281628 }
16291629 else sigVerify(hQ.bodyBytes, hQ.proofs[0], hS)
16301630 }
16311631

github/deemru/w8io/169f3d6 
191.73 ms