tx · 4NLcA3oeRiKPnhYjWAupGhstGp4CtsGsvUX6bcv2gNSq

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.04100000 Waves

2023.05.10 14:12 [2571711] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "4NLcA3oeRiKPnhYjWAupGhstGp4CtsGsvUX6bcv2gNSq", "fee": 4100000, "feeAssetId": null, "timestamp": 1683717122302, "version": 2, "chainId": 84, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "26wyZNzMr58TFEk5a5uU7nGCbuMxRiBKruKnnTrh8BU4JX8h3Jk3kiLgqjkRjm15efbEYxazejWyRGXw86JDNHno" ], "script": "base64:BgKxLQgCEgUKAwEEARIHCgUBBAEIARIDCgEIEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIAEgQKAggBEgQKAggBEgQKAgEBEgMKAQESBQoDAQEBEgUKAwEIARIECgIBCBIECgIBCBIECgIICBIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgRiaWczIgRiaWc0IgpzbGlwcGFnZTREIgt3YXZlc1N0cmluZyIFQW11bHQiBURjb252IgNTRVAiBUVNUFRZIgpQb29sQWN0aXZlIgpQb29sUHV0RGlzIg5Qb29sTWF0Y2hlckRpcyIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyIJaWR4UG9vbFN0IglpZHhMUEFzSWQiCWlkeEFtQXNJZCIJaWR4UHJBc0lkIgtpZHhBbXRBc0RjbSINaWR4UHJpY2VBc0RjbSILaWR4SUFtdEFzSWQiDWlkeElQcmljZUFzSWQiD2lkeEZhY3RTdGFrQ250ciISaWR4RmFjdG9yeVJlc3RDbnRyIhBpZHhGYWN0U2xpcHBDbnRyIhFpZHhGYWN0R3d4UmV3Q250ciIKZmVlRGVmYXVsdCICdDEiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiCHQxQmlnSW50IgJmMSIDdmFsIg9yZXN1bHRTY2FsZU11bHQiDGZyb21YMThSb3VuZCIFcm91bmQiAnQyIgJmMiICdHMiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCICZmMiE2tleU1hbmFnZXJQdWJsaWNLZXkiFmtleU1hbmFnZXJWYXVsdEFkZHJlc3MiAnBsIgJwaCIBaCIBdCIDcGF1IgJ1YSIEdHhJZCIDZ2F1IgJhYSICcGEiA2FtcCINa2V5QW1wSGlzdG9yeSIMaGVpZ2h0QmxvY2tzIhRrZXlDaGFuZ2VBbXBMYXN0Q2FsbCIGa2V5RmVlIgNmZWUiBmtleURMcCIVa2V5RExwUmVmcmVzaGVkSGVpZ2h0IhJrZXlETHBSZWZyZXNoRGVsYXkiFmRMcFJlZnJlc2hEZWxheURlZmF1bHQiD2RMcFJlZnJlc2hEZWxheSIEZmNmZyIEbXRwayICcGMiBmlBbXRBcyIFaVByQXMiA21iYSIFYkFTdHIiA2FwcyIca2V5QWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIWa2V5U2tpcE9yZGVyVmFsaWRhdGlvbiILcG9vbEFkZHJlc3MiD3Rocm93T3JkZXJFcnJvciIKb3JkZXJWYWxpZCIOb3JkZXJWYWxpZEluZm8iC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiF2FkZHJlc3NGcm9tU3RyaW5nT3JUaGlzIg1hZGRyZXNzU3RyaW5nIgckbWF0Y2gwIgFhIhxnZXRNYW5hZ2VyVmF1bHRBZGRyZXNzT3JUaGlzIg5mYWN0b3J5QWRkcmVzcyIDZmNhIgFzIgRzdHJmIgRhZGRyIgNrZXkiBGludGYiCHRocm93RXJyIgNtc2ciBmZtdEVyciIFaW5GZWUiAUAiBm91dEZlZSIBQSIDaWdzIgJtcCITZmVlQ29sbGVjdG9yQWRkcmVzcyIDZ3BjIgVhbXRBcyIHcHJpY2VBcyIIaVByaWNlQXMiDHBhcnNlQXNzZXRJZCIFaW5wdXQiD2Fzc2V0SWRUb1N0cmluZyIPcGFyc2VQb29sQ29uZmlnIgpwb29sQ29uZmlnIhBwb29sQ29uZmlnUGFyc2VkIgskdDA4Njg2ODkxNSIOY2ZnUG9vbEFkZHJlc3MiDWNmZ1Bvb2xTdGF0dXMiDGNmZ0xwQXNzZXRJZCIQY2ZnQW1vdW50QXNzZXRJZCIPY2ZnUHJpY2VBc3NldElkIhZjZmdBbW91bnRBc3NldERlY2ltYWxzIhVjZmdQcmljZUFzc2V0RGVjaW1hbHMiEmNmZ0luQW1vdW50QXNzZWRJZCIRY2ZnSW5QcmljZUFzc2V0SWQiA2dmYyINZmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0Ig9zbGlwYWdlQ29udHJhY3QiC2d3eENvbnRyYWN0IgxyZXN0Q29udHJhY3QiEWRhdGFQdXRBY3Rpb25JbmZvIg1pbkFtdEFzc2V0QW10Ig9pblByaWNlQXNzZXRBbXQiCG91dExwQW10IgVwcmljZSIKc2xpcEJ5VXNlciIMc2xpcHBhZ2VSZWFsIgh0eEhlaWdodCILdHhUaW1lc3RhbXAiDHNsaXBhZ2VBbUFtdCIMc2xpcGFnZVByQW10IhFkYXRhR2V0QWN0aW9uSW5mbyIOb3V0QW10QXNzZXRBbXQiEG91dFByaWNlQXNzZXRBbXQiB2luTHBBbXQiDWdldEFjY0JhbGFuY2UiB2Fzc2V0SWQiBGNwYmkiCHByQW10WDE4IghhbUFtdFgxOCIFY3BiaXIiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIIYW10QXNEY20iB3ByQXNEY20iCHByaWNlWDE4IghscEFtdFgxOCINbHBQckluQW1Bc1gxOCINbHBQckluUHJBc1gxOCIPY2FsY3VsYXRlUHJpY2VzIgFwIgd0YWtlRmVlIgZhbW91bnQiCWZlZUFtb3VudCIEZ2V0RCICeHAiA3hwMCIDeHAxIgNhbm4iC3hwMF94cDFfbl9uIgVhbm5fcyIFYW5uXzEiCWNhbGNETmV4dCIBZCICZGQiA2RkZCICZHAiBGNhbGMiA2FjYyIBaSIFZE5leHQiCGREaWZmUmF3IgVkRGlmZiIDYXJyIg0kdDAxMzQyMDEzNDY4IgIkbCICJHMiBSRhY2MwIgUkZjBfMSICJGEiAiRpIgUkZjBfMiIFZm91bmQiA2VnbyIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCILdXNlckFkZHJlc3MiBGxwSWQiBGFtSWQiBHBySWQiBWFtRGNtIgVwckRjbSIDc3RzIgdscEVtaXNzIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiCmxwRW1pc3NYMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIDZXBvIgdpbkFtQW10IgZpbkFtSWQiB2luUHJBbXQiBmluUHJJZCIGaXNFdmFsIgZlbWl0THAiCmlzT25lQXNzZXQiEHZhbGlkYXRlU2xpcHBhZ2UiBnBtdEFtdCIFcG10SWQiB2FtSWRTdHIiB3BySWRTdHIiCWluQW1JZFN0ciIJaW5QcklkU3RyIgZhbXREY20iCHByaWNlRGNtIgRscEVtIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgFyIgZjaGVja0QiC3NsaXBwYWdlWDE4Ig9zbGlwcGFnZVJlYWxYMTgiDWxwRW1pc3Npb25YMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiDSR0MDIxMzA3MjE2NTIiCndyaXRlQW1BbXQiCndyaXRlUHJBbXQiC2NvbW1vblN0YXRlIgVnZXRZRCIBRCIBbiIBeCIKYVByZWNpc2lvbiIBYyIBYiIDY3VyIg0kdDAyMjg0NzIyODY3IgF5IgV5TmV4dCIFeURpZmYiDSR0MDIzMTc0MjMyMjEiB2NhbGNETHAiDWFtb3VudEJhbGFuY2UiDHByaWNlQmFsYW5jZSIKbHBFbWlzc2lvbiIKdXBkYXRlZERMcCIOY2FsY0N1cnJlbnRETHAiEGFtb3VudEFzc2V0RGVsdGEiD3ByaWNlQXNzZXREZWx0YSIUbHBBc3NldEVtaXNzaW9uRGVsdGEiEmFtb3VudEFzc2V0QmFsYW5jZSIRcHJpY2VBc3NldEJhbGFuY2UiD2xwQXNzZXRFbWlzc2lvbiIKY3VycmVudERMcCIScmVmcmVzaERMcEludGVybmFsIhdhbW91bnRBc3NldEJhbGFuY2VEZWx0YSIWcHJpY2VBc3NldEJhbGFuY2VEZWx0YSIHYWN0aW9ucyISdmFsaWRhdGVVcGRhdGVkRExwIgZvbGRETHAiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiEWFtb3VudEFzc2V0QW1vdW50IhBwcmljZUFzc2V0QW1vdW50Ig0kdDAyNTQxOTI1NjMxIgNkTHAiDSR0MDI1OTczMjYwNzMiDXVudXNlZEFjdGlvbnMiBmRMcE5ldyIMaXNPcmRlclZhbGlkIgRpbmZvIgJjZyIDcG10IgJjcCIGY2FsbGVyIgdhbUFzUG10IgdwckFzUG10Ig1jYWxjUHV0T25lVGtuIglwbXRBbXRSYXciC3dpdGhUYWtlRmVlIg1jaGVjaEVtaXNzaW9uIg0kdDAyODcyOTI5MTkxIgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCINJHQwMjkxOTcyOTM3MyILYW1BbW91bnRSYXciC3ByQW1vdW50UmF3Ig0kdDAyOTM3NzI5NjMxIghhbUFtb3VudCIIcHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IghscEFtb3VudCIOcG9vbFByb3BvcnRpb24iD2Ftb3VudEFzc2V0UGFydCIOcHJpY2VBc3NldFBhcnQiCWxwQW10Qm90aCIFYm9udXMiE2dldE9uZVRrblYySW50ZXJuYWwiCm91dEFzc2V0SWQiDG1pbk91dEFtb3VudCIIcGF5bWVudHMiDG9yaWdpbkNhbGxlciINdHJhbnNhY3Rpb25JZCIKYW1EZWNpbWFscyIKcHJEZWNpbWFscyIKcG9vbFN0YXR1cyINJHQwMzE3NDMzMTg1NCIIdG90YWxHZXQiC3RvdGFsQW1vdW50Ig0kdDAzMjA0NDMyMzUxIgVvdXRBbSIFb3V0UHIiCGN1clByWDE4IgVjdXJQciIRb3V0QXNzZXRJZE9yV2F2ZXMiEHNlbmRGZWVUb01hdGNoZXIiBGJ1cm4iDSR0MDMzMTM2MzM0ODYiEGZlZUFtb3VudEZvckNhbGMiEG91dEluQW1vdW50QXNzZXQiDSR0MDMzNDg5MzM1OTciEXJlZnJlc2hETHBBY3Rpb25zIhFpc1VwZGF0ZWRETHBWYWxpZCIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCITbWFuYWdlclZhdWx0QWRkcmVzcyICcGQiCWlzTWFuYWdlciICcGsiC211c3RNYW5hZ2VyIgRnZXRZIglpc1JldmVyc2UiE3Bvb2xBbW91bnRJbkJhbGFuY2UiDSR0MDM1MDg0MzUxMDQiDSR0MDM1NDM1MzU0ODIiE3NraXBPcmRlclZhbGlkYXRpb24iDWNsZWFuQW1vdW50SW4iDWZlZVBvb2xBbW91bnQiDSR0MDM1ODM0MzYyNTgiCGFzc2V0T3V0IgJkeSILdG90YWxHZXRSYXciBW5ld1hwIgRuZXdEIgxhbW91bnRPdXRNaW4iCWFkZHJlc3NUbyILc3dhcENvbnRhY3QiBmNoZWNrcyIHYXNzZXRJbiINJHQwMzc2OTQzODA4OCIIY2hlY2tNaW4iBHNsaXAiCWF1dG9TdGFrZSIHZmFjdENmZyILc3Rha2luZ0NudHIiCHNsaXBDbnRyIgphbUFzc2V0UG10IgpwckFzc2V0UG10IgFlIglscEFzc2V0SWQiAmVsIgZsZWdhY3kiAnNhIgJzcCIIbHBUcm5zZnIiAnNzIg0kdDA0MjIzMjQyMzc0IgVjaGVjayIUbHBBc3NldEVtaXNzaW9uQWZ0ZXIiIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkIg1pc1B1dERpc2FibGVkIg0kdDA0NDAxNTQ0MTczIgdlc3RpbUxQIg0kdDA0NTA1ODQ1NDA3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwNDU0MTA0NTUxOCIHbWF4U2xwZyIGZXN0UHV0Ig0kdDA0NjU0ODQ2NjEzIglvdXRBbXRBbXQiDSR0MDQ3Nzg2NDc4NjgiDWlzR2V0RGlzYWJsZWQiDSR0MDQ4NDg2NDg2NDEiGGxhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCIdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiDSR0MDQ5MTY1NDkyMjkiEGRMcFVwZGF0ZUFjdGlvbnMiDWxwQXNzZXRBbW91bnQiBWluZGV4IgRuZXdZIg0kdDA1MDIzOTUwMjk0Ig0kdDA1MDY2OTUwNzg0Ig5zdW1PZkdldEFzc2V0cyISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDSR0MDUxOTUwNTIwMzEiDWNoZWNrUGF5bWVudHMiCmZhY3RvcnlDZmciB3N0YWtpbmciCnVuc3Rha2VJbnYiAXYiBWJ1cm5BIg0kdDA1MzA1ODUzMTM5Ig11bnN0YWtlQW1vdW50IhVub0xlc3NUaGVuQW1vdW50QXNzZXQiA3JlcyIMY2hlY2tBbW91bnRzIg0kdDA1NDM5MDU0NDcxIhdscEFzc2V0UmVjaXBpZW50QWRkcmVzcyINJHQwNTU0OTM1NTY4MSIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiDSR0MDU1ODA5NTU5MTIiDSR0MDU2MDYwNTYxNjQiCGFtdEFzU3RyIgdwckFzU3RyIgJwciIMcmVzU2NhbGVNdWx0Igd1c3JBZGRyIgdwbXRBc0lkIgNjZmciDSR0MDU4NTE4NTg3MTciBGxpc3QiBWRlbGF5IgVkZWx0YSIGdGFyZ2V0IgZjdXJBbXAiCW5ld0FtcFJhdyIGbmV3QW1wIghsYXN0Q2FsbCIEd2FpdCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIg0kdDA1OTY1MDU5NzY3IgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2iGAQABYQCAwtcvAAFiCQC2AgEAgMLXLwABYwkAtgIBAICAkLu61q3wDQABZAkAtgIBAAAAAWUJALYCAQAAAAFmCQC2AgEAAQABZwkAtgIBAAIAAWgJALYCAQADAAFpCQC2AgEABAABagkAtgIBCQBlAgUBYQkAaQIJAGgCBQFhAAEFAWEAAWsCBVdBVkVTAAFsAgMxMDAAAW0CATEAAW4CAl9fAAFvAgAAAXAAAQABcQACAAFyAAMAAXMABAABdAABAAF1AAIAAXYAAwABdwAEAAF4AAUAAXkABgABegAHAAFBAAgAAUIACQABQwABAAFEAAYAAUUABwABRgAKAAFHCQBrAwAKBQFhAJBOAQFIAgFJAUoJALwCAwkAtgIBBQFJBQFjCQC2AgEFAUoBAUsCAUkBSgkAvAIDBQFJBQFjBQFKAQFMAgFNAU4JAKADAQkAvAIDBQFNCQC2AgEFAU4FAWMBAU8DAU0BTgFQCQCgAwEJAL0CBAUBTQkAtgIBBQFOBQFjBQFQAQFRAgFJAUoJALwCAwUBSQUBYwkAtgIBBQFKAQFSAgFNAU4JALwCAwUBTQkAtgIBBQFOBQFjAQFTAwFUAVUBVgkAawMFAVQFAVUFAVYBAVcBAU0DCQC/AgIFAWQFAU0JAL4CAQUBTQUBTQEBWAEBTQMJAL8CAgUBZAUBTQkAvgIBBQFNBQFNAQFZAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBWgACFCVzX19tYW5hZ2VyUHVibGljS2V5AQJhYQACFyVzX19tYW5hZ2VyVmF1bHRBZGRyZXNzAQJhYgACESVzJXNfX3ByaWNlX19sYXN0AQJhYwICYWQCYWUJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQJhZAkAzAgCCQCkAwEFAmFlBQNuaWwFAW4BAmFmAgJhZwJhaAkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAmFnAgJfXwUCYWgBAmFpAgJhZwJhaAkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAmFnAgJfXwUCYWgBAmFqAAIPJXNfX2Ftb3VudEFzc2V0AQJhawACDiVzX19wcmljZUFzc2V0AQJhbAACByVzX19hbXABAmFtAQJhbgkArAICAgslcyVkX19hbXBfXwkApAMBBQJhbgECYW8AAhUlc19fY2hhbmdlQW1wTGFzdENhbGwAAmFwAgclc19fZmVlAAJhcQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhcAUBRwACYXIJALkJAgkAzAgCAgIlcwkAzAgCAgNkTHAFA25pbAUBbgACYXMJALkJAgkAzAgCAgIlcwkAzAgCAhJkTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBbgACYXQJALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoRExwRGVsYXkFA25pbAUBbgACYXUAHgACYXYJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYXQFAmF1AQJhdwACESVzX19mYWN0b3J5Q29uZmlnAQJheAACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYXkCAmF6AmFBCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhegICX18FAmFBAghfX2NvbmZpZwECYUIBAmFDCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmFDAQJhRAACDCVzX19zaHV0ZG93bgECYUUAAh0lc19fYWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAECYUYAAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYUcBAmFICQCsAgICGyVzJXNfX3NraXBPcmRlclZhbGlkYXRpb25fXwUCYUgBAmFJBAJhSgJhSwJhTAJhTQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiRvcmRlciB2YWxpZGF0aW9uIGZhaWxlZDogb3JkZXJWYWxpZD0JAKUDAQUCYUoCAiAoBQJhSwIBKQINIHNlbmRlclZhbGlkPQkApQMBBQJhTAIOIG1hdGNoZXJWYWxpZD0JAKUDAQUCYU0BAmFOAQJhTwQCYVAJAKYIAQUCYU8DCQABAgUCYVACB0FkZHJlc3MEAmFRBQJhUAUCYVEFBHRoaXMBAmFSAAQCYVMEAmFQCQCiCAEJAQFZAAMJAAECBQJhUAIGU3RyaW5nBAJhVAUCYVAJAQJhTgEFAmFUBQR0aGlzBAJhUAkAnQgCBQJhUwkBAmFhAAMJAAECBQJhUAIGU3RyaW5nBAJhVQUCYVAJAQJhTgEFAmFVBQR0aGlzAQJhVgICYVcCYVgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhVwUCYVgJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYVcJAMwIAgIBLgkAzAgCBQJhWAkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQJhWQICYVcCYVgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJhVwUCYVgJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYVcJAMwIAgIBLgkAzAgCBQJhWAkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQJhWgECYmEJAAIBCQC5CQIJAMwIAgIPbHBfc3RhYmxlLnJpZGU6CQDMCAIFAmJhBQNuaWwCASABAmJiAQJiYQkAuQkCCQDMCAICD2xwX3N0YWJsZS5yaWRlOgkAzAgCBQJiYQUDbmlsAgEgAAJhVAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFWAgUEdGhpcwkBAVkAAAJiYwoAAmJkCQD8BwQFAmFUAhBnZXRJbkZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmQCA0ludAUCYmQJAAIBCQCsAgIJAAMBBQJiZAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAJiZQoAAmJkCQD8BwQFAmFUAhFnZXRPdXRGZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmJkAgNJbnQFAmJkCQACAQkArAICCQADAQUCYmQCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAACYmYJAQJhVgIFBHRoaXMJAQJhbAABAmJnAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhVAkBAmFEAAcBAmJoAAkA2QQBCQECYVYCBQJhVAkBAmF4AAACYmkJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhVgIFAmFUCQECYUYAAQJiagAEAmJrCQECYVYCBQR0aGlzCQECYWoABAJibAkBAmFWAgUEdGhpcwkBAmFrAAQCYm0JAQJhWQIFAmFUCQECYUIBBQJibAQCYXoJAQJhWQIFAmFUCQECYUIBBQJiawkAtQkCCQECYVYCBQJhVAkBAmF5AgkApAMBBQJhegkApAMBBQJibQUBbgECYm4BAmJvAwkAAAIFAmJvBQFrBQR1bml0CQDZBAEFAmJvAQJicAECYm8DCQAAAgUCYm8FBHVuaXQFAWsJANgEAQkBBXZhbHVlAQUCYm8BAmJxAQJicgkAmwoJCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmJyBQF0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYnIFAXUJANkEAQkAkQMCBQJicgUBdgkBAmJuAQkAkQMCBQJicgUBdwkBAmJuAQkAkQMCBQJicgUBeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJyBQF5CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYnIFAXoJANkEAQkAkQMCBQJicgUBQQkA2QQBCQCRAwIFAmJyBQFCAAJicwkBAmJxAQkBAmJqAAACYnQFAmJzAAJidQgFAmJ0Al8xAAJidggFAmJ0Al8yAAJidwgFAmJ0Al8zAAJieAgFAmJ0Al80AAJieQgFAmJ0Al81AAJieggFAmJ0Al82AAJiQQgFAmJ0Al83AAJiQggFAmJ0Al84AAJiQwgFAmJ0Al85AQJiRAAJALUJAgkBAmFWAgUCYVQJAQJhdwAFAW4AAmJFCQECYkQAAAJiRgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkUFAUMCIEludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzAAJiRwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkUFAUUCIEludmFsaWQgc2xpcGFnZSBjb250cmFjdCBhZGRyZXNzAAJiSAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkUFAUYCHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MAAmJJCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJiRQUBRAIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwECYkoKAmJLAmJMAmJNAmJOAmJPAmJQAmJRAmJSAmJTAmJUCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiSwkAzAgCCQCkAwEFAmJMCQDMCAIJAKQDAQUCYk0JAMwIAgkApAMBBQJiTgkAzAgCCQCkAwEFAmJPCQDMCAIJAKQDAQUCYlAJAMwIAgkApAMBBQJiUQkAzAgCCQCkAwEFAmJSCQDMCAIJAKQDAQUCYlMJAMwIAgkApAMBBQJiVAUDbmlsBQFuAQJiVQYCYlYCYlcCYlgCYk4CYlECYlIJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiVgkAzAgCCQCkAwEFAmJXCQDMCAIJAKQDAQUCYlgJAMwIAgkApAMBBQJiTgkAzAgCCQCkAwEFAmJRCQDMCAIJAKQDAQUCYlIFA25pbAUBbgECYlkBAmJaAwkAAAIFAmJaAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJiWgECY2ECAmNiAmNjCQC8AgMFAmNiBQFjBQJjYwECY2QDAmNiAmNjAVAJAL0CBAUCY2IFAWMFAmNjBQFQAQJjZQMCY2YCY2cCY2gEAmNpCQC8AgMJALgCAgUCY2YFAmNnBQFiBQJjZwQCY2oJAL8CAgkAuAICBQJjaAkBAVcBBQJjaQUBZAMJAQEhAQUCY2oJAAIBCQCsAgICCkJpZyBzbHBnOiAJAKYDAQUCY2kJAJQKAgUCY2oJAJkDAQkAzAgCBQJjZgkAzAgCBQJjZwUDbmlsAQJjawMCY2wCY20CY24EAmNpCQC8AgMFAmNtBQFiBQJjbAQCY28JAL8CAgUCY24FAmNpAwMFAmNvBgkAvwICBQJjbQUCY2wJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCmAwEFAmNtAgEgCQCmAwEFAmNsAgEgCQCmAwEFAmNpAgEgCQCmAwEFAmNuBQJjbwECY3AEAmNxAmNyAmNzAmN0BAJjdQkBAUgCBQJjcwUCY3EEAmN2CQEBSAIFAmN0BQJjcgkBAmNhAgUCY3YFAmN1AQJjdwMCY3MCY3QCY3gEAmN5BQJiegQCY3oFAmJBBAJjQQkBAmNwBAUCY3kFAmN6BQJjcwUCY3QEAmNjCQEBSAIFAmNzBQJjeQQCY2IJAQFIAgUCY3QFAmN6BAJjQgkBAUgCBQJjeAUBYQQCY0MJAQJjYQIFAmNjBQJjQgQCY0QJAQJjYQIFAmNiBQJjQgkAzAgCBQJjQQkAzAgCBQJjQwkAzAgCBQJjRAUDbmlsAQJjRQMCY3MCY3QCY3gEAmNGCQECY3cDBQJjcwUCY3QFAmN4CQDMCAIJAQFMAgkAkQMCBQJjRgAABQFhCQDMCAIJAQFMAgkAkQMCBQJjRgABBQFhCQDMCAIJAQFMAgkAkQMCBQJjRgACBQFhBQNuaWwBAmNHAgJjSAJhcQQCY0kDCQAAAgUCYXEAAAAACQBrAwUCY0gFAmFxBQFhCQCUCgIJAGUCBQJjSAUCY0kFAmNJAQJjSgECY0sEAmNMCQCRAwIFAmNLAAAEAmNNCQCRAwIFAmNLAAEEAmFVCQC3AgIFAmNMBQJjTQMJAAACBQJhVQUBZQUBZQQCYVEJAQ1wYXJzZUludFZhbHVlAQUCYmYEAmNOCQBoAgUCYVEAAgQCY0YJALwCAwUCY0wFAmNNBQFmBAJjTwkAvAIDBQJjRgUBaQUBZgQCY1AJALwCAwkAtgIBBQJjTgUCYVUFAWYEAmNRCQC2AgEJAGUCBQJjTgABCgECY1IBAmNTBAJjVAkAvAIDBQJjUwUCY1MFAWYEAmNVCQC8AgMFAmNUBQJjUwUBZgQCY1YJALwCAwUCY1UFAWYFAmNPCQC8AgMJALcCAgUCY1AJALwCAwUCY1YFAWcFAWYFAmNTCQC3AgIJALwCAwUCY1EFAmNTBQFmCQC8AgMFAWgFAmNWBQFmCgECY1cCAmNYAmNZAwgFAmNYAl8yBQJjWAQCY1MIBQJjWAJfMQQCY1oJAQJjUgEFAmNTBAJkYQkAuAICBQJjWgkBBXZhbHVlAQUCY1MEAmRiAwkAvwICBQFlBQJkYQkAvgIBBQJkYQUCZGEDCQDAAgIFAWYFAmRiCQCUCgIFAmNaBgkAlAoCBQJjWgcEAmRjCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOCQDMCAIADwkAzAgCABAFA25pbAQCZGQKAAJkZQUCZGMKAAJkZgkAkAMBBQJkZQoAAmRnCQCUCgIFAmFVBwoBAmRoAgJkaQJkagMJAGcCBQJkagUCZGYFAmRpCQECY1cCBQJkaQkAkQMCBQJkZQUCZGoKAQJkawICZGkCZGoDCQBnAgUCZGoFAmRmBQJkaQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE3CQECZGsCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCBQJkZwAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQQCY1MIBQJkZAJfMQQCZGwIBQJkZAJfMgMFAmRsBQJjUwkAAgEJAKwCAgIZRCBjYWxjdWxhdGlvbiBlcnJvciwgRCA9IAkApgMBBQJjUwECZG0EAmRuAmRvAmRwAmRxBAJkcgUCYncEAmRzCQDYBAEJAQV2YWx1ZQEFAmJ4BAJkdAkA2AQBCQEFdmFsdWUBBQJieQQCZHUFAmJ6BAJkdgUCYkEEAmR3CQCkAwEFAmJ2BAJkeAgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkcgILV3JvbmcgTFAgaWQIcXVhbnRpdHkDCQECIT0CCQDYBAEFAmRyBQJkbwkAAgECD1dyb25nIHBtdCBhc3NldAQCZHkJAQJiWQEFAmRzBAJkegkBAUgCBQJkeQUCZHUEAmRBCQECYlkBBQJkdAQCZEIJAQFIAgUCZEEFAmR2BAJkQwkBAmNhAgUCZEIFAmR6BAJkRAkBAUwCBQJkQwUBYQQCZEUJAQFIAgUCZHAFAWEEAmRGCQEBSAIFAmR4BQFhBAJkRwkAvAIDBQJkegUCZEUFAmRGBAJkSAkAvAIDBQJkQgUCZEUFAmRGBAJkSQkBAU8DBQJkRwUCZHUFBUZMT09SBAJkSgkBAU8DBQJkSAUCZHYFBUZMT09SBAJkSwMJAAACBQJkbgIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCZHEFAmRJAwkAAAIFAmRzAgVXQVZFUwUEdW5pdAkA2QQBBQJkcwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJkcQUCZEoDCQAAAgUCZHQCBVdBVkVTBQR1bml0CQDZBAEFAmR0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhaQIJAKUIAQUCZHEFAmRuCQECYlUGBQJkSQUCZEoFAmRwBQJkRAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFiAAUCZEQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYwIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmREBQNuaWwJAJwKCgUCZEkFAmRKBQJkcwUCZHQFAmR5BQJkQQUCZHgFAmRDBQJkdwUCZEsBAmRMDQJkbgJjaAJkTQJkTgJkTwJkUAJkcQJkUQJkUgJkUwJkVAJkVQJkVgQCZHIFAmJ3BAJkVwkA2AQBCQEFdmFsdWUBBQJieAQCZFgJANgEAQkBBXZhbHVlAQUCYnkEAmRZBQJiQgQCZFoFAmJDBAJlYQUCYnoEAmViBQJiQQQCZHcJAKQDAQUCYnYEAmVjCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmRyAghXciBscCBhcwhxdWFudGl0eQQCZHkDBQJkUQkBAmJZAQUCZFcDAwUCZFMJAAACBQJkVgUCZFcHCQBlAgkBAmJZAQUCZFcFAmRVAwUCZFMJAQJiWQEFAmRXCQBlAgkBAmJZAQUCZFcFAmRNBAJkQQMFAmRRCQECYlkBBQJkWAMDBQJkUwkAAAIFAmRWBQJkWAcJAGUCCQECYlkBBQJkWAUCZFUDBQJkUwkBAmJZAQUCZFgJAGUCCQECYlkBBQJkWAUCZE8EAmVkCQEBSAIFAmRNBQJlYQQCZWUJAQFIAgUCZE8FAmViBAJlZgkBAmNhAgUCZWUFAmVkBAJkegkBAUgCBQJkeQUCZWEEAmRCCQEBSAIFAmRBBQJlYgQCY20JAQJjSgEJAMwIAgUCZHoJAMwIAgUCZEIFA25pbAQCZWcDCQAAAgUCZWMAAAQCY2wJAQJjSgEJAMwIAgkAtwICBQJkegUCZWQJAMwIAgkAtwICBQJkQgUCZWUFA25pbAQCZWgDCQC/AgIFAmNsBQJjbQYJAAIBAhxEMSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIEQwAwkAAAIFAmVoBQJlaAQCZEMFAWQEAmVpBQFkBAJjQgUCY2wJAJcKBQkBAUwCBQJjQgUBYQkBAUwCBQJlZAUCZWEJAQFMAgUCZWUFAmViCQECY2ECCQC3AgIFAmRCBQJlZQkAtwICBQJkegUCZWQFAmVpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAJkQwkBAmNhAgUCZEIFAmR6BAJlagkAvAIDCQEBVwEJALgCAgUCZEMFAmVmBQFjBQJkQwQCZWkJAQFIAgUCY2gFAWEDAwMFAmRUCQECIT0CBQJkQwUBZAcJAL8CAgUCZWoFAmVpBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJlagIDID4gCQCmAwEFAmVpBAJlawkBAUgCBQJlYwUBYQQCZWwJAL0CBAUCZWQJAQJjZAMFAmRCBQJkegUHQ0VJTElORwUBYwUHQ0VJTElORwQCZW0JAL0CBAUCZWUFAWMJAQJjZAMFAmRCBQJkegUFRkxPT1IFB0NFSUxJTkcEAmVuAwkAvwICBQJlbAUCZWUJAJQKAgUCZW0FAmVlCQCUCgIFAmVkBQJlbAQCZW8IBQJlbgJfMQQCZXAIBQJlbgJfMgQCY2wJAQJjSgEJAMwIAgkAtwICBQJkegUCZW8JAMwIAgkAtwICBQJkQgUCZXAFA25pbAQCZWgDCQC/AgIFAmNsBQJjbQYJAAIBAhxEMSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIEQwAwkAAAIFAmVoBQJlaAQCY0IJALwCAwUCZWsJALgCAgUCY2wFAmNtBQJjbQkAlwoFCQEBTwMFAmNCBQFhBQVGTE9PUgkBAU8DBQJlbwUCZWEFB0NFSUxJTkcJAQFPAwUCZXAFAmViBQdDRUlMSU5HBQJkQwUCZWkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAmVxCAUCZWcCXzEEAmVyCAUCZWcCXzIEAmVzCAUCZWcCXzMEAmRECQEBTAIIBQJlZwJfNAUBYQQCZXQJAQFMAggFAmVnAl81BQFhAwkAZwIAAAUCZXEJAAIBAgdMUCA8PSAwBAJldQMJAQEhAQUCZFIAAAUCZXEEAmV2CQBlAgUCZE0FAmVyBAJldwkAZQIFAmRPBQJlcwQCZXgDAwUCZFMJAAACBQJkVgUCZFcHCQCUCgIFAmRVAAADAwUCZFMJAAACBQJkVgUCZFgHCQCUCgIAAAUCZFUJAJQKAgUCZXIFAmVzBAJleQgFAmV4Al8xBAJleggFAmV4Al8yBAJlQQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFiAAUCZEQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYwIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRECQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZgIFAmRxBQJkbgkBAmJKCgUCZXkFAmV6BQJldQUCZEQFAmNoBQJldAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZXYFAmV3BQNuaWwJAJ8KDQUCZXEFAmV1BQJkRAUCZHkFAmRBBQJlYwUCZHIFAmR3BQJlQQUCZXYFAmV3BQJkTgUCZFABAmVCAwJjSwJjWQJlQwQCZUQFAWcEAmVFCQCRAwIFAmNLAwkAAAIFAmNZAAAAAQAABAJlRgkApwMBBQFsBAJhUQkAuQICCQCnAwEFAmJmBQJlRgQCYVUFAmVFBAJjTgkAuQICBQJhUQUCZUQEAmVHCQC6AgIJALkCAgkAuQICCQC6AgIJALkCAgUCZUMFAmVDCQC5AgIFAmVFBQJlRAUCZUMFAmVGCQC5AgIFAmNOBQJlRAQCZUgJALgCAgkAtwICBQJhVQkAugICCQC5AgIFAmVDBQJlRgUCY04FAmVDCgECY1cCAmNYAmVJBAJlSgUCY1gEAmVLCAUCZUoCXzEEAmRsCAUCZUoCXzIDCQECIT0CBQJkbAUEdW5pdAUCY1gEAmVMCQC6AgIJALcCAgkAuQICBQJlSwUCZUsFAmVHCQC3AgIJALkCAgUBZwUCZUsFAmVIBAJlTQkBAVgBCQC4AgIFAmVMCQEFdmFsdWUBBQJlSwMJAMACAgUBZgUCZU0JAJQKAgUCZUwFAmVJCQCUCgIFAmVMBQR1bml0BAJkYwkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlTgoAAmRlBQJkYwoAAmRmCQCQAwEFAmRlCgACZGcJAJQKAgUCZUMFBHVuaXQKAQJkaAICZGkCZGoDCQBnAgUCZGoFAmRmBQJkaQkBAmNXAgUCZGkJAJEDAgUCZGUFAmRqCgECZGsCAmRpAmRqAwkAZwIFAmRqBQJkZgUCZGkJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmRrAgkBAmRoAgkBAmRoAgkBAmRoAgkBAmRoAgkBAmRoAgkBAmRoAgkBAmRoAgkBAmRoAgkBAmRoAgkBAmRoAgkBAmRoAgkBAmRoAgkBAmRoAgkBAmRoAgkBAmRoAgUCZGcAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZUsIBQJlTgJfMQQCZGwIBQJlTgJfMgMJAQIhPQIFAmRsBQR1bml0BQJlSwkAAgEJAKwCAgIZWSBjYWxjdWxhdGlvbiBlcnJvciwgWSA9IAkApgMBBQJlSwECZU8DAmVQAmVRAmVSBAJlUwkAvAIDCQECY0oBCQDMCAIJAQFLAgUCZVAJALYCAQUCYnoJAMwIAgkBAUsCBQJlUQkAtgIBBQJiQQUDbmlsBQFjBQJlUgMJAAACBQJlUgUBZQUBZQUCZVMBAmVUAwJlVQJlVgJlVwQCZVgJALgCAgkAtgIBCQECYlkBCQECYnABBQJieAUCZVUEAmVZCQC4AgIJALYCAQkBAmJZAQkBAmJwAQUCYnkFAmVWBAJlWgkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJ3CHF1YW50aXR5BQJlVwQCZmEJAQJlTwMFAmVYBQJlWQUCZVoFAmZhAQJmYgMCZmMCZmQCZVcEAmVYCQBkAgkBAmJZAQkBAmJwAQUCYngFAmZjBAJlWQkAZAIJAQJiWQEJAQJicAEFAmJ5BQJmZAQCZVoJAGQCCAkBBXZhbHVlAQkA7AcBBQJidwhxdWFudGl0eQUCZVcEAmVTCQECZU8DCQC2AgEFAmVYCQC2AgEFAmVZCQC2AgEFAmVaBAJmZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYXMFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhcgkApgMBBQJlUwUDbmlsCQCUCgIFAmZlBQJlUwECZmYCAmZnAmVTAwkAwAICBQJlUwUCZmcGCQECYVoBAiJ1cGRhdGVkIERMcCBsb3dlciB0aGFuIGN1cnJlbnQgRExwAQJmaAECZmkEAmVYCQECYlkBCQECYnABBQJieAQCZVkJAQJiWQEJAQJicAEFAmJ5BAJmaggFAmZpBmFtb3VudAQCZmsJAG4ECAUCZmkGYW1vdW50CAUCZmkFcHJpY2UFAWEFBUZMT09SBAJmbAMJAAACCAUCZmkJb3JkZXJUeXBlBQNCdXkJAJQKAgUCZmoJAQEtAQUCZmsJAJQKAgkBAS0BBQJmagUCZmsEAmZjCAUCZmwCXzEEAmZkCAUCZmwCXzIDAwMJAQJiZwAGCQAAAgUCYnYFAXIGCQAAAgUCYnYFAXMJAAIBAg1BZG1pbiBibG9ja2VkAwMJAQIhPQIICAUCZmkJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BQJieAYJAQIhPQIICAUCZmkJYXNzZXRQYWlyCnByaWNlQXNzZXQFAmJ5CQACAQIJV3IgYXNzZXRzBAJmbQkApwMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFyAgEwBAJmbgkBAmZiAwUCZmMFAmZkAAAEAmZvCAUCZm4CXzEEAmZwCAUCZm4CXzIEAmZxCQDAAgIFAmZwBQJmbQQCZnIJALkJAgkAzAgCAgRkTHA9CQDMCAIJAKYDAQUCZm0JAMwIAgIIIGRMcE5ldz0JAMwIAgkApgMBBQJmcAkAzAgCAhQgYW1vdW50QXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmVYCQDMCAICEyBwcmljZUFzc2V0QmFsYW5jZT0JAMwIAgkApAMBBQJlWQkAzAgCAhkgYW1vdW50QXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZmMJAMwIAgIYIHByaWNlQXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZmQJAMwIAgIIIGhlaWdodD0JAMwIAgkApAMBBQZoZWlnaHQFA25pbAIACQCUCgIFAmZxBQJmcgECZnMBAmNZAwkBAiE9AgkAkAMBCAUCY1kIcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmZ0CQEFdmFsdWUBCQCRAwIIBQJjWQhwYXltZW50cwAABAJkbwkBBXZhbHVlAQgFAmZ0B2Fzc2V0SWQEAmRVCAUCZnQGYW1vdW50BAJlZwkBAmRtBAkA2AQBCAUCY1kNdHJhbnNhY3Rpb25JZAkA2AQBBQJkbwUCZFUIBQJjWQZjYWxsZXIEAmRJCAUCZWcCXzEEAmRKCAUCZWcCXzIEAmR3CQENcGFyc2VJbnRWYWx1ZQEIBQJlZwJfOQQCZEsIBQJlZwNfMTADAwkBAmJnAAYJAAACBQJkdwUBcwkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmR3CQCXCgUFAmRJBQJkSgUCZFUFAmRvBQJkSwECZnUKAmZ2AmFoAmZ3AmZ4AmNoAmRSAmRTAmRUAmRVAmRWBAJlZwkBAmRMDQUCYWgFAmNoCAkBBXZhbHVlAQUCZncGYW1vdW50CAkBBXZhbHVlAQUCZncHYXNzZXRJZAgJAQV2YWx1ZQEFAmZ4BmFtb3VudAgJAQV2YWx1ZQEFAmZ4B2Fzc2V0SWQFAmZ2CQAAAgUCYWgCAAUCZFIFAmRTBQJkVAUCZFUFAmRWBAJkdwkBDXBhcnNlSW50VmFsdWUBCAUCZWcCXzgDAwMJAQJiZwAGCQAAAgUCZHcFAXEGCQAAAgUCZHcFAXMJAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFAmR3BQJlZwECZnkFAmZ6AmRvAmRxAmFoAmZBBAJkcwkA2AQBCQEFdmFsdWUBBQJieAQCZHQJANgEAQkBBXZhbHVlAQUCYnkEAmRyBQJidwQCZWEFAmJ6BAJlYgUCYkEEAmVaCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZHICEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmZCAwkAvwICBQJlWgUBZQYJAAIBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmZCBQJmQgQCZHkJAQJiWQEFAmRzBAJkQQkBAmJZAQUCZHQEAmZDAwkAAAIFAmFoAgAJAJQKAgUCZHkFAmRBAwkAAAIFAmRvBQJkcwMJAGYCBQJmegUCZHkJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIJAGUCBQJkeQUCZnoFAmRBAwkAAAIFAmRvBQJkdAMJAGYCBQJmegUCZEEJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIFAmR5CQBlAgUCZEEFAmZ6CQACAQIQd3JvbmcgcG10QXNzZXRJZAQCZkQIBQJmQwJfMQQCZkUIBQJmQwJfMgQCZkYDCQAAAgUCZG8FAmRzCQCUCgIFAmZ6AAADCQAAAgUCZG8FAmR0CQCUCgIAAAUCZnoJAAIBAg9pbnZhbGlkIHBheW1lbnQEAmZHCAUCZkYCXzEEAmZICAUCZkYCXzIEAmZJAwUCZkEJAJUKAwgJAQJjRwIFAmZHBQJiYwJfMQgJAQJjRwIFAmZIBQJiYwJfMQgJAQJjRwIFAmZ6BQJiYwJfMgkAlQoDBQJmRwUCZkgAAAQCZkoIBQJmSQJfMQQCZksIBQJmSQJfMgQCY0kIBQJmSQJfMwQCZkwJAGQCBQJmRAUCZkoEAmZNCQBkAgUCZkUFAmZLBAJjbQkBAmNKAQkAzAgCCQEBSAIFAmZEBQJiegkAzAgCCQEBSAIFAmZFBQJiQQUDbmlsBAJjbAkBAmNKAQkAzAgCCQEBSAIFAmZMBQJiegkAzAgCCQEBSAIFAmZNBQJiQQUDbmlsBAJlaAMJAL8CAgUCY2wFAmNtBgkBBXRocm93AAMJAAACBQJlaAUCZWgEAmZOCQC9AgQFAmVaCQC4AgIFAmNsBQJjbQUCY20FBUZMT09SBAJkRAkBAUwCCQECY2ECCQEBSAIFAmZNBQJlYgkBAUgCBQJmTAUCZWEFAWEEAmVBCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWIABQJkRAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFjAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZEQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFmAgUCZHEFAmFoCQECYkoKBQJmRwUCZkgJAKADAQUCZk4FAmREAAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZk8JAGsDBQJmRQUBYQUCZkQEAmZQCQBrAwUCZnoFAWEJAGQCBQJmTwUBYQQCZlEJAGUCBQJmegUCZlAEAmZSCQC8AgMFAmVaCQC2AgEFAmZRCQC2AgEFAmZFBAJmUwkAoAMBCQC8AgMJALgCAgUCZk4FAmZSBQFiBQJmUgkAlgoECQCgAwEFAmZOBQJlQQUCY0kFAmZTCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmVAYCZlUCZlYCZlcCZnYCZlgCZlkEAmRyCQDYBAEJAQV2YWx1ZQEFAmJ3BAJkcwkA2AQBCQEFdmFsdWUBBQJieAQCZHQJANgEAQkBBXZhbHVlAQUCYnkEAmZaBQJiegQCZ2EFAmJBBAJnYgUCYnYEAmRxAwkAAAIFAmZ2BQJiSQUCZlgFAmZ2BAJmdAkBBXZhbHVlAQkAkQMCBQJmVwAABAJkbwkBBXZhbHVlAQgFAmZ0B2Fzc2V0SWQEAmRVCAUCZnQGYW1vdW50BAJmYQkBAmVUAwUBZQUBZQUBZQMJAAACBQJmYQUCZmEEAmRuCQDYBAEFAmZZAwkBAiE9AgUCZHIJANgEAQUCZG8JAAIBAghXcm9uZyBMUAQCZHkJAQJiWQEFAmRzBAJkQQkBAmJZAQUCZHQEAmdjCgACYmQJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJmVQkAzAgCBQJkVQUDbmlsBQNuaWwDCQABAgUCYmQCCihJbnQsIEludCkFAmJkCQACAQkArAICCQADAQUCYmQCHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkDCQAAAgUCZ2MFAmdjBAJjSQgFAmdjAl8yBAJnZAgFAmdjAl8xBAJnZQMDCQBmAgUCZlYAAAkAZgIFAmZWBQJnZAcJAQJhWgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZlYFA25pbAIABQJnZAQCZ2YDCQAAAgUCZlUFAmRzCQCWCgQFAmdlAAAJAGUCCQBlAgUCZHkFAmdlBQJjSQUCZEEDCQAAAgUCZlUFAmR0CQCWCgQAAAUCZ2UFAmR5CQBlAgkAZQIFAmRBBQJnZQUCY0kJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCZ2cIBQJnZgJfMQQCZ2gIBQJnZgJfMgQCZkwIBQJnZgJfMwQCZk0IBQJnZgJfNAQCZ2kJAQJjYQIJAQFIAgUCZk0FAmdhCQEBSAIFAmZMBQJmWgQCZ2oJAQFMAgUCZ2kFAWEEAmdrAwkAAAIFAmZVAgVXQVZFUwUEdW5pdAkA2QQBBQJmVQQCZ2wDCQBmAgUCY0kAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiaQUCY0kFAmdrBQNuaWwFA25pbAQCZEsJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJkcQUCZ2UFAmdrCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhaQIJAKUIAQUCZHEFAmRuCQECYlUGBQJnZwUCZ2gFAmRVBQJnagUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFiAAUCZ2oJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYwIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmdqBQNuaWwFAmdsAwkAAAIFAmRLBQJkSwQCZ20JAPwHBAUCYVQCBGJ1cm4JAMwIAgUCZFUFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZG8FAmRVBQNuaWwDCQAAAgUCZ20FAmdtBAJnbgQCZ28DCQAAAgUEdGhpcwUCYmkAAAUCY0kEAmdwAwkAAAIJAQJibgEFAmZVBQJieAYHAwUCZ3AJAJQKAgkBAS0BCQBkAgUCZ2QFAmdvAAAJAJQKAgAACQEBLQEJAGQCBQJnZAUCZ28EAmZjCAUCZ24CXzEEAmZkCAUCZ24CXzIEAmdxCQECZmIDBQJmYwUCZmQAAAQCZ3IIBQJncQJfMQQCZVMIBQJncQJfMgQCZ3MJAQJmZgIFAmZhBQJlUwMJAAACBQJncwUCZ3MJAJQKAgkAzggCBQJkSwUCZ3IFAmdlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJndAAEAmd1CQECYVIABAJhUAkAnQgCBQJndQkBAVoAAwkAAQIFAmFQAgZTdHJpbmcEAmFVBQJhUAkA2QQBBQJhVQMJAAECBQJhUAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJndgkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJndwECY1kEAmFQCQECZ3QAAwkAAQIFAmFQAgpCeXRlVmVjdG9yBAJneAUCYVAJAAACCAUCY1kPY2FsbGVyUHVibGljS2V5BQJneAMJAAECBQJhUAIEVW5pdAkAAAIIBQJjWQZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECZ3kBAmNZBAJhUAkBAmd0AAMJAAECBQJhUAIKQnl0ZVZlY3RvcgQCZ3gFAmFQAwkAAAIIBQJjWQ9jYWxsZXJQdWJsaWNLZXkFAmd4BgUCZ3YDCQABAgUCYVACBFVuaXQDCQAAAggFAmNZBmNhbGxlcgUEdGhpcwYFAmd2CQACAQILTWF0Y2ggZXJyb3IBAmd6AwJnQQJlQwJnQgQCYnIJAQJiagAEAmRzCQCRAwIFAmJyBQF3BAJkdAkAkQMCBQJicgUBeAQCZUQFAWcEAmVGCQCnAwEFAWwEAmFRCQC5AgIJAKcDAQUCYmYFAmVGBAJjSwMJAAACBQJnQQcJAMwIAgkAtwICCQC2AgEJAQJiWQEFAmRzBQJnQgkAzAgCCQC2AgEJAQJiWQEFAmR0BQNuaWwJAMwIAgkAtwICCQC2AgEJAQJiWQEFAmR0BQJnQgkAzAgCCQC2AgEJAQJiWQEFAmRzBQNuaWwEAmVFCQCRAwIFAmNLAAAEAmFVBQJlRQQCY04JALkCAgUCYVEFAmVEBAJlRwkAugICCQC5AgIJALkCAgkAugICCQC5AgIFAmVDBQJlQwkAuQICBQJlRQUCZUQFAmVDBQJlRgkAuQICBQJjTgUCZUQEAmVICQC4AgIJALcCAgUCYVUJALoCAgkAuQICBQJlQwUCZUYFAmNOBQJlQwoBAmNXAgJjWAJlSQQCZ0MFAmNYBAJlSwgFAmdDAl8xBAJkbAgFAmdDAl8yAwkBAiE9AgUCZGwFBHVuaXQFAmNYBAJlTAkAugICCQC3AgIJALkCAgUCZUsFAmVLBQJlRwkAtwICCQC5AgIFAWcFAmVLBQJlSAQCZU0JAQFYAQkAuAICBQJlTAkBBXZhbHVlAQUCZUsDCQDAAgIFAWYFAmVNCQCUCgIFAmVMBQJlSQkAlAoCBQJlTAUEdW5pdAQCZGMJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZ0QKAAJkZQUCZGMKAAJkZgkAkAMBBQJkZQoAAmRnCQCUCgIFAmVDBQR1bml0CgECZGgCAmRpAmRqAwkAZwIFAmRqBQJkZgUCZGkJAQJjVwIFAmRpCQCRAwIFAmRlBQJkagoBAmRrAgJkaQJkagMJAGcCBQJkagUCZGYFAmRpCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJkawIJAQJkaAIJAQJkaAIJAQJkaAIJAQJkaAIJAQJkaAIJAQJkaAIJAQJkaAIJAQJkaAIJAQJkaAIJAQJkaAIJAQJkaAIJAQJkaAIJAQJkaAIJAQJkaAIJAQJkaAIFAmRnAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmVLCAUCZ0QCXzEEAmRsCAUCZ0QCXzIDCQECIT0CBQJkbAUEdW5pdAUCZUsJAAIBCQCsAgICGVkgY2FsY3VsYXRpb24gZXJyb3IsIFkgPSAJAKYDAQUCZUsBAmdFAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhVAkBAmFHAQkApQgBBQR0aGlzBxsCY1kBIWNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBSRUFET05MWQMCZ0YCZ0ECZ0cEAmdIAwkAAAIFAmdBBwQCZ0kJAQJhVgIFBHRoaXMJAQJhawAEAmdCCQC3AgIJALYCAQkBAmJZAQkBAmFWAgUEdGhpcwkBAmFqAAkAtgIBBQJnRgkAlAoCBQJnSQUCZ0IEAmdJCQECYVYCBQR0aGlzCQECYWoABAJnQgkAtwICCQC2AgEJAQJiWQEJAQJhVgIFBHRoaXMJAQJhawAJALYCAQUCZ0YJAJQKAgUCZ0kFAmdCBAJnSQgFAmdIAl8xBAJnQggFAmdIAl8yBAJicgkBAmJqAAQCZHMJAJEDAgUCYnIFAXcEAmR0CQCRAwIFAmJyBQF4BAJjSwkAzAgCCQC2AgEJAQJiWQEFAmRzCQDMCAIJALYCAQkBAmJZAQUCZHQFA25pbAQCZUMJAQJjSgEFAmNLBAJlSwkBAmd6AwUCZ0EFAmVDCQC2AgEFAmdGBAJnSgkAuAICCQC4AgIJALYCAQkBAmJZAQUCZ0kFAmVLCQC2AgEAAQQCZ0sJAJYDAQkAzAgCAAAJAMwIAgkAoAMBBQJnSgUDbmlsBAJnTAMJAAACBQJnQQcJAMwIAgkAtwICCQC3AgIJALYCAQkBAmJZAQUCZHMJALYCAQUCZ0YJALYCAQUCZ0cJAMwIAgkAuAICCQC2AgEJAQJiWQEFAmR0BQJnSgUDbmlsCQDMCAIJALgCAgkAtgIBCQECYlkBBQJkcwUCZ0oJAMwIAgkAtwICCQC3AgIJALYCAQkBAmJZAQUCZHQJALYCAQUCZ0YJALYCAQUCZ0cFA25pbAQCZ00JAQJjSgEFAmdMBAJlaAMJAMACAgUCZ00FAmVDBgkAAgEJALkJAgkAzAgCAhRuZXcgRCBpcyBmZXdlciBlcnJvcgkAzAgCCQCmAwEFAmVDCQDMCAIJAKYDAQUCZ00FA25pbAICX18DCQAAAgUCZWgFAmVoCQCUCgIFA25pbAUCZ0sJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1kBJmNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBBbmRTZW5kVG9rZW5zBQJnRgJnQQJnTgJnTwJnRwQCZ1AKAAJiZAkA/AcEBQJhVAIXZ2V0U3dhcENvbnRyYWN0UkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAmJkAgZTdHJpbmcFAmJkCQACAQkArAICCQADAQUCYmQCGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwQCZ1EJAMwIAgMJAGcCCAkBBXZhbHVlAQkAkQMCCAUCY1kIcGF5bWVudHMAAAZhbW91bnQFAmdGBgkBAmFaAQIMV3JvbmcgYW1vdW50CQDMCAIDCQAAAggFAmNZBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZ1AGCQECYVoBAhFQZXJtaXNzaW9uIGRlbmllZAUDbmlsAwkAAAIFAmdRBQJnUQQCZnQJAQV2YWx1ZQEJAJEDAggFAmNZCHBheW1lbnRzAAAEAmdSCQECYnABCAUCZnQHYXNzZXRJZAQCZ1MDCQAAAgUCZ0EHBAJnSQkBAmFWAgUEdGhpcwkBAmFrAAQCZ0IJAGUCCQECYlkBBQJnUggJAQV2YWx1ZQEJAJEDAggFAmNZCHBheW1lbnRzAAAGYW1vdW50CQCUCgIFAmdJBQJnQgQCZ0kJAQJhVgIFBHRoaXMJAQJhagAEAmdCCQBlAgkBAmJZAQUCZ1IICQEFdmFsdWUBCQCRAwIIBQJjWQhwYXltZW50cwAABmFtb3VudAkAlAoCBQJnSQUCZ0IEAmdJCAUCZ1MCXzEEAmdCCAUCZ1MCXzIEAmJyCQECYmoABAJkcwkAkQMCBQJicgUBdwQCZHQJAJEDAgUCYnIFAXgEAmNLAwkAAAIFAmdBBwkAzAgCCQC4AgIJALYCAQkBAmJZAQUCZHMJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNZCHBheW1lbnRzAAAGYW1vdW50CQDMCAIJALYCAQkBAmJZAQUCZHQFA25pbAkAzAgCCQC2AgEJAQJiWQEFAmRzCQDMCAIJALgCAgkAtgIBCQECYlkBBQJkdAkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCY1kIcGF5bWVudHMAAAZhbW91bnQFA25pbAQCZUMJAQJjSgEFAmNLBAJlSwkBAmd6AwUCZ0EFAmVDCQC2AgEAAAQCZ0oJALgCAgkAuAICCQC2AgEJAQJiWQEFAmdJBQJlSwkAtgIBAAEEAmdLCQCWAwEJAMwIAgAACQDMCAIJAKADAQUCZ0oFA25pbAQCZ1QDCQBnAgUCZ0sFAmdOBgkAAgECLEV4Y2hhbmdlIHJlc3VsdCBpcyBmZXdlciBjb2lucyB0aGFuIGV4cGVjdGVkAwkAAAIFAmdUBQJnVAQCZ0wDCQAAAgUCZ0EHCQDMCAIJALcCAgkAtgIBCQECYlkBBQJkcwkAtgIBBQJnRwkAzAgCCQC4AgIJALYCAQkBAmJZAQUCZHQFAmdKBQNuaWwJAMwIAgkAuAICCQC2AgEJAQJiWQEFAmRzBQJnSgkAzAgCCQC3AgIJALYCAQkBAmJZAQUCZHQJALYCAQUCZ0cFA25pbAQCZ00JAQJjSgEFAmdMBAJlaAMJAMACAgUCZ00FAmVDBgkAAgECFG5ldyBEIGlzIGZld2VyIGVycm9yAwkAAAIFAmVoBQJlaAkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmdPBQJnSwkBAmJuAQUCZ0kFA25pbAUCZ0sJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1kBC2NvbnN0cnVjdG9yAQFZBAJlRwkBAmd5AQUCY1kDCQAAAgUCZUcFAmVHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAAUBWQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNZAQNwdXQCAmdVAmdWBAJnVwkBAmJEAAQCZ1gJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmdXBQFDAgpXciBzdCBhZGRyBAJnWQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZ1cFAUUCCldyIHNsIGFkZHIDCQBmAgAABQJnVQkAAgECDldyb25nIHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUCY1kIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQCZ1oJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNZCHBheW1lbnRzAAAGYW1vdW50BAJoYQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCY1kIcGF5bWVudHMAAQZhbW91bnQEAmVYCQC4AgIJALYCAQkBAmJZAQkBAmJwAQUCYngFAmdaAwkAAAIFAmVYBQJlWAQCZVkJALgCAgkAtgIBCQECYlkBCQECYnABBQJieQUCaGEDCQAAAgUCZVkFAmVZBAJlWgkAtgIBCAkBBXZhbHVlAQkA7AcBBQJidwhxdWFudGl0eQMJAAACBQJlWgUCZVoEAmZhCQECZVQDBQJnWgUCaGEJALYCAQAAAwkAAAIFAmZhBQJmYQQCaGIJAQJmdQoJAKUIAQgFAmNZBmNhbGxlcgkA2AQBCAUCY1kNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJjWQhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJjWQhwYXltZW50cwAABmFtb3VudAkAkQMCCAUCY1kIcGF5bWVudHMAAQUCZ1UGBwYAAAIABAJldQgFAmhiAl8yBAJoYwgFAmhiAl83BAJkSwgFAmhiAl85BAJldggFAmhiA18xMAQCZXcIBQJoYgNfMTEEAmRzCAUCaGIDXzEyBAJkdAgFAmhiA18xMwQCZWcJAPwHBAUCYVQCBGVtaXQJAMwIAgUCZXUFA25pbAUDbmlsAwkAAAIFAmVnBQJlZwQCaGQEAmFQBQJlZwMJAAECBQJhUAIHQWRkcmVzcwQCaGUFAmFQCQD8BwQFAmhlAgRlbWl0CQDMCAIFAmV1BQNuaWwFA25pbAUEdW5pdAMJAAACBQJoZAUCaGQEAmhmAwkAZgIFAmV2AAAJAPwHBAUCZ1kCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkcwUCZXYFA25pbAUDbmlsAwkAAAIFAmhmBQJoZgQCaGcDCQBmAgUCZXcAAAkA/AcEBQJnWQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmR0BQJldwUDbmlsBQNuaWwDCQAAAgUCaGcFAmhnBAJoaAMFAmdWBAJoaQkA/AcEBQJnWAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCaGMFAmV1BQNuaWwDCQAAAgUCaGkFAmhpBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmNZBmNhbGxlcgUCZXUFAmhjBQNuaWwEAmhqCQECZmIDAAAAAAAABAJncggFAmhqAl8xBAJlUwgFAmhqAl8yBAJoawMJAMACAgUCZVMFAmZhBgkBAmFaAQkAuQkCCQDMCAICInVwZGF0ZWQgRExwIGxvd2VyIHRoYW4gY3VycmVudCBETHAJAMwIAgkApgMBBQJlWAkAzAgCCQCmAwEFAmVZCQDMCAIJAKYDAQUCZVoJAMwIAgkApgMBBQJmYQkAzAgCCQCmAwEFAmVTCQDMCAIJAKQDAQUCZXYJAMwIAgkApAMBBQJldwUDbmlsAgEgAwkAAAIFAmhrBQJoawQCaGwICQEFdmFsdWUBCQDsBwEFAmJ3CHF1YW50aXR5AwkAAAIFAmhsBQJobAkAzggCCQDOCAIFAmRLBQJoaAUCZ3IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1kBC3B1dE9uZVRrblYyAgJmVgJnVgQCaG0KAAJiZAkA/AcEBQJhVAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmJkAgdCb29sZWFuBQJiZAkAAgEJAKwCAgkAAwEFAmJkAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJobgMDAwkBAmJnAAYJAAACBQJidgUBcQYJAAACBQJidgUBcwYFAmhtBAJnUQkAzAgCAwMJAQEhAQUCaG4GCQECZ3cBBQJjWQYJAQJhWgECIXB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmNZCHBheW1lbnRzAAEGCQECYVoBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnUQUCZ1EEAmRzCQDYBAEJAQV2YWx1ZQEFAmJ4BAJkdAkA2AQBCQEFdmFsdWUBBQJieQQCZHIFAmJ3BAJmWgUCYnoEAmdhBQJiQQQCZHEDCQAAAggFAmNZBmNhbGxlcgUEdGhpcwgFAmNZDG9yaWdpbkNhbGxlcggFAmNZBmNhbGxlcgQCZnQJAQV2YWx1ZQEJAJEDAggFAmNZCHBheW1lbnRzAAAEAmRvCQDYBAEJAQV2YWx1ZQEIBQJmdAdhc3NldElkBAJkVQgFAmZ0BmFtb3VudAQCZmEDCQAAAggFAmZ0B2Fzc2V0SWQFAmJ4CQECZVQDCQC2AgEFAmRVCQC2AgEAAAkAtgIBAAAJAQJlVAMJALYCAQAACQC2AgEFAmRVCQC2AgEAAAMJAAACBQJmYQUCZmEEAmhvCQECZnkFBQJkVQUCZG8JAKUIAQUCZHEJANgEAQgFAmNZDXRyYW5zYWN0aW9uSWQGAwkAAAIFAmhvBQJobwQCY0kIBQJobwJfMwQCZEsIBQJobwJfMgQCaHAIBQJobwJfMQQCZXUDAwkAZgIFAmZWAAAJAGYCBQJmVgUCaHAHCQECYVoBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZWBQNuaWwCAAUCaHAEAmhiCQD8BwQFAmFUAgRlbWl0CQDMCAIFAmV1BQNuaWwFA25pbAMJAAACBQJoYgUCaGIEAmhkBAJhUAUCaGIDCQABAgUCYVACB0FkZHJlc3MEAmhlBQJhUAkA/AcEBQJoZQIEZW1pdAkAzAgCBQJldQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCaGQFAmhkBAJoaAMFAmdWBAJoaQkA/AcEBQJiRgIIc3Rha2VGb3IJAMwIAgkApQgBCAUCY1kGY2FsbGVyBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRyBQJldQUDbmlsAwkAAAIFAmhpBQJoaQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJjWQZjYWxsZXIFAmV1BQJkcgUDbmlsBAJnbAMJAGYCBQJjSQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJpBQJjSQkA2QQBBQJkbwUDbmlsBQNuaWwEAmhxAwkAAAIFBHRoaXMFAmJpCQCUCgIAAAAABAJocgMJAAACCAUCZnQHYXNzZXRJZAUCYngGBwMFAmhyCQCUCgIJAQEtAQUCY0kAAAkAlAoCAAAJAQEtAQUCY0kEAmZjCAUCaHECXzEEAmZkCAUCaHECXzIEAmhzCQECZmIDBQJmYwUCZmQAAAQCZ3IIBQJocwJfMQQCZVMIBQJocwJfMgQCZ3MJAQJmZgIFAmZhBQJlUwMJAAACBQJncwUCZ3MJAJQKAgkAzggCCQDOCAIJAM4IAgUCZEsFAmhoBQJnbAUCZ3IFAmV1CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNZAQpwdXRGb3JGcmVlAQJodAMJAGYCAAAFAmh0CQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAmNZCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmh1CQECZnUKCQClCAEIBQJjWQZjYWxsZXIJANgEAQgFAmNZDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCY1kIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCY1kIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmNZCHBheW1lbnRzAAEFAmh0BwcGAAACAAQCZEsIBQJodQJfOQQCZ1oJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNZCHBheW1lbnRzAAAGYW1vdW50BAJoYQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCY1kIcGF5bWVudHMAAQZhbW91bnQEAmZhCQECZVQDBQJnWgUCaGEJALYCAQAAAwkAAAIFAmZhBQJmYQQCaHYJAQJmYgMAAAAAAAAEAmdyCAUCaHYCXzEEAmVTCAUCaHYCXzIEAmdzCQECZmYCBQJmYQUCZVMDCQAAAgUCZ3MFAmdzCQDOCAIFAmRLBQJncgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjWQEDZ2V0AAQCZmEJAQJlVAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZmEFAmZhBAJlZwkBAmZzAQUCY1kEAmh3CAUCZWcCXzEEAmRKCAUCZWcCXzIEAmRVCAUCZWcCXzMEAmRvCAUCZWcCXzQEAmRLCAUCZWcCXzUEAmVICQD8BwQFAmFUAgRidXJuCQDMCAIFAmRVBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRvBQJkVQUDbmlsAwkAAAIFAmVIBQJlSAQCaHgJAQJmYgMJAQEtAQUCaHcJAQEtAQUCZEoAAAQCZ3IIBQJoeAJfMQQCZVMIBQJoeAJfMgQCZ3MJAQJmZgIFAmZhBQJlUwMJAAACBQJncwUCZ3MJAM4IAgUCZEsFAmdyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNZAQtnZXRPbmVUa25WMgICZlUCZlYEAmhtCgACYmQJAPwHBAUCYVQCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJiZAIHQm9vbGVhbgUCYmQJAAIBCQCsAgIJAAMBBQJiZAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCaHkDAwkBAmJnAAYJAAACBQJidgUBcwYFAmhtBAJnUQkAzAgCAwMJAQEhAQUCaHkGCQECZ3cBBQJjWQYJAQJhWgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmNZCHBheW1lbnRzAAEGCQECYVoBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnUQUCZ1EEAmh6CQECZlQGBQJmVQUCZlYIBQJjWQhwYXltZW50cwgFAmNZBmNhbGxlcggFAmNZDG9yaWdpbkNhbGxlcggFAmNZDXRyYW5zYWN0aW9uSWQEAmRLCAUCaHoCXzEEAmdlCAUCaHoCXzIJAJQKAgUCZEsFAmdlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNZAQpyZWZyZXNoRExwAAQCaEEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUCYXMAAAQCaEIDCQBnAgkAZQIFBmhlaWdodAUCaEEFAmF2BQR1bml0CQECYVoBCQC5CQIJAMwIAgkApAMBBQJhdgkAzAgCAi8gYmxvY2tzIGhhdmUgbm90IHBhc3NlZCBzaW5jZSB0aGUgcHJldmlvdXMgY2FsbAUDbmlsAgADCQAAAgUCaEIFAmhCBAJmbQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYXICATAJAQJiYgECC2ludmFsaWQgZExwBAJoQwkBAmZiAwAAAAAAAAQCaEQIBQJoQwJfMQQCZVMIBQJoQwJfMgQCZmUDCQECIT0CBQJmbQUCZVMFAmhECQECYVoBAhJub3RoaW5nIHRvIHJlZnJlc2gJAJQKAgUCZmUJAKYDAQUCZVMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1kBE2dldE9uZVRrblYyUkVBRE9OTFkCAmZVAmhFBAJkcwkA2AQBCQEFdmFsdWUBBQJieAQCZHQJANgEAQkBBXZhbHVlAQUCYnkEAmRyCQDYBAEJAQV2YWx1ZQEFAmJ3BAJjSwkAzAgCCQC2AgEJAQJiWQEFAmRzCQDMCAIJALYCAQkBAmJZAQUCZHQFA25pbAQCZVIJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmRyAhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJjbQkBAmNKAQUCY0sEAmNsCQC4AgIFAmNtCQC8AgMJALYCAQUCaEUFAmNtBQJlUgQCaEYDCQAAAgUCZlUFAmRzAAADCQAAAgUCZlUFAmR0AAEJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCaEcJAQJlQgMFAmNLBQJoRgUCY2wEAmdKCQC4AgIJAJEDAgUCY0sFAmhGBQJoRwQCZ0sJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC4AgIFAmdKBQFmBQNuaWwEAmhICQECY0cCBQJnSwUCYmUEAmdkCAUCaEgCXzEEAmNJCAUCaEgCXzIJAJQKAgUDbmlsCQCUCgIFAmdkBQJjSQJjWQEcZ2V0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQICZlUCaEUEAmRzCQDYBAEJAQV2YWx1ZQEFAmJ4BAJkdAkA2AQBCQEFdmFsdWUBBQJieQQCZHIJANgEAQkBBXZhbHVlAQUCYncEAmR5CQECYlkBBQJkcwQCZEEJAQJiWQEFAmR0BAJoSQoAAmJkCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZlUJAMwIAgUCaEUFA25pbAUDbmlsAwkAAQIFAmJkAgooSW50LCBJbnQpBQJiZAkAAgEJAKwCAgkAAwEFAmJkAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJnZAgFAmhJAl8xBAJjSQgFAmhJAl8yBAJlZwkBAmRtBAIABQJkcgUCaEUFBHRoaXMEAmRJCAUCZWcCXzEEAmRKCAUCZWcCXzIEAmhKCQBkAgUCZEkFAmRKBAJmUwMJAAACBQJoSgAAAwkAAAIFAmdkAAAAAAkAAgECF2JvbnVzIGNhbGN1bGF0aW9uIGVycm9yCQBrAwkAZQIFAmdkBQJoSgUBYQUCaEoJAJQKAgUDbmlsCQCVCgMFAmdkBQJjSQUCZlMCY1kBCWdldE5vTGVzcwICaEsCaEwEAmVnCQECZnMBBQJjWQQCZEkIBQJlZwJfMQQCZEoIBQJlZwJfMgQCZFUIBQJlZwJfMwQCZG8IBQJlZwJfNAQCZEsIBQJlZwJfNQMJAGYCBQJoSwUCZEkJAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUCZEkCAyA8IAkApAMBBQJoSwMJAGYCBQJoTAUCZEoJAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQJkSgIDIDwgCQCkAwEFAmhMBAJmYQkBAmVUAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJmYQUCZmEEAmhNCQD8BwQFAmFUAgRidXJuCQDMCAIFAmRVBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRvBQJkVQUDbmlsAwkAAAIFAmhNBQJoTQQCaE4JAQJmYgMJAQEtAQUCZEkJAQEtAQUCZEoAAAQCZ3IIBQJoTgJfMQQCZVMIBQJoTgJfMgQCZ3MJAQJmZgIFAmZhBQJlUwMJAAACBQJncwUCZ3MJAM4IAgUCZEsFAmdyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNZAQ11bnN0YWtlQW5kR2V0AQJjSAQCaE8DCQECIT0CCQCQAwEIBQJjWQhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCaE8FAmhPBAJoUAkBAmJEAAQCaGMFAmJ3BAJoUQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaFAFAUMCCldyIHN0IGFkZHIEAmZhCQECZVQDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmZhBQJmYQQCaFIJAPwHBAUCaFECB3Vuc3Rha2UJAMwIAgkA2AQBBQJoYwkAzAgCBQJjSAUDbmlsBQNuaWwDCQAAAgUCaFIFAmhSBAJlZwkBAmRtBAkA2AQBCAUCY1kNdHJhbnNhY3Rpb25JZAkA2AQBBQJoYwUCY0gIBQJjWQZjYWxsZXIEAmRJCAUCZWcCXzEEAmRKCAUCZWcCXzIEAmR3CQENcGFyc2VJbnRWYWx1ZQEIBQJlZwJfOQQCZEsIBQJlZwNfMTAEAmhTAwMJAQJiZwAGCQAAAgUCZHcFAXMJAAIBCQCsAgICCUJsb2NrZWQ6IAkApAMBBQJkdwYDCQAAAgUCaFMFAmhTBAJoVAkA/AcEBQJhVAIEYnVybgkAzAgCBQJjSAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJoYwUCY0gFA25pbAMJAAACBQJoVAUCaFQEAmhVCQECZmIDCQEBLQEFAmRJCQEBLQEFAmRKAAAEAmdyCAUCaFUCXzEEAmVTCAUCaFUCXzIEAmdzCQECZmYCBQJmYQUCZVMDCQAAAgUCZ3MFAmdzCQDOCAIFAmRLBQJncgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjWQETdW5zdGFrZUFuZEdldE5vTGVzcwMCaFYCaFcCaEwEAmh5AwkBAmJnAAYJAAACBQJidgUBcwQCZ1EJAMwIAgMJAQEhAQUCaHkGCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCY1kIcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnUQUCZ1EEAmZhCQECZVQDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmZhBQJmYQQCaFIJAPwHBAUCYkYCB3Vuc3Rha2UJAMwIAgkA2AQBBQJidwkAzAgCBQJoVgUDbmlsBQNuaWwDCQAAAgUCaFIFAmhSBAJoWAkBAmRtBAkA2AQBCAUCY1kNdHJhbnNhY3Rpb25JZAkA2AQBBQJidwUCaFYIBQJjWQZjYWxsZXIEAmRJCAUCaFgCXzEEAmRKCAUCaFgCXzIEAmRLCAUCaFgDXzEwBAJoWQkAzAgCAwkAZwIFAmRJBQJoVwYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoVwUDbmlsAgAJAMwIAgMJAGcCBQJkSgUCaEwGCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoTAUDbmlsAgAFA25pbAMJAAACBQJoWQUCaFkEAmhNCQD8BwQFAmFUAgRidXJuCQDMCAIFAmhWBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJ3BQJoVgUDbmlsAwkAAAIFAmhNBQJoTQQCaFoJAQJmYgMJAQEtAQUCZEkJAQEtAQUCZEoAAAQCZ3IIBQJoWgJfMQQCZVMIBQJoWgJfMgQCZ3MJAQJmZgIFAmZhBQJlUwMJAAACBQJncwUCZ3MJAM4IAgUCZEsFAmdyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNZARV1bnN0YWtlQW5kR2V0T25lVGtuVjIDAmhWAmZVAmZWBAJobQoAAmJkCQD8BwQFAmFUAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmQCB0Jvb2xlYW4FAmJkCQACAQkArAICCQADAQUCYmQCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmh5AwMJAQJiZwAGCQAAAgUCYnYFAXMGBQJobQQCZ1EJAMwIAgMDCQEBIQEFAmh5BgkBAmd3AQUCY1kGCQECYVoBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJjWQhwYXltZW50cwAABgkBAmFaAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ1EFAmdRBAJoUAkBAmJEAAQCaGMFAmJ3BAJoUQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaFAFAUMCCldyIHN0IGFkZHIEAmRxCAUCY1kGY2FsbGVyBAJpYQUEdGhpcwQCaFIJAPwHBAUCaFECD3Vuc3Rha2VJTlRFUk5BTAkAzAgCBQJoYwkAzAgCBQJoVgkAzAgCCAUCZHEFYnl0ZXMJAMwIAggFAmlhBWJ5dGVzBQNuaWwFA25pbAMJAAACBQJoUgUCaFIEAmliCQECZlQGBQJmVQUCZlYJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmhjBQJoVgUDbmlsCAUCY1kGY2FsbGVyCAUCY1kMb3JpZ2luQ2FsbGVyCAUCY1kNdHJhbnNhY3Rpb25JZAQCZEsIBQJpYgJfMQQCZ2UIBQJpYgJfMgkAlAoCBQJkSwUCZ2UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1kBHHB1dE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmljAmlkBAJpZQkBAmZ5BQUCaWMFAmlkAgACAAYEAmZOCAUCaWUCXzEEAmRLCAUCaWUCXzIEAmNJCAUCaWUCXzMEAmZTCAUCaWUCXzQJAJQKAgUDbmlsCQCVCgMFAmZOBQJjSQUCZlMCY1kBIXB1dE9uZVRrblYyV2l0aG91dFRha2VGZWVSRUFET05MWQICaWMCaWQEAmlmCQECZnkFBQJpYwUCaWQCAAIABwQCZk4IBQJpZgJfMQQCZEsIBQJpZgJfMgQCY0kIBQJpZgJfMwQCZlMIBQJpZgJfNAkAlAoCBQNuaWwJAJUKAwUCZk4FAmNJBQJmUwJjWQEIYWN0aXZhdGUCAmlnAmloAwkBAiE9AgkApQgBCAUCY1kGY2FsbGVyCQClCAEFAmFUCQACAQIGZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFqAAUCaWcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFrAAUCaWgFA25pbAIHc3VjY2VzcwJjWQEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYmoAAmNZARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJiWgkAlAoCBQNuaWwJAQJiWQEFAmJaAmNZARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJjcwJjdAJjeAQCaWkJAQJjdwMFAmNzBQJjdAUCY3gJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJpaQAACQDMCAIJAKYDAQkAkQMCBQJpaQABCQDMCAIJAKYDAQkAkQMCBQJpaQACBQNuaWwCY1kBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCAU0CaWoJAJQKAgUDbmlsCQEBTAIJAKcDAQUBTQUCaWoCY1kBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFJAUoJAJQKAgUDbmlsCQCmAwEJAQFIAgUBSQUBSgJjWQEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJjYgJjYwkAlAoCBQNuaWwJAKYDAQkBAmNhAgkApwMBBQJjYgkApwMBBQJjYwJjWQEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmRuAmNoAmRNAmROAmRPAmRQAmlrAmRRAmRSCQCUCgIFA25pbAkBAmRMDQUCZG4FAmNoBQJkTQUCZE4FAmRPBQJkUAUCaWsFAmRRBQJkUgYHAAACAAJjWQEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmRuAmlsAmRwAmlrBAJlZwkBAmRtBAUCZG4FAmlsBQJkcAkBEUBleHRyTmF0aXZlKDEwNjIpAQUCaWsJAJQKAgUDbmlsCQCcCgoIBQJlZwJfMQgFAmVnAl8yCAUCZWcCXzMIBQJlZwJfNAgFAmVnAl81CAUCZWcCXzYIBQJlZwJfNwkApgMBCAUCZWcCXzgIBQJlZwJfOQgFAmVnA18xMAJjWQEJY2hhbmdlQW1wAAQCaW0JAPwHBAUCYVQCGmdldENoYW5nZUFtcENvbmZpZ1JFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwEAmluBAJhUAUCaW0DCQABAgUCYVACCUxpc3RbQW55XQQCaW8FAmFQCQCVCgMKAAJiZAkAkQMCBQJpbwAAAwkAAQIFAmJkAgNJbnQFAmJkCQACAQkArAICCQADAQUCYmQCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAoAAmJkCQCRAwIFAmlvAAEDCQABAgUCYmQCA0ludAUCYmQJAAIBCQCsAgIJAAMBBQJiZAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CgACYmQJAJEDAgUCaW8AAgMJAAECBQJiZAIDSW50BQJiZAkAAgEJAKwCAgkAAwEFAmJkAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQJAQJhWgECEmludmFsaWQgZW50cnkgdHlwZQQCaXAIBQJpbgJfMQQCaXEIBQJpbgJfMgQCaXIIBQJpbgJfMwQCaXMJAQ1wYXJzZUludFZhbHVlAQkBEUBleHRyTmF0aXZlKDEwNTgpAQkBAmFsAAQCaXQJAGQCBQJpcwUCaXEEAml1AwkAZgIAAAUCaXEDCQBmAgUCaXIFAml0BQJpcgUCaXQDCQBmAgUCaXQFAmlyBQJpcgUCaXQEAml2CQELdmFsdWVPckVsc2UCCQCfCAEJAQJhbwAAAAQCaXcJAGQCBQJpdgUCaXAEAmdRCQDMCAIDCQBmAgUGaGVpZ2h0BQJpdwYJAQJhWgECF3RyeSBhZ2FpbiBpbiBmZXcgYmxvY2tzCQDMCAIDCQECIT0CBQJpcwUCaXUGCQECYVoBAhZhbHJlYWR5IHJlYWNoZWQgdGFyZ2V0BQNuaWwDCQAAAgUCZ1EFAmdRCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYW8ABQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFsAAkApAMBBQJpdQkAzAgCCQELU3RyaW5nRW50cnkCCQECYW0BBQZoZWlnaHQJAKQDAQUCaXUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECaXgBAml5AAQCaXoEAmFQCQECZ3QAAwkAAQIFAmFQAgpCeXRlVmVjdG9yBAJneAUCYVAFAmd4AwkAAQIFAmFQAgRVbml0CAUCaXgPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmFQBQJpeAMJAAECBQJhUAIFT3JkZXIEAmZpBQJhUAQCaUEJAQJiaAAEAmlCAwkBAmdFAAkAlAoCBgIACQECZmgBBQJmaQQCYUoIBQJpQgJfMQQCYUsIBQJpQgJfMgQCYUwJAPQDAwgFAmZpCWJvZHlCeXRlcwkAkQMCCAUCZmkGcHJvb2ZzAAAIBQJmaQ9zZW5kZXJQdWJsaWNLZXkEAmFNCQD0AwMIBQJmaQlib2R5Qnl0ZXMJAJEDAggFAmZpBnByb29mcwABBQJpQQMDAwUCYUoFAmFMBwUCYU0HBgkBAmFJBAUCYUoFAmFLBQJhTAUCYU0DCQABAgUCYVACFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJhVQUCYVADCQD0AwMIBQJpeAlib2R5Qnl0ZXMJAJEDAggFAml4BnByb29mcwAABQJpegYEAmlDCQD2AwEJAQV2YWx1ZQEIBQJhVQZzY3JpcHQEAmlECQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYVQJAQJhRQAEAmlFCQDxBwEFBHRoaXMDCQAAAgUCaUQFAmlDCQECIT0CBQJpRQUCaUMHCQD0AwMIBQJpeAlib2R5Qnl0ZXMJAJEDAggFAml4BnByb29mcwAABQJpek7bkhU=", "height": 2571711, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7BJiHH1qQiA4gD1dkNzJsk8Pavkw6FnSDgPHVhNoX5Mx Next: 6M83SbtA3zqQtFyUkYp84rEcE5XJHKaE1zgvEcAe9n7m Diff:
OldNewDifferences
188188
189189 func aR () = {
190190 let aS = {
191- let aP = aN(Y())
192- if ($isInstanceOf(aP, "Address"))
191+ let aP = getString(Y())
192+ if ($isInstanceOf(aP, "String"))
193193 then {
194194 let aT = aP
195- aT
195+ aN(aT)
196196 }
197197 else this
198198 }
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 (I,J) = fraction(I, c, J)
7474
7575
7676 func L (M,N) = toInt(fraction(M, toBigInt(N), c))
7777
7878
7979 func O (M,N,P) = toInt(fraction(M, toBigInt(N), c, P))
8080
8181
8282 func Q (I,J) = fraction(I, c, toBigInt(J))
8383
8484
8585 func R (M,N) = fraction(M, toBigInt(N), c)
8686
8787
8888 func S (T,U,V) = fraction(T, U, V)
8989
9090
9191 func W (M) = if ((d > M))
9292 then -(M)
9393 else M
9494
9595
9696 func X (M) = if ((d > M))
9797 then -(M)
9898 else M
9999
100100
101101 func Y () = "%s__factoryContract"
102102
103103
104104 func Z () = "%s__managerPublicKey"
105105
106106
107107 func aa () = "%s__managerVaultAddress"
108108
109109
110110 func ab () = "%s%s__price__last"
111111
112112
113113 func ac (ad,ae) = makeString(["%s%s%d%d__price__history", toString(ad), toString(ae)], n)
114114
115115
116116 func af (ag,ah) = ((("%s%s%s__P__" + ag) + "__") + ah)
117117
118118
119119 func ai (ag,ah) = ((("%s%s%s__G__" + ag) + "__") + ah)
120120
121121
122122 func aj () = "%s__amountAsset"
123123
124124
125125 func ak () = "%s__priceAsset"
126126
127127
128128 func al () = "%s__amp"
129129
130130
131131 func am (an) = ("%s%d__amp__" + toString(an))
132132
133133
134134 func ao () = "%s__changeAmpLastCall"
135135
136136
137137 let ap = "%s__fee"
138138
139139 let aq = valueOrElse(getInteger(this, ap), G)
140140
141141 let ar = makeString(["%s", "dLp"], n)
142142
143143 let as = makeString(["%s", "dLpRefreshedHeight"], n)
144144
145145 let at = makeString(["%s", "refreshDLpDelay"], n)
146146
147147 let au = 30
148148
149149 let av = valueOrElse(getInteger(this, at), au)
150150
151151 func aw () = "%s__factoryConfig"
152152
153153
154154 func ax () = "%s%s__matcher__publicKey"
155155
156156
157157 func ay (az,aA) = (((("%d%d%s__" + az) + "__") + aA) + "__config")
158158
159159
160160 func aB (aC) = ("%s%s%s__mappings__baseAsset2internalId__" + aC)
161161
162162
163163 func aD () = "%s__shutdown"
164164
165165
166166 func aE () = "%s__allowedLpStableScriptHash"
167167
168168
169169 func aF () = "%s__feeCollectorAddress"
170170
171171
172172 func aG (aH) = ("%s%s__skipOrderValidation__" + aH)
173173
174174
175175 func aI (aJ,aK,aL,aM) = throw((((((((("order validation failed: orderValid=" + toString(aJ)) + " (") + aK) + ")") + " senderValid=") + toString(aL)) + " matcherValid=") + toString(aM)))
176176
177177
178178 func aN (aO) = {
179179 let aP = addressFromString(aO)
180180 if ($isInstanceOf(aP, "Address"))
181181 then {
182182 let aQ = aP
183183 aQ
184184 }
185185 else this
186186 }
187187
188188
189189 func aR () = {
190190 let aS = {
191- let aP = aN(Y())
192- if ($isInstanceOf(aP, "Address"))
191+ let aP = getString(Y())
192+ if ($isInstanceOf(aP, "String"))
193193 then {
194194 let aT = aP
195- aT
195+ aN(aT)
196196 }
197197 else this
198198 }
199199 let aP = getString(aS, aa())
200200 if ($isInstanceOf(aP, "String"))
201201 then {
202202 let aU = aP
203203 aN(aU)
204204 }
205205 else this
206206 }
207207
208208
209209 func aV (aW,aX) = valueOrErrorMessage(getString(aW, aX), makeString(["mandatory ", toString(aW), ".", aX, " not defined"], ""))
210210
211211
212212 func aY (aW,aX) = valueOrErrorMessage(getInteger(aW, aX), makeString(["mandatory ", toString(aW), ".", aX, " not defined"], ""))
213213
214214
215215 func aZ (ba) = throw(makeString(["lp_stable.ride:", ba], " "))
216216
217217
218218 func bb (ba) = makeString(["lp_stable.ride:", ba], " ")
219219
220220
221221 let aT = addressFromStringValue(aV(this, Y()))
222222
223223 let bc = {
224224 let bd = invoke(aT, "getInFeeREADONLY", [toString(this)], nil)
225225 if ($isInstanceOf(bd, "Int"))
226226 then bd
227227 else throw(($getType(bd) + " couldn't be cast to Int"))
228228 }
229229
230230 let be = {
231231 let bd = invoke(aT, "getOutFeeREADONLY", [toString(this)], nil)
232232 if ($isInstanceOf(bd, "Int"))
233233 then bd
234234 else throw(($getType(bd) + " couldn't be cast to Int"))
235235 }
236236
237237 let bf = aV(this, al())
238238
239239 func bg () = valueOrElse(getBoolean(aT, aD()), false)
240240
241241
242242 func bh () = fromBase58String(aV(aT, ax()))
243243
244244
245245 let bi = addressFromStringValue(aV(aT, aF()))
246246
247247 func bj () = {
248248 let bk = aV(this, aj())
249249 let bl = aV(this, ak())
250250 let bm = aY(aT, aB(bl))
251251 let az = aY(aT, aB(bk))
252252 split(aV(aT, ay(toString(az), toString(bm))), n)
253253 }
254254
255255
256256 func bn (bo) = if ((bo == k))
257257 then unit
258258 else fromBase58String(bo)
259259
260260
261261 func bp (bo) = if ((bo == unit))
262262 then k
263263 else toBase58String(value(bo))
264264
265265
266266 func bq (br) = $Tuple9(addressFromStringValue(br[t]), parseIntValue(br[u]), fromBase58String(br[v]), bn(br[w]), bn(br[x]), parseIntValue(br[y]), parseIntValue(br[z]), fromBase58String(br[A]), fromBase58String(br[B]))
267267
268268
269269 let bs = bq(bj())
270270
271271 let bt = bs
272272
273273 let bu = bt._1
274274
275275 let bv = bt._2
276276
277277 let bw = bt._3
278278
279279 let bx = bt._4
280280
281281 let by = bt._5
282282
283283 let bz = bt._6
284284
285285 let bA = bt._7
286286
287287 let bB = bt._8
288288
289289 let bC = bt._9
290290
291291 func bD () = split(aV(aT, aw()), n)
292292
293293
294294 let bE = bD()
295295
296296 let bF = valueOrErrorMessage(addressFromString(bE[C]), "Invalid staking contract address")
297297
298298 let bG = valueOrErrorMessage(addressFromString(bE[E]), "Invalid slipage contract address")
299299
300300 let bH = valueOrErrorMessage(addressFromString(bE[F]), "Invalid gwx contract address")
301301
302302 let bI = valueOrErrorMessage(addressFromString(bE[D]), "Invalid gwx contract address")
303303
304304 func bJ (bK,bL,bM,bN,bO,bP,bQ,bR,bS,bT) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bK), toString(bL), toString(bM), toString(bN), toString(bO), toString(bP), toString(bQ), toString(bR), toString(bS), toString(bT)], n)
305305
306306
307307 func bU (bV,bW,bX,bN,bQ,bR) = makeString(["%d%d%d%d%d%d", toString(bV), toString(bW), toString(bX), toString(bN), toString(bQ), toString(bR)], n)
308308
309309
310310 func bY (bZ) = if ((bZ == "WAVES"))
311311 then wavesBalance(this).available
312312 else assetBalance(this, fromBase58String(bZ))
313313
314314
315315 func ca (cb,cc) = fraction(cb, c, cc)
316316
317317
318318 func cd (cb,cc,P) = fraction(cb, c, cc, P)
319319
320320
321321 func ce (cf,cg,ch) = {
322322 let ci = fraction((cf - cg), b, cg)
323323 let cj = ((ch - W(ci)) > d)
324324 if (!(cj))
325325 then throw(("Big slpg: " + toString(ci)))
326326 else $Tuple2(cj, min([cf, cg]))
327327 }
328328
329329
330330 func ck (cl,cm,cn) = {
331331 let ci = fraction(cm, b, cl)
332332 let co = (cn > ci)
333333 if (if (co)
334334 then true
335335 else (cm > cl))
336336 then throw(((((((toString(cm) + " ") + toString(cl)) + " ") + toString(ci)) + " ") + toString(cn)))
337337 else co
338338 }
339339
340340
341341 func cp (cq,cr,cs,ct) = {
342342 let cu = H(cs, cq)
343343 let cv = H(ct, cr)
344344 ca(cv, cu)
345345 }
346346
347347
348348 func cw (cs,ct,cx) = {
349349 let cy = bz
350350 let cz = bA
351351 let cA = cp(cy, cz, cs, ct)
352352 let cc = H(cs, cy)
353353 let cb = H(ct, cz)
354354 let cB = H(cx, a)
355355 let cC = ca(cc, cB)
356356 let cD = ca(cb, cB)
357357 [cA, cC, cD]
358358 }
359359
360360
361361 func cE (cs,ct,cx) = {
362362 let cF = cw(cs, ct, cx)
363363 [L(cF[0], a), L(cF[1], a), L(cF[2], a)]
364364 }
365365
366366
367367 func cG (cH,aq) = {
368368 let cI = if ((aq == 0))
369369 then 0
370370 else fraction(cH, aq, a)
371371 $Tuple2((cH - cI), cI)
372372 }
373373
374374
375375 func cJ (cK) = {
376376 let cL = cK[0]
377377 let cM = cK[1]
378378 let aU = (cL + cM)
379379 if ((aU == e))
380380 then e
381381 else {
382382 let aQ = parseIntValue(bf)
383383 let cN = (aQ * 2)
384384 let cF = fraction(cL, cM, f)
385385 let cO = fraction(cF, i, f)
386386 let cP = fraction(toBigInt(cN), aU, f)
387387 let cQ = toBigInt((cN - 1))
388388 func cR (cS) = {
389389 let cT = fraction(cS, cS, f)
390390 let cU = fraction(cT, cS, f)
391391 let cV = fraction(cU, f, cO)
392392 fraction((cP + fraction(cV, g, f)), cS, (fraction(cQ, cS, f) + fraction(h, cV, f)))
393393 }
394394
395395 func cW (cX,cY) = if (cX._2)
396396 then cX
397397 else {
398398 let cS = cX._1
399399 let cZ = cR(cS)
400400 let da = (cZ - value(cS))
401401 let db = if ((e > da))
402402 then -(da)
403403 else da
404404 if ((f >= db))
405405 then $Tuple2(cZ, true)
406406 else $Tuple2(cZ, false)
407407 }
408408
409409 let dc = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
410410 let dd = {
411411 let de = dc
412412 let df = size(de)
413413 let dg = $Tuple2(aU, false)
414414 func dh (di,dj) = if ((dj >= df))
415415 then di
416416 else cW(di, de[dj])
417417
418418 func dk (di,dj) = if ((dj >= df))
419419 then di
420420 else throw("List size exceeds 17")
421421
422422 dk(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dg, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
423423 }
424424 let cS = dd._1
425425 let dl = dd._2
426426 if (dl)
427427 then cS
428428 else throw(("D calculation error, D = " + toString(cS)))
429429 }
430430 }
431431
432432
433433 func dm (dn,do,dp,dq) = {
434434 let dr = bw
435435 let ds = toBase58String(value(bx))
436436 let dt = toBase58String(value(by))
437437 let du = bz
438438 let dv = bA
439439 let dw = toString(bv)
440440 let dx = valueOrErrorMessage(assetInfo(dr), "Wrong LP id").quantity
441441 if ((toBase58String(dr) != do))
442442 then throw("Wrong pmt asset")
443443 else {
444444 let dy = bY(ds)
445445 let dz = H(dy, du)
446446 let dA = bY(dt)
447447 let dB = H(dA, dv)
448448 let dC = ca(dB, dz)
449449 let dD = L(dC, a)
450450 let dE = H(dp, a)
451451 let dF = H(dx, a)
452452 let dG = fraction(dz, dE, dF)
453453 let dH = fraction(dB, dE, dF)
454454 let dI = O(dG, du, FLOOR)
455455 let dJ = O(dH, dv, FLOOR)
456456 let dK = if ((dn == ""))
457457 then nil
458458 else [ScriptTransfer(dq, dI, if ((ds == "WAVES"))
459459 then unit
460460 else fromBase58String(ds)), ScriptTransfer(dq, dJ, if ((dt == "WAVES"))
461461 then unit
462462 else fromBase58String(dt)), StringEntry(ai(toString(dq), dn), bU(dI, dJ, dp, dD, height, lastBlock.timestamp)), IntegerEntry(ab(), dD), IntegerEntry(ac(height, lastBlock.timestamp), dD)]
463463 $Tuple10(dI, dJ, ds, dt, dy, dA, dx, dC, dw, dK)
464464 }
465465 }
466466
467467
468468 func dL (dn,ch,dM,dN,dO,dP,dq,dQ,dR,dS,dT,dU,dV) = {
469469 let dr = bw
470470 let dW = toBase58String(value(bx))
471471 let dX = toBase58String(value(by))
472472 let dY = bB
473473 let dZ = bC
474474 let ea = bz
475475 let eb = bA
476476 let dw = toString(bv)
477477 let ec = valueOrErrorMessage(assetInfo(dr), "Wr lp as").quantity
478478 let dy = if (dQ)
479479 then bY(dW)
480480 else if (if (dS)
481481 then (dV == dW)
482482 else false)
483483 then (bY(dW) - dU)
484484 else if (dS)
485485 then bY(dW)
486486 else (bY(dW) - dM)
487487 let dA = if (dQ)
488488 then bY(dX)
489489 else if (if (dS)
490490 then (dV == dX)
491491 else false)
492492 then (bY(dX) - dU)
493493 else if (dS)
494494 then bY(dX)
495495 else (bY(dX) - dO)
496496 let ed = H(dM, ea)
497497 let ee = H(dO, eb)
498498 let ef = ca(ee, ed)
499499 let dz = H(dy, ea)
500500 let dB = H(dA, eb)
501501 let cm = cJ([dz, dB])
502502 let eg = if ((ec == 0))
503503 then {
504504 let cl = cJ([(dz + ed), (dB + ee)])
505505 let eh = if ((cl > cm))
506506 then true
507507 else throw("D1 should be greater than D0")
508508 if ((eh == eh))
509509 then {
510510 let dC = d
511511 let ei = d
512512 let cB = cl
513513 $Tuple5(L(cB, a), L(ed, ea), L(ee, eb), ca((dB + ee), (dz + ed)), ei)
514514 }
515515 else throw("Strict value is not equal to itself.")
516516 }
517517 else {
518518 let dC = ca(dB, dz)
519519 let ej = fraction(W((dC - ef)), c, dC)
520520 let ei = H(ch, a)
521521 if (if (if (dT)
522522 then (dC != d)
523523 else false)
524524 then (ej > ei)
525525 else false)
526526 then throw(((("Price slippage " + toString(ej)) + " > ") + toString(ei)))
527527 else {
528528 let ek = H(ec, a)
529529 let el = fraction(ed, cd(dB, dz, CEILING), c, CEILING)
530530 let em = fraction(ee, c, cd(dB, dz, FLOOR), CEILING)
531531 let en = if ((el > ee))
532532 then $Tuple2(em, ee)
533533 else $Tuple2(ed, el)
534534 let eo = en._1
535535 let ep = en._2
536536 let cl = cJ([(dz + eo), (dB + ep)])
537537 let eh = if ((cl > cm))
538538 then true
539539 else throw("D1 should be greater than D0")
540540 if ((eh == eh))
541541 then {
542542 let cB = fraction(ek, (cl - cm), cm)
543543 $Tuple5(O(cB, a, FLOOR), O(eo, ea, CEILING), O(ep, eb, CEILING), dC, ei)
544544 }
545545 else throw("Strict value is not equal to itself.")
546546 }
547547 }
548548 let eq = eg._1
549549 let er = eg._2
550550 let es = eg._3
551551 let dD = L(eg._4, a)
552552 let et = L(eg._5, a)
553553 if ((0 >= eq))
554554 then throw("LP <= 0")
555555 else {
556556 let eu = if (!(dR))
557557 then 0
558558 else eq
559559 let ev = (dM - er)
560560 let ew = (dO - es)
561561 let ex = if (if (dS)
562562 then (dV == dW)
563563 else false)
564564 then $Tuple2(dU, 0)
565565 else if (if (dS)
566566 then (dV == dX)
567567 else false)
568568 then $Tuple2(0, dU)
569569 else $Tuple2(er, es)
570570 let ey = ex._1
571571 let ez = ex._2
572572 let eA = [IntegerEntry(ab(), dD), IntegerEntry(ac(height, lastBlock.timestamp), dD), StringEntry(af(dq, dn), bJ(ey, ez, eu, dD, ch, et, height, lastBlock.timestamp, ev, ew))]
573573 $Tuple13(eq, eu, dD, dy, dA, ec, dr, dw, eA, ev, ew, dN, dP)
574574 }
575575 }
576576
577577
578578 func eB (cK,cY,eC) = {
579579 let eD = g
580580 let eE = cK[if ((cY == 0))
581581 then 1
582582 else 0]
583583 let eF = parseBigIntValue(l)
584584 let aQ = (parseBigIntValue(bf) * eF)
585585 let aU = eE
586586 let cN = (aQ * eD)
587587 let eG = (((((eC * eC) / (eE * eD)) * eC) * eF) / (cN * eD))
588588 let eH = ((aU + ((eC * eF) / cN)) - eC)
589589 func cW (cX,eI) = {
590590 let eJ = cX
591591 let eK = eJ._1
592592 let dl = eJ._2
593593 if ((dl != unit))
594594 then cX
595595 else {
596596 let eL = (((eK * eK) + eG) / ((g * eK) + eH))
597597 let eM = X((eL - value(eK)))
598598 if ((f >= eM))
599599 then $Tuple2(eL, eI)
600600 else $Tuple2(eL, unit)
601601 }
602602 }
603603
604604 let dc = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
605605 let eN = {
606606 let de = dc
607607 let df = size(de)
608608 let dg = $Tuple2(eC, unit)
609609 func dh (di,dj) = if ((dj >= df))
610610 then di
611611 else cW(di, de[dj])
612612
613613 func dk (di,dj) = if ((dj >= df))
614614 then di
615615 else throw("List size exceeds 15")
616616
617617 dk(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dg, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
618618 }
619619 let eK = eN._1
620620 let dl = eN._2
621621 if ((dl != unit))
622622 then eK
623623 else throw(("Y calculation error, Y = " + toString(eK)))
624624 }
625625
626626
627627 func eO (eP,eQ,eR) = {
628628 let eS = fraction(cJ([K(eP, toBigInt(bz)), K(eQ, toBigInt(bA))]), c, eR)
629629 if ((eR == e))
630630 then e
631631 else eS
632632 }
633633
634634
635635 func eT (eU,eV,eW) = {
636636 let eX = (toBigInt(bY(bp(bx))) - eU)
637637 let eY = (toBigInt(bY(bp(by))) - eV)
638638 let eZ = (toBigInt(value(assetInfo(bw)).quantity) - eW)
639639 let fa = eO(eX, eY, eZ)
640640 fa
641641 }
642642
643643
644644 func fb (fc,fd,eW) = {
645645 let eX = (bY(bp(bx)) + fc)
646646 let eY = (bY(bp(by)) + fd)
647647 let eZ = (value(assetInfo(bw)).quantity + eW)
648648 let eS = eO(toBigInt(eX), toBigInt(eY), toBigInt(eZ))
649649 let fe = [IntegerEntry(as, height), StringEntry(ar, toString(eS))]
650650 $Tuple2(fe, eS)
651651 }
652652
653653
654654 func ff (fg,eS) = if ((eS >= fg))
655655 then true
656656 else aZ("updated DLp lower than current DLp")
657657
658658
659659 func fh (fi) = {
660660 let eX = bY(bp(bx))
661661 let eY = bY(bp(by))
662662 let fj = fi.amount
663663 let fk = fraction(fi.amount, fi.price, a, FLOOR)
664664 let fl = if ((fi.orderType == Buy))
665665 then $Tuple2(fj, -(fk))
666666 else $Tuple2(-(fj), fk)
667667 let fc = fl._1
668668 let fd = fl._2
669669 if (if (if (bg())
670670 then true
671671 else (bv == r))
672672 then true
673673 else (bv == s))
674674 then throw("Admin blocked")
675675 else if (if ((fi.assetPair.amountAsset != bx))
676676 then true
677677 else (fi.assetPair.priceAsset != by))
678678 then throw("Wr assets")
679679 else {
680680 let fm = parseBigIntValue(valueOrElse(getString(this, ar), "0"))
681681 let fn = fb(fc, fd, 0)
682682 let fo = fn._1
683683 let fp = fn._2
684684 let fq = (fp >= fm)
685685 let fr = makeString(["dLp=", toString(fm), " dLpNew=", toString(fp), " amountAssetBalance=", toString(eX), " priceAssetBalance=", toString(eY), " amountAssetBalanceDelta=", toString(fc), " priceAssetBalanceDelta=", toString(fd), " height=", toString(height)], "")
686686 $Tuple2(fq, fr)
687687 }
688688 }
689689
690690
691691 func fs (cY) = if ((size(cY.payments) != 1))
692692 then throw("1 pmnt exp")
693693 else {
694694 let ft = value(cY.payments[0])
695695 let do = value(ft.assetId)
696696 let dU = ft.amount
697697 let eg = dm(toBase58String(cY.transactionId), toBase58String(do), dU, cY.caller)
698698 let dI = eg._1
699699 let dJ = eg._2
700700 let dw = parseIntValue(eg._9)
701701 let dK = eg._10
702702 if (if (bg())
703703 then true
704704 else (dw == s))
705705 then throw(("Admin blocked: " + toString(dw)))
706706 else $Tuple5(dI, dJ, dU, do, dK)
707707 }
708708
709709
710710 func fu (fv,ah,fw,fx,ch,dR,dS,dT,dU,dV) = {
711711 let eg = dL(ah, ch, value(fw).amount, value(fw).assetId, value(fx).amount, value(fx).assetId, fv, (ah == ""), dR, dS, dT, dU, dV)
712712 let dw = parseIntValue(eg._8)
713713 if (if (if (bg())
714714 then true
715715 else (dw == q))
716716 then true
717717 else (dw == s))
718718 then throw(("Blocked:" + toString(dw)))
719719 else eg
720720 }
721721
722722
723723 func fy (fz,do,dq,ah,fA) = {
724724 let ds = toBase58String(value(bx))
725725 let dt = toBase58String(value(by))
726726 let dr = bw
727727 let ea = bz
728728 let eb = bA
729729 let eZ = toBigInt(valueOrErrorMessage(assetInfo(dr), "invalid lp asset").quantity)
730730 let fB = if ((eZ > e))
731731 then true
732732 else throw("initial deposit requires all coins")
733733 if ((fB == fB))
734734 then {
735735 let dy = bY(ds)
736736 let dA = bY(dt)
737737 let fC = if ((ah == ""))
738738 then $Tuple2(dy, dA)
739739 else if ((do == ds))
740740 then if ((fz > dy))
741741 then throw("invalid payment amount")
742742 else $Tuple2((dy - fz), dA)
743743 else if ((do == dt))
744744 then if ((fz > dA))
745745 then throw("invalid payment amount")
746746 else $Tuple2(dy, (dA - fz))
747747 else throw("wrong pmtAssetId")
748748 let fD = fC._1
749749 let fE = fC._2
750750 let fF = if ((do == ds))
751751 then $Tuple2(fz, 0)
752752 else if ((do == dt))
753753 then $Tuple2(0, fz)
754754 else throw("invalid payment")
755755 let fG = fF._1
756756 let fH = fF._2
757757 let fI = if (fA)
758758 then $Tuple3(cG(fG, bc)._1, cG(fH, bc)._1, cG(fz, bc)._2)
759759 else $Tuple3(fG, fH, 0)
760760 let fJ = fI._1
761761 let fK = fI._2
762762 let cI = fI._3
763763 let fL = (fD + fJ)
764764 let fM = (fE + fK)
765765 let cm = cJ([H(fD, bz), H(fE, bA)])
766766 let cl = cJ([H(fL, bz), H(fM, bA)])
767767 let eh = if ((cl > cm))
768768 then true
769769 else throw()
770770 if ((eh == eh))
771771 then {
772772 let fN = fraction(eZ, (cl - cm), cm, FLOOR)
773773 let dD = L(ca(H(fM, eb), H(fL, ea)), a)
774774 let eA = [IntegerEntry(ab(), dD), IntegerEntry(ac(height, lastBlock.timestamp), dD), StringEntry(af(dq, ah), bJ(fG, fH, toInt(fN), dD, 0, 0, height, lastBlock.timestamp, 0, 0))]
775775 let fO = fraction(fE, a, fD)
776776 let fP = fraction(fz, a, (fO + a))
777777 let fQ = (fz - fP)
778778 let fR = fraction(eZ, toBigInt(fQ), toBigInt(fE))
779779 let fS = toInt(fraction((fN - fR), b, fR))
780780 $Tuple4(toInt(fN), eA, cI, fS)
781781 }
782782 else throw("Strict value is not equal to itself.")
783783 }
784784 else throw("Strict value is not equal to itself.")
785785 }
786786
787787
788788 func fT (fU,fV,fW,fv,fX,fY) = {
789789 let dr = toBase58String(value(bw))
790790 let ds = toBase58String(value(bx))
791791 let dt = toBase58String(value(by))
792792 let fZ = bz
793793 let ga = bA
794794 let gb = bv
795795 let dq = if ((fv == bI))
796796 then fX
797797 else fv
798798 let ft = value(fW[0])
799799 let do = value(ft.assetId)
800800 let dU = ft.amount
801801 let fa = eT(e, e, e)
802802 if ((fa == fa))
803803 then {
804804 let dn = toBase58String(fY)
805805 if ((dr != toBase58String(do)))
806806 then throw("Wrong LP")
807807 else {
808808 let dy = bY(ds)
809809 let dA = bY(dt)
810810 let gc = {
811811 let bd = invoke(this, "getOneTknV2READONLY", [fU, dU], nil)
812812 if ($isInstanceOf(bd, "(Int, Int)"))
813813 then bd
814814 else throw(($getType(bd) + " couldn't be cast to (Int, Int)"))
815815 }
816816 if ((gc == gc))
817817 then {
818818 let cI = gc._2
819819 let gd = gc._1
820820 let ge = if (if ((fV > 0))
821821 then (fV > gd)
822822 else false)
823823 then aZ(makeString(["amount to receive is less than ", toString(fV)], ""))
824824 else gd
825825 let gf = if ((fU == ds))
826826 then $Tuple4(ge, 0, ((dy - ge) - cI), dA)
827827 else if ((fU == dt))
828828 then $Tuple4(0, ge, dy, ((dA - ge) - cI))
829829 else throw("invalid out asset id")
830830 let gg = gf._1
831831 let gh = gf._2
832832 let fL = gf._3
833833 let fM = gf._4
834834 let gi = ca(H(fM, ga), H(fL, fZ))
835835 let gj = L(gi, a)
836836 let gk = if ((fU == "WAVES"))
837837 then unit
838838 else fromBase58String(fU)
839839 let gl = if ((cI > 0))
840840 then [ScriptTransfer(bi, cI, gk)]
841841 else nil
842842 let dK = ([ScriptTransfer(dq, ge, gk), StringEntry(ai(toString(dq), dn), bU(gg, gh, dU, gj, height, lastBlock.timestamp)), IntegerEntry(ab(), gj), IntegerEntry(ac(height, lastBlock.timestamp), gj)] ++ gl)
843843 if ((dK == dK))
844844 then {
845845 let gm = invoke(aT, "burn", [dU], [AttachedPayment(do, dU)])
846846 if ((gm == gm))
847847 then {
848848 let gn = {
849849 let go = if ((this == bi))
850850 then 0
851851 else cI
852852 let gp = if ((bn(fU) == bx))
853853 then true
854854 else false
855855 if (gp)
856856 then $Tuple2(-((gd + go)), 0)
857857 else $Tuple2(0, -((gd + go)))
858858 }
859859 let fc = gn._1
860860 let fd = gn._2
861861 let gq = fb(fc, fd, 0)
862862 let gr = gq._1
863863 let eS = gq._2
864864 let gs = ff(fa, eS)
865865 if ((gs == gs))
866866 then $Tuple2((dK ++ gr), ge)
867867 else throw("Strict value is not equal to itself.")
868868 }
869869 else throw("Strict value is not equal to itself.")
870870 }
871871 else throw("Strict value is not equal to itself.")
872872 }
873873 else throw("Strict value is not equal to itself.")
874874 }
875875 }
876876 else throw("Strict value is not equal to itself.")
877877 }
878878
879879
880880 func gt () = {
881881 let gu = aR()
882882 let aP = getString(gu, Z())
883883 if ($isInstanceOf(aP, "String"))
884884 then {
885885 let aU = aP
886886 fromBase58String(aU)
887887 }
888888 else if ($isInstanceOf(aP, "Unit"))
889889 then unit
890890 else throw("Match error")
891891 }
892892
893893
894894 let gv = throw("Permission denied")
895895
896896 func gw (cY) = {
897897 let aP = gt()
898898 if ($isInstanceOf(aP, "ByteVector"))
899899 then {
900900 let gx = aP
901901 (cY.callerPublicKey == gx)
902902 }
903903 else if ($isInstanceOf(aP, "Unit"))
904904 then (cY.caller == this)
905905 else throw("Match error")
906906 }
907907
908908
909909 func gy (cY) = {
910910 let aP = gt()
911911 if ($isInstanceOf(aP, "ByteVector"))
912912 then {
913913 let gx = aP
914914 if ((cY.callerPublicKey == gx))
915915 then true
916916 else gv
917917 }
918918 else if ($isInstanceOf(aP, "Unit"))
919919 then if ((cY.caller == this))
920920 then true
921921 else gv
922922 else throw("Match error")
923923 }
924924
925925
926926 func gz (gA,eC,gB) = {
927927 let br = bj()
928928 let ds = br[w]
929929 let dt = br[x]
930930 let eD = g
931931 let eF = parseBigIntValue(l)
932932 let aQ = (parseBigIntValue(bf) * eF)
933933 let cK = if ((gA == false))
934934 then [(toBigInt(bY(ds)) + gB), toBigInt(bY(dt))]
935935 else [(toBigInt(bY(dt)) + gB), toBigInt(bY(ds))]
936936 let eE = cK[0]
937937 let aU = eE
938938 let cN = (aQ * eD)
939939 let eG = (((((eC * eC) / (eE * eD)) * eC) * eF) / (cN * eD))
940940 let eH = ((aU + ((eC * eF) / cN)) - eC)
941941 func cW (cX,eI) = {
942942 let gC = cX
943943 let eK = gC._1
944944 let dl = gC._2
945945 if ((dl != unit))
946946 then cX
947947 else {
948948 let eL = (((eK * eK) + eG) / ((g * eK) + eH))
949949 let eM = X((eL - value(eK)))
950950 if ((f >= eM))
951951 then $Tuple2(eL, eI)
952952 else $Tuple2(eL, unit)
953953 }
954954 }
955955
956956 let dc = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
957957 let gD = {
958958 let de = dc
959959 let df = size(de)
960960 let dg = $Tuple2(eC, unit)
961961 func dh (di,dj) = if ((dj >= df))
962962 then di
963963 else cW(di, de[dj])
964964
965965 func dk (di,dj) = if ((dj >= df))
966966 then di
967967 else throw("List size exceeds 15")
968968
969969 dk(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dg, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
970970 }
971971 let eK = gD._1
972972 let dl = gD._2
973973 if ((dl != unit))
974974 then eK
975975 else throw(("Y calculation error, Y = " + toString(eK)))
976976 }
977977
978978
979979 func gE () = valueOrElse(getBoolean(aT, aG(toString(this))), false)
980980
981981
982982 @Callable(cY)
983983 func calculateAmountOutForSwapREADONLY (gF,gA,gG) = {
984984 let gH = if ((gA == false))
985985 then {
986986 let gI = aV(this, ak())
987987 let gB = (toBigInt(bY(aV(this, aj()))) + toBigInt(gF))
988988 $Tuple2(gI, gB)
989989 }
990990 else {
991991 let gI = aV(this, aj())
992992 let gB = (toBigInt(bY(aV(this, ak()))) + toBigInt(gF))
993993 $Tuple2(gI, gB)
994994 }
995995 let gI = gH._1
996996 let gB = gH._2
997997 let br = bj()
998998 let ds = br[w]
999999 let dt = br[x]
10001000 let cK = [toBigInt(bY(ds)), toBigInt(bY(dt))]
10011001 let eC = cJ(cK)
10021002 let eK = gz(gA, eC, toBigInt(gF))
10031003 let gJ = ((toBigInt(bY(gI)) - eK) - toBigInt(1))
10041004 let gK = max([0, toInt(gJ)])
10051005 let gL = if ((gA == false))
10061006 then [((toBigInt(bY(ds)) + toBigInt(gF)) + toBigInt(gG)), (toBigInt(bY(dt)) - gJ)]
10071007 else [(toBigInt(bY(ds)) - gJ), ((toBigInt(bY(dt)) + toBigInt(gF)) + toBigInt(gG))]
10081008 let gM = cJ(gL)
10091009 let eh = if ((gM >= eC))
10101010 then true
10111011 else throw(makeString(["new D is fewer error", toString(eC), toString(gM)], "__"))
10121012 if ((eh == eh))
10131013 then $Tuple2(nil, gK)
10141014 else throw("Strict value is not equal to itself.")
10151015 }
10161016
10171017
10181018
10191019 @Callable(cY)
10201020 func calculateAmountOutForSwapAndSendTokens (gF,gA,gN,gO,gG) = {
10211021 let gP = {
10221022 let bd = invoke(aT, "getSwapContractREADONLY", nil, nil)
10231023 if ($isInstanceOf(bd, "String"))
10241024 then bd
10251025 else throw(($getType(bd) + " couldn't be cast to String"))
10261026 }
10271027 let gQ = [if ((value(cY.payments[0]).amount >= gF))
10281028 then true
10291029 else aZ("Wrong amount"), if ((cY.caller == addressFromStringValue(gP)))
10301030 then true
10311031 else aZ("Permission denied")]
10321032 if ((gQ == gQ))
10331033 then {
10341034 let ft = value(cY.payments[0])
10351035 let gR = bp(ft.assetId)
10361036 let gS = if ((gA == false))
10371037 then {
10381038 let gI = aV(this, ak())
10391039 let gB = (bY(gR) - value(cY.payments[0]).amount)
10401040 $Tuple2(gI, gB)
10411041 }
10421042 else {
10431043 let gI = aV(this, aj())
10441044 let gB = (bY(gR) - value(cY.payments[0]).amount)
10451045 $Tuple2(gI, gB)
10461046 }
10471047 let gI = gS._1
10481048 let gB = gS._2
10491049 let br = bj()
10501050 let ds = br[w]
10511051 let dt = br[x]
10521052 let cK = if ((gA == false))
10531053 then [(toBigInt(bY(ds)) - toBigInt(value(cY.payments[0]).amount)), toBigInt(bY(dt))]
10541054 else [toBigInt(bY(ds)), (toBigInt(bY(dt)) - toBigInt(value(cY.payments[0]).amount))]
10551055 let eC = cJ(cK)
10561056 let eK = gz(gA, eC, toBigInt(0))
10571057 let gJ = ((toBigInt(bY(gI)) - eK) - toBigInt(1))
10581058 let gK = max([0, toInt(gJ)])
10591059 let gT = if ((gK >= gN))
10601060 then true
10611061 else throw("Exchange result is fewer coins than expected")
10621062 if ((gT == gT))
10631063 then {
10641064 let gL = if ((gA == false))
10651065 then [(toBigInt(bY(ds)) + toBigInt(gG)), (toBigInt(bY(dt)) - gJ)]
10661066 else [(toBigInt(bY(ds)) - gJ), (toBigInt(bY(dt)) + toBigInt(gG))]
10671067 let gM = cJ(gL)
10681068 let eh = if ((gM >= eC))
10691069 then true
10701070 else throw("new D is fewer error")
10711071 if ((eh == eh))
10721072 then $Tuple2([ScriptTransfer(addressFromStringValue(gO), gK, bn(gI))], gK)
10731073 else throw("Strict value is not equal to itself.")
10741074 }
10751075 else throw("Strict value is not equal to itself.")
10761076 }
10771077 else throw("Strict value is not equal to itself.")
10781078 }
10791079
10801080
10811081
10821082 @Callable(cY)
10831083 func constructor (Y) = {
10841084 let eG = gy(cY)
10851085 if ((eG == eG))
10861086 then [StringEntry(Y(), Y)]
10871087 else throw("Strict value is not equal to itself.")
10881088 }
10891089
10901090
10911091
10921092 @Callable(cY)
10931093 func put (gU,gV) = {
10941094 let gW = bD()
10951095 let gX = valueOrErrorMessage(addressFromString(gW[C]), "Wr st addr")
10961096 let gY = valueOrErrorMessage(addressFromString(gW[E]), "Wr sl addr")
10971097 if ((0 > gU))
10981098 then throw("Wrong slippage")
10991099 else if ((size(cY.payments) != 2))
11001100 then throw("2 pmnts expd")
11011101 else {
11021102 let gZ = toBigInt(value(cY.payments[0]).amount)
11031103 let ha = toBigInt(value(cY.payments[1]).amount)
11041104 let eX = (toBigInt(bY(bp(bx))) - gZ)
11051105 if ((eX == eX))
11061106 then {
11071107 let eY = (toBigInt(bY(bp(by))) - ha)
11081108 if ((eY == eY))
11091109 then {
11101110 let eZ = toBigInt(value(assetInfo(bw)).quantity)
11111111 if ((eZ == eZ))
11121112 then {
11131113 let fa = eT(gZ, ha, toBigInt(0))
11141114 if ((fa == fa))
11151115 then {
11161116 let hb = fu(toString(cY.caller), toBase58String(cY.transactionId), AttachedPayment(value(cY.payments[0]).assetId, value(cY.payments[0]).amount), cY.payments[1], gU, true, false, true, 0, "")
11171117 let eu = hb._2
11181118 let hc = hb._7
11191119 let dK = hb._9
11201120 let ev = hb._10
11211121 let ew = hb._11
11221122 let ds = hb._12
11231123 let dt = hb._13
11241124 let eg = invoke(aT, "emit", [eu], nil)
11251125 if ((eg == eg))
11261126 then {
11271127 let hd = {
11281128 let aP = eg
11291129 if ($isInstanceOf(aP, "Address"))
11301130 then {
11311131 let he = aP
11321132 invoke(he, "emit", [eu], nil)
11331133 }
11341134 else unit
11351135 }
11361136 if ((hd == hd))
11371137 then {
11381138 let hf = if ((ev > 0))
11391139 then invoke(gY, "put", nil, [AttachedPayment(ds, ev)])
11401140 else nil
11411141 if ((hf == hf))
11421142 then {
11431143 let hg = if ((ew > 0))
11441144 then invoke(gY, "put", nil, [AttachedPayment(dt, ew)])
11451145 else nil
11461146 if ((hg == hg))
11471147 then {
11481148 let hh = if (gV)
11491149 then {
11501150 let hi = invoke(gX, "stake", nil, [AttachedPayment(hc, eu)])
11511151 if ((hi == hi))
11521152 then nil
11531153 else throw("Strict value is not equal to itself.")
11541154 }
11551155 else [ScriptTransfer(cY.caller, eu, hc)]
11561156 let hj = fb(0, 0, 0)
11571157 let gr = hj._1
11581158 let eS = hj._2
11591159 let hk = if ((eS >= fa))
11601160 then true
11611161 else aZ(makeString(["updated DLp lower than current DLp", toString(eX), toString(eY), toString(eZ), toString(fa), toString(eS), toString(ev), toString(ew)], " "))
11621162 if ((hk == hk))
11631163 then {
11641164 let hl = value(assetInfo(bw)).quantity
11651165 if ((hl == hl))
11661166 then ((dK ++ hh) ++ gr)
11671167 else throw("Strict value is not equal to itself.")
11681168 }
11691169 else throw("Strict value is not equal to itself.")
11701170 }
11711171 else throw("Strict value is not equal to itself.")
11721172 }
11731173 else throw("Strict value is not equal to itself.")
11741174 }
11751175 else throw("Strict value is not equal to itself.")
11761176 }
11771177 else throw("Strict value is not equal to itself.")
11781178 }
11791179 else throw("Strict value is not equal to itself.")
11801180 }
11811181 else throw("Strict value is not equal to itself.")
11821182 }
11831183 else throw("Strict value is not equal to itself.")
11841184 }
11851185 else throw("Strict value is not equal to itself.")
11861186 }
11871187 }
11881188
11891189
11901190
11911191 @Callable(cY)
11921192 func putOneTknV2 (fV,gV) = {
11931193 let hm = {
11941194 let bd = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11951195 if ($isInstanceOf(bd, "Boolean"))
11961196 then bd
11971197 else throw(($getType(bd) + " couldn't be cast to Boolean"))
11981198 }
11991199 let hn = if (if (if (bg())
12001200 then true
12011201 else (bv == q))
12021202 then true
12031203 else (bv == s))
12041204 then true
12051205 else hm
12061206 let gQ = [if (if (!(hn))
12071207 then true
12081208 else gw(cY))
12091209 then true
12101210 else aZ("put operation is blocked by admin"), if ((size(cY.payments) == 1))
12111211 then true
12121212 else aZ("exactly 1 payment are expected")]
12131213 if ((gQ == gQ))
12141214 then {
12151215 let ds = toBase58String(value(bx))
12161216 let dt = toBase58String(value(by))
12171217 let dr = bw
12181218 let fZ = bz
12191219 let ga = bA
12201220 let dq = if ((cY.caller == this))
12211221 then cY.originCaller
12221222 else cY.caller
12231223 let ft = value(cY.payments[0])
12241224 let do = toBase58String(value(ft.assetId))
12251225 let dU = ft.amount
12261226 let fa = if ((ft.assetId == bx))
12271227 then eT(toBigInt(dU), toBigInt(0), toBigInt(0))
12281228 else eT(toBigInt(0), toBigInt(dU), toBigInt(0))
12291229 if ((fa == fa))
12301230 then {
12311231 let ho = fy(dU, do, toString(dq), toBase58String(cY.transactionId), true)
12321232 if ((ho == ho))
12331233 then {
12341234 let cI = ho._3
12351235 let dK = ho._2
12361236 let hp = ho._1
12371237 let eu = if (if ((fV > 0))
12381238 then (fV > hp)
12391239 else false)
12401240 then aZ(makeString(["amount to receive is less than ", toString(fV)], ""))
12411241 else hp
12421242 let hb = invoke(aT, "emit", [eu], nil)
12431243 if ((hb == hb))
12441244 then {
12451245 let hd = {
12461246 let aP = hb
12471247 if ($isInstanceOf(aP, "Address"))
12481248 then {
12491249 let he = aP
12501250 invoke(he, "emit", [eu], nil)
12511251 }
12521252 else unit
12531253 }
12541254 if ((hd == hd))
12551255 then {
12561256 let hh = if (gV)
12571257 then {
12581258 let hi = invoke(bF, "stakeFor", [toString(cY.caller)], [AttachedPayment(dr, eu)])
12591259 if ((hi == hi))
12601260 then nil
12611261 else throw("Strict value is not equal to itself.")
12621262 }
12631263 else [ScriptTransfer(cY.caller, eu, dr)]
12641264 let gl = if ((cI > 0))
12651265 then [ScriptTransfer(bi, cI, fromBase58String(do))]
12661266 else nil
12671267 let hq = if ((this == bi))
12681268 then $Tuple2(0, 0)
12691269 else {
12701270 let hr = if ((ft.assetId == bx))
12711271 then true
12721272 else false
12731273 if (hr)
12741274 then $Tuple2(-(cI), 0)
12751275 else $Tuple2(0, -(cI))
12761276 }
12771277 let fc = hq._1
12781278 let fd = hq._2
12791279 let hs = fb(fc, fd, 0)
12801280 let gr = hs._1
12811281 let eS = hs._2
12821282 let gs = ff(fa, eS)
12831283 if ((gs == gs))
12841284 then $Tuple2((((dK ++ hh) ++ gl) ++ gr), eu)
12851285 else throw("Strict value is not equal to itself.")
12861286 }
12871287 else throw("Strict value is not equal to itself.")
12881288 }
12891289 else throw("Strict value is not equal to itself.")
12901290 }
12911291 else throw("Strict value is not equal to itself.")
12921292 }
12931293 else throw("Strict value is not equal to itself.")
12941294 }
12951295 else throw("Strict value is not equal to itself.")
12961296 }
12971297
12981298
12991299
13001300 @Callable(cY)
13011301 func putForFree (ht) = if ((0 > ht))
13021302 then throw("Wrong slpg")
13031303 else if ((size(cY.payments) != 2))
13041304 then throw("2 pmnts expd")
13051305 else {
13061306 let hu = fu(toString(cY.caller), toBase58String(cY.transactionId), AttachedPayment(value(cY.payments[0]).assetId, value(cY.payments[0]).amount), cY.payments[1], ht, false, false, true, 0, "")
13071307 let dK = hu._9
13081308 let gZ = toBigInt(value(cY.payments[0]).amount)
13091309 let ha = toBigInt(value(cY.payments[1]).amount)
13101310 let fa = eT(gZ, ha, toBigInt(0))
13111311 if ((fa == fa))
13121312 then {
13131313 let hv = fb(0, 0, 0)
13141314 let gr = hv._1
13151315 let eS = hv._2
13161316 let gs = ff(fa, eS)
13171317 if ((gs == gs))
13181318 then (dK ++ gr)
13191319 else throw("Strict value is not equal to itself.")
13201320 }
13211321 else throw("Strict value is not equal to itself.")
13221322 }
13231323
13241324
13251325
13261326 @Callable(cY)
13271327 func get () = {
13281328 let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
13291329 if ((fa == fa))
13301330 then {
13311331 let eg = fs(cY)
13321332 let hw = eg._1
13331333 let dJ = eg._2
13341334 let dU = eg._3
13351335 let do = eg._4
13361336 let dK = eg._5
13371337 let eH = invoke(aT, "burn", [dU], [AttachedPayment(do, dU)])
13381338 if ((eH == eH))
13391339 then {
13401340 let hx = fb(-(hw), -(dJ), 0)
13411341 let gr = hx._1
13421342 let eS = hx._2
13431343 let gs = ff(fa, eS)
13441344 if ((gs == gs))
13451345 then (dK ++ gr)
13461346 else throw("Strict value is not equal to itself.")
13471347 }
13481348 else throw("Strict value is not equal to itself.")
13491349 }
13501350 else throw("Strict value is not equal to itself.")
13511351 }
13521352
13531353
13541354
13551355 @Callable(cY)
13561356 func getOneTknV2 (fU,fV) = {
13571357 let hm = {
13581358 let bd = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13591359 if ($isInstanceOf(bd, "Boolean"))
13601360 then bd
13611361 else throw(($getType(bd) + " couldn't be cast to Boolean"))
13621362 }
13631363 let hy = if (if (bg())
13641364 then true
13651365 else (bv == s))
13661366 then true
13671367 else hm
13681368 let gQ = [if (if (!(hy))
13691369 then true
13701370 else gw(cY))
13711371 then true
13721372 else aZ("get operation is blocked by admin"), if ((size(cY.payments) == 1))
13731373 then true
13741374 else aZ("exactly 1 payment are expected")]
13751375 if ((gQ == gQ))
13761376 then {
13771377 let hz = fT(fU, fV, cY.payments, cY.caller, cY.originCaller, cY.transactionId)
13781378 let dK = hz._1
13791379 let ge = hz._2
13801380 $Tuple2(dK, ge)
13811381 }
13821382 else throw("Strict value is not equal to itself.")
13831383 }
13841384
13851385
13861386
13871387 @Callable(cY)
13881388 func refreshDLp () = {
13891389 let hA = valueOrElse(getInteger(as), 0)
13901390 let hB = if (((height - hA) >= av))
13911391 then unit
13921392 else aZ(makeString([toString(av), " blocks have not passed since the previous call"], ""))
13931393 if ((hB == hB))
13941394 then {
13951395 let fm = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ar), "0")), bb("invalid dLp"))
13961396 let hC = fb(0, 0, 0)
13971397 let hD = hC._1
13981398 let eS = hC._2
13991399 let fe = if ((fm != eS))
14001400 then hD
14011401 else aZ("nothing to refresh")
14021402 $Tuple2(fe, toString(eS))
14031403 }
14041404 else throw("Strict value is not equal to itself.")
14051405 }
14061406
14071407
14081408
14091409 @Callable(cY)
14101410 func getOneTknV2READONLY (fU,hE) = {
14111411 let ds = toBase58String(value(bx))
14121412 let dt = toBase58String(value(by))
14131413 let dr = toBase58String(value(bw))
14141414 let cK = [toBigInt(bY(ds)), toBigInt(bY(dt))]
14151415 let eR = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(dr)), "invalid lp asset").quantity)
14161416 let cm = cJ(cK)
14171417 let cl = (cm - fraction(toBigInt(hE), cm, eR))
14181418 let hF = if ((fU == ds))
14191419 then 0
14201420 else if ((fU == dt))
14211421 then 1
14221422 else throw("invalid out asset id")
14231423 let hG = eB(cK, hF, cl)
14241424 let gJ = (cK[hF] - hG)
14251425 let gK = max([0, toInt((gJ - f))])
14261426 let hH = cG(gK, be)
14271427 let gd = hH._1
14281428 let cI = hH._2
14291429 $Tuple2(nil, $Tuple2(gd, cI))
14301430 }
14311431
14321432
14331433
14341434 @Callable(cY)
14351435 func getOneTknV2WithBonusREADONLY (fU,hE) = {
14361436 let ds = toBase58String(value(bx))
14371437 let dt = toBase58String(value(by))
14381438 let dr = toBase58String(value(bw))
14391439 let dy = bY(ds)
14401440 let dA = bY(dt)
14411441 let hI = {
14421442 let bd = invoke(this, "getOneTknV2READONLY", [fU, hE], nil)
14431443 if ($isInstanceOf(bd, "(Int, Int)"))
14441444 then bd
14451445 else throw(($getType(bd) + " couldn't be cast to (Int, Int)"))
14461446 }
14471447 let gd = hI._1
14481448 let cI = hI._2
14491449 let eg = dm("", dr, hE, this)
14501450 let dI = eg._1
14511451 let dJ = eg._2
14521452 let hJ = (dI + dJ)
14531453 let fS = if ((hJ == 0))
14541454 then if ((gd == 0))
14551455 then 0
14561456 else throw("bonus calculation error")
14571457 else fraction((gd - hJ), a, hJ)
14581458 $Tuple2(nil, $Tuple3(gd, cI, fS))
14591459 }
14601460
14611461
14621462
14631463 @Callable(cY)
14641464 func getNoLess (hK,hL) = {
14651465 let eg = fs(cY)
14661466 let dI = eg._1
14671467 let dJ = eg._2
14681468 let dU = eg._3
14691469 let do = eg._4
14701470 let dK = eg._5
14711471 if ((hK > dI))
14721472 then throw(((("Failed: " + toString(dI)) + " < ") + toString(hK)))
14731473 else if ((hL > dJ))
14741474 then throw(((("Failed: " + toString(dJ)) + " < ") + toString(hL)))
14751475 else {
14761476 let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
14771477 if ((fa == fa))
14781478 then {
14791479 let hM = invoke(aT, "burn", [dU], [AttachedPayment(do, dU)])
14801480 if ((hM == hM))
14811481 then {
14821482 let hN = fb(-(dI), -(dJ), 0)
14831483 let gr = hN._1
14841484 let eS = hN._2
14851485 let gs = ff(fa, eS)
14861486 if ((gs == gs))
14871487 then (dK ++ gr)
14881488 else throw("Strict value is not equal to itself.")
14891489 }
14901490 else throw("Strict value is not equal to itself.")
14911491 }
14921492 else throw("Strict value is not equal to itself.")
14931493 }
14941494 }
14951495
14961496
14971497
14981498 @Callable(cY)
14991499 func unstakeAndGet (cH) = {
15001500 let hO = if ((size(cY.payments) != 0))
15011501 then throw("No pmnts expd")
15021502 else true
15031503 if ((hO == hO))
15041504 then {
15051505 let hP = bD()
15061506 let hc = bw
15071507 let hQ = valueOrErrorMessage(addressFromString(hP[C]), "Wr st addr")
15081508 let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
15091509 if ((fa == fa))
15101510 then {
15111511 let hR = invoke(hQ, "unstake", [toBase58String(hc), cH], nil)
15121512 if ((hR == hR))
15131513 then {
15141514 let eg = dm(toBase58String(cY.transactionId), toBase58String(hc), cH, cY.caller)
15151515 let dI = eg._1
15161516 let dJ = eg._2
15171517 let dw = parseIntValue(eg._9)
15181518 let dK = eg._10
15191519 let hS = if (if (bg())
15201520 then true
15211521 else (dw == s))
15221522 then throw(("Blocked: " + toString(dw)))
15231523 else true
15241524 if ((hS == hS))
15251525 then {
15261526 let hT = invoke(aT, "burn", [cH], [AttachedPayment(hc, cH)])
15271527 if ((hT == hT))
15281528 then {
15291529 let hU = fb(-(dI), -(dJ), 0)
15301530 let gr = hU._1
15311531 let eS = hU._2
15321532 let gs = ff(fa, eS)
15331533 if ((gs == gs))
15341534 then (dK ++ gr)
15351535 else throw("Strict value is not equal to itself.")
15361536 }
15371537 else throw("Strict value is not equal to itself.")
15381538 }
15391539 else throw("Strict value is not equal to itself.")
15401540 }
15411541 else throw("Strict value is not equal to itself.")
15421542 }
15431543 else throw("Strict value is not equal to itself.")
15441544 }
15451545 else throw("Strict value is not equal to itself.")
15461546 }
15471547
15481548
15491549
15501550 @Callable(cY)
15511551 func unstakeAndGetNoLess (hV,hW,hL) = {
15521552 let hy = if (bg())
15531553 then true
15541554 else (bv == s)
15551555 let gQ = [if (!(hy))
15561556 then true
15571557 else throw("get operation is blocked by admin"), if ((size(cY.payments) == 0))
15581558 then true
15591559 else throw("no payments are expected")]
15601560 if ((gQ == gQ))
15611561 then {
15621562 let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
15631563 if ((fa == fa))
15641564 then {
15651565 let hR = invoke(bF, "unstake", [toBase58String(bw), hV], nil)
15661566 if ((hR == hR))
15671567 then {
15681568 let hX = dm(toBase58String(cY.transactionId), toBase58String(bw), hV, cY.caller)
15691569 let dI = hX._1
15701570 let dJ = hX._2
15711571 let dK = hX._10
15721572 let hY = [if ((dI >= hW))
15731573 then true
15741574 else throw(makeString(["amount asset amount to receive is less than ", toString(hW)], "")), if ((dJ >= hL))
15751575 then true
15761576 else throw(makeString(["price asset amount to receive is less than ", toString(hL)], ""))]
15771577 if ((hY == hY))
15781578 then {
15791579 let hM = invoke(aT, "burn", [hV], [AttachedPayment(bw, hV)])
15801580 if ((hM == hM))
15811581 then {
15821582 let hZ = fb(-(dI), -(dJ), 0)
15831583 let gr = hZ._1
15841584 let eS = hZ._2
15851585 let gs = ff(fa, eS)
15861586 if ((gs == gs))
15871587 then (dK ++ gr)
15881588 else throw("Strict value is not equal to itself.")
15891589 }
15901590 else throw("Strict value is not equal to itself.")
15911591 }
15921592 else throw("Strict value is not equal to itself.")
15931593 }
15941594 else throw("Strict value is not equal to itself.")
15951595 }
15961596 else throw("Strict value is not equal to itself.")
15971597 }
15981598 else throw("Strict value is not equal to itself.")
15991599 }
16001600
16011601
16021602
16031603 @Callable(cY)
16041604 func unstakeAndGetOneTknV2 (hV,fU,fV) = {
16051605 let hm = {
16061606 let bd = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
16071607 if ($isInstanceOf(bd, "Boolean"))
16081608 then bd
16091609 else throw(($getType(bd) + " couldn't be cast to Boolean"))
16101610 }
16111611 let hy = if (if (bg())
16121612 then true
16131613 else (bv == s))
16141614 then true
16151615 else hm
16161616 let gQ = [if (if (!(hy))
16171617 then true
16181618 else gw(cY))
16191619 then true
16201620 else aZ("get operation is blocked by admin"), if ((size(cY.payments) == 0))
16211621 then true
16221622 else aZ("no payments are expected")]
16231623 if ((gQ == gQ))
16241624 then {
16251625 let hP = bD()
16261626 let hc = bw
16271627 let hQ = valueOrErrorMessage(addressFromString(hP[C]), "Wr st addr")
16281628 let dq = cY.caller
16291629 let ia = this
16301630 let hR = invoke(hQ, "unstakeINTERNAL", [hc, hV, dq.bytes, ia.bytes], nil)
16311631 if ((hR == hR))
16321632 then {
16331633 let ib = fT(fU, fV, [AttachedPayment(hc, hV)], cY.caller, cY.originCaller, cY.transactionId)
16341634 let dK = ib._1
16351635 let ge = ib._2
16361636 $Tuple2(dK, ge)
16371637 }
16381638 else throw("Strict value is not equal to itself.")
16391639 }
16401640 else throw("Strict value is not equal to itself.")
16411641 }
16421642
16431643
16441644
16451645 @Callable(cY)
16461646 func putOneTknV2WithBonusREADONLY (ic,id) = {
16471647 let ie = fy(ic, id, "", "", true)
16481648 let fN = ie._1
16491649 let dK = ie._2
16501650 let cI = ie._3
16511651 let fS = ie._4
16521652 $Tuple2(nil, $Tuple3(fN, cI, fS))
16531653 }
16541654
16551655
16561656
16571657 @Callable(cY)
16581658 func putOneTknV2WithoutTakeFeeREADONLY (ic,id) = {
16591659 let if = fy(ic, id, "", "", false)
16601660 let fN = if._1
16611661 let dK = if._2
16621662 let cI = if._3
16631663 let fS = if._4
16641664 $Tuple2(nil, $Tuple3(fN, cI, fS))
16651665 }
16661666
16671667
16681668
16691669 @Callable(cY)
16701670 func activate (ig,ih) = if ((toString(cY.caller) != toString(aT)))
16711671 then throw("denied")
16721672 else $Tuple2([StringEntry(aj(), ig), StringEntry(ak(), ih)], "success")
16731673
16741674
16751675
16761676 @Callable(cY)
16771677 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bj())
16781678
16791679
16801680
16811681 @Callable(cY)
16821682 func getAccBalanceWrapperREADONLY (bZ) = $Tuple2(nil, bY(bZ))
16831683
16841684
16851685
16861686 @Callable(cY)
16871687 func calcPricesWrapperREADONLY (cs,ct,cx) = {
16881688 let ii = cw(cs, ct, cx)
16891689 $Tuple2(nil, [toString(ii[0]), toString(ii[1]), toString(ii[2])])
16901690 }
16911691
16921692
16931693
16941694 @Callable(cY)
16951695 func fromX18WrapperREADONLY (M,ij) = $Tuple2(nil, L(parseBigIntValue(M), ij))
16961696
16971697
16981698
16991699 @Callable(cY)
17001700 func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
17011701
17021702
17031703
17041704 @Callable(cY)
17051705 func calcPriceBigIntWrapperREADONLY (cb,cc) = $Tuple2(nil, toString(ca(parseBigIntValue(cb), parseBigIntValue(cc))))
17061706
17071707
17081708
17091709 @Callable(cY)
17101710 func estimatePutOperationWrapperREADONLY (dn,ch,dM,dN,dO,dP,ik,dQ,dR) = $Tuple2(nil, dL(dn, ch, dM, dN, dO, dP, ik, dQ, dR, true, false, 0, ""))
17111711
17121712
17131713
17141714 @Callable(cY)
17151715 func estimateGetOperationWrapperREADONLY (dn,il,dp,ik) = {
17161716 let eg = dm(dn, il, dp, addressFromStringValue(ik))
17171717 $Tuple2(nil, $Tuple10(eg._1, eg._2, eg._3, eg._4, eg._5, eg._6, eg._7, toString(eg._8), eg._9, eg._10))
17181718 }
17191719
17201720
17211721
17221722 @Callable(cY)
17231723 func changeAmp () = {
17241724 let im = invoke(aT, "getChangeAmpConfigREADONLY", [toString(this)], nil)
17251725 let in = {
17261726 let aP = im
17271727 if ($isInstanceOf(aP, "List[Any]"))
17281728 then {
17291729 let io = aP
17301730 $Tuple3({
17311731 let bd = io[0]
17321732 if ($isInstanceOf(bd, "Int"))
17331733 then bd
17341734 else throw(($getType(bd) + " couldn't be cast to Int"))
17351735 }, {
17361736 let bd = io[1]
17371737 if ($isInstanceOf(bd, "Int"))
17381738 then bd
17391739 else throw(($getType(bd) + " couldn't be cast to Int"))
17401740 }, {
17411741 let bd = io[2]
17421742 if ($isInstanceOf(bd, "Int"))
17431743 then bd
17441744 else throw(($getType(bd) + " couldn't be cast to Int"))
17451745 })
17461746 }
17471747 else aZ("invalid entry type")
17481748 }
17491749 let ip = in._1
17501750 let iq = in._2
17511751 let ir = in._3
17521752 let is = parseIntValue(getStringValue(al()))
17531753 let it = (is + iq)
17541754 let iu = if ((0 > iq))
17551755 then if ((ir > it))
17561756 then ir
17571757 else it
17581758 else if ((it > ir))
17591759 then ir
17601760 else it
17611761 let iv = valueOrElse(getInteger(ao()), 0)
17621762 let iw = (iv + ip)
17631763 let gQ = [if ((height > iw))
17641764 then true
17651765 else aZ("try again in few blocks"), if ((is != iu))
17661766 then true
17671767 else aZ("already reached target")]
17681768 if ((gQ == gQ))
17691769 then [IntegerEntry(ao(), height), StringEntry(al(), toString(iu)), StringEntry(am(height), toString(iu))]
17701770 else throw("Strict value is not equal to itself.")
17711771 }
17721772
17731773
17741774 @Verifier(ix)
17751775 func iy () = {
17761776 let iz = {
17771777 let aP = gt()
17781778 if ($isInstanceOf(aP, "ByteVector"))
17791779 then {
17801780 let gx = aP
17811781 gx
17821782 }
17831783 else if ($isInstanceOf(aP, "Unit"))
17841784 then ix.senderPublicKey
17851785 else throw("Match error")
17861786 }
17871787 let aP = ix
17881788 if ($isInstanceOf(aP, "Order"))
17891789 then {
17901790 let fi = aP
17911791 let iA = bh()
17921792 let iB = if (gE())
17931793 then $Tuple2(true, "")
17941794 else fh(fi)
17951795 let aJ = iB._1
17961796 let aK = iB._2
17971797 let aL = sigVerify(fi.bodyBytes, fi.proofs[0], fi.senderPublicKey)
17981798 let aM = sigVerify(fi.bodyBytes, fi.proofs[1], iA)
17991799 if (if (if (aJ)
18001800 then aL
18011801 else false)
18021802 then aM
18031803 else false)
18041804 then true
18051805 else aI(aJ, aK, aL, aM)
18061806 }
18071807 else if ($isInstanceOf(aP, "SetScriptTransaction"))
18081808 then {
18091809 let aU = aP
18101810 if (sigVerify(ix.bodyBytes, ix.proofs[0], iz))
18111811 then true
18121812 else {
18131813 let iC = blake2b256(value(aU.script))
18141814 let iD = fromBase64String(value(getString(aT, aE())))
18151815 let iE = scriptHash(this)
18161816 if ((iD == iC))
18171817 then (iE != iC)
18181818 else false
18191819 }
18201820 }
18211821 else sigVerify(ix.bodyBytes, ix.proofs[0], iz)
18221822 }
18231823

github/deemru/w8io/169f3d6 
158.27 ms