tx · 9EYiqip5kJkDj7k2suxKRTS2fMNGnBtj8LxujoDHmYYR

3P879DU3ycr2XWorD7rR5gSpn1CpYgHjgFT:  -0.03800000 Waves

2023.02.21 11:43 [3524720] smart account 3P879DU3ycr2XWorD7rR5gSpn1CpYgHjgFT > SELF 0.00000000 Waves

{ "type": 13, "id": "9EYiqip5kJkDj7k2suxKRTS2fMNGnBtj8LxujoDHmYYR", "fee": 3800000, "feeAssetId": null, "timestamp": 1676969058407, "version": 2, "chainId": 87, "sender": "3P879DU3ycr2XWorD7rR5gSpn1CpYgHjgFT", "senderPublicKey": "CYepWwywogUxF4txWu6NGvFXPdVh6QnwYSCZHFq1mf3D", "proofs": [ "2xAYreu4NAwk46VrGbvj3M9K4keST3F4jU3aU3bg61AKigjEYp4C69JEBZQnuDC4jU1756WWGezetx5rmkwUYMPv" ], "script": "base64:BgLiLwgCEgUKAwEEARIHCgUBBAEIARIDCgEIEgASBAoCAQQSAwoBARIECgIBBBIECgIIARIECgIIARIECgIIARIFCgMBCAESABIECgIBARIDCgEBEgUKAwEBARIECgIICBIAEgASAwoBCBIFCgMBAQESBAoCAQESBAoCCAESBAoCCAgSCwoJCAEBAgECCAQEEgYKBAgIAQgSABIDCgEBEgMKAQESBAoCCAEiCmxQZGVjaW1hbHMiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgt3YXZlc1N0cmluZyIDU0VQIgpQb29sQWN0aXZlIg9Qb29sUHV0RGlzYWJsZWQiE1Bvb2xNYXRjaGVyRGlzYWJsZWQiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiDWlkeFBvb2xTdGF0dXMiEGlkeFBvb2xMUEFzc2V0SWQiDWlkeEFtdEFzc2V0SWQiD2lkeFByaWNlQXNzZXRJZCIOaWR4QW10QXNzZXREY20iEGlkeFByaWNlQXNzZXREY20iDmlkeElBbXRBc3NldElkIhBpZHhJUHJpY2VBc3NldElkIg1pZHhMUEFzc2V0RGNtIhJpZHhQb29sQW10QXNzZXRBbXQiFGlkeFBvb2xQcmljZUFzc2V0QW10IhFpZHhQb29sTFBBc3NldEFtdCIZaWR4RmFjdG9yeVN0YWtpbmdDb250cmFjdCIaaWR4RmFjdG9yeVNsaXBwYWdlQ29udHJhY3QiBXRvWDE4IgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0Igt0b1gxOEJpZ0ludCIHZnJvbVgxOCIDdmFsIg9yZXN1bHRTY2FsZU11bHQiDGZyb21YMThSb3VuZCIFcm91bmQiB3RvU2NhbGUiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCIMc3dhcENvbnRyYWN0IgJmYyIDbXBrIgRwbXBrIgJwbCICcGgiAWgiCXRpbWVzdGFtcCIDcGF1Igt1c2VyQWRkcmVzcyIEdHhJZCIDZ2F1IgJhYSICcGEiBmtleUZlZSIKZmVlRGVmYXVsdCIDZmVlIgZrZXlLTHAiFWtleUtMcFJlZnJlc2hlZEhlaWdodCISa2V5S0xwUmVmcmVzaERlbGF5IhZrTHBSZWZyZXNoRGVsYXlEZWZhdWx0Ig9rTHBSZWZyZXNoRGVsYXkiEGtleUZhY3RvcnlDb25maWciDWtleU1hdGNoZXJQdWIiKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzIhNwb29sQ29udHJhY3RBZGRyZXNzIg1rZXlQb29sQ29uZmlnIglpQW10QXNzZXQiC2lQcmljZUFzc2V0Ih9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkIgxiYXNlQXNzZXRTdHIiE2tleUFsbFBvb2xzU2h1dGRvd24iDWtleVBvb2xXZWlnaHQiD2NvbnRyYWN0QWRkcmVzcyIWa2V5QWxsb3dlZExwU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIPdGhyb3dPcmRlckVycm9yIgpvcmRlclZhbGlkIg5vcmRlclZhbGlkSW5mbyILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIPZ2V0U3RyaW5nT3JGYWlsIgdhZGRyZXNzIgNrZXkiDGdldEludE9yRmFpbCIIdGhyb3dFcnIiA21zZyIGZm10RXJyIg9mYWN0b3J5Q29udHJhY3QiE2ZlZUNvbGxlY3RvckFkZHJlc3MiBWluRmVlIgFAIgZvdXRGZWUiEGlzR2xvYmFsU2h1dGRvd24iE2dldE1hdGNoZXJQdWJPckZhaWwiDWdldFBvb2xDb25maWciCGFtdEFzc2V0IgpwcmljZUFzc2V0IgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwODQ2OTg2MzUiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIhBnZXRGYWN0b3J5Q29uZmlnIg9zdGFraW5nQ29udHJhY3QiEHNsaXBwYWdlQ29udHJhY3QiEWRhdGFQdXRBY3Rpb25JbmZvIg1pbkFtdEFzc2V0QW10Ig9pblByaWNlQXNzZXRBbXQiCG91dExwQW10IgVwcmljZSIdc2xpcHBhZ2VUb2xlcmFuY2VQYXNzZWRCeVVzZXIiFXNsaXBwYWdlVG9sZXJhbmNlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIhJzbGlwYWdlQW10QXNzZXRBbXQiFHNsaXBhZ2VQcmljZUFzc2V0QW10IhFkYXRhR2V0QWN0aW9uSW5mbyIOb3V0QW10QXNzZXRBbXQiEG91dFByaWNlQXNzZXRBbXQiB2luTHBBbXQiDWdldEFjY0JhbGFuY2UiB2Fzc2V0SWQiD2NhbGNQcmljZUJpZ0ludCIIcHJBbXRYMTgiCGFtQW10WDE4IhRjYWxjUHJpY2VCaWdJbnRSb3VuZCIQcHJpdmF0ZUNhbGNQcmljZSIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10Ig5hbXRBc3NldEFtdFgxOCIQcHJpY2VBc3NldEFtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyILYW10QXNzZXREY20iDXByaWNlQXNzZXREY20iCHByaWNlWDE4IghscEFtdFgxOCITbHBQcmljZUluQW1Bc3NldFgxOCITbHBQcmljZUluUHJBc3NldFgxOCIPY2FsY3VsYXRlUHJpY2VzIgZwcmljZXMiFGVzdGltYXRlR2V0T3BlcmF0aW9uIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10IglscEFzc2V0SWQiCWFtQXNzZXRJZCIJcHJBc3NldElkIgpwb29sU3RhdHVzIgpscEVtaXNzaW9uIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiDWxwRW1pc3Npb25YMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIUZXN0aW1hdGVQdXRPcGVyYXRpb24iEXNsaXBwYWdlVG9sZXJhbmNlIgxpbkFtQXNzZXRBbXQiC2luQW1Bc3NldElkIgxpblByQXNzZXRBbXQiC2luUHJBc3NldElkIgppc0V2YWx1YXRlIgZlbWl0THAiDGFtQXNzZXRJZFN0ciIMcHJBc3NldElkU3RyIgtpQW10QXNzZXRJZCINaVByaWNlQXNzZXRJZCIOaW5BbUFzc2V0SWRTdHIiDmluUHJBc3NldElkU3RyIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgNyZXMiC3NsaXBwYWdlWDE4IhRzbGlwcGFnZVRvbGVyYW5jZVgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiILY29tbW9uU3RhdGUiB2NhbGNLTHAiDWFtb3VudEJhbGFuY2UiDHByaWNlQmFsYW5jZSIQYW1vdW50QmFsYW5jZVgxOCIPcHJpY2VCYWxhbmNlWDE4Igp1cGRhdGVkS0xwIg5jYWxjQ3VycmVudEtMcCIQYW1vdW50QXNzZXREZWx0YSIPcHJpY2VBc3NldERlbHRhIhRscEFzc2V0RW1pc3Npb25EZWx0YSISYW1vdW50QXNzZXRCYWxhbmNlIhFwcmljZUFzc2V0QmFsYW5jZSIPbHBBc3NldEVtaXNzaW9uIgpjdXJyZW50S0xwIhJyZWZyZXNoS0xwSW50ZXJuYWwiF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhIhZwcmljZUFzc2V0QmFsYW5jZURlbHRhIgdhY3Rpb25zIhJ2YWxpZGF0ZVVwZGF0ZWRLTHAiBm9sZEtMcCIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDIxNTQxMjE3NTMiA2tMcCINJHQwMjIxOTMyMjI5MyINdW51c2VkQWN0aW9ucyIGa0xwTmV3Igxpc09yZGVyVmFsaWQiBGluZm8iCWNvbW1vbkdldCIBaSIDcG10IgZwbXRBbXQiCWNvbW1vblB1dCIKYW1Bc3NldFBtdCIKcHJBc3NldFBtdCIGZXN0UHV0IgRlbWl0IgZhbW91bnQiB2VtaXRJbnYiDWVtaXRJbnZMZWdhY3kiByRtYXRjaDAiFWxlZ2FjeUZhY3RvcnlDb250cmFjdCIHdGFrZUZlZSIJZmVlQW1vdW50Ig9jYWxjUHV0T25lVG9rZW4iEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIgZpc0V2YWwiEGFtb3VudEJhbGFuY2VSYXciD3ByaWNlQmFsYW5jZVJhdyIUcGF5bWVudEluQW1vdW50QXNzZXQiDSR0MDI1NDA2MjU2OTkiEGFtb3VudEJhbGFuY2VPbGQiD3ByaWNlQmFsYW5jZU9sZCINJHQwMjU3MDMyNTg1MiIUYW1vdW50QXNzZXRBbW91bnRSYXciE3ByaWNlQXNzZXRBbW91bnRSYXciDSR0MDI1OTg0MjYwNDgiDXBheW1lbnRBbW91bnQiEGFtb3VudEJhbGFuY2VOZXciD3ByaWNlQmFsYW5jZU5ldyILcHJpY2VOZXdYMTgiCHByaWNlTmV3Ig5wYXltZW50QmFsYW5jZSIUcGF5bWVudEJhbGFuY2VCaWdJbnQiDHN1cHBseUJpZ0ludCILY2hlY2hTdXBwbHkiDWRlcG9zaXRCaWdJbnQiC2lzc3VlQW1vdW50IgtwcmljZU9sZFgxOCIIcHJpY2VPbGQiBGxvc3MiDSR0MDI3NzI5Mjc4OTYiB2JhbGFuY2UiD2lzc3VlQW1vdW50Qm90aCIPY2FsY0dldE9uZVRva2VuIgpvdXRBc3NldElkIgZjaGVja3MiEG91dEluQW1vdW50QXNzZXQiDWJhbGFuY2VCaWdJbnQiGG91dEluQW1vdW50QXNzZXREZWNpbWFscyIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiCm91dEJhbGFuY2UiEG91dEJhbGFuY2VCaWdJbnQiDnJlZGVlbWVkQmlnSW50IglhbW91bnRSYXciDSR0MDI5OTc0MzAwMzAiC3RvdGFsQW1vdW50Ig0kdDAzMDAzNDMwMjYwIgtvdXRBbUFtb3VudCILb3V0UHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IhhhbW91bnRCb3RoSW5QYXltZW50QXNzZXQiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0Iglpc01hbmFnZXIiAnBrIgttdXN0TWFuYWdlciICcGQiDWNsZWFuQW1vdW50SW4iCWlzUmV2ZXJzZSINZmVlUG9vbEFtb3VudCINJHQwMzE5NzczMjI4MiIIYXNzZXRPdXQiB2Fzc2V0SW4iEnBvb2xBc3NldEluQmFsYW5jZSITcG9vbEFzc2V0T3V0QmFsYW5jZSIJYW1vdW50T3V0IgRvbGRLIgRuZXdLIgZjaGVja0siDGFtb3VudE91dE1pbiIJYWRkcmVzc1RvIgtzd2FwQ29udGFjdCIIY2hlY2tNaW4iF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgtjaGVja0NhbGxlciIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iD3Nob3VsZEF1dG9TdGFrZSIEYW1JZCIEcHJJZCIMc2xpcHBhZ2VBSW52IgxzbGlwcGFnZVBJbnYiCmxwVHJhbnNmZXIiC3NscFN0YWtlSW52Ig0kdDAzNzE2NjM3NjI4IhFyZWZyZXNoS0xwQWN0aW9ucyIRaXNVcGRhdGVkS0xwVmFsaWQiC21heFNsaXBwYWdlIg0kdDAzODE5MDM4MjU1IgxtaW5PdXRBbW91bnQiCWF1dG9TdGFrZSIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDWlzUHV0RGlzYWJsZWQiB3BheW1lbnQiDSR0MDM5NDQzMzk1OTUiBWJvbnVzIhNlbWl0QW1vdW50RXN0aW1hdGVkIgplbWl0QW1vdW50IghzdGFrZUludiIHc2VuZEZlZSINJHQwNDAxODE0MDM3OCINJHQwNDAzODE0MDQ4OSINJHQwNDA3OTU0MDk1MiINb3V0QXNzZXRJZFN0ciINaXNHZXREaXNhYmxlZCINJHQwNDE4Mzc0MTk5MCIPYW1vdW50RXN0aW1hdGVkIgdidXJuSW52Ig1hc3NldFRyYW5zZmVyIg0kdDA0MjQ5MDQyNzM3IhBmZWVBbW91bnRGb3JDYWxjIg0kdDA0Mjc0MDQyODQ4Ig0kdDA0MzEwNTQzMjYxIg11bnN0YWtlQW1vdW50Igp1bnN0YWtlSW52Ig0kdDA0NDE2NjQ0MzE3Ig0kdDA0NDgxMjQ1MDU5Ig0kdDA0NTA2MjQ1MTcwIglvdXRBbXRBbXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5Ig0kdDA0NjExNjQ2MTk4IhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0Ig0kdDA0NzE0NzQ3MjI4Ig1jaGVja1BheW1lbnRzIg9jaGVja1Bvb2xTdGF0dXMiDSR0MDQ4MzU0NDg0MzUiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIMY2hlY2tBbW91bnRzIg0kdDA0OTczMDQ5ODExIgthbXRBc3NldFN0ciINcHJpY2VBc3NldFN0ciIYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ih1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCINJHQwNTA5OTg1MTA2MiIQa0xwVXBkYXRlQWN0aW9ucyIKYW10QXNzZXRJZCIMcHJpY2VBc3NldElkIg1wb29sTFBCYWxhbmNlIhJhY2NBbXRBc3NldEJhbGFuY2UiFGFjY1ByaWNlQXNzZXRCYWxhbmNlIgpwcmljZXNMaXN0Ig9scEFtdEFzc2V0U2hhcmUiEWxwUHJpY2VBc3NldFNoYXJlIgpwb29sV2VpZ2h0IgxjdXJQcmljZUNhbGMiDGFtQmFsYW5jZVJhdyIMcHJCYWxhbmNlUmF3Ig9hbUJhbGFuY2VSYXdYMTgiD3ByQmFsYW5jZVJhd1gxOCIQcGF5bWVudExwQXNzZXRJZCIMcGF5bWVudExwQW10IgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiDSR0MDU5NzI0NTk3OTMiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaHMAAWEACAABYgCAwtcvAAFjCQC2AgEAgMLXLwABZAkAtgIBAICAkLu61q3wDQABZQkAtgIBAAAAAWYJALYCAQAAAAFnCQC2AgEAAQABaAkAtgIBAAIAAWkCBVdBVkVTAAFqAgJfXwABawABAAFsAAIAAW0AAwABbgAEAAFvAAEAAXAAAgABcQADAAFyAAQAAXMABQABdAAGAAF1AAcAAXYACAABdwAJAAF4AAoAAXkAAQABegAC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ZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFSAgNJbnQFAmFSCQACAQkArAICCQADAQUCYVICGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAACYVMKAAJhUgkA/AcEBQJhTwIRZ2V0T3V0RmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhUgIDSW50BQJhUgkAAgEJAKwCAgkAAwEFAmFSAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQBAmFUAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhTwkBAmF4AAcBAmFVAAkA2QQBCQECYUgCBQJhTwkBAmFwAAECYVYABAJhVwkBAmFIAgUEdGhpcwkBAmFlAAQCYVgJAQJhSAIFBHRoaXMJAQJhZgAEAmF1CQECYUsCBQJhTwkBAmF2AQUCYVgEAmF0CQECYUsCBQJhTwkBAmF2AQUCYVcJALUJAgkBAmFIAgUCYU8JAQJhcwIJAKQDAQUCYXQJAKQDAQUCYXUFAWoBAmFZAQJhWgMJAAACBQJhWgUBaQUEdW5pdAkA2QQBBQJhWgECYmEBAmFaAwkAAAIFAmFaBQR1bml0BQFpCQDYBAEJAQV2YWx1ZQEFAmFaAQJiYgECYmMJAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJiYwUBbwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQFwCQDZBAEJAJEDAgUCYmMFAXEJAQJhWQEJAJEDAgUCYmMFAXIJAQJhWQEJAJEDAgUCYmMFAXMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYwUBdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQF1AAJiZAkBAmJiAQkBAmFWAAACYmUFAmJkAAJiZggFAmJlAl8xAAJiZwgFAmJlAl8yAAJiaAgFAmJlAl8zAAJiaQgFAmJlAl80AAJiaggFAmJlAl81AAJiawgFAmJlAl82AAJibAgFAmJlAl83AQJibQAJALUJAgkBAmFIAgUCYU8JAQJhbwAFAWoAAmJuCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYm0ABQFCAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAAJibwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmJtAAUBQwIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwECYnAKAmJxAmJyAmJzAmJ0AmJ1AmJ2AmJ3AmJ4AmJ5AmJ6CQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJicQkAzAgCCQCkAwEFAmJyCQDMCAIJAKQDAQUCYnMJAMwIAgkApAMBBQJidAkAzAgCCQCkAwEFAmJ1CQDMCAIJAKQDAQUCYnYJAMwIAgkApAMBBQJidwkAzAgCCQCkAwEFAmJ4CQDMCAIJAKQDAQUCYnkJAMwIAgkApAMBBQJiegUDbmlsBQFqAQJiQQYCYkICYkMCYkQCYnQCYncCYngJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiQgkAzAgCCQCkAwEFAmJDCQDMCAIJAKQDAQUCYkQJAMwIAgkApAMBBQJidAkAzAgCCQCkAwEFAmJ3CQDMCAIJAKQDAQUCYngFA25pbAUBagECYkUBAmJGAwkAAAIFAmJGAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJiRgECYkcCAmJIAmJJCQC8AgMFAmJIBQFkBQJiSQECYkoDAmJIAmJJAUwJAL0CBAUCYkgFAWQFAmJJBQFMAQJiSwQCYkwCYk0CYk4CYk8EAmJQCQEBRAIFAmJOBQJiTAQCYlEJAQFEAgUCYk8FAmJNCQECYkcCBQJiUQUCYlABAmJSAwJiTgJiTwJiUwQCYlQJAQJhVgAEAmJVCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlQFAXQEAmJWCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlQFAXUEAmJXCQECYksEBQJiVQUCYlYFAmJOBQJiTwQCYkkJAQFEAgUCYk4FAmJVBAJiSAkBAUQCBQJiTwUCYlYEAmJYCQEBRAIFAmJTBQFiBAJiWQkBAmJHAgUCYkkFAmJYBAJiWgkBAmJHAgUCYkgFAmJYCQDMCAIFAmJXCQDMCAIFAmJZCQDMCAIFAmJaBQNuaWwBAmNhAwJiTgJiTwJiUwQCY2IJAQJiUgMFAmJOBQJiTwUCYlMJAMwIAgkBAUgCCQCRAwIFAmNiAAAFAWIJAMwIAgkBAUgCCQCRAwIFAmNiAAEFAWIJAMwIAgkBAUgCCQCRAwIFAmNiAAIFAWIFA25pbAECY2MEAmNkAmNlAmNmAmFiBAJiVAkBAmFWAAQCY2cJAJEDAgUCYlQFAXEEAmNoCQCRAwIFAmJUBQFyBAJjaQkAkQMCBQJiVAUBcwQCYkwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdAQCYk0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdQQCY2oJAJEDAgUCYlQFAXAEAmNrCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCY2cJAKwCAgkArAICAgZBc3NldCAFAmNnAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQMJAQIhPQIFAmNnBQJjZQkAAgECFUludmFsaWQgYXNzZXQgcGFzc2VkLgQCY2wJAQJiRQEFAmNoBAJjbQkBAUQCBQJjbAUCYkwEAmNuCQECYkUBBQJjaQQCY28JAQFEAgUCY24FAmJNBAJjcAkBAmJHAgUCY28FAmNtBAJjcQkBAUgCBQJjcAUBYgQCY3IJAQFEAgUCY2YFAWIEAmNzCQEBRAIFAmNrBQFiBAJjdAkAvAIDBQJjbQUCY3IFAmNzBAJjdQkAvAIDBQJjbwUCY3IFAmNzBAJjdgkBAUsDBQJjdAUCYkwFBUZMT09SBAJjdwkBAUsDBQJjdQUCYk0FBUZMT09SBAJjeAMJAAACBQJjZAIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWIFAmN2AwkAAAIFAmNoAgVXQVZFUwUEdW5pdAkA2QQBBQJjaAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhYgUCY3cDCQAAAgUCY2kCBVdBVkVTBQR1bml0CQDZBAEFAmNpCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIJAKUIAQUCYWIFAmNkCQECYkEGBQJjdgUCY3cFAmNmBQJjcQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJjcQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjcQUDbmlsCQCcCgoFAmN2BQJjdwUCY2gFAmNpBQJjbAUCY24FAmNrBQJjcAUCY2oFAmN4AQJjeQkCY2QCY3oCY0ECY0ICY0MCY0QCYWICY0UCY0YEAmJUCQECYVYABAJjZwkA2QQBCQCRAwIFAmJUBQFxBAJjRwkAkQMCBQJiVAUBcgQCY0gJAJEDAgUCYlQFAXMEAmNJCQCRAwIFAmJUBQF2BAJjSgkAkQMCBQJiVAUBdwQCYlUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdAQCYlYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdQQCY2oJAJEDAgUCYlQFAXAEAmNrCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmNnCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmNnAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCY0sJANgEAQkBC3ZhbHVlT3JFbHNlAgUCY0IJANkEAQIFV0FWRVMEAmNMCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmNECQDZBAECBVdBVkVTAwMJAQIhPQIFAmNHBQJjSwYJAQIhPQIFAmNIBQJjTAkAAgECIkludmFsaWQgYW10IG9yIHByaWNlIGFzc2V0IHBhc3NlZC4EAmNsAwUCY0UJAQJiRQEFAmNHCQBlAgkBAmJFAQUCY0cFAmNBBAJjbgMFAmNFCQECYkUBBQJjSAkAZQIJAQJiRQEFAmNIBQJjQwQCY00JAQFEAgUCY0EFAmJVBAJjTgkBAUQCBQJjQwUCYlYEAmNPCQECYkcCBQJjTgUCY00EAmNtCQEBRAIFAmNsBQJiVQQCY28JAQFEAgUCY24FAmJWBAJjUAMJAAACBQJjawAABAJjcAUBZQQCY1EFAWUEAmJYCQB2BgkAuQICBQJjTQUCY04AAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFIAgUCYlgFAWIJAQFIAgUCY00FAmJVCQEBSAIFAmNOBQJiVgkBAmJHAgkAtwICBQJjbwUCY04JALcCAgUCY20FAmNNBQJjUQQCY3AJAQJiRwIFAmNvBQJjbQQCY1EJALwCAwkBAVIBCQC4AgIFAmNwBQJjTwUBZAUCY3AEAmNSCQEBRAIFAmN6BQFiAwMJAQIhPQIFAmNwBQFlCQC/AgIFAmNRBQJjUgcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCY1ECHiBleGNlZWRlZCB0aGUgcGFzc2VkIGxpbWl0IG9mIAkApgMBBQJjUgQCY3MJAQFEAgUCY2sFAWIEAmNTCQC9AgQFAmNNCQECYkoDBQJjbwUCY20FB0NFSUxJTkcFAWQFB0NFSUxJTkcEAmNUCQC9AgQFAmNOBQFkCQECYkoDBQJjbwUCY20FBUZMT09SBQdDRUlMSU5HBAJjVQMJAL8CAgUCY1MFAmNOCQCUCgIFAmNUBQJjTgkAlAoCBQJjTQUCY1MEAmNWCAUCY1UCXzEEAmNXCAUCY1UCXzIEAmJYCQC9AgQFAmNzBQJjVwUCY28FBUZMT09SCQCXCgUJAQFLAwUCYlgFAWIFBUZMT09SCQEBSwMFAmNWBQJiVQUHQ0VJTElORwkBAUsDBQJjVwUCYlYFB0NFSUxJTkcFAmNwBQJjUQQCY1gIBQJjUAJfMQQCY1kIBQJjUAJfMgQCY1oIBQJjUAJfMwQCY3EJAQFIAggFAmNQAl80BQFiBAJkYQkBAUgCCAUCY1ACXzUFAWIDCQBnAgAABQJjWAkAAgECNkludmFsaWQgY2FsY3VsYXRpb25zLiBMUCBjYWxjdWxhdGVkIGlzIGxlc3MgdGhhbiB6ZXJvLgQCZGIDCQEBIQEFAmNGAAAFAmNYBAJkYwkAZQIFAmNBBQJjWQQCZGQJAGUCBQJjQwUCY1oEAmRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmNxCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNxCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIFAmFiBQJjZAkBAmJwCgUCY1kFAmNaBQJkYgUCY3EFAmN6BQJkYQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZGMFAmRkBQNuaWwJAJ8KDQUCY1gFAmRiBQJjcQUCY2wFAmNuBQJjawUCY2cFAmNqBQJkZQUCZGMFAmRkBQJjQgUCY0QBAmRmAwJkZwJkaAJjawQCZGkJAQFHAgUCZGcJALYCAQUCYmsEAmRqCQEBRwIFAmRoCQC2AgEFAmJsBAJkawkAvAIDCQB2BgkAuQICBQJkaQUCZGoAAAkAtgIBAAUAAQASBQRET1dOBQFnBQJjawMJAAACBQJjawUBZgUBZgUCZGsBAmRsAwJkbQJkbgJkbwQCZHAJALgCAgkAtgIBCQECYkUBCQECYmEBBQJiaQUCZG0EAmRxCQC4AgIJALYCAQkBAmJFAQkBAmJhAQUCYmoFAmRuBAJkcgkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJoCHF1YW50aXR5BQJkbwQCZHMJAQJkZgMFAmRwBQJkcQUCZHIFAmRzAQJkdAMCZHUCZHYCZG8EAmRwCQBkAgkBAmJFAQkBAmJhAQUCYmkFAmR1BAJkcQkAZAIJAQJiRQEJAQJiYQEFAmJqBQJkdgQCZHIJAGQCCAkBBXZhbHVlAQkA7AcBBQJiaAhxdWFudGl0eQUCZG8EAmRrCQECZGYDCQC2AgEFAmRwCQC2AgEFAmRxCQC2AgEFAmRyBAJkdwkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYWsFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhagkApgMBBQJkawUDbmlsCQCUCgIFAmR3BQJkawECZHgCAmR5AmRrAwkAwAICBQJkawUCZHkGCQECYUwBCQC5CQIJAMwIAgIidXBkYXRlZCBLTHAgbG93ZXIgdGhhbiBjdXJyZW50IEtMcAkAzAgCCQCmAwEFAmR5CQDMCAIJAKYDAQUCZGsFA25pbAIBIAECZHoBAmRBBAJkcAkBAmJFAQkBAmJhAQUCYmkEAmRxCQECYkUBCQECYmEBBQJiagQCZEIIBQJkQQZhbW91bnQEAmRDCQBuBAgFAmRBBmFtb3VudAgFAmRBBXByaWNlBQFiBQVGTE9PUgQCZEQDCQAAAggFAmRBCW9yZGVyVHlwZQUDQnV5CQCUCgIFAmRCCQEBLQEFAmRDCQCUCgIJAQEtAQUCZEIFAmRDBAJkdQgFAmREAl8xBAJkdggFAmREAl8yAwMDCQECYVQABgkAAAIFAmJnBQFtBgkAAAIFAmJnBQFuCQACAQIcRXhjaGFuZ2Ugb3BlcmF0aW9ucyBkaXNhYmxlZAMDCQECIT0CCAgFAmRBCWFzc2V0UGFpcgthbW91bnRBc3NldAUCYmkGCQECIT0CCAgFAmRBCWFzc2V0UGFpcgpwcmljZUFzc2V0BQJiagkAAgECE1dyb25nIG9yZGVyIGFzc2V0cy4EAmRFCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQJhagIBMAkBAmFOAQILaW52YWxpZCBrTHAEAmRGCQECZHQDBQJkdQUCZHYAAAQCZEcIBQJkRgJfMQQCZEgIBQJkRgJfMgQCZEkJAMACAgUCZEgFAmRFBAJkSgkAuQkCCQDMCAICBGtMcD0JAMwIAgkApgMBBQJkRQkAzAgCAggga0xwTmV3PQkAzAgCCQCmAwEFAmRICQDMCAICFCBhbW91bnRBc3NldEJhbGFuY2U9CQDMCAIJAKQDAQUCZHAJAMwIAgITIHByaWNlQXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmRxCQDMCAICGSBhbW91bnRBc3NldEJhbGFuY2VEZWx0YT0JAMwIAgkApAMBBQJkdQkAzAgCAhggcHJpY2VBc3NldEJhbGFuY2VEZWx0YT0JAMwIAgkApAMBBQJkdgkAzAgCAgggaGVpZ2h0PQkAzAgCCQCkAwEFBmhlaWdodAUDbmlsAgAJAJQKAgUCZEkFAmRKAQJkSwECZEwDCQECIT0CCQCQAwEIBQJkTAhwYXltZW50cwABCQACAQIdZXhhY3RseSAxIHBheW1lbnQgaXMgZXhwZWN0ZWQEAmRNCQEFdmFsdWUBCQCRAwIIBQJkTAhwYXltZW50cwAABAJjZQkBBXZhbHVlAQgFAmRNB2Fzc2V0SWQEAmROCAUCZE0GYW1vdW50BAJjUAkBAmNjBAkA2AQBCAUCZEwNdHJhbnNhY3Rpb25JZAkA2AQBBQJjZQUCZE4IBQJkTAZjYWxsZXIEAmN2CAUCY1ACXzEEAmN3CAUCY1ACXzIEAmNqCQENcGFyc2VJbnRWYWx1ZQEIBQJjUAJfOQQCY3gIBQJjUANfMTADAwkBAmFUAAYJAAACBQJjagUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2oJAJcKBQUCY3YFAmN3BQJkTgUCY2UFAmN4AQJkTwMCZEwCY3oCY0YDCQECIT0CCQCQAwEIBQJkTAhwYXltZW50cwACCQACAQIfZXhhY3RseSAyIHBheW1lbnRzIGFyZSBleHBlY3RlZAQCZFAJAQV2YWx1ZQEJAJEDAggFAmRMCHBheW1lbnRzAAAEAmRRCQEFdmFsdWUBCQCRAwIIBQJkTAhwYXltZW50cwABBAJkUgkBAmN5CQkA2AQBCAUCZEwNdHJhbnNhY3Rpb25JZAUCY3oIBQJkUAZhbW91bnQIBQJkUAdhc3NldElkCAUCZFEGYW1vdW50CAUCZFEHYXNzZXRJZAkApQgBCAUCZEwGY2FsbGVyBwUCY0YEAmNqCQENcGFyc2VJbnRWYWx1ZQEIBQJkUgJfOAMDAwkBAmFUAAYJAAACBQJjagUBbAYJAAACBQJjagUBbgkAAgEJAKwCAgIsUHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2oFAmRSAQJkUwECZFQEAmRVCQD8BwQFAmFPAgRlbWl0CQDMCAIFAmRUBQNuaWwFA25pbAMJAAACBQJkVQUCZFUEAmRWBAJkVwUCZFUDCQABAgUCZFcCB0FkZHJlc3MEAmRYBQJkVwkA/AcEBQJkWAIEZW1pdAkAzAgCBQJkVAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZFYFAmRWBQJkVAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZFkCAmRUAmFpBAJkWgMJAAACBQJhaQAAAAAJAGsDBQJkVAUCYWkFAWIJAJQKAgkAZQIFAmRUBQJkWgUCZFoBAmVhBAJlYgJlYwJhYgJhYwQCZWQJAAACBQJhYwUEdW5pdAQCZWUJAQJiRQEJAQJiYQEFAmJpBAJlZgkBAmJFAQkBAmJhAQUCYmoEAmVnAwkAAAIFAmVjBQJiaQYDCQAAAgUCZWMFAmJqBwkBAmFMAQINaW52YWxpZCBhc3NldAQCZWgDBQJlZAkAlAoCBQJlZQUCZWYDBQJlZwkAlAoCCQBlAgUCZWUFAmViBQJlZgkAlAoCBQJlZQkAZQIFAmVmBQJlYgQCZWkIBQJlaAJfMQQCZWoIBQJlaAJfMgQCZWsDBQJlZwkAlAoCBQJlYgAACQCUCgIAAAUCZWIEAmVsCAUCZWsCXzEEAmVtCAUCZWsCXzIEAmRCCAkBAmRZAgUCZWwFAmFRAl8xBAJkQwgJAQJkWQIFAmVtBQJhUQJfMQQCZW4JAQJkWQIFAmViBQJhUQQCZW8IBQJlbgJfMQQCZFoIBQJlbgJfMgQCZXAJAGQCBQJlaQUCZEIEAmVxCQBkAgUCZWoFAmRDBAJlcgkBAmJHAgkBAUQCBQJlcQUCYmwJAQFEAgUCZXAFAmJrBAJlcwkBAUgCBQJlcgUBYgQCZXQDBQJlZwUCZWkFAmVqBAJldQkAtgIBBQJldAQCZXYJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiaAkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJiaAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmV3AwkAvwICBQJldgUBZgYJAQJhTAECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZXcFAmV3BAJleAkAtgIBBQJlbwQCZXkJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZXYJALgCAgkBCnNxcnRCaWdJbnQECQC3AgIFAWQJALoCAgkAuQICBQJleAUBZAUCZXUAEgASBQRET1dOBQFkBQFkBQNuaWwEAmRlAwUCZWQFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJlcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJlcwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWECCQClCAEJAQV2YWx1ZQEFAmFiCQDYBAEJAQV2YWx1ZQEFAmFjCQECYnAKBQJlbAUCZW0FAmV5BQJlcwAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmV6CQECYkcCCQEBRAIFAmVqBQJibAkBAUQCBQJlaQUCYmsEAmVBCQEBSAIFAmV6BQFiBAJlQgQCZUMDBQJlZwkAlAoCBQJlbAUCZWkJAJQKAgUCZW0FAmVqBAJkVAgFAmVDAl8xBAJlRAgFAmVDAl8yBAJlRQkAoAMBCQC8AgMFAmV2CQC2AgEJAGkCBQJkVAACCQC2AgEFAmVECQBrAwkAZQIFAmV5BQJlRQUBYgUCZUUJAJcKBQUCZXkFAmRlBQJkWgUCZUIFAmVnCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlRgUCZUcCZW8CZWMCYWICYWMEAmVkCQAAAgUCYWMFBHVuaXQEAmJUCQECYVYABAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF0BAJiVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF1BAJlSAkAzAgCAwkAAAIFAmVjBQJiaAYJAQJhTAECEGludmFsaWQgbHAgYXNzZXQFA25pbAMJAAACBQJlSAUCZUgEAmVJAwkAAAIFAmVHBQJiaQYDCQAAAgUCZUcFAmJqBwkBAmFMAQINaW52YWxpZCBhc3NldAQCZUoDBQJlSQkAtgIBCQECYkUBCQECYmEBBQJiaQkAtgIBCQECYkUBCQECYmEBBQJiagQCZUsDBQJlSQUCYlUFAmJWBAJlTAkBAmJFAQkBAmJhAQUCYmkEAmVNCQECYkUBCQECYmEBBQJiagQCZU4DBQJlSQUCZUwFAmVNBAJlTwkAtgIBBQJlTgQCZXYJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiaAkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJiaAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmVQCQC2AgEFAmVvBAJlUQkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJlSgkAuAICBQFkCQB2BgkAuAICBQFkCQC6AgIJALkCAgUCZVAFAWQFAmV2ABIFAWgAAAASBQRET1dOBQFkBQNuaWwEAmVSCQECZFkCBQJlUQUCYVMEAmVTCAUCZVICXzEEAmRaCAUCZVICXzIEAmVUAwUCZUkJAJYKBAUCZVMAAAkAZQIFAmVMBQJlUQUCZU0JAJYKBAAABQJlUwUCZUwJAGUCBQJlTQUCZVEEAmVVCAUCZVQCXzEEAmVWCAUCZVQCXzIEAmVXCAUCZVQCXzMEAmVYCAUCZVQCXzQEAmVyCQECYkcCCQEBRAIFAmVYBQJibAkBAUQCBQJlVwUCYmsEAmVzCQEBSAIFAmVyBQFiBAJkZQMFAmVkBQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFkAgkApQgBCQEFdmFsdWUBBQJhYgkA2AQBCQEFdmFsdWUBBQJhYwkBAmJBBgUCZVUFAmVWBQJlbwUCZXMFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZXMFA25pbAQCZXoJAQJiRwIJAQFEAgUCZU0FAmJsCQEBRAIFAmVMBQJiawQCZUEJAQFIAgUCZXoFAWIEAmVCBAJlWQkAaAIJAKADAQkAvAIDBQJlSgUCZVAFAmV2AAIJAGsDCQBlAgUCZVMFAmVZBQFiBQJlWQkAlwoFBQJlUwUCZGUFAmRaBQJlQgUCZUkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmVaAAQCZFcJAKIIAQkBAVUAAwkAAQIFAmRXAgZTdHJpbmcEAmZhBQJkVwkA2QQBBQJmYQMJAAECBQJkVwIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJmYgAEAmRXCQCiCAEJAQFWAAMJAAECBQJkVwIGU3RyaW5nBAJmYQUCZFcJANkEAQUCZmEDCQABAgUCZFcCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZmMBAmRMBAJkVwkBAmVaAAMJAAECBQJkVwIKQnl0ZVZlY3RvcgQCZmQFAmRXCQAAAggFAmRMD2NhbGxlclB1YmxpY0tleQUCZmQDCQABAgUCZFcCBFVuaXQJAAACCAUCZEwGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmZlAQJkTAQCZmYJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQCZFcJAQJlWgADCQABAgUCZFcCCkJ5dGVWZWN0b3IEAmZkBQJkVwMJAAACCAUCZEwPY2FsbGVyUHVibGljS2V5BQJmZAYFAmZmAwkAAQIFAmRXAgRVbml0AwkAAAIIBQJkTAZjYWxsZXIFBHRoaXMGBQJmZgkAAgECC01hdGNoIGVycm9yHQJkTAEhY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcFJFQURPTkxZAwJmZwJmaAJmaQQCZmoDCQAAAgUCZmgHBAJmawkBAmFIAgUEdGhpcwkBAmFmAAQCZmwJAQJhSAIFBHRoaXMJAQJhZQAJAJQKAgUCZmsFAmZsBAJmawkBAmFIAgUEdGhpcwkBAmFlAAQCZmwJAQJhSAIFBHRoaXMJAQJhZgAJAJQKAgUCZmsFAmZsBAJmawgFAmZqAl8xBAJmbAgFAmZqAl8yBAJmbQkBAmJFAQUCZmwEAmZuCQECYkUBBQJmawQCZm8JAGsDBQJmbgUCZmcJAGQCBQJmbQUCZmcEAmZwCQC5AgIJALYCAQUCZm0JALYCAQUCZm4EAmZxCQC5AgIJALcCAgkAtwICCQC2AgEJAQJiRQEFAmZsCQC2AgEFAmZnCQC2AgEFAmZpCQC4AgIJALYCAQkBAmJFAQUCZmsJALYCAQUCZm8EAmZyAwkAwAICBQJmcQUCZnAGCQACAQIUbmV3IEsgaXMgZmV3ZXIgZXJyb3IDCQAAAgUCZnIFAmZyCQCUCgIFA25pbAUCZm8JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEwBJmNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBBbmRTZW5kVG9rZW5zBQJmZwJmaAJmcwJmdAJmaQQCZnUKAAJhUgkA/AcEBQJhTwIXZ2V0U3dhcENvbnRyYWN0UkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAmFSAgZTdHJpbmcFAmFSCQACAQkArAICCQADAQUCYVICGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwQCZUgJAMwIAgMJAGcCCAkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAAZhbW91bnQFAmZnBgkBAmFMAQIMV3JvbmcgYW1vdW50CQDMCAIDCQAAAggFAmRMBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZnUGCQECYUwBAhFQZXJtaXNzaW9uIGRlbmllZAUDbmlsAwkAAAIFAmVIBQJlSAQCZE0JAQV2YWx1ZQEJAJEDAggFAmRMCHBheW1lbnRzAAAEAmZsCQECYmEBCAUCZE0HYXNzZXRJZAQCZmsDCQAAAgUCZmgHCQECYUgCBQR0aGlzCQECYWYACQECYUgCBQR0aGlzCQECYWUABAJmbQkAZQIJAQJiRQEFAmZsCAkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAAZhbW91bnQEAmZuCQECYkUBBQJmawQCZm8JAGsDBQJmbgUCZmcJAGQCBQJmbQUCZmcEAmZwCQC5AgIJALYCAQUCZm0JALYCAQUCZm4EAmZxCQC5AgIJALcCAgkAtgIBCQECYkUBBQJmbAkAtgIBBQJmaQkAuAICCQC2AgEJAQJiRQEFAmZrCQC2AgEFAmZvBAJmcgMJAMACAgUCZnEFAmZwBgkAAgECFG5ldyBLIGlzIGZld2VyIGVycm9yAwkAAAIFAmZyBQJmcgQCZnYDCQBnAgUCZm8FAmZzBgkAAgECLEV4Y2hhbmdlIHJlc3VsdCBpcyBmZXdlciBjb2lucyB0aGFuIGV4cGVjdGVkAwkAAAIFAmZ2BQJmdgkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmZ0BQJmbwkBAmFZAQUCZmsFA25pbAUCZm8JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEwBCnNldE1hbmFnZXIBAmZ3BAJmeAkBAmZlAQUCZEwDCQAAAgUCZngFAmZ4BAJmeQkA2QQBBQJmdwMJAAACBQJmeQUCZnkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVYABQJmdwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMAQ5jb25maXJtTWFuYWdlcgAEAmZ6CQECZmIABAJmQQMJAQlpc0RlZmluZWQBBQJmegYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZkEFAmZBBAJmQgMJAAACCAUCZEwPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJmegYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZkIFAmZCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFVAAkA2AQBCQEFdmFsdWUBBQJmegkAzAgCCQELRGVsZXRlRW50cnkBCQEBVgAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAEDcHV0AgJjegJmQwMJAGYCAAAFAmN6CQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmRSCQECZE8DBQJkTAUCY3oGBAJkYggFAmRSAl8yBAJjZwgFAmRSAl83BAJjeAgFAmRSAl85BAJkYwgFAmRSA18xMAQCZGQIBQJkUgNfMTEEAmZECAUCZFIDXzEyBAJmRQgFAmRSA18xMwQCZFAJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRMCHBheW1lbnRzAAAGYW1vdW50BAJkUQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAQZhbW91bnQEAmRzCQECZGwDBQJkUAUCZFEJALYCAQAAAwkAAAIFAmRzBQJkcwQCZFUJAPwHBAUCYU8CBGVtaXQJAMwIAgUCZGIFA25pbAUDbmlsAwkAAAIFAmRVBQJkVQQCZFYEAmRXBQJkVQMJAAECBQJkVwIHQWRkcmVzcwQCZFgFAmRXCQD8BwQFAmRYAgRlbWl0CQDMCAIFAmRiBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkVgUCZFYEAmZGAwkAZgIFAmRjAAAJAPwHBAUCYm8CA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmRAUCZGMFA25pbAUDbmlsAwkAAAIFAmZGBQJmRgQCZkcDCQBmAgUCZGQAAAkA/AcEBQJibwIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZFBQJkZAUDbmlsBQNuaWwDCQAAAgUCZkcFAmZHBAJmSAMFAmZDBAJmSQkA/AcEBQJibgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2cFAmRiBQNuaWwDCQAAAgUCZkkFAmZJBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRMBmNhbGxlcgUCZGIFAmNnBQNuaWwEAmZKCQECZHQDAAAAAAAAAwkAAAIFAmZKBQJmSgQCZGsIBQJmSgJfMgQCZksIBQJmSgJfMQQCZkwJAQJkeAIFAmRzBQJkawMJAAACBQJmTAUCZkwJAM4IAgkAzggCBQJjeAUCZkgFAmZLCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMAQpwdXRGb3JGcmVlAQJmTQMJAGYCAAAFAmZNCQACAQIUSW52YWxpZCB2YWx1ZSBwYXNzZWQEAmRSCQECZE8DBQJkTAUCZk0HBAJjeAgFAmRSAl85BAJkUAkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAAZhbW91bnQEAmRRCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkTAhwYXltZW50cwABBmFtb3VudAQCZHMJAQJkbAMFAmRQBQJkUQkAtgIBAAADCQAAAgUCZHMFAmRzBAJmTgkBAmR0AwAAAAAAAAQCZksIBQJmTgJfMQQCZGsIBQJmTgJfMgQCZkwJAQJkeAIFAmRzBQJkawMJAAACBQJmTAUCZkwJAM4IAgUCY3gFAmZLCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMAQlwdXRPbmVUa24CAmZPAmZQBAJmUQoAAmFSCQD8BwQFAmFPAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVICB0Jvb2xlYW4FAmFSCQACAQkArAICCQADAQUCYVICHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZSAwMDCQECYVQABgkAAAIFAmJnBQFsBgkAAAIFAmJnBQFuBgUCZlEEAmVICQDMCAIDAwkBASEBBQJmUgYJAQJmYwEFAmRMBgkBAmFMAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZEwIcGF5bWVudHMAAQYJAQJhTAECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVIBQJlSAQCZlMJAJEDAggFAmRMCHBheW1lbnRzAAAEAmVjCAUCZlMHYXNzZXRJZAQCZWIIBQJmUwZhbW91bnQEAmRzAwkAAAIFAmVjBQJiaQkBAmRsAwkAtgIBBQJlYgkAtgIBAAAJALYCAQAAAwkAAAIFAmVjBQJiagkBAmRsAwkAtgIBAAAJALYCAQUCZWIJALYCAQAACQECYUwBAh5wYXltZW50IGFzc2V0IGlzIG5vdCBzdXBwb3J0ZWQDCQAAAgUCZHMFAmRzBAJhYggFAmRMBmNhbGxlcgQCYWMIBQJkTA10cmFuc2FjdGlvbklkBAJmVAkBAmVhBAUCZWIFAmVjBQJhYgUCYWMDCQAAAgUCZlQFAmZUBAJlZwgFAmZUAl81BAJmVQgFAmZUAl80BAJkWggFAmZUAl8zBAJkZQgFAmZUAl8yBAJmVggFAmZUAl8xBAJmVwMDCQBmAgUCZk8AAAkAZgIFAmZPBQJmVgcJAQJhTAEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZk8FA25pbAIABQJmVgQCZFUJAQJkUwEFAmZXAwkAAAIFAmRVBQJkVQQCZkgDBQJmUAQCZlgJAPwHBAUCYm4CBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJoBQJmVwUDbmlsAwkAAAIFAmZYBQJmWAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkTAZjYWxsZXIFAmZXBQJiaAUDbmlsBAJmWQMJAGYCBQJkWgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFQBQJkWgUCZWMFA25pbAUDbmlsBAJmWgMJAAACBQR0aGlzBQJhUAkAlAoCAAAAAAMFAmVnCQCUCgIJAQEtAQUCZFoAAAkAlAoCAAAJAQEtAQUCZFoEAmR1CAUCZloCXzEEAmR2CAUCZloCXzIEAmdhCQECZHQDBQJkdQUCZHYAAAQCZksIBQJnYQJfMQQCZGsIBQJnYQJfMgQCZEUJAQV2YWx1ZQEJAKIIAQUCYWoEAmZMCQECZHgCBQJkcwUCZGsDCQAAAgUCZkwFAmZMCQCUCgIJAM4IAgkAzggCCQDOCAIFAmRlBQJmSAUCZlkFAmZLBQJmVwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAERcHV0T25lVGtuUkVBRE9OTFkCAmVjAmViBAJnYgkBAmVhBAUCZWIJAQJhWQEFAmVjBQR1bml0BQR1bml0BAJmVggFAmdiAl8xBAJkZQgFAmdiAl8yBAJkWggFAmdiAl8zBAJmVQgFAmdiAl80BAJlZwgFAmdiAl81CQCUCgIFA25pbAkAlQoDBQJmVgUCZFoFAmZVAmRMAQlnZXRPbmVUa24CAmdjAmZPBAJmUQoAAmFSCQD8BwQFAmFPAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVICB0Jvb2xlYW4FAmFSCQACAQkArAICCQADAQUCYVICHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmdkAwMJAQJhVAAGCQAAAgUCYmcFAW4GBQJmUQQCZUgJAMwIAgMDCQEBIQEFAmdkBgkBAmZjAQUCZEwGCQECYUwBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkTAhwYXltZW50cwABBgkBAmFMAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZUgFAmVIBAJlRwkBAmFZAQUCZ2MEAmZTCQCRAwIIBQJkTAhwYXltZW50cwAABAJlYwgFAmZTB2Fzc2V0SWQEAmVvCAUCZlMGYW1vdW50BAJkcwkBAmRsAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkcwUCZHMEAmFiCAUCZEwGY2FsbGVyBAJhYwgFAmRMDXRyYW5zYWN0aW9uSWQEAmdlCQECZUYFBQJlRwUCZW8FAmVjBQJhYgUCYWMDCQAAAgUCZ2UFAmdlBAJlSQgFAmdlAl81BAJmVQgFAmdlAl80BAJkWggFAmdlAl8zBAJkZQgFAmdlAl8yBAJnZggFAmdlAl8xBAJkVAMDCQBmAgUCZk8AAAkAZgIFAmZPBQJnZgcJAQJhTAEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZk8FA25pbAIABQJnZgQCZ2cJAPwHBAUCYU8CBGJ1cm4JAMwIAgUCZW8FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZWMFAmVvBQNuaWwDCQAAAgUCZ2cFAmdnBAJnaAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhYgUCZFQFAmVHBQNuaWwEAmZZAwkAZgIFAmRaAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVAFAmRaBQJlRwUDbmlsBQNuaWwEAmdpBAJnagMJAAACBQR0aGlzBQJhUAAABQJkWgMFAmVJCQCUCgIJAQEtAQkAZAIFAmRUBQJnagAACQCUCgIAAAkBAS0BCQBkAgUCZFQFAmdqBAJkdQgFAmdpAl8xBAJkdggFAmdpAl8yBAJnawkBAmR0AwUCZHUFAmR2AAAEAmZLCAUCZ2sCXzEEAmRrCAUCZ2sCXzIEAmZMCQECZHgCBQJkcwUCZGsDCQAAAgUCZkwFAmZMCQCUCgIJAM4IAgkAzggCCQDOCAIFAmRlBQJnaAUCZlkFAmZLBQJkVAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAERZ2V0T25lVGtuUkVBRE9OTFkCAmVHAmVvBAJnbAkBAmVGBQkBAmFZAQUCZUcFAmVvBQJiaAUEdW5pdAUEdW5pdAQCZ2YIBQJnbAJfMQQCZGUIBQJnbAJfMgQCZFoIBQJnbAJfMwQCZlUIBQJnbAJfNAQCZUkIBQJnbAJfNQkAlAoCBQNuaWwJAJUKAwUCZ2YFAmRaBQJmVQJkTAETdW5zdGFrZUFuZEdldE9uZVRrbgMCZ20CZ2MCZk8EAmZRCgACYVIJAPwHBAUCYU8CKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhUgIHQm9vbGVhbgUCYVIJAAIBCQCsAgIJAAMBBQJhUgIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZ2QDAwkBAmFUAAYJAAACBQJiZwUBbgYFAmZRBAJlSAkAzAgCAwMJAQEhAQUCZ2QGCQECZmMBBQJkTAYJAQJhTAECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRMCHBheW1lbnRzAAAGCQECYUwBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlSAUCZUgEAmVHCQECYVkBBQJnYwQCYWIIBQJkTAZjYWxsZXIEAmFjCAUCZEwNdHJhbnNhY3Rpb25JZAQCZHMJAQJkbAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZHMFAmRzBAJnbgkA/AcEBQJibgIHdW5zdGFrZQkAzAgCCQDYBAEFAmJoCQDMCAIFAmdtBQNuaWwFA25pbAMJAAACBQJnbgUCZ24EAmdvCQECZUYFBQJlRwUCZ20FAmJoBQJhYgUCYWMDCQAAAgUCZ28FAmdvBAJlSQgFAmdvAl81BAJmVQgFAmdvAl80BAJkWggFAmdvAl8zBAJkZQgFAmdvAl8yBAJnZggFAmdvAl8xBAJkVAMDCQBmAgUCZk8AAAkAZgIFAmZPBQJnZgcJAQJhTAEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZk8FA25pbAIABQJnZgQCZ2cJAPwHBAUCYU8CBGJ1cm4JAMwIAgUCZ20FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYmgFAmdtBQNuaWwDCQAAAgUCZ2cFAmdnBAJnaAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZEwGY2FsbGVyBQJkVAUCZUcFA25pbAQCZlkDCQBmAgUCZFoAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhUAUCZFoFAmVHBQNuaWwFA25pbAQCZ3AEAmdqAwkAAAIFBHRoaXMFAmFQAAAFAmRaAwUCZUkJAJQKAgkBAS0BCQBkAgUCZFQFAmdqAAAJAJQKAgAACQEBLQEJAGQCBQJkVAUCZ2oEAmR1CAUCZ3ACXzEEAmR2CAUCZ3ACXzIEAmdxCQECZHQDBQJkdQUCZHYAAAQCZksIBQJncQJfMQQCZGsIBQJncQJfMgQCZkwJAQJkeAIFAmRzBQJkawMJAAACBQJmTAUCZkwJAJQKAgkAzggCCQDOCAIJAM4IAgUCZGUFAmdoBQJmWQUCZksFAmRUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMAQNnZXQABAJjUAkBAmRLAQUCZEwEAmdyCAUCY1ACXzEEAmN3CAUCY1ACXzIEAmROCAUCY1ACXzMEAmNlCAUCY1ACXzQEAmN4CAUCY1ACXzUEAmRzCQECZGwDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmRzBQJkcwQCZ3MJAPwHBAUCYU8CBGJ1cm4JAMwIAgUCZE4FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2UFAmROBQNuaWwDCQAAAgUCZ3MFAmdzBAJndAkBAmR0AwkBAS0BBQJncgkBAS0BBQJjdwAABAJmSwgFAmd0Al8xBAJkawgFAmd0Al8yBAJmTAkBAmR4AgUCZHMFAmRrAwkAAAIFAmZMBQJmTAkAzggCBQJjeAUCZksJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEwBCWdldE5vTGVzcwICZ3UCZ3YEAmNQCQECZEsBBQJkTAQCY3YIBQJjUAJfMQQCY3cIBQJjUAJfMgQCZE4IBQJjUAJfMwQCY2UIBQJjUAJfNAQCY3gIBQJjUAJfNQMJAGYCBQJndQUCY3YJAAIBCQCsAgIJAKwCAgkArAICAhxub0xlc3NUaGVuQW10QXNzZXQgZmFpbGVkOiAgCQCkAwEFAmN2AgMgPCAJAKQDAQUCZ3UDCQBmAgUCZ3YFAmN3CQACAQkArAICCQCsAgIJAKwCAgIdbm9MZXNzVGhlblByaWNlQXNzZXQgZmFpbGVkOiAJAKQDAQUCY3cCAyA8IAkApAMBBQJndgQCZHMJAQJkbAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZHMFAmRzBAJncwkA/AcEBQJhTwIEYnVybgkAzAgCBQJkTgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjZQUCZE4FA25pbAMJAAACBQJncwUCZ3MEAmd3CQECZHQDCQEBLQEFAmN2CQEBLQEFAmN3AAAEAmZLCAUCZ3cCXzEEAmRrCAUCZ3cCXzIEAmZMCQECZHgCBQJkcwUCZGsDCQAAAgUCZkwFAmZMCQDOCAIFAmN4BQJmSwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAENdW5zdGFrZUFuZEdldAECZFQEAmd4AwkBAiE9AgkAkAMBCAUCZEwIcGF5bWVudHMAAAkAAgECGE5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAYDCQAAAgUCZ3gFAmd4BAJiVAkBAmFWAAQCY2cJANkEAQkAkQMCBQJiVAUBcQQCZHMJAQJkbAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZHMFAmRzBAJnbgkA/AcEBQJibgIHdW5zdGFrZQkAzAgCCQDYBAEFAmNnCQDMCAIFAmRUBQNuaWwFA25pbAMJAAACBQJnbgUCZ24EAmNQCQECY2MECQDYBAEIBQJkTA10cmFuc2FjdGlvbklkCQDYBAEFAmNnBQJkVAgFAmRMBmNhbGxlcgQCY3YIBQJjUAJfMQQCY3cIBQJjUAJfMgQCY2oJAQ1wYXJzZUludFZhbHVlAQgFAmNQAl85BAJjeAgFAmNQA18xMAQCZ3kDAwkBAmFUAAYJAAACBQJjagUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2oGAwkAAAIFAmd5BQJneQQCZ3MJAPwHBAUCYU8CBGJ1cm4JAMwIAgUCZFQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2cFAmRUBQNuaWwDCQAAAgUCZ3MFAmdzBAJnegkBAmR0AwkBAS0BBQJjdgkBAS0BBQJjdwAABAJmSwgFAmd6Al8xBAJkawgFAmd6Al8yBAJmTAkBAmR4AgUCZHMFAmRrAwkAAAIFAmZMBQJmTAkAzggCBQJjeAUCZksJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEwBE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmdtAmdBAmd2BAJnZAMJAQJhVAAGCQAAAgUCYmcFAW4EAmVICQDMCAIDCQEBIQEFAmdkBgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRMCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZUgFAmVIBAJkcwkBAmRsAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkcwUCZHMEAmduCQD8BwQFAmJuAgd1bnN0YWtlCQDMCAIJANgEAQUCYmgJAMwIAgUCZ20FA25pbAUDbmlsAwkAAAIFAmduBQJnbgQCY1AJAQJjYwQJANgEAQgFAmRMDXRyYW5zYWN0aW9uSWQJANgEAQUCYmgFAmdtCAUCZEwGY2FsbGVyBAJjdggFAmNQAl8xBAJjdwgFAmNQAl8yBAJjeAgFAmNQA18xMAQCZ0IJAMwIAgMJAGcCBQJjdgUCZ0EGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ0EFA25pbAIACQDMCAIDCQBnAgUCY3cFAmd2BgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ3YFA25pbAIABQNuaWwDCQAAAgUCZ0IFAmdCBAJncwkA/AcEBQJhTwIEYnVybgkAzAgCBQJnbQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiaAUCZ20FA25pbAMJAAACBQJncwUCZ3MEAmdDCQECZHQDCQEBLQEFAmN2CQEBLQEFAmN3AAAEAmZLCAUCZ0MCXzEEAmRrCAUCZ0MCXzIEAmZMCQECZHgCBQJkcwUCZGsDCQAAAgUCZkwFAmZMCQDOCAIFAmN4BQJmSwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAEIYWN0aXZhdGUCAmdEAmdFAwkBAiE9AgkApQgBCAUCZEwGY2FsbGVyCQClCAEFAmFPCQACAQIScGVybWlzc2lvbnMgZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFlAAUCZ0QJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFmAAUCZ0UFA25pbAIHc3VjY2VzcwJkTAEKcmVmcmVzaEtMcAAEAmdGCQELdmFsdWVPckVsc2UCCQCfCAEFAmFrAAAEAmdHAwkAZwIJAGUCBQZoZWlnaHQFAmdGBQJhbgUEdW5pdAkBAmFMAQkAuQkCCQDMCAIJAKQDAQUCYW4JAMwIAgIvIGJsb2NrcyBoYXZlIG5vdCBwYXNzZWQgc2luY2UgdGhlIHByZXZpb3VzIGNhbGwFA25pbAIAAwkAAAIFAmdHBQJnRwQCZEUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFqAgEwCQECYU4BAgtpbnZhbGlkIGtMcAQCZ0gJAQJkdAMAAAAAAAAEAmdJCAUCZ0gCXzEEAmRrCAUCZ0gCXzIEAmR3AwkBAiE9AgUCZEUFAmRrBQJnSQkBAmFMAQISbm90aGluZyB0byByZWZyZXNoCQCUCgIFAmR3CQCmAwEFAmRrCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhVgACZEwBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJGCQCUCgIFA25pbAkBAmJFAQUCYkYCZEwBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmJOAmJPAmJTBAJjYgkBAmJSAwUCYk4FAmJPBQJiUwkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmNiAAAJAMwIAgkApgMBCQCRAwIFAmNiAAEJAMwIAgkApgMBCQCRAwIFAmNiAAIFA25pbAJkTAEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUUBRgkAlAoCBQNuaWwJAKYDAQkBAUQCBQFFBQFGAmRMARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFJAUoJAJQKAgUDbmlsCQEBSAIJAKcDAQUBSQUBSgJkTAEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJiSAJiSQkAlAoCBQNuaWwJAKYDAQkBAmJHAgkApwMBBQJiSAkApwMBBQJiSQJkTAEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmNkAmN6AmNBAmNCAmNDAmNEAmFiAmNFAmNGCQCUCgIFA25pbAkBAmN5CQUCY2QFAmN6BQJjQQUCY0IFAmNDBQJjRAUCYWIFAmNFBQJjRgJkTAEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmNkAmNlAmNmAmFiBAJjUAkBAmNjBAUCY2QFAmNlBQJjZgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYWIJAJQKAgUDbmlsCQCcCgoIBQJjUAJfMQgFAmNQAl8yCAUCY1ACXzMIBQJjUAJfNAgFAmNQAl81CAUCY1ACXzYIBQJjUAJfNwkApgMBCAUCY1ACXzgIBQJjUAJfOQgFAmNQA18xMAJkTAENc3RhdHNSRUFET05MWQAEAmJUCQECYVYABAJjZwkA2QQBCQCRAwIFAmJUBQFxBAJnSgkAkQMCBQJiVAUBcgQCZ0sJAJEDAgUCYlQFAXMEAmNJCQCRAwIFAmJUBQF2BAJjSgkAkQMCBQJiVAUBdwQCYlUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdAQCYlYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdQQCZ0wICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY2cJAKwCAgkArAICAgZBc3NldCAJANgEAQUCY2cCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJnTQkBAmJFAQUCZ0oEAmdOCQECYkUBBQJnSwQCZ08DCQAAAgUCZ0wAAAkAzAgCBQFlCQDMCAIFAWUJAMwIAgUBZQUDbmlsCQECYlIDBQJnTQUCZ04FAmdMBAJjcQAABAJnUAkBAUgCCQCRAwIFAmdPAAEFAWIEAmdRCQEBSAIJAJEDAgUCZ08AAgUBYgQCZ1IJAQV2YWx1ZQEJAJoIAgUCYU8JAQJheQEJAKUIAQUEdGhpcwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmdNCQDMCAIJAKQDAQUCZ04JAMwIAgkApAMBBQJnTAkAzAgCCQCkAwEFAmNxCQDMCAIJAKQDAQUCZ1AJAMwIAgkApAMBBQJnUQkAzAgCCQCkAwEFAmdSBQNuaWwFAWoCZEwBIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZAQJjQQQCYlQJAQJhVgAEAmNnCQDZBAEJAJEDAgUCYlQFAXEEAmNHCQCRAwIFAmJUBQFyBAJjaAkA2QQBBQJjRwQCY0gJAJEDAgUCYlQFAXMEAmNpCQDZBAEFAmNIBAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF0BAJiVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF1BAJjagkAkQMCBQJiVAUBcAQCZ0wICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY2cJAKwCAgkArAICAgZBc3NldCAJANgEAQUCY2cCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJnTQkBAmJFAQUCY0cEAmdOCQECYkUBBQJjSAQCYlAJAQFEAgUCZ00FAmJVBAJiUQkBAUQCBQJnTgUCYlYEAmNwAwkAAAIFAmdMAAAFAWUJAQJiRwIFAmJRBQJiUAQCY00JAQFEAgUCY0EFAmJVBAJjTgkAvAIDBQJjTQUCY3AFAWQEAmNDCQEBSAIFAmNOBQJiVgQCZFIJAQJjeQkCAACgwh4FAmNBBQJjaAUCY0MFAmNpAgAGBwQCY1gIBQJkUgJfMQQCZ1MIBQJkUgJfMwQCY2wIBQJkUgJfNAQCY24IBQJkUgJfNQQCY2sIBQJkUgJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY1gJAMwIAgkApAMBCQEBSAIFAmNwBQFiCQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJjbgkAzAgCCQCkAwEFAmNrCQDMCAIFAmNqCQDMCAIJAKQDAQUCY0EJAMwIAgkApAMBBQJjQwUDbmlsBQFqAmRMAR9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAQJjQwQCYlQJAQJhVgAEAmNnCQDZBAEJAJEDAgUCYlQFAXEEAmNHCQCRAwIFAmJUBQFyBAJjaAkA2QQBBQJjRwQCY0gJAJEDAgUCYlQFAXMEAmNpCQDZBAEFAmNIBAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF0BAJiVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF1BAJjagkAkQMCBQJiVAUBcAQCZ0wICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY2cJAKwCAgkArAICAgZBc3NldCAJANgEAQUCY2cCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJnVAkBAmJFAQUCY0cEAmdVCQECYkUBBQJjSAQCZ1YJAQFEAgUCZ1QFAmJVBAJnVwkBAUQCBQJnVQUCYlYEAmNwAwkAAAIFAmdMAAAFAWUJAQJiRwIFAmdXBQJnVgQCY04JAQFEAgUCY0MFAmJWBAJjTQkAvAIDBQJjTgUBZAUCY3AEAmNBCQEBSAIFAmNNBQJiVQQCZFIJAQJjeQkCAACgwh4FAmNBBQJjaAUCY0MFAmNpAgAGBwQCY1gIBQJkUgJfMQQCZ1MIBQJkUgJfMwQCY2wIBQJkUgJfNAQCY24IBQJkUgJfNQQCY2sIBQJkUgJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY1gJAMwIAgkApAMBCQEBSAIFAmNwBQFiCQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJjbgkAzAgCCQCkAwEFAmNrCQDMCAIFAmNqCQDMCAIJAKQDAQUCY0EJAMwIAgkApAMBBQJjQwUDbmlsBQFqAmRMARNldmFsdWF0ZUdldFJFQURPTkxZAgJnWAJnWQQCY1AJAQJjYwQCAAUCZ1gFAmdZBQR0aGlzBAJjdggFAmNQAl8xBAJjdwgFAmNQAl8yBAJjbAgFAmNQAl81BAJjbggFAmNQAl82BAJjawgFAmNQAl83BAJjcQgFAmNQAl84BAJjagkBDXBhcnNlSW50VmFsdWUBCAUCY1ACXzkJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjdgkAzAgCCQCkAwEFAmN3CQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJjbgkAzAgCCQCkAwEFAmNrCQDMCAIJAKYDAQUCY3EJAMwIAgkApAMBBQJjagUDbmlsBQFqAQJnWgECaGEABAJoYgQCZFcJAQJlWgADCQABAgUCZFcCCkJ5dGVWZWN0b3IEAmZkBQJkVwUCZmQDCQABAgUCZFcCBFVuaXQIBQJnWg9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCZFcFAmdaAwkAAQIFAmRXAgVPcmRlcgQCZEEFAmRXBAJoYwkBAmFVAAQCaGQJAQJkegEFAmRBBAJhRAgFAmhkAl8xBAJhRQgFAmhkAl8yBAJhRgkA9AMDCAUCZEEJYm9keUJ5dGVzCQCRAwIIBQJkQQZwcm9vZnMAAAgFAmRBD3NlbmRlclB1YmxpY0tleQQCYUcJAPQDAwgFAmRBCWJvZHlCeXRlcwkAkQMCCAUCZEEGcHJvb2ZzAAEFAmhjAwMDBQJhRAUCYUYHBQJhRwcGCQECYUMEBQJhRAUCYUUFAmFGBQJhRwMJAAECBQJkVwIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmZhBQJkVwMJAPQDAwgFAmdaCWJvZHlCeXRlcwkAkQMCCAUCZ1oGcHJvb2ZzAAAFAmhiBgQCaGUJAPYDAQkBBXZhbHVlAQgFAmZhBnNjcmlwdAQCaGYJANsEAQkBBXZhbHVlAQkAnQgCBQJhTwkBAmFBAAQCaGcJAPEHAQUEdGhpcwMJAAACBQJoZgUCaGUJAQIhPQIFAmhnBQJoZQcJAPQDAwgFAmdaCWJvZHlCeXRlcwkAkQMCCAUCZ1oGcHJvb2ZzAAAFAmhiqF/ylA==", "height": 3524720, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8DktHai8p7S5Zvd2azoy2GoJoiBU7i16qqFwxjsZe9fz Next: 6qAkQoHCUu46AgE32BrRUt1vye9HLwYq7uhGByNkh5Ae Diff:
OldNewDifferences
707707
708708
709709 @Callable(dL)
710-func calculateAmountOutForSwapREADONLY (fg,fh) = {
711- let fi = if ((fh == false))
710+func calculateAmountOutForSwapREADONLY (fg,fh,fi) = {
711+ let fj = if ((fh == false))
712712 then {
713- let fj = aH(this, af())
714- let fk = aH(this, ae())
715- $Tuple2(fj, fk)
713+ let fk = aH(this, af())
714+ let fl = aH(this, ae())
715+ $Tuple2(fk, fl)
716716 }
717717 else {
718- let fj = aH(this, ae())
719- let fk = aH(this, af())
720- $Tuple2(fj, fk)
718+ let fk = aH(this, ae())
719+ let fl = aH(this, af())
720+ $Tuple2(fk, fl)
721721 }
722- let fj = fi._1
723- let fk = fi._2
724- let fl = bE(fk)
725- let fm = bE(fj)
726- let fn = fraction(fm, fg, (fl + fg))
727- let fo = (toBigInt(fl) * toBigInt(fm))
728- let fp = ((toBigInt(bE(fk)) + toBigInt(fg)) * (toBigInt(bE(fj)) - toBigInt(fn)))
729- let fq = if ((fp >= fo))
722+ let fk = fj._1
723+ let fl = fj._2
724+ let fm = bE(fl)
725+ let fn = bE(fk)
726+ let fo = fraction(fn, fg, (fm + fg))
727+ let fp = (toBigInt(fm) * toBigInt(fn))
728+ let fq = (((toBigInt(bE(fl)) + toBigInt(fg)) + toBigInt(fi)) * (toBigInt(bE(fk)) - toBigInt(fo)))
729+ let fr = if ((fq >= fp))
730730 then true
731731 else throw("new K is fewer error")
732- if ((fq == fq))
733- then $Tuple2(nil, fn)
732+ if ((fr == fr))
733+ then $Tuple2(nil, fo)
734734 else throw("Strict value is not equal to itself.")
735735 }
736736
737737
738738
739739 @Callable(dL)
740-func calculateAmountOutForSwapAndSendTokens (fg,fh,fr,fs) = {
741- let ft = {
740+func calculateAmountOutForSwapAndSendTokens (fg,fh,fs,ft,fi) = {
741+ let fu = {
742742 let aR = invoke(aO, "getSwapContractREADONLY", nil, nil)
743743 if ($isInstanceOf(aR, "String"))
744744 then aR
746746 }
747747 let eH = [if ((value(dL.payments[0]).amount >= fg))
748748 then true
749- else aL("Wrong amount"), if ((dL.caller == addressFromStringValue(ft)))
749+ else aL("Wrong amount"), if ((dL.caller == addressFromStringValue(fu)))
750750 then true
751751 else aL("Permission denied")]
752752 if ((eH == eH))
753753 then {
754754 let dM = value(dL.payments[0])
755- let fk = ba(dM.assetId)
756- let fj = if ((fh == false))
755+ let fl = ba(dM.assetId)
756+ let fk = if ((fh == false))
757757 then aH(this, af())
758758 else aH(this, ae())
759- let fl = (bE(fk) - value(dL.payments[0]).amount)
760- let fm = bE(fj)
761- let fn = fraction(fm, fg, (fl + fg))
762- let fo = (toBigInt(fl) * toBigInt(fm))
763- let fp = (toBigInt(bE(fk)) * (toBigInt(bE(fj)) - toBigInt(fn)))
764- let fq = if ((fp >= fo))
759+ let fm = (bE(fl) - value(dL.payments[0]).amount)
760+ let fn = bE(fk)
761+ let fo = fraction(fn, fg, (fm + fg))
762+ let fp = (toBigInt(fm) * toBigInt(fn))
763+ let fq = ((toBigInt(bE(fl)) + toBigInt(fi)) * (toBigInt(bE(fk)) - toBigInt(fo)))
764+ let fr = if ((fq >= fp))
765765 then true
766766 else throw("new K is fewer error")
767- if ((fq == fq))
767+ if ((fr == fr))
768768 then {
769- let fu = if ((fn >= fr))
769+ let fv = if ((fo >= fs))
770770 then true
771771 else throw("Exchange result is fewer coins than expected")
772- if ((fu == fu))
773- then $Tuple2([ScriptTransfer(addressFromStringValue(fs), fn, aY(fj))], fn)
772+ if ((fv == fv))
773+ then $Tuple2([ScriptTransfer(addressFromStringValue(ft), fo, aY(fk))], fo)
774774 else throw("Strict value is not equal to itself.")
775775 }
776776 else throw("Strict value is not equal to itself.")
781781
782782
783783 @Callable(dL)
784-func setManager (fv) = {
785- let fw = fe(dL)
786- if ((fw == fw))
784+func setManager (fw) = {
785+ let fx = fe(dL)
786+ if ((fx == fx))
787787 then {
788- let fx = fromBase58String(fv)
789- if ((fx == fx))
790- then [StringEntry(V(), fv)]
788+ let fy = fromBase58String(fw)
789+ if ((fy == fy))
790+ then [StringEntry(V(), fw)]
791791 else throw("Strict value is not equal to itself.")
792792 }
793793 else throw("Strict value is not equal to itself.")
797797
798798 @Callable(dL)
799799 func confirmManager () = {
800- let fy = fb()
801- let fz = if (isDefined(fy))
800+ let fz = fb()
801+ let fA = if (isDefined(fz))
802802 then true
803803 else throw("No pending manager")
804- if ((fz == fz))
804+ if ((fA == fA))
805805 then {
806- let fA = if ((dL.callerPublicKey == value(fy)))
806+ let fB = if ((dL.callerPublicKey == value(fz)))
807807 then true
808808 else throw("You are not pending manager")
809- if ((fA == fA))
810- then [StringEntry(U(), toBase58String(value(fy))), DeleteEntry(V())]
809+ if ((fB == fB))
810+ then [StringEntry(U(), toBase58String(value(fz))), DeleteEntry(V())]
811811 else throw("Strict value is not equal to itself.")
812812 }
813813 else throw("Strict value is not equal to itself.")
816816
817817
818818 @Callable(dL)
819-func put (cz,fB) = if ((0 > cz))
819+func put (cz,fC) = if ((0 > cz))
820820 then throw("Invalid slippageTolerance passed")
821821 else {
822822 let dR = dO(dL, cz, true)
825825 let cx = dR._9
826826 let dc = dR._10
827827 let dd = dR._11
828- let fC = dR._12
829- let fD = dR._13
828+ let fD = dR._12
829+ let fE = dR._13
830830 let dP = toBigInt(value(dL.payments[0]).amount)
831831 let dQ = toBigInt(value(dL.payments[1]).amount)
832832 let ds = dl(dP, dQ, toBigInt(0))
846846 }
847847 if ((dV == dV))
848848 then {
849- let fE = if ((dc > 0))
850- then invoke(bo, "put", nil, [AttachedPayment(fC, dc)])
849+ let fF = if ((dc > 0))
850+ then invoke(bo, "put", nil, [AttachedPayment(fD, dc)])
851851 else nil
852- if ((fE == fE))
852+ if ((fF == fF))
853853 then {
854- let fF = if ((dd > 0))
855- then invoke(bo, "put", nil, [AttachedPayment(fD, dd)])
854+ let fG = if ((dd > 0))
855+ then invoke(bo, "put", nil, [AttachedPayment(fE, dd)])
856856 else nil
857- if ((fF == fF))
857+ if ((fG == fG))
858858 then {
859- let fG = if (fB)
859+ let fH = if (fC)
860860 then {
861- let fH = invoke(bn, "stake", nil, [AttachedPayment(cg, db)])
862- if ((fH == fH))
861+ let fI = invoke(bn, "stake", nil, [AttachedPayment(cg, db)])
862+ if ((fI == fI))
863863 then nil
864864 else throw("Strict value is not equal to itself.")
865865 }
866866 else [ScriptTransfer(dL.caller, db, cg)]
867- let fI = dt(0, 0, 0)
868- if ((fI == fI))
867+ let fJ = dt(0, 0, 0)
868+ if ((fJ == fJ))
869869 then {
870- let dk = fI._2
871- let fJ = fI._1
872- let fK = dx(ds, dk)
873- if ((fK == fK))
874- then ((cx ++ fG) ++ fJ)
870+ let dk = fJ._2
871+ let fK = fJ._1
872+ let fL = dx(ds, dk)
873+ if ((fL == fL))
874+ then ((cx ++ fH) ++ fK)
875875 else throw("Strict value is not equal to itself.")
876876 }
877877 else throw("Strict value is not equal to itself.")
890890
891891
892892 @Callable(dL)
893-func putForFree (fL) = if ((0 > fL))
893+func putForFree (fM) = if ((0 > fM))
894894 then throw("Invalid value passed")
895895 else {
896- let dR = dO(dL, fL, false)
896+ let dR = dO(dL, fM, false)
897897 let cx = dR._9
898898 let dP = toBigInt(value(dL.payments[0]).amount)
899899 let dQ = toBigInt(value(dL.payments[1]).amount)
900900 let ds = dl(dP, dQ, toBigInt(0))
901901 if ((ds == ds))
902902 then {
903- let fM = dt(0, 0, 0)
904- let fJ = fM._1
905- let dk = fM._2
906- let fK = dx(ds, dk)
907- if ((fK == fK))
908- then (cx ++ fJ)
903+ let fN = dt(0, 0, 0)
904+ let fK = fN._1
905+ let dk = fN._2
906+ let fL = dx(ds, dk)
907+ if ((fL == fL))
908+ then (cx ++ fK)
909909 else throw("Strict value is not equal to itself.")
910910 }
911911 else throw("Strict value is not equal to itself.")
914914
915915
916916 @Callable(dL)
917-func putOneTkn (fN,fO) = {
918- let fP = {
917+func putOneTkn (fO,fP) = {
918+ let fQ = {
919919 let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
920920 if ($isInstanceOf(aR, "Boolean"))
921921 then aR
922922 else throw(($getType(aR) + " couldn't be cast to Boolean"))
923923 }
924- let fQ = if (if (if (aT())
924+ let fR = if (if (if (aT())
925925 then true
926926 else (bg == l))
927927 then true
928928 else (bg == n))
929929 then true
930- else fP
931- let eH = [if (if (!(fQ))
930+ else fQ
931+ let eH = [if (if (!(fR))
932932 then true
933933 else fc(dL))
934934 then true
937937 else aL("exactly 1 payment are expected")]
938938 if ((eH == eH))
939939 then {
940- let fR = dL.payments[0]
941- let ec = fR.assetId
942- let eb = fR.amount
940+ let fS = dL.payments[0]
941+ let ec = fS.assetId
942+ let eb = fS.amount
943943 let ds = if ((ec == bi))
944944 then dl(toBigInt(eb), toBigInt(0), toBigInt(0))
945945 else if ((ec == bj))
949949 then {
950950 let ab = dL.caller
951951 let ac = dL.transactionId
952- let fS = ea(eb, ec, ab, ac)
953- if ((fS == fS))
952+ let fT = ea(eb, ec, ab, ac)
953+ if ((fT == fT))
954954 then {
955- let eg = fS._5
956- let fT = fS._4
957- let dZ = fS._3
958- let de = fS._2
959- let fU = fS._1
960- let fV = if (if ((fN > 0))
961- then (fN > fU)
955+ let eg = fT._5
956+ let fU = fT._4
957+ let dZ = fT._3
958+ let de = fT._2
959+ let fV = fT._1
960+ let fW = if (if ((fO > 0))
961+ then (fO > fV)
962962 else false)
963- then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
964- else fU
965- let dU = dS(fV)
963+ then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
964+ else fV
965+ let dU = dS(fW)
966966 if ((dU == dU))
967967 then {
968- let fG = if (fO)
968+ let fH = if (fP)
969969 then {
970- let fW = invoke(bn, "stake", nil, [AttachedPayment(bh, fV)])
971- if ((fW == fW))
970+ let fX = invoke(bn, "stake", nil, [AttachedPayment(bh, fW)])
971+ if ((fX == fX))
972972 then nil
973973 else throw("Strict value is not equal to itself.")
974974 }
975- else [ScriptTransfer(dL.caller, fV, bh)]
976- let fX = if ((dZ > 0))
975+ else [ScriptTransfer(dL.caller, fW, bh)]
976+ let fY = if ((dZ > 0))
977977 then [ScriptTransfer(aP, dZ, ec)]
978978 else nil
979- let fY = if ((this == aP))
979+ let fZ = if ((this == aP))
980980 then $Tuple2(0, 0)
981981 else if (eg)
982982 then $Tuple2(-(dZ), 0)
983983 else $Tuple2(0, -(dZ))
984- let du = fY._1
985- let dv = fY._2
986- let fZ = dt(du, dv, 0)
987- let fJ = fZ._1
988- let dk = fZ._2
984+ let du = fZ._1
985+ let dv = fZ._2
986+ let ga = dt(du, dv, 0)
987+ let fK = ga._1
988+ let dk = ga._2
989989 let dE = value(getString(aj))
990- let fK = dx(ds, dk)
991- if ((fK == fK))
992- then $Tuple2((((de ++ fG) ++ fX) ++ fJ), fV)
990+ let fL = dx(ds, dk)
991+ if ((fL == fL))
992+ then $Tuple2((((de ++ fH) ++ fY) ++ fK), fW)
993993 else throw("Strict value is not equal to itself.")
994994 }
995995 else throw("Strict value is not equal to itself.")
10051005
10061006 @Callable(dL)
10071007 func putOneTknREADONLY (ec,eb) = {
1008- let ga = ea(eb, aY(ec), unit, unit)
1009- let fU = ga._1
1010- let de = ga._2
1011- let dZ = ga._3
1012- let fT = ga._4
1013- let eg = ga._5
1014- $Tuple2(nil, $Tuple3(fU, dZ, fT))
1008+ let gb = ea(eb, aY(ec), unit, unit)
1009+ let fV = gb._1
1010+ let de = gb._2
1011+ let dZ = gb._3
1012+ let fU = gb._4
1013+ let eg = gb._5
1014+ $Tuple2(nil, $Tuple3(fV, dZ, fU))
10151015 }
10161016
10171017
10181018
10191019 @Callable(dL)
1020-func getOneTkn (gb,fN) = {
1021- let fP = {
1020+func getOneTkn (gc,fO) = {
1021+ let fQ = {
10221022 let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10231023 if ($isInstanceOf(aR, "Boolean"))
10241024 then aR
10251025 else throw(($getType(aR) + " couldn't be cast to Boolean"))
10261026 }
1027- let gc = if (if (aT())
1027+ let gd = if (if (aT())
10281028 then true
10291029 else (bg == n))
10301030 then true
1031- else fP
1032- let eH = [if (if (!(gc))
1031+ else fQ
1032+ let eH = [if (if (!(gd))
10331033 then true
10341034 else fc(dL))
10351035 then true
10381038 else aL("exactly 1 payment are expected")]
10391039 if ((eH == eH))
10401040 then {
1041- let eG = aY(gb)
1042- let fR = dL.payments[0]
1043- let ec = fR.assetId
1044- let eo = fR.amount
1041+ let eG = aY(gc)
1042+ let fS = dL.payments[0]
1043+ let ec = fS.assetId
1044+ let eo = fS.amount
10451045 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
10461046 if ((ds == ds))
10471047 then {
10481048 let ab = dL.caller
10491049 let ac = dL.transactionId
1050- let gd = eF(eG, eo, ec, ab, ac)
1051- if ((gd == gd))
1050+ let ge = eF(eG, eo, ec, ab, ac)
1051+ if ((ge == ge))
10521052 then {
1053- let eI = gd._5
1054- let fT = gd._4
1055- let dZ = gd._3
1056- let de = gd._2
1057- let ge = gd._1
1058- let dT = if (if ((fN > 0))
1059- then (fN > ge)
1053+ let eI = ge._5
1054+ let fU = ge._4
1055+ let dZ = ge._3
1056+ let de = ge._2
1057+ let gf = ge._1
1058+ let dT = if (if ((fO > 0))
1059+ then (fO > gf)
10601060 else false)
1061- then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
1062- else ge
1063- let gf = invoke(aO, "burn", [eo], [AttachedPayment(ec, eo)])
1064- if ((gf == gf))
1061+ then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
1062+ else gf
1063+ let gg = invoke(aO, "burn", [eo], [AttachedPayment(ec, eo)])
1064+ if ((gg == gg))
10651065 then {
1066- let gg = [ScriptTransfer(ab, dT, eG)]
1067- let fX = if ((dZ > 0))
1066+ let gh = [ScriptTransfer(ab, dT, eG)]
1067+ let fY = if ((dZ > 0))
10681068 then [ScriptTransfer(aP, dZ, eG)]
10691069 else nil
1070- let gh = {
1071- let gi = if ((this == aP))
1070+ let gi = {
1071+ let gj = if ((this == aP))
10721072 then 0
10731073 else dZ
10741074 if (eI)
1075- then $Tuple2(-((dT + gi)), 0)
1076- else $Tuple2(0, -((dT + gi)))
1075+ then $Tuple2(-((dT + gj)), 0)
1076+ else $Tuple2(0, -((dT + gj)))
10771077 }
1078- let du = gh._1
1079- let dv = gh._2
1080- let gj = dt(du, dv, 0)
1081- let fJ = gj._1
1082- let dk = gj._2
1083- let fK = dx(ds, dk)
1084- if ((fK == fK))
1085- then $Tuple2((((de ++ gg) ++ fX) ++ fJ), dT)
1078+ let du = gi._1
1079+ let dv = gi._2
1080+ let gk = dt(du, dv, 0)
1081+ let fK = gk._1
1082+ let dk = gk._2
1083+ let fL = dx(ds, dk)
1084+ if ((fL == fL))
1085+ then $Tuple2((((de ++ gh) ++ fY) ++ fK), dT)
10861086 else throw("Strict value is not equal to itself.")
10871087 }
10881088 else throw("Strict value is not equal to itself.")
10981098
10991099 @Callable(dL)
11001100 func getOneTknREADONLY (eG,eo) = {
1101- let gk = eF(aY(eG), eo, bh, unit, unit)
1102- let ge = gk._1
1103- let de = gk._2
1104- let dZ = gk._3
1105- let fT = gk._4
1106- let eI = gk._5
1107- $Tuple2(nil, $Tuple3(ge, dZ, fT))
1101+ let gl = eF(aY(eG), eo, bh, unit, unit)
1102+ let gf = gl._1
1103+ let de = gl._2
1104+ let dZ = gl._3
1105+ let fU = gl._4
1106+ let eI = gl._5
1107+ $Tuple2(nil, $Tuple3(gf, dZ, fU))
11081108 }
11091109
11101110
11111111
11121112 @Callable(dL)
1113-func unstakeAndGetOneTkn (gl,gb,fN) = {
1114- let fP = {
1113+func unstakeAndGetOneTkn (gm,gc,fO) = {
1114+ let fQ = {
11151115 let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11161116 if ($isInstanceOf(aR, "Boolean"))
11171117 then aR
11181118 else throw(($getType(aR) + " couldn't be cast to Boolean"))
11191119 }
1120- let gc = if (if (aT())
1120+ let gd = if (if (aT())
11211121 then true
11221122 else (bg == n))
11231123 then true
1124- else fP
1125- let eH = [if (if (!(gc))
1124+ else fQ
1125+ let eH = [if (if (!(gd))
11261126 then true
11271127 else fc(dL))
11281128 then true
11311131 else aL("no payments are expected")]
11321132 if ((eH == eH))
11331133 then {
1134- let eG = aY(gb)
1134+ let eG = aY(gc)
11351135 let ab = dL.caller
11361136 let ac = dL.transactionId
11371137 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
11381138 if ((ds == ds))
11391139 then {
1140- let gm = invoke(bn, "unstake", [toBase58String(bh), gl], nil)
1141- if ((gm == gm))
1140+ let gn = invoke(bn, "unstake", [toBase58String(bh), gm], nil)
1141+ if ((gn == gn))
11421142 then {
1143- let gn = eF(eG, gl, bh, ab, ac)
1144- if ((gn == gn))
1143+ let go = eF(eG, gm, bh, ab, ac)
1144+ if ((go == go))
11451145 then {
1146- let eI = gn._5
1147- let fT = gn._4
1148- let dZ = gn._3
1149- let de = gn._2
1150- let ge = gn._1
1151- let dT = if (if ((fN > 0))
1152- then (fN > ge)
1146+ let eI = go._5
1147+ let fU = go._4
1148+ let dZ = go._3
1149+ let de = go._2
1150+ let gf = go._1
1151+ let dT = if (if ((fO > 0))
1152+ then (fO > gf)
11531153 else false)
1154- then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
1155- else ge
1156- let gf = invoke(aO, "burn", [gl], [AttachedPayment(bh, gl)])
1157- if ((gf == gf))
1154+ then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
1155+ else gf
1156+ let gg = invoke(aO, "burn", [gm], [AttachedPayment(bh, gm)])
1157+ if ((gg == gg))
11581158 then {
1159- let gg = [ScriptTransfer(dL.caller, dT, eG)]
1160- let fX = if ((dZ > 0))
1159+ let gh = [ScriptTransfer(dL.caller, dT, eG)]
1160+ let fY = if ((dZ > 0))
11611161 then [ScriptTransfer(aP, dZ, eG)]
11621162 else nil
1163- let go = {
1164- let gi = if ((this == aP))
1163+ let gp = {
1164+ let gj = if ((this == aP))
11651165 then 0
11661166 else dZ
11671167 if (eI)
1168- then $Tuple2(-((dT + gi)), 0)
1169- else $Tuple2(0, -((dT + gi)))
1168+ then $Tuple2(-((dT + gj)), 0)
1169+ else $Tuple2(0, -((dT + gj)))
11701170 }
1171- let du = go._1
1172- let dv = go._2
1173- let gp = dt(du, dv, 0)
1174- let fJ = gp._1
1175- let dk = gp._2
1176- let fK = dx(ds, dk)
1177- if ((fK == fK))
1178- then $Tuple2((((de ++ gg) ++ fX) ++ fJ), dT)
1171+ let du = gp._1
1172+ let dv = gp._2
1173+ let gq = dt(du, dv, 0)
1174+ let fK = gq._1
1175+ let dk = gq._2
1176+ let fL = dx(ds, dk)
1177+ if ((fL == fL))
1178+ then $Tuple2((((de ++ gh) ++ fY) ++ fK), dT)
11791179 else throw("Strict value is not equal to itself.")
11801180 }
11811181 else throw("Strict value is not equal to itself.")
11941194 @Callable(dL)
11951195 func get () = {
11961196 let cP = dK(dL)
1197- let gq = cP._1
1197+ let gr = cP._1
11981198 let cw = cP._2
11991199 let dN = cP._3
12001200 let ce = cP._4
12021202 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
12031203 if ((ds == ds))
12041204 then {
1205- let gr = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1206- if ((gr == gr))
1205+ let gs = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1206+ if ((gs == gs))
12071207 then {
1208- let gs = dt(-(gq), -(cw), 0)
1209- let fJ = gs._1
1210- let dk = gs._2
1211- let fK = dx(ds, dk)
1212- if ((fK == fK))
1213- then (cx ++ fJ)
1208+ let gt = dt(-(gr), -(cw), 0)
1209+ let fK = gt._1
1210+ let dk = gt._2
1211+ let fL = dx(ds, dk)
1212+ if ((fL == fL))
1213+ then (cx ++ fK)
12141214 else throw("Strict value is not equal to itself.")
12151215 }
12161216 else throw("Strict value is not equal to itself.")
12211221
12221222
12231223 @Callable(dL)
1224-func getNoLess (gt,gu) = {
1224+func getNoLess (gu,gv) = {
12251225 let cP = dK(dL)
12261226 let cv = cP._1
12271227 let cw = cP._2
12281228 let dN = cP._3
12291229 let ce = cP._4
12301230 let cx = cP._5
1231- if ((gt > cv))
1232- then throw(((("noLessThenAmtAsset failed: " + toString(cv)) + " < ") + toString(gt)))
1233- else if ((gu > cw))
1234- then throw(((("noLessThenPriceAsset failed: " + toString(cw)) + " < ") + toString(gu)))
1231+ if ((gu > cv))
1232+ then throw(((("noLessThenAmtAsset failed: " + toString(cv)) + " < ") + toString(gu)))
1233+ else if ((gv > cw))
1234+ then throw(((("noLessThenPriceAsset failed: " + toString(cw)) + " < ") + toString(gv)))
12351235 else {
12361236 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
12371237 if ((ds == ds))
12381238 then {
1239- let gr = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1240- if ((gr == gr))
1239+ let gs = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1240+ if ((gs == gs))
12411241 then {
1242- let gv = dt(-(cv), -(cw), 0)
1243- let fJ = gv._1
1244- let dk = gv._2
1245- let fK = dx(ds, dk)
1246- if ((fK == fK))
1247- then (cx ++ fJ)
1242+ let gw = dt(-(cv), -(cw), 0)
1243+ let fK = gw._1
1244+ let dk = gw._2
1245+ let fL = dx(ds, dk)
1246+ if ((fL == fL))
1247+ then (cx ++ fK)
12481248 else throw("Strict value is not equal to itself.")
12491249 }
12501250 else throw("Strict value is not equal to itself.")
12571257
12581258 @Callable(dL)
12591259 func unstakeAndGet (dT) = {
1260- let gw = if ((size(dL.payments) != 0))
1260+ let gx = if ((size(dL.payments) != 0))
12611261 then throw("No payments are expected")
12621262 else true
1263- if ((gw == gw))
1263+ if ((gx == gx))
12641264 then {
12651265 let bT = aV()
12661266 let cg = fromBase58String(bT[q])
12671267 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
12681268 if ((ds == ds))
12691269 then {
1270- let gm = invoke(bn, "unstake", [toBase58String(cg), dT], nil)
1271- if ((gm == gm))
1270+ let gn = invoke(bn, "unstake", [toBase58String(cg), dT], nil)
1271+ if ((gn == gn))
12721272 then {
12731273 let cP = cc(toBase58String(dL.transactionId), toBase58String(cg), dT, dL.caller)
12741274 let cv = cP._1
12751275 let cw = cP._2
12761276 let cj = parseIntValue(cP._9)
12771277 let cx = cP._10
1278- let gx = if (if (aT())
1278+ let gy = if (if (aT())
12791279 then true
12801280 else (cj == n))
12811281 then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
12821282 else true
1283- if ((gx == gx))
1283+ if ((gy == gy))
12841284 then {
1285- let gr = invoke(aO, "burn", [dT], [AttachedPayment(cg, dT)])
1286- if ((gr == gr))
1285+ let gs = invoke(aO, "burn", [dT], [AttachedPayment(cg, dT)])
1286+ if ((gs == gs))
12871287 then {
1288- let gy = dt(-(cv), -(cw), 0)
1289- let fJ = gy._1
1290- let dk = gy._2
1291- let fK = dx(ds, dk)
1292- if ((fK == fK))
1293- then (cx ++ fJ)
1288+ let gz = dt(-(cv), -(cw), 0)
1289+ let fK = gz._1
1290+ let dk = gz._2
1291+ let fL = dx(ds, dk)
1292+ if ((fL == fL))
1293+ then (cx ++ fK)
12941294 else throw("Strict value is not equal to itself.")
12951295 }
12961296 else throw("Strict value is not equal to itself.")
13071307
13081308
13091309 @Callable(dL)
1310-func unstakeAndGetNoLess (gl,gz,gu) = {
1311- let gc = if (aT())
1310+func unstakeAndGetNoLess (gm,gA,gv) = {
1311+ let gd = if (aT())
13121312 then true
13131313 else (bg == n)
1314- let eH = [if (!(gc))
1314+ let eH = [if (!(gd))
13151315 then true
13161316 else throw("get operation is blocked by admin"), if ((size(dL.payments) == 0))
13171317 then true
13211321 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
13221322 if ((ds == ds))
13231323 then {
1324- let gm = invoke(bn, "unstake", [toBase58String(bh), gl], nil)
1325- if ((gm == gm))
1324+ let gn = invoke(bn, "unstake", [toBase58String(bh), gm], nil)
1325+ if ((gn == gn))
13261326 then {
1327- let cP = cc(toBase58String(dL.transactionId), toBase58String(bh), gl, dL.caller)
1327+ let cP = cc(toBase58String(dL.transactionId), toBase58String(bh), gm, dL.caller)
13281328 let cv = cP._1
13291329 let cw = cP._2
13301330 let cx = cP._10
1331- let gA = [if ((cv >= gz))
1331+ let gB = [if ((cv >= gA))
13321332 then true
1333- else throw(makeString(["amount asset amount to receive is less than ", toString(gz)], "")), if ((cw >= gu))
1333+ else throw(makeString(["amount asset amount to receive is less than ", toString(gA)], "")), if ((cw >= gv))
13341334 then true
1335- else throw(makeString(["price asset amount to receive is less than ", toString(gu)], ""))]
1336- if ((gA == gA))
1335+ else throw(makeString(["price asset amount to receive is less than ", toString(gv)], ""))]
1336+ if ((gB == gB))
13371337 then {
1338- let gr = invoke(aO, "burn", [gl], [AttachedPayment(bh, gl)])
1339- if ((gr == gr))
1338+ let gs = invoke(aO, "burn", [gm], [AttachedPayment(bh, gm)])
1339+ if ((gs == gs))
13401340 then {
1341- let gB = dt(-(cv), -(cw), 0)
1342- let fJ = gB._1
1343- let dk = gB._2
1344- let fK = dx(ds, dk)
1345- if ((fK == fK))
1346- then (cx ++ fJ)
1341+ let gC = dt(-(cv), -(cw), 0)
1342+ let fK = gC._1
1343+ let dk = gC._2
1344+ let fL = dx(ds, dk)
1345+ if ((fL == fL))
1346+ then (cx ++ fK)
13471347 else throw("Strict value is not equal to itself.")
13481348 }
13491349 else throw("Strict value is not equal to itself.")
13601360
13611361
13621362 @Callable(dL)
1363-func activate (gC,gD) = if ((toString(dL.caller) != toString(aO)))
1363+func activate (gD,gE) = if ((toString(dL.caller) != toString(aO)))
13641364 then throw("permissions denied")
1365- else $Tuple2([StringEntry(ae(), gC), StringEntry(af(), gD)], "success")
1365+ else $Tuple2([StringEntry(ae(), gD), StringEntry(af(), gE)], "success")
13661366
13671367
13681368
13691369 @Callable(dL)
13701370 func refreshKLp () = {
1371- let gE = valueOrElse(getInteger(ak), 0)
1372- let gF = if (((height - gE) >= an))
1371+ let gF = valueOrElse(getInteger(ak), 0)
1372+ let gG = if (((height - gF) >= an))
13731373 then unit
13741374 else aL(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1375- if ((gF == gF))
1375+ if ((gG == gG))
13761376 then {
13771377 let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
1378- let gG = dt(0, 0, 0)
1379- let gH = gG._1
1380- let dk = gG._2
1378+ let gH = dt(0, 0, 0)
1379+ let gI = gH._1
1380+ let dk = gH._2
13811381 let dw = if ((dE != dk))
1382- then gH
1382+ then gI
13831383 else aL("nothing to refresh")
13841384 $Tuple2(dw, toString(dk))
13851385 }
14381438 func statsREADONLY () = {
14391439 let bT = aV()
14401440 let cg = fromBase58String(bT[q])
1441- let gI = bT[r]
1442- let gJ = bT[s]
1441+ let gJ = bT[r]
1442+ let gK = bT[s]
14431443 let cI = bT[v]
14441444 let cJ = bT[w]
14451445 let bU = parseIntValue(bT[t])
14461446 let bV = parseIntValue(bT[u])
1447- let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1448- let gL = bE(gI)
1447+ let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
14491448 let gM = bE(gJ)
1450- let gN = if ((gK == 0))
1449+ let gN = bE(gK)
1450+ let gO = if ((gL == 0))
14511451 then [e, e, e]
1452- else bR(gL, gM, gK)
1452+ else bR(gM, gN, gL)
14531453 let cq = 0
1454- let gO = H(gN[1], b)
1455- let gP = H(gN[2], b)
1456- let gQ = value(getInteger(aO, ay(toString(this))))
1457- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gL), toString(gM), toString(gK), toString(cq), toString(gO), toString(gP), toString(gQ)], j))
1454+ let gP = H(gO[1], b)
1455+ let gQ = H(gO[2], b)
1456+ let gR = value(getInteger(aO, ay(toString(this))))
1457+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gM), toString(gN), toString(gL), toString(cq), toString(gP), toString(gQ), toString(gR)], j))
14581458 }
14591459
14601460
14701470 let bU = parseIntValue(bT[t])
14711471 let bV = parseIntValue(bT[u])
14721472 let cj = bT[p]
1473- let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1474- let gL = bE(cG)
1475- let gM = bE(cH)
1476- let bP = D(gL, bU)
1477- let bQ = D(gM, bV)
1478- let cp = if ((gK == 0))
1473+ let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1474+ let gM = bE(cG)
1475+ let gN = bE(cH)
1476+ let bP = D(gM, bU)
1477+ let bQ = D(gN, bV)
1478+ let cp = if ((gL == 0))
14791479 then e
14801480 else bG(bQ, bP)
14811481 let cM = D(cA, bU)
14831483 let cC = H(cN, bV)
14841484 let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
14851485 let cX = dR._1
1486- let gR = dR._3
1486+ let gS = dR._3
14871487 let cl = dR._4
14881488 let cn = dR._5
14891489 let ck = dR._6
15031503 let bU = parseIntValue(bT[t])
15041504 let bV = parseIntValue(bT[u])
15051505 let cj = bT[p]
1506- let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1507- let gS = bE(cG)
1508- let gT = bE(cH)
1509- let gU = D(gS, bU)
1510- let gV = D(gT, bV)
1511- let cp = if ((gK == 0))
1506+ let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1507+ let gT = bE(cG)
1508+ let gU = bE(cH)
1509+ let gV = D(gT, bU)
1510+ let gW = D(gU, bV)
1511+ let cp = if ((gL == 0))
15121512 then e
1513- else bG(gV, gU)
1513+ else bG(gW, gV)
15141514 let cN = D(cC, bV)
15151515 let cM = fraction(cN, d, cp)
15161516 let cA = H(cM, bU)
15171517 let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
15181518 let cX = dR._1
1519- let gR = dR._3
1519+ let gS = dR._3
15201520 let cl = dR._4
15211521 let cn = dR._5
15221522 let ck = dR._6
15261526
15271527
15281528 @Callable(dL)
1529-func evaluateGetREADONLY (gW,gX) = {
1530- let cP = cc("", gW, gX, this)
1529+func evaluateGetREADONLY (gX,gY) = {
1530+ let cP = cc("", gX, gY, this)
15311531 let cv = cP._1
15321532 let cw = cP._2
15331533 let cl = cP._5
15391539 }
15401540
15411541
1542-@Verifier(gY)
1543-func gZ () = {
1544- let ha = {
1542+@Verifier(gZ)
1543+func ha () = {
1544+ let hb = {
15451545 let dW = eZ()
15461546 if ($isInstanceOf(dW, "ByteVector"))
15471547 then {
15491549 fd
15501550 }
15511551 else if ($isInstanceOf(dW, "Unit"))
1552- then gY.senderPublicKey
1552+ then gZ.senderPublicKey
15531553 else throw("Match error")
15541554 }
1555- let dW = gY
1555+ let dW = gZ
15561556 if ($isInstanceOf(dW, "Order"))
15571557 then {
15581558 let dA = dW
1559- let hb = aU()
1560- let hc = dz(dA)
1561- let aD = hc._1
1562- let aE = hc._2
1559+ let hc = aU()
1560+ let hd = dz(dA)
1561+ let aD = hd._1
1562+ let aE = hd._2
15631563 let aF = sigVerify(dA.bodyBytes, dA.proofs[0], dA.senderPublicKey)
1564- let aG = sigVerify(dA.bodyBytes, dA.proofs[1], hb)
1564+ let aG = sigVerify(dA.bodyBytes, dA.proofs[1], hc)
15651565 if (if (if (aD)
15661566 then aF
15671567 else false)
15731573 else if ($isInstanceOf(dW, "SetScriptTransaction"))
15741574 then {
15751575 let fa = dW
1576- if (sigVerify(gY.bodyBytes, gY.proofs[0], ha))
1576+ if (sigVerify(gZ.bodyBytes, gZ.proofs[0], hb))
15771577 then true
15781578 else {
1579- let hd = blake2b256(value(fa.script))
1580- let he = fromBase64String(value(getString(aO, aA())))
1581- let hf = scriptHash(this)
1582- if ((he == hd))
1583- then (hf != hd)
1579+ let he = blake2b256(value(fa.script))
1580+ let hf = fromBase64String(value(getString(aO, aA())))
1581+ let hg = scriptHash(this)
1582+ if ((hf == he))
1583+ then (hg != he)
15841584 else false
15851585 }
15861586 }
1587- else sigVerify(gY.bodyBytes, gY.proofs[0], ha)
1587+ else sigVerify(gZ.bodyBytes, gZ.proofs[0], hb)
15881588 }
15891589
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
2121
2222 let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
6565 func G (E,F) = fraction(E, d, F)
6666
6767
6868 func H (I,J) = toInt(fraction(I, toBigInt(J), d))
6969
7070
7171 func K (I,J,L) = toInt(fraction(I, toBigInt(J), d, L))
7272
7373
7474 func M (N,O,P) = fraction(N, O, P)
7575
7676
7777 func Q (I) = if ((0 > I))
7878 then -(I)
7979 else I
8080
8181
8282 func R (I) = if ((e > I))
8383 then -(I)
8484 else I
8585
8686
8787 func S () = "%s__swapContract"
8888
8989
9090 func T () = "%s__factoryContract"
9191
9292
9393 func U () = "%s__managerPublicKey"
9494
9595
9696 func V () = "%s__pendingManagerPublicKey"
9797
9898
9999 func W () = "%s%s__price__last"
100100
101101
102102 func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], j)
103103
104104
105105 func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
106106
107107
108108 func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
109109
110110
111111 func ae () = "%s__amountAsset"
112112
113113
114114 func af () = "%s__priceAsset"
115115
116116
117117 let ag = "%s__fee"
118118
119119 let ah = fraction(10, b, 10000)
120120
121121 let ai = valueOrElse(getInteger(this, ag), ah)
122122
123123 let aj = makeString(["%s", "kLp"], j)
124124
125125 let ak = makeString(["%s", "kLpRefreshedHeight"], j)
126126
127127 let al = makeString(["%s", "refreshKLpDelay"], j)
128128
129129 let am = 30
130130
131131 let an = valueOrElse(getInteger(this, al), am)
132132
133133 func ao () = "%s__factoryConfig"
134134
135135
136136 func ap () = "%s%s__matcher__publicKey"
137137
138138
139139 func aq (ar) = (("%s%s%s__" + ar) + "__mappings__poolContract2LpAsset")
140140
141141
142142 func as (at,au) = (((("%d%d%s__" + at) + "__") + au) + "__config")
143143
144144
145145 func av (aw) = ("%s%s%s__mappings__baseAsset2internalId__" + aw)
146146
147147
148148 func ax () = "%s__shutdown"
149149
150150
151151 func ay (az) = ("%s%s__poolWeight__" + az)
152152
153153
154154 func aA () = "%s__allowedLpScriptHash"
155155
156156
157157 let aB = "%s__feeCollectorAddress"
158158
159159 func aC (aD,aE,aF,aG) = throw((((((((("order validation failed: orderValid=" + toString(aD)) + " (") + aE) + ")") + " senderValid=") + toString(aF)) + " matcherValid=") + toString(aG)))
160160
161161
162162 func aH (aI,aJ) = valueOrErrorMessage(getString(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
163163
164164
165165 func aK (aI,aJ) = valueOrErrorMessage(getInteger(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
166166
167167
168168 func aL (aM) = throw(makeString(["lp.ride:", aM], " "))
169169
170170
171171 func aN (aM) = makeString(["lp.ride:", aM], " ")
172172
173173
174174 let aO = addressFromStringValue(aH(this, T()))
175175
176176 let aP = addressFromStringValue(aH(aO, aB))
177177
178178 let aQ = {
179179 let aR = invoke(aO, "getInFeeREADONLY", [toString(this)], nil)
180180 if ($isInstanceOf(aR, "Int"))
181181 then aR
182182 else throw(($getType(aR) + " couldn't be cast to Int"))
183183 }
184184
185185 let aS = {
186186 let aR = invoke(aO, "getOutFeeREADONLY", [toString(this)], nil)
187187 if ($isInstanceOf(aR, "Int"))
188188 then aR
189189 else throw(($getType(aR) + " couldn't be cast to Int"))
190190 }
191191
192192 func aT () = valueOrElse(getBoolean(aO, ax()), false)
193193
194194
195195 func aU () = fromBase58String(aH(aO, ap()))
196196
197197
198198 func aV () = {
199199 let aW = aH(this, ae())
200200 let aX = aH(this, af())
201201 let au = aK(aO, av(aX))
202202 let at = aK(aO, av(aW))
203203 split(aH(aO, as(toString(at), toString(au))), j)
204204 }
205205
206206
207207 func aY (aZ) = if ((aZ == i))
208208 then unit
209209 else fromBase58String(aZ)
210210
211211
212212 func ba (aZ) = if ((aZ == unit))
213213 then i
214214 else toBase58String(value(aZ))
215215
216216
217217 func bb (bc) = $Tuple7(addressFromStringValue(bc[o]), parseIntValue(bc[p]), fromBase58String(bc[q]), aY(bc[r]), aY(bc[s]), parseIntValue(bc[t]), parseIntValue(bc[u]))
218218
219219
220220 let bd = bb(aV())
221221
222222 let be = bd
223223
224224 let bf = be._1
225225
226226 let bg = be._2
227227
228228 let bh = be._3
229229
230230 let bi = be._4
231231
232232 let bj = be._5
233233
234234 let bk = be._6
235235
236236 let bl = be._7
237237
238238 func bm () = split(aH(aO, ao()), j)
239239
240240
241241 let bn = valueOrErrorMessage(addressFromString(bm()[B]), "incorrect staking address")
242242
243243 let bo = valueOrErrorMessage(addressFromString(bm()[C]), "incorrect staking address")
244244
245245 func bp (bq,br,bs,bt,bu,bv,bw,bx,by,bz) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz)], j)
246246
247247
248248 func bA (bB,bC,bD,bt,bw,bx) = makeString(["%d%d%d%d%d%d", toString(bB), toString(bC), toString(bD), toString(bt), toString(bw), toString(bx)], j)
249249
250250
251251 func bE (bF) = if ((bF == "WAVES"))
252252 then wavesBalance(this).available
253253 else assetBalance(this, fromBase58String(bF))
254254
255255
256256 func bG (bH,bI) = fraction(bH, d, bI)
257257
258258
259259 func bJ (bH,bI,L) = fraction(bH, d, bI, L)
260260
261261
262262 func bK (bL,bM,bN,bO) = {
263263 let bP = D(bN, bL)
264264 let bQ = D(bO, bM)
265265 bG(bQ, bP)
266266 }
267267
268268
269269 func bR (bN,bO,bS) = {
270270 let bT = aV()
271271 let bU = parseIntValue(bT[t])
272272 let bV = parseIntValue(bT[u])
273273 let bW = bK(bU, bV, bN, bO)
274274 let bI = D(bN, bU)
275275 let bH = D(bO, bV)
276276 let bX = D(bS, b)
277277 let bY = bG(bI, bX)
278278 let bZ = bG(bH, bX)
279279 [bW, bY, bZ]
280280 }
281281
282282
283283 func ca (bN,bO,bS) = {
284284 let cb = bR(bN, bO, bS)
285285 [H(cb[0], b), H(cb[1], b), H(cb[2], b)]
286286 }
287287
288288
289289 func cc (cd,ce,cf,ab) = {
290290 let bT = aV()
291291 let cg = bT[q]
292292 let ch = bT[r]
293293 let ci = bT[s]
294294 let bL = parseIntValue(bT[t])
295295 let bM = parseIntValue(bT[u])
296296 let cj = bT[p]
297297 let ck = valueOrErrorMessage(assetInfo(fromBase58String(cg)), (("Asset " + cg) + " doesn't exist")).quantity
298298 if ((cg != ce))
299299 then throw("Invalid asset passed.")
300300 else {
301301 let cl = bE(ch)
302302 let cm = D(cl, bL)
303303 let cn = bE(ci)
304304 let co = D(cn, bM)
305305 let cp = bG(co, cm)
306306 let cq = H(cp, b)
307307 let cr = D(cf, b)
308308 let cs = D(ck, b)
309309 let ct = fraction(cm, cr, cs)
310310 let cu = fraction(co, cr, cs)
311311 let cv = K(ct, bL, FLOOR)
312312 let cw = K(cu, bM, FLOOR)
313313 let cx = if ((cd == ""))
314314 then nil
315315 else [ScriptTransfer(ab, cv, if ((ch == "WAVES"))
316316 then unit
317317 else fromBase58String(ch)), ScriptTransfer(ab, cw, if ((ci == "WAVES"))
318318 then unit
319319 else fromBase58String(ci)), StringEntry(ad(toString(ab), cd), bA(cv, cw, cf, cq, height, lastBlock.timestamp)), IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq)]
320320 $Tuple10(cv, cw, ch, ci, cl, cn, ck, cp, cj, cx)
321321 }
322322 }
323323
324324
325325 func cy (cd,cz,cA,cB,cC,cD,ab,cE,cF) = {
326326 let bT = aV()
327327 let cg = fromBase58String(bT[q])
328328 let cG = bT[r]
329329 let cH = bT[s]
330330 let cI = bT[v]
331331 let cJ = bT[w]
332332 let bU = parseIntValue(bT[t])
333333 let bV = parseIntValue(bT[u])
334334 let cj = bT[p]
335335 let ck = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
336336 let cK = toBase58String(valueOrElse(cB, fromBase58String("WAVES")))
337337 let cL = toBase58String(valueOrElse(cD, fromBase58String("WAVES")))
338338 if (if ((cG != cK))
339339 then true
340340 else (cH != cL))
341341 then throw("Invalid amt or price asset passed.")
342342 else {
343343 let cl = if (cE)
344344 then bE(cG)
345345 else (bE(cG) - cA)
346346 let cn = if (cE)
347347 then bE(cH)
348348 else (bE(cH) - cC)
349349 let cM = D(cA, bU)
350350 let cN = D(cC, bV)
351351 let cO = bG(cN, cM)
352352 let cm = D(cl, bU)
353353 let co = D(cn, bV)
354354 let cP = if ((ck == 0))
355355 then {
356356 let cp = e
357357 let cQ = e
358358 let bX = pow((cM * cN), 0, toBigInt(5), 1, 0, DOWN)
359359 $Tuple5(H(bX, b), H(cM, bU), H(cN, bV), bG((co + cN), (cm + cM)), cQ)
360360 }
361361 else {
362362 let cp = bG(co, cm)
363363 let cQ = fraction(R((cp - cO)), d, cp)
364364 let cR = D(cz, b)
365365 if (if ((cp != e))
366366 then (cQ > cR)
367367 else false)
368368 then throw(((("Price slippage " + toString(cQ)) + " exceeded the passed limit of ") + toString(cR)))
369369 else {
370370 let cs = D(ck, b)
371371 let cS = fraction(cM, bJ(co, cm, CEILING), d, CEILING)
372372 let cT = fraction(cN, d, bJ(co, cm, FLOOR), CEILING)
373373 let cU = if ((cS > cN))
374374 then $Tuple2(cT, cN)
375375 else $Tuple2(cM, cS)
376376 let cV = cU._1
377377 let cW = cU._2
378378 let bX = fraction(cs, cW, co, FLOOR)
379379 $Tuple5(K(bX, b, FLOOR), K(cV, bU, CEILING), K(cW, bV, CEILING), cp, cQ)
380380 }
381381 }
382382 let cX = cP._1
383383 let cY = cP._2
384384 let cZ = cP._3
385385 let cq = H(cP._4, b)
386386 let da = H(cP._5, b)
387387 if ((0 >= cX))
388388 then throw("Invalid calculations. LP calculated is less than zero.")
389389 else {
390390 let db = if (!(cF))
391391 then 0
392392 else cX
393393 let dc = (cA - cY)
394394 let dd = (cC - cZ)
395395 let de = [IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq), StringEntry(aa(ab, cd), bp(cY, cZ, db, cq, cz, da, height, lastBlock.timestamp, dc, dd))]
396396 $Tuple13(cX, db, cq, cl, cn, ck, cg, cj, de, dc, dd, cB, cD)
397397 }
398398 }
399399 }
400400
401401
402402 func df (dg,dh,ck) = {
403403 let di = G(dg, toBigInt(bk))
404404 let dj = G(dh, toBigInt(bl))
405405 let dk = fraction(pow((di * dj), 0, toBigInt(5), 1, 18, DOWN), g, ck)
406406 if ((ck == f))
407407 then f
408408 else dk
409409 }
410410
411411
412412 func dl (dm,dn,do) = {
413413 let dp = (toBigInt(bE(ba(bi))) - dm)
414414 let dq = (toBigInt(bE(ba(bj))) - dn)
415415 let dr = (toBigInt(value(assetInfo(bh)).quantity) - do)
416416 let ds = df(dp, dq, dr)
417417 ds
418418 }
419419
420420
421421 func dt (du,dv,do) = {
422422 let dp = (bE(ba(bi)) + du)
423423 let dq = (bE(ba(bj)) + dv)
424424 let dr = (value(assetInfo(bh)).quantity + do)
425425 let dk = df(toBigInt(dp), toBigInt(dq), toBigInt(dr))
426426 let dw = [IntegerEntry(ak, height), StringEntry(aj, toString(dk))]
427427 $Tuple2(dw, dk)
428428 }
429429
430430
431431 func dx (dy,dk) = if ((dk >= dy))
432432 then true
433433 else aL(makeString(["updated KLp lower than current KLp", toString(dy), toString(dk)], " "))
434434
435435
436436 func dz (dA) = {
437437 let dp = bE(ba(bi))
438438 let dq = bE(ba(bj))
439439 let dB = dA.amount
440440 let dC = fraction(dA.amount, dA.price, b, FLOOR)
441441 let dD = if ((dA.orderType == Buy))
442442 then $Tuple2(dB, -(dC))
443443 else $Tuple2(-(dB), dC)
444444 let du = dD._1
445445 let dv = dD._2
446446 if (if (if (aT())
447447 then true
448448 else (bg == m))
449449 then true
450450 else (bg == n))
451451 then throw("Exchange operations disabled")
452452 else if (if ((dA.assetPair.amountAsset != bi))
453453 then true
454454 else (dA.assetPair.priceAsset != bj))
455455 then throw("Wrong order assets.")
456456 else {
457457 let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
458458 let dF = dt(du, dv, 0)
459459 let dG = dF._1
460460 let dH = dF._2
461461 let dI = (dH >= dE)
462462 let dJ = makeString(["kLp=", toString(dE), " kLpNew=", toString(dH), " amountAssetBalance=", toString(dp), " priceAssetBalance=", toString(dq), " amountAssetBalanceDelta=", toString(du), " priceAssetBalanceDelta=", toString(dv), " height=", toString(height)], "")
463463 $Tuple2(dI, dJ)
464464 }
465465 }
466466
467467
468468 func dK (dL) = if ((size(dL.payments) != 1))
469469 then throw("exactly 1 payment is expected")
470470 else {
471471 let dM = value(dL.payments[0])
472472 let ce = value(dM.assetId)
473473 let dN = dM.amount
474474 let cP = cc(toBase58String(dL.transactionId), toBase58String(ce), dN, dL.caller)
475475 let cv = cP._1
476476 let cw = cP._2
477477 let cj = parseIntValue(cP._9)
478478 let cx = cP._10
479479 if (if (aT())
480480 then true
481481 else (cj == n))
482482 then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
483483 else $Tuple5(cv, cw, dN, ce, cx)
484484 }
485485
486486
487487 func dO (dL,cz,cF) = if ((size(dL.payments) != 2))
488488 then throw("exactly 2 payments are expected")
489489 else {
490490 let dP = value(dL.payments[0])
491491 let dQ = value(dL.payments[1])
492492 let dR = cy(toBase58String(dL.transactionId), cz, dP.amount, dP.assetId, dQ.amount, dQ.assetId, toString(dL.caller), false, cF)
493493 let cj = parseIntValue(dR._8)
494494 if (if (if (aT())
495495 then true
496496 else (cj == l))
497497 then true
498498 else (cj == n))
499499 then throw(("Put operation is blocked by admin. Status = " + toString(cj)))
500500 else dR
501501 }
502502
503503
504504 func dS (dT) = {
505505 let dU = invoke(aO, "emit", [dT], nil)
506506 if ((dU == dU))
507507 then {
508508 let dV = {
509509 let dW = dU
510510 if ($isInstanceOf(dW, "Address"))
511511 then {
512512 let dX = dW
513513 invoke(dX, "emit", [dT], nil)
514514 }
515515 else unit
516516 }
517517 if ((dV == dV))
518518 then dT
519519 else throw("Strict value is not equal to itself.")
520520 }
521521 else throw("Strict value is not equal to itself.")
522522 }
523523
524524
525525 func dY (dT,ai) = {
526526 let dZ = if ((ai == 0))
527527 then 0
528528 else fraction(dT, ai, b)
529529 $Tuple2((dT - dZ), dZ)
530530 }
531531
532532
533533 func ea (eb,ec,ab,ac) = {
534534 let ed = (ac == unit)
535535 let ee = bE(ba(bi))
536536 let ef = bE(ba(bj))
537537 let eg = if ((ec == bi))
538538 then true
539539 else if ((ec == bj))
540540 then false
541541 else aL("invalid asset")
542542 let eh = if (ed)
543543 then $Tuple2(ee, ef)
544544 else if (eg)
545545 then $Tuple2((ee - eb), ef)
546546 else $Tuple2(ee, (ef - eb))
547547 let ei = eh._1
548548 let ej = eh._2
549549 let ek = if (eg)
550550 then $Tuple2(eb, 0)
551551 else $Tuple2(0, eb)
552552 let el = ek._1
553553 let em = ek._2
554554 let dB = dY(el, aQ)._1
555555 let dC = dY(em, aQ)._1
556556 let en = dY(eb, aQ)
557557 let eo = en._1
558558 let dZ = en._2
559559 let ep = (ei + dB)
560560 let eq = (ej + dC)
561561 let er = bG(D(eq, bl), D(ep, bk))
562562 let es = H(er, b)
563563 let et = if (eg)
564564 then ei
565565 else ej
566566 let eu = toBigInt(et)
567567 let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
568568 let ew = if ((ev > f))
569569 then true
570570 else aL("initial deposit requires all coins")
571571 if ((ew == ew))
572572 then {
573573 let ex = toBigInt(eo)
574574 let ey = max([0, toInt(((ev * (sqrtBigInt((d + ((ex * d) / eu)), 18, 18, DOWN) - d)) / d))])
575575 let de = if (ed)
576576 then nil
577577 else [IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bp(el, em, ey, es, 0, 0, height, lastBlock.timestamp, 0, 0))]
578578 let ez = bG(D(ej, bl), D(ei, bk))
579579 let eA = H(ez, b)
580580 let eB = {
581581 let eC = if (eg)
582582 then $Tuple2(el, ei)
583583 else $Tuple2(em, ej)
584584 let dT = eC._1
585585 let eD = eC._2
586586 let eE = toInt(fraction(ev, toBigInt((dT / 2)), toBigInt(eD)))
587587 fraction((ey - eE), b, eE)
588588 }
589589 $Tuple5(ey, de, dZ, eB, eg)
590590 }
591591 else throw("Strict value is not equal to itself.")
592592 }
593593
594594
595595 func eF (eG,eo,ec,ab,ac) = {
596596 let ed = (ac == unit)
597597 let bT = aV()
598598 let bU = parseIntValue(bT[t])
599599 let bV = parseIntValue(bT[u])
600600 let eH = [if ((ec == bh))
601601 then true
602602 else aL("invalid lp asset")]
603603 if ((eH == eH))
604604 then {
605605 let eI = if ((eG == bi))
606606 then true
607607 else if ((eG == bj))
608608 then false
609609 else aL("invalid asset")
610610 let eJ = if (eI)
611611 then toBigInt(bE(ba(bi)))
612612 else toBigInt(bE(ba(bj)))
613613 let eK = if (eI)
614614 then bU
615615 else bV
616616 let eL = bE(ba(bi))
617617 let eM = bE(ba(bj))
618618 let eN = if (eI)
619619 then eL
620620 else eM
621621 let eO = toBigInt(eN)
622622 let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
623623 let eP = toBigInt(eo)
624624 let eQ = max([0, toInt(((eJ * (d - pow((d - ((eP * d) / ev)), 18, h, 0, 18, DOWN))) / d))])
625625 let eR = dY(eQ, aS)
626626 let eS = eR._1
627627 let dZ = eR._2
628628 let eT = if (eI)
629629 then $Tuple4(eS, 0, (eL - eQ), eM)
630630 else $Tuple4(0, eS, eL, (eM - eQ))
631631 let eU = eT._1
632632 let eV = eT._2
633633 let eW = eT._3
634634 let eX = eT._4
635635 let er = bG(D(eX, bl), D(eW, bk))
636636 let es = H(er, b)
637637 let de = if (ed)
638638 then nil
639639 else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bA(eU, eV, eo, es, height, lastBlock.timestamp)), IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es)]
640640 let ez = bG(D(eM, bl), D(eL, bk))
641641 let eA = H(ez, b)
642642 let eB = {
643643 let eY = (toInt(fraction(eJ, eP, ev)) * 2)
644644 fraction((eS - eY), b, eY)
645645 }
646646 $Tuple5(eS, de, dZ, eB, eI)
647647 }
648648 else throw("Strict value is not equal to itself.")
649649 }
650650
651651
652652 func eZ () = {
653653 let dW = getString(U())
654654 if ($isInstanceOf(dW, "String"))
655655 then {
656656 let fa = dW
657657 fromBase58String(fa)
658658 }
659659 else if ($isInstanceOf(dW, "Unit"))
660660 then unit
661661 else throw("Match error")
662662 }
663663
664664
665665 func fb () = {
666666 let dW = getString(V())
667667 if ($isInstanceOf(dW, "String"))
668668 then {
669669 let fa = dW
670670 fromBase58String(fa)
671671 }
672672 else if ($isInstanceOf(dW, "Unit"))
673673 then unit
674674 else throw("Match error")
675675 }
676676
677677
678678 func fc (dL) = {
679679 let dW = eZ()
680680 if ($isInstanceOf(dW, "ByteVector"))
681681 then {
682682 let fd = dW
683683 (dL.callerPublicKey == fd)
684684 }
685685 else if ($isInstanceOf(dW, "Unit"))
686686 then (dL.caller == this)
687687 else throw("Match error")
688688 }
689689
690690
691691 func fe (dL) = {
692692 let ff = throw("Permission denied")
693693 let dW = eZ()
694694 if ($isInstanceOf(dW, "ByteVector"))
695695 then {
696696 let fd = dW
697697 if ((dL.callerPublicKey == fd))
698698 then true
699699 else ff
700700 }
701701 else if ($isInstanceOf(dW, "Unit"))
702702 then if ((dL.caller == this))
703703 then true
704704 else ff
705705 else throw("Match error")
706706 }
707707
708708
709709 @Callable(dL)
710-func calculateAmountOutForSwapREADONLY (fg,fh) = {
711- let fi = if ((fh == false))
710+func calculateAmountOutForSwapREADONLY (fg,fh,fi) = {
711+ let fj = if ((fh == false))
712712 then {
713- let fj = aH(this, af())
714- let fk = aH(this, ae())
715- $Tuple2(fj, fk)
713+ let fk = aH(this, af())
714+ let fl = aH(this, ae())
715+ $Tuple2(fk, fl)
716716 }
717717 else {
718- let fj = aH(this, ae())
719- let fk = aH(this, af())
720- $Tuple2(fj, fk)
718+ let fk = aH(this, ae())
719+ let fl = aH(this, af())
720+ $Tuple2(fk, fl)
721721 }
722- let fj = fi._1
723- let fk = fi._2
724- let fl = bE(fk)
725- let fm = bE(fj)
726- let fn = fraction(fm, fg, (fl + fg))
727- let fo = (toBigInt(fl) * toBigInt(fm))
728- let fp = ((toBigInt(bE(fk)) + toBigInt(fg)) * (toBigInt(bE(fj)) - toBigInt(fn)))
729- let fq = if ((fp >= fo))
722+ let fk = fj._1
723+ let fl = fj._2
724+ let fm = bE(fl)
725+ let fn = bE(fk)
726+ let fo = fraction(fn, fg, (fm + fg))
727+ let fp = (toBigInt(fm) * toBigInt(fn))
728+ let fq = (((toBigInt(bE(fl)) + toBigInt(fg)) + toBigInt(fi)) * (toBigInt(bE(fk)) - toBigInt(fo)))
729+ let fr = if ((fq >= fp))
730730 then true
731731 else throw("new K is fewer error")
732- if ((fq == fq))
733- then $Tuple2(nil, fn)
732+ if ((fr == fr))
733+ then $Tuple2(nil, fo)
734734 else throw("Strict value is not equal to itself.")
735735 }
736736
737737
738738
739739 @Callable(dL)
740-func calculateAmountOutForSwapAndSendTokens (fg,fh,fr,fs) = {
741- let ft = {
740+func calculateAmountOutForSwapAndSendTokens (fg,fh,fs,ft,fi) = {
741+ let fu = {
742742 let aR = invoke(aO, "getSwapContractREADONLY", nil, nil)
743743 if ($isInstanceOf(aR, "String"))
744744 then aR
745745 else throw(($getType(aR) + " couldn't be cast to String"))
746746 }
747747 let eH = [if ((value(dL.payments[0]).amount >= fg))
748748 then true
749- else aL("Wrong amount"), if ((dL.caller == addressFromStringValue(ft)))
749+ else aL("Wrong amount"), if ((dL.caller == addressFromStringValue(fu)))
750750 then true
751751 else aL("Permission denied")]
752752 if ((eH == eH))
753753 then {
754754 let dM = value(dL.payments[0])
755- let fk = ba(dM.assetId)
756- let fj = if ((fh == false))
755+ let fl = ba(dM.assetId)
756+ let fk = if ((fh == false))
757757 then aH(this, af())
758758 else aH(this, ae())
759- let fl = (bE(fk) - value(dL.payments[0]).amount)
760- let fm = bE(fj)
761- let fn = fraction(fm, fg, (fl + fg))
762- let fo = (toBigInt(fl) * toBigInt(fm))
763- let fp = (toBigInt(bE(fk)) * (toBigInt(bE(fj)) - toBigInt(fn)))
764- let fq = if ((fp >= fo))
759+ let fm = (bE(fl) - value(dL.payments[0]).amount)
760+ let fn = bE(fk)
761+ let fo = fraction(fn, fg, (fm + fg))
762+ let fp = (toBigInt(fm) * toBigInt(fn))
763+ let fq = ((toBigInt(bE(fl)) + toBigInt(fi)) * (toBigInt(bE(fk)) - toBigInt(fo)))
764+ let fr = if ((fq >= fp))
765765 then true
766766 else throw("new K is fewer error")
767- if ((fq == fq))
767+ if ((fr == fr))
768768 then {
769- let fu = if ((fn >= fr))
769+ let fv = if ((fo >= fs))
770770 then true
771771 else throw("Exchange result is fewer coins than expected")
772- if ((fu == fu))
773- then $Tuple2([ScriptTransfer(addressFromStringValue(fs), fn, aY(fj))], fn)
772+ if ((fv == fv))
773+ then $Tuple2([ScriptTransfer(addressFromStringValue(ft), fo, aY(fk))], fo)
774774 else throw("Strict value is not equal to itself.")
775775 }
776776 else throw("Strict value is not equal to itself.")
777777 }
778778 else throw("Strict value is not equal to itself.")
779779 }
780780
781781
782782
783783 @Callable(dL)
784-func setManager (fv) = {
785- let fw = fe(dL)
786- if ((fw == fw))
784+func setManager (fw) = {
785+ let fx = fe(dL)
786+ if ((fx == fx))
787787 then {
788- let fx = fromBase58String(fv)
789- if ((fx == fx))
790- then [StringEntry(V(), fv)]
788+ let fy = fromBase58String(fw)
789+ if ((fy == fy))
790+ then [StringEntry(V(), fw)]
791791 else throw("Strict value is not equal to itself.")
792792 }
793793 else throw("Strict value is not equal to itself.")
794794 }
795795
796796
797797
798798 @Callable(dL)
799799 func confirmManager () = {
800- let fy = fb()
801- let fz = if (isDefined(fy))
800+ let fz = fb()
801+ let fA = if (isDefined(fz))
802802 then true
803803 else throw("No pending manager")
804- if ((fz == fz))
804+ if ((fA == fA))
805805 then {
806- let fA = if ((dL.callerPublicKey == value(fy)))
806+ let fB = if ((dL.callerPublicKey == value(fz)))
807807 then true
808808 else throw("You are not pending manager")
809- if ((fA == fA))
810- then [StringEntry(U(), toBase58String(value(fy))), DeleteEntry(V())]
809+ if ((fB == fB))
810+ then [StringEntry(U(), toBase58String(value(fz))), DeleteEntry(V())]
811811 else throw("Strict value is not equal to itself.")
812812 }
813813 else throw("Strict value is not equal to itself.")
814814 }
815815
816816
817817
818818 @Callable(dL)
819-func put (cz,fB) = if ((0 > cz))
819+func put (cz,fC) = if ((0 > cz))
820820 then throw("Invalid slippageTolerance passed")
821821 else {
822822 let dR = dO(dL, cz, true)
823823 let db = dR._2
824824 let cg = dR._7
825825 let cx = dR._9
826826 let dc = dR._10
827827 let dd = dR._11
828- let fC = dR._12
829- let fD = dR._13
828+ let fD = dR._12
829+ let fE = dR._13
830830 let dP = toBigInt(value(dL.payments[0]).amount)
831831 let dQ = toBigInt(value(dL.payments[1]).amount)
832832 let ds = dl(dP, dQ, toBigInt(0))
833833 if ((ds == ds))
834834 then {
835835 let dU = invoke(aO, "emit", [db], nil)
836836 if ((dU == dU))
837837 then {
838838 let dV = {
839839 let dW = dU
840840 if ($isInstanceOf(dW, "Address"))
841841 then {
842842 let dX = dW
843843 invoke(dX, "emit", [db], nil)
844844 }
845845 else unit
846846 }
847847 if ((dV == dV))
848848 then {
849- let fE = if ((dc > 0))
850- then invoke(bo, "put", nil, [AttachedPayment(fC, dc)])
849+ let fF = if ((dc > 0))
850+ then invoke(bo, "put", nil, [AttachedPayment(fD, dc)])
851851 else nil
852- if ((fE == fE))
852+ if ((fF == fF))
853853 then {
854- let fF = if ((dd > 0))
855- then invoke(bo, "put", nil, [AttachedPayment(fD, dd)])
854+ let fG = if ((dd > 0))
855+ then invoke(bo, "put", nil, [AttachedPayment(fE, dd)])
856856 else nil
857- if ((fF == fF))
857+ if ((fG == fG))
858858 then {
859- let fG = if (fB)
859+ let fH = if (fC)
860860 then {
861- let fH = invoke(bn, "stake", nil, [AttachedPayment(cg, db)])
862- if ((fH == fH))
861+ let fI = invoke(bn, "stake", nil, [AttachedPayment(cg, db)])
862+ if ((fI == fI))
863863 then nil
864864 else throw("Strict value is not equal to itself.")
865865 }
866866 else [ScriptTransfer(dL.caller, db, cg)]
867- let fI = dt(0, 0, 0)
868- if ((fI == fI))
867+ let fJ = dt(0, 0, 0)
868+ if ((fJ == fJ))
869869 then {
870- let dk = fI._2
871- let fJ = fI._1
872- let fK = dx(ds, dk)
873- if ((fK == fK))
874- then ((cx ++ fG) ++ fJ)
870+ let dk = fJ._2
871+ let fK = fJ._1
872+ let fL = dx(ds, dk)
873+ if ((fL == fL))
874+ then ((cx ++ fH) ++ fK)
875875 else throw("Strict value is not equal to itself.")
876876 }
877877 else throw("Strict value is not equal to itself.")
878878 }
879879 else throw("Strict value is not equal to itself.")
880880 }
881881 else throw("Strict value is not equal to itself.")
882882 }
883883 else throw("Strict value is not equal to itself.")
884884 }
885885 else throw("Strict value is not equal to itself.")
886886 }
887887 else throw("Strict value is not equal to itself.")
888888 }
889889
890890
891891
892892 @Callable(dL)
893-func putForFree (fL) = if ((0 > fL))
893+func putForFree (fM) = if ((0 > fM))
894894 then throw("Invalid value passed")
895895 else {
896- let dR = dO(dL, fL, false)
896+ let dR = dO(dL, fM, false)
897897 let cx = dR._9
898898 let dP = toBigInt(value(dL.payments[0]).amount)
899899 let dQ = toBigInt(value(dL.payments[1]).amount)
900900 let ds = dl(dP, dQ, toBigInt(0))
901901 if ((ds == ds))
902902 then {
903- let fM = dt(0, 0, 0)
904- let fJ = fM._1
905- let dk = fM._2
906- let fK = dx(ds, dk)
907- if ((fK == fK))
908- then (cx ++ fJ)
903+ let fN = dt(0, 0, 0)
904+ let fK = fN._1
905+ let dk = fN._2
906+ let fL = dx(ds, dk)
907+ if ((fL == fL))
908+ then (cx ++ fK)
909909 else throw("Strict value is not equal to itself.")
910910 }
911911 else throw("Strict value is not equal to itself.")
912912 }
913913
914914
915915
916916 @Callable(dL)
917-func putOneTkn (fN,fO) = {
918- let fP = {
917+func putOneTkn (fO,fP) = {
918+ let fQ = {
919919 let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
920920 if ($isInstanceOf(aR, "Boolean"))
921921 then aR
922922 else throw(($getType(aR) + " couldn't be cast to Boolean"))
923923 }
924- let fQ = if (if (if (aT())
924+ let fR = if (if (if (aT())
925925 then true
926926 else (bg == l))
927927 then true
928928 else (bg == n))
929929 then true
930- else fP
931- let eH = [if (if (!(fQ))
930+ else fQ
931+ let eH = [if (if (!(fR))
932932 then true
933933 else fc(dL))
934934 then true
935935 else aL("put operation is blocked by admin"), if ((size(dL.payments) == 1))
936936 then true
937937 else aL("exactly 1 payment are expected")]
938938 if ((eH == eH))
939939 then {
940- let fR = dL.payments[0]
941- let ec = fR.assetId
942- let eb = fR.amount
940+ let fS = dL.payments[0]
941+ let ec = fS.assetId
942+ let eb = fS.amount
943943 let ds = if ((ec == bi))
944944 then dl(toBigInt(eb), toBigInt(0), toBigInt(0))
945945 else if ((ec == bj))
946946 then dl(toBigInt(0), toBigInt(eb), toBigInt(0))
947947 else aL("payment asset is not supported")
948948 if ((ds == ds))
949949 then {
950950 let ab = dL.caller
951951 let ac = dL.transactionId
952- let fS = ea(eb, ec, ab, ac)
953- if ((fS == fS))
952+ let fT = ea(eb, ec, ab, ac)
953+ if ((fT == fT))
954954 then {
955- let eg = fS._5
956- let fT = fS._4
957- let dZ = fS._3
958- let de = fS._2
959- let fU = fS._1
960- let fV = if (if ((fN > 0))
961- then (fN > fU)
955+ let eg = fT._5
956+ let fU = fT._4
957+ let dZ = fT._3
958+ let de = fT._2
959+ let fV = fT._1
960+ let fW = if (if ((fO > 0))
961+ then (fO > fV)
962962 else false)
963- then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
964- else fU
965- let dU = dS(fV)
963+ then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
964+ else fV
965+ let dU = dS(fW)
966966 if ((dU == dU))
967967 then {
968- let fG = if (fO)
968+ let fH = if (fP)
969969 then {
970- let fW = invoke(bn, "stake", nil, [AttachedPayment(bh, fV)])
971- if ((fW == fW))
970+ let fX = invoke(bn, "stake", nil, [AttachedPayment(bh, fW)])
971+ if ((fX == fX))
972972 then nil
973973 else throw("Strict value is not equal to itself.")
974974 }
975- else [ScriptTransfer(dL.caller, fV, bh)]
976- let fX = if ((dZ > 0))
975+ else [ScriptTransfer(dL.caller, fW, bh)]
976+ let fY = if ((dZ > 0))
977977 then [ScriptTransfer(aP, dZ, ec)]
978978 else nil
979- let fY = if ((this == aP))
979+ let fZ = if ((this == aP))
980980 then $Tuple2(0, 0)
981981 else if (eg)
982982 then $Tuple2(-(dZ), 0)
983983 else $Tuple2(0, -(dZ))
984- let du = fY._1
985- let dv = fY._2
986- let fZ = dt(du, dv, 0)
987- let fJ = fZ._1
988- let dk = fZ._2
984+ let du = fZ._1
985+ let dv = fZ._2
986+ let ga = dt(du, dv, 0)
987+ let fK = ga._1
988+ let dk = ga._2
989989 let dE = value(getString(aj))
990- let fK = dx(ds, dk)
991- if ((fK == fK))
992- then $Tuple2((((de ++ fG) ++ fX) ++ fJ), fV)
990+ let fL = dx(ds, dk)
991+ if ((fL == fL))
992+ then $Tuple2((((de ++ fH) ++ fY) ++ fK), fW)
993993 else throw("Strict value is not equal to itself.")
994994 }
995995 else throw("Strict value is not equal to itself.")
996996 }
997997 else throw("Strict value is not equal to itself.")
998998 }
999999 else throw("Strict value is not equal to itself.")
10001000 }
10011001 else throw("Strict value is not equal to itself.")
10021002 }
10031003
10041004
10051005
10061006 @Callable(dL)
10071007 func putOneTknREADONLY (ec,eb) = {
1008- let ga = ea(eb, aY(ec), unit, unit)
1009- let fU = ga._1
1010- let de = ga._2
1011- let dZ = ga._3
1012- let fT = ga._4
1013- let eg = ga._5
1014- $Tuple2(nil, $Tuple3(fU, dZ, fT))
1008+ let gb = ea(eb, aY(ec), unit, unit)
1009+ let fV = gb._1
1010+ let de = gb._2
1011+ let dZ = gb._3
1012+ let fU = gb._4
1013+ let eg = gb._5
1014+ $Tuple2(nil, $Tuple3(fV, dZ, fU))
10151015 }
10161016
10171017
10181018
10191019 @Callable(dL)
1020-func getOneTkn (gb,fN) = {
1021- let fP = {
1020+func getOneTkn (gc,fO) = {
1021+ let fQ = {
10221022 let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10231023 if ($isInstanceOf(aR, "Boolean"))
10241024 then aR
10251025 else throw(($getType(aR) + " couldn't be cast to Boolean"))
10261026 }
1027- let gc = if (if (aT())
1027+ let gd = if (if (aT())
10281028 then true
10291029 else (bg == n))
10301030 then true
1031- else fP
1032- let eH = [if (if (!(gc))
1031+ else fQ
1032+ let eH = [if (if (!(gd))
10331033 then true
10341034 else fc(dL))
10351035 then true
10361036 else aL("get operation is blocked by admin"), if ((size(dL.payments) == 1))
10371037 then true
10381038 else aL("exactly 1 payment are expected")]
10391039 if ((eH == eH))
10401040 then {
1041- let eG = aY(gb)
1042- let fR = dL.payments[0]
1043- let ec = fR.assetId
1044- let eo = fR.amount
1041+ let eG = aY(gc)
1042+ let fS = dL.payments[0]
1043+ let ec = fS.assetId
1044+ let eo = fS.amount
10451045 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
10461046 if ((ds == ds))
10471047 then {
10481048 let ab = dL.caller
10491049 let ac = dL.transactionId
1050- let gd = eF(eG, eo, ec, ab, ac)
1051- if ((gd == gd))
1050+ let ge = eF(eG, eo, ec, ab, ac)
1051+ if ((ge == ge))
10521052 then {
1053- let eI = gd._5
1054- let fT = gd._4
1055- let dZ = gd._3
1056- let de = gd._2
1057- let ge = gd._1
1058- let dT = if (if ((fN > 0))
1059- then (fN > ge)
1053+ let eI = ge._5
1054+ let fU = ge._4
1055+ let dZ = ge._3
1056+ let de = ge._2
1057+ let gf = ge._1
1058+ let dT = if (if ((fO > 0))
1059+ then (fO > gf)
10601060 else false)
1061- then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
1062- else ge
1063- let gf = invoke(aO, "burn", [eo], [AttachedPayment(ec, eo)])
1064- if ((gf == gf))
1061+ then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
1062+ else gf
1063+ let gg = invoke(aO, "burn", [eo], [AttachedPayment(ec, eo)])
1064+ if ((gg == gg))
10651065 then {
1066- let gg = [ScriptTransfer(ab, dT, eG)]
1067- let fX = if ((dZ > 0))
1066+ let gh = [ScriptTransfer(ab, dT, eG)]
1067+ let fY = if ((dZ > 0))
10681068 then [ScriptTransfer(aP, dZ, eG)]
10691069 else nil
1070- let gh = {
1071- let gi = if ((this == aP))
1070+ let gi = {
1071+ let gj = if ((this == aP))
10721072 then 0
10731073 else dZ
10741074 if (eI)
1075- then $Tuple2(-((dT + gi)), 0)
1076- else $Tuple2(0, -((dT + gi)))
1075+ then $Tuple2(-((dT + gj)), 0)
1076+ else $Tuple2(0, -((dT + gj)))
10771077 }
1078- let du = gh._1
1079- let dv = gh._2
1080- let gj = dt(du, dv, 0)
1081- let fJ = gj._1
1082- let dk = gj._2
1083- let fK = dx(ds, dk)
1084- if ((fK == fK))
1085- then $Tuple2((((de ++ gg) ++ fX) ++ fJ), dT)
1078+ let du = gi._1
1079+ let dv = gi._2
1080+ let gk = dt(du, dv, 0)
1081+ let fK = gk._1
1082+ let dk = gk._2
1083+ let fL = dx(ds, dk)
1084+ if ((fL == fL))
1085+ then $Tuple2((((de ++ gh) ++ fY) ++ fK), dT)
10861086 else throw("Strict value is not equal to itself.")
10871087 }
10881088 else throw("Strict value is not equal to itself.")
10891089 }
10901090 else throw("Strict value is not equal to itself.")
10911091 }
10921092 else throw("Strict value is not equal to itself.")
10931093 }
10941094 else throw("Strict value is not equal to itself.")
10951095 }
10961096
10971097
10981098
10991099 @Callable(dL)
11001100 func getOneTknREADONLY (eG,eo) = {
1101- let gk = eF(aY(eG), eo, bh, unit, unit)
1102- let ge = gk._1
1103- let de = gk._2
1104- let dZ = gk._3
1105- let fT = gk._4
1106- let eI = gk._5
1107- $Tuple2(nil, $Tuple3(ge, dZ, fT))
1101+ let gl = eF(aY(eG), eo, bh, unit, unit)
1102+ let gf = gl._1
1103+ let de = gl._2
1104+ let dZ = gl._3
1105+ let fU = gl._4
1106+ let eI = gl._5
1107+ $Tuple2(nil, $Tuple3(gf, dZ, fU))
11081108 }
11091109
11101110
11111111
11121112 @Callable(dL)
1113-func unstakeAndGetOneTkn (gl,gb,fN) = {
1114- let fP = {
1113+func unstakeAndGetOneTkn (gm,gc,fO) = {
1114+ let fQ = {
11151115 let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11161116 if ($isInstanceOf(aR, "Boolean"))
11171117 then aR
11181118 else throw(($getType(aR) + " couldn't be cast to Boolean"))
11191119 }
1120- let gc = if (if (aT())
1120+ let gd = if (if (aT())
11211121 then true
11221122 else (bg == n))
11231123 then true
1124- else fP
1125- let eH = [if (if (!(gc))
1124+ else fQ
1125+ let eH = [if (if (!(gd))
11261126 then true
11271127 else fc(dL))
11281128 then true
11291129 else aL("get operation is blocked by admin"), if ((size(dL.payments) == 0))
11301130 then true
11311131 else aL("no payments are expected")]
11321132 if ((eH == eH))
11331133 then {
1134- let eG = aY(gb)
1134+ let eG = aY(gc)
11351135 let ab = dL.caller
11361136 let ac = dL.transactionId
11371137 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
11381138 if ((ds == ds))
11391139 then {
1140- let gm = invoke(bn, "unstake", [toBase58String(bh), gl], nil)
1141- if ((gm == gm))
1140+ let gn = invoke(bn, "unstake", [toBase58String(bh), gm], nil)
1141+ if ((gn == gn))
11421142 then {
1143- let gn = eF(eG, gl, bh, ab, ac)
1144- if ((gn == gn))
1143+ let go = eF(eG, gm, bh, ab, ac)
1144+ if ((go == go))
11451145 then {
1146- let eI = gn._5
1147- let fT = gn._4
1148- let dZ = gn._3
1149- let de = gn._2
1150- let ge = gn._1
1151- let dT = if (if ((fN > 0))
1152- then (fN > ge)
1146+ let eI = go._5
1147+ let fU = go._4
1148+ let dZ = go._3
1149+ let de = go._2
1150+ let gf = go._1
1151+ let dT = if (if ((fO > 0))
1152+ then (fO > gf)
11531153 else false)
1154- then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
1155- else ge
1156- let gf = invoke(aO, "burn", [gl], [AttachedPayment(bh, gl)])
1157- if ((gf == gf))
1154+ then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
1155+ else gf
1156+ let gg = invoke(aO, "burn", [gm], [AttachedPayment(bh, gm)])
1157+ if ((gg == gg))
11581158 then {
1159- let gg = [ScriptTransfer(dL.caller, dT, eG)]
1160- let fX = if ((dZ > 0))
1159+ let gh = [ScriptTransfer(dL.caller, dT, eG)]
1160+ let fY = if ((dZ > 0))
11611161 then [ScriptTransfer(aP, dZ, eG)]
11621162 else nil
1163- let go = {
1164- let gi = if ((this == aP))
1163+ let gp = {
1164+ let gj = if ((this == aP))
11651165 then 0
11661166 else dZ
11671167 if (eI)
1168- then $Tuple2(-((dT + gi)), 0)
1169- else $Tuple2(0, -((dT + gi)))
1168+ then $Tuple2(-((dT + gj)), 0)
1169+ else $Tuple2(0, -((dT + gj)))
11701170 }
1171- let du = go._1
1172- let dv = go._2
1173- let gp = dt(du, dv, 0)
1174- let fJ = gp._1
1175- let dk = gp._2
1176- let fK = dx(ds, dk)
1177- if ((fK == fK))
1178- then $Tuple2((((de ++ gg) ++ fX) ++ fJ), dT)
1171+ let du = gp._1
1172+ let dv = gp._2
1173+ let gq = dt(du, dv, 0)
1174+ let fK = gq._1
1175+ let dk = gq._2
1176+ let fL = dx(ds, dk)
1177+ if ((fL == fL))
1178+ then $Tuple2((((de ++ gh) ++ fY) ++ fK), dT)
11791179 else throw("Strict value is not equal to itself.")
11801180 }
11811181 else throw("Strict value is not equal to itself.")
11821182 }
11831183 else throw("Strict value is not equal to itself.")
11841184 }
11851185 else throw("Strict value is not equal to itself.")
11861186 }
11871187 else throw("Strict value is not equal to itself.")
11881188 }
11891189 else throw("Strict value is not equal to itself.")
11901190 }
11911191
11921192
11931193
11941194 @Callable(dL)
11951195 func get () = {
11961196 let cP = dK(dL)
1197- let gq = cP._1
1197+ let gr = cP._1
11981198 let cw = cP._2
11991199 let dN = cP._3
12001200 let ce = cP._4
12011201 let cx = cP._5
12021202 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
12031203 if ((ds == ds))
12041204 then {
1205- let gr = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1206- if ((gr == gr))
1205+ let gs = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1206+ if ((gs == gs))
12071207 then {
1208- let gs = dt(-(gq), -(cw), 0)
1209- let fJ = gs._1
1210- let dk = gs._2
1211- let fK = dx(ds, dk)
1212- if ((fK == fK))
1213- then (cx ++ fJ)
1208+ let gt = dt(-(gr), -(cw), 0)
1209+ let fK = gt._1
1210+ let dk = gt._2
1211+ let fL = dx(ds, dk)
1212+ if ((fL == fL))
1213+ then (cx ++ fK)
12141214 else throw("Strict value is not equal to itself.")
12151215 }
12161216 else throw("Strict value is not equal to itself.")
12171217 }
12181218 else throw("Strict value is not equal to itself.")
12191219 }
12201220
12211221
12221222
12231223 @Callable(dL)
1224-func getNoLess (gt,gu) = {
1224+func getNoLess (gu,gv) = {
12251225 let cP = dK(dL)
12261226 let cv = cP._1
12271227 let cw = cP._2
12281228 let dN = cP._3
12291229 let ce = cP._4
12301230 let cx = cP._5
1231- if ((gt > cv))
1232- then throw(((("noLessThenAmtAsset failed: " + toString(cv)) + " < ") + toString(gt)))
1233- else if ((gu > cw))
1234- then throw(((("noLessThenPriceAsset failed: " + toString(cw)) + " < ") + toString(gu)))
1231+ if ((gu > cv))
1232+ then throw(((("noLessThenAmtAsset failed: " + toString(cv)) + " < ") + toString(gu)))
1233+ else if ((gv > cw))
1234+ then throw(((("noLessThenPriceAsset failed: " + toString(cw)) + " < ") + toString(gv)))
12351235 else {
12361236 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
12371237 if ((ds == ds))
12381238 then {
1239- let gr = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1240- if ((gr == gr))
1239+ let gs = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1240+ if ((gs == gs))
12411241 then {
1242- let gv = dt(-(cv), -(cw), 0)
1243- let fJ = gv._1
1244- let dk = gv._2
1245- let fK = dx(ds, dk)
1246- if ((fK == fK))
1247- then (cx ++ fJ)
1242+ let gw = dt(-(cv), -(cw), 0)
1243+ let fK = gw._1
1244+ let dk = gw._2
1245+ let fL = dx(ds, dk)
1246+ if ((fL == fL))
1247+ then (cx ++ fK)
12481248 else throw("Strict value is not equal to itself.")
12491249 }
12501250 else throw("Strict value is not equal to itself.")
12511251 }
12521252 else throw("Strict value is not equal to itself.")
12531253 }
12541254 }
12551255
12561256
12571257
12581258 @Callable(dL)
12591259 func unstakeAndGet (dT) = {
1260- let gw = if ((size(dL.payments) != 0))
1260+ let gx = if ((size(dL.payments) != 0))
12611261 then throw("No payments are expected")
12621262 else true
1263- if ((gw == gw))
1263+ if ((gx == gx))
12641264 then {
12651265 let bT = aV()
12661266 let cg = fromBase58String(bT[q])
12671267 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
12681268 if ((ds == ds))
12691269 then {
1270- let gm = invoke(bn, "unstake", [toBase58String(cg), dT], nil)
1271- if ((gm == gm))
1270+ let gn = invoke(bn, "unstake", [toBase58String(cg), dT], nil)
1271+ if ((gn == gn))
12721272 then {
12731273 let cP = cc(toBase58String(dL.transactionId), toBase58String(cg), dT, dL.caller)
12741274 let cv = cP._1
12751275 let cw = cP._2
12761276 let cj = parseIntValue(cP._9)
12771277 let cx = cP._10
1278- let gx = if (if (aT())
1278+ let gy = if (if (aT())
12791279 then true
12801280 else (cj == n))
12811281 then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
12821282 else true
1283- if ((gx == gx))
1283+ if ((gy == gy))
12841284 then {
1285- let gr = invoke(aO, "burn", [dT], [AttachedPayment(cg, dT)])
1286- if ((gr == gr))
1285+ let gs = invoke(aO, "burn", [dT], [AttachedPayment(cg, dT)])
1286+ if ((gs == gs))
12871287 then {
1288- let gy = dt(-(cv), -(cw), 0)
1289- let fJ = gy._1
1290- let dk = gy._2
1291- let fK = dx(ds, dk)
1292- if ((fK == fK))
1293- then (cx ++ fJ)
1288+ let gz = dt(-(cv), -(cw), 0)
1289+ let fK = gz._1
1290+ let dk = gz._2
1291+ let fL = dx(ds, dk)
1292+ if ((fL == fL))
1293+ then (cx ++ fK)
12941294 else throw("Strict value is not equal to itself.")
12951295 }
12961296 else throw("Strict value is not equal to itself.")
12971297 }
12981298 else throw("Strict value is not equal to itself.")
12991299 }
13001300 else throw("Strict value is not equal to itself.")
13011301 }
13021302 else throw("Strict value is not equal to itself.")
13031303 }
13041304 else throw("Strict value is not equal to itself.")
13051305 }
13061306
13071307
13081308
13091309 @Callable(dL)
1310-func unstakeAndGetNoLess (gl,gz,gu) = {
1311- let gc = if (aT())
1310+func unstakeAndGetNoLess (gm,gA,gv) = {
1311+ let gd = if (aT())
13121312 then true
13131313 else (bg == n)
1314- let eH = [if (!(gc))
1314+ let eH = [if (!(gd))
13151315 then true
13161316 else throw("get operation is blocked by admin"), if ((size(dL.payments) == 0))
13171317 then true
13181318 else throw("no payments are expected")]
13191319 if ((eH == eH))
13201320 then {
13211321 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
13221322 if ((ds == ds))
13231323 then {
1324- let gm = invoke(bn, "unstake", [toBase58String(bh), gl], nil)
1325- if ((gm == gm))
1324+ let gn = invoke(bn, "unstake", [toBase58String(bh), gm], nil)
1325+ if ((gn == gn))
13261326 then {
1327- let cP = cc(toBase58String(dL.transactionId), toBase58String(bh), gl, dL.caller)
1327+ let cP = cc(toBase58String(dL.transactionId), toBase58String(bh), gm, dL.caller)
13281328 let cv = cP._1
13291329 let cw = cP._2
13301330 let cx = cP._10
1331- let gA = [if ((cv >= gz))
1331+ let gB = [if ((cv >= gA))
13321332 then true
1333- else throw(makeString(["amount asset amount to receive is less than ", toString(gz)], "")), if ((cw >= gu))
1333+ else throw(makeString(["amount asset amount to receive is less than ", toString(gA)], "")), if ((cw >= gv))
13341334 then true
1335- else throw(makeString(["price asset amount to receive is less than ", toString(gu)], ""))]
1336- if ((gA == gA))
1335+ else throw(makeString(["price asset amount to receive is less than ", toString(gv)], ""))]
1336+ if ((gB == gB))
13371337 then {
1338- let gr = invoke(aO, "burn", [gl], [AttachedPayment(bh, gl)])
1339- if ((gr == gr))
1338+ let gs = invoke(aO, "burn", [gm], [AttachedPayment(bh, gm)])
1339+ if ((gs == gs))
13401340 then {
1341- let gB = dt(-(cv), -(cw), 0)
1342- let fJ = gB._1
1343- let dk = gB._2
1344- let fK = dx(ds, dk)
1345- if ((fK == fK))
1346- then (cx ++ fJ)
1341+ let gC = dt(-(cv), -(cw), 0)
1342+ let fK = gC._1
1343+ let dk = gC._2
1344+ let fL = dx(ds, dk)
1345+ if ((fL == fL))
1346+ then (cx ++ fK)
13471347 else throw("Strict value is not equal to itself.")
13481348 }
13491349 else throw("Strict value is not equal to itself.")
13501350 }
13511351 else throw("Strict value is not equal to itself.")
13521352 }
13531353 else throw("Strict value is not equal to itself.")
13541354 }
13551355 else throw("Strict value is not equal to itself.")
13561356 }
13571357 else throw("Strict value is not equal to itself.")
13581358 }
13591359
13601360
13611361
13621362 @Callable(dL)
1363-func activate (gC,gD) = if ((toString(dL.caller) != toString(aO)))
1363+func activate (gD,gE) = if ((toString(dL.caller) != toString(aO)))
13641364 then throw("permissions denied")
1365- else $Tuple2([StringEntry(ae(), gC), StringEntry(af(), gD)], "success")
1365+ else $Tuple2([StringEntry(ae(), gD), StringEntry(af(), gE)], "success")
13661366
13671367
13681368
13691369 @Callable(dL)
13701370 func refreshKLp () = {
1371- let gE = valueOrElse(getInteger(ak), 0)
1372- let gF = if (((height - gE) >= an))
1371+ let gF = valueOrElse(getInteger(ak), 0)
1372+ let gG = if (((height - gF) >= an))
13731373 then unit
13741374 else aL(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1375- if ((gF == gF))
1375+ if ((gG == gG))
13761376 then {
13771377 let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
1378- let gG = dt(0, 0, 0)
1379- let gH = gG._1
1380- let dk = gG._2
1378+ let gH = dt(0, 0, 0)
1379+ let gI = gH._1
1380+ let dk = gH._2
13811381 let dw = if ((dE != dk))
1382- then gH
1382+ then gI
13831383 else aL("nothing to refresh")
13841384 $Tuple2(dw, toString(dk))
13851385 }
13861386 else throw("Strict value is not equal to itself.")
13871387 }
13881388
13891389
13901390
13911391 @Callable(dL)
13921392 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aV())
13931393
13941394
13951395
13961396 @Callable(dL)
13971397 func getAccBalanceWrapperREADONLY (bF) = $Tuple2(nil, bE(bF))
13981398
13991399
14001400
14011401 @Callable(dL)
14021402 func calcPricesWrapperREADONLY (bN,bO,bS) = {
14031403 let cb = bR(bN, bO, bS)
14041404 $Tuple2(nil, [toString(cb[0]), toString(cb[1]), toString(cb[2])])
14051405 }
14061406
14071407
14081408
14091409 @Callable(dL)
14101410 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
14111411
14121412
14131413
14141414 @Callable(dL)
14151415 func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
14161416
14171417
14181418
14191419 @Callable(dL)
14201420 func calcPriceBigIntWrapperREADONLY (bH,bI) = $Tuple2(nil, toString(bG(parseBigIntValue(bH), parseBigIntValue(bI))))
14211421
14221422
14231423
14241424 @Callable(dL)
14251425 func estimatePutOperationWrapperREADONLY (cd,cz,cA,cB,cC,cD,ab,cE,cF) = $Tuple2(nil, cy(cd, cz, cA, cB, cC, cD, ab, cE, cF))
14261426
14271427
14281428
14291429 @Callable(dL)
14301430 func estimateGetOperationWrapperREADONLY (cd,ce,cf,ab) = {
14311431 let cP = cc(cd, ce, cf, addressFromStringValue(ab))
14321432 $Tuple2(nil, $Tuple10(cP._1, cP._2, cP._3, cP._4, cP._5, cP._6, cP._7, toString(cP._8), cP._9, cP._10))
14331433 }
14341434
14351435
14361436
14371437 @Callable(dL)
14381438 func statsREADONLY () = {
14391439 let bT = aV()
14401440 let cg = fromBase58String(bT[q])
1441- let gI = bT[r]
1442- let gJ = bT[s]
1441+ let gJ = bT[r]
1442+ let gK = bT[s]
14431443 let cI = bT[v]
14441444 let cJ = bT[w]
14451445 let bU = parseIntValue(bT[t])
14461446 let bV = parseIntValue(bT[u])
1447- let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1448- let gL = bE(gI)
1447+ let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
14491448 let gM = bE(gJ)
1450- let gN = if ((gK == 0))
1449+ let gN = bE(gK)
1450+ let gO = if ((gL == 0))
14511451 then [e, e, e]
1452- else bR(gL, gM, gK)
1452+ else bR(gM, gN, gL)
14531453 let cq = 0
1454- let gO = H(gN[1], b)
1455- let gP = H(gN[2], b)
1456- let gQ = value(getInteger(aO, ay(toString(this))))
1457- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gL), toString(gM), toString(gK), toString(cq), toString(gO), toString(gP), toString(gQ)], j))
1454+ let gP = H(gO[1], b)
1455+ let gQ = H(gO[2], b)
1456+ let gR = value(getInteger(aO, ay(toString(this))))
1457+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gM), toString(gN), toString(gL), toString(cq), toString(gP), toString(gQ), toString(gR)], j))
14581458 }
14591459
14601460
14611461
14621462 @Callable(dL)
14631463 func evaluatePutByAmountAssetREADONLY (cA) = {
14641464 let bT = aV()
14651465 let cg = fromBase58String(bT[q])
14661466 let cG = bT[r]
14671467 let ch = fromBase58String(cG)
14681468 let cH = bT[s]
14691469 let ci = fromBase58String(cH)
14701470 let bU = parseIntValue(bT[t])
14711471 let bV = parseIntValue(bT[u])
14721472 let cj = bT[p]
1473- let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1474- let gL = bE(cG)
1475- let gM = bE(cH)
1476- let bP = D(gL, bU)
1477- let bQ = D(gM, bV)
1478- let cp = if ((gK == 0))
1473+ let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1474+ let gM = bE(cG)
1475+ let gN = bE(cH)
1476+ let bP = D(gM, bU)
1477+ let bQ = D(gN, bV)
1478+ let cp = if ((gL == 0))
14791479 then e
14801480 else bG(bQ, bP)
14811481 let cM = D(cA, bU)
14821482 let cN = fraction(cM, cp, d)
14831483 let cC = H(cN, bV)
14841484 let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
14851485 let cX = dR._1
1486- let gR = dR._3
1486+ let gS = dR._3
14871487 let cl = dR._4
14881488 let cn = dR._5
14891489 let ck = dR._6
14901490 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
14911491 }
14921492
14931493
14941494
14951495 @Callable(dL)
14961496 func evaluatePutByPriceAssetREADONLY (cC) = {
14971497 let bT = aV()
14981498 let cg = fromBase58String(bT[q])
14991499 let cG = bT[r]
15001500 let ch = fromBase58String(cG)
15011501 let cH = bT[s]
15021502 let ci = fromBase58String(cH)
15031503 let bU = parseIntValue(bT[t])
15041504 let bV = parseIntValue(bT[u])
15051505 let cj = bT[p]
1506- let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1507- let gS = bE(cG)
1508- let gT = bE(cH)
1509- let gU = D(gS, bU)
1510- let gV = D(gT, bV)
1511- let cp = if ((gK == 0))
1506+ let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1507+ let gT = bE(cG)
1508+ let gU = bE(cH)
1509+ let gV = D(gT, bU)
1510+ let gW = D(gU, bV)
1511+ let cp = if ((gL == 0))
15121512 then e
1513- else bG(gV, gU)
1513+ else bG(gW, gV)
15141514 let cN = D(cC, bV)
15151515 let cM = fraction(cN, d, cp)
15161516 let cA = H(cM, bU)
15171517 let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
15181518 let cX = dR._1
1519- let gR = dR._3
1519+ let gS = dR._3
15201520 let cl = dR._4
15211521 let cn = dR._5
15221522 let ck = dR._6
15231523 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
15241524 }
15251525
15261526
15271527
15281528 @Callable(dL)
1529-func evaluateGetREADONLY (gW,gX) = {
1530- let cP = cc("", gW, gX, this)
1529+func evaluateGetREADONLY (gX,gY) = {
1530+ let cP = cc("", gX, gY, this)
15311531 let cv = cP._1
15321532 let cw = cP._2
15331533 let cl = cP._5
15341534 let cn = cP._6
15351535 let ck = cP._7
15361536 let cq = cP._8
15371537 let cj = parseIntValue(cP._9)
15381538 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cv), toString(cw), toString(cl), toString(cn), toString(ck), toString(cq), toString(cj)], j))
15391539 }
15401540
15411541
1542-@Verifier(gY)
1543-func gZ () = {
1544- let ha = {
1542+@Verifier(gZ)
1543+func ha () = {
1544+ let hb = {
15451545 let dW = eZ()
15461546 if ($isInstanceOf(dW, "ByteVector"))
15471547 then {
15481548 let fd = dW
15491549 fd
15501550 }
15511551 else if ($isInstanceOf(dW, "Unit"))
1552- then gY.senderPublicKey
1552+ then gZ.senderPublicKey
15531553 else throw("Match error")
15541554 }
1555- let dW = gY
1555+ let dW = gZ
15561556 if ($isInstanceOf(dW, "Order"))
15571557 then {
15581558 let dA = dW
1559- let hb = aU()
1560- let hc = dz(dA)
1561- let aD = hc._1
1562- let aE = hc._2
1559+ let hc = aU()
1560+ let hd = dz(dA)
1561+ let aD = hd._1
1562+ let aE = hd._2
15631563 let aF = sigVerify(dA.bodyBytes, dA.proofs[0], dA.senderPublicKey)
1564- let aG = sigVerify(dA.bodyBytes, dA.proofs[1], hb)
1564+ let aG = sigVerify(dA.bodyBytes, dA.proofs[1], hc)
15651565 if (if (if (aD)
15661566 then aF
15671567 else false)
15681568 then aG
15691569 else false)
15701570 then true
15711571 else aC(aD, aE, aF, aG)
15721572 }
15731573 else if ($isInstanceOf(dW, "SetScriptTransaction"))
15741574 then {
15751575 let fa = dW
1576- if (sigVerify(gY.bodyBytes, gY.proofs[0], ha))
1576+ if (sigVerify(gZ.bodyBytes, gZ.proofs[0], hb))
15771577 then true
15781578 else {
1579- let hd = blake2b256(value(fa.script))
1580- let he = fromBase64String(value(getString(aO, aA())))
1581- let hf = scriptHash(this)
1582- if ((he == hd))
1583- then (hf != hd)
1579+ let he = blake2b256(value(fa.script))
1580+ let hf = fromBase64String(value(getString(aO, aA())))
1581+ let hg = scriptHash(this)
1582+ if ((hf == he))
1583+ then (hg != he)
15841584 else false
15851585 }
15861586 }
1587- else sigVerify(gY.bodyBytes, gY.proofs[0], ha)
1587+ else sigVerify(gZ.bodyBytes, gZ.proofs[0], hb)
15881588 }
15891589

github/deemru/w8io/3ef1775 
320.38 ms