tx · 8XtwNRnqagiFsG2VJMyMrqKe1KecPcFJcoWiXNXrbZev

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.03500000 Waves

2022.12.06 18:23 [2348662] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

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

github/deemru/w8io/026f985 
136.42 ms