tx · HtqZBdmkGa8XV7JaW6AFRiLZcB3LzjdoLC8XUgTUtmd7

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.03600000 Waves

2022.12.08 12:01 [2351163] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "HtqZBdmkGa8XV7JaW6AFRiLZcB3LzjdoLC8XUgTUtmd7", "fee": 3600000, "feeAssetId": null, "timestamp": 1670490094320, "version": 1, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "5eddRqmjDMwVDny5QmTXcJGTP3ScPbJnfej4wBYKjFjAnbVeB6p8QLEBdvwEyHGCQ1ALJsYPGss5mZTpUnfWbTMr" ], "script": "base64:BgLNKAgCEgMKAQgSAwoBCBIAEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIAEgQKAggBEgQKAggBEgQKAgEBEgMKAQESBQoDAQEBEgUKAwEIARIECgIBCBIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgRiaWczIgRiaWc0IgpzbGlwcGFnZTREIgt3YXZlc1N0cmluZyIFQW11bHQiBURjb252IgNTRVAiBUVNUFRZIgpQb29sQWN0aXZlIgpQb29sUHV0RGlzIg5Qb29sTWF0Y2hlckRpcyIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyIJaWR4UG9vbFN0IglpZHhMUEFzSWQiCWlkeEFtQXNJZCIJaWR4UHJBc0lkIgtpZHhBbXRBc0RjbSINaWR4UHJpY2VBc0RjbSILaWR4SUFtdEFzSWQiDWlkeElQcmljZUFzSWQiD2lkeEZhY3RTdGFrQ250ciISaWR4RmFjdG9yeVJlc3RDbnRyIhBpZHhGYWN0U2xpcHBDbnRyIhFpZHhGYWN0R3d4UmV3Q250ciIKZmVlRGVmYXVsdCICdDEiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiAmYxIgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCICdHMiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCICZmMiA21wayIEcG1wayICcGwiAnBoIgFoIgF0IgNwYXUiAnVhIgR0eElkIgNnYXUiAmFhIgJwYSIDYW1wIgNhZGEiBmtleUZlZSIDZmVlIgZrZXlETHAiFWtleURMcFJlZnJlc2hlZEhlaWdodCISa2V5RExwUmVmcmVzaERlbGF5IhZkTHBSZWZyZXNoRGVsYXlEZWZhdWx0Ig9kTHBSZWZyZXNoRGVsYXkiBGZjZmciBG10cGsiAnBjIgZpQW10QXMiBWlQckFzIgNtYmEiBWJBU3RyIgNhcHMiHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiA3RvZSIDb3JWIgZzZW5kclYiBm1hdGNoViIDc3RyIgckbWF0Y2gwIgZ2YWxTdHIiBHN0cmYiBGFkZHIiA2tleSIEaW50ZiIIdGhyb3dFcnIiA21zZyIGZm10RXJyIgNmY2EiAUEiA2lncyICbXAiE2ZlZUNvbGxlY3RvckFkZHJlc3MiA2dwYyIFYW10QXMiB3ByaWNlQXMiCGlQcmljZUFzIgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwNzI1NTc0NDEiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIgNnZmMiDWZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIPc2xpcGFnZUNvbnRyYWN0Igtnd3hDb250cmFjdCIMcmVzdENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIghhbXRBc0RjbSIHcHJBc0RjbSIIcHJpY2VYMTgiCGxwQW10WDE4Ig1scFBySW5BbUFzWDE4Ig1scFBySW5QckFzWDE4Ig9jYWxjdWxhdGVQcmljZXMiAXAiB3Rha2VGZWUiBmFtb3VudCIJZmVlQW1vdW50IgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4IgpscEVtaXNzWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiA2VwbyIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIglpbkFtSWRTdHIiCWluUHJJZFN0ciIGYW10RGNtIghwcmljZURjbSIEbHBFbSIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIBciILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMTc4NzIxODIxNyIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiBGdldEQiAnhwIgN4cDAiA3hwMSIBcyIBYSIDYW5uIgt4cDBfeHAxX25fbiIFYW5uX3MiBWFubl8xIgljYWxjRE5leHQiAWQiAmRkIgNkZGQiAmRwIgRjYWxjIgNhY2MiAWkiBWROZXh0IghkRGlmZlJhdyIFZERpZmYiA2FyciINJHQwMjAxNDUyMDE5MyICJGwiAiRzIgUkYWNjMCIFJGYwXzEiAiRhIgIkaSIFJGYwXzIiBWZvdW5kIgdnZXRET2xkIgFuIgphUHJlY2lzaW9uIhBhbm5fc19hUHJlY2lzaW9uIg5hbm5fYVByZWNpc2lvbiICbjEiA2N1ciINJHQwMjA4MjIyMDg0MiINJHQwMjEyNjMyMTMxMCIFZ2V0WUQiAUQiAXgiAWMiAWIiDSR0MDIxODEwMjE4MzAiAXkiBXlOZXh0IgV5RGlmZiINJHQwMjIxMzcyMjE4NCIHY2FsY0RMcCINYW1vdW50QmFsYW5jZSIMcHJpY2VCYWxhbmNlIgpscEVtaXNzaW9uIgp1cGRhdGVkRExwIg5jYWxjQ3VycmVudERMcCIQYW1vdW50QXNzZXREZWx0YSIPcHJpY2VBc3NldERlbHRhIhRscEFzc2V0RW1pc3Npb25EZWx0YSISYW1vdW50QXNzZXRCYWxhbmNlIhFwcmljZUFzc2V0QmFsYW5jZSIPbHBBc3NldEVtaXNzaW9uIgpjdXJyZW50RExwIhJyZWZyZXNoRExwSW50ZXJuYWwiF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhIhZwcmljZUFzc2V0QmFsYW5jZURlbHRhIgdhY3Rpb25zIhJ2YWxpZGF0ZVVwZGF0ZWRETHAiBm9sZERMcCIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDI0MTIzMjQzMzUiA2RMcCINJHQwMjQ2NjUyNDc2NSINdW51c2VkQWN0aW9ucyIGZExwTmV3Igxpc09yZGVyVmFsaWQiAmNnIgNwbXQiAmNwIgZjYWxsZXIiB2FtQXNQbXQiB3ByQXNQbXQiDWNhbGNQdXRPbmVUa24iCXBtdEFtdFJhdyILd2l0aFRha2VGZWUiDWNoZWNoRW1pc3Npb24iDSR0MDI3MDgyMjc1NDQiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIg0kdDAyNzU1MDI3NzI2IgthbUFtb3VudFJhdyILcHJBbW91bnRSYXciDSR0MDI3NzMwMjc5NjkiCGFtQW1vdW50IghwckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciBmNoZWNrRCIIbHBBbW91bnQiDnBvb2xQcm9wb3J0aW9uIg9hbW91bnRBc3NldFBhcnQiDnByaWNlQXNzZXRQYXJ0IglscEFtdEJvdGgiBWJvbnVzIhNnZXRPbmVUa25WMkludGVybmFsIgpvdXRBc3NldElkIgxtaW5PdXRBbW91bnQiCHBheW1lbnRzIgxvcmlnaW5DYWxsZXIiDXRyYW5zYWN0aW9uSWQiCmFtRGVjaW1hbHMiCnByRGVjaW1hbHMiCnBvb2xTdGF0dXMiDSR0MDMwMDM0MzAxNDUiAUAiCHRvdGFsR2V0Igt0b3RhbEFtb3VudCINJHQwMzAzMzUzMDY0MiIFb3V0QW0iBW91dFByIghjdXJQclgxOCIFY3VyUHIiEW91dEFzc2V0SWRPcldhdmVzIhBzZW5kRmVlVG9NYXRjaGVyIgRidXJuIg0kdDAzMTQyNzMxNzc3IhBmZWVBbW91bnRGb3JDYWxjIhBvdXRJbkFtb3VudEFzc2V0Ig0kdDAzMTc4MDMxODg4IhFyZWZyZXNoRExwQWN0aW9ucyIRaXNVcGRhdGVkRExwVmFsaWQiAW0iAnBtIgJwZCIJaXNNYW5hZ2VyIgJwayICbW0iF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgJjbSIDaHBtIgNjcG0iBHNsaXAiCWF1dG9TdGFrZSIHZmFjdENmZyILc3Rha2luZ0NudHIiCHNsaXBDbnRyIgphbUFzc2V0UG10IgpwckFzc2V0UG10IgFlIglscEFzc2V0SWQiAmVsIgZsZWdhY3kiAnNhIgJzcCIIbHBUcm5zZnIiAnNzIg0kdDAzNTc0NDM1ODA5IiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCINaXNQdXREaXNhYmxlZCIGY2hlY2tzIg0kdDAzNjk0NjM3MTA0Igdlc3RpbUxQIg0kdDAzNzkxOTM4MjY4IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMzgyNzEzODM3OSIHbWF4U2xwZyIGZXN0UHV0Ig0kdDAzOTMzODM5NDAzIglvdXRBbXRBbXQiDSR0MDQwMTkyNDAyNzQiDWlzR2V0RGlzYWJsZWQiDSR0MDQwODkyNDEwNDciGGxhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCIdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiDSR0MDQxNTcxNDE2MzUiEGRMcFVwZGF0ZUFjdGlvbnMiDWxwQXNzZXRBbW91bnQiBWluZGV4IgRuZXdZIgJkeSILdG90YWxHZXRSYXciDSR0MDQyNTM1NDI1ODQiDSR0MDQyOTI5NDMwNDQiDnN1bU9mR2V0QXNzZXRzIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0IhRidXJuTFBBc3NldE9uRmFjdG9yeSINJHQwNDQyMTI0NDI5MyINY2hlY2tQYXltZW50cyIKZmFjdG9yeUNmZyIHc3Rha2luZyIKdW5zdGFrZUludiIBdiIFYnVybkEiDSR0MDQ1MzU2NDU0MzciDXVuc3Rha2VBbW91bnQiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIDcmVzIgxjaGVja0Ftb3VudHMiDSR0MDQ2Njg1NDY3NjYiDSR0MDQ3NzAwNDc4ODgiEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIg0kdDA0ODE0NzQ4MjUwIg0kdDA0ODUyOTQ4NjMzIghhbXRBc1N0ciIHcHJBc1N0ciIBayICcHIiDHJlc1NjYWxlTXVsdCIHdXNyQWRkciIHcG10QXNJZCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIgpvcmRlclZhbGlkIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2h6AAFhAIDC1y8AAWIJALYCAQCAwtcvAAFjCQC2AgEAgICQu7rWrfANAAFkCQC2AgEAAAABZQkAtgIBAAAAAWYJALYCAQABAAFnCQC2AgEAAgABaAkAtgIBAAMAAWkJALYCAQAEAAFqCQC2AgEJAGUCBQFhCQBpAgkAaAIFAWEAAQUBYQABawIFV0FWRVMAAWwCAzEwMAABbQIBMQABbgICX18AAW8CAAABcAABAAFxAAIAAXIAAwABcwAEAAF0AAEAAXUAAgAB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CQECYWUABAJhVQkBAmFHAgUEdGhpcwkBAmFmAAQCYVYJAQJhSgIFAmFOCQECYXUBBQJhVQQCYXMJAQJhSgIFAmFOCQECYXUBBQJhVAkAtQkCCQECYUcCBQJhTgkBAmFyAgkApAMBBQJhcwkApAMBBQJhVgUBbgECYVcBAmFYAwkAAAIFAmFYBQFrBQR1bml0CQDZBAEFAmFYAQJhWQECYVgDCQAAAgUCYVgFBHVuaXQFAWsJANgEAQkBBXZhbHVlAQUCYVgBAmFaAQJiYQkAmQoHCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmJhBQF0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmEFAXUJANkEAQkAkQMCBQJiYQUBdgkBAmFXAQkAkQMCBQJiYQUBdwkBAmFXAQkAkQMCBQJiYQUBeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJhBQF5CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmEFAXoAAmJiCQECYVoBCQECYVMAAAJiYwUCYmIAAmJkCAUCYmMCXzEAAmJlCAUCYmMCXzIAAmJmCAUCYmMCXzMAAmJnCAUCYmMCXzQAAmJoCAUCYmMCXzUAAmJpCAUCYmMCXzYAAmJqCAUCYmMCXzcBAmJrAAkAtQkCCQECYUcCBQJhTgkBAmFwAAUBbgACYmwJAQJiawAAAmJtCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJibAUBQwIgSW52YWxpZCBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MAAmJuCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJibAUBRQIgSW52YWxpZCBzbGlwYWdlIGNvbnRyYWN0IGFkZHJlc3MAAmJvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJibAUBRgIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwACYnAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJsBQFEAhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzAQJicQoCYnICYnMCYnQCYnUCYnYCYncCYngCYnkCYnoCYkEJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJyCQDMCAIJAKQDAQUCYnMJAMwIAgkApAMBBQJidAkAzAgCCQCkAwEFAmJ1CQDMCAIJAKQDAQUCYnYJAMwIAgkApAMBBQJidwkAzAgCCQCkAwEFAmJ4CQDMCAIJAKQDAQUCYnkJAMwIAgkApAMBBQJiegkAzAgCCQCkAwEFAmJBBQNuaWwFAW4BAmJCBgJiQwJiRAJiRQJidQJieAJieQkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJDCQDMCAIJAKQDAQUCYkQJAMwIAgkApAMBBQJiRQkAzAgCCQCkAwEFAmJ1CQDMCAIJAKQDAQUCYngJAMwIAgkApAMBBQJieQUDbmlsBQFuAQJiRgECYkcDCQAAAgUCYkcCBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFAmJHAQJiSAICYkkCYkoJALwCAwUCYkkFAWMFAmJKAQJiSwMCYkwCYk0CYk4EAmJPCQC8AgMJALgCAgUCYkwFAmJNBQFiBQJiTQQCYlAJAL8CAgkAuAICBQJiTgkBAVIBBQJiTwUBZAMJAQEhAQUCYlAJAAIBCQCsAgICCkJpZyBzbHBnOiAJAKYDAQUCYk8JAJQKAgUCYlAJAJkDAQkAzAgCBQJiTAkAzAgCBQJiTQUDbmlsAQJiUQMCYlICYlMCYlQEAmJPCQC8AgMFAmJTBQFiBQJiUgQCYlUJAL8CAgUCYlQFAmJPAwMFAmJVBgkAvwICBQJiUwUCYlIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCmAwEFAmJTAgEgCQCmAwEFAmJSAgEgCQCmAwEFAmJPAgEgCQCmAwEFAmJUBQJiVQECYlYEAmJXAmJYAmJZAmJaBAJjYQkBAUgCBQJiWQUCYlcEAmNiCQEBSAIFAmJaBQJiWAkBAmJIAgUCY2IFAmNhAQJjYwMCYlkCYloCY2QEAmNlCQECYVMABAJjZgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNlBQF5BAJjZwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNlBQF6BAJjaAkBAmJWBAUCY2YFAmNnBQJiWQUCYloEAmJKCQEBSAIFAmJZBQJjZgQCYkkJAQFIAgUCYloFAmNnBAJjaQkBAUgCBQJjZAUBYQQCY2oJAQJiSAIFAmJKBQJjaQQCY2sJAQJiSAIFAmJJBQJjaQkAzAgCBQJjaAkAzAgCBQJjagkAzAgCBQJjawUDbmlsAQJjbAMCYlkCYloCY2QEAmNtCQECY2MDBQJiWQUCYloFAmNkCQDMCAIJAQFLAgkAkQMCBQJjbQAABQFhCQDMCAIJAQFLAgkAkQMCBQJjbQABBQFhCQDMCAIJAQFLAgkAkQMCBQJjbQACBQFhBQNuaWwBAmNuAQJjbwQCY3AJAGsDBQJjbwUCYWoFAWEJAJQKAgkAZQIFAmNvBQJjcAUCY3ABAmNxBAJjcgJjcwJjdAJjdQQCY2UJAQJhUwAEAmN2CQCRAwIFAmNlBQF2BAJjdwkAkQMCBQJjZQUBdwQCY3gJAJEDAgUCY2UFAXgEAmN5CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY2UFAXkEAmN6CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY2UFAXoEAmNBCQCRAwIFAmNlBQF1BAJjQggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmN2AgtXcm9uZyBMUCBpZAhxdWFudGl0eQMJAQIhPQIFAmN2BQJjcwkAAgECD1dyb25nIHBtdCBhc3NldAQCY0MJAQJiRgEFAmN3BAJjRAkBAUgCBQJjQwUCY3kEAmNFCQECYkYBBQJjeAQCY0YJAQFIAgUCY0UFAmN6BAJjRwkBAmJIAgUCY0YFAmNEBAJjSAkBAUsCBQJjRwUBYQQCY0kJAQFIAgUCY3QFAWEEAmNKCQEBSAIFAmNCBQFhBAJjSwkAvAIDBQJjRAUCY0kFAmNKBAJjTAkAvAIDBQJjRgUCY0kFAmNKBAJjTQkBAUsCBQJjSwUCY3kEAmNOCQEBSwIFAmNMBQJjegQCY08DCQAAAgUCY3ICAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmN1BQJjTQMJAAACBQJjdwIFV0FWRVMFBHVuaXQJANkEAQUCY3cJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY3UFAmNOAwkAAAIFAmN4AgVXQVZFUwUEdW5pdAkA2QQBBQJjeAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQCCQClCAEFAmN1BQJjcgkBAmJCBgUCY00FAmNOBQJjdAUCY0gFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCY0gJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0gFA25pbAkAnAoKBQJjTQUCY04FAmN3BQJjeAUCY0MFAmNFBQJjQgUCY0cFAmNBBQJjTwECY1ANAmNyAmJOAmNRAmNSAmNTAmNUAmN1AmNVAmNWAmNXAmNYAmNZAmNaBAJjZQkBAmFTAAQCY3YJANkEAQkAkQMCBQJjZQUBdgQCZGEJAJEDAgUCY2UFAXcEAmRiCQCRAwIFAmNlBQF4BAJkYwkAkQMCBQJjZQUBQQQCZGQJAJEDAgUCY2UFAUIEAmRlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY2UFAXkEAmRmCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY2UFAXoEAmNBCQCRAwIFAmNlBQF1BAJkZwgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjdgIIV3IgbHAgYXMIcXVhbnRpdHkEAmNDAwUCY1UJAQJiRgEFAmRhAwMFAmNXCQAAAgUCY1oFAmRhBwkAZQIJAQJiRgEFAmRhBQJjWQMFAmNXCQECYkYBBQJkYQkAZQIJAQJiRgEFAmRhBQJjUQQCY0UDBQJjVQkBAmJGAQUCZGIDAwUCY1cJAAACBQJjWgUCZGIHCQBlAgkBAmJGAQUCZGIFAmNZAwUCY1cJAQJiRgEFAmRiCQBlAgkBAmJGAQUCZGIFAmNTBAJkaAkBAUgCBQJjUQUCZGUEAmRpCQEBSAIFAmNTBQJkZgQCZGoJAQJiSAIFAmRpBQJkaAQCY0QJAQFIAgUCY0MFAmRlBAJjRgkBAUgCBQJjRQUCZGYEAmRrAwkAAAIFAmRnAAAEAmNHBQFkBAJkbAUBZAQCY2kJAHYGCQC5AgIFAmRoBQJkaQAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUsCBQJjaQUBYQkBAUsCBQJkaAUCZGUJAQFLAgUCZGkFAmRmCQECYkgCCQC3AgIFAmNGBQJkaQkAtwICBQJjRAUCZGgFAmRsBAJjRwkBAmJIAgUCY0YFAmNEBAJkbQkAvAIDCQEBUgEJALgCAgUCY0cFAmRqBQFjBQJjRwQCZGwJAQFIAgUCYk4FAWEDAwMFAmNYCQECIT0CBQJjRwUBZAcJAL8CAgUCZG0FAmRsBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJkbQIDID4gCQCmAwEFAmRsBAJkbgkBAUgCBQJkZwUBYQQCZG8JALwCAwUCZGgFAmNHBQFjBAJkcAkAvAIDBQJkaQUBYwUCY0cEAmRxAwkAvwICBQJkbwUCZGkJAJQKAgUCZHAFAmRpCQCUCgIFAmRoBQJkbwQCZHIIBQJkcQJfMQQCZHMIBQJkcQJfMgQCY2kJALwCAwUCZG4FAmRzBQJjRgkAlwoFCQEBSwIFAmNpBQFhCQEBSwIFAmRyBQJkZQkBAUsCBQJkcwUCZGYFAmNHBQJkbAQCZHQIBQJkawJfMQQCZHUIBQJkawJfMgQCZHYIBQJkawJfMwQCY0gJAQFLAggFAmRrAl80BQFhBAJkdwkBAUsCCAUCZGsCXzUFAWEDCQBnAgAABQJkdAkAAgECB0xQIDw9IDAEAmR4AwkBASEBBQJjVgAABQJkdAQCZHkJAGUCBQJjUQUCZHUEAmR6CQBlAgUCY1MFAmR2BAJkQQMDBQJjVwkAAAIFAmNaBQJkYQcJAJQKAgUCY1kAAAMDBQJjVwkAAAIFAmNaBQJkYgcJAJQKAgAABQJjWQkAlAoCBQJkdQUCZHYEAmRCCAUCZEECXzEEAmRDCAUCZEECXzIEAmRECQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmNICQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNICQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIFAmN1BQJjcgkBAmJxCgUCZEIFAmRDBQJkeAUCY0gFAmJOBQJkdwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZHkFAmR6BQNuaWwJAJ8KDQUCZHQFAmR4BQJjSAUCY0MFAmNFBQJkZwUCY3YFAmNBBQJkRAUCZHkFAmR6BQJjUgUCY1QBAmRFAQJkRgQCZEcJAJEDAgUCZEYAAAQCZEgJAJEDAgUCZEYAAQQCZEkJALcCAgUCZEcFAmRIAwkAAAIFAmRJBQFlBQFlBAJkSgkBDXBhcnNlSW50VmFsdWUBBQJhTwQCZEsJAGgCBQJkSgACBAJjbQkAvAIDBQJkRwUCZEgFAWYEAmRMCQC8AgMFAmNtBQFpBQFmBAJkTQkAvAIDCQC2AgEFAmRLBQJkSQUBZgQCZE4JALYCAQkAZQIFAmRLAAEKAQJkTwECZFAEAmRRCQC8AgMFAmRQBQJkUAUBZgQCZFIJALwCAwUCZFEFAmRQBQFmBAJkUwkAvAIDBQJkUgUBZgUCZEwJAL0CBAkAtwICBQJkTQkAvAIDBQJkUwUBZwUBZgUCZFAJALcCAgkAvAIDBQJkTgUCZFAFAWYJALwCAwUBaAUCZFMFAWYFB0NFSUxJTkcKAQJkVAICZFUCZFYDCAUCZFUCXzIFAmRVBAJkUAgFAmRVAl8xBAJkVwkBAmRPAQUCZFAEAmRYCQCgAwEJALgCAgUCZFcJAQV2YWx1ZQEFAmRQBAJkWQMJAGYCAAAFAmRYCQEBLQEFAmRYBQJkWAMJAGcCAAEFAmRZCQCUCgIFAmRXBgkAlAoCBQJkVwcEAmRaCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmVhCgACZWIFAmRaCgACZWMJAJADAQUCZWIKAAJlZAkAlAoCBQJkSQcKAQJlZQICZWYCZWcDCQBnAgUCZWcFAmVjBQJlZgkBAmRUAgUCZWYJAJEDAgUCZWIFAmVnCgECZWgCAmVmAmVnAwkAZwIFAmVnBQJlYwUCZWYJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmVoAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgUCZWQAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZFAIBQJlYQJfMQQCZWkIBQJlYQJfMgMFAmVpBQJkUAkAAgEJAKwCAgIZRCBjYWxjdWxhdGlvbiBlcnJvciwgRCA9IAkApgMBBQJkUAECZWoBAmRGBAJlawUBZwQCZEcJAJEDAgUCZEYAAAQCZEgJAJEDAgUCZEYAAQQCZWwJAKcDAQUBbAQCZEoJALkCAgkApwMBBQJhTwUCZWwEAmRJCQC3AgIFAmRHBQJkSAMJAAACBQJkSQUBZQUBZQQCZEsJALkCAgUCZEoFAmVrBAJkTAkAuQICCQC5AgIJALkCAgUCZEcFAmRIBQJlawUCZWsEAmVtCQC6AgIJALkCAgUCZEsFAmRJBQJlbAQCZW4JALgCAgUCZEsFAmVsBAJlbwkAtwICBQJlawUBZgoBAmRUAgJkVQJlcAQCZXEFAmRVBAJkUAgFAmVxAl8xBAJlaQgFAmVxAl8yAwkBAiE9AgUCZWkFBHVuaXQFAmRVBAJkUwkAugICCQC5AgIJALkCAgUCZFAFAmRQBQJkUAUCZEwEAmRXCQC6AgIJALkCAgkAtwICBQJlbQkAuQICBQJkUwUCZWsFAmRQCQC3AgIJALoCAgkAuQICBQJlbgUCZFAFAmVsCQC5AgIFAmVvBQJkUwQCZFkJAQFTAQkAuAICBQJkVwkBBXZhbHVlAQUCZFADCQDAAgIFAWYFAmRZCQCUCgIFAmRXBQJlcAkAlAoCBQJkVwUEdW5pdAQCZFoJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZXIKAAJlYgUCZFoKAAJlYwkAkAMBBQJlYgoAAmVkCQCUCgIFAmRJBQR1bml0CgECZWUCAmVmAmVnAwkAZwIFAmVnBQJlYwUCZWYJAQJkVAIFAmVmCQCRAwIFAmViBQJlZwoBAmVoAgJlZgJlZwMJAGcCBQJlZwUCZWMFAmVmCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJlaAIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIFAmVkAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmRQCAUCZXICXzEEAmVpCAUCZXICXzIDCQECIT0CBQJlaQUEdW5pdAUCZFAJAAIBCQCsAgICGUQgY2FsY3VsYXRpb24gZXJyb3IsIEQgPSAJAKYDAQUCZFABAmVzAwJkRgJkVgJldAQCZWsFAWcEAmV1CQCRAwIFAmRGAwkAAAIFAmRWAAAAAQAABAJlbAkApwMBBQFsBAJkSgkAuQICCQCnAwEFAmFPBQJlbAQCZEkFAmV1BAJkSwkAuQICBQJkSgUCZWsEAmV2CQC6AgIJALkCAgkAuQICCQC6AgIJALkCAgUCZXQFAmV0CQC5AgIFAmV1BQJlawUCZXQFAmVsCQC5AgIFAmRLBQJlawQCZXcJALgCAgkAtwICBQJkSQkAugICCQC5AgIFAmV0BQJlbAUCZEsFAmV0CgECZFQCAmRVAmVwBAJleAUCZFUEAmV5CAUCZXgCXzEEAmVpCAUCZXgCXzIDCQECIT0CBQJlaQUEdW5pdAUCZFUEAmV6CQC6AgIJALcCAgkAuQICBQJleQUCZXkFAmV2CQC3AgIJALkCAgUBZwUCZXkFAmV3BAJlQQkBAVMBCQC4AgIFAmV6CQEFdmFsdWUBBQJleQMJAMACAgUBZgUCZUEJAJQKAgUCZXoFAmVwCQCUCgIFAmV6BQR1bml0BAJkWgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlQgoAAmViBQJkWgoAAmVjCQCQAwEFAmViCgACZWQJAJQKAgUCZXQFBHVuaXQKAQJlZQICZWYCZWcDCQBnAgUCZWcFAmVjBQJlZgkBAmRUAgUCZWYJAJEDAgUCZWIFAmVnCgECZWgCAmVmAmVnAwkAZwIFAmVnBQJlYwUCZWYJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmVoAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgUCZWQAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZXkIBQJlQgJfMQQCZWkIBQJlQgJfMgMJAQIhPQIFAmVpBQR1bml0BQJleQkAAgEJAKwCAgIZWSBjYWxjdWxhdGlvbiBlcnJvciwgWSA9IAkApgMBBQJleQECZUMDAmVEAmVFAmVGBAJlRwkAvAIDCQECZEUBCQDMCAIFAmVECQDMCAIFAmVFBQNuaWwFAWMFAmVGAwkAAAIFAmVGBQFlBQFlBQJlRwECZUgDAmVJAmVKAmVLBAJlTAkAuAICCQC2AgEJAQJiRgEJAQJhWQEFAmJnBQJlSQQCZU0JALgCAgkAtgIBCQECYkYBCQECYVkBBQJiaAUCZUoEAmVOCQC4AgIJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYmYIcXVhbnRpdHkFAmVLBAJlTwkBAmVDAwUCZUwFAmVNBQJlTgUCZU8BAmVQAwJlUQJlUgJlSwQCZUwJAGQCCQECYkYBCQECYVkBBQJiZwUCZVEEAmVNCQBkAgkBAmJGAQkBAmFZAQUCYmgFAmVSBAJlTgkAZAIICQEFdmFsdWUBCQDsBwEFAmJmCHF1YW50aXR5BQJlSwQCZUcJAQJlQwMJALYCAQUCZUwJALYCAQUCZU0JALYCAQUCZU4EAmVTCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJhbAUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIFAmFrCQCmAwEFAmVHBQNuaWwJAJQKAgUCZVMFAmVHAQJlVAICZVUCZUcDCQDAAgIFAmVHBQJlVQYJAQJhSwECInVwZGF0ZWQgRExwIGxvd2VyIHRoYW4gY3VycmVudCBETHABAmVWAQJlVwQCZVgIBQJlVwZhbW91bnQEAmVZCQBuBAgFAmVXBmFtb3VudAgFAmVXBXByaWNlBQFhBQVGTE9PUgQCZVoDCQAAAggFAmVXCW9yZGVyVHlwZQUDQnV5CQCUCgIFAmVYCQEBLQEFAmVZCQCUCgIJAQEtAQUCZVgFAmVZBAJlUQgFAmVaAl8xBAJlUggFAmVaAl8yAwMDCQECYVAABgkAAAIFAmJlBQFyBgkAAAIFAmJlBQFzCQACAQINQWRtaW4gYmxvY2tlZAMDCQECIT0CCAgFAmVXCWFzc2V0UGFpcgthbW91bnRBc3NldAUCYmcGCQECIT0CCAgFAmVXCWFzc2V0UGFpcgpwcmljZUFzc2V0BQJiaAkAAgECCVdyIGFzc2V0cwQCZmEJAKcDAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUCYWsEAmZiCQECZVADBQJlUQUCZVIAAAQCZmMIBQJmYgJfMQQCZmQIBQJmYgJfMgQCZmUJAMACAgUCZmQFAmZhBQJmZQECZmYBAmRWAwkBAiE9AgkAkAMBCAUCZFYIcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmZnCQEFdmFsdWUBCQCRAwIIBQJkVghwYXltZW50cwAABAJjcwkBBXZhbHVlAQgFAmZnB2Fzc2V0SWQEAmNZCAUCZmcGYW1vdW50BAJkawkBAmNxBAkA2AQBCAUCZFYNdHJhbnNhY3Rpb25JZAkA2AQBBQJjcwUCY1kIBQJkVgZjYWxsZXIEAmNNCAUCZGsCXzEEAmNOCAUCZGsCXzIEAmNBCQENcGFyc2VJbnRWYWx1ZQEIBQJkawJfOQQCY08IBQJkawNfMTADAwkBAmFQAAYJAAACBQJjQQUBcwkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmNBCQCXCgUFAmNNBQJjTgUCY1kFAmNzBQJjTwECZmgKAmZpAmFjAmZqAmZrAmJOAmNWAmNXAmNYAmNZAmNaBAJkawkBAmNQDQUCYWMFAmJOCAkBBXZhbHVlAQUCZmoGYW1vdW50CAkBBXZhbHVlAQUCZmoHYXNzZXRJZAgJAQV2YWx1ZQEFAmZrBmFtb3VudAgJAQV2YWx1ZQEFAmZrB2Fzc2V0SWQFAmZpCQAAAgUCYWMCAAUCY1YFAmNXBQJjWAUCY1kFAmNaBAJjQQkBDXBhcnNlSW50VmFsdWUBCAUCZGsCXzgDAwMJAQJhUAAGCQAAAgUCY0EFAXEGCQAAAgUCY0EFAXMJAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFAmNBBQJkawECZmwFAmZtAmNzAmN1AmFjAmZuBAJiYQkBAmFTAAQCY3cJAJEDAgUCYmEFAXcEAmN4CQCRAwIFAmJhBQF4BAJjdgkAkQMCBQJiYQUBdgQCZGUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYQUBeQQCZGYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYQUBegQCZU4JALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmN2AhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJmbwMJAL8CAgUCZU4FAWUGCQACAQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwMJAAACBQJmbwUCZm8EAmNDCQECYkYBBQJjdwQCY0UJAQJiRgEFAmN4BAJmcAMJAAACBQJhYwIACQCUCgIFAmNDBQJjRQMJAAACBQJjcwUCY3cDCQBmAgUCZm0FAmNDCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCCQBlAgUCY0MFAmZtBQJjRQMJAAACBQJjcwUCY3gDCQBmAgUCZm0FAmNFCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCBQJjQwkAZQIFAmNFBQJmbQkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmZxCAUCZnACXzEEAmZyCAUCZnACXzIEAmZzAwkAAAIFAmNzBQJjdwkAlAoCBQJmbQAAAwkAAAIFAmNzBQJjeAkAlAoCAAAFAmZtCQACAQIPaW52YWxpZCBwYXltZW50BAJmdAgFAmZzAl8xBAJmdQgFAmZzAl8yBAJmdgMFAmZuCQCVCgMICQECY24BBQJmdAJfMQgJAQJjbgEFAmZ1Al8xCAkBAmNuAQUCZm0CXzIJAJUKAwUCZnQFAmZ1AAAEAmZ3CAUCZnYCXzEEAmZ4CAUCZnYCXzIEAmNwCAUCZnYCXzMEAmZ5CQBkAgUCZnEFAmZ3BAJmegkAZAIFAmZyBQJmeAQCYlMJAQJkRQEJAMwIAgkAtgIBBQJmcQkAzAgCCQC2AgEFAmZyBQNuaWwEAmJSCQECZEUBCQDMCAIJALYCAQUCZnkJAMwIAgkAtgIBBQJmegUDbmlsBAJmQQMJAL8CAgUCYlIFAmJTBgkBBXRocm93AAMJAAACBQJmQQUCZkEEAmZCCQC9AgQFAmVOCQC4AgIFAmJSBQJiUwUCYlMFBUZMT09SBAJjSAkBAUsCCQECYkgCCQEBSAIFAmZ6BQJkZgkBAUgCBQJmeQUCZGUFAWEEAmRECQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmNICQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNICQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIFAmN1BQJhYwkBAmJxCgUCZnQFAmZ1CQCgAwEFAmZCBQJjSAAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmZDCQBrAwUCZnIFAWEFAmZxBAJmRAkAawMFAmZtBQFhCQBkAgUCZkMFAWEEAmZFCQBlAgUCZm0FAmZEBAJmRgkAvAIDBQJlTgkAtgIBBQJmRQkAtgIBBQJmcgQCZkcJAKADAQkAvAIDCQC4AgIFAmZCBQJmRgUBYgUCZkYJAJYKBAkAoAMBBQJmQgUCZEQFAmNwBQJmRwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZkgGAmZJAmZKAmZLAmZpAmZMAmZNBAJiYQkBAmFTAAQCY3YJAJEDAgUCYmEFAXYEAmN3CQCRAwIFAmJhBQF3BAJjeAkAkQMCBQJiYQUBeAQCZk4JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYQUBeQQCZk8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYQUBegQCZlAJAJEDAgUCYmEFAXUEAmN1AwkAAAIFAmZpBQJicAUCZkwFAmZpBAJmZwkBBXZhbHVlAQkAkQMCBQJmSwAABAJjcwkBBXZhbHVlAQgFAmZnB2Fzc2V0SWQEAmNZCAUCZmcGYW1vdW50BAJlTwkBAmVIAwUBZQUBZQUBZQMJAAACBQJlTwUCZU8EAmNyCQDYBAEFAmZNAwkBAiE9AgUCY3YJANgEAQUCY3MJAAIBAghXcm9uZyBMUAQCY0MJAQJiRgEFAmN3BAJjRQkBAmJGAQUCY3gEAmZRCgACZlIJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJmSQkAzAgCBQJjWQUDbmlsBQNuaWwDCQABAgUCZlICCihJbnQsIEludCkFAmZSCQACAQkArAICCQADAQUCZlICHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkDCQAAAgUCZlEFAmZRBAJjcAgFAmZRAl8yBAJmUwgFAmZRAl8xBAJmVAMDCQBmAgUCZkoAAAkAZgIFAmZKBQJmUwcJAQJhSwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZkoFA25pbAIABQJmUwQCZlUDCQAAAgUCZkkFAmN3CQCWCgQFAmZUAAAJAGUCCQBlAgUCY0MFAmZUBQJjcAUCY0UDCQAAAgUCZkkFAmN4CQCWCgQAAAUCZlQFAmNDCQBlAgkAZQIFAmNFBQJmVAUCY3AJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCZlYIBQJmVQJfMQQCZlcIBQJmVQJfMgQCZnkIBQJmVQJfMwQCZnoIBQJmVQJfNAQCZlgJAQJiSAIJAQFIAgUCZnoFAmZPCQEBSAIFAmZ5BQJmTgQCZlkJAQFLAgUCZlgFAWEEAmZaAwkAAAIFAmZJAgVXQVZFUwUEdW5pdAkA2QQBBQJmSQQCZ2EDCQBmAgUCY3AAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhUgUCY3AFAmZaBQNuaWwFA25pbAQCY08JAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjdQUCZlQFAmZaCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIJAKUIAQUCY3UFAmNyCQECYkIGBQJmVgUCZlcFAmNZBQJmWQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJmWQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJmWQUDbmlsBQJnYQMJAAACBQJjTwUCY08EAmdiCQD8BwQFAmFOAgRidXJuCQDMCAIFAmNZBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNzBQJjWQUDbmlsAwkAAAIFAmdiBQJnYgQCZ2MEAmdkAwkAAAIFBHRoaXMFAmFSAAAFAmNwBAJnZQMJAAACCQECYVcBBQJmSQUCYmcGBwMFAmdlCQCUCgIJAQEtAQkAZAIFAmZTBQJnZAAACQCUCgIAAAkBAS0BCQBkAgUCZlMFAmdkBAJlUQgFAmdjAl8xBAJlUggFAmdjAl8yBAJnZgkBAmVQAwUCZVEFAmVSAAAEAmdnCAUCZ2YCXzEEAmVHCAUCZ2YCXzIEAmdoCQECZVQCBQJlTwUCZUcDCQAAAgUCZ2gFAmdoCQCUCgIJAM4IAgUCY08FAmdnBQJmVAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZ2kABAJhRQkAoggBCQEBVQADCQABAgUCYUUCBlN0cmluZwQCZEkFAmFFCQDZBAEFAmRJAwkAAQIFAmFFAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmdqAAQCYUUJAKIIAQkBAVYAAwkAAQIFAmFFAgZTdHJpbmcEAmRJBQJhRQkA2QQBBQJkSQMJAAECBQJhRQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJnawkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJnbAECZFYEAmFFCQECZ2kAAwkAAQIFAmFFAgpCeXRlVmVjdG9yBAJnbQUCYUUJAAACCAUCZFYPY2FsbGVyUHVibGljS2V5BQJnbQMJAAECBQJhRQIEVW5pdAkAAAIIBQJkVgZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECZ24BAmRWBAJhRQkBAmdpAAMJAAECBQJhRQIKQnl0ZVZlY3RvcgQCZ20FAmFFAwkAAAIIBQJkVg9jYWxsZXJQdWJsaWNLZXkFAmdtBgUCZ2sDCQABAgUCYUUCBFVuaXQDCQAAAggFAmRWBmNhbGxlcgUEdGhpcwYFAmdrCQACAQILTWF0Y2ggZXJyb3IdAmRWAQtjb25zdHJ1Y3RvcgEBVAQCZXYJAQJnbgEFAmRWAwkAAAIFAmV2BQJldgkAzAgCCQELU3RyaW5nRW50cnkCCQEBVAAFAVQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgEKc2V0TWFuYWdlcgECZ28EAmV2CQECZ24BBQJkVgMJAAACBQJldgUCZXYEAmdwCQDZBAEFAmdvAwkAAAIFAmdwBQJncAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVgAFAmdvBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBDmNvbmZpcm1NYW5hZ2VyAAQCY20JAQJnagAEAmdxAwkBCWlzRGVmaW5lZAEFAmNtBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJncQUCZ3EEAmdyAwkAAAIIBQJkVg9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmNtBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJncgUCZ3IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVUACQDYBAEJAQV2YWx1ZQEFAmNtCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFWAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWAQNwdXQCAmdzAmd0BAJndQkBAmJrAAQCZ3YJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmd1BQFDAgpXciBzdCBhZGRyBAJndwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZ3UFAUUCCldyIHNsIGFkZHIDCQBmAgAABQJncwkAAgECDldyb25nIHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUCZFYIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQCZ3gJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRWCHBheW1lbnRzAAAGYW1vdW50BAJneQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZFYIcGF5bWVudHMAAQZhbW91bnQEAmVPCQECZUgDBQJneAUCZ3kJALYCAQAAAwkAAAIFAmVPBQJlTwQCZ3oJAQJmaAoJAKUIAQgFAmRWBmNhbGxlcgkA2AQBCAUCZFYNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJkVghwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJkVghwYXltZW50cwAABmFtb3VudAkAkQMCCAUCZFYIcGF5bWVudHMAAQUCZ3MGBwYAAAIABAJkeAgFAmd6Al8yBAJnQQgFAmd6Al83BAJjTwgFAmd6Al85BAJkeQgFAmd6A18xMAQCZHoIBQJnegNfMTEEAmN3CAUCZ3oDXzEyBAJjeAgFAmd6A18xMwQCZGsJAPwHBAUCYU4CBGVtaXQJAMwIAgUCZHgFA25pbAUDbmlsAwkAAAIFAmRrBQJkawQCZ0IEAmFFBQJkawMJAAECBQJhRQIHQWRkcmVzcwQCZ0MFAmFFCQD8BwQFAmdDAgRlbWl0CQDMCAIFAmR4BQNuaWwFA25pbAUEdW5pdAMJAAACBQJnQgUCZ0IEAmdEAwkAZgIFAmR5AAAJAPwHBAUCZ3cCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjdwUCZHkFA25pbAUDbmlsAwkAAAIFAmdEBQJnRAQCZ0UDCQBmAgUCZHoAAAkA/AcEBQJndwIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmN4BQJkegUDbmlsBQNuaWwDCQAAAgUCZ0UFAmdFBAJnRgMFAmd0BAJnRwkA/AcEBQJndgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ0EFAmR4BQNuaWwDCQAAAgUCZ0cFAmdHBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRWBmNhbGxlcgUCZHgFAmdBBQNuaWwEAmdICQECZVADAAAAAAAABAJnZwgFAmdIAl8xBAJlRwgFAmdIAl8yBAJnaAkBAmVUAgUCZU8FAmVHAwkAAAIFAmdoBQJnaAkAzggCCQDOCAIFAmNPBQJnRgUCZ2cJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBC3B1dE9uZVRrblYyAgJmSgJndAQCZ0kKAAJmUgkA/AcEBQJhTgIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmZSAgdCb29sZWFuBQJmUgkAAgEJAKwCAgkAAwEFAmZSAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnSgMDAwkBAmFQAAYJAAACBQJiZQUBcQYJAAACBQJiZQUBcwYFAmdJBAJnSwkAzAgCAwMJAQEhAQUCZ0oGCQECZ2wBBQJkVgYJAQJhSwECIXB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRWCHBheW1lbnRzAAEGCQECYUsBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnSwUCZ0sEAmJhCQECYVMABAJjdwkAkQMCBQJiYQUBdwQCY3gJAJEDAgUCYmEFAXgEAmN2CQDZBAEJAJEDAgUCYmEFAXYEAmZOCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmEFAXkEAmZPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmEFAXoEAmN1AwkAAAIIBQJkVgZjYWxsZXIFBHRoaXMIBQJkVgxvcmlnaW5DYWxsZXIIBQJkVgZjYWxsZXIEAmZnCQEFdmFsdWUBCQCRAwIIBQJkVghwYXltZW50cwAABAJjcwkA2AQBCQEFdmFsdWUBCAUCZmcHYXNzZXRJZAQCY1kIBQJmZwZhbW91bnQEAmdMCQECZmwFBQJjWQUCY3MJAKUIAQUCY3UJANgEAQgFAmRWDXRyYW5zYWN0aW9uSWQGAwkAAAIFAmdMBQJnTAQCY3AIBQJnTAJfMwQCY08IBQJnTAJfMgQCZ00IBQJnTAJfMQQCZHgDAwkAZgIFAmZKAAAJAGYCBQJmSgUCZ00HCQECYUsBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZKBQNuaWwCAAUCZ00EAmd6CQD8BwQFAmFOAgRlbWl0CQDMCAIFAmR4BQNuaWwFA25pbAMJAAACBQJnegUCZ3oEAmdCBAJhRQUCZ3oDCQABAgUCYUUCB0FkZHJlc3MEAmdDBQJhRQkA/AcEBQJnQwIEZW1pdAkAzAgCBQJkeAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZ0IFAmdCBAJnRgMFAmd0BAJnRwkA/AcEBQJibQIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3YFAmR4BQNuaWwDCQAAAgUCZ0cFAmdHBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRWBmNhbGxlcgUCZHgFAmN2BQNuaWwEAmdhAwkAZgIFAmNwAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVIFAmNwCQDZBAEFAmNzBQNuaWwFA25pbAQCZ04DCQAAAgUEdGhpcwUCYVIJAJQKAgAAAAAEAmdPAwkAAAIIBQJmZwdhc3NldElkBQJiZwYHAwUCZ08JAJQKAgkBAS0BBQJjcAAACQCUCgIAAAkBAS0BBQJjcAQCZVEIBQJnTgJfMQQCZVIIBQJnTgJfMgQCZ1AJAQJlUAMFAmVRBQJlUgAABAJnZwgFAmdQAl8xBAJlRwgFAmdQAl8yCQCUCgIJAM4IAgkAzggCCQDOCAIFAmNPBQJnRgUCZ2EFAmdnBQJkeAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgEKcHV0Rm9yRnJlZQECZ1EDCQBmAgAABQJnUQkAAgECCldyb25nIHNscGcDCQECIT0CCQCQAwEIBQJkVghwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJnUgkBAmZoCgkApQgBCAUCZFYGY2FsbGVyCQDYBAEIBQJkVg10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmRWCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmRWCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJkVghwYXltZW50cwABBQJnUQcHBgAAAgAEAmNPCAUCZ1ICXzkEAmd4CQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkVghwYXltZW50cwAABmFtb3VudAQCZ3kJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRWCHBheW1lbnRzAAEGYW1vdW50BAJlTwkBAmVIAwUCZ3gFAmd5CQC2AgEAAAMJAAACBQJlTwUCZU8EAmdTCQECZVADAAAAAAAABAJnZwgFAmdTAl8xBAJlRwgFAmdTAl8yBAJnaAkBAmVUAgUCZU8FAmVHAwkAAAIFAmdoBQJnaAkAzggCBQJjTwUCZ2cJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBA2dldAAEAmRrCQECZmYBBQJkVgQCZ1QIBQJkawJfMQQCY04IBQJkawJfMgQCY1kIBQJkawJfMwQCY3MIBQJkawJfNAQCY08IBQJkawJfNQQCZXcJAPwHBAUCYU4CBGJ1cm4JAMwIAgUCY1kFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3MFAmNZBQNuaWwDCQAAAgUCZXcFAmV3BAJlTwkBAmVIAwkAtgIBAAAJALYCAQAACQC2AgEFAmNZBAJnVQkBAmVQAwkBAS0BBQJnVAkBAS0BBQJjTgAABAJnZwgFAmdVAl8xBAJlRwgFAmdVAl8yBAJnaAkBAmVUAgUCZU8FAmVHAwkAAAIFAmdoBQJnaAkAzggCBQJjTwUCZ2cJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBC2dldE9uZVRrblYyAgJmSQJmSgQCZ0kKAAJmUgkA/AcEBQJhTgIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmZSAgdCb29sZWFuBQJmUgkAAgEJAKwCAgkAAwEFAmZSAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnVgMDCQECYVAABgkAAAIFAmJlBQFzBgUCZ0kEAmdLCQDMCAIDAwkBASEBBQJnVgYJAQJnbAEFAmRWBgkBAmFLAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZFYIcGF5bWVudHMAAQYJAQJhSwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdLBQJnSwQCZ1cJAQJmSAYFAmZJBQJmSggFAmRWCHBheW1lbnRzCAUCZFYGY2FsbGVyCAUCZFYMb3JpZ2luQ2FsbGVyCAUCZFYNdHJhbnNhY3Rpb25JZAQCY08IBQJnVwJfMQQCZlQIBQJnVwJfMgkAlAoCBQJjTwUCZlQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBCnJlZnJlc2hETHAABAJnWAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQJhbAAABAJnWQMJAGcCCQBlAgUGaGVpZ2h0BQJnWAUCYW8FBHVuaXQJAQJhSwEJALkJAgkAzAgCCQCkAwEFAmFvCQDMCAICLyBibG9ja3MgaGF2ZSBub3QgcGFzc2VkIHNpbmNlIHRoZSBwcmV2aW91cyBjYWxsBQNuaWwCAAMJAAACBQJnWQUCZ1kEAmZhCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQJhawIBMAkBAmFNAQILaW52YWxpZCBkTHAEAmdaCQECZVADAAAAAAAABAJoYQgFAmdaAl8xBAJlRwgFAmdaAl8yBAJlUwMJAQIhPQIFAmZhBQJlRwUCaGEJAQJhSwECEm5vdGhpbmcgdG8gcmVmcmVzaAkAlAoCBQJlUwkApgMBBQJlRwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgETZ2V0T25lVGtuVjJSRUFET05MWQICZkkCaGIEAmJhCQECYVMABAJjdwkAkQMCBQJiYQUBdwQCY3gJAJEDAgUCYmEFAXgEAmN2CQCRAwIFAmJhBQF2BAJkRgkAzAgCCQC2AgEJAQJiRgEFAmN3CQDMCAIJALYCAQkBAmJGAQUCY3gFA25pbAQCZUYJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmN2AhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJiUwkBAmRFAQUCZEYEAmJSCQC4AgIFAmJTCQC8AgMJALYCAQUCaGIFAmJTBQJlRgQCaGMDCQAAAgUCZkkFAmN3AAADCQAAAgUCZkkFAmN4AAEJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCaGQJAQJlcwMFAmRGBQJoYwUCYlIEAmhlCQC4AgIJAJEDAgUCZEYFAmhjBQJoZAQCaGYJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC4AgIFAmhlBQFmBQNuaWwEAmhnCQECY24BBQJoZgQCZlMIBQJoZwJfMQQCY3AIBQJoZwJfMgkAlAoCBQNuaWwJAJQKAgUCZlMFAmNwAmRWARxnZXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJmSQJoYgQCYmEJAQJhUwAEAmN3CQCRAwIFAmJhBQF3BAJjeAkAkQMCBQJiYQUBeAQCY3YJAJEDAgUCYmEFAXYEAmNDCQECYkYBBQJjdwQCY0UJAQJiRgEFAmN4BAJoaAoAAmZSCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZkkJAMwIAgUCaGIFA25pbAUDbmlsAwkAAQIFAmZSAgooSW50LCBJbnQpBQJmUgkAAgEJAKwCAgkAAwEFAmZSAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJmUwgFAmhoAl8xBAJjcAgFAmhoAl8yBAJkawkBAmNxBAIABQJjdgUCaGIFBHRoaXMEAmNNCAUCZGsCXzEEAmNOCAUCZGsCXzIEAmhpCQBkAgUCY00FAmNOBAJmRwMJAAACBQJoaQAAAwkAAAIFAmZTAAAAAAkAAgECF2JvbnVzIGNhbGN1bGF0aW9uIGVycm9yCQBrAwkAZQIFAmZTBQJoaQUBYQUCaGkJAJQKAgUDbmlsCQCVCgMFAmZTBQJjcAUCZkcCZFYBCWdldE5vTGVzcwICaGoCaGsEAmRrCQECZmYBBQJkVgQCY00IBQJkawJfMQQCY04IBQJkawJfMgQCY1kIBQJkawJfMwQCY3MIBQJkawJfNAQCY08IBQJkawJfNQMJAGYCBQJoagUCY00JAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUCY00CAyA8IAkApAMBBQJoagMJAGYCBQJoawUCY04JAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQJjTgIDIDwgCQCkAwEFAmhrBAJlTwkBAmVIAwkAtgIBAAAJALYCAQAACQC2AgEFAmNZBAJobAkA/AcEBQJhTgIEYnVybgkAzAgCBQJjWQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjcwUCY1kFA25pbAMJAAACBQJobAUCaGwEAmhtCQECZVADCQEBLQEFAmNNCQEBLQEFAmNOAAAEAmdnCAUCaG0CXzEEAmVHCAUCaG0CXzIEAmdoCQECZVQCBQJlTwUCZUcDCQAAAgUCZ2gFAmdoCQDOCAIFAmNPBQJnZwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgENdW5zdGFrZUFuZEdldAECY28EAmhuAwkBAiE9AgkAkAMBCAUCZFYIcGF5bWVudHMAAAkAAgECDU5vIHBtbnRzIGV4cGQGAwkAAAIFAmhuBQJobgQCY2UJAQJhUwAEAmhvCQECYmsABAJnQQkA2QQBCQCRAwIFAmNlBQF2BAJocAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaG8FAUMCCldyIHN0IGFkZHIEAmVPCQECZUgDCQC2AgEAAAkAtgIBAAAJALYCAQAABAJocQkA/AcEBQJocAIHdW5zdGFrZQkAzAgCCQDYBAEFAmdBCQDMCAIFAmNvBQNuaWwFA25pbAMJAAACBQJocQUCaHEEAmRrCQECY3EECQDYBAEIBQJkVg10cmFuc2FjdGlvbklkCQDYBAEFAmdBBQJjbwgFAmRWBmNhbGxlcgQCY00IBQJkawJfMQQCY04IBQJkawJfMgQCY0EJAQ1wYXJzZUludFZhbHVlAQgFAmRrAl85BAJjTwgFAmRrA18xMAQCaHIDAwkBAmFQAAYJAAACBQJjQQUBcwkAAgEJAKwCAgIJQmxvY2tlZDogCQCkAwEFAmNBBgMJAAACBQJocgUCaHIEAmhzCQD8BwQFAmFOAgRidXJuCQDMCAIFAmNvBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdBBQJjbwUDbmlsAwkAAAIFAmhzBQJocwQCaHQJAQJlUAMJAQEtAQUCY00JAQEtAQUCY04AAAQCZ2cIBQJodAJfMQQCZUcIBQJodAJfMgQCZ2gJAQJlVAIFAmVPBQJlRwMJAAACBQJnaAUCZ2gJAM4IAgUCY08FAmdnCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJodQJodgJoawQCZ1YDCQECYVAABgkAAAIFAmJlBQFzBAJnSwkAzAgCAwkBASEBBQJnVgYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkVghwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdLBQJnSwQCZU8JAQJlSAMJALYCAQAACQC2AgEAAAkAtgIBAAAEAmhxCQD8BwQFAmJtAgd1bnN0YWtlCQDMCAIJANgEAQUCYmYJAMwIAgUCaHUFA25pbAUDbmlsAwkAAAIFAmhxBQJocQQCaHcJAQJjcQQJANgEAQgFAmRWDXRyYW5zYWN0aW9uSWQJANgEAQUCYmYFAmh1CAUCZFYGY2FsbGVyBAJjTQgFAmh3Al8xBAJjTggFAmh3Al8yBAJjTwgFAmh3A18xMAQCaHgJAMwIAgMJAGcCBQJjTQUCaHYGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaHYFA25pbAIACQDMCAIDCQBnAgUCY04FAmhrBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaGsFA25pbAIABQNuaWwDCQAAAgUCaHgFAmh4BAJobAkA/AcEBQJhTgIEYnVybgkAzAgCBQJodQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiZgUCaHUFA25pbAMJAAACBQJobAUCaGwEAmh5CQECZVADCQEBLQEFAmNNCQEBLQEFAmNOAAAEAmdnCAUCaHkCXzEEAmVHCAUCaHkCXzIEAmdoCQECZVQCBQJlTwUCZUcDCQAAAgUCZ2gFAmdoCQDOCAIFAmNPBQJnZwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgEVdW5zdGFrZUFuZEdldE9uZVRrblYyAwJodQJmSQJmSgQCZ0kKAAJmUgkA/AcEBQJhTgIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmZSAgdCb29sZWFuBQJmUgkAAgEJAKwCAgkAAwEFAmZSAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnVgMDCQECYVAABgkAAAIFAmJlBQFzBgUC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bAkBAmNQDQUCY3IFAmJOBQJjUQUCY1IFAmNTBQJjVAUCaEoFAmNVBQJjVgYHAAACAAJkVgEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmNyAmhLAmN0AmhKBAJkawkBAmNxBAUCY3IFAmhLBQJjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQUCaEoJAJQKAgUDbmlsCQCcCgoIBQJkawJfMQgFAmRrAl8yCAUCZGsCXzMIBQJkawJfNAgFAmRrAl81CAUCZGsCXzYIBQJkawJfNwkApgMBCAUCZGsCXzgIBQJkawJfOQgFAmRrA18xMAJkVgEOZ2V0RmVlUkVBRE9OTFkACQCUCgIFA25pbAUCYWoBAmhMAQJoTQAEAmhOBAJhRQkBAmdpAAMJAAECBQJhRQIKQnl0ZVZlY3RvcgQCZ20FAmFFBQJnbQMJAAECBQJhRQIEVW5pdAgFAmhMD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJhRQUCaEwDCQABAgUCYUUCBU9yZGVyBAJlVwUCYUUEAmhPCQECYVEABAJoUAkBAmVWAQUCZVcEAmhRCQD0AwMIBQJlVwlib2R5Qnl0ZXMJAJEDAggFAmVXBnByb29mcwAACAUCZVcPc2VuZGVyUHVibGljS2V5BAJoUgkA9AMDCAUCZVcJYm9keUJ5dGVzCQCRAwIIBQJlVwZwcm9vZnMAAQUCaE8DAwMFAmhQBQJoUQcFAmhSBwYJAQJhegMFAmhQBQJoUQUCaFIDCQABAgUCYUUCFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJkSQUCYUUEAmhTCQD2AwEJAQV2YWx1ZQEIBQJkSQZzY3JpcHQEAmhUCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYU4JAQJheAAEAmhVCQDxBwEFBHRoaXMDAwkAAAIFAmhUBQJoUwkBAiE9AgUCaFUFAmhTBwYJAPQDAwgFAmhMCWJvZHlCeXRlcwkAkQMCCAUCaEwGcHJvb2ZzAAAFAmhOCQD0AwMIBQJoTAlib2R5Qnl0ZXMJAJEDAggFAmhMBnByb29mcwAABQJoTrsY4Cc=", "chainId": 84, "height": 2351163, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8XY2ED8nhenPGS2ywpsoY5S9ncXhf8era6TthXFigtdC Next: D3HqXfxmoJK1aYh6j8DmK6VQ4Ev4jvdMm6Djso6Xqcos Diff:
OldNewDifferences
459459 let dQ = fraction(dP, dP, f)
460460 let dR = fraction(dQ, dP, f)
461461 let dS = fraction(dR, f, dL)
462- fraction((dM + fraction(dS, g, f)), dP, (fraction(dN, dP, f) + fraction(h, dS, f)))
462+ fraction((dM + fraction(dS, g, f)), dP, (fraction(dN, dP, f) + fraction(h, dS, f)), CEILING)
463463 }
464464
465465 func dT (dU,dV) = if (dU._2)
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 = 1
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)
462- fraction((dM + fraction(dS, g, f)), dP, (fraction(dN, dP, f) + fraction(h, dS, f)))
462+ fraction((dM + fraction(dS, g, f)), dP, (fraction(dN, dP, f) + fraction(h, dS, f)), CEILING)
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) = {
504504 let ek = g
505505 let dG = dF[0]
506506 let dH = dF[1]
507507 let el = parseBigIntValue(l)
508508 let dJ = (parseBigIntValue(aO) * el)
509509 let dI = (dG + dH)
510510 if ((dI == e))
511511 then e
512512 else {
513513 let dK = (dJ * ek)
514514 let dL = (((dG * dH) * ek) * ek)
515515 let em = ((dK * dI) / el)
516516 let en = (dK - el)
517517 let eo = (ek + f)
518518 func dT (dU,ep) = {
519519 let eq = dU
520520 let dP = eq._1
521521 let ei = eq._2
522522 if ((ei != unit))
523523 then dU
524524 else {
525525 let dS = (((dP * dP) * dP) / dL)
526526 let dW = (((em + (dS * ek)) * dP) / (((en * dP) / el) + (eo * dS)))
527527 let dY = S((dW - value(dP)))
528528 if ((f >= dY))
529529 then $Tuple2(dW, ep)
530530 else $Tuple2(dW, unit)
531531 }
532532 }
533533
534534 let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
535535 let er = {
536536 let eb = dZ
537537 let ec = size(eb)
538538 let ed = $Tuple2(dI, unit)
539539 func ee (ef,eg) = if ((eg >= ec))
540540 then ef
541541 else dT(ef, eb[eg])
542542
543543 func eh (ef,eg) = if ((eg >= ec))
544544 then ef
545545 else throw("List size exceeds 15")
546546
547547 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)
548548 }
549549 let dP = er._1
550550 let ei = er._2
551551 if ((ei != unit))
552552 then dP
553553 else throw(("D calculation error, D = " + toString(dP)))
554554 }
555555 }
556556
557557
558558 func es (dF,dV,et) = {
559559 let ek = g
560560 let eu = dF[if ((dV == 0))
561561 then 1
562562 else 0]
563563 let el = parseBigIntValue(l)
564564 let dJ = (parseBigIntValue(aO) * el)
565565 let dI = eu
566566 let dK = (dJ * ek)
567567 let ev = (((((et * et) / (eu * ek)) * et) * el) / (dK * ek))
568568 let ew = ((dI + ((et * el) / dK)) - et)
569569 func dT (dU,ep) = {
570570 let ex = dU
571571 let ey = ex._1
572572 let ei = ex._2
573573 if ((ei != unit))
574574 then dU
575575 else {
576576 let ez = (((ey * ey) + ev) / ((g * ey) + ew))
577577 let eA = S((ez - value(ey)))
578578 if ((f >= eA))
579579 then $Tuple2(ez, ep)
580580 else $Tuple2(ez, unit)
581581 }
582582 }
583583
584584 let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
585585 let eB = {
586586 let eb = dZ
587587 let ec = size(eb)
588588 let ed = $Tuple2(et, unit)
589589 func ee (ef,eg) = if ((eg >= ec))
590590 then ef
591591 else dT(ef, eb[eg])
592592
593593 func eh (ef,eg) = if ((eg >= ec))
594594 then ef
595595 else throw("List size exceeds 15")
596596
597597 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)
598598 }
599599 let ey = eB._1
600600 let ei = eB._2
601601 if ((ei != unit))
602602 then ey
603603 else throw(("Y calculation error, Y = " + toString(ey)))
604604 }
605605
606606
607607 func eC (eD,eE,eF) = {
608608 let eG = fraction(dE([eD, eE]), c, eF)
609609 if ((eF == e))
610610 then e
611611 else eG
612612 }
613613
614614
615615 func eH (eI,eJ,eK) = {
616616 let eL = (toBigInt(bF(aY(bg))) - eI)
617617 let eM = (toBigInt(bF(aY(bh))) - eJ)
618618 let eN = (toBigInt(value(assetInfo(bf)).quantity) - eK)
619619 let eO = eC(eL, eM, eN)
620620 eO
621621 }
622622
623623
624624 func eP (eQ,eR,eK) = {
625625 let eL = (bF(aY(bg)) + eQ)
626626 let eM = (bF(aY(bh)) + eR)
627627 let eN = (value(assetInfo(bf)).quantity + eK)
628628 let eG = eC(toBigInt(eL), toBigInt(eM), toBigInt(eN))
629629 let eS = [IntegerEntry(al, height), StringEntry(ak, toString(eG))]
630630 $Tuple2(eS, eG)
631631 }
632632
633633
634634 func eT (eU,eG) = if ((eG >= eU))
635635 then true
636636 else aK("updated DLp lower than current DLp")
637637
638638
639639 func eV (eW) = {
640640 let eX = eW.amount
641641 let eY = fraction(eW.amount, eW.price, a, FLOOR)
642642 let eZ = if ((eW.orderType == Buy))
643643 then $Tuple2(eX, -(eY))
644644 else $Tuple2(-(eX), eY)
645645 let eQ = eZ._1
646646 let eR = eZ._2
647647 if (if (if (aP())
648648 then true
649649 else (be == r))
650650 then true
651651 else (be == s))
652652 then throw("Admin blocked")
653653 else if (if ((eW.assetPair.amountAsset != bg))
654654 then true
655655 else (eW.assetPair.priceAsset != bh))
656656 then throw("Wr assets")
657657 else {
658658 let fa = parseBigIntValue(getStringValue(this, ak))
659659 let fb = eP(eQ, eR, 0)
660660 let fc = fb._1
661661 let fd = fb._2
662662 let fe = (fd >= fa)
663663 fe
664664 }
665665 }
666666
667667
668668 func ff (dV) = if ((size(dV.payments) != 1))
669669 then throw("1 pmnt exp")
670670 else {
671671 let fg = value(dV.payments[0])
672672 let cs = value(fg.assetId)
673673 let cY = fg.amount
674674 let dk = cq(toBase58String(dV.transactionId), toBase58String(cs), cY, dV.caller)
675675 let cM = dk._1
676676 let cN = dk._2
677677 let cA = parseIntValue(dk._9)
678678 let cO = dk._10
679679 if (if (aP())
680680 then true
681681 else (cA == s))
682682 then throw(("Admin blocked: " + toString(cA)))
683683 else $Tuple5(cM, cN, cY, cs, cO)
684684 }
685685
686686
687687 func fh (fi,ac,fj,fk,bN,cV,cW,cX,cY,cZ) = {
688688 let dk = cP(ac, bN, value(fj).amount, value(fj).assetId, value(fk).amount, value(fk).assetId, fi, (ac == ""), cV, cW, cX, cY, cZ)
689689 let cA = parseIntValue(dk._8)
690690 if (if (if (aP())
691691 then true
692692 else (cA == q))
693693 then true
694694 else (cA == s))
695695 then throw(("Blocked:" + toString(cA)))
696696 else dk
697697 }
698698
699699
700700 func fl (fm,cs,cu,ac,fn) = {
701701 let ba = aS()
702702 let cw = ba[w]
703703 let cx = ba[x]
704704 let cv = ba[v]
705705 let de = parseIntValue(ba[y])
706706 let df = parseIntValue(ba[z])
707707 let eN = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
708708 let fo = if ((eN > e))
709709 then true
710710 else throw("initial deposit requires all coins")
711711 if ((fo == fo))
712712 then {
713713 let cC = bF(cw)
714714 let cE = bF(cx)
715715 let fp = if ((ac == ""))
716716 then $Tuple2(cC, cE)
717717 else if ((cs == cw))
718718 then if ((fm > cC))
719719 then throw("invalid payment amount")
720720 else $Tuple2((cC - fm), cE)
721721 else if ((cs == cx))
722722 then if ((fm > cE))
723723 then throw("invalid payment amount")
724724 else $Tuple2(cC, (cE - fm))
725725 else throw("wrong pmtAssetId")
726726 let fq = fp._1
727727 let fr = fp._2
728728 let fs = if ((cs == cw))
729729 then $Tuple2(fm, 0)
730730 else if ((cs == cx))
731731 then $Tuple2(0, fm)
732732 else throw("invalid payment")
733733 let ft = fs._1
734734 let fu = fs._2
735735 let fv = if (fn)
736736 then $Tuple3(cn(ft)._1, cn(fu)._1, cn(fm)._2)
737737 else $Tuple3(ft, fu, 0)
738738 let fw = fv._1
739739 let fx = fv._2
740740 let cp = fv._3
741741 let fy = (fq + fw)
742742 let fz = (fr + fx)
743743 let bS = dE([toBigInt(fq), toBigInt(fr)])
744744 let bR = dE([toBigInt(fy), toBigInt(fz)])
745745 let fA = if ((bR > bS))
746746 then true
747747 else throw()
748748 if ((fA == fA))
749749 then {
750750 let fB = fraction(eN, (bR - bS), bS, FLOOR)
751751 let cH = K(bH(H(fz, df), H(fy, de)), a)
752752 let dD = [IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH), StringEntry(aa(cu, ac), bq(ft, fu, toInt(fB), cH, 0, 0, height, lastBlock.timestamp, 0, 0))]
753753 let fC = fraction(fr, a, fq)
754754 let fD = fraction(fm, a, (fC + a))
755755 let fE = (fm - fD)
756756 let fF = fraction(eN, toBigInt(fE), toBigInt(fr))
757757 let fG = toInt(fraction((fB - fF), b, fF))
758758 $Tuple4(toInt(fB), dD, cp, fG)
759759 }
760760 else throw("Strict value is not equal to itself.")
761761 }
762762 else throw("Strict value is not equal to itself.")
763763 }
764764
765765
766766 func fH (fI,fJ,fK,fi,fL,fM) = {
767767 let ba = aS()
768768 let cv = ba[v]
769769 let cw = ba[w]
770770 let cx = ba[x]
771771 let fN = parseIntValue(ba[y])
772772 let fO = parseIntValue(ba[z])
773773 let fP = ba[u]
774774 let cu = if ((fi == bp))
775775 then fL
776776 else fi
777777 let fg = value(fK[0])
778778 let cs = value(fg.assetId)
779779 let cY = fg.amount
780780 let eO = eH(e, e, e)
781781 if ((eO == eO))
782782 then {
783783 let cr = toBase58String(fM)
784784 if ((cv != toBase58String(cs)))
785785 then throw("Wrong LP")
786786 else {
787787 let cC = bF(cw)
788788 let cE = bF(cx)
789789 let fQ = {
790790 let fR = invoke(this, "getOneTknV2READONLY", [fI, cY], nil)
791791 if ($isInstanceOf(fR, "(Int, Int)"))
792792 then fR
793793 else throw(($getType(fR) + " couldn't be cast to (Int, Int)"))
794794 }
795795 if ((fQ == fQ))
796796 then {
797797 let cp = fQ._2
798798 let fS = fQ._1
799799 let fT = if (if ((fJ > 0))
800800 then (fJ > fS)
801801 else false)
802802 then aK(makeString(["amount to receive is less than ", toString(fJ)], ""))
803803 else fS
804804 let fU = if ((fI == cw))
805805 then $Tuple4(fT, 0, ((cC - fT) - cp), cE)
806806 else if ((fI == cx))
807807 then $Tuple4(0, fT, cC, ((cE - fT) - cp))
808808 else throw("invalid out asset id")
809809 let fV = fU._1
810810 let fW = fU._2
811811 let fy = fU._3
812812 let fz = fU._4
813813 let fX = bH(H(fz, fO), H(fy, fN))
814814 let fY = K(fX, a)
815815 let fZ = if ((fI == "WAVES"))
816816 then unit
817817 else fromBase58String(fI)
818818 let ga = if ((cp > 0))
819819 then [ScriptTransfer(aR, cp, fZ)]
820820 else nil
821821 let cO = ([ScriptTransfer(cu, fT, fZ), StringEntry(ad(toString(cu), cr), bB(fV, fW, cY, fY, height, lastBlock.timestamp)), IntegerEntry(W(), fY), IntegerEntry(X(height, lastBlock.timestamp), fY)] ++ ga)
822822 if ((cO == cO))
823823 then {
824824 let gb = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
825825 if ((gb == gb))
826826 then {
827827 let gc = {
828828 let gd = if ((this == aR))
829829 then 0
830830 else cp
831831 let ge = if ((aW(fI) == bg))
832832 then true
833833 else false
834834 if (ge)
835835 then $Tuple2(-((fS + gd)), 0)
836836 else $Tuple2(0, -((fS + gd)))
837837 }
838838 let eQ = gc._1
839839 let eR = gc._2
840840 let gf = eP(eQ, eR, 0)
841841 let gg = gf._1
842842 let eG = gf._2
843843 let gh = eT(eO, eG)
844844 if ((gh == gh))
845845 then $Tuple2((cO ++ gg), fT)
846846 else throw("Strict value is not equal to itself.")
847847 }
848848 else throw("Strict value is not equal to itself.")
849849 }
850850 else throw("Strict value is not equal to itself.")
851851 }
852852 else throw("Strict value is not equal to itself.")
853853 }
854854 }
855855 else throw("Strict value is not equal to itself.")
856856 }
857857
858858
859859 func gi () = {
860860 let aE = getString(U())
861861 if ($isInstanceOf(aE, "String"))
862862 then {
863863 let dI = aE
864864 fromBase58String(dI)
865865 }
866866 else if ($isInstanceOf(aE, "Unit"))
867867 then unit
868868 else throw("Match error")
869869 }
870870
871871
872872 func gj () = {
873873 let aE = getString(V())
874874 if ($isInstanceOf(aE, "String"))
875875 then {
876876 let dI = aE
877877 fromBase58String(dI)
878878 }
879879 else if ($isInstanceOf(aE, "Unit"))
880880 then unit
881881 else throw("Match error")
882882 }
883883
884884
885885 let gk = throw("Permission denied")
886886
887887 func gl (dV) = {
888888 let aE = gi()
889889 if ($isInstanceOf(aE, "ByteVector"))
890890 then {
891891 let gm = aE
892892 (dV.callerPublicKey == gm)
893893 }
894894 else if ($isInstanceOf(aE, "Unit"))
895895 then (dV.caller == this)
896896 else throw("Match error")
897897 }
898898
899899
900900 func gn (dV) = {
901901 let aE = gi()
902902 if ($isInstanceOf(aE, "ByteVector"))
903903 then {
904904 let gm = aE
905905 if ((dV.callerPublicKey == gm))
906906 then true
907907 else gk
908908 }
909909 else if ($isInstanceOf(aE, "Unit"))
910910 then if ((dV.caller == this))
911911 then true
912912 else gk
913913 else throw("Match error")
914914 }
915915
916916
917917 @Callable(dV)
918918 func constructor (T) = {
919919 let ev = gn(dV)
920920 if ((ev == ev))
921921 then [StringEntry(T(), T)]
922922 else throw("Strict value is not equal to itself.")
923923 }
924924
925925
926926
927927 @Callable(dV)
928928 func setManager (go) = {
929929 let ev = gn(dV)
930930 if ((ev == ev))
931931 then {
932932 let gp = fromBase58String(go)
933933 if ((gp == gp))
934934 then [StringEntry(V(), go)]
935935 else throw("Strict value is not equal to itself.")
936936 }
937937 else throw("Strict value is not equal to itself.")
938938 }
939939
940940
941941
942942 @Callable(dV)
943943 func confirmManager () = {
944944 let cm = gj()
945945 let gq = if (isDefined(cm))
946946 then true
947947 else throw("No pending manager")
948948 if ((gq == gq))
949949 then {
950950 let gr = if ((dV.callerPublicKey == value(cm)))
951951 then true
952952 else throw("You are not pending manager")
953953 if ((gr == gr))
954954 then [StringEntry(U(), toBase58String(value(cm))), DeleteEntry(V())]
955955 else throw("Strict value is not equal to itself.")
956956 }
957957 else throw("Strict value is not equal to itself.")
958958 }
959959
960960
961961
962962 @Callable(dV)
963963 func put (gs,gt) = {
964964 let gu = bk()
965965 let gv = valueOrErrorMessage(addressFromString(gu[C]), "Wr st addr")
966966 let gw = valueOrErrorMessage(addressFromString(gu[E]), "Wr sl addr")
967967 if ((0 > gs))
968968 then throw("Wrong slippage")
969969 else if ((size(dV.payments) != 2))
970970 then throw("2 pmnts expd")
971971 else {
972972 let gx = toBigInt(value(dV.payments[0]).amount)
973973 let gy = toBigInt(value(dV.payments[1]).amount)
974974 let eO = eH(gx, gy, toBigInt(0))
975975 if ((eO == eO))
976976 then {
977977 let gz = fh(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gs, true, false, true, 0, "")
978978 let dx = gz._2
979979 let gA = gz._7
980980 let cO = gz._9
981981 let dy = gz._10
982982 let dz = gz._11
983983 let cw = gz._12
984984 let cx = gz._13
985985 let dk = invoke(aN, "emit", [dx], nil)
986986 if ((dk == dk))
987987 then {
988988 let gB = {
989989 let aE = dk
990990 if ($isInstanceOf(aE, "Address"))
991991 then {
992992 let gC = aE
993993 invoke(gC, "emit", [dx], nil)
994994 }
995995 else unit
996996 }
997997 if ((gB == gB))
998998 then {
999999 let gD = if ((dy > 0))
10001000 then invoke(gw, "put", nil, [AttachedPayment(cw, dy)])
10011001 else nil
10021002 if ((gD == gD))
10031003 then {
10041004 let gE = if ((dz > 0))
10051005 then invoke(gw, "put", nil, [AttachedPayment(cx, dz)])
10061006 else nil
10071007 if ((gE == gE))
10081008 then {
10091009 let gF = if (gt)
10101010 then {
10111011 let gG = invoke(gv, "stake", nil, [AttachedPayment(gA, dx)])
10121012 if ((gG == gG))
10131013 then nil
10141014 else throw("Strict value is not equal to itself.")
10151015 }
10161016 else [ScriptTransfer(dV.caller, dx, gA)]
10171017 let gH = eP(0, 0, 0)
10181018 let gg = gH._1
10191019 let eG = gH._2
10201020 let gh = eT(eO, eG)
10211021 if ((gh == gh))
10221022 then ((cO ++ gF) ++ gg)
10231023 else throw("Strict value is not equal to itself.")
10241024 }
10251025 else throw("Strict value is not equal to itself.")
10261026 }
10271027 else throw("Strict value is not equal to itself.")
10281028 }
10291029 else throw("Strict value is not equal to itself.")
10301030 }
10311031 else throw("Strict value is not equal to itself.")
10321032 }
10331033 else throw("Strict value is not equal to itself.")
10341034 }
10351035 }
10361036
10371037
10381038
10391039 @Callable(dV)
10401040 func putOneTknV2 (fJ,gt) = {
10411041 let gI = {
10421042 let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10431043 if ($isInstanceOf(fR, "Boolean"))
10441044 then fR
10451045 else throw(($getType(fR) + " couldn't be cast to Boolean"))
10461046 }
10471047 let gJ = if (if (if (aP())
10481048 then true
10491049 else (be == q))
10501050 then true
10511051 else (be == s))
10521052 then true
10531053 else gI
10541054 let gK = [if (if (!(gJ))
10551055 then true
10561056 else gl(dV))
10571057 then true
10581058 else aK("put operation is blocked by admin"), if ((size(dV.payments) == 1))
10591059 then true
10601060 else aK("exactly 1 payment are expected")]
10611061 if ((gK == gK))
10621062 then {
10631063 let ba = aS()
10641064 let cw = ba[w]
10651065 let cx = ba[x]
10661066 let cv = fromBase58String(ba[v])
10671067 let fN = parseIntValue(ba[y])
10681068 let fO = parseIntValue(ba[z])
10691069 let cu = if ((dV.caller == this))
10701070 then dV.originCaller
10711071 else dV.caller
10721072 let fg = value(dV.payments[0])
10731073 let cs = toBase58String(value(fg.assetId))
10741074 let cY = fg.amount
10751075 let gL = fl(cY, cs, toString(cu), toBase58String(dV.transactionId), true)
10761076 if ((gL == gL))
10771077 then {
10781078 let cp = gL._3
10791079 let cO = gL._2
10801080 let gM = gL._1
10811081 let dx = if (if ((fJ > 0))
10821082 then (fJ > gM)
10831083 else false)
10841084 then aK(makeString(["amount to receive is less than ", toString(fJ)], ""))
10851085 else gM
10861086 let gz = invoke(aN, "emit", [dx], nil)
10871087 if ((gz == gz))
10881088 then {
10891089 let gB = {
10901090 let aE = gz
10911091 if ($isInstanceOf(aE, "Address"))
10921092 then {
10931093 let gC = aE
10941094 invoke(gC, "emit", [dx], nil)
10951095 }
10961096 else unit
10971097 }
10981098 if ((gB == gB))
10991099 then {
11001100 let gF = if (gt)
11011101 then {
11021102 let gG = invoke(bm, "stake", nil, [AttachedPayment(cv, dx)])
11031103 if ((gG == gG))
11041104 then nil
11051105 else throw("Strict value is not equal to itself.")
11061106 }
11071107 else [ScriptTransfer(dV.caller, dx, cv)]
11081108 let ga = if ((cp > 0))
11091109 then [ScriptTransfer(aR, cp, fromBase58String(cs))]
11101110 else nil
11111111 let gN = if ((this == aR))
11121112 then $Tuple2(0, 0)
11131113 else {
11141114 let gO = if ((fg.assetId == bg))
11151115 then true
11161116 else false
11171117 if (gO)
11181118 then $Tuple2(-(cp), 0)
11191119 else $Tuple2(0, -(cp))
11201120 }
11211121 let eQ = gN._1
11221122 let eR = gN._2
11231123 let gP = eP(eQ, eR, 0)
11241124 let gg = gP._1
11251125 let eG = gP._2
11261126 $Tuple2((((cO ++ gF) ++ ga) ++ gg), dx)
11271127 }
11281128 else throw("Strict value is not equal to itself.")
11291129 }
11301130 else throw("Strict value is not equal to itself.")
11311131 }
11321132 else throw("Strict value is not equal to itself.")
11331133 }
11341134 else throw("Strict value is not equal to itself.")
11351135 }
11361136
11371137
11381138
11391139 @Callable(dV)
11401140 func putForFree (gQ) = if ((0 > gQ))
11411141 then throw("Wrong slpg")
11421142 else if ((size(dV.payments) != 2))
11431143 then throw("2 pmnts expd")
11441144 else {
11451145 let gR = fh(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gQ, false, false, true, 0, "")
11461146 let cO = gR._9
11471147 let gx = toBigInt(value(dV.payments[0]).amount)
11481148 let gy = toBigInt(value(dV.payments[1]).amount)
11491149 let eO = eH(gx, gy, toBigInt(0))
11501150 if ((eO == eO))
11511151 then {
11521152 let gS = eP(0, 0, 0)
11531153 let gg = gS._1
11541154 let eG = gS._2
11551155 let gh = eT(eO, eG)
11561156 if ((gh == gh))
11571157 then (cO ++ gg)
11581158 else throw("Strict value is not equal to itself.")
11591159 }
11601160 else throw("Strict value is not equal to itself.")
11611161 }
11621162
11631163
11641164
11651165 @Callable(dV)
11661166 func get () = {
11671167 let dk = ff(dV)
11681168 let gT = dk._1
11691169 let cN = dk._2
11701170 let cY = dk._3
11711171 let cs = dk._4
11721172 let cO = dk._5
11731173 let ew = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
11741174 if ((ew == ew))
11751175 then {
11761176 let eO = eH(toBigInt(0), toBigInt(0), toBigInt(cY))
11771177 let gU = eP(-(gT), -(cN), 0)
11781178 let gg = gU._1
11791179 let eG = gU._2
11801180 let gh = eT(eO, eG)
11811181 if ((gh == gh))
11821182 then (cO ++ gg)
11831183 else throw("Strict value is not equal to itself.")
11841184 }
11851185 else throw("Strict value is not equal to itself.")
11861186 }
11871187
11881188
11891189
11901190 @Callable(dV)
11911191 func getOneTknV2 (fI,fJ) = {
11921192 let gI = {
11931193 let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11941194 if ($isInstanceOf(fR, "Boolean"))
11951195 then fR
11961196 else throw(($getType(fR) + " couldn't be cast to Boolean"))
11971197 }
11981198 let gV = if (if (aP())
11991199 then true
12001200 else (be == s))
12011201 then true
12021202 else gI
12031203 let gK = [if (if (!(gV))
12041204 then true
12051205 else gl(dV))
12061206 then true
12071207 else aK("get operation is blocked by admin"), if ((size(dV.payments) == 1))
12081208 then true
12091209 else aK("exactly 1 payment are expected")]
12101210 if ((gK == gK))
12111211 then {
12121212 let gW = fH(fI, fJ, dV.payments, dV.caller, dV.originCaller, dV.transactionId)
12131213 let cO = gW._1
12141214 let fT = gW._2
12151215 $Tuple2(cO, fT)
12161216 }
12171217 else throw("Strict value is not equal to itself.")
12181218 }
12191219
12201220
12211221
12221222 @Callable(dV)
12231223 func refreshDLp () = {
12241224 let gX = valueOrElse(getInteger(al), 0)
12251225 let gY = if (((height - gX) >= ao))
12261226 then unit
12271227 else aK(makeString([toString(ao), " blocks have not passed since the previous call"], ""))
12281228 if ((gY == gY))
12291229 then {
12301230 let fa = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ak), "0")), aM("invalid dLp"))
12311231 let gZ = eP(0, 0, 0)
12321232 let ha = gZ._1
12331233 let eG = gZ._2
12341234 let eS = if ((fa != eG))
12351235 then ha
12361236 else aK("nothing to refresh")
12371237 $Tuple2(eS, toString(eG))
12381238 }
12391239 else throw("Strict value is not equal to itself.")
12401240 }
12411241
12421242
12431243
12441244 @Callable(dV)
12451245 func getOneTknV2READONLY (fI,hb) = {
12461246 let ba = aS()
12471247 let cw = ba[w]
12481248 let cx = ba[x]
12491249 let cv = ba[v]
12501250 let dF = [toBigInt(bF(cw)), toBigInt(bF(cx))]
12511251 let eF = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
12521252 let bS = dE(dF)
12531253 let bR = (bS - fraction(toBigInt(hb), bS, eF))
12541254 let hc = if ((fI == cw))
12551255 then 0
12561256 else if ((fI == cx))
12571257 then 1
12581258 else throw("invalid out asset id")
12591259 let hd = es(dF, hc, bR)
12601260 let he = (dF[hc] - hd)
12611261 let hf = max([0, toInt((he - f))])
12621262 let hg = cn(hf)
12631263 let fS = hg._1
12641264 let cp = hg._2
12651265 $Tuple2(nil, $Tuple2(fS, cp))
12661266 }
12671267
12681268
12691269
12701270 @Callable(dV)
12711271 func getOneTknV2WithBonusREADONLY (fI,hb) = {
12721272 let ba = aS()
12731273 let cw = ba[w]
12741274 let cx = ba[x]
12751275 let cv = ba[v]
12761276 let cC = bF(cw)
12771277 let cE = bF(cx)
12781278 let hh = {
12791279 let fR = invoke(this, "getOneTknV2READONLY", [fI, hb], nil)
12801280 if ($isInstanceOf(fR, "(Int, Int)"))
12811281 then fR
12821282 else throw(($getType(fR) + " couldn't be cast to (Int, Int)"))
12831283 }
12841284 let fS = hh._1
12851285 let cp = hh._2
12861286 let dk = cq("", cv, hb, this)
12871287 let cM = dk._1
12881288 let cN = dk._2
12891289 let hi = (cM + cN)
12901290 let fG = if ((hi == 0))
12911291 then if ((fS == 0))
12921292 then 0
12931293 else throw("bonus calculation error")
12941294 else fraction((fS - hi), a, hi)
12951295 $Tuple2(nil, $Tuple3(fS, cp, fG))
12961296 }
12971297
12981298
12991299
13001300 @Callable(dV)
13011301 func getNoLess (hj,hk) = {
13021302 let dk = ff(dV)
13031303 let cM = dk._1
13041304 let cN = dk._2
13051305 let cY = dk._3
13061306 let cs = dk._4
13071307 let cO = dk._5
13081308 if ((hj > cM))
13091309 then throw(((("Failed: " + toString(cM)) + " < ") + toString(hj)))
13101310 else if ((hk > cN))
13111311 then throw(((("Failed: " + toString(cN)) + " < ") + toString(hk)))
13121312 else {
13131313 let eO = eH(toBigInt(0), toBigInt(0), toBigInt(cY))
13141314 let hl = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
13151315 if ((hl == hl))
13161316 then {
13171317 let hm = eP(-(cM), -(cN), 0)
13181318 let gg = hm._1
13191319 let eG = hm._2
13201320 let gh = eT(eO, eG)
13211321 if ((gh == gh))
13221322 then (cO ++ gg)
13231323 else throw("Strict value is not equal to itself.")
13241324 }
13251325 else throw("Strict value is not equal to itself.")
13261326 }
13271327 }
13281328
13291329
13301330
13311331 @Callable(dV)
13321332 func unstakeAndGet (co) = {
13331333 let hn = if ((size(dV.payments) != 0))
13341334 then throw("No pmnts expd")
13351335 else true
13361336 if ((hn == hn))
13371337 then {
13381338 let ce = aS()
13391339 let ho = bk()
13401340 let gA = fromBase58String(ce[v])
13411341 let hp = valueOrErrorMessage(addressFromString(ho[C]), "Wr st addr")
13421342 let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
13431343 let hq = invoke(hp, "unstake", [toBase58String(gA), co], nil)
13441344 if ((hq == hq))
13451345 then {
13461346 let dk = cq(toBase58String(dV.transactionId), toBase58String(gA), co, dV.caller)
13471347 let cM = dk._1
13481348 let cN = dk._2
13491349 let cA = parseIntValue(dk._9)
13501350 let cO = dk._10
13511351 let hr = if (if (aP())
13521352 then true
13531353 else (cA == s))
13541354 then throw(("Blocked: " + toString(cA)))
13551355 else true
13561356 if ((hr == hr))
13571357 then {
13581358 let hs = invoke(aN, "burn", [co], [AttachedPayment(gA, co)])
13591359 if ((hs == hs))
13601360 then {
13611361 let ht = eP(-(cM), -(cN), 0)
13621362 let gg = ht._1
13631363 let eG = ht._2
13641364 let gh = eT(eO, eG)
13651365 if ((gh == gh))
13661366 then (cO ++ gg)
13671367 else throw("Strict value is not equal to itself.")
13681368 }
13691369 else throw("Strict value is not equal to itself.")
13701370 }
13711371 else throw("Strict value is not equal to itself.")
13721372 }
13731373 else throw("Strict value is not equal to itself.")
13741374 }
13751375 else throw("Strict value is not equal to itself.")
13761376 }
13771377
13781378
13791379
13801380 @Callable(dV)
13811381 func unstakeAndGetNoLess (hu,hv,hk) = {
13821382 let gV = if (aP())
13831383 then true
13841384 else (be == s)
13851385 let gK = [if (!(gV))
13861386 then true
13871387 else throw("get operation is blocked by admin"), if ((size(dV.payments) == 0))
13881388 then true
13891389 else throw("no payments are expected")]
13901390 if ((gK == gK))
13911391 then {
13921392 let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
13931393 let hq = invoke(bm, "unstake", [toBase58String(bf), hu], nil)
13941394 if ((hq == hq))
13951395 then {
13961396 let hw = cq(toBase58String(dV.transactionId), toBase58String(bf), hu, dV.caller)
13971397 let cM = hw._1
13981398 let cN = hw._2
13991399 let cO = hw._10
14001400 let hx = [if ((cM >= hv))
14011401 then true
14021402 else throw(makeString(["amount asset amount to receive is less than ", toString(hv)], "")), if ((cN >= hk))
14031403 then true
14041404 else throw(makeString(["price asset amount to receive is less than ", toString(hk)], ""))]
14051405 if ((hx == hx))
14061406 then {
14071407 let hl = invoke(aN, "burn", [hu], [AttachedPayment(bf, hu)])
14081408 if ((hl == hl))
14091409 then {
14101410 let hy = eP(-(cM), -(cN), 0)
14111411 let gg = hy._1
14121412 let eG = hy._2
14131413 let gh = eT(eO, eG)
14141414 if ((gh == gh))
14151415 then (cO ++ gg)
14161416 else throw("Strict value is not equal to itself.")
14171417 }
14181418 else throw("Strict value is not equal to itself.")
14191419 }
14201420 else throw("Strict value is not equal to itself.")
14211421 }
14221422 else throw("Strict value is not equal to itself.")
14231423 }
14241424 else throw("Strict value is not equal to itself.")
14251425 }
14261426
14271427
14281428
14291429 @Callable(dV)
14301430 func unstakeAndGetOneTknV2 (hu,fI,fJ) = {
14311431 let gI = {
14321432 let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
14331433 if ($isInstanceOf(fR, "Boolean"))
14341434 then fR
14351435 else throw(($getType(fR) + " couldn't be cast to Boolean"))
14361436 }
14371437 let gV = if (if (aP())
14381438 then true
14391439 else (be == s))
14401440 then true
14411441 else gI
14421442 let gK = [if (if (!(gV))
14431443 then true
14441444 else gl(dV))
14451445 then true
14461446 else aK("get operation is blocked by admin"), if ((size(dV.payments) == 0))
14471447 then true
14481448 else aK("no payments are expected")]
14491449 if ((gK == gK))
14501450 then {
14511451 let ce = aS()
14521452 let ho = bk()
14531453 let gA = fromBase58String(ce[v])
14541454 let hp = valueOrErrorMessage(addressFromString(ho[C]), "Wr st addr")
14551455 let hq = invoke(hp, "unstake", [toBase58String(gA), hu], nil)
14561456 if ((hq == hq))
14571457 then {
14581458 let hz = fH(fI, fJ, [AttachedPayment(gA, hu)], dV.caller, dV.originCaller, dV.transactionId)
14591459 let cO = hz._1
14601460 let fT = hz._2
14611461 $Tuple2(cO, fT)
14621462 }
14631463 else throw("Strict value is not equal to itself.")
14641464 }
14651465 else throw("Strict value is not equal to itself.")
14661466 }
14671467
14681468
14691469
14701470 @Callable(dV)
14711471 func putOneTknV2WithBonusREADONLY (hA,hB) = {
14721472 let ba = aS()
14731473 let cw = ba[w]
14741474 let cx = ba[x]
14751475 let cv = ba[v]
14761476 let hC = fl(hA, hB, "", "", true)
14771477 let fB = hC._1
14781478 let cO = hC._2
14791479 let cp = hC._3
14801480 let fG = hC._4
14811481 $Tuple2(nil, $Tuple3(fB, cp, fG))
14821482 }
14831483
14841484
14851485
14861486 @Callable(dV)
14871487 func putOneTknV2WithoutTakeFeeREADONLY (hA,hB) = {
14881488 let ba = aS()
14891489 let cw = ba[w]
14901490 let cx = ba[x]
14911491 let cv = ba[v]
14921492 let hD = fl(hA, hB, "", "", false)
14931493 let fB = hD._1
14941494 let cO = hD._2
14951495 let cp = hD._3
14961496 let fG = hD._4
14971497 $Tuple2(nil, $Tuple3(fB, cp, fG))
14981498 }
14991499
15001500
15011501
15021502 @Callable(dV)
15031503 func activate (hE,hF) = if ((toString(dV.caller) != toString(aN)))
15041504 then throw("denied")
15051505 else $Tuple2([StringEntry(ae(), hE), StringEntry(af(), hF)], "success")
15061506
15071507
15081508
15091509 @Callable(dV)
15101510 func setS (hG,hr) = if ((toString(dV.caller) != aG(this, ah())))
15111511 then gk
15121512 else [StringEntry(hG, hr)]
15131513
15141514
15151515
15161516 @Callable(dV)
15171517 func setI (hG,hr) = if ((toString(dV.caller) != aG(this, ah())))
15181518 then gk
15191519 else [IntegerEntry(hG, hr)]
15201520
15211521
15221522
15231523 @Callable(dV)
15241524 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aS())
15251525
15261526
15271527
15281528 @Callable(dV)
15291529 func getAccBalanceWrapperREADONLY (bG) = $Tuple2(nil, bF(bG))
15301530
15311531
15321532
15331533 @Callable(dV)
15341534 func calcPricesWrapperREADONLY (bY,bZ,cd) = {
15351535 let hH = cc(bY, bZ, cd)
15361536 $Tuple2(nil, [toString(hH[0]), toString(hH[1]), toString(hH[2])])
15371537 }
15381538
15391539
15401540
15411541 @Callable(dV)
15421542 func fromX18WrapperREADONLY (L,hI) = $Tuple2(nil, K(parseBigIntValue(L), hI))
15431543
15441544
15451545
15461546 @Callable(dV)
15471547 func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
15481548
15491549
15501550
15511551 @Callable(dV)
15521552 func calcPriceBigIntWrapperREADONLY (bI,bJ) = $Tuple2(nil, toString(bH(parseBigIntValue(bI), parseBigIntValue(bJ))))
15531553
15541554
15551555
15561556 @Callable(dV)
15571557 func estimatePutOperationWrapperREADONLY (cr,bN,cQ,cR,cS,cT,hJ,cU,cV) = $Tuple2(nil, cP(cr, bN, cQ, cR, cS, cT, hJ, cU, cV, true, false, 0, ""))
15581558
15591559
15601560
15611561 @Callable(dV)
15621562 func estimateGetOperationWrapperREADONLY (cr,hK,ct,hJ) = {
15631563 let dk = cq(cr, hK, ct, addressFromStringValue(hJ))
15641564 $Tuple2(nil, $Tuple10(dk._1, dk._2, dk._3, dk._4, dk._5, dk._6, dk._7, toString(dk._8), dk._9, dk._10))
15651565 }
15661566
15671567
15681568
15691569 @Callable(dV)
15701570 func getFeeREADONLY () = $Tuple2(nil, aj)
15711571
15721572
15731573 @Verifier(hL)
15741574 func hM () = {
15751575 let hN = {
15761576 let aE = gi()
15771577 if ($isInstanceOf(aE, "ByteVector"))
15781578 then {
15791579 let gm = aE
15801580 gm
15811581 }
15821582 else if ($isInstanceOf(aE, "Unit"))
15831583 then hL.senderPublicKey
15841584 else throw("Match error")
15851585 }
15861586 let aE = hL
15871587 if ($isInstanceOf(aE, "Order"))
15881588 then {
15891589 let eW = aE
15901590 let hO = aQ()
15911591 let hP = eV(eW)
15921592 let hQ = sigVerify(eW.bodyBytes, eW.proofs[0], eW.senderPublicKey)
15931593 let hR = sigVerify(eW.bodyBytes, eW.proofs[1], hO)
15941594 if (if (if (hP)
15951595 then hQ
15961596 else false)
15971597 then hR
15981598 else false)
15991599 then true
16001600 else az(hP, hQ, hR)
16011601 }
16021602 else if ($isInstanceOf(aE, "SetScriptTransaction"))
16031603 then {
16041604 let dI = aE
16051605 let hS = blake2b256(value(dI.script))
16061606 let hT = fromBase64String(value(getString(aN, ax())))
16071607 let hU = scriptHash(this)
16081608 if (if ((hT == hS))
16091609 then (hU != hS)
16101610 else false)
16111611 then true
16121612 else sigVerify(hL.bodyBytes, hL.proofs[0], hN)
16131613 }
16141614 else sigVerify(hL.bodyBytes, hL.proofs[0], hN)
16151615 }
16161616

github/deemru/w8io/169f3d6 
151.73 ms