tx · 5Nbfjx2SUo9z3eMPUXPhEUQQtRY4hsKenUxvmk1ZPvsY

3N55kCyUFy8M2ooKRwierKnP7L6viqzScNn:  -0.03100000 Waves

2022.12.14 13:34 [2359863] smart account 3N55kCyUFy8M2ooKRwierKnP7L6viqzScNn > SELF 0.00000000 Waves

{ "type": 13, "id": "5Nbfjx2SUo9z3eMPUXPhEUQQtRY4hsKenUxvmk1ZPvsY", "fee": 3100000, "feeAssetId": null, "timestamp": 1671014102155, "version": 1, "sender": "3N55kCyUFy8M2ooKRwierKnP7L6viqzScNn", "senderPublicKey": "HpuFV1RhaXZ5gaJNgeLjyAKy3D5q7fMKdNFYYbPDafnb", "proofs": [ "4ry8pAQVqV2fpDgyq9jywWSNW4wESbrC1DczuDzfsX8DgDkMVevxWhZLpYRJphkJLmPEVDJqUy5A3EYZx8TYQF1E" ], "script": "base64:BgK3JwgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASAwoBCBIFCgMBAQESBAoCAQESBAoCCAESBAoCCAgSCwoJCAEBAgECCAQEEgYKBAgIAQgSABIDCgEBEgMKAQESBAoCCAEiCmxQZGVjaW1hbHMiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgt3YXZlc1N0cmluZyIDU0VQIgpQb29sQWN0aXZlIg9Qb29sUHV0RGlzYWJsZWQiE1Bvb2xNYXRjaGVyRGlzYWJsZWQiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiDWlkeFBvb2xTdGF0dXMiEGlkeFBvb2xMUEFzc2V0SWQiDWlkeEFtdEFzc2V0SWQiD2lkeFByaWNlQXNzZXRJZCIOaWR4QW10QXNzZXREY20iEGlkeFByaWNlQXNzZXREY20iDmlkeElBbXRBc3NldElkIhBpZHhJUHJpY2VBc3NldElkIg1pZHhMUEFzc2V0RGNtIhJpZHhQb29sQW10QXNzZXRBbXQiFGlkeFBvb2xQcmljZUFzc2V0QW10IhFpZHhQb29sTFBBc3NldEFtdCIZaWR4RmFjdG9yeVN0YWtpbmdDb250cmFjdCIaaWR4RmFjdG9yeVNsaXBwYWdlQ29udHJhY3QiBXRvWDE4IgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0Igdmcm9tWDE4IgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCIHdG9TY2FsZSIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50IgJmYyIDbXBrIgRwbXBrIgJwbCICcGgiAWgiCXRpbWVzdGFtcCIDcGF1Igt1c2VyQWRkcmVzcyIEdHhJZCIDZ2F1IgJhYSICcGEiEGtleUZhY3RvcnlDb25maWciDWtleU1hdGNoZXJQdWIiKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzIhNwb29sQ29udHJhY3RBZGRyZXNzIg1rZXlQb29sQ29uZmlnIglpQW10QXNzZXQiC2lQcmljZUFzc2V0Ih9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkIgxiYXNlQXNzZXRTdHIiE2tleUFsbFBvb2xzU2h1dGRvd24iDWtleVBvb2xXZWlnaHQiD2NvbnRyYWN0QWRkcmVzcyIWa2V5QWxsb3dlZExwU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIPdGhyb3dPcmRlckVycm9yIgpvcmRlclZhbGlkIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIg9nZXRTdHJpbmdPckZhaWwiB2FkZHJlc3MiA2tleSIMZ2V0SW50T3JGYWlsIgh0aHJvd0VyciIDbXNnIg9mYWN0b3J5Q29udHJhY3QiE2ZlZUNvbGxlY3RvckFkZHJlc3MiBWluRmVlIgFAIgZvdXRGZWUiEGlzR2xvYmFsU2h1dGRvd24iE2dldE1hdGNoZXJQdWJPckZhaWwiDWdldFBvb2xDb25maWciCGFtdEFzc2V0IgpwcmljZUFzc2V0IgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwNzYwMTc3NjciDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIhBnZXRGYWN0b3J5Q29uZmlnIg9zdGFraW5nQ29udHJhY3QiEHNsaXBwYWdlQ29udHJhY3QiEWRhdGFQdXRBY3Rpb25JbmZvIg1pbkFtdEFzc2V0QW10Ig9pblByaWNlQXNzZXRBbXQiCG91dExwQW10IgVwcmljZSIdc2xpcHBhZ2VUb2xlcmFuY2VQYXNzZWRCeVVzZXIiFXNsaXBwYWdlVG9sZXJhbmNlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIhJzbGlwYWdlQW10QXNzZXRBbXQiFHNsaXBhZ2VQcmljZUFzc2V0QW10IhFkYXRhR2V0QWN0aW9uSW5mbyIOb3V0QW10QXNzZXRBbXQiEG91dFByaWNlQXNzZXRBbXQiB2luTHBBbXQiDWdldEFjY0JhbGFuY2UiB2Fzc2V0SWQiD2NhbGNQcmljZUJpZ0ludCIIcHJBbXRYMTgiCGFtQW10WDE4IhBwcml2YXRlQ2FsY1ByaWNlIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiDmFtdEFzc2V0QW10WDE4IhBwcmljZUFzc2V0QW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIgthbXRBc3NldERjbSINcHJpY2VBc3NldERjbSIIcHJpY2VYMTgiCGxwQW10WDE4IhNscFByaWNlSW5BbUFzc2V0WDE4IhNscFByaWNlSW5QckFzc2V0WDE4Ig9jYWxjdWxhdGVQcmljZXMiBnByaWNlcyIUZXN0aW1hdGVHZXRPcGVyYXRpb24iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiCWxwQXNzZXRJZCIJYW1Bc3NldElkIglwckFzc2V0SWQiCnBvb2xTdGF0dXMiCmxwRW1pc3Npb24iCWFtQmFsYW5jZSIMYW1CYWxhbmNlWDE4IglwckJhbGFuY2UiDHByQmFsYW5jZVgxOCILY3VyUHJpY2VYMTgiCGN1clByaWNlIgtwbXRMcEFtdFgxOCINbHBFbWlzc2lvblgxOCILb3V0QW1BbXRYMTgiC291dFByQW10WDE4IghvdXRBbUFtdCIIb3V0UHJBbXQiBXN0YXRlIhRlc3RpbWF0ZVB1dE9wZXJhdGlvbiIRc2xpcHBhZ2VUb2xlcmFuY2UiDGluQW1Bc3NldEFtdCILaW5BbUFzc2V0SWQiDGluUHJBc3NldEFtdCILaW5QckFzc2V0SWQiCmlzRXZhbHVhdGUiBmVtaXRMcCIMYW1Bc3NldElkU3RyIgxwckFzc2V0SWRTdHIiC2lBbXRBc3NldElkIg1pUHJpY2VBc3NldElkIg5pbkFtQXNzZXRJZFN0ciIOaW5QckFzc2V0SWRTdHIiD2luQW1Bc3NldEFtdFgxOCIPaW5QckFzc2V0QW10WDE4Igx1c2VyUHJpY2VYMTgiA3JlcyILc2xpcHBhZ2VYMTgiFHNsaXBwYWdlVG9sZXJhbmNlWDE4IgpwclZpYUFtWDE4IgphbVZpYVByWDE4IgxleHBlY3RlZEFtdHMiEWV4cEFtdEFzc2V0QW10WDE4IhNleHBQcmljZUFzc2V0QW10WDE4IgljYWxjTHBBbXQiDmNhbGNBbUFzc2V0UG10Ig5jYWxjUHJBc3NldFBtdCIMc2xpcHBhZ2VDYWxjIgllbWl0THBBbXQiBmFtRGlmZiIGcHJEaWZmIgtjb21tb25TdGF0ZSIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIKYW10QXNzZXRJZCIMcHJpY2VBc3NldElkIhJhY2NBbXRBc3NldEJhbGFuY2UiFGFjY1ByaWNlQXNzZXRCYWxhbmNlIg1vcmRlckFtdEFzc2V0IhBvcmRlckFtdEFzc2V0U3RyIg9vcmRlclByaWNlQXNzZXQiEm9yZGVyUHJpY2VBc3NldFN0ciIKb3JkZXJQcmljZSIIcHJpY2VEY20iEGNhc3RlZE9yZGVyUHJpY2UiEWlzT3JkZXJQcmljZVZhbGlkIgljb21tb25HZXQiAWkiA3BtdCIGcG10QW10Igljb21tb25QdXQiCmFtQXNzZXRQbXQiCnByQXNzZXRQbXQiBmVzdFB1dCIEZW1pdCIGYW1vdW50IgdlbWl0SW52Ig1lbWl0SW52TGVnYWN5IgckbWF0Y2gwIhVsZWdhY3lGYWN0b3J5Q29udHJhY3QiB3Rha2VGZWUiA2ZlZSIJZmVlQW1vdW50Ig9jYWxjUHV0T25lVG9rZW4iEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIgZpc0V2YWwiEGFtb3VudEJhbGFuY2VSYXciD3ByaWNlQmFsYW5jZVJhdyIUcGF5bWVudEluQW1vdW50QXNzZXQiDSR0MDIyNjY0MjI5NTciEGFtb3VudEJhbGFuY2VPbGQiD3ByaWNlQmFsYW5jZU9sZCINJHQwMjI5NjEyMzExMCIUYW1vdW50QXNzZXRBbW91bnRSYXciE3ByaWNlQXNzZXRBbW91bnRSYXciEWFtb3VudEFzc2V0QW1vdW50IhBwcmljZUFzc2V0QW1vdW50Ig0kdDAyMzI0MjIzMzA2Ig1wYXltZW50QW1vdW50IhBhbW91bnRCYWxhbmNlTmV3Ig9wcmljZUJhbGFuY2VOZXciC3ByaWNlTmV3WDE4IghwcmljZU5ldyIOcGF5bWVudEJhbGFuY2UiFHBheW1lbnRCYWxhbmNlQmlnSW50IgxzdXBwbHlCaWdJbnQiC2NoZWNoU3VwcGx5Ig1kZXBvc2l0QmlnSW50Igtpc3N1ZUFtb3VudCILcHJpY2VPbGRYMTgiCHByaWNlT2xkIgRsb3NzIg0kdDAyNDc4MzI0OTUwIgdiYWxhbmNlIg9pc3N1ZUFtb3VudEJvdGgiD2NhbGNHZXRPbmVUb2tlbiIKb3V0QXNzZXRJZCIGY2hlY2tzIhBvdXRJbkFtb3VudEFzc2V0Ig1iYWxhbmNlQmlnSW50IgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCIKb3V0QmFsYW5jZSIQb3V0QmFsYW5jZUJpZ0ludCIOcmVkZWVtZWRCaWdJbnQiCWFtb3VudFJhdyINJHQwMjY1MzAyNjU4NiILdG90YWxBbW91bnQiDSR0MDI2NTkwMjY4MTYiC291dEFtQW1vdW50IgtvdXRQckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciGGFtb3VudEJvdGhJblBheW1lbnRBc3NldCIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIBcyIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiCWlzTWFuYWdlciICcGsiC211c3RNYW5hZ2VyIgJwZCIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiC2NoZWNrQ2FsbGVyIhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSIPc2hvdWxkQXV0b1N0YWtlIgRhbUlkIgRwcklkIgxzbGlwcGFnZUFJbnYiDHNsaXBwYWdlUEludiIKbHBUcmFuc2ZlciILc2xwU3Rha2VJbnYiC21heFNsaXBwYWdlIgxtaW5PdXRBbW91bnQiCWF1dG9TdGFrZSIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDWlzUHV0RGlzYWJsZWQiB3BheW1lbnQiDSR0MDMxNzIzMzE4NTMiBWJvbnVzIhNlbWl0QW1vdW50RXN0aW1hdGVkIgplbWl0QW1vdW50IghzdGFrZUludiIHc2VuZEZlZSINJHQwMzI1ODIzMjcxNyINb3V0QXNzZXRJZFN0ciINaXNHZXREaXNhYmxlZCINJHQwMzM1MjIzMzY1NyIPYW1vdW50RXN0aW1hdGVkIgdidXJuSW52Ig1hc3NldFRyYW5zZmVyIg0kdDAzNDI5MjM0NDMwIg11bnN0YWtlQW1vdW50Igp1bnN0YWtlSW52Ig0kdDAzNTI1NTM1Mzg4IglvdXRBbXRBbXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5IhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0Ig1jaGVja1BheW1lbnRzIg9jaGVja1Bvb2xTdGF0dXMiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIMY2hlY2tBbW91bnRzIgthbXRBc3NldFN0ciINcHJpY2VBc3NldFN0ciINcG9vbExQQmFsYW5jZSIKcHJpY2VzTGlzdCIPbHBBbXRBc3NldFNoYXJlIhFscFByaWNlQXNzZXRTaGFyZSIKcG9vbFdlaWdodCIMY3VyUHJpY2VDYWxjIgxhbUJhbGFuY2VSYXciDHByQmFsYW5jZVJhdyIPYW1CYWxhbmNlUmF3WDE4Ig9wckJhbGFuY2VSYXdYMTgiEHBheW1lbnRMcEFzc2V0SWQiDHBheW1lbnRMcEFtdCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2hiAAFhAAgAAWIAgMLXLwABYwkAtgIBAIDC1y8AAWQJALYCAQCAgJC7utat8A0AAWUJALYCAQAAAAFmCQC2AgEAAAABZwkAtgIBAAEAAWgJALYCAQACAAFpAgVXQVZFUwABagICX18AAWsAAQABbAACAAFtAAMAAW4ABAABbwABAAFwAAIAAXEAAwABcgAEAAFzAAUAAXQABgABdQAHAAF2AAgAAXcACQABeAAKAAF5AAEAAXoAAgABQQADAAFCAAEAAUMABwEBRAIBRQFGCQC8AgMJALYCAQUBRQUBZAkAtgIBBQFGAQFHAgFIAUkJAKADAQkAvAIDBQFICQC2AgEFAUkFAWQBAUoDAUsBTAFNCQBrAwUBSwUBTAUBTQEBTgEBSAMJAGYCAAAFAUgJAQEtAQUBSAUBSAEBTwEBSAMJAL8CAgUBZQUBSAkAvgIBBQFIBQFIAQFQAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBUQACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFSAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFTAAIRJXMlc19fcHJpY2VfX2xhc3QBAVQCAVUBVgkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVUJAMwIAgkApAMBBQFWBQNuaWwFAWoBAVcCAVgBWQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAVgCAl9fBQFZAQFaAgFYAVkJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFYAgJfXwUBWQECYWEAAg8lc19fYW1vdW50QXNzZXQBAmFiAAIOJXNfX3ByaWNlQXNzZXQBAmFjAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFkAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhZQECYWYJAKwCAgkArAICAgglcyVzJXNfXwUCYWYCIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0AQJhZwICYWgCYWkJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFoAgJfXwUCYWkCCF9fY29uZmlnAQJhagECYWsJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYWsBAmFsAAIMJXNfX3NodXRkb3duAQJhbQECYW4JAKwCAgISJXMlc19fcG9vbFdlaWdodF9fBQJhbgECYW8AAhclc19fYWxsb3dlZExwU2NyaXB0SGFzaAACYXACFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhcQMCYXICYXMCYXQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIkb3JkZXIgdmFsaWRhdGlvbiBmYWlsZWQ6IG9yZGVyVmFsaWQ9CQClAwEFAmFyAg0gc2VuZGVyVmFsaWQ9CQClAwEFAmFzAg4gbWF0Y2hlclZhbGlkPQkApQMBBQJhdAECYXUCAmF2AmF3CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYXYFAmF3CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF2CQDMCAICAS4JAMwIAgUCYXcJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYXgCAmF2AmF3CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYXYFAmF3CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF2CQDMCAICAS4JAMwIAgUCYXcJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYXkBAmF6CQACAQkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmF6BQNuaWwCASAAAmFBCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYXUCBQR0aGlzCQEBUAAAAmFCCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYXUCBQJhQQUCYXAAAmFDCgACYUQJAPwHBAUCYUECEGdldEluRmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhRAIDSW50BQJhRAkAAgEJAKwCAgkAAwEFAmFEAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmFFCgACYUQJAPwHBAUCYUECEWdldE91dEZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYUQCA0ludAUCYUQJAAIBCQCsAgIJAAMBBQJhRAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AQJhRgAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYUEJAQJhbAAHAQJhRwAJANkEAQkBAmF1AgUCYUEJAQJhZAABAmFIAAQCYUkJAQJhdQIFBHRoaXMJAQJhYQAEAmFKCQECYXUCBQR0aGlzCQECYWIABAJhaQkBAmF4AgUCYUEJAQJhagEFAmFKBAJhaAkBAmF4AgUCYUEJAQJhagEFAmFJCQC1CQIJAQJhdQIFAmFBCQECYWcCCQCkAwEFAmFoCQCkAwEFAmFpBQFqAQJhSwECYUwDCQAAAgUCYUwFAWkFBHVuaXQJANkEAQUCYUwBAmFNAQJhTAMJAAACBQJhTAUEdW5pdAUBaQkA2AQBCQEFdmFsdWUBBQJhTAECYU4BAmFPCQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYU8FAW8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhTwUBcAkA2QQBCQCRAwIFAmFPBQFxCQECYUsBCQCRAwIFAmFPBQFyCQECYUsBCQCRAwIFAmFPBQFzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYU8FAXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhTwUBdQACYVAJAQJhTgEJAQJhSAAAAmFRBQJhUAACYVIIBQJhUQJfMQACYVMIBQJhUQJfMgACYVQIBQJhUQJfMwACYVUIBQJhUQJfNAACYVYIBQJhUQJfNQACYVcIBQJhUQJfNgACYVgIBQJhUQJfNwECYVkACQC1CQIJAQJhdQIFAmFBCQECYWMABQFqAAJhWgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmFZAAUBQgIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwACYmEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJhWQAFAUMCGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MBAmJiCgJiYwJiZAJiZQJiZgJiZwJiaAJiaQJiagJiawJibAkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYmMJAMwIAgkApAMBBQJiZAkAzAgCCQCkAwEFAmJlCQDMCAIJAKQDAQUCYmYJAMwIAgkApAMBBQJiZwkAzAgCCQCkAwEFAmJoCQDMCAIJAKQDAQUCYmkJAMwIAgkApAMBBQJiagkAzAgCCQCkAwEFAmJrCQDMCAIJAKQDAQUCYmwFA25pbAUBagECYm0GAmJuAmJvAmJwAmJmAmJpAmJqCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYm4JAMwIAgkApAMBBQJibwkAzAgCCQCkAwEFAmJwCQDMCAIJAKQDAQUCYmYJAMwIAgkApAMBBQJiaQkAzAgCCQCkAwEFAmJqBQNuaWwFAWoBAmJxAQJicgMJAAACBQJicgIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYnIBAmJzAgJidAJidQkAvAIDBQJidAUBZAUCYnUBAmJ2BAJidwJieAJieQJiegQCYkEJAQFEAgUCYnkFAmJ3BAJiQgkBAUQCBQJiegUCYngJAQJicwIFAmJCBQJiQQECYkMDAmJ5AmJ6AmJEBAJiRQkBAmFIAAQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdAQCYkcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdQQCYkgJAQJidgQFAmJGBQJiRwUCYnkFAmJ6BAJidQkBAUQCBQJieQUCYkYEAmJ0CQEBRAIFAmJ6BQJiRwQCYkkJAQFEAgUCYkQFAWIEAmJKCQECYnMCBQJidQUCYkkEAmJLCQECYnMCBQJidAUCYkkJAMwIAgUCYkgJAMwIAgUCYkoJAMwIAgUCYksFA25pbAECYkwDAmJ5AmJ6AmJEBAJiTQkBAmJDAwUCYnkFAmJ6BQJiRAkAzAgCCQEBRwIJAJEDAgUCYk0AAAUBYgkAzAgCCQEBRwIJAJEDAgUCYk0AAQUBYgkAzAgCCQEBRwIJAJEDAgUCYk0AAgUBYgUDbmlsAQJiTgQCYk8CYlACYlEBWAQCYkUJAQJhSAAEAmJSCQCRAwIFAmJFBQFxBAJiUwkAkQMCBQJiRQUBcgQCYlQJAJEDAgUCYkUFAXMEAmJ3CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXQEAmJ4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXUEAmJVCQCRAwIFAmJFBQFwBAJiVggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmJSCQCsAgIJAKwCAgIGQXNzZXQgBQJiUgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJiUgUCYlAJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmJXCQECYnEBBQJiUwQCYlgJAQFEAgUCYlcFAmJ3BAJiWQkBAmJxAQUCYlQEAmJaCQEBRAIFAmJZBQJieAQCY2EJAQJicwIFAmJaBQJiWAQCY2IJAQFHAgUCY2EFAWIEAmNjCQEBRAIFAmJRBQFiBAJjZAkBAUQCBQJiVgUBYgQCY2UJALwCAwUCYlgFAmNjBQJjZAQCY2YJALwCAwUCYloFAmNjBQJjZAQCY2cJAQFHAgUCY2UFAmJ3BAJjaAkBAUcCBQJjZgUCYngEAmNpAwkAAAIFAmJPAgAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFYBQJjZwMJAAACBQJiUwIFV0FWRVMFBHVuaXQJANkEAQUCYlMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBWAUCY2gDCQAAAgUCYlQCBVdBVkVTBQR1bml0CQDZBAEFAmJUCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAgkApQgBBQFYBQJiTwkBAmJtBgUCY2cFAmNoBQJiUQUCY2IFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAAUCY2IJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY2IFA25pbAkAnAoKBQJjZwUCY2gFAmJTBQJiVAUCYlcFAmJZBQJiVgUCY2EFAmJVBQJjaQECY2oJAmJPAmNrAmNsAmNtAmNuAmNvAVgCY3ACY3EEAmJFCQECYUgABAJiUgkA2QQBCQCRAwIFAmJFBQFxBAJjcgkAkQMCBQJiRQUBcgQCY3MJAJEDAgUCYkUFAXMEAmN0CQCRAwIFAmJFBQF2BAJjdQkAkQMCBQJiRQUBdwQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdAQCYkcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdQQCYlUJAJEDAgUCYkUFAXAEAmJWCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJSCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmJSAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCY3YJANgEAQkBC3ZhbHVlT3JFbHNlAgUCY20JANkEAQIFV0FWRVMEAmN3CQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmNvCQDZBAECBVdBVkVTAwMJAQIhPQIFAmNyBQJjdgYJAQIhPQIFAmNzBQJjdwkAAgECIkludmFsaWQgYW10IG9yIHByaWNlIGFzc2V0IHBhc3NlZC4EAmJXAwUCY3AJAQJicQEFAmNyCQBlAgkBAmJxAQUCY3IFAmNsBAJiWQMFAmNwCQECYnEBBQJjcwkAZQIJAQJicQEFAmNzBQJjbgQCY3gJAQFEAgUCY2wFAmJGBAJjeQkBAUQCBQJjbgUCYkcEAmN6CQECYnMCBQJjeQUCY3gEAmJYCQEBRAIFAmJXBQJiRgQCYloJAQFEAgUCYlkFAmJHBAJjQQMJAAACBQJiVgAABAJjYQUBZQQCY0IFAWUEAmJJCQB2BgkAuQICBQJjeAUCY3kAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFHAgUCYkkFAWIJAQFHAgUCY3gFAmJGCQEBRwIFAmN5BQJiRwkBAmJzAgkAtwICBQJiWgUCY3kJALcCAgUCYlgFAmN4BQJjQgQCY2EJAQJicwIFAmJaBQJiWAQCY0IJALwCAwkBAU8BCQC4AgIFAmNhBQJjegUBZAUCY2EEAmNDCQEBRAIFAmNrBQFiAwMJAQIhPQIFAmNhBQFlCQC/AgIFAmNCBQJjQwcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCY0ICHiBleGNlZWRlZCB0aGUgcGFzc2VkIGxpbWl0IG9mIAkApgMBBQJjQwQCY2QJAQFEAgUCYlYFAWIEAmNECQC8AgMFAmN4BQJjYQUBZAQCY0UJALwCAwUCY3kFAWQFAmNhBAJjRgMJAL8CAgUCY0QFAmN5CQCUCgIFAmNFBQJjeQkAlAoCBQJjeAUCY0QEAmNHCAUCY0YCXzEEAmNICAUCY0YCXzIEAmJJCQC8AgMFAmNkBQJjSAUCYloJAJcKBQkBAUcCBQJiSQUBYgkBAUcCBQJjRwUCYkYJAQFHAgUCY0gFAmJHBQJjYQUCY0IEAmNJCAUCY0ECXzEEAmNKCAUCY0ECXzIEAmNLCAUCY0ECXzMEAmNiCQEBRwIIBQJjQQJfNAUBYgQCY0wJAQFHAggFAmNBAl81BQFiAwkAZwIAAAUCY0kJAAIBAjZJbnZhbGlkIGNhbGN1bGF0aW9ucy4gTFAgY2FsY3VsYXRlZCBpcyBsZXNzIHRoYW4gemVyby4EAmNNAwkBASEBBQJjcQAABQJjSQQCY04JAGUCBQJjbAUCY0oEAmNPCQBlAgUCY24FAmNLBAJjUAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJjYgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjYgkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIFAVgFAmJPCQECYmIKBQJjSgUCY0sFAmNNBQJjYgUCY2sFAmNMBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjTgUCY08FA25pbAkAnwoNBQJjSQUCY00FAmNiBQJiVwUCYlkFAmJWBQJiUgUCYlUFAmNQBQJjTgUCY08FAmNtBQJjbwECY1EBAmNSBAJiRQkBAmFIAAQCY1MJAJEDAgUCYkUFAXIEAmNUCQCRAwIFAmJFBQFzBAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQFwBAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF0BAJiRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF1BAJjVQkBAmJxAQUCY1MEAmNWCQECYnEBBQJjVAQCY2EDCQAAAggFAmNSCW9yZGVyVHlwZQUDQnV5CQECYnYEBQJiRgUCYkcJAGQCBQJjVQgFAmNSBmFtb3VudAUCY1YJAQJidgQFAmJGBQJiRwkAZQIFAmNVCAUCY1IGYW1vdW50BQJjVgQCY2IJAQFHAgUCY2EFAWIDAwMJAQJhRgAGCQAAAgUCYlUFAW0GCQAAAgUCYlUFAW4JAAIBAhxFeGNoYW5nZSBvcGVyYXRpb25zIGRpc2FibGVkBAJjVwgIBQJjUglhc3NldFBhaXILYW1vdW50QXNzZXQEAmNYAwkAAAIFAmNXBQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJjVwQCY1kICAUCY1IJYXNzZXRQYWlyCnByaWNlQXNzZXQEAmNaAwkAAAIFAmNZBQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJjWQMDCQECIT0CBQJjWAUCY1MGCQECIT0CBQJjWgUCY1QJAAIBAhNXcm9uZyBvcmRlciBhc3NldHMuBAJkYQgFAmNSBXByaWNlBAJkYgkAawMFAWIFAmJHBQJiRgQCZGMJAQFKAwUCZGEFAWIFAmRiBAJkZAMJAAACCAUCY1IJb3JkZXJUeXBlBQNCdXkJAGcCBQJjYgUCZGMJAGcCBQJkYwUCY2IGAQJkZQECZGYDCQECIT0CCQCQAwEIBQJkZghwYXltZW50cwABCQACAQIdZXhhY3RseSAxIHBheW1lbnQgaXMgZXhwZWN0ZWQEAmRnCQEFdmFsdWUBCQCRAwIIBQJkZghwYXltZW50cwAABAJiUAkBBXZhbHVlAQgFAmRnB2Fzc2V0SWQEAmRoCAUCZGcGYW1vdW50BAJjQQkBAmJOBAkA2AQBCAUCZGYNdHJhbnNhY3Rpb25JZAkA2AQBBQJiUAUCZGgIBQJkZgZjYWxsZXIEAmNnCAUCY0ECXzEEAmNoCAUCY0ECXzIEAmJVCQENcGFyc2VJbnRWYWx1ZQEIBQJjQQJfOQQCY2kIBQJjQQNfMTADAwkBAmFGAAYJAAACBQJiVQUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCYlUJAJcKBQUCY2cFAmNoBQJkaAUCYlAFAmNpAQJkaQMCZGYCY2sCY3EDCQECIT0CCQCQAwEIBQJkZghwYXltZW50cwACCQACAQIfZXhhY3RseSAyIHBheW1lbnRzIGFyZSBleHBlY3RlZAQCZGoJAQV2YWx1ZQEJAJEDAggFAmRmCHBheW1lbnRzAAAEAmRrCQEFdmFsdWUBCQCRAwIIBQJkZghwYXltZW50cwABBAJkbAkBAmNqCQkA2AQBCAUCZGYNdHJhbnNhY3Rpb25JZAUCY2sIBQJkagZhbW91bnQIBQJkagdhc3NldElkCAUCZGsGYW1vdW50CAUCZGsHYXNzZXRJZAkApQgBCAUCZGYGY2FsbGVyBwUCY3EEAmJVCQENcGFyc2VJbnRWYWx1ZQEIBQJkbAJfOAMDAwkBAmFGAAYJAAACBQJiVQUBbAYJAAACBQJiVQUBbgkAAgEJAKwCAgIsUHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCYlUFAmRsAQJkbQECZG4EAmRvCQD8BwQFAmFBAgRlbWl0CQDMCAIFAmRuBQNuaWwFA25pbAMJAAACBQJkbwUCZG8EAmRwBAJkcQUCZG8DCQABAgUCZHECB0FkZHJlc3MEAmRyBQJkcQkA/AcEBQJkcgIEZW1pdAkAzAgCBQJkbgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZHAFAmRwBQJkbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZHMCAmRuAmR0BAJkdQMJAAACBQJkdAAAAAAJAGsDBQJkbgUCZHQFAWIJAJQKAgkAZQIFAmRuBQJkdQUCZHUBAmR2BAJkdwJkeAFYAVkEAmR5CQAAAgUBWQUEdW5pdAQCZHoJAQJicQEJAQJhTQEFAmFVBAJkQQkBAmJxAQkBAmFNAQUCYVYEAmRCAwkAAAIFAmR4BQJhVQYDCQAAAgUCZHgFAmFWBwkBAmF5AQINaW52YWxpZCBhc3NldAQCZEMDBQJkeQkAlAoCBQJkegUCZEEDBQJkQgkAlAoCCQBlAgUCZHoFAmR3BQJkQQkAlAoCBQJkegkAZQIFAmRBBQJkdwQCZEQIBQJkQwJfMQQCZEUIBQJkQwJfMgQCZEYDBQJkQgkAlAoCBQJkdwAACQCUCgIAAAUCZHcEAmRHCAUCZEYCXzEEAmRICAUCZEYCXzIEAmRJCAkBAmRzAgUCZEcFAmFDAl8xBAJkSggJAQJkcwIFAmRIBQJhQwJfMQQCZEsJAQJkcwIFAmR3BQJhQwQCZEwIBQJkSwJfMQQCZHUIBQJkSwJfMgQCZE0JAGQCBQJkRAUCZEkEAmROCQBkAgUCZEUFAmRKBAJkTwkBAmJzAgkBAUQCBQJkTgUCYVgJAQFEAgUCZE0FAmFXBAJkUAkBAUcCBQJkTwUBYgQCZFEDBQJkQgUCZEQFAmRFBAJkUgkAtgIBBQJkUQQCZFMJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJhVAkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJhVAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmRUAwkAvwICBQJkUwUBZgYJAQJheQECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZFQFAmRUBAJkVQkAtgIBBQJkTAQCZFYJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZFMJALgCAgkBCnNxcnRCaWdJbnQECQC3AgIFAWQJALoCAgkAuQICBQJkVQUBZAUCZFIAEgASBQRET1dOBQFkBQFkBQNuaWwEAmNQAwUCZHkFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJkUAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkUAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIJAKUIAQkBBXZhbHVlAQUBWAkA2AQBCQEFdmFsdWUBBQFZCQECYmIKBQJkRwUCZEgFAmRWBQJkUAAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmRXCQECYnMCCQEBRAIFAmRFBQJhWAkBAUQCBQJkRAUCYVcEAmRYCQEBRwIFAmRXBQFiBAJkWQQCZFoDBQJkQgkAlAoCBQJkRwUCZEQJAJQKAgUCZEgFAmRFBAJkbggFAmRaAl8xBAJlYQgFAmRaAl8yBAJlYgkAoAMBCQC8AgMFAmRTCQC2AgEJAGkCBQJkbgACCQC2AgEFAmVhCQBrAwkAZQIFAmRWBQJlYgUBYgUCZWIJAJYKBAUCZFYFAmNQBQJkdQUCZFkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmVjBQJlZAJkTAJkeAFYAVkEAmR5CQAAAgUBWQUEdW5pdAQCZWUJAMwIAgMJAAACBQJkeAUCYVQGCQECYXkBAhBpbnZhbGlkIGxwIGFzc2V0BQNuaWwDCQAAAgUCZWUFAmVlBAJlZgMJAAACBQJlZAUCYVUGAwkAAAIFAmVkBQJhVgcJAQJheQECDWludmFsaWQgYXNzZXQEAmVnAwUCZWYJALYCAQkBAmJxAQkBAmFNAQUCYVUJALYCAQkBAmJxAQkBAmFNAQUCYVYEAmVoCQECYnEBCQECYU0BBQJhVQQCZWkJAQJicQEJAQJhTQEFAmFWBAJlagMFAmVmBQJlaAUCZWkEAmVrCQC2AgEFAmVqBAJkUwkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmFUCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmFUAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZWwJALYCAQUCZEwEAmVtCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmVnCQC4AgIFAWQJAHYGCQC4AgIFAWQJALoCAgkAuQICBQJlbAUBZAUCZFMAEgUBaAAAABIFBERPV04FAWQFA25pbAQCZW4JAQJkcwIFAmVtBQJhRQQCZW8IBQJlbgJfMQQCZHUIBQJlbgJfMgQCZXADBQJlZgkAlgoEBQJlbwAACQBlAgUCZWgFAmVtBQJlaQkAlgoEAAAFAmVvBQJlaAkAZQIFAmVpBQJlbQQCZXEIBQJlcAJfMQQCZXIIBQJlcAJfMgQCZXMIBQJlcAJfMwQCZXQIBQJlcAJfNAQCZE8JAQJicwIJAQFEAgUCZXQFAmFYCQEBRAIFAmVzBQJhVwQCZFAJAQFHAgUCZE8FAWIEAmNQAwUCZHkFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIJAKUIAQkBBXZhbHVlAQUBWAkA2AQBCQEFdmFsdWUBBQFZCQECYm0GBQJlcQUCZXIFAmRMBQJkUAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJkUAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkUAUDbmlsBAJkVwkBAmJzAgkBAUQCBQJlaQUCYVgJAQFEAgUCZWgFAmFXBAJkWAkBAUcCBQJkVwUBYgQCZFkEAmV1CQBoAgkAoAMBCQC8AgMFAmVnBQJlbAUCZFMAAgkAawMJAGUCBQJlbwUCZXUFAWIFAmV1CQCWCgQFAmVvBQJjUAUCZHUFAmRZCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJldgAEAmRxCQCiCAEJAQFRAAMJAAECBQJkcQIGU3RyaW5nBAJldwUCZHEJANkEAQUCZXcDCQABAgUCZHECBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZXgABAJkcQkAoggBCQEBUgADCQABAgUCZHECBlN0cmluZwQCZXcFAmRxCQDZBAEFAmV3AwkAAQIFAmRxAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmV5AQJkZgQCZHEJAQJldgADCQABAgUCZHECCkJ5dGVWZWN0b3IEAmV6BQJkcQkAAAIIBQJkZg9jYWxsZXJQdWJsaWNLZXkFAmV6AwkAAQIFAmRxAgRVbml0CQAAAggFAmRmBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJlQQECZGYEAmVCCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAmRxCQECZXYAAwkAAQIFAmRxAgpCeXRlVmVjdG9yBAJlegUCZHEDCQAAAggFAmRmD2NhbGxlclB1YmxpY0tleQUCZXoGBQJlQgMJAAECBQJkcQIEVW5pdAMJAAACCAUCZGYGY2FsbGVyBQR0aGlzBgUCZUIJAAIBAgtNYXRjaCBlcnJvchoCZGYBCnNldE1hbmFnZXIBAmVDBAJlRAkBAmVBAQUCZGYDCQAAAgUCZUQFAmVEBAJlRQkA2QQBBQJlQwMJAAACBQJlRQUCZUUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVIABQJlQwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQ5jb25maXJtTWFuYWdlcgAEAmVGCQECZXgABAJlRwMJAQlpc0RlZmluZWQBBQJlRgYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZUcFAmVHBAJlSAMJAAACCAUCZGYPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJlRgYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZUgFAmVICQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFRAAkA2AQBCQEFdmFsdWUBBQJlRgkAzAgCCQELRGVsZXRlRW50cnkBCQEBUgAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgEDcHV0AgJjawJlSQMJAGYCAAAFAmNrCQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmRsCQECZGkDBQJkZgUCY2sGBAJjTQgFAmRsAl8yBAJiUggFAmRsAl83BAJjaQgFAmRsAl85BAJjTggFAmRsA18xMAQCY08IBQJkbANfMTEEAmVKCAUCZGwDXzEyBAJlSwgFAmRsA18xMwQCZG8JAPwHBAUCYUECBGVtaXQJAMwIAgUCY00FA25pbAUDbmlsAwkAAAIFAmRvBQJkbwQCZHAEAmRxBQJkbwMJAAECBQJkcQIHQWRkcmVzcwQCZHIFAmRxCQD8BwQFAmRyAgRlbWl0CQDMCAIFAmNNBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkcAUCZHAEAmVMAwkAZgIFAmNOAAAJAPwHBAUCYmECA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJlSgUCY04FA25pbAUDbmlsAwkAAAIFAmVMBQJlTAQCZU0DCQBmAgUCY08AAAkA/AcEBQJiYQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmVLBQJjTwUDbmlsBQNuaWwDCQAAAgUCZU0FAmVNBAJlTgMFAmVJBAJlTwkA/AcEBQJhWgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlIFAmNNBQNuaWwDCQAAAgUCZU8FAmVPBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRmBmNhbGxlcgUCY00FAmJSBQNuaWwJAM4IAgUCY2kFAmVOCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQpwdXRGb3JGcmVlAQJlUAMJAGYCAAAFAmVQCQACAQIUSW52YWxpZCB2YWx1ZSBwYXNzZWQEAmRsCQECZGkDBQJkZgUCZVAHCAUCZGwCXzkCZGYBCXB1dE9uZVRrbgICZVECZVIEAmVTCgACYUQJAPwHBAUCYUECKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhRAIHQm9vbGVhbgUCYUQJAAIBCQCsAgIJAAMBBQJhRAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZVQDAwMJAQJhRgAGCQAAAgUCYVMFAWwGCQAAAgUCYVMFAW4GBQJlUwQCZWUJAMwIAgMDCQEBIQEFAmVUBgkBAmV5AQUCZGYGCQECYXkBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkZghwYXltZW50cwABBgkBAmF5AQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWUFAmVlBAJlVQkAkQMCCAUCZGYIcGF5bWVudHMAAAQCZHgIBQJlVQdhc3NldElkBAJkdwgFAmVVBmFtb3VudAQBWAgFAmRmBmNhbGxlcgQBWQgFAmRmDXRyYW5zYWN0aW9uSWQEAmVWCQECZHYEBQJkdwUCZHgFAVgFAVkDCQAAAgUCZVYFAmVWBAJlVwgFAmVWAl80BAJkdQgFAmVWAl8zBAJjUAgFAmVWAl8yBAJlWAgFAmVWAl8xBAJlWQMDCQBmAgUCZVEAAAkAZgIFAmVRBQJlWAcJAQJheQEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZVEFA25pbAIABQJlWAQCZG8JAQJkbQEFAmVZAwkAAAIFAmRvBQJkbwQCZU4DBQJlUgQCZVoJAPwHBAUCYVoCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmFUBQJlWQUDbmlsAwkAAAIFAmVaBQJlWgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkZgZjYWxsZXIFAmVZBQJhVAUDbmlsBAJmYQMJAGYCBQJkdQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFCBQJkdQUCZHgFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCBQJjUAUCZU4FAmZhBQJlWQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgERcHV0T25lVGtuUkVBRE9OTFkCAmR4AmR3BAJmYgkBAmR2BAUCZHcJAQJhSwEFAmR4BQR1bml0BQR1bml0BAJlWAgFAmZiAl8xBAJjUAgFAmZiAl8yBAJkdQgFAmZiAl8zBAJlVwgFAmZiAl80CQCUCgIFA25pbAkAlQoDBQJlWAUCZHUFAmVXAmRmAQlnZXRPbmVUa24CAmZjAmVRBAJlUwoAAmFECQD8BwQFAmFBAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYUQCB0Jvb2xlYW4FAmFECQACAQkArAICCQADAQUCYUQCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZkAwMJAQJhRgAGCQAAAgUCYVMFAW4GBQJlUwQCZWUJAMwIAgMDCQEBIQEFAmZkBgkBAmV5AQUCZGYGCQECYXkBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkZghwYXltZW50cwABBgkBAmF5AQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWUFAmVlBAJlZAkBAmFLAQUCZmMEAmVVCQCRAwIIBQJkZghwYXltZW50cwAABAJkeAgFAmVVB2Fzc2V0SWQEAmRMCAUCZVUGYW1vdW50BAFYCAUCZGYGY2FsbGVyBAFZCAUCZGYNdHJhbnNhY3Rpb25JZAQCZmUJAQJlYwUFAmVkBQJkTAUCZHgFAVgFAVkDCQAAAgUCZmUFAmZlBAJlVwgFAmZlAl80BAJkdQgFAmZlAl8zBAJjUAgFAmZlAl8yBAJmZggFAmZlAl8xBAJkbgMDCQBmAgUCZVEAAAkAZgIFAmVRBQJmZgcJAQJheQEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZVEFA25pbAIABQJmZgQCZmcJAPwHBAUCYUECBGJ1cm4JAMwIAgUCZEwFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZHgFAmRMBQNuaWwDCQAAAgUCZmcFAmZnBAJmaAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFYBQJkbgUCZWQFA25pbAQCZmEDCQBmAgUCZHUAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhQgUCZHUFAmVkBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgUCY1AFAmZoBQJmYQUCZG4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBEWdldE9uZVRrblJFQURPTkxZAgJlZAJkTAQCZmkJAQJlYwUJAQJhSwEFAmVkBQJkTAUCYVQFBHVuaXQFBHVuaXQEAmZmCAUCZmkCXzEEAmNQCAUCZmkCXzIEAmR1CAUCZmkCXzMEAmVXCAUCZmkCXzQJAJQKAgUDbmlsCQCVCgMFAmZmBQJkdQUCZVcCZGYBE3Vuc3Rha2VBbmRHZXRPbmVUa24DAmZqAmZjAmVRBAJlUwoAAmFECQD8BwQFAmFBAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYUQCB0Jvb2xlYW4FAmFECQACAQkArAICCQADAQUCYUQCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZkAwMJAQJhRgAGCQAAAgUCYVMFAW4GBQJlUwQCZWUJAMwIAgMDCQEBIQEFAmZkBgkBAmV5AQUCZGYGCQECYXkBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkZghwYXltZW50cwAABgkBAmF5AQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWUFAmVlBAJlZAkBAmFLAQUCZmMEAVgIBQJkZgZjYWxsZXIEAVkIBQJkZg10cmFuc2FjdGlvbklkBAJmawkA/AcEBQJhWgIHdW5zdGFrZQkAzAgCCQDYBAEFAmFUCQDMCAIFAmZqBQNuaWwFA25pbAMJAAACBQJmawUCZmsEAmZsCQECZWMFBQJlZAUCZmoFAmFUBQFYBQFZAwkAAAIFAmZsBQJmbAQCZVcIBQJmbAJfNAQCZHUIBQJmbAJfMwQCY1AIBQJmbAJfMgQCZmYIBQJmbAJfMQQCZG4DAwkAZgIFAmVRAAAJAGYCBQJlUQUCZmYHCQECYXkBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmVRBQNuaWwCAAUCZmYEAmZnCQD8BwQFAmFBAgRidXJuCQDMCAIFAmZqBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmFUBQJmagUDbmlsAwkAAAIFAmZnBQJmZwQCZmgJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRmBmNhbGxlcgUCZG4FAmVkBQNuaWwEAmZhAwkAZgIFAmR1AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUIFAmR1BQJlZAUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIFAmNQBQJmaAUCZmEFAmRuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQNnZXQABAJjQQkBAmRlAQUCZGYEAmZtCAUCY0ECXzEEAmNoCAUCY0ECXzIEAmRoCAUCY0ECXzMEAmJQCAUCY0ECXzQEAmNpCAUCY0ECXzUEAmZuCQD8BwQFAmFBAgRidXJuCQDMCAIFAmRoBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJQBQJkaAUDbmlsAwkAAAIFAmZuBQJmbgUCY2kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBCWdldE5vTGVzcwICZm8CZnAEAmNBCQECZGUBBQJkZgQCY2cIBQJjQQJfMQQCY2gIBQJjQQJfMgQCZGgIBQJjQQJfMwQCYlAIBQJjQQJfNAQCY2kIBQJjQQJfNQMJAGYCBQJmbwUCY2cJAAIBCQCsAgIJAKwCAgkArAICAhxub0xlc3NUaGVuQW10QXNzZXQgZmFpbGVkOiAgCQCkAwEFAmNnAgMgPCAJAKQDAQUCZm8DCQBmAgUCZnAFAmNoCQACAQkArAICCQCsAgIJAKwCAgIdbm9MZXNzVGhlblByaWNlQXNzZXQgZmFpbGVkOiAJAKQDAQUCY2gCAyA8IAkApAMBBQJmcAQCZm4JAPwHBAUCYUECBGJ1cm4JAMwIAgUCZGgFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlAFAmRoBQNuaWwDCQAAAgUCZm4FAmZuBQJjaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgENdW5zdGFrZUFuZEdldAECZG4EAmZxAwkBAiE9AgkAkAMBCAUCZGYIcGF5bWVudHMAAAkAAgECGE5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAYDCQAAAgUCZnEFAmZxBAJiRQkBAmFIAAQCYlIJANkEAQkAkQMCBQJiRQUBcQQCZmsJAPwHBAUCYVoCB3Vuc3Rha2UJAMwIAgkA2AQBBQJiUgkAzAgCBQJkbgUDbmlsBQNuaWwDCQAAAgUCZmsFAmZrBAJjQQkBAmJOBAkA2AQBCAUCZGYNdHJhbnNhY3Rpb25JZAkA2AQBBQJiUgUCZG4IBQJkZgZjYWxsZXIEAmJVCQENcGFyc2VJbnRWYWx1ZQEIBQJjQQJfOQQCY2kIBQJjQQNfMTAEAmZyAwMJAQJhRgAGCQAAAgUCYlUFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmJVBgMJAAACBQJmcgUCZnIEAmZuCQD8BwQFAmFBAgRidXJuCQDMCAIFAmRuBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJSBQJkbgUDbmlsAwkAAAIFAmZuBQJmbgUCY2kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmZqAmZzAmZwBAJmZAMJAQJhRgAGCQAAAgUCYVMFAW4EAmVlCQDMCAIDCQEBIQEFAmZkBgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRmCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWUFAmVlBAJmawkA/AcEBQJhWgIHdW5zdGFrZQkAzAgCCQDYBAEFAmFUCQDMCAIFAmZqBQNuaWwFA25pbAMJAAACBQJmawUCZmsEAmNBCQECYk4ECQDYBAEIBQJkZg10cmFuc2FjdGlvbklkCQDYBAEFAmFUBQJmaggFAmRmBmNhbGxlcgQCY2cIBQJjQQJfMQQCY2gIBQJjQQJfMgQCY2kIBQJjQQNfMTAEAmZ0CQDMCAIDCQBnAgUCY2cFAmZzBgkAAgEJALkJAgkAzAgCAixhbW91bnQgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZzBQNuaWwCAAkAzAgCAwkAZwIFAmNoBQJmcAYJAAIBCQC5CQIJAMwIAgIrcHJpY2UgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZwBQNuaWwCAAUDbmlsAwkAAAIFAmZ0BQJmdAQCZm4JAPwHBAUCYUECBGJ1cm4JAMwIAgUCZmoFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYVQFAmZqBQNuaWwDCQAAAgUCZm4FAmZuBQJjaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgEIYWN0aXZhdGUCAmZ1AmZ2AwkBAiE9AgkApQgBCAUCZGYGY2FsbGVyCQClCAEFAmFBCQACAQIScGVybWlzc2lvbnMgZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAAUCZnUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFiAAUCZnYFA25pbAIHc3VjY2VzcwJkZgEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYUgAAmRmARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJicgkAlAoCBQNuaWwJAQJicQEFAmJyAmRmARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJieQJiegJiRAQCYk0JAQJiQwMFAmJ5BQJiegUCYkQJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJiTQAACQDMCAIJAKYDAQkAkQMCBQJiTQABCQDMCAIJAKYDAQkAkQMCBQJiTQACBQNuaWwCZGYBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFFAUYJAJQKAgUDbmlsCQCmAwEJAQFEAgUBRQUBRgJkZgEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBSAFJCQCUCgIFA25pbAkBAUcCCQCnAwEFAUgFAUkCZGYBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYnQCYnUJAJQKAgUDbmlsCQCmAwEJAQJicwIJAKcDAQUCYnQJAKcDAQUCYnUCZGYBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJiTwJjawJjbAJjbQJjbgJjbwFYAmNwAmNxCQCUCgIFA25pbAkBAmNqCQUCYk8FAmNrBQJjbAUCY20FAmNuBQJjbwUBWAUCY3AFAmNxAmRmASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCYk8CYlACYlEBWAQCY0EJAQJiTgQFAmJPBQJiUAUCYlEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAVgJAJQKAgUDbmlsCQCcCgoIBQJjQQJfMQgFAmNBAl8yCAUCY0ECXzMIBQJjQQJfNAgFAmNBAl81CAUCY0ECXzYIBQJjQQJfNwkApgMBCAUCY0ECXzgIBQJjQQJfOQgFAmNBA18xMAJkZgENc3RhdHNSRUFET05MWQAEAmJFCQECYUgABAJiUgkA2QQBCQCRAwIFAmJFBQFxBAJjUwkAkQMCBQJiRQUBcgQCY1QJAJEDAgUCYkUFAXMEAmN0CQCRAwIFAmJFBQF2BAJjdQkAkQMCBQJiRQUBdwQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdAQCYkcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdQQCZncICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlIJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlICDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJjVQkBAmJxAQUCY1MEAmNWCQECYnEBBQJjVAQCZngDCQAAAgUCZncAAAkAzAgCBQFlCQDMCAIFAWUJAMwIAgUBZQUDbmlsCQECYkMDBQJjVQUCY1YFAmZ3BAJjYgAABAJmeQkBAUcCCQCRAwIFAmZ4AAEFAWIEAmZ6CQEBRwIJAJEDAgUCZngAAgUBYgQCZkEJAQV2YWx1ZQEJAJoIAgUCYUEJAQJhbQEJAKUIAQUEdGhpcwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNVCQDMCAIJAKQDAQUCY1YJAMwIAgkApAMBBQJmdwkAzAgCCQCkAwEFAmNiCQDMCAIJAKQDAQUCZnkJAMwIAgkApAMBBQJmegkAzAgCCQCkAwEFAmZBBQNuaWwFAWoCZGYBIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZAQJjbAQCYkUJAQJhSAAEAmJSCQDZBAEJAJEDAgUCYkUFAXEEAmNyCQCRAwIFAmJFBQFyBAJiUwkA2QQBBQJjcgQCY3MJAJEDAgUCYkUFAXMEAmJUCQDZBAEFAmNzBAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF0BAJiRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF1BAJiVQkAkQMCBQJiRQUBcAQCZncICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlIJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlICDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJjVQkBAmJxAQUCY3IEAmNWCQECYnEBBQJjcwQCYkEJAQFEAgUCY1UFAmJGBAJiQgkBAUQCBQJjVgUCYkcEAmNhAwkAAAIFAmZ3AAAFAWUJAQJicwIFAmJCBQJiQQQCY3gJAQFEAgUCY2wFAmJGBAJjeQkAvAIDBQJjeAUCY2EFAWQEAmNuCQEBRwIFAmN5BQJiRwQCZGwJAQJjagkCAACgwh4FAmNsBQJiUwUCY24FAmJUAgAGBwQCY0kIBQJkbAJfMQQCZkIIBQJkbAJfMwQCYlcIBQJkbAJfNAQCYlkIBQJkbAJfNQQCYlYIBQJkbAJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY0kJAMwIAgkApAMBCQEBRwIFAmNhBQFiCQDMCAIJAKQDAQUCYlcJAMwIAgkApAMBBQJiWQkAzAgCCQCkAwEFAmJWCQDMCAIFAmJVCQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJjbgUDbmlsBQFqAmRmAR9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAQJjbgQCYkUJAQJhSAAEAmJSCQDZBAEJAJEDAgUCYkUFAXEEAmNyCQCRAwIFAmJFBQFyBAJiUwkA2QQBBQJjcgQCY3MJAJEDAgUCYkUFAXMEAmJUCQDZBAEFAmNzBAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF0BAJiRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF1BAJiVQkAkQMCBQJiRQUBcAQCZncICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlIJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlICDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJmQwkBAmJxAQUCY3IEAmZECQECYnEBBQJjcwQCZkUJAQFEAgUCZkMFAmJGBAJmRgkBAUQCBQJmRAUCYkcEAmNhAwkAAAIFAmZ3AAAFAWUJAQJicwIFAmZGBQJmRQQCY3kJAQFEAgUCY24FAmJHBAJjeAkAvAIDBQJjeQUBZAUCY2EEAmNsCQEBRwIFAmN4BQJiRgQCZGwJAQJjagkCAACgwh4FAmNsBQJiUwUCY24FAmJUAgAGBwQCY0kIBQJkbAJfMQQCZkIIBQJkbAJfMwQCYlcIBQJkbAJfNAQCYlkIBQJkbAJfNQQCYlYIBQJkbAJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY0kJAMwIAgkApAMBCQEBRwIFAmNhBQFiCQDMCAIJAKQDAQUCYlcJAMwIAgkApAMBBQJiWQkAzAgCCQCkAwEFAmJWCQDMCAIFAmJVCQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJjbgUDbmlsBQFqAmRmARNldmFsdWF0ZUdldFJFQURPTkxZAgJmRwJmSAQCY0EJAQJiTgQCAAUCZkcFAmZIBQR0aGlzBAJjZwgFAmNBAl8xBAJjaAgFAmNBAl8yBAJiVwgFAmNBAl81BAJiWQgFAmNBAl82BAJiVggFAmNBAl83BAJjYggFAmNBAl84BAJiVQkBDXBhcnNlSW50VmFsdWUBCAUCY0ECXzkJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjZwkAzAgCCQCkAwEFAmNoCQDMCAIJAKQDAQUCYlcJAMwIAgkApAMBBQJiWQkAzAgCCQCkAwEFAmJWCQDMCAIJAKYDAQUCY2IJAMwIAgkApAMBBQJiVQUDbmlsBQFqAQJmSQECZkoABAJmSwQCZHEJAQJldgADCQABAgUCZHECCkJ5dGVWZWN0b3IEAmV6BQJkcQUCZXoDCQABAgUCZHECBFVuaXQIBQJmSQ9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCZHEFAmZJAwkAAQIFAmRxAgVPcmRlcgQCY1IFAmRxBAJmTAkBAmFHAAQCYXIJAQJjUQEFAmNSBAJhcwkA9AMDCAUCY1IJYm9keUJ5dGVzCQCRAwIIBQJjUgZwcm9vZnMAAAgFAmNSD3NlbmRlclB1YmxpY0tleQQCYXQJAPQDAwgFAmNSCWJvZHlCeXRlcwkAkQMCCAUCY1IGcHJvb2ZzAAEFAmZMAwMDBQJhcgUCYXMHBQJhdAcGCQECYXEDBQJhcgUCYXMFAmF0AwkAAQIFAmRxAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCZXcFAmRxBAJmTQkA9gMBCQEFdmFsdWUBCAUCZXcGc2NyaXB0BAJmTgkA2wQBCQEFdmFsdWUBCQCdCAIFAmFBCQECYW8ABAJmTwkA8QcBBQR0aGlzAwMJAAACBQJmTgUCZk0JAQIhPQIFAmZPBQJmTQcGCQD0AwMIBQJmSQlib2R5Qnl0ZXMJAJEDAggFAmZJBnByb29mcwAABQJmSwkA9AMDCAUCZkkJYm9keUJ5dGVzCQCRAwIIBQJmSQZwcm9vZnMAAAUCZkvBwFdz", "chainId": 84, "height": 2359863, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9Apo1SRRRNvzSAi4ahmqZdedN6x56fkq8eSmMT3yYdA5 Next: 4F6gaEjzJwnbH6RunRAXrup6Zc8mBMLYCE2zwAC8hSKn Diff:
OldNewDifferences
105105 func ab () = "%s__priceAsset"
106106
107107
108-let ac = "%s__fee"
109-
110-let ad = fraction(10, b, 10000)
111-
112-let ae = valueOrElse(getInteger(this, ac), ad)
113-
114-func af () = "%s__factoryConfig"
108+func ac () = "%s__factoryConfig"
115109
116110
117-func ag () = "%s%s__matcher__publicKey"
111+func ad () = "%s%s__matcher__publicKey"
118112
119113
120-func ah (ai) = (("%s%s%s__" + ai) + "__mappings__poolContract2LpAsset")
114+func ae (af) = (("%s%s%s__" + af) + "__mappings__poolContract2LpAsset")
121115
122116
123-func aj (ak,al) = (((("%d%d%s__" + ak) + "__") + al) + "__config")
117+func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
124118
125119
126-func am (an) = ("%s%s%s__mappings__baseAsset2internalId__" + an)
120+func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
127121
128122
129-func ao () = "%s__shutdown"
123+func al () = "%s__shutdown"
130124
131125
132-func ap (aq) = ("%s%s__poolWeight__" + aq)
126+func am (an) = ("%s%s__poolWeight__" + an)
133127
134128
135-func ar () = "%s__allowedLpScriptHash"
129+func ao () = "%s__allowedLpScriptHash"
136130
137131
138-let as = "%s__feeCollectorAddress"
132+let ap = "%s__feeCollectorAddress"
139133
140-func at (au,av,aw) = throw(((((("order validation failed: orderValid=" + toString(au)) + " senderValid=") + toString(av)) + " matcherValid=") + toString(aw)))
134+func aq (ar,as,at) = throw(((((("order validation failed: orderValid=" + toString(ar)) + " senderValid=") + toString(as)) + " matcherValid=") + toString(at)))
141135
142136
143-func ax (ay,az) = valueOrErrorMessage(getString(ay, az), makeString(["mandatory ", toString(ay), ".", az, " is not defined"], ""))
137+func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " is not defined"], ""))
144138
145139
146-func aA (ay,az) = valueOrErrorMessage(getInteger(ay, az), makeString(["mandatory ", toString(ay), ".", az, " is not defined"], ""))
140+func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " is not defined"], ""))
147141
148142
149-func aB (aC) = throw(makeString(["lp.ride:", aC], " "))
143+func ay (az) = throw(makeString(["lp.ride:", az], " "))
150144
151145
152-let aD = addressFromStringValue(ax(this, P()))
146+let aA = addressFromStringValue(au(this, P()))
153147
154-let aE = addressFromStringValue(ax(aD, as))
148+let aB = addressFromStringValue(au(aA, ap))
155149
156-func aF () = valueOrElse(getBoolean(aD, ao()), false)
150+let aC = {
151+ let aD = invoke(aA, "getInFeeREADONLY", [toString(this)], nil)
152+ if ($isInstanceOf(aD, "Int"))
153+ then aD
154+ else throw(($getType(aD) + " couldn't be cast to Int"))
155+ }
156+
157+let aE = {
158+ let aD = invoke(aA, "getOutFeeREADONLY", [toString(this)], nil)
159+ if ($isInstanceOf(aD, "Int"))
160+ then aD
161+ else throw(($getType(aD) + " couldn't be cast to Int"))
162+ }
163+
164+func aF () = valueOrElse(getBoolean(aA, al()), false)
157165
158166
159-func aG () = fromBase58String(ax(aD, ag()))
167+func aG () = fromBase58String(au(aA, ad()))
160168
161169
162170 func aH () = {
163- let aI = ax(this, aa())
164- let aJ = ax(this, ab())
165- let al = aA(aD, am(aJ))
166- let ak = aA(aD, am(aI))
167- split(ax(aD, aj(toString(ak), toString(al))), j)
171+ let aI = au(this, aa())
172+ let aJ = au(this, ab())
173+ let ai = ax(aA, aj(aJ))
174+ let ah = ax(aA, aj(aI))
175+ split(au(aA, ag(toString(ah), toString(ai))), j)
168176 }
169177
170178
199207
200208 let aX = aQ._7
201209
202-func aY () = split(ax(aD, af()), j)
210+func aY () = split(au(aA, ac()), j)
203211
204212
205213 let aZ = valueOrErrorMessage(addressFromString(aY()[B]), "incorrect staking address")
442450
443451
444452 func dm (dn) = {
445- let do = invoke(aD, "emit", [dn], nil)
453+ let do = invoke(aA, "emit", [dn], nil)
446454 if ((do == do))
447455 then {
448456 let dp = {
462470 }
463471
464472
465-func ds (dn) = {
466- let dt = fraction(dn, ae, b)
467- $Tuple2((dn - dt), dt)
473+func ds (dn,dt) = {
474+ let du = if ((dt == 0))
475+ then 0
476+ else fraction(dn, dt, b)
477+ $Tuple2((dn - du), du)
468478 }
469479
470480
471-func du (dv,dw,X,Y) = {
472- let dx = (Y == unit)
473- let dy = bq(aM(aU))
474- let dz = bq(aM(aV))
475- let dA = if ((dw == aU))
481+func dv (dw,dx,X,Y) = {
482+ let dy = (Y == unit)
483+ let dz = bq(aM(aU))
484+ let dA = bq(aM(aV))
485+ let dB = if ((dx == aU))
476486 then true
477- else if ((dw == aV))
487+ else if ((dx == aV))
478488 then false
479- else aB("invalid asset")
480- let dB = if (dx)
481- then $Tuple2(dy, dz)
482- else if (dA)
483- then $Tuple2((dy - dv), dz)
484- else $Tuple2(dy, (dz - dv))
485- let dC = dB._1
486- let dD = dB._2
487- let dE = if (dA)
488- then $Tuple2(dv, 0)
489- else $Tuple2(0, dv)
490- let dF = dE._1
491- let dG = dE._2
492- let dH = ds(dF)._1
493- let dI = ds(dG)._1
494- let dJ = ds(dv)
495- let dK = dJ._1
496- let dt = dJ._2
497- let dL = (dC + dH)
489+ else ay("invalid asset")
490+ let dC = if (dy)
491+ then $Tuple2(dz, dA)
492+ else if (dB)
493+ then $Tuple2((dz - dw), dA)
494+ else $Tuple2(dz, (dA - dw))
495+ let dD = dC._1
496+ let dE = dC._2
497+ let dF = if (dB)
498+ then $Tuple2(dw, 0)
499+ else $Tuple2(0, dw)
500+ let dG = dF._1
501+ let dH = dF._2
502+ let dI = ds(dG, aC)._1
503+ let dJ = ds(dH, aC)._1
504+ let dK = ds(dw, aC)
505+ let dL = dK._1
506+ let du = dK._2
498507 let dM = (dD + dI)
499- let dN = bs(D(dM, aX), D(dL, aW))
500- let dO = G(dN, b)
501- let dP = if (dA)
502- then dC
503- else dD
504- let dQ = toBigInt(dP)
505- let dR = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
506- let dS = if ((dR > f))
508+ let dN = (dE + dJ)
509+ let dO = bs(D(dN, aX), D(dM, aW))
510+ let dP = G(dO, b)
511+ let dQ = if (dB)
512+ then dD
513+ else dE
514+ let dR = toBigInt(dQ)
515+ let dS = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
516+ let dT = if ((dS > f))
507517 then true
508- else aB("initial deposit requires all coins")
509- if ((dS == dS))
518+ else ay("initial deposit requires all coins")
519+ if ((dT == dT))
510520 then {
511- let dT = toBigInt(dK)
512- let dU = max([0, toInt(((dR * (sqrtBigInt((d + ((dT * d) / dQ)), 18, 18, DOWN) - d)) / d))])
513- let cP = if (dx)
521+ let dU = toBigInt(dL)
522+ let dV = max([0, toInt(((dS * (sqrtBigInt((d + ((dU * d) / dR)), 18, 18, DOWN) - d)) / d))])
523+ let cP = if (dy)
514524 then nil
515- else [IntegerEntry(S(), dO), IntegerEntry(T(height, lastBlock.timestamp), dO), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bb(dF, dG, dU, dO, 0, 0, height, lastBlock.timestamp, 0, 0))]
516- let dV = bs(D(dD, aX), D(dC, aW))
517- let dW = G(dV, b)
518- let dX = {
519- let dY = if (dA)
520- then $Tuple2(dF, dC)
521- else $Tuple2(dG, dD)
522- let dn = dY._1
523- let dZ = dY._2
524- let ea = toInt(fraction(dR, toBigInt((dn / 2)), toBigInt(dZ)))
525- fraction((dU - ea), b, ea)
525+ else [IntegerEntry(S(), dP), IntegerEntry(T(height, lastBlock.timestamp), dP), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bb(dG, dH, dV, dP, 0, 0, height, lastBlock.timestamp, 0, 0))]
526+ let dW = bs(D(dE, aX), D(dD, aW))
527+ let dX = G(dW, b)
528+ let dY = {
529+ let dZ = if (dB)
530+ then $Tuple2(dG, dD)
531+ else $Tuple2(dH, dE)
532+ let dn = dZ._1
533+ let ea = dZ._2
534+ let eb = toInt(fraction(dS, toBigInt((dn / 2)), toBigInt(ea)))
535+ fraction((dV - eb), b, eb)
526536 }
527- $Tuple4(dU, cP, dt, dX)
537+ $Tuple4(dV, cP, du, dY)
528538 }
529539 else throw("Strict value is not equal to itself.")
530540 }
531541
532542
533-func eb (ec,dK,dw,X,Y) = {
534- let dx = (Y == unit)
535- let ed = [if ((dw == aT))
543+func ec (ed,dL,dx,X,Y) = {
544+ let dy = (Y == unit)
545+ let ee = [if ((dx == aT))
536546 then true
537- else aB("invalid lp asset")]
538- if ((ed == ed))
547+ else ay("invalid lp asset")]
548+ if ((ee == ee))
539549 then {
540- let ee = if ((ec == aU))
550+ let ef = if ((ed == aU))
541551 then true
542- else if ((ec == aV))
552+ else if ((ed == aV))
543553 then false
544- else aB("invalid asset")
545- let ef = if (ee)
554+ else ay("invalid asset")
555+ let eg = if (ef)
546556 then toBigInt(bq(aM(aU)))
547557 else toBigInt(bq(aM(aV)))
548- let eg = bq(aM(aU))
549- let eh = bq(aM(aV))
550- let ei = if (ee)
551- then eg
552- else eh
553- let ej = toBigInt(ei)
554- let dR = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
555- let ek = toBigInt(dK)
556- let el = max([0, toInt(((ef * (d - pow((d - ((ek * d) / dR)), 18, h, 0, 18, DOWN))) / d))])
557- let em = ds(el)
558- let en = em._1
559- let dt = em._2
560- let eo = if (ee)
561- then $Tuple4(en, 0, (eg - el), eh)
562- else $Tuple4(0, en, eg, (eh - el))
563- let ep = eo._1
564- let eq = eo._2
565- let er = eo._3
566- let es = eo._4
567- let dN = bs(D(es, aX), D(er, aW))
568- let dO = G(dN, b)
569- let cP = if (dx)
558+ let eh = bq(aM(aU))
559+ let ei = bq(aM(aV))
560+ let ej = if (ef)
561+ then eh
562+ else ei
563+ let ek = toBigInt(ej)
564+ let dS = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
565+ let el = toBigInt(dL)
566+ let em = max([0, toInt(((eg * (d - pow((d - ((el * d) / dS)), 18, h, 0, 18, DOWN))) / d))])
567+ let en = ds(em, aE)
568+ let eo = en._1
569+ let du = en._2
570+ let ep = if (ef)
571+ then $Tuple4(eo, 0, (eh - em), ei)
572+ else $Tuple4(0, eo, eh, (ei - em))
573+ let eq = ep._1
574+ let er = ep._2
575+ let es = ep._3
576+ let et = ep._4
577+ let dO = bs(D(et, aX), D(es, aW))
578+ let dP = G(dO, b)
579+ let cP = if (dy)
570580 then nil
571- else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bm(ep, eq, dK, dO, height, lastBlock.timestamp)), IntegerEntry(S(), dO), IntegerEntry(T(height, lastBlock.timestamp), dO)]
572- let dV = bs(D(eh, aX), D(eg, aW))
573- let dW = G(dV, b)
574- let dX = {
575- let et = (toInt(fraction(ef, ek, dR)) * 2)
576- fraction((en - et), b, et)
581+ else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bm(eq, er, dL, dP, height, lastBlock.timestamp)), IntegerEntry(S(), dP), IntegerEntry(T(height, lastBlock.timestamp), dP)]
582+ let dW = bs(D(ei, aX), D(eh, aW))
583+ let dX = G(dW, b)
584+ let dY = {
585+ let eu = (toInt(fraction(eg, el, dS)) * 2)
586+ fraction((eo - eu), b, eu)
577587 }
578- $Tuple4(en, cP, dt, dX)
588+ $Tuple4(eo, cP, du, dY)
579589 }
580590 else throw("Strict value is not equal to itself.")
581591 }
582592
583593
584-func eu () = {
594+func ev () = {
585595 let dq = getString(Q())
586596 if ($isInstanceOf(dq, "String"))
587597 then {
588- let ev = dq
589- fromBase58String(ev)
598+ let ew = dq
599+ fromBase58String(ew)
590600 }
591601 else if ($isInstanceOf(dq, "Unit"))
592602 then unit
594604 }
595605
596606
597-func ew () = {
607+func ex () = {
598608 let dq = getString(R())
599609 if ($isInstanceOf(dq, "String"))
600610 then {
601- let ev = dq
602- fromBase58String(ev)
611+ let ew = dq
612+ fromBase58String(ew)
603613 }
604614 else if ($isInstanceOf(dq, "Unit"))
605615 then unit
607617 }
608618
609619
610-func ex (df) = {
611- let dq = eu()
620+func ey (df) = {
621+ let dq = ev()
612622 if ($isInstanceOf(dq, "ByteVector"))
613623 then {
614- let ey = dq
615- (df.callerPublicKey == ey)
624+ let ez = dq
625+ (df.callerPublicKey == ez)
616626 }
617627 else if ($isInstanceOf(dq, "Unit"))
618628 then (df.caller == this)
620630 }
621631
622632
623-func ez (df) = {
624- let eA = throw("Permission denied")
625- let dq = eu()
633+func eA (df) = {
634+ let eB = throw("Permission denied")
635+ let dq = ev()
626636 if ($isInstanceOf(dq, "ByteVector"))
627637 then {
628- let ey = dq
629- if ((df.callerPublicKey == ey))
638+ let ez = dq
639+ if ((df.callerPublicKey == ez))
630640 then true
631- else eA
641+ else eB
632642 }
633643 else if ($isInstanceOf(dq, "Unit"))
634644 then if ((df.caller == this))
635645 then true
636- else eA
646+ else eB
637647 else throw("Match error")
638648 }
639649
640650
641651 @Callable(df)
642-func setManager (eB) = {
643- let eC = ez(df)
644- if ((eC == eC))
652+func setManager (eC) = {
653+ let eD = eA(df)
654+ if ((eD == eD))
645655 then {
646- let eD = fromBase58String(eB)
647- if ((eD == eD))
648- then [StringEntry(R(), eB)]
656+ let eE = fromBase58String(eC)
657+ if ((eE == eE))
658+ then [StringEntry(R(), eC)]
649659 else throw("Strict value is not equal to itself.")
650660 }
651661 else throw("Strict value is not equal to itself.")
655665
656666 @Callable(df)
657667 func confirmManager () = {
658- let eE = ew()
659- let eF = if (isDefined(eE))
668+ let eF = ex()
669+ let eG = if (isDefined(eF))
660670 then true
661671 else throw("No pending manager")
662- if ((eF == eF))
672+ if ((eG == eG))
663673 then {
664- let eG = if ((df.callerPublicKey == value(eE)))
674+ let eH = if ((df.callerPublicKey == value(eF)))
665675 then true
666676 else throw("You are not pending manager")
667- if ((eG == eG))
668- then [StringEntry(Q(), toBase58String(value(eE))), DeleteEntry(R())]
677+ if ((eH == eH))
678+ then [StringEntry(Q(), toBase58String(value(eF))), DeleteEntry(R())]
669679 else throw("Strict value is not equal to itself.")
670680 }
671681 else throw("Strict value is not equal to itself.")
674684
675685
676686 @Callable(df)
677-func put (ck,eH) = if ((0 > ck))
687+func put (ck,eI) = if ((0 > ck))
678688 then throw("Invalid slippageTolerance passed")
679689 else {
680690 let dl = di(df, ck, true)
683693 let ci = dl._9
684694 let cN = dl._10
685695 let cO = dl._11
686- let eI = dl._12
687- let eJ = dl._13
688- let do = invoke(aD, "emit", [cM], nil)
696+ let eJ = dl._12
697+ let eK = dl._13
698+ let do = invoke(aA, "emit", [cM], nil)
689699 if ((do == do))
690700 then {
691701 let dp = {
699709 }
700710 if ((dp == dp))
701711 then {
702- let eK = if ((cN > 0))
703- then invoke(ba, "put", nil, [AttachedPayment(eI, cN)])
712+ let eL = if ((cN > 0))
713+ then invoke(ba, "put", nil, [AttachedPayment(eJ, cN)])
704714 else nil
705- if ((eK == eK))
715+ if ((eL == eL))
706716 then {
707- let eL = if ((cO > 0))
708- then invoke(ba, "put", nil, [AttachedPayment(eJ, cO)])
717+ let eM = if ((cO > 0))
718+ then invoke(ba, "put", nil, [AttachedPayment(eK, cO)])
709719 else nil
710- if ((eL == eL))
720+ if ((eM == eM))
711721 then {
712- let eM = if (eH)
722+ let eN = if (eI)
713723 then {
714- let eN = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
715- if ((eN == eN))
724+ let eO = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
725+ if ((eO == eO))
716726 then nil
717727 else throw("Strict value is not equal to itself.")
718728 }
719729 else [ScriptTransfer(df.caller, cM, bR)]
720- (ci ++ eM)
730+ (ci ++ eN)
721731 }
722732 else throw("Strict value is not equal to itself.")
723733 }
731741
732742
733743 @Callable(df)
734-func putForFree (eO) = if ((0 > eO))
744+func putForFree (eP) = if ((0 > eP))
735745 then throw("Invalid value passed")
736746 else {
737- let dl = di(df, eO, false)
747+ let dl = di(df, eP, false)
738748 dl._9
739749 }
740750
741751
742752
743753 @Callable(df)
744-func putOneTkn (eP,eQ) = {
745- let eR = {
746- let eS = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
747- if ($isInstanceOf(eS, "Boolean"))
748- then eS
749- else throw(($getType(eS) + " couldn't be cast to Boolean"))
754+func putOneTkn (eQ,eR) = {
755+ let eS = {
756+ let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
757+ if ($isInstanceOf(aD, "Boolean"))
758+ then aD
759+ else throw(($getType(aD) + " couldn't be cast to Boolean"))
750760 }
751761 let eT = if (if (if (aF())
752762 then true
754764 then true
755765 else (aS == n))
756766 then true
757- else eR
758- let ed = [if (if (!(eT))
767+ else eS
768+ let ee = [if (if (!(eT))
759769 then true
760- else ex(df))
770+ else ey(df))
761771 then true
762- else aB("put operation is blocked by admin"), if ((size(df.payments) == 1))
772+ else ay("put operation is blocked by admin"), if ((size(df.payments) == 1))
763773 then true
764- else aB("exactly 1 payment are expected")]
765- if ((ed == ed))
774+ else ay("exactly 1 payment are expected")]
775+ if ((ee == ee))
766776 then {
767777 let eU = df.payments[0]
768- let dw = eU.assetId
769- let dv = eU.amount
778+ let dx = eU.assetId
779+ let dw = eU.amount
770780 let X = df.caller
771781 let Y = df.transactionId
772- let eV = du(dv, dw, X, Y)
782+ let eV = dv(dw, dx, X, Y)
773783 if ((eV == eV))
774784 then {
775785 let eW = eV._4
776- let dt = eV._3
786+ let du = eV._3
777787 let cP = eV._2
778788 let eX = eV._1
779- let eY = if (if ((eP > 0))
780- then (eP > eX)
789+ let eY = if (if ((eQ > 0))
790+ then (eQ > eX)
781791 else false)
782- then aB(makeString(["amount to receive is less than ", toString(eP)], ""))
792+ then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
783793 else eX
784794 let do = dm(eY)
785795 if ((do == do))
786796 then {
787- let eM = if (eQ)
797+ let eN = if (eR)
788798 then {
789799 let eZ = invoke(aZ, "stake", nil, [AttachedPayment(aT, eY)])
790800 if ((eZ == eZ))
792802 else throw("Strict value is not equal to itself.")
793803 }
794804 else [ScriptTransfer(df.caller, eY, aT)]
795- let fa = if ((dt > 0))
796- then [ScriptTransfer(aE, dt, dw)]
805+ let fa = if ((du > 0))
806+ then [ScriptTransfer(aB, du, dx)]
797807 else nil
798- $Tuple2(((cP ++ eM) ++ fa), eY)
808+ $Tuple2(((cP ++ eN) ++ fa), eY)
799809 }
800810 else throw("Strict value is not equal to itself.")
801811 }
807817
808818
809819 @Callable(df)
810-func putOneTknREADONLY (dw,dv) = {
811- let fb = du(dv, aK(dw), unit, unit)
820+func putOneTknREADONLY (dx,dw) = {
821+ let fb = dv(dw, aK(dx), unit, unit)
812822 let eX = fb._1
813823 let cP = fb._2
814- let dt = fb._3
824+ let du = fb._3
815825 let eW = fb._4
816- $Tuple2(nil, $Tuple3(eX, dt, eW))
826+ $Tuple2(nil, $Tuple3(eX, du, eW))
817827 }
818828
819829
820830
821831 @Callable(df)
822-func getOneTkn (fc,eP) = {
823- let eR = {
824- let eS = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
825- if ($isInstanceOf(eS, "Boolean"))
826- then eS
827- else throw(($getType(eS) + " couldn't be cast to Boolean"))
832+func getOneTkn (fc,eQ) = {
833+ let eS = {
834+ let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
835+ if ($isInstanceOf(aD, "Boolean"))
836+ then aD
837+ else throw(($getType(aD) + " couldn't be cast to Boolean"))
828838 }
829839 let fd = if (if (aF())
830840 then true
831841 else (aS == n))
832842 then true
833- else eR
834- let ed = [if (if (!(fd))
843+ else eS
844+ let ee = [if (if (!(fd))
835845 then true
836- else ex(df))
846+ else ey(df))
837847 then true
838- else aB("get operation is blocked by admin"), if ((size(df.payments) == 1))
848+ else ay("get operation is blocked by admin"), if ((size(df.payments) == 1))
839849 then true
840- else aB("exactly 1 payment are expected")]
841- if ((ed == ed))
850+ else ay("exactly 1 payment are expected")]
851+ if ((ee == ee))
842852 then {
843- let ec = aK(fc)
853+ let ed = aK(fc)
844854 let eU = df.payments[0]
845- let dw = eU.assetId
846- let dK = eU.amount
855+ let dx = eU.assetId
856+ let dL = eU.amount
847857 let X = df.caller
848858 let Y = df.transactionId
849- let fe = eb(ec, dK, dw, X, Y)
859+ let fe = ec(ed, dL, dx, X, Y)
850860 if ((fe == fe))
851861 then {
852862 let eW = fe._4
853- let dt = fe._3
863+ let du = fe._3
854864 let cP = fe._2
855865 let ff = fe._1
856- let dn = if (if ((eP > 0))
857- then (eP > ff)
866+ let dn = if (if ((eQ > 0))
867+ then (eQ > ff)
858868 else false)
859- then aB(makeString(["amount to receive is less than ", toString(eP)], ""))
869+ then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
860870 else ff
861- let fg = invoke(aD, "burn", [dK], [AttachedPayment(dw, dK)])
871+ let fg = invoke(aA, "burn", [dL], [AttachedPayment(dx, dL)])
862872 if ((fg == fg))
863873 then {
864- let fh = [ScriptTransfer(X, dn, ec)]
865- let fa = if ((dt > 0))
866- then [ScriptTransfer(aE, dt, ec)]
874+ let fh = [ScriptTransfer(X, dn, ed)]
875+ let fa = if ((du > 0))
876+ then [ScriptTransfer(aB, du, ed)]
867877 else nil
868878 $Tuple2(((cP ++ fh) ++ fa), dn)
869879 }
877887
878888
879889 @Callable(df)
880-func getOneTknREADONLY (ec,dK) = {
881- let fi = eb(aK(ec), dK, aT, unit, unit)
890+func getOneTknREADONLY (ed,dL) = {
891+ let fi = ec(aK(ed), dL, aT, unit, unit)
882892 let ff = fi._1
883893 let cP = fi._2
884- let dt = fi._3
894+ let du = fi._3
885895 let eW = fi._4
886- $Tuple2(nil, $Tuple3(ff, dt, eW))
896+ $Tuple2(nil, $Tuple3(ff, du, eW))
887897 }
888898
889899
890900
891901 @Callable(df)
892-func unstakeAndGetOneTkn (fj,fc,eP) = {
893- let eR = {
894- let eS = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
895- if ($isInstanceOf(eS, "Boolean"))
896- then eS
897- else throw(($getType(eS) + " couldn't be cast to Boolean"))
902+func unstakeAndGetOneTkn (fj,fc,eQ) = {
903+ let eS = {
904+ let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
905+ if ($isInstanceOf(aD, "Boolean"))
906+ then aD
907+ else throw(($getType(aD) + " couldn't be cast to Boolean"))
898908 }
899909 let fd = if (if (aF())
900910 then true
901911 else (aS == n))
902912 then true
903- else eR
904- let ed = [if (if (!(fd))
913+ else eS
914+ let ee = [if (if (!(fd))
905915 then true
906- else ex(df))
916+ else ey(df))
907917 then true
908- else aB("get operation is blocked by admin"), if ((size(df.payments) == 0))
918+ else ay("get operation is blocked by admin"), if ((size(df.payments) == 0))
909919 then true
910- else aB("no payments are expected")]
911- if ((ed == ed))
920+ else ay("no payments are expected")]
921+ if ((ee == ee))
912922 then {
913- let ec = aK(fc)
923+ let ed = aK(fc)
914924 let X = df.caller
915925 let Y = df.transactionId
916926 let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
917927 if ((fk == fk))
918928 then {
919- let fl = eb(ec, fj, aT, X, Y)
929+ let fl = ec(ed, fj, aT, X, Y)
920930 if ((fl == fl))
921931 then {
922932 let eW = fl._4
923- let dt = fl._3
933+ let du = fl._3
924934 let cP = fl._2
925935 let ff = fl._1
926- let dn = if (if ((eP > 0))
927- then (eP > ff)
936+ let dn = if (if ((eQ > 0))
937+ then (eQ > ff)
928938 else false)
929- then aB(makeString(["amount to receive is less than ", toString(eP)], ""))
939+ then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
930940 else ff
931- let fg = invoke(aD, "burn", [fj], [AttachedPayment(aT, fj)])
941+ let fg = invoke(aA, "burn", [fj], [AttachedPayment(aT, fj)])
932942 if ((fg == fg))
933943 then {
934- let fh = [ScriptTransfer(df.caller, dn, ec)]
935- let fa = if ((dt > 0))
936- then [ScriptTransfer(aE, dt, ec)]
944+ let fh = [ScriptTransfer(df.caller, dn, ed)]
945+ let fa = if ((du > 0))
946+ then [ScriptTransfer(aB, du, ed)]
937947 else nil
938948 $Tuple2(((cP ++ fh) ++ fa), dn)
939949 }
956966 let dh = cA._3
957967 let bP = cA._4
958968 let ci = cA._5
959- let fn = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
969+ let fn = invoke(aA, "burn", [dh], [AttachedPayment(bP, dh)])
960970 if ((fn == fn))
961971 then ci
962972 else throw("Strict value is not equal to itself.")
977987 else if ((fp > ch))
978988 then throw(((("noLessThenPriceAsset failed: " + toString(ch)) + " < ") + toString(fp)))
979989 else {
980- let fn = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
990+ let fn = invoke(aA, "burn", [dh], [AttachedPayment(bP, dh)])
981991 if ((fn == fn))
982992 then ci
983993 else throw("Strict value is not equal to itself.")
10081018 else true
10091019 if ((fr == fr))
10101020 then {
1011- let fn = invoke(aD, "burn", [dn], [AttachedPayment(bR, dn)])
1021+ let fn = invoke(aA, "burn", [dn], [AttachedPayment(bR, dn)])
10121022 if ((fn == fn))
10131023 then ci
10141024 else throw("Strict value is not equal to itself.")
10271037 let fd = if (aF())
10281038 then true
10291039 else (aS == n)
1030- let ed = [if (!(fd))
1040+ let ee = [if (!(fd))
10311041 then true
10321042 else throw("get operation is blocked by admin"), if ((size(df.payments) == 0))
10331043 then true
10341044 else throw("no payments are expected")]
1035- if ((ed == ed))
1045+ if ((ee == ee))
10361046 then {
10371047 let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
10381048 if ((fk == fk))
10481058 else throw(makeString(["price asset amount to receive is less than ", toString(fp)], ""))]
10491059 if ((ft == ft))
10501060 then {
1051- let fn = invoke(aD, "burn", [fj], [AttachedPayment(aT, fj)])
1061+ let fn = invoke(aA, "burn", [fj], [AttachedPayment(aT, fj)])
10521062 if ((fn == fn))
10531063 then ci
10541064 else throw("Strict value is not equal to itself.")
10631073
10641074
10651075 @Callable(df)
1066-func activate (fu,fv) = if ((toString(df.caller) != toString(aD)))
1076+func activate (fu,fv) = if ((toString(df.caller) != toString(aA)))
10671077 then throw("permissions denied")
10681078 else $Tuple2([StringEntry(aa(), fu), StringEntry(ab(), fv)], "success")
10691079
11341144 let cb = 0
11351145 let fy = G(fx[1], b)
11361146 let fz = G(fx[2], b)
1137- let fA = value(getInteger(aD, ap(toString(this))))
1147+ let fA = value(getInteger(aA, am(toString(this))))
11381148 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fw), toString(cb), toString(fy), toString(fz), toString(fA)], j))
11391149 }
11401150
12231233 @Verifier(fI)
12241234 func fJ () = {
12251235 let fK = {
1226- let dq = eu()
1236+ let dq = ev()
12271237 if ($isInstanceOf(dq, "ByteVector"))
12281238 then {
1229- let ey = dq
1230- ey
1239+ let ez = dq
1240+ ez
12311241 }
12321242 else if ($isInstanceOf(dq, "Unit"))
12331243 then fI.senderPublicKey
12381248 then {
12391249 let cR = dq
12401250 let fL = aG()
1241- let au = cQ(cR)
1242- let av = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
1243- let aw = sigVerify(cR.bodyBytes, cR.proofs[1], fL)
1244- if (if (if (au)
1245- then av
1251+ let ar = cQ(cR)
1252+ let as = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
1253+ let at = sigVerify(cR.bodyBytes, cR.proofs[1], fL)
1254+ if (if (if (ar)
1255+ then as
12461256 else false)
1247- then aw
1257+ then at
12481258 else false)
12491259 then true
1250- else at(au, av, aw)
1260+ else aq(ar, as, at)
12511261 }
12521262 else if ($isInstanceOf(dq, "SetScriptTransaction"))
12531263 then {
1254- let ev = dq
1255- let fM = blake2b256(value(ev.script))
1256- let fN = fromBase64String(value(getString(aD, ar())))
1264+ let ew = dq
1265+ let fM = blake2b256(value(ew.script))
1266+ let fN = fromBase64String(value(getString(aA, ao())))
12571267 let fO = scriptHash(this)
12581268 if (if ((fN == fM))
12591269 then (fO != fM)
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 (H,I) = toInt(fraction(H, toBigInt(I), d))
6666
6767
6868 func J (K,L,M) = fraction(K, L, M)
6969
7070
7171 func N (H) = if ((0 > H))
7272 then -(H)
7373 else H
7474
7575
7676 func O (H) = if ((e > H))
7777 then -(H)
7878 else H
7979
8080
8181 func P () = "%s__factoryContract"
8282
8383
8484 func Q () = "%s__managerPublicKey"
8585
8686
8787 func R () = "%s__pendingManagerPublicKey"
8888
8989
9090 func S () = "%s%s__price__last"
9191
9292
9393 func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], j)
9494
9595
9696 func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
9797
9898
9999 func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
100100
101101
102102 func aa () = "%s__amountAsset"
103103
104104
105105 func ab () = "%s__priceAsset"
106106
107107
108-let ac = "%s__fee"
109-
110-let ad = fraction(10, b, 10000)
111-
112-let ae = valueOrElse(getInteger(this, ac), ad)
113-
114-func af () = "%s__factoryConfig"
108+func ac () = "%s__factoryConfig"
115109
116110
117-func ag () = "%s%s__matcher__publicKey"
111+func ad () = "%s%s__matcher__publicKey"
118112
119113
120-func ah (ai) = (("%s%s%s__" + ai) + "__mappings__poolContract2LpAsset")
114+func ae (af) = (("%s%s%s__" + af) + "__mappings__poolContract2LpAsset")
121115
122116
123-func aj (ak,al) = (((("%d%d%s__" + ak) + "__") + al) + "__config")
117+func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
124118
125119
126-func am (an) = ("%s%s%s__mappings__baseAsset2internalId__" + an)
120+func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
127121
128122
129-func ao () = "%s__shutdown"
123+func al () = "%s__shutdown"
130124
131125
132-func ap (aq) = ("%s%s__poolWeight__" + aq)
126+func am (an) = ("%s%s__poolWeight__" + an)
133127
134128
135-func ar () = "%s__allowedLpScriptHash"
129+func ao () = "%s__allowedLpScriptHash"
136130
137131
138-let as = "%s__feeCollectorAddress"
132+let ap = "%s__feeCollectorAddress"
139133
140-func at (au,av,aw) = throw(((((("order validation failed: orderValid=" + toString(au)) + " senderValid=") + toString(av)) + " matcherValid=") + toString(aw)))
134+func aq (ar,as,at) = throw(((((("order validation failed: orderValid=" + toString(ar)) + " senderValid=") + toString(as)) + " matcherValid=") + toString(at)))
141135
142136
143-func ax (ay,az) = valueOrErrorMessage(getString(ay, az), makeString(["mandatory ", toString(ay), ".", az, " is not defined"], ""))
137+func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " is not defined"], ""))
144138
145139
146-func aA (ay,az) = valueOrErrorMessage(getInteger(ay, az), makeString(["mandatory ", toString(ay), ".", az, " is not defined"], ""))
140+func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " is not defined"], ""))
147141
148142
149-func aB (aC) = throw(makeString(["lp.ride:", aC], " "))
143+func ay (az) = throw(makeString(["lp.ride:", az], " "))
150144
151145
152-let aD = addressFromStringValue(ax(this, P()))
146+let aA = addressFromStringValue(au(this, P()))
153147
154-let aE = addressFromStringValue(ax(aD, as))
148+let aB = addressFromStringValue(au(aA, ap))
155149
156-func aF () = valueOrElse(getBoolean(aD, ao()), false)
150+let aC = {
151+ let aD = invoke(aA, "getInFeeREADONLY", [toString(this)], nil)
152+ if ($isInstanceOf(aD, "Int"))
153+ then aD
154+ else throw(($getType(aD) + " couldn't be cast to Int"))
155+ }
156+
157+let aE = {
158+ let aD = invoke(aA, "getOutFeeREADONLY", [toString(this)], nil)
159+ if ($isInstanceOf(aD, "Int"))
160+ then aD
161+ else throw(($getType(aD) + " couldn't be cast to Int"))
162+ }
163+
164+func aF () = valueOrElse(getBoolean(aA, al()), false)
157165
158166
159-func aG () = fromBase58String(ax(aD, ag()))
167+func aG () = fromBase58String(au(aA, ad()))
160168
161169
162170 func aH () = {
163- let aI = ax(this, aa())
164- let aJ = ax(this, ab())
165- let al = aA(aD, am(aJ))
166- let ak = aA(aD, am(aI))
167- split(ax(aD, aj(toString(ak), toString(al))), j)
171+ let aI = au(this, aa())
172+ let aJ = au(this, ab())
173+ let ai = ax(aA, aj(aJ))
174+ let ah = ax(aA, aj(aI))
175+ split(au(aA, ag(toString(ah), toString(ai))), j)
168176 }
169177
170178
171179 func aK (aL) = if ((aL == i))
172180 then unit
173181 else fromBase58String(aL)
174182
175183
176184 func aM (aL) = if ((aL == unit))
177185 then i
178186 else toBase58String(value(aL))
179187
180188
181189 func aN (aO) = $Tuple7(addressFromStringValue(aO[o]), parseIntValue(aO[p]), fromBase58String(aO[q]), aK(aO[r]), aK(aO[s]), parseIntValue(aO[t]), parseIntValue(aO[u]))
182190
183191
184192 let aP = aN(aH())
185193
186194 let aQ = aP
187195
188196 let aR = aQ._1
189197
190198 let aS = aQ._2
191199
192200 let aT = aQ._3
193201
194202 let aU = aQ._4
195203
196204 let aV = aQ._5
197205
198206 let aW = aQ._6
199207
200208 let aX = aQ._7
201209
202-func aY () = split(ax(aD, af()), j)
210+func aY () = split(au(aA, ac()), j)
203211
204212
205213 let aZ = valueOrErrorMessage(addressFromString(aY()[B]), "incorrect staking address")
206214
207215 let ba = valueOrErrorMessage(addressFromString(aY()[C]), "incorrect staking address")
208216
209217 func bb (bc,bd,be,bf,bg,bh,bi,bj,bk,bl) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bc), toString(bd), toString(be), toString(bf), toString(bg), toString(bh), toString(bi), toString(bj), toString(bk), toString(bl)], j)
210218
211219
212220 func bm (bn,bo,bp,bf,bi,bj) = makeString(["%d%d%d%d%d%d", toString(bn), toString(bo), toString(bp), toString(bf), toString(bi), toString(bj)], j)
213221
214222
215223 func bq (br) = if ((br == "WAVES"))
216224 then wavesBalance(this).available
217225 else assetBalance(this, fromBase58String(br))
218226
219227
220228 func bs (bt,bu) = fraction(bt, d, bu)
221229
222230
223231 func bv (bw,bx,by,bz) = {
224232 let bA = D(by, bw)
225233 let bB = D(bz, bx)
226234 bs(bB, bA)
227235 }
228236
229237
230238 func bC (by,bz,bD) = {
231239 let bE = aH()
232240 let bF = parseIntValue(bE[t])
233241 let bG = parseIntValue(bE[u])
234242 let bH = bv(bF, bG, by, bz)
235243 let bu = D(by, bF)
236244 let bt = D(bz, bG)
237245 let bI = D(bD, b)
238246 let bJ = bs(bu, bI)
239247 let bK = bs(bt, bI)
240248 [bH, bJ, bK]
241249 }
242250
243251
244252 func bL (by,bz,bD) = {
245253 let bM = bC(by, bz, bD)
246254 [G(bM[0], b), G(bM[1], b), G(bM[2], b)]
247255 }
248256
249257
250258 func bN (bO,bP,bQ,X) = {
251259 let bE = aH()
252260 let bR = bE[q]
253261 let bS = bE[r]
254262 let bT = bE[s]
255263 let bw = parseIntValue(bE[t])
256264 let bx = parseIntValue(bE[u])
257265 let bU = bE[p]
258266 let bV = valueOrErrorMessage(assetInfo(fromBase58String(bR)), (("Asset " + bR) + " doesn't exist")).quantity
259267 if ((bR != bP))
260268 then throw("Invalid asset passed.")
261269 else {
262270 let bW = bq(bS)
263271 let bX = D(bW, bw)
264272 let bY = bq(bT)
265273 let bZ = D(bY, bx)
266274 let ca = bs(bZ, bX)
267275 let cb = G(ca, b)
268276 let cc = D(bQ, b)
269277 let cd = D(bV, b)
270278 let ce = fraction(bX, cc, cd)
271279 let cf = fraction(bZ, cc, cd)
272280 let cg = G(ce, bw)
273281 let ch = G(cf, bx)
274282 let ci = if ((bO == ""))
275283 then nil
276284 else [ScriptTransfer(X, cg, if ((bS == "WAVES"))
277285 then unit
278286 else fromBase58String(bS)), ScriptTransfer(X, ch, if ((bT == "WAVES"))
279287 then unit
280288 else fromBase58String(bT)), StringEntry(Z(toString(X), bO), bm(cg, ch, bQ, cb, height, lastBlock.timestamp)), IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb)]
281289 $Tuple10(cg, ch, bS, bT, bW, bY, bV, ca, bU, ci)
282290 }
283291 }
284292
285293
286294 func cj (bO,ck,cl,cm,cn,co,X,cp,cq) = {
287295 let bE = aH()
288296 let bR = fromBase58String(bE[q])
289297 let cr = bE[r]
290298 let cs = bE[s]
291299 let ct = bE[v]
292300 let cu = bE[w]
293301 let bF = parseIntValue(bE[t])
294302 let bG = parseIntValue(bE[u])
295303 let bU = bE[p]
296304 let bV = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
297305 let cv = toBase58String(valueOrElse(cm, fromBase58String("WAVES")))
298306 let cw = toBase58String(valueOrElse(co, fromBase58String("WAVES")))
299307 if (if ((cr != cv))
300308 then true
301309 else (cs != cw))
302310 then throw("Invalid amt or price asset passed.")
303311 else {
304312 let bW = if (cp)
305313 then bq(cr)
306314 else (bq(cr) - cl)
307315 let bY = if (cp)
308316 then bq(cs)
309317 else (bq(cs) - cn)
310318 let cx = D(cl, bF)
311319 let cy = D(cn, bG)
312320 let cz = bs(cy, cx)
313321 let bX = D(bW, bF)
314322 let bZ = D(bY, bG)
315323 let cA = if ((bV == 0))
316324 then {
317325 let ca = e
318326 let cB = e
319327 let bI = pow((cx * cy), 0, toBigInt(5), 1, 0, DOWN)
320328 $Tuple5(G(bI, b), G(cx, bF), G(cy, bG), bs((bZ + cy), (bX + cx)), cB)
321329 }
322330 else {
323331 let ca = bs(bZ, bX)
324332 let cB = fraction(O((ca - cz)), d, ca)
325333 let cC = D(ck, b)
326334 if (if ((ca != e))
327335 then (cB > cC)
328336 else false)
329337 then throw(((("Price slippage " + toString(cB)) + " exceeded the passed limit of ") + toString(cC)))
330338 else {
331339 let cd = D(bV, b)
332340 let cD = fraction(cx, ca, d)
333341 let cE = fraction(cy, d, ca)
334342 let cF = if ((cD > cy))
335343 then $Tuple2(cE, cy)
336344 else $Tuple2(cx, cD)
337345 let cG = cF._1
338346 let cH = cF._2
339347 let bI = fraction(cd, cH, bZ)
340348 $Tuple5(G(bI, b), G(cG, bF), G(cH, bG), ca, cB)
341349 }
342350 }
343351 let cI = cA._1
344352 let cJ = cA._2
345353 let cK = cA._3
346354 let cb = G(cA._4, b)
347355 let cL = G(cA._5, b)
348356 if ((0 >= cI))
349357 then throw("Invalid calculations. LP calculated is less than zero.")
350358 else {
351359 let cM = if (!(cq))
352360 then 0
353361 else cI
354362 let cN = (cl - cJ)
355363 let cO = (cn - cK)
356364 let cP = [IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb), StringEntry(W(X, bO), bb(cJ, cK, cM, cb, ck, cL, height, lastBlock.timestamp, cN, cO))]
357365 $Tuple13(cI, cM, cb, bW, bY, bV, bR, bU, cP, cN, cO, cm, co)
358366 }
359367 }
360368 }
361369
362370
363371 func cQ (cR) = {
364372 let bE = aH()
365373 let cS = bE[r]
366374 let cT = bE[s]
367375 let bU = parseIntValue(bE[p])
368376 let bF = parseIntValue(bE[t])
369377 let bG = parseIntValue(bE[u])
370378 let cU = bq(cS)
371379 let cV = bq(cT)
372380 let ca = if ((cR.orderType == Buy))
373381 then bv(bF, bG, (cU + cR.amount), cV)
374382 else bv(bF, bG, (cU - cR.amount), cV)
375383 let cb = G(ca, b)
376384 if (if (if (aF())
377385 then true
378386 else (bU == m))
379387 then true
380388 else (bU == n))
381389 then throw("Exchange operations disabled")
382390 else {
383391 let cW = cR.assetPair.amountAsset
384392 let cX = if ((cW == unit))
385393 then "WAVES"
386394 else toBase58String(value(cW))
387395 let cY = cR.assetPair.priceAsset
388396 let cZ = if ((cY == unit))
389397 then "WAVES"
390398 else toBase58String(value(cY))
391399 if (if ((cX != cS))
392400 then true
393401 else (cZ != cT))
394402 then throw("Wrong order assets.")
395403 else {
396404 let da = cR.price
397405 let db = fraction(b, bG, bF)
398406 let dc = J(da, b, db)
399407 let dd = if ((cR.orderType == Buy))
400408 then (cb >= dc)
401409 else (dc >= cb)
402410 true
403411 }
404412 }
405413 }
406414
407415
408416 func de (df) = if ((size(df.payments) != 1))
409417 then throw("exactly 1 payment is expected")
410418 else {
411419 let dg = value(df.payments[0])
412420 let bP = value(dg.assetId)
413421 let dh = dg.amount
414422 let cA = bN(toBase58String(df.transactionId), toBase58String(bP), dh, df.caller)
415423 let cg = cA._1
416424 let ch = cA._2
417425 let bU = parseIntValue(cA._9)
418426 let ci = cA._10
419427 if (if (aF())
420428 then true
421429 else (bU == n))
422430 then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
423431 else $Tuple5(cg, ch, dh, bP, ci)
424432 }
425433
426434
427435 func di (df,ck,cq) = if ((size(df.payments) != 2))
428436 then throw("exactly 2 payments are expected")
429437 else {
430438 let dj = value(df.payments[0])
431439 let dk = value(df.payments[1])
432440 let dl = cj(toBase58String(df.transactionId), ck, dj.amount, dj.assetId, dk.amount, dk.assetId, toString(df.caller), false, cq)
433441 let bU = parseIntValue(dl._8)
434442 if (if (if (aF())
435443 then true
436444 else (bU == l))
437445 then true
438446 else (bU == n))
439447 then throw(("Put operation is blocked by admin. Status = " + toString(bU)))
440448 else dl
441449 }
442450
443451
444452 func dm (dn) = {
445- let do = invoke(aD, "emit", [dn], nil)
453+ let do = invoke(aA, "emit", [dn], nil)
446454 if ((do == do))
447455 then {
448456 let dp = {
449457 let dq = do
450458 if ($isInstanceOf(dq, "Address"))
451459 then {
452460 let dr = dq
453461 invoke(dr, "emit", [dn], nil)
454462 }
455463 else unit
456464 }
457465 if ((dp == dp))
458466 then dn
459467 else throw("Strict value is not equal to itself.")
460468 }
461469 else throw("Strict value is not equal to itself.")
462470 }
463471
464472
465-func ds (dn) = {
466- let dt = fraction(dn, ae, b)
467- $Tuple2((dn - dt), dt)
473+func ds (dn,dt) = {
474+ let du = if ((dt == 0))
475+ then 0
476+ else fraction(dn, dt, b)
477+ $Tuple2((dn - du), du)
468478 }
469479
470480
471-func du (dv,dw,X,Y) = {
472- let dx = (Y == unit)
473- let dy = bq(aM(aU))
474- let dz = bq(aM(aV))
475- let dA = if ((dw == aU))
481+func dv (dw,dx,X,Y) = {
482+ let dy = (Y == unit)
483+ let dz = bq(aM(aU))
484+ let dA = bq(aM(aV))
485+ let dB = if ((dx == aU))
476486 then true
477- else if ((dw == aV))
487+ else if ((dx == aV))
478488 then false
479- else aB("invalid asset")
480- let dB = if (dx)
481- then $Tuple2(dy, dz)
482- else if (dA)
483- then $Tuple2((dy - dv), dz)
484- else $Tuple2(dy, (dz - dv))
485- let dC = dB._1
486- let dD = dB._2
487- let dE = if (dA)
488- then $Tuple2(dv, 0)
489- else $Tuple2(0, dv)
490- let dF = dE._1
491- let dG = dE._2
492- let dH = ds(dF)._1
493- let dI = ds(dG)._1
494- let dJ = ds(dv)
495- let dK = dJ._1
496- let dt = dJ._2
497- let dL = (dC + dH)
489+ else ay("invalid asset")
490+ let dC = if (dy)
491+ then $Tuple2(dz, dA)
492+ else if (dB)
493+ then $Tuple2((dz - dw), dA)
494+ else $Tuple2(dz, (dA - dw))
495+ let dD = dC._1
496+ let dE = dC._2
497+ let dF = if (dB)
498+ then $Tuple2(dw, 0)
499+ else $Tuple2(0, dw)
500+ let dG = dF._1
501+ let dH = dF._2
502+ let dI = ds(dG, aC)._1
503+ let dJ = ds(dH, aC)._1
504+ let dK = ds(dw, aC)
505+ let dL = dK._1
506+ let du = dK._2
498507 let dM = (dD + dI)
499- let dN = bs(D(dM, aX), D(dL, aW))
500- let dO = G(dN, b)
501- let dP = if (dA)
502- then dC
503- else dD
504- let dQ = toBigInt(dP)
505- let dR = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
506- let dS = if ((dR > f))
508+ let dN = (dE + dJ)
509+ let dO = bs(D(dN, aX), D(dM, aW))
510+ let dP = G(dO, b)
511+ let dQ = if (dB)
512+ then dD
513+ else dE
514+ let dR = toBigInt(dQ)
515+ let dS = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
516+ let dT = if ((dS > f))
507517 then true
508- else aB("initial deposit requires all coins")
509- if ((dS == dS))
518+ else ay("initial deposit requires all coins")
519+ if ((dT == dT))
510520 then {
511- let dT = toBigInt(dK)
512- let dU = max([0, toInt(((dR * (sqrtBigInt((d + ((dT * d) / dQ)), 18, 18, DOWN) - d)) / d))])
513- let cP = if (dx)
521+ let dU = toBigInt(dL)
522+ let dV = max([0, toInt(((dS * (sqrtBigInt((d + ((dU * d) / dR)), 18, 18, DOWN) - d)) / d))])
523+ let cP = if (dy)
514524 then nil
515- else [IntegerEntry(S(), dO), IntegerEntry(T(height, lastBlock.timestamp), dO), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bb(dF, dG, dU, dO, 0, 0, height, lastBlock.timestamp, 0, 0))]
516- let dV = bs(D(dD, aX), D(dC, aW))
517- let dW = G(dV, b)
518- let dX = {
519- let dY = if (dA)
520- then $Tuple2(dF, dC)
521- else $Tuple2(dG, dD)
522- let dn = dY._1
523- let dZ = dY._2
524- let ea = toInt(fraction(dR, toBigInt((dn / 2)), toBigInt(dZ)))
525- fraction((dU - ea), b, ea)
525+ else [IntegerEntry(S(), dP), IntegerEntry(T(height, lastBlock.timestamp), dP), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bb(dG, dH, dV, dP, 0, 0, height, lastBlock.timestamp, 0, 0))]
526+ let dW = bs(D(dE, aX), D(dD, aW))
527+ let dX = G(dW, b)
528+ let dY = {
529+ let dZ = if (dB)
530+ then $Tuple2(dG, dD)
531+ else $Tuple2(dH, dE)
532+ let dn = dZ._1
533+ let ea = dZ._2
534+ let eb = toInt(fraction(dS, toBigInt((dn / 2)), toBigInt(ea)))
535+ fraction((dV - eb), b, eb)
526536 }
527- $Tuple4(dU, cP, dt, dX)
537+ $Tuple4(dV, cP, du, dY)
528538 }
529539 else throw("Strict value is not equal to itself.")
530540 }
531541
532542
533-func eb (ec,dK,dw,X,Y) = {
534- let dx = (Y == unit)
535- let ed = [if ((dw == aT))
543+func ec (ed,dL,dx,X,Y) = {
544+ let dy = (Y == unit)
545+ let ee = [if ((dx == aT))
536546 then true
537- else aB("invalid lp asset")]
538- if ((ed == ed))
547+ else ay("invalid lp asset")]
548+ if ((ee == ee))
539549 then {
540- let ee = if ((ec == aU))
550+ let ef = if ((ed == aU))
541551 then true
542- else if ((ec == aV))
552+ else if ((ed == aV))
543553 then false
544- else aB("invalid asset")
545- let ef = if (ee)
554+ else ay("invalid asset")
555+ let eg = if (ef)
546556 then toBigInt(bq(aM(aU)))
547557 else toBigInt(bq(aM(aV)))
548- let eg = bq(aM(aU))
549- let eh = bq(aM(aV))
550- let ei = if (ee)
551- then eg
552- else eh
553- let ej = toBigInt(ei)
554- let dR = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
555- let ek = toBigInt(dK)
556- let el = max([0, toInt(((ef * (d - pow((d - ((ek * d) / dR)), 18, h, 0, 18, DOWN))) / d))])
557- let em = ds(el)
558- let en = em._1
559- let dt = em._2
560- let eo = if (ee)
561- then $Tuple4(en, 0, (eg - el), eh)
562- else $Tuple4(0, en, eg, (eh - el))
563- let ep = eo._1
564- let eq = eo._2
565- let er = eo._3
566- let es = eo._4
567- let dN = bs(D(es, aX), D(er, aW))
568- let dO = G(dN, b)
569- let cP = if (dx)
558+ let eh = bq(aM(aU))
559+ let ei = bq(aM(aV))
560+ let ej = if (ef)
561+ then eh
562+ else ei
563+ let ek = toBigInt(ej)
564+ let dS = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
565+ let el = toBigInt(dL)
566+ let em = max([0, toInt(((eg * (d - pow((d - ((el * d) / dS)), 18, h, 0, 18, DOWN))) / d))])
567+ let en = ds(em, aE)
568+ let eo = en._1
569+ let du = en._2
570+ let ep = if (ef)
571+ then $Tuple4(eo, 0, (eh - em), ei)
572+ else $Tuple4(0, eo, eh, (ei - em))
573+ let eq = ep._1
574+ let er = ep._2
575+ let es = ep._3
576+ let et = ep._4
577+ let dO = bs(D(et, aX), D(es, aW))
578+ let dP = G(dO, b)
579+ let cP = if (dy)
570580 then nil
571- else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bm(ep, eq, dK, dO, height, lastBlock.timestamp)), IntegerEntry(S(), dO), IntegerEntry(T(height, lastBlock.timestamp), dO)]
572- let dV = bs(D(eh, aX), D(eg, aW))
573- let dW = G(dV, b)
574- let dX = {
575- let et = (toInt(fraction(ef, ek, dR)) * 2)
576- fraction((en - et), b, et)
581+ else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bm(eq, er, dL, dP, height, lastBlock.timestamp)), IntegerEntry(S(), dP), IntegerEntry(T(height, lastBlock.timestamp), dP)]
582+ let dW = bs(D(ei, aX), D(eh, aW))
583+ let dX = G(dW, b)
584+ let dY = {
585+ let eu = (toInt(fraction(eg, el, dS)) * 2)
586+ fraction((eo - eu), b, eu)
577587 }
578- $Tuple4(en, cP, dt, dX)
588+ $Tuple4(eo, cP, du, dY)
579589 }
580590 else throw("Strict value is not equal to itself.")
581591 }
582592
583593
584-func eu () = {
594+func ev () = {
585595 let dq = getString(Q())
586596 if ($isInstanceOf(dq, "String"))
587597 then {
588- let ev = dq
589- fromBase58String(ev)
598+ let ew = dq
599+ fromBase58String(ew)
590600 }
591601 else if ($isInstanceOf(dq, "Unit"))
592602 then unit
593603 else throw("Match error")
594604 }
595605
596606
597-func ew () = {
607+func ex () = {
598608 let dq = getString(R())
599609 if ($isInstanceOf(dq, "String"))
600610 then {
601- let ev = dq
602- fromBase58String(ev)
611+ let ew = dq
612+ fromBase58String(ew)
603613 }
604614 else if ($isInstanceOf(dq, "Unit"))
605615 then unit
606616 else throw("Match error")
607617 }
608618
609619
610-func ex (df) = {
611- let dq = eu()
620+func ey (df) = {
621+ let dq = ev()
612622 if ($isInstanceOf(dq, "ByteVector"))
613623 then {
614- let ey = dq
615- (df.callerPublicKey == ey)
624+ let ez = dq
625+ (df.callerPublicKey == ez)
616626 }
617627 else if ($isInstanceOf(dq, "Unit"))
618628 then (df.caller == this)
619629 else throw("Match error")
620630 }
621631
622632
623-func ez (df) = {
624- let eA = throw("Permission denied")
625- let dq = eu()
633+func eA (df) = {
634+ let eB = throw("Permission denied")
635+ let dq = ev()
626636 if ($isInstanceOf(dq, "ByteVector"))
627637 then {
628- let ey = dq
629- if ((df.callerPublicKey == ey))
638+ let ez = dq
639+ if ((df.callerPublicKey == ez))
630640 then true
631- else eA
641+ else eB
632642 }
633643 else if ($isInstanceOf(dq, "Unit"))
634644 then if ((df.caller == this))
635645 then true
636- else eA
646+ else eB
637647 else throw("Match error")
638648 }
639649
640650
641651 @Callable(df)
642-func setManager (eB) = {
643- let eC = ez(df)
644- if ((eC == eC))
652+func setManager (eC) = {
653+ let eD = eA(df)
654+ if ((eD == eD))
645655 then {
646- let eD = fromBase58String(eB)
647- if ((eD == eD))
648- then [StringEntry(R(), eB)]
656+ let eE = fromBase58String(eC)
657+ if ((eE == eE))
658+ then [StringEntry(R(), eC)]
649659 else throw("Strict value is not equal to itself.")
650660 }
651661 else throw("Strict value is not equal to itself.")
652662 }
653663
654664
655665
656666 @Callable(df)
657667 func confirmManager () = {
658- let eE = ew()
659- let eF = if (isDefined(eE))
668+ let eF = ex()
669+ let eG = if (isDefined(eF))
660670 then true
661671 else throw("No pending manager")
662- if ((eF == eF))
672+ if ((eG == eG))
663673 then {
664- let eG = if ((df.callerPublicKey == value(eE)))
674+ let eH = if ((df.callerPublicKey == value(eF)))
665675 then true
666676 else throw("You are not pending manager")
667- if ((eG == eG))
668- then [StringEntry(Q(), toBase58String(value(eE))), DeleteEntry(R())]
677+ if ((eH == eH))
678+ then [StringEntry(Q(), toBase58String(value(eF))), DeleteEntry(R())]
669679 else throw("Strict value is not equal to itself.")
670680 }
671681 else throw("Strict value is not equal to itself.")
672682 }
673683
674684
675685
676686 @Callable(df)
677-func put (ck,eH) = if ((0 > ck))
687+func put (ck,eI) = if ((0 > ck))
678688 then throw("Invalid slippageTolerance passed")
679689 else {
680690 let dl = di(df, ck, true)
681691 let cM = dl._2
682692 let bR = dl._7
683693 let ci = dl._9
684694 let cN = dl._10
685695 let cO = dl._11
686- let eI = dl._12
687- let eJ = dl._13
688- let do = invoke(aD, "emit", [cM], nil)
696+ let eJ = dl._12
697+ let eK = dl._13
698+ let do = invoke(aA, "emit", [cM], nil)
689699 if ((do == do))
690700 then {
691701 let dp = {
692702 let dq = do
693703 if ($isInstanceOf(dq, "Address"))
694704 then {
695705 let dr = dq
696706 invoke(dr, "emit", [cM], nil)
697707 }
698708 else unit
699709 }
700710 if ((dp == dp))
701711 then {
702- let eK = if ((cN > 0))
703- then invoke(ba, "put", nil, [AttachedPayment(eI, cN)])
712+ let eL = if ((cN > 0))
713+ then invoke(ba, "put", nil, [AttachedPayment(eJ, cN)])
704714 else nil
705- if ((eK == eK))
715+ if ((eL == eL))
706716 then {
707- let eL = if ((cO > 0))
708- then invoke(ba, "put", nil, [AttachedPayment(eJ, cO)])
717+ let eM = if ((cO > 0))
718+ then invoke(ba, "put", nil, [AttachedPayment(eK, cO)])
709719 else nil
710- if ((eL == eL))
720+ if ((eM == eM))
711721 then {
712- let eM = if (eH)
722+ let eN = if (eI)
713723 then {
714- let eN = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
715- if ((eN == eN))
724+ let eO = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
725+ if ((eO == eO))
716726 then nil
717727 else throw("Strict value is not equal to itself.")
718728 }
719729 else [ScriptTransfer(df.caller, cM, bR)]
720- (ci ++ eM)
730+ (ci ++ eN)
721731 }
722732 else throw("Strict value is not equal to itself.")
723733 }
724734 else throw("Strict value is not equal to itself.")
725735 }
726736 else throw("Strict value is not equal to itself.")
727737 }
728738 else throw("Strict value is not equal to itself.")
729739 }
730740
731741
732742
733743 @Callable(df)
734-func putForFree (eO) = if ((0 > eO))
744+func putForFree (eP) = if ((0 > eP))
735745 then throw("Invalid value passed")
736746 else {
737- let dl = di(df, eO, false)
747+ let dl = di(df, eP, false)
738748 dl._9
739749 }
740750
741751
742752
743753 @Callable(df)
744-func putOneTkn (eP,eQ) = {
745- let eR = {
746- let eS = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
747- if ($isInstanceOf(eS, "Boolean"))
748- then eS
749- else throw(($getType(eS) + " couldn't be cast to Boolean"))
754+func putOneTkn (eQ,eR) = {
755+ let eS = {
756+ let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
757+ if ($isInstanceOf(aD, "Boolean"))
758+ then aD
759+ else throw(($getType(aD) + " couldn't be cast to Boolean"))
750760 }
751761 let eT = if (if (if (aF())
752762 then true
753763 else (aS == l))
754764 then true
755765 else (aS == n))
756766 then true
757- else eR
758- let ed = [if (if (!(eT))
767+ else eS
768+ let ee = [if (if (!(eT))
759769 then true
760- else ex(df))
770+ else ey(df))
761771 then true
762- else aB("put operation is blocked by admin"), if ((size(df.payments) == 1))
772+ else ay("put operation is blocked by admin"), if ((size(df.payments) == 1))
763773 then true
764- else aB("exactly 1 payment are expected")]
765- if ((ed == ed))
774+ else ay("exactly 1 payment are expected")]
775+ if ((ee == ee))
766776 then {
767777 let eU = df.payments[0]
768- let dw = eU.assetId
769- let dv = eU.amount
778+ let dx = eU.assetId
779+ let dw = eU.amount
770780 let X = df.caller
771781 let Y = df.transactionId
772- let eV = du(dv, dw, X, Y)
782+ let eV = dv(dw, dx, X, Y)
773783 if ((eV == eV))
774784 then {
775785 let eW = eV._4
776- let dt = eV._3
786+ let du = eV._3
777787 let cP = eV._2
778788 let eX = eV._1
779- let eY = if (if ((eP > 0))
780- then (eP > eX)
789+ let eY = if (if ((eQ > 0))
790+ then (eQ > eX)
781791 else false)
782- then aB(makeString(["amount to receive is less than ", toString(eP)], ""))
792+ then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
783793 else eX
784794 let do = dm(eY)
785795 if ((do == do))
786796 then {
787- let eM = if (eQ)
797+ let eN = if (eR)
788798 then {
789799 let eZ = invoke(aZ, "stake", nil, [AttachedPayment(aT, eY)])
790800 if ((eZ == eZ))
791801 then nil
792802 else throw("Strict value is not equal to itself.")
793803 }
794804 else [ScriptTransfer(df.caller, eY, aT)]
795- let fa = if ((dt > 0))
796- then [ScriptTransfer(aE, dt, dw)]
805+ let fa = if ((du > 0))
806+ then [ScriptTransfer(aB, du, dx)]
797807 else nil
798- $Tuple2(((cP ++ eM) ++ fa), eY)
808+ $Tuple2(((cP ++ eN) ++ fa), eY)
799809 }
800810 else throw("Strict value is not equal to itself.")
801811 }
802812 else throw("Strict value is not equal to itself.")
803813 }
804814 else throw("Strict value is not equal to itself.")
805815 }
806816
807817
808818
809819 @Callable(df)
810-func putOneTknREADONLY (dw,dv) = {
811- let fb = du(dv, aK(dw), unit, unit)
820+func putOneTknREADONLY (dx,dw) = {
821+ let fb = dv(dw, aK(dx), unit, unit)
812822 let eX = fb._1
813823 let cP = fb._2
814- let dt = fb._3
824+ let du = fb._3
815825 let eW = fb._4
816- $Tuple2(nil, $Tuple3(eX, dt, eW))
826+ $Tuple2(nil, $Tuple3(eX, du, eW))
817827 }
818828
819829
820830
821831 @Callable(df)
822-func getOneTkn (fc,eP) = {
823- let eR = {
824- let eS = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
825- if ($isInstanceOf(eS, "Boolean"))
826- then eS
827- else throw(($getType(eS) + " couldn't be cast to Boolean"))
832+func getOneTkn (fc,eQ) = {
833+ let eS = {
834+ let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
835+ if ($isInstanceOf(aD, "Boolean"))
836+ then aD
837+ else throw(($getType(aD) + " couldn't be cast to Boolean"))
828838 }
829839 let fd = if (if (aF())
830840 then true
831841 else (aS == n))
832842 then true
833- else eR
834- let ed = [if (if (!(fd))
843+ else eS
844+ let ee = [if (if (!(fd))
835845 then true
836- else ex(df))
846+ else ey(df))
837847 then true
838- else aB("get operation is blocked by admin"), if ((size(df.payments) == 1))
848+ else ay("get operation is blocked by admin"), if ((size(df.payments) == 1))
839849 then true
840- else aB("exactly 1 payment are expected")]
841- if ((ed == ed))
850+ else ay("exactly 1 payment are expected")]
851+ if ((ee == ee))
842852 then {
843- let ec = aK(fc)
853+ let ed = aK(fc)
844854 let eU = df.payments[0]
845- let dw = eU.assetId
846- let dK = eU.amount
855+ let dx = eU.assetId
856+ let dL = eU.amount
847857 let X = df.caller
848858 let Y = df.transactionId
849- let fe = eb(ec, dK, dw, X, Y)
859+ let fe = ec(ed, dL, dx, X, Y)
850860 if ((fe == fe))
851861 then {
852862 let eW = fe._4
853- let dt = fe._3
863+ let du = fe._3
854864 let cP = fe._2
855865 let ff = fe._1
856- let dn = if (if ((eP > 0))
857- then (eP > ff)
866+ let dn = if (if ((eQ > 0))
867+ then (eQ > ff)
858868 else false)
859- then aB(makeString(["amount to receive is less than ", toString(eP)], ""))
869+ then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
860870 else ff
861- let fg = invoke(aD, "burn", [dK], [AttachedPayment(dw, dK)])
871+ let fg = invoke(aA, "burn", [dL], [AttachedPayment(dx, dL)])
862872 if ((fg == fg))
863873 then {
864- let fh = [ScriptTransfer(X, dn, ec)]
865- let fa = if ((dt > 0))
866- then [ScriptTransfer(aE, dt, ec)]
874+ let fh = [ScriptTransfer(X, dn, ed)]
875+ let fa = if ((du > 0))
876+ then [ScriptTransfer(aB, du, ed)]
867877 else nil
868878 $Tuple2(((cP ++ fh) ++ fa), dn)
869879 }
870880 else throw("Strict value is not equal to itself.")
871881 }
872882 else throw("Strict value is not equal to itself.")
873883 }
874884 else throw("Strict value is not equal to itself.")
875885 }
876886
877887
878888
879889 @Callable(df)
880-func getOneTknREADONLY (ec,dK) = {
881- let fi = eb(aK(ec), dK, aT, unit, unit)
890+func getOneTknREADONLY (ed,dL) = {
891+ let fi = ec(aK(ed), dL, aT, unit, unit)
882892 let ff = fi._1
883893 let cP = fi._2
884- let dt = fi._3
894+ let du = fi._3
885895 let eW = fi._4
886- $Tuple2(nil, $Tuple3(ff, dt, eW))
896+ $Tuple2(nil, $Tuple3(ff, du, eW))
887897 }
888898
889899
890900
891901 @Callable(df)
892-func unstakeAndGetOneTkn (fj,fc,eP) = {
893- let eR = {
894- let eS = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
895- if ($isInstanceOf(eS, "Boolean"))
896- then eS
897- else throw(($getType(eS) + " couldn't be cast to Boolean"))
902+func unstakeAndGetOneTkn (fj,fc,eQ) = {
903+ let eS = {
904+ let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
905+ if ($isInstanceOf(aD, "Boolean"))
906+ then aD
907+ else throw(($getType(aD) + " couldn't be cast to Boolean"))
898908 }
899909 let fd = if (if (aF())
900910 then true
901911 else (aS == n))
902912 then true
903- else eR
904- let ed = [if (if (!(fd))
913+ else eS
914+ let ee = [if (if (!(fd))
905915 then true
906- else ex(df))
916+ else ey(df))
907917 then true
908- else aB("get operation is blocked by admin"), if ((size(df.payments) == 0))
918+ else ay("get operation is blocked by admin"), if ((size(df.payments) == 0))
909919 then true
910- else aB("no payments are expected")]
911- if ((ed == ed))
920+ else ay("no payments are expected")]
921+ if ((ee == ee))
912922 then {
913- let ec = aK(fc)
923+ let ed = aK(fc)
914924 let X = df.caller
915925 let Y = df.transactionId
916926 let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
917927 if ((fk == fk))
918928 then {
919- let fl = eb(ec, fj, aT, X, Y)
929+ let fl = ec(ed, fj, aT, X, Y)
920930 if ((fl == fl))
921931 then {
922932 let eW = fl._4
923- let dt = fl._3
933+ let du = fl._3
924934 let cP = fl._2
925935 let ff = fl._1
926- let dn = if (if ((eP > 0))
927- then (eP > ff)
936+ let dn = if (if ((eQ > 0))
937+ then (eQ > ff)
928938 else false)
929- then aB(makeString(["amount to receive is less than ", toString(eP)], ""))
939+ then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
930940 else ff
931- let fg = invoke(aD, "burn", [fj], [AttachedPayment(aT, fj)])
941+ let fg = invoke(aA, "burn", [fj], [AttachedPayment(aT, fj)])
932942 if ((fg == fg))
933943 then {
934- let fh = [ScriptTransfer(df.caller, dn, ec)]
935- let fa = if ((dt > 0))
936- then [ScriptTransfer(aE, dt, ec)]
944+ let fh = [ScriptTransfer(df.caller, dn, ed)]
945+ let fa = if ((du > 0))
946+ then [ScriptTransfer(aB, du, ed)]
937947 else nil
938948 $Tuple2(((cP ++ fh) ++ fa), dn)
939949 }
940950 else throw("Strict value is not equal to itself.")
941951 }
942952 else throw("Strict value is not equal to itself.")
943953 }
944954 else throw("Strict value is not equal to itself.")
945955 }
946956 else throw("Strict value is not equal to itself.")
947957 }
948958
949959
950960
951961 @Callable(df)
952962 func get () = {
953963 let cA = de(df)
954964 let fm = cA._1
955965 let ch = cA._2
956966 let dh = cA._3
957967 let bP = cA._4
958968 let ci = cA._5
959- let fn = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
969+ let fn = invoke(aA, "burn", [dh], [AttachedPayment(bP, dh)])
960970 if ((fn == fn))
961971 then ci
962972 else throw("Strict value is not equal to itself.")
963973 }
964974
965975
966976
967977 @Callable(df)
968978 func getNoLess (fo,fp) = {
969979 let cA = de(df)
970980 let cg = cA._1
971981 let ch = cA._2
972982 let dh = cA._3
973983 let bP = cA._4
974984 let ci = cA._5
975985 if ((fo > cg))
976986 then throw(((("noLessThenAmtAsset failed: " + toString(cg)) + " < ") + toString(fo)))
977987 else if ((fp > ch))
978988 then throw(((("noLessThenPriceAsset failed: " + toString(ch)) + " < ") + toString(fp)))
979989 else {
980- let fn = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
990+ let fn = invoke(aA, "burn", [dh], [AttachedPayment(bP, dh)])
981991 if ((fn == fn))
982992 then ci
983993 else throw("Strict value is not equal to itself.")
984994 }
985995 }
986996
987997
988998
989999 @Callable(df)
9901000 func unstakeAndGet (dn) = {
9911001 let fq = if ((size(df.payments) != 0))
9921002 then throw("No payments are expected")
9931003 else true
9941004 if ((fq == fq))
9951005 then {
9961006 let bE = aH()
9971007 let bR = fromBase58String(bE[q])
9981008 let fk = invoke(aZ, "unstake", [toBase58String(bR), dn], nil)
9991009 if ((fk == fk))
10001010 then {
10011011 let cA = bN(toBase58String(df.transactionId), toBase58String(bR), dn, df.caller)
10021012 let bU = parseIntValue(cA._9)
10031013 let ci = cA._10
10041014 let fr = if (if (aF())
10051015 then true
10061016 else (bU == n))
10071017 then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
10081018 else true
10091019 if ((fr == fr))
10101020 then {
1011- let fn = invoke(aD, "burn", [dn], [AttachedPayment(bR, dn)])
1021+ let fn = invoke(aA, "burn", [dn], [AttachedPayment(bR, dn)])
10121022 if ((fn == fn))
10131023 then ci
10141024 else throw("Strict value is not equal to itself.")
10151025 }
10161026 else throw("Strict value is not equal to itself.")
10171027 }
10181028 else throw("Strict value is not equal to itself.")
10191029 }
10201030 else throw("Strict value is not equal to itself.")
10211031 }
10221032
10231033
10241034
10251035 @Callable(df)
10261036 func unstakeAndGetNoLess (fj,fs,fp) = {
10271037 let fd = if (aF())
10281038 then true
10291039 else (aS == n)
1030- let ed = [if (!(fd))
1040+ let ee = [if (!(fd))
10311041 then true
10321042 else throw("get operation is blocked by admin"), if ((size(df.payments) == 0))
10331043 then true
10341044 else throw("no payments are expected")]
1035- if ((ed == ed))
1045+ if ((ee == ee))
10361046 then {
10371047 let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
10381048 if ((fk == fk))
10391049 then {
10401050 let cA = bN(toBase58String(df.transactionId), toBase58String(aT), fj, df.caller)
10411051 let cg = cA._1
10421052 let ch = cA._2
10431053 let ci = cA._10
10441054 let ft = [if ((cg >= fs))
10451055 then true
10461056 else throw(makeString(["amount asset amount to receive is less than ", toString(fs)], "")), if ((ch >= fp))
10471057 then true
10481058 else throw(makeString(["price asset amount to receive is less than ", toString(fp)], ""))]
10491059 if ((ft == ft))
10501060 then {
1051- let fn = invoke(aD, "burn", [fj], [AttachedPayment(aT, fj)])
1061+ let fn = invoke(aA, "burn", [fj], [AttachedPayment(aT, fj)])
10521062 if ((fn == fn))
10531063 then ci
10541064 else throw("Strict value is not equal to itself.")
10551065 }
10561066 else throw("Strict value is not equal to itself.")
10571067 }
10581068 else throw("Strict value is not equal to itself.")
10591069 }
10601070 else throw("Strict value is not equal to itself.")
10611071 }
10621072
10631073
10641074
10651075 @Callable(df)
1066-func activate (fu,fv) = if ((toString(df.caller) != toString(aD)))
1076+func activate (fu,fv) = if ((toString(df.caller) != toString(aA)))
10671077 then throw("permissions denied")
10681078 else $Tuple2([StringEntry(aa(), fu), StringEntry(ab(), fv)], "success")
10691079
10701080
10711081
10721082 @Callable(df)
10731083 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aH())
10741084
10751085
10761086
10771087 @Callable(df)
10781088 func getAccBalanceWrapperREADONLY (br) = $Tuple2(nil, bq(br))
10791089
10801090
10811091
10821092 @Callable(df)
10831093 func calcPricesWrapperREADONLY (by,bz,bD) = {
10841094 let bM = bC(by, bz, bD)
10851095 $Tuple2(nil, [toString(bM[0]), toString(bM[1]), toString(bM[2])])
10861096 }
10871097
10881098
10891099
10901100 @Callable(df)
10911101 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
10921102
10931103
10941104
10951105 @Callable(df)
10961106 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
10971107
10981108
10991109
11001110 @Callable(df)
11011111 func calcPriceBigIntWrapperREADONLY (bt,bu) = $Tuple2(nil, toString(bs(parseBigIntValue(bt), parseBigIntValue(bu))))
11021112
11031113
11041114
11051115 @Callable(df)
11061116 func estimatePutOperationWrapperREADONLY (bO,ck,cl,cm,cn,co,X,cp,cq) = $Tuple2(nil, cj(bO, ck, cl, cm, cn, co, X, cp, cq))
11071117
11081118
11091119
11101120 @Callable(df)
11111121 func estimateGetOperationWrapperREADONLY (bO,bP,bQ,X) = {
11121122 let cA = bN(bO, bP, bQ, addressFromStringValue(X))
11131123 $Tuple2(nil, $Tuple10(cA._1, cA._2, cA._3, cA._4, cA._5, cA._6, cA._7, toString(cA._8), cA._9, cA._10))
11141124 }
11151125
11161126
11171127
11181128 @Callable(df)
11191129 func statsREADONLY () = {
11201130 let bE = aH()
11211131 let bR = fromBase58String(bE[q])
11221132 let cS = bE[r]
11231133 let cT = bE[s]
11241134 let ct = bE[v]
11251135 let cu = bE[w]
11261136 let bF = parseIntValue(bE[t])
11271137 let bG = parseIntValue(bE[u])
11281138 let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
11291139 let cU = bq(cS)
11301140 let cV = bq(cT)
11311141 let fx = if ((fw == 0))
11321142 then [e, e, e]
11331143 else bC(cU, cV, fw)
11341144 let cb = 0
11351145 let fy = G(fx[1], b)
11361146 let fz = G(fx[2], b)
1137- let fA = value(getInteger(aD, ap(toString(this))))
1147+ let fA = value(getInteger(aA, am(toString(this))))
11381148 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fw), toString(cb), toString(fy), toString(fz), toString(fA)], j))
11391149 }
11401150
11411151
11421152
11431153 @Callable(df)
11441154 func evaluatePutByAmountAssetREADONLY (cl) = {
11451155 let bE = aH()
11461156 let bR = fromBase58String(bE[q])
11471157 let cr = bE[r]
11481158 let bS = fromBase58String(cr)
11491159 let cs = bE[s]
11501160 let bT = fromBase58String(cs)
11511161 let bF = parseIntValue(bE[t])
11521162 let bG = parseIntValue(bE[u])
11531163 let bU = bE[p]
11541164 let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
11551165 let cU = bq(cr)
11561166 let cV = bq(cs)
11571167 let bA = D(cU, bF)
11581168 let bB = D(cV, bG)
11591169 let ca = if ((fw == 0))
11601170 then e
11611171 else bs(bB, bA)
11621172 let cx = D(cl, bF)
11631173 let cy = fraction(cx, ca, d)
11641174 let cn = G(cy, bG)
11651175 let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
11661176 let cI = dl._1
11671177 let fB = dl._3
11681178 let bW = dl._4
11691179 let bY = dl._5
11701180 let bV = dl._6
11711181 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
11721182 }
11731183
11741184
11751185
11761186 @Callable(df)
11771187 func evaluatePutByPriceAssetREADONLY (cn) = {
11781188 let bE = aH()
11791189 let bR = fromBase58String(bE[q])
11801190 let cr = bE[r]
11811191 let bS = fromBase58String(cr)
11821192 let cs = bE[s]
11831193 let bT = fromBase58String(cs)
11841194 let bF = parseIntValue(bE[t])
11851195 let bG = parseIntValue(bE[u])
11861196 let bU = bE[p]
11871197 let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
11881198 let fC = bq(cr)
11891199 let fD = bq(cs)
11901200 let fE = D(fC, bF)
11911201 let fF = D(fD, bG)
11921202 let ca = if ((fw == 0))
11931203 then e
11941204 else bs(fF, fE)
11951205 let cy = D(cn, bG)
11961206 let cx = fraction(cy, d, ca)
11971207 let cl = G(cx, bF)
11981208 let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
11991209 let cI = dl._1
12001210 let fB = dl._3
12011211 let bW = dl._4
12021212 let bY = dl._5
12031213 let bV = dl._6
12041214 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
12051215 }
12061216
12071217
12081218
12091219 @Callable(df)
12101220 func evaluateGetREADONLY (fG,fH) = {
12111221 let cA = bN("", fG, fH, this)
12121222 let cg = cA._1
12131223 let ch = cA._2
12141224 let bW = cA._5
12151225 let bY = cA._6
12161226 let bV = cA._7
12171227 let cb = cA._8
12181228 let bU = parseIntValue(cA._9)
12191229 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cg), toString(ch), toString(bW), toString(bY), toString(bV), toString(cb), toString(bU)], j))
12201230 }
12211231
12221232
12231233 @Verifier(fI)
12241234 func fJ () = {
12251235 let fK = {
1226- let dq = eu()
1236+ let dq = ev()
12271237 if ($isInstanceOf(dq, "ByteVector"))
12281238 then {
1229- let ey = dq
1230- ey
1239+ let ez = dq
1240+ ez
12311241 }
12321242 else if ($isInstanceOf(dq, "Unit"))
12331243 then fI.senderPublicKey
12341244 else throw("Match error")
12351245 }
12361246 let dq = fI
12371247 if ($isInstanceOf(dq, "Order"))
12381248 then {
12391249 let cR = dq
12401250 let fL = aG()
1241- let au = cQ(cR)
1242- let av = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
1243- let aw = sigVerify(cR.bodyBytes, cR.proofs[1], fL)
1244- if (if (if (au)
1245- then av
1251+ let ar = cQ(cR)
1252+ let as = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
1253+ let at = sigVerify(cR.bodyBytes, cR.proofs[1], fL)
1254+ if (if (if (ar)
1255+ then as
12461256 else false)
1247- then aw
1257+ then at
12481258 else false)
12491259 then true
1250- else at(au, av, aw)
1260+ else aq(ar, as, at)
12511261 }
12521262 else if ($isInstanceOf(dq, "SetScriptTransaction"))
12531263 then {
1254- let ev = dq
1255- let fM = blake2b256(value(ev.script))
1256- let fN = fromBase64String(value(getString(aD, ar())))
1264+ let ew = dq
1265+ let fM = blake2b256(value(ew.script))
1266+ let fN = fromBase64String(value(getString(aA, ao())))
12571267 let fO = scriptHash(this)
12581268 if (if ((fN == fM))
12591269 then (fO != fM)
12601270 else false)
12611271 then true
12621272 else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
12631273 }
12641274 else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
12651275 }
12661276

github/deemru/w8io/026f985 
215.21 ms