tx · 9KiGbWXb9A7cPWFEfoHK7htRqaaS2Vix2H7rKarnnVSg

3MtP3m8hWMxYcyDxXB6n299KrsLLyT8ehni:  -0.03400000 Waves

2023.02.06 15:03 [2437732] smart account 3MtP3m8hWMxYcyDxXB6n299KrsLLyT8ehni > SELF 0.00000000 Waves

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

github/deemru/w8io/c3f4982 
139.11 ms