tx · 6rHDHg4HtAMbDg7ErtEDeXfvfauGpV6aR7i7D8MW28pL

3MsMP2pb2p8MDd6Rxb7XEXqqwEhE8ATfyai:  -0.02300000 Waves

2023.02.15 13:40 [2450613] smart account 3MsMP2pb2p8MDd6Rxb7XEXqqwEhE8ATfyai > SELF 0.00000000 Waves

{ "type": 13, "id": "6rHDHg4HtAMbDg7ErtEDeXfvfauGpV6aR7i7D8MW28pL", "fee": 2300000, "feeAssetId": null, "timestamp": 1676457686806, "version": 2, "chainId": 84, "sender": "3MsMP2pb2p8MDd6Rxb7XEXqqwEhE8ATfyai", "senderPublicKey": "2JEaBjtjvMoNGKZmL9QxYefa1VkMJM3vMW8rNvTs9R2H", "proofs": [ "4gN8gQBCg31oo2f1V7DCtn3MYkww8a4U993CUA9XFeuxrqJEpPyqpce8jaz1sL9gLAREbHTUWJfV26EMGhEf92xk" ], "script": "base64:BgLqJQgCEgASBAoCCAgSAwoBCBIKCggICAgICAgIARIDCgEIEgYKBAgICAgSBAoCCBgSAwoBCBIECgIIGBIDCgEIEgASAwoBGBIKCggICAgICAEICBIECgIIARIDCgEBEgMKAQESBAoCCAESBgoECAgICBIECgIICBIECgIICBIECgIICBIDCgEIEgMKAQgSAwoBCBIDCgEIEgMKAQgSAwoBCCIGU0NBTEU4IgVNVUxUOCIHU0NBTEUxOCIGTVVMVDE4Ig5QT09MV0VJR0hUTVVMVCIOR1dYdmlydHVhbFBPT0wiDGxhYmVsUG9vbHNMcCINZGVmYXVsdFNwcmVhZCIRZGVjaW1hbHNNdWx0UHJpY2UiA1NFUCIFRU1QVFkiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIhJpZHhJbnRlcm5hbEFzc2V0SWQiD2lkeFJlc3V0QWN0aW9ucyIgaWR4SWZBc3NldElkQ2FsY3VsYXRpb25QZXJmb3JtZWQiDmlkeFBvb2xBZGRyZXNzIg1pZHhQb29sU3RhdHVzIhBpZHhQb29sTFBBc3NldElkIg1pZHhBbXRBc3NldElkIg9pZHhQcmljZUFzc2V0SWQiDmlkeEFtdEFzc2V0RGNtIhBpZHhQcmljZUFzc2V0RGNtIg5pZHhJQW10QXNzZXRJZCIQaWR4SVByaWNlQXNzZXRJZCINaWR4TFBBc3NldERjbSILaWR4UG9vbFR5cGUiE3Bvb2xMYWJlbFd4RW1pc3Npb24iD3ZhbGlkUG9vbExhYmVscyIWa2V5QWxsb3dlZExwU2NyaXB0SGFzaCIca2V5QWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaCIha2V5QWxsb3dlZExwU3RhYmxlQWRkb25TY3JpcHRIYXNoIgxzd2FwQ29udHJhY3QiEGtleUZhY3RvcnlDb25maWciD2tleUxwVG9rZW5zTGlzdCIRa2V5UG9vbFNjcmlwdEhhc2giDWtleU1hdGNoZXJQdWIiGGtleUxlZ2FjeUZhY3RvcnlDb250cmFjdCIOa2V5TGVnYWN5UG9vbHMiE2tleU1hbmFnZXJQdWJsaWNLZXkiGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5Ig9rZXlBZG1pblB1YktleXMiFmtleUFzc2V0c1N0b3JlQ29udHJhY3QiGWtleVZvdGluZ0VtaXNzaW9uQ29udHJhY3QiDmtleVByaWNlQXNzZXRzIhBrZXlQcmljZURlY2ltYWxzIhNrZXlBbGxQb29sc1NodXRkb3duIhZrZXlOZXh0SW50ZXJuYWxBc3NldElkIg9rZXlQb29sVG9XZWlnaHQiC3Bvb2xBZGRyZXNzIhZrZXlQb29sVG9XZWlnaHRIaXN0b3J5IgNudW0iH2tleU1hcHBpbmdzSW50ZXJuYWwyYmFzZUFzc2V0SWQiEWludGVybmFsQmFzZUFzc2V0Ih9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkIgxiYXNlQXNzZXRTdHIiDWtleVBvb2xDb25maWciE2Ftb3VudEFzc2V0SW50ZXJuYWwiEnByaWNlQXNzZXRJbnRlcm5hbCIha2V5UG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkIg5hc3NldHNJbnRlcm5hbCILJHQwMzcwMDM3NjIiJWtleUFsbFBvb2xzT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiHWtleU1hcHBpbmdMcEFzc2V0VG9Qb29sQXNzZXRzIgpscEFzc2V0U3RyIh1rZXlNYXBwaW5nUG9vbEFzc2V0c1RvTHBhc3NldCIYaW50ZXJuYWxBbW91bnRBc3NldElkU3RyIhdpbnRlcm5hbFByaWNlQXNzZXRJZFN0ciINa2V5UG9vbFNwcmVhZCIpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMiE3Bvb2xDb250cmFjdEFkZHJlc3MiKWtleU1hcHBpbmdQb29sQXNzZXRzVG9Qb29sQ29udHJhY3RBZGRyZXNzIh9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0IiprZXlNYXBwaW5nUG9vbExQQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MiDWtleVd4RW1pc3Npb24iDWFtb3VudEFzc2V0SWQiDHByaWNlQXNzZXRJZCIIa2V5SW5GZWUiD2tleUluRmVlRGVmYXVsdCIJa2V5T3V0RmVlIhBrZXlPdXRGZWVEZWZhdWx0Ig9nZXRTdHJpbmdPckZhaWwiA2tleSIQZ2V0Qm9vbGVhbk9yRmFpbCIMZ2V0SW50T3JGYWlsIhhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHAiGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHAiFElkeEZhY3RvcnlDZmdJZG9EYXBwIhVJZHhGYWN0b3J5Q2ZnVGVhbURhcHAiGUlkeEZhY3RvcnlDZmdFbWlzc2lvbkRhcHAiFUlkeEZhY3RvcnlDZmdSZXN0RGFwcCIZSWR4RmFjdG9yeUNmZ1NsaXBwYWdlRGFwcCIUSWR4RmFjdG9yeUNmZ0Rhb0RhcHAiGklkeEZhY3RvcnlDZmdNYXJrZXRpbmdEYXBwIhpJZHhGYWN0b3J5Q2ZnR3d4UmV3YXJkRGFwcCIWSWR4RmFjdG9yeUNmZ0JpcmRzRGFwcCIYZ2V0Qm9vc3RpbmdBZGRyZXNzT3JGYWlsIgpmYWN0b3J5Q2ZnIhhnZXRFbWlzc2lvbkFkZHJlc3NPckZhaWwiF2dldFN0YWtpbmdBZGRyZXNzT3JGYWlsIhlnZXRHd3hSZXdhcmRBZGRyZXNzT3JGYWlsIg5nZXRQcmljZUFzc2V0cyIHJG1hdGNoMCIBcyIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiFXBlcm1pc3Npb25EZW5pZWRFcnJvciIJdGVzdEVycm9yIghtdXN0VGhpcyIBaSILbXVzdE1hbmFnZXIiAnBrIhBkYXRhRmFjdG9yeUNmZ1YzIg5zdGFraW5nQWRkcmVzcyIPYm9vc3RpbmdBZGRyZXNzIgtpZG9Db250cmFjdCIMdGVhbUNvbnRyYWN0IhBlbWlzc2lvbkNvbnRyYWN0IgxyZXN0Q29udHJhY3QiEHNsaXBwYWdlQ29udHJhY3QiC2Rhb0NvbnRyYWN0IhFtYXJrZXRpbmdDb250cmFjdCISZ3d4UmV3YXJkc0NvbnRyYWN0Ig1iaXJkc0NvbnRyYWN0Ig5kYXRhRmFjdG9yeUNmZyILZGF0YVBvb2xDZmciCnBvb2xTdGF0dXMiCWxwQXNzZXRJZCIOYW1vdW50QXNzZXRTdHIiDXByaWNlQXNzZXRTdHIiE2Ftb3VudEFzc2V0RGVjaW1hbHMiEnByaWNlQXNzZXREZWNpbWFscyIVYW1vdW50QXNzZXRJbnRlcm5hbElkIhRwcmljZUFzc2V0SW50ZXJuYWxJZCIPbHBBc3NldERlY2ltYWxzIghwb29sVHlwZSIVZGF0YU1hcHBpbmdQb29sQXNzZXRzIhZpbnRlcm5hbEFtb3VudEFzc2V0U3RyIhVpbnRlcm5hbFByaWNlQXNzZXRTdHIiDWdldFBvb2xDb25maWciCnBvb2xBc3NldHMiGmdldEludGVybmFsQXNzZXRJZE9yQ3JlYXRlIgphc3NldElkU3RyIgtpbmNyZW1lbnRvciIPaW50ZXJuYWxBc3NldElkIhhjdXJyZW50SW5kZXhPZkludGVybmFsSWQiBnJlc3VsdCISbmV3SW50ZXJuYWxBc3NldElkIgltdXN0QWRtaW4iCGFkbWluUEtzIglpc01hbmFnZXIiFmludE9yRGVmYXVsdE9yRmFsbGJhY2siCmtleURlZmF1bHQiDXZhbHVlRmFsbGJhY2siBmFzc2V0MSIGYXNzZXQyIglhc3NldE51bTEiCWFzc2V0TnVtMiICZWUiA3JlcyICbHAiD3N0YWtpbmdDb250cmFjdCIQYm9vc3RpbmdDb250cmFjdCIQc2xwaXBhZ2VDb250cmFjdCINcHJpY2VEZWNpbWFscyILY2hlY2tDYWxsZXIiEG1hdGhjaGVyUHViNThTdHIiCm1hdGhjZXJQdWIiFWxlZ2FjeUZhY3RvcnlDb250cmFjdCILbGVnYWN5UG9vbHMiE2Fzc2V0c1N0b3JlQ29udHJhY3QiFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QiC3ByaWNlQXNzZXRzIgVjaGVrcyIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIgxhZG1pblB1YktleXMiC2xwQXNzZXROYW1lIgxscEFzc2V0RGVzY3IiCnBvb2xXZWlnaHQiBGxvZ28iF2ludGVybmFsQW1vdW50QXNzZXREYXRhIhVpbnRlcm5hbEFtb3VudEFzc2V0SWQiFmludGVybmFsUHJpY2VBc3NldERhdGEiFGludGVybmFsUHJpY2VBc3NldElkIhVwb29sQWNjb3VudFNjcmlwdEhhc2giHGV0aGFsb25Qb29sQWNjb3VudFNjcmlwdEhhc2giCnBvb2xDb25maWciD3Bvb2xDb25maWdWYWx1ZSIUYW1vdW50QXNzZXRzRGVjaW1hbHMiE3ByaWNlQXNzZXRzRGVjaW1hbHMiEmxwQXNzZXRJc3N1ZUFjdGlvbiIMbHBBc3NldElkU3RyIhhwb29sQWN0aXZhdGVJbnZva2VSZXN1bHQiGGNyZWF0ZU9yVXBkYXRlTHBBc3NldEludiISYWRkUG9vbHNMcExhYmVsSW52IgpzZXRMb2dvSW52IhBhZGRBc3NldHNMaW5rSW52IhtpbmNyZWFzZUFzc2V0UG9vbHNOdW1iZXJJbnYiCW5ld1N0YXR1cyIKbHBBc3NldERjbSIMYW1vdW50VG9FbWl0IgZjYWxsZXIiDG9yaWdpbkNhbGxlciIQbHBBc3NldFJlcXVlc3RlZCIHbHBBc3NldCIMYW1vdW50VG9CdXJuIgdwYXltZW50Ig1wYXltZW50QW1vdW50Ig9pbkFtb3VudEFzc2V0SWQiGmxwQXNzZXRSZXF1ZXN0ZWRGb3JCdXJuaW5nIgVzaGFyZSINcG9vbFdlaWdodEtleSIMZ3d4V2VpZ2h0S2V5Iglnd3hXZWlnaHQiDXBvb2xXZWlnaHROZXciEW9uTW9kaWZ5V2VpZ2h0SW52IhVnd3hWaXJ0dWFsUG9vbEFjdGlvbnMiFHBvb2xXZWlnaHRIaXN0b3J5S2V5Ihdwb29sV2VpZ2h0SGlzdG9yeU9yVW5pdCIYcG9vbFdlaWdodEhpc3RvcnlBY3Rpb25zIg5idGNQb29sQWRkcmVzcyIOZXRoUG9vbEFkZHJlc3MiEWV0aEJ0Y1Bvb2xBZGRyZXNzIhN1c2RjVXNkdFBvb2xBZGRyZXNzIg9ldGhCdGNXZWlnaHROZXciEXVzZGNVc2R0V2VpZ2h0TmV3Ig93ZWlnaHREZWNyZW1lbnQiC3N0YWtpbmdEYXBwIg1nd3hSZXdhcmREYXBwIgxidGNXZWlnaHRLRVkiDGV0aFdlaWdodEtFWSIPZXRoQnRjV2VpZ2h0S0VZIhF1c2RjVXNkdFdlaWdodEtFWSIJYnRjV2VpZ2h0IglldGhXZWlnaHQiDGJ0Y1dlaWdodE5ldyIMZXRoV2VpZ2h0TmV3Ig9idGNMcEFzc2V0SWRTdHIiD2V0aExwQXNzZXRJZFN0ciISZXRoQnRjTHBBc3NldElkU3RyIhR1c2RjVXNkdExwQXNzZXRJZFN0ciIRb25Nb2RpZnlXZWlnaHRCdGMiEW9uTW9kaWZ5V2VpZ2h0RXRoIhRvbk1vZGlmeVdlaWdodEV0aEJ0YyIWb25Nb2RpZnlXZWlnaHRVc2RjVXNkdCIJaGF2ZUxhYmVsIgFiIgdhc3NldElkIhRjaGVja1ByaWNlQXNzZXRzU2l6ZSICY2IiA2FjYyIKcHJpY2VBc3NldCIBciIHYWN0aW9ucyICJGwiAiRzIgUkYWNjMCIFJGYwXzEiAiRhIgIkaSIFJGYwXzIiHnBvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCIiYWxsUG9vbHNPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCIDZmVlIgNjZmciAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleWYAAWEACAABYgCAwtcvAAFjABIAAWQJALYCAQCAgJC7utat8A0AAWUFAWIAAWYCDkdXWHZpcnR1YWxQT09MAAFnAghQT09MU19MUAABaACAiXoAAWkJAGgCCQBoAgBkAOgHAOgHAAFqAgJfXwABawIAAAFsAAEAAW0AAgABbgADAAFvAAQAAXAAAQABcQACAAFyAAMAAXMAAQABdAACAAF1AAMAAXYABAABdwAFAAF4AAYAAXkABwABegAIAAFBAAkAAUIACgABQwALAAFEAgtXWF9FTUlTU0lPTgABRQkAzAgCBQFEBQNuaWwBAUYAAhclc19fYWxsb3dlZExwU2NyaXB0SGFzaAEBRwACHSVzX19hbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAQFIAAIiJXNfX2FsbG93ZWRMcFN0YWJsZUFkZG9uU2NyaXB0SGFzaAEBSQACECVzX19zd2FwQ29udHJhY3QBAUoAAhElc19fZmFjdG9yeUNvbmZpZwEBSwACECVzX19scFRva2Vuc0xpc3QBAUwAAhYlcyVzX19wb29sX19zY3JpcHRIYXNoAQFNAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQFOAAIZJXNfX2xlZ2FjeUZhY3RvcnlDb250cmFjdAEBTwACDyVzX19sZWdhY3lQb29scwEBUAACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFRAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFSAAIQJXNfX2FkbWluUHViS2V5cwEBUwACFyVzX19hc3NldHNTdG9yZUNvbnRyYWN0AQFUAAIaJXNfX3ZvdGluZ0VtaXNzaW9uQ29udHJhY3QBAVUACQC5CQIJAMwIAgICJXMJAMwIAgILcHJpY2VBc3NldHMFA25pbAUBagEBVgACESVzX19wcmljZURlY2ltYWxzAQFXAAIMJXNfX3NodXRkb3duAQFYAAIXJXNfX25leHRJbnRlcm5hbEFzc2V0SWQBAVkBAVoJAKwCAgISJXMlc19fcG9vbFdlaWdodF9fBQFaAQJhYQIBWgJhYgkArAICCQCsAgIJAKwCAgISJXMlc19fcG9vbFdlaWdodF9fBQFaAgJfXwkApAMBBQJhYgECYWMBAmFkCQCsAgICKCVzJXMlZF9fbWFwcGluZ3NfX2ludGVybmFsMmJhc2VBc3NldElkX18JAKQDAQUCYWQBAmFlAQJhZgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhZgECYWcCAmFoAmFpCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhaAICX18FAmFpAghfX2NvbmZpZwECYWoBAmFrBAJhbAUCYWsEAmFoCAUCYWwCXzEEAmFpCAUCYWwCXzIJALkJAgkAzAgCAgYlZCVkJXMJAMwIAgkApAMBBQJhaAkAzAgCCQCkAwEFAmFpCQDMCAICGm9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkBQNuaWwFAWoBAmFtAAkAuQkCCQDMCAICAiVzCQDMCAICGm9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkBQNuaWwFAWoBAmFuAQJhbwkArAICCQCsAgICCCVzJXMlc19fBQJhbwIYX19tYXBwaW5nc19fbHBBc3NldDJQb29sAQJhcAICYXECYXIJAKwCAgkArAICCQCsAgIJAKwCAgIKJWQlZCVzJXNfXwUCYXECAl9fBQJhcgIeX19tYXBwaW5nc19fUG9vbEFzc2V0czJMcEFzc2V0AQJhcwEBWgkArAICAg4lcyVzX19zcHJlYWRfXwUBWgECYXQBAmF1CQCsAgIJAKwCAgIIJXMlcyVzX18FAmF1AiNfX21hcHBpbmdzX19wb29sQ29udHJhY3QyUG9vbEFzc2V0cwECYXYCAmFxAmFyCQCsAgIJAKwCAgkArAICCQCsAgICCiVkJWQlcyVzX18JAKQDAQUCYXECAl9fCQCkAwEFAmFyAiNfX21hcHBpbmdzX19wb29sQXNzZXRzMlBvb2xDb250cmFjdAECYXcBAmF1CQCsAgIJAKwCAgIIJXMlcyVzX18FAmF1AiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAECYXgBAmFvCQCsAgIJAKwCAgIIJXMlcyVzX18FAmFvAiBfX21hcHBpbmdzX19scEFzc2V0MlBvb2xDb250cmFjdAECYXkCAmF6AmFBCQCsAgIJAKwCAgkArAICAhQlcyVzJXNfX3d4RW1pc3Npb25fXwUCYXoCAl9fBQJhQQECYUIBAVoJAKwCAgINJXMlc19faW5GZWVfXwUBWgECYUMAAhAlc19faW5GZWVEZWZhdWx0AQJhRAEBWgkArAICAg4lcyVzX19vdXRGZWVfXwUBWgECYUUAAhElc19fb3V0RmVlRGVmYXVsdAECYUYBAmFHCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUCYUcJAKwCAgIVTm8gZGF0YSBmb3IgdGhpcy5rZXk9BQJhRwECYUgBAmFHCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJsIAgUEdGhpcwUCYUcJAKwCAgIVTm8gZGF0YSBmb3IgdGhpcy5rZXk9BQJhRwECYUkBAmFHCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwUCYUcJAKwCAgIVTm8gZGF0YSBmb3IgdGhpcy5rZXk9BQJhRwACYUoAAQACYUsAAgACYUwAAwACYU0ABAACYU4ABQACYU8ABgACYVAABwACYVEACAACYVIACQACYVMACgACYVQACwECYVUBAmFWCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFWBQJhSwECYVcBAmFWCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFWBQJhTgECYVgBAmFWCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFWBQJhSgECYVkBAmFWCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFWBQJhUwECYVoABAJiYQkAoggBCQEBVQADCQABAgUCYmECBlN0cmluZwQCYmIFAmJhAwkAAAIJALECAQUCYmIAAAUDbmlsCQC1CQIFAmJiBQFqBQNuaWwBAmJjAAQCYmEJAKIIAQkBAVAAAwkAAQIFAmJhAgZTdHJpbmcEAmJiBQJiYQkA2QQBBQJiYgMJAAECBQJiYQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJiZAAEAmJhCQCiCAEJAQFRAAMJAAECBQJiYQIGU3RyaW5nBAJiYgUCYmEJANkEAQUCYmIDCQABAgUCYmECBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACYmUJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAACYmYJAAIBAg9UZXN0IGVycm9yIGhlcmUBAmJnAQJiaAMJAAACCAUCYmgGY2FsbGVyBQR0aGlzBgUCYmUBAmJpAQJiaAQCYmEJAQJiYwADCQABAgUCYmECCkJ5dGVWZWN0b3IEAmJqBQJiYQMJAAACCAUCYmgPY2FsbGVyUHVibGljS2V5BQJiagYFAmJlAwkAAQIFAmJhAgRVbml0CQECYmcBBQJiaAkAAgECC01hdGNoIGVycm9yAQJiawsCYmwCYm0CYm4CYm8CYnACYnECYnICYnMCYnQCYnUCYnYJALkJAgkAzAgCAhYlcyVzJXMlcyVzJXMlcyVzJXMlcyVzCQDMCAIFAmJsCQDMCAIFAmJtCQDMCAIFAmJuCQDMCAIFAmJvCQDMCAIFAmJwCQDMCAIFAmJxCQDMCAIFAmJyCQDMCAIFAmJzCQDMCAIFAmJ0CQDMCAIFAmJ1CQDMCAIFAmJ2BQNuaWwFAWoBAmJ3BwJibAJibQJibgJibwJicAJicQJicgkAuQkCCQDMCAICDCVzJXMlcyVzJXMlcwkAzAgCBQJibAkAzAgCBQJibQkAzAgCBQJibgkAzAgCBQJibwkAzAgCBQJicAkAzAgCBQJicQkAzAgCBQJicgUDbmlsBQFqAQJieAsBWgJieQJiegJiQQJiQgJiQwJiRAJiRQJiRgJiRwJiSAkAuQkCCQDMCAICFiVzJWQlcyVzJXMlZCVkJWQlZCVkJXMJAMwIAgUBWgkAzAgCBQJieQkAzAgCBQJiegkAzAgCBQJiQQkAzAgCBQJiQgkAzAgCCQCkAwEFAmJDCQDMCAIJAKQDAQUCYkQJAMwIAgkApAMBBQJiRQkAzAgCCQCkAwEFAmJGCQDMCAIJAKQDAQUCYkcJAMwIAgUCYkgFA25pbAUBagECYkkCAmJKAmJLCQC5CQIJAMwIAgIEJWQlZAkAzAgCCQCkAwEFAmJKCQDMCAIJAKQDAQUCYksFA25pbAUBagECYkwBAVoEAmJNCQC1CQIJAQJhRgEJAQJhdAEFAVoFAWoEAmFoCQCRAwIFAmJNAAEEAmFpCQCRAwIFAmJNAAIJALUJAgkBAmFGAQkBAmFnAgUCYWgFAmFpBQFqAQJiTgICYk8CYlAEAmJRCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJhZQEFAmJPAAAEAmJSCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFYAAAABAJiUwMJAAACBQJiUQAABAJiVAkAZAIFAmJSBQJiUAkAlQoDBQJiVAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgABQJiVAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFlAQUCYk8FAmJUCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYwEFAmJUBQJiTwUDbmlsBgkAlQoDBQJiUQUDbmlsBwUCYlMBAmJVAQJiaAQCYlYJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEBUgAFAWsFAWoDCQEPY29udGFpbnNFbGVtZW50AgUCYlYJANgEAQgFAmJoD2NhbGxlclB1YmxpY0tleQYEAmJXCQECYmkBBQJiaAMJAAACBQJiVwUCYlcGCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJiWAMCYUcCYlkCYloJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYUcJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYlkFAmJaGwJiaAEXZ2V0U3dhcENvbnRyYWN0UkVBRE9OTFkACQCUCgIFA25pbAkBAmFGAQkBAUkAAmJoASBnZXRMcEFzc2V0RnJvbVBvb2xBc3NldHNSRUFET05MWQICY2ECY2IDAwkAAAIFAmNhAiw4TFFXOGY3UDVkNVBaTTdHdFpFQmdhcVJQR1N6UzNEZlB1aVhyVVJKNEFKUwkAAAIFAmNiAgVXQVZFUwcJAJQKAgUDbmlsBQR1bml0BAJjYwkBBXZhbHVlAQkAmggCBQR0aGlzCQECYWUBBQJjYQQCY2QJAQV2YWx1ZQEJAJoIAgUEdGhpcwkBAmFlAQUCY2IEAmNlCQCdCAIFBHRoaXMJAQJhcAIJAKQDAQUCY2MJAKQDAQUCY2QEAmNmAwkAAAIFAmNlBQR1bml0BQR1bml0CQCwAgIJAQV2YWx1ZQEFAmNlAAQJAJQKAgUDbmlsBQJjZgJiaAEhZ2V0UG9vbEFkZHJlc3NGcm9tTHBBc3NldFJFQURPTkxZAQJjZwkAlAoCBQNuaWwJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBAmF4AQUCY2cCAAJiaAELY29uc3RydWN0b3IIAmNoAmNpAmJuAmJvAmJwAmJxAmNqAmNrBAJjbAkBAmJpAQUCYmgDCQAAAgUCY2wFAmNsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFKAAkBAmJ3BwUCY2gFAmNpBQJibgUCYm8FAmJwBQJicQUCY2oJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAAUCY2sFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiaAENY29uc3RydWN0b3JWMgECY20EAmNsCQECYmkBBQJiaAMJAAACBQJjbAUCY2wEAmNuCQCnCAEJANkEAQUCY20DCQAAAgUCY24FAmNuCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFNAAUCY20FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiaAENY29uc3RydWN0b3JWMwQCYnMCYnQCYnUCYnYEAmNsCQECYmkBBQJiaAMJAAACBQJjbAUCY2wEAmFWCQC1CQIJAQJhRgEJAQFKAAUBagkAzAgCCQELU3RyaW5nRW50cnkCCQEBSgAJAQJiawsJAJEDAgUCYVYAAQkAkQMCBQJhVgACCQCRAwIFAmFWAAMJAJEDAgUCYVYABAkAkQMCBQJhVgAFCQCRAwIFAmFWAAYJAJEDAgUCYVYABwUCYnMFAmJ0BQJidQUCYnYFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiaAENY29uc3RydWN0b3JWNAICY28CY3AEAmNsCQECYmkBBQJiaAMJAAACBQJjbAUCY2wJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAU4ABQJjbwkAzAgCCQELU3RyaW5nRW50cnkCCQEBTwAJALkJAgUCY3AFAWoFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiaAENY29uc3RydWN0b3JWNQECY3EEAmNsCQECYmkBBQJiaAMJAAACBQJjbAUCY2wJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVMABQJjcQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJoAQ1jb25zdHJ1Y3RvclY2AgJjcgJjcwQCY3QJAMwIAgkBAmJpAQUCYmgJAMwIAgMJAQIhPQIJAKYIAQUCY3IFBHVuaXQGAihpbnZhbGlkIHZvdGluZyBlbWlzc2lvbiBjb250cmFjdCBhZGRyZXNzBQNuaWwDCQAAAgUCY3QFAmN0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFUAAUCY3IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVUACQC5CQIFAmNzBQFqBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYmgBCnNldE1hbmFnZXIBAmN1BAJjbAkBAmJpAQUCYmgDCQAAAgUCY2wFAmNsBAJjdgkA2QQBBQJjdQMJAAACBQJjdgUCY3YJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVEABQJjdQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJoAQ5jb25maXJtTWFuYWdlcgAEAmN3CQECYmQABAJjeAMJAQlpc0RlZmluZWQBBQJjdwYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCY3gFAmN4BAJjeQMJAAACCAUCYmgPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJjdwYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCY3kFAmN5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFQAAkA2AQBCQEFdmFsdWUBBQJjdwkAzAgCCQELRGVsZXRlRW50cnkBCQEBUQAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiaAEJc2V0QWRtaW5zAQJjegQCY2wJAQJiaQEFAmJoAwkAAAIFAmNsBQJjbAkAzAgCCQELU3RyaW5nRW50cnkCCQEBUgAJALkJAgUCY3oFAWoFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiaAEPYWN0aXZhdGVOZXdQb29sCAFaAmJBAmJCAmNBAmNCAmNDAmJIAmNEBAJjbAkBAmJVAQUCYmgDCQAAAgUCY2wFAmNsAwkBCWlzRGVmaW5lZAEJAKIIAQkBAmF0AQUBWgkAAgEJAKwCAgkArAICAg1Qb29sIGFkZHJlc3MgBQFaAhQgYWxyZWFkeSByZWdpc3RlcmVkLgQCY0UJAQJiTgIFAmJBAAEEAmNGCAUCY0UCXzEEAmNHCQECYk4CBQJiQgMIBQJjRQJfMwACAAEEAmNICAUCY0cCXzEEAmNJCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAPEHAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUBWgkArAICAilObyBzY3JpcHQgaGFzIGJlZW4gZm91bmQgb24gcG9vbCBhY2NvdW50IAUBWgQCY0oJARFAZXh0ck5hdGl2ZSgxMDU3KQEJAQFMAAQCY0sJAJ0IAgUEdGhpcwkBAmFnAgkApAMBBQJjRgkApAMBBQJjSAMJAQlpc0RlZmluZWQBBQJjSwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIFUG9vbCAFAmJBAgEvBQJiQgIcIGhhcyBhbHJlYWR5IGJlZW4gYWN0aXZhdGVkLgQCY0wJAQV2YWx1ZQEJAJ0IAgUEdGhpcwkBAmFnAgkApAMBBQJjRgkApAMBBQJjSAQCY00DCQAAAgUCYkECBVdBVkVTBQFpCQBsBgAKAAAICQEFdmFsdWUBCQDsBwEJANkEAQUCYkEIZGVjaW1hbHMAAAAABQRET1dOBAJjTgMJAAACBQJiQgIFV0FWRVMFAWkJAGwGAAoAAAgJAQV2YWx1ZQEJAOwHAQkA2QQBBQJiQghkZWNpbWFscwAAAAAFBERPV04EAmNPCQDCCAUFAmNBBQJjQgABAAgGBAJiegkAuAgBBQJjTwQCY1AJANgEAQUCYnoEAmNRCQD8BwQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAVoCCGFjdGl2YXRlCQDMCAIFAmJBCQDMCAIFAmJCBQNuaWwFA25pbAMJAAACBQJjUQUCY1EDCQECIT0CBQJjUQIHc3VjY2VzcwkAAgECI1Bvb2wgaW5pdGlhbGlzYXRpb24gZXJyb3IgaGFwcGVuZWQuBAJjcQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFGAQkBAVMABAJjUgkA/AcEBQJjcQIOY3JlYXRlT3JVcGRhdGUJAMwIAgUCY1AJAMwIAgUCY0EJAMwIAgcFA25pbAUDbmlsAwkAAAIFAmNSBQJjUgQCY1MJAPwHBAUCY3ECCGFkZExhYmVsCQDMCAIFAmNQCQDMCAIFAWcFA25pbAUDbmlsAwkAAAIFAmNTBQJjUwQCY1QJAPwHBAUCY3ECB3NldExvZ28JAMwIAgUCY1AJAMwIAgUCY0QFA25pbAUDbmlsAwkAAAIFAmNUBQJjVAQCY1UJAPwHBAUCY3ECDWFkZEFzc2V0c0xpbmsJAMwIAgUCYkEJAMwIAgUCYkIJAMwIAgUCY1AFA25pbAUDbmlsAwkAAAIFAmNVBQJjVQQCY1YJAPwHBAUCY3ECGGluY3JlYXNlQXNzZXRQb29sc051bWJlcgkAzAgCBQJiQQUDbmlsBQNuaWwDCQAAAgUCY1YFAmNWCQCUCgIJAM4IAgkAzggCCAUCY0UCXzIIBQJjRwJfMgkAzAgCBQJjTwkAzAgCCQEEQnVybgIFAmJ6AAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFnAgkApAMBBQJjRgkApAMBBQJjSAkBAmJ4CwUBWgkApAMBBQFsBQJjUAUCYkEFAmJCBQJjTQUCY04FAmNGBQJjSAUBaQUCYkgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFuAQUCY1AJAQJiSQIFAmNGBQJjSAkAzAgCCQELU3RyaW5nRW50cnkCCQECYXACCQCkAwEFAmNGCQCkAwEFAmNICQCsAgICBCVzX18FAmNQCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhdAEFAVoJAQJiSQIFAmNGBQJjSAkAzAgCCQELU3RyaW5nRW50cnkCCQECYXYCBQJjRgUCY0gFAVoJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmF4AQUCY1AFAVoJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmF3AQUBWgUCY1AJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFZAQUBWgUCY0MJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhcwEFAVoFAWgFA25pbAUCY1AJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYmgBCm1hbmFnZVBvb2wCAVoCY1cEAmNsCQECYmkBBQJiaAMJAAACBQJjbAUCY2wEAmNLCQECYkwBBQFaBAJieQkAkQMCBQJjSwUBdAQCY1AJAJEDAgUCY0sFAXUEAmJBCQCRAwIFAmNLBQF2BAJiQgkAkQMCBQJjSwUBdwQCY00JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjSwUBeAQCY04JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjSwUBeQQCY0YJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjSwUBegQCY0gJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjSwUBQQQCY1gJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjSwUBQgQCYkgJAJEDAgUCY0sFAUMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFnAgkApAMBBQJjRgkApAMBBQJjSAkBAmJ4CwUBWgkApAMBBQJjVwUCY1AFAmJBBQJiQgUCY00FAmNOBQJjRgUCY0gFAmNYBQJiSAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJoAQRlbWl0AQJjWQQCY1oIBQJiaAZjYWxsZXIEAmRhCAUCYmgMb3JpZ2luQ2FsbGVyBAJkYgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJAQJhdwEJAKUIAQUCY1oCHUludmFsaWQgTFAgYWRkcmVzcyBjYWxsZWQgbWUuBAJkYwkA2QQBBQJkYgQCY3AJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEBTwAFAWsFAWoEAmNvCQERQGV4dHJOYXRpdmUoMTA2MikBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBAU4AAihMZWdhY3kgZmFjdG9yeSBjb250cmFjdCBkb2VzIG5vdCBleGlzdHMuAwkAZwIAAAUCY1kFA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQJjcAkApQgBBQJjWgkAlAoCBQNuaWwFAmNvCQCUCgIJAMwIAgkBB1JlaXNzdWUDBQJkYwUCY1kGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJiaAZjYWxsZXIFAmNZBQJkYwUDbmlsAgdzdWNjZXNzAmJoAQRidXJuAQJkZAQCY1oIBQJiaAZjYWxsZXIEAmRhCAUCYmgMb3JpZ2luQ2FsbGVyBAJkZQkBBXZhbHVlAQkAkQMCCAUCYmgIcGF5bWVudHMAAAQCZGYJAQV2YWx1ZQEIBQJkZQZhbW91bnQEAmRnCQDYBAEJAQV2YWx1ZQEIBQJkZQdhc3NldElkBAJkaAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJAQJhdwEJAKUIAQUCY1oCHUludmFsaWQgTFAgYWRkcmVzcyBjYWxsZWQgbWUuAwkBAiE9AgUCZGcFAmRoCQACAQIVSW52YWxpZCBhc3NldCBwYXNzZWQuAwkBAiE9AgUCZGQFAmRmCQACAQIWSW52YWxpZCBhbW91bnQgcGFzc2VkLgQCZGMJANkEAQUCZGgJAJQKAgkAzAgCCQEEQnVybgIFAmRjBQJkZAUDbmlsAgdzdWNjZXNzAmJoAQxtb2RpZnlXZWlnaHQCAmJ6AmRpBAJjbAMJAAACCQDYBAEICAUCYmgGY2FsbGVyBWJ5dGVzCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQFUAAIABgkBAmJpAQUCYmgDCQAAAgUCY2wFAmNsBAJhdQkBAmFGAQkBAmF4AQUCYnoEAmRqCQEBWQEFAmF1BAJkawkBAVkBBQFmBAJkbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQJkawAABAJjQwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQJkagAABAJkbQUCZGkEAmFWCQC1CQIJAQJhRgEJAQFKAAUBagQCY2gJAQJhWAEFAmFWBAJkbgkA/AcEBQJjaAIOb25Nb2RpZnlXZWlnaHQJAMwIAgUCYnoJAMwIAgUCYXUFA25pbAUDbmlsAwkAAAIFAmRuBQJkbgQCZG8DCQAAAgUCZGwAAAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJkawAABQNuaWwEAmRwCQECYWECBQJhdQAABAJkcQkAnwgBBQJkcAQCZHIDCQAAAgUCZHEFBHVuaXQFA25pbAkAzAgCCQELRGVsZXRlRW50cnkBBQJkcAUDbmlsCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZGoFAmRtBQNuaWwFAmRvBQJkcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiaAENbW9kaWZ5V2VpZ2h0cwQCZHMCZHQCZHUCZHYEAmNsCQECYmkBBQJiaAMJAAACBQJjbAUCY2wEAmR3CQBpAgkAaAIABQUBZQBkBAJkeAkAaQIJAGgCAAUFAWUAZAQCZHkJAGkCCQBoAgAFBQFlAGQEAmFWCQC1CQIJAQJhRgEJAQFKAAUBagQCZHoJAQJhWAEFAmFWBAJkQQkBAmFZAQUCYVYEAmRCCQEBWQEFAmRzBAJkQwkBAVkBBQJkdAQCZEQJAQFZAQUCZHUEAmRFCQEBWQEFAmR2BAJkRgkBAmFJAQUCZEIEAmRHCQECYUkBBQJkQwQCZEgJAGUCBQJkRgUCZHkEAmRJCQBlAgUCZEcFAmR5AwkAZwIAAAUCZEgJAAIBCQCsAgICFmludmFsaWQgYnRjV2VpZ2h0TmV3OiAJAKQDAQUCZEgDCQBnAgAABQJkSQkAAgEJAKwCAgIWaW52YWxpZCBldGhXZWlnaHROZXc6IAkApAMBBQJkSQQCZEoJAQJhRgEJAQJhdwEFAmRzBAJkSwkBAmFGAQkBAmF3AQUCZHQEAmRMCQECYUYBCQECYXcBBQJkdQQCZE0JAQJhRgEJAQJhdwEFAmR2BAJkTgkA/AcEBQJkegIOb25Nb2RpZnlXZWlnaHQJAMwIAgUCZEoJAMwIAgUCZHMFA25pbAUDbmlsAwkAAAIFAmROBQJkTgQCZE8JAPwHBAUCZHoCDm9uTW9kaWZ5V2VpZ2h0CQDMCAIFAmRLCQDMCAIFAmR0BQNuaWwFA25pbAMJAAACBQJkTwUCZE8EAmRQCQD8BwQFAmR6Ag5vbk1vZGlmeVdlaWdodAkAzAgCBQJkTAkAzAgCBQJkdQUDbmlsBQNuaWwDCQAAAgUCZFAFAmRQBAJkUQkA/AcEBQJkegIOb25Nb2RpZnlXZWlnaHQJAMwIAgUCZE0JAMwIAgUCZHYFA25pbAUDbmlsAwkAAAIFAmRRBQJkUQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZEIFAmRICQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJkQwUCZEkJAMwIAgkBDEludGVnZXJFbnRyeQIFAmREBQJkdwkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZEUFAmR4CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWECBQJkcwAABQJkRgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFhAgUCZHQAAAUCZEcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYQIFAmR1AAAFAmR3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWECBQJkdgAABQJkeAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJoARhjaGVja1d4RW1pc3Npb25Qb29sTGFiZWwCAmF6AmFBBAJkUgQCYmEJAKAIAQkBAmF5AgUCYXoFAmFBAwkAAQIFAmJhAgdCb29sZWFuBAJkUwUCYmEFAmRTBwkAlAoCBQNuaWwFAmRSAmJoARZzZXRXeEVtaXNzaW9uUG9vbExhYmVsAgJhegJhQQQCY2wJAQJiVQEFAmJoAwkAAAIFAmNsBQJjbAkAlAoCCQDMCAIJAQxCb29sZWFuRW50cnkCCQECYXkCBQJhegUCYUEGBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYmgBGWRlbGV0ZVd4RW1pc3Npb25Qb29sTGFiZWwCAmF6AmFBBAJjbAMJAQJiZwEFAmJoBgkBAmJVAQUCYmgDCQAAAgUCY2wFAmNsCQCUCgIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmF5AgUCYXoFAmFBBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYmgBEm9uVmVyaWZpY2F0aW9uTG9zcwECZFQEAmNsAwkAAAIJANgEAQgIBQJiaAZjYWxsZXIFYnl0ZXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBAVMAAgAGCQECYmkBBQJiaAMJAAACBQJjbAUCY2wEAmNzCQECYVoABAJkVQMJAGYCCQCQAwEFAmNzAAAGCQACAQIUaW52YWxpZCBwcmljZSBhc3NldHMDCQAAAgUCZFUFAmRVCgECZFYCAmRXAmRYBAJkWQkA/AcEBQR0aGlzAhlkZWxldGVXeEVtaXNzaW9uUG9vbExhYmVsCQDMCAIFAmRUCQDMCAIFAmRYBQNuaWwFA25pbAMJAAACBQJkWQUCZFkFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAmRaCgACZWEFAmNzCgACZWIJAJADAQUCZWEKAAJlYwUEdW5pdAoBAmVkAgJlZQJlZgMJAGcCBQJlZgUCZWIFAmVlCQECZFYCBQJlZQkAkQMCBQJlYQUCZWYKAQJlZwICZWUCZWYDCQBnAgUCZWYFAmViBQJlZQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDEJAQJlZwIJAQJlZAIFAmVjAAAAAQMJAAACBQJkWgUCZFoJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJoAShpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZAQFaBAJjSwkBAmJMAQUBWgQCYWsJAJQKAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNLBQF6CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY0sFAUEEAmVoCQELdmFsdWVPckVsc2UCCQCgCAEJAQJhagEFAmFrBwQCZWkJAQt2YWx1ZU9yRWxzZQIJAKAIAQkBAmFtAAcJAJQKAgUDbmlsAwUCZWkGBQJlaAJiaAEQZ2V0SW5GZWVSRUFET05MWQEBWgQCZWoJAQJiWAMJAQJhQgEFAVoJAQJhQwAAAAkAlAoCBQNuaWwFAmVqAmJoARFnZXRPdXRGZWVSRUFET05MWQEBWgQCZWoJAQJiWAMJAQJhRAEFAVoJAQJhRQAJAGsDAAoFAWIAkE4JAJQKAgUDbmlsBQJlagJiaAEVZ2V0UG9vbFN0YXR1c1JFQURPTkxZAQFaBAJiTQkAtQkCCQECYUYBCQECYXQBBQFaBQFqBAJhaAkAkQMCBQJiTQABBAJhaQkAkQMCBQJiTQACBAJlawkAtQkCCQECYUYBCQECYWcCBQJhaAUCYWkFAWoJAJQKAgUDbmlsCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZWsFAXQCYmgBGGdldFBvb2xBc3NldHNCeUxwQXNzZXRJZAECY1AEAmJNCQC1CQIJAQJhRgEJAQJhbgEFAmNQBQFqBAJhaAkAkQMCBQJiTQABBAJhaQkAkQMCBQJiTQACBAJlawkAtQkCCQECYUYBCQECYWcCBQJhaAUCYWkFAWoJAJQKAgUDbmlsBQJlawECZWwBAmVtAAQCZW4EAmJhCQECYmMAAwkAAQIFAmJhAgpCeXRlVmVjdG9yBAJiagUCYmEFAmJqAwkAAQIFAmJhAgRVbml0CAUCZWwPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAmVsCWJvZHlCeXRlcwkAkQMCCAUCZWwGcHJvb2ZzAAAFAmVuzyGNNQ==", "height": 2450613, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9HajWY2gqWuyC1i3pCZYg4QDe7ijQpPX36NbWtEhxj6V Next: RfVvRpPYsqrkmTxBW8jA1ZTLYNMDsUszYsKCKXErxSj Diff:
OldNewDifferences
343343
344344
345345 @Callable(bh)
346-func getLpAssetFromPoolAssetsREADONLY (ca,cb) = {
347- let cc = value(getInteger(this, ae(ca)))
348- let cd = value(getInteger(this, ae(cb)))
349- let ce = getString(this, ap(toString(cc), toString(cd)))
350- let cf = if ((ce == unit))
351- then unit
352- else drop(value(ce), 4)
353- $Tuple2(nil, cf)
354- }
346+func getLpAssetFromPoolAssetsREADONLY (ca,cb) = if (if ((ca == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
347+ then (cb == "WAVES")
348+ else false)
349+ then $Tuple2(nil, unit)
350+ else {
351+ let cc = value(getInteger(this, ae(ca)))
352+ let cd = value(getInteger(this, ae(cb)))
353+ let ce = getString(this, ap(toString(cc), toString(cd)))
354+ let cf = if ((ce == unit))
355+ then unit
356+ else drop(value(ce), 4)
357+ $Tuple2(nil, cf)
358+ }
355359
356360
357361
814818 }
815819
816820
821+
822+@Callable(bh)
823+func getPoolAssetsByLpAssetId (cP) = {
824+ let bM = split(aF(an(cP)), j)
825+ let ah = bM[1]
826+ let ai = bM[2]
827+ let ek = split(aF(ag(ah, ai)), j)
828+ $Tuple2(nil, ek)
829+ }
830+
831+
817832 @Verifier(el)
818833 func em () = {
819834 let en = {
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 = 18
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = b
1313
1414 let f = "GWXvirtualPOOL"
1515
1616 let g = "POOLS_LP"
1717
1818 let h = 2000000
1919
2020 let i = ((100 * 1000) * 1000)
2121
2222 let j = "__"
2323
2424 let k = ""
2525
2626 let l = 1
2727
2828 let m = 2
2929
3030 let n = 3
3131
3232 let o = 4
3333
3434 let p = 1
3535
3636 let q = 2
3737
3838 let r = 3
3939
4040 let s = 1
4141
4242 let t = 2
4343
4444 let u = 3
4545
4646 let v = 4
4747
4848 let w = 5
4949
5050 let x = 6
5151
5252 let y = 7
5353
5454 let z = 8
5555
5656 let A = 9
5757
5858 let B = 10
5959
6060 let C = 11
6161
6262 let D = "WX_EMISSION"
6363
6464 let E = [D]
6565
6666 func F () = "%s__allowedLpScriptHash"
6767
6868
6969 func G () = "%s__allowedLpStableScriptHash"
7070
7171
7272 func H () = "%s__allowedLpStableAddonScriptHash"
7373
7474
7575 func I () = "%s__swapContract"
7676
7777
7878 func J () = "%s__factoryConfig"
7979
8080
8181 func K () = "%s__lpTokensList"
8282
8383
8484 func L () = "%s%s__pool__scriptHash"
8585
8686
8787 func M () = "%s%s__matcher__publicKey"
8888
8989
9090 func N () = "%s__legacyFactoryContract"
9191
9292
9393 func O () = "%s__legacyPools"
9494
9595
9696 func P () = "%s__managerPublicKey"
9797
9898
9999 func Q () = "%s__pendingManagerPublicKey"
100100
101101
102102 func R () = "%s__adminPubKeys"
103103
104104
105105 func S () = "%s__assetsStoreContract"
106106
107107
108108 func T () = "%s__votingEmissionContract"
109109
110110
111111 func U () = makeString(["%s", "priceAssets"], j)
112112
113113
114114 func V () = "%s__priceDecimals"
115115
116116
117117 func W () = "%s__shutdown"
118118
119119
120120 func X () = "%s__nextInternalAssetId"
121121
122122
123123 func Y (Z) = ("%s%s__poolWeight__" + Z)
124124
125125
126126 func aa (Z,ab) = ((("%s%s__poolWeight__" + Z) + "__") + toString(ab))
127127
128128
129129 func ac (ad) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(ad))
130130
131131
132132 func ae (af) = ("%s%s%s__mappings__baseAsset2internalId__" + af)
133133
134134
135135 func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
136136
137137
138138 func aj (ak) = {
139139 let al = ak
140140 let ah = al._1
141141 let ai = al._2
142142 makeString(["%d%d%s", toString(ah), toString(ai), "oneTokenOperationsDisabled"], j)
143143 }
144144
145145
146146 func am () = makeString(["%s", "oneTokenOperationsDisabled"], j)
147147
148148
149149 func an (ao) = (("%s%s%s__" + ao) + "__mappings__lpAsset2Pool")
150150
151151
152152 func ap (aq,ar) = (((("%d%d%s%s__" + aq) + "__") + ar) + "__mappings__PoolAssets2LpAsset")
153153
154154
155155 func as (Z) = ("%s%s__spread__" + Z)
156156
157157
158158 func at (au) = (("%s%s%s__" + au) + "__mappings__poolContract2PoolAssets")
159159
160160
161161 func av (aq,ar) = (((("%d%d%s%s__" + toString(aq)) + "__") + toString(ar)) + "__mappings__poolAssets2PoolContract")
162162
163163
164164 func aw (au) = (("%s%s%s__" + au) + "__mappings__poolContract2LpAsset")
165165
166166
167167 func ax (ao) = (("%s%s%s__" + ao) + "__mappings__lpAsset2PoolContract")
168168
169169
170170 func ay (az,aA) = ((("%s%s%s__wxEmission__" + az) + "__") + aA)
171171
172172
173173 func aB (Z) = ("%s%s__inFee__" + Z)
174174
175175
176176 func aC () = "%s__inFeeDefault"
177177
178178
179179 func aD (Z) = ("%s%s__outFee__" + Z)
180180
181181
182182 func aE () = "%s__outFeeDefault"
183183
184184
185185 func aF (aG) = valueOrErrorMessage(getString(this, aG), ("No data for this.key=" + aG))
186186
187187
188188 func aH (aG) = valueOrErrorMessage(getBoolean(this, aG), ("No data for this.key=" + aG))
189189
190190
191191 func aI (aG) = valueOrErrorMessage(getInteger(this, aG), ("No data for this.key=" + aG))
192192
193193
194194 let aJ = 1
195195
196196 let aK = 2
197197
198198 let aL = 3
199199
200200 let aM = 4
201201
202202 let aN = 5
203203
204204 let aO = 6
205205
206206 let aP = 7
207207
208208 let aQ = 8
209209
210210 let aR = 9
211211
212212 let aS = 10
213213
214214 let aT = 11
215215
216216 func aU (aV) = addressFromStringValue(aV[aK])
217217
218218
219219 func aW (aV) = addressFromStringValue(aV[aN])
220220
221221
222222 func aX (aV) = addressFromStringValue(aV[aJ])
223223
224224
225225 func aY (aV) = addressFromStringValue(aV[aS])
226226
227227
228228 func aZ () = {
229229 let ba = getString(U())
230230 if ($isInstanceOf(ba, "String"))
231231 then {
232232 let bb = ba
233233 if ((size(bb) == 0))
234234 then nil
235235 else split(bb, j)
236236 }
237237 else nil
238238 }
239239
240240
241241 func bc () = {
242242 let ba = getString(P())
243243 if ($isInstanceOf(ba, "String"))
244244 then {
245245 let bb = ba
246246 fromBase58String(bb)
247247 }
248248 else if ($isInstanceOf(ba, "Unit"))
249249 then unit
250250 else throw("Match error")
251251 }
252252
253253
254254 func bd () = {
255255 let ba = getString(Q())
256256 if ($isInstanceOf(ba, "String"))
257257 then {
258258 let bb = ba
259259 fromBase58String(bb)
260260 }
261261 else if ($isInstanceOf(ba, "Unit"))
262262 then unit
263263 else throw("Match error")
264264 }
265265
266266
267267 let be = throw("Permission denied")
268268
269269 let bf = throw("Test error here")
270270
271271 func bg (bh) = if ((bh.caller == this))
272272 then true
273273 else be
274274
275275
276276 func bi (bh) = {
277277 let ba = bc()
278278 if ($isInstanceOf(ba, "ByteVector"))
279279 then {
280280 let bj = ba
281281 if ((bh.callerPublicKey == bj))
282282 then true
283283 else be
284284 }
285285 else if ($isInstanceOf(ba, "Unit"))
286286 then bg(bh)
287287 else throw("Match error")
288288 }
289289
290290
291291 func bk (bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv) = makeString(["%s%s%s%s%s%s%s%s%s%s%s", bl, bm, bn, bo, bp, bq, br, bs, bt, bu, bv], j)
292292
293293
294294 func bw (bl,bm,bn,bo,bp,bq,br) = makeString(["%s%s%s%s%s%s", bl, bm, bn, bo, bp, bq, br], j)
295295
296296
297297 func bx (Z,by,bz,bA,bB,bC,bD,bE,bF,bG,bH) = makeString(["%s%d%s%s%s%d%d%d%d%d%s", Z, by, bz, bA, bB, toString(bC), toString(bD), toString(bE), toString(bF), toString(bG), bH], j)
298298
299299
300300 func bI (bJ,bK) = makeString(["%d%d", toString(bJ), toString(bK)], j)
301301
302302
303303 func bL (Z) = {
304304 let bM = split(aF(at(Z)), j)
305305 let ah = bM[1]
306306 let ai = bM[2]
307307 split(aF(ag(ah, ai)), j)
308308 }
309309
310310
311311 func bN (bO,bP) = {
312312 let bQ = valueOrElse(getInteger(this, ae(bO)), 0)
313313 let bR = valueOrElse(getInteger(this, X()), 0)
314314 let bS = if ((bQ == 0))
315315 then {
316316 let bT = (bR + bP)
317317 $Tuple3(bT, [IntegerEntry(X(), bT), IntegerEntry(ae(bO), bT), StringEntry(ac(bT), bO)], true)
318318 }
319319 else $Tuple3(bQ, nil, false)
320320 bS
321321 }
322322
323323
324324 func bU (bh) = {
325325 let bV = split(valueOrElse(getString(R()), k), j)
326326 if (containsElement(bV, toBase58String(bh.callerPublicKey)))
327327 then true
328328 else {
329329 let bW = bi(bh)
330330 if ((bW == bW))
331331 then true
332332 else throw("Strict value is not equal to itself.")
333333 }
334334 }
335335
336336
337337 func bX (aG,bY,bZ) = valueOrElse(getInteger(this, aG), valueOrElse(getInteger(this, bY), bZ))
338338
339339
340340 @Callable(bh)
341341 func getSwapContractREADONLY () = $Tuple2(nil, aF(I()))
342342
343343
344344
345345 @Callable(bh)
346-func getLpAssetFromPoolAssetsREADONLY (ca,cb) = {
347- let cc = value(getInteger(this, ae(ca)))
348- let cd = value(getInteger(this, ae(cb)))
349- let ce = getString(this, ap(toString(cc), toString(cd)))
350- let cf = if ((ce == unit))
351- then unit
352- else drop(value(ce), 4)
353- $Tuple2(nil, cf)
354- }
346+func getLpAssetFromPoolAssetsREADONLY (ca,cb) = if (if ((ca == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
347+ then (cb == "WAVES")
348+ else false)
349+ then $Tuple2(nil, unit)
350+ else {
351+ let cc = value(getInteger(this, ae(ca)))
352+ let cd = value(getInteger(this, ae(cb)))
353+ let ce = getString(this, ap(toString(cc), toString(cd)))
354+ let cf = if ((ce == unit))
355+ then unit
356+ else drop(value(ce), 4)
357+ $Tuple2(nil, cf)
358+ }
355359
356360
357361
358362 @Callable(bh)
359363 func getPoolAddressFromLpAssetREADONLY (cg) = $Tuple2(nil, valueOrElse(getString(this, ax(cg)), ""))
360364
361365
362366
363367 @Callable(bh)
364368 func constructor (ch,ci,bn,bo,bp,bq,cj,ck) = {
365369 let cl = bi(bh)
366370 if ((cl == cl))
367371 then [StringEntry(J(), bw(ch, ci, bn, bo, bp, bq, cj)), IntegerEntry(V(), ck)]
368372 else throw("Strict value is not equal to itself.")
369373 }
370374
371375
372376
373377 @Callable(bh)
374378 func constructorV2 (cm) = {
375379 let cl = bi(bh)
376380 if ((cl == cl))
377381 then {
378382 let cn = addressFromPublicKey(fromBase58String(cm))
379383 if ((cn == cn))
380384 then [StringEntry(M(), cm)]
381385 else throw("Strict value is not equal to itself.")
382386 }
383387 else throw("Strict value is not equal to itself.")
384388 }
385389
386390
387391
388392 @Callable(bh)
389393 func constructorV3 (bs,bt,bu,bv) = {
390394 let cl = bi(bh)
391395 if ((cl == cl))
392396 then {
393397 let aV = split(aF(J()), j)
394398 [StringEntry(J(), bk(aV[1], aV[2], aV[3], aV[4], aV[5], aV[6], aV[7], bs, bt, bu, bv))]
395399 }
396400 else throw("Strict value is not equal to itself.")
397401 }
398402
399403
400404
401405 @Callable(bh)
402406 func constructorV4 (co,cp) = {
403407 let cl = bi(bh)
404408 if ((cl == cl))
405409 then [StringEntry(N(), co), StringEntry(O(), makeString(cp, j))]
406410 else throw("Strict value is not equal to itself.")
407411 }
408412
409413
410414
411415 @Callable(bh)
412416 func constructorV5 (cq) = {
413417 let cl = bi(bh)
414418 if ((cl == cl))
415419 then [StringEntry(S(), cq)]
416420 else throw("Strict value is not equal to itself.")
417421 }
418422
419423
420424
421425 @Callable(bh)
422426 func constructorV6 (cr,cs) = {
423427 let ct = [bi(bh), if ((addressFromString(cr) != unit))
424428 then true
425429 else "invalid voting emission contract address"]
426430 if ((ct == ct))
427431 then [StringEntry(T(), cr), StringEntry(U(), makeString(cs, j))]
428432 else throw("Strict value is not equal to itself.")
429433 }
430434
431435
432436
433437 @Callable(bh)
434438 func setManager (cu) = {
435439 let cl = bi(bh)
436440 if ((cl == cl))
437441 then {
438442 let cv = fromBase58String(cu)
439443 if ((cv == cv))
440444 then [StringEntry(Q(), cu)]
441445 else throw("Strict value is not equal to itself.")
442446 }
443447 else throw("Strict value is not equal to itself.")
444448 }
445449
446450
447451
448452 @Callable(bh)
449453 func confirmManager () = {
450454 let cw = bd()
451455 let cx = if (isDefined(cw))
452456 then true
453457 else throw("No pending manager")
454458 if ((cx == cx))
455459 then {
456460 let cy = if ((bh.callerPublicKey == value(cw)))
457461 then true
458462 else throw("You are not pending manager")
459463 if ((cy == cy))
460464 then [StringEntry(P(), toBase58String(value(cw))), DeleteEntry(Q())]
461465 else throw("Strict value is not equal to itself.")
462466 }
463467 else throw("Strict value is not equal to itself.")
464468 }
465469
466470
467471
468472 @Callable(bh)
469473 func setAdmins (cz) = {
470474 let cl = bi(bh)
471475 if ((cl == cl))
472476 then [StringEntry(R(), makeString(cz, j))]
473477 else throw("Strict value is not equal to itself.")
474478 }
475479
476480
477481
478482 @Callable(bh)
479483 func activateNewPool (Z,bA,bB,cA,cB,cC,bH,cD) = {
480484 let cl = bU(bh)
481485 if ((cl == cl))
482486 then if (isDefined(getString(at(Z))))
483487 then throw((("Pool address " + Z) + " already registered."))
484488 else {
485489 let cE = bN(bA, 1)
486490 let cF = cE._1
487491 let cG = bN(bB, if (cE._3)
488492 then 2
489493 else 1)
490494 let cH = cG._1
491495 let cI = valueOrErrorMessage(scriptHash(addressFromStringValue(Z)), ("No script has been found on pool account " + Z))
492496 let cJ = getBinaryValue(L())
493497 let cK = getString(this, ag(toString(cF), toString(cH)))
494498 if (isDefined(cK))
495499 then throw((((("Pool " + bA) + "/") + bB) + " has already been activated."))
496500 else {
497501 let cL = value(getString(this, ag(toString(cF), toString(cH))))
498502 let cM = if ((bA == "WAVES"))
499503 then i
500504 else pow(10, 0, value(assetInfo(fromBase58String(bA))).decimals, 0, 0, DOWN)
501505 let cN = if ((bB == "WAVES"))
502506 then i
503507 else pow(10, 0, value(assetInfo(fromBase58String(bB))).decimals, 0, 0, DOWN)
504508 let cO = Issue(cA, cB, 1, 8, true)
505509 let bz = calculateAssetId(cO)
506510 let cP = toBase58String(bz)
507511 let cQ = invoke(addressFromStringValue(Z), "activate", [bA, bB], nil)
508512 if ((cQ == cQ))
509513 then if ((cQ != "success"))
510514 then throw("Pool initialisation error happened.")
511515 else {
512516 let cq = addressFromStringValue(aF(S()))
513517 let cR = invoke(cq, "createOrUpdate", [cP, cA, false], nil)
514518 if ((cR == cR))
515519 then {
516520 let cS = invoke(cq, "addLabel", [cP, g], nil)
517521 if ((cS == cS))
518522 then {
519523 let cT = invoke(cq, "setLogo", [cP, cD], nil)
520524 if ((cT == cT))
521525 then {
522526 let cU = invoke(cq, "addAssetsLink", [bA, bB, cP], nil)
523527 if ((cU == cU))
524528 then {
525529 let cV = invoke(cq, "increaseAssetPoolsNumber", [bA], nil)
526530 if ((cV == cV))
527531 then $Tuple2(((cE._2 ++ cG._2) ++ [cO, Burn(bz, 1), StringEntry(ag(toString(cF), toString(cH)), bx(Z, toString(l), cP, bA, bB, cM, cN, cF, cH, i, bH)), StringEntry(an(cP), bI(cF, cH)), StringEntry(ap(toString(cF), toString(cH)), ("%s__" + cP)), StringEntry(at(Z), bI(cF, cH)), StringEntry(av(cF, cH), Z), StringEntry(ax(cP), Z), StringEntry(aw(Z), cP), IntegerEntry(Y(Z), cC), IntegerEntry(as(Z), h)]), cP)
528532 else throw("Strict value is not equal to itself.")
529533 }
530534 else throw("Strict value is not equal to itself.")
531535 }
532536 else throw("Strict value is not equal to itself.")
533537 }
534538 else throw("Strict value is not equal to itself.")
535539 }
536540 else throw("Strict value is not equal to itself.")
537541 }
538542 else throw("Strict value is not equal to itself.")
539543 }
540544 }
541545 else throw("Strict value is not equal to itself.")
542546 }
543547
544548
545549
546550 @Callable(bh)
547551 func managePool (Z,cW) = {
548552 let cl = bi(bh)
549553 if ((cl == cl))
550554 then {
551555 let cK = bL(Z)
552556 let by = cK[t]
553557 let cP = cK[u]
554558 let bA = cK[v]
555559 let bB = cK[w]
556560 let cM = parseIntValue(cK[x])
557561 let cN = parseIntValue(cK[y])
558562 let cF = parseIntValue(cK[z])
559563 let cH = parseIntValue(cK[A])
560564 let cX = parseIntValue(cK[B])
561565 let bH = cK[C]
562566 [StringEntry(ag(toString(cF), toString(cH)), bx(Z, toString(cW), cP, bA, bB, cM, cN, cF, cH, cX, bH))]
563567 }
564568 else throw("Strict value is not equal to itself.")
565569 }
566570
567571
568572
569573 @Callable(bh)
570574 func emit (cY) = {
571575 let cZ = bh.caller
572576 let da = bh.originCaller
573577 let db = valueOrErrorMessage(getString(aw(toString(cZ))), "Invalid LP address called me.")
574578 let dc = fromBase58String(db)
575579 let cp = split(valueOrElse(getString(O()), k), j)
576580 let co = addressFromStringValue(valueOrErrorMessage(getString(N()), "Legacy factory contract does not exists."))
577581 if ((0 >= cY))
578582 then nil
579583 else if (containsElement(cp, toString(cZ)))
580584 then $Tuple2(nil, co)
581585 else $Tuple2([Reissue(dc, cY, true), ScriptTransfer(bh.caller, cY, dc)], "success")
582586 }
583587
584588
585589
586590 @Callable(bh)
587591 func burn (dd) = {
588592 let cZ = bh.caller
589593 let da = bh.originCaller
590594 let de = value(bh.payments[0])
591595 let df = value(de.amount)
592596 let dg = toBase58String(value(de.assetId))
593597 let dh = valueOrErrorMessage(getString(aw(toString(cZ))), "Invalid LP address called me.")
594598 if ((dg != dh))
595599 then throw("Invalid asset passed.")
596600 else if ((dd != df))
597601 then throw("Invalid amount passed.")
598602 else {
599603 let dc = fromBase58String(dh)
600604 $Tuple2([Burn(dc, dd)], "success")
601605 }
602606 }
603607
604608
605609
606610 @Callable(bh)
607611 func modifyWeight (bz,di) = {
608612 let cl = if ((toBase58String(bh.caller.bytes) == valueOrElse(getString(this, T()), "")))
609613 then true
610614 else bi(bh)
611615 if ((cl == cl))
612616 then {
613617 let au = aF(ax(bz))
614618 let dj = Y(au)
615619 let dk = Y(f)
616620 let dl = valueOrElse(getInteger(dk), 0)
617621 let cC = valueOrElse(getInteger(dj), 0)
618622 let dm = di
619623 let aV = split(aF(J()), j)
620624 let ch = aX(aV)
621625 let dn = invoke(ch, "onModifyWeight", [bz, au], nil)
622626 if ((dn == dn))
623627 then {
624628 let do = if ((dl == 0))
625629 then nil
626630 else [IntegerEntry(dk, 0)]
627631 let dp = aa(au, 0)
628632 let dq = getInteger(dp)
629633 let dr = if ((dq == unit))
630634 then nil
631635 else [DeleteEntry(dp)]
632636 (([IntegerEntry(dj, dm)] ++ do) ++ dr)
633637 }
634638 else throw("Strict value is not equal to itself.")
635639 }
636640 else throw("Strict value is not equal to itself.")
637641 }
638642
639643
640644
641645 @Callable(bh)
642646 func modifyWeights (ds,dt,du,dv) = {
643647 let cl = bi(bh)
644648 if ((cl == cl))
645649 then {
646650 let dw = ((5 * e) / 100)
647651 let dx = ((5 * e) / 100)
648652 let dy = ((5 * e) / 100)
649653 let aV = split(aF(J()), j)
650654 let dz = aX(aV)
651655 let dA = aY(aV)
652656 let dB = Y(ds)
653657 let dC = Y(dt)
654658 let dD = Y(du)
655659 let dE = Y(dv)
656660 let dF = aI(dB)
657661 let dG = aI(dC)
658662 let dH = (dF - dy)
659663 let dI = (dG - dy)
660664 if ((0 >= dH))
661665 then throw(("invalid btcWeightNew: " + toString(dH)))
662666 else if ((0 >= dI))
663667 then throw(("invalid ethWeightNew: " + toString(dI)))
664668 else {
665669 let dJ = aF(aw(ds))
666670 let dK = aF(aw(dt))
667671 let dL = aF(aw(du))
668672 let dM = aF(aw(dv))
669673 let dN = invoke(dz, "onModifyWeight", [dJ, ds], nil)
670674 if ((dN == dN))
671675 then {
672676 let dO = invoke(dz, "onModifyWeight", [dK, dt], nil)
673677 if ((dO == dO))
674678 then {
675679 let dP = invoke(dz, "onModifyWeight", [dL, du], nil)
676680 if ((dP == dP))
677681 then {
678682 let dQ = invoke(dz, "onModifyWeight", [dM, dv], nil)
679683 if ((dQ == dQ))
680684 then [IntegerEntry(dB, dH), IntegerEntry(dC, dI), IntegerEntry(dD, dw), IntegerEntry(dE, dx), IntegerEntry(aa(ds, 0), dF), IntegerEntry(aa(dt, 0), dG), IntegerEntry(aa(du, 0), dw), IntegerEntry(aa(dv, 0), dx)]
681685 else throw("Strict value is not equal to itself.")
682686 }
683687 else throw("Strict value is not equal to itself.")
684688 }
685689 else throw("Strict value is not equal to itself.")
686690 }
687691 else throw("Strict value is not equal to itself.")
688692 }
689693 }
690694 else throw("Strict value is not equal to itself.")
691695 }
692696
693697
694698
695699 @Callable(bh)
696700 func checkWxEmissionPoolLabel (az,aA) = {
697701 let dR = {
698702 let ba = getBoolean(ay(az, aA))
699703 if ($isInstanceOf(ba, "Boolean"))
700704 then {
701705 let dS = ba
702706 dS
703707 }
704708 else false
705709 }
706710 $Tuple2(nil, dR)
707711 }
708712
709713
710714
711715 @Callable(bh)
712716 func setWxEmissionPoolLabel (az,aA) = {
713717 let cl = bU(bh)
714718 if ((cl == cl))
715719 then $Tuple2([BooleanEntry(ay(az, aA), true)], unit)
716720 else throw("Strict value is not equal to itself.")
717721 }
718722
719723
720724
721725 @Callable(bh)
722726 func deleteWxEmissionPoolLabel (az,aA) = {
723727 let cl = if (bg(bh))
724728 then true
725729 else bU(bh)
726730 if ((cl == cl))
727731 then $Tuple2([DeleteEntry(ay(az, aA))], unit)
728732 else throw("Strict value is not equal to itself.")
729733 }
730734
731735
732736
733737 @Callable(bh)
734738 func onVerificationLoss (dT) = {
735739 let cl = if ((toBase58String(bh.caller.bytes) == valueOrElse(getString(this, S()), "")))
736740 then true
737741 else bi(bh)
738742 if ((cl == cl))
739743 then {
740744 let cs = aZ()
741745 let dU = if ((size(cs) > 0))
742746 then true
743747 else throw("invalid price assets")
744748 if ((dU == dU))
745749 then {
746750 func dV (dW,dX) = {
747751 let dY = invoke(this, "deleteWxEmissionPoolLabel", [dT, dX], nil)
748752 if ((dY == dY))
749753 then unit
750754 else throw("Strict value is not equal to itself.")
751755 }
752756
753757 let dZ = {
754758 let ea = cs
755759 let eb = size(ea)
756760 let ec = unit
757761 func ed (ee,ef) = if ((ef >= eb))
758762 then ee
759763 else dV(ee, ea[ef])
760764
761765 func eg (ee,ef) = if ((ef >= eb))
762766 then ee
763767 else throw("List size exceeds 1")
764768
765769 eg(ed(ec, 0), 1)
766770 }
767771 if ((dZ == dZ))
768772 then $Tuple2(nil, unit)
769773 else throw("Strict value is not equal to itself.")
770774 }
771775 else throw("Strict value is not equal to itself.")
772776 }
773777 else throw("Strict value is not equal to itself.")
774778 }
775779
776780
777781
778782 @Callable(bh)
779783 func isPoolOneTokenOperationsDisabledREADONLY (Z) = {
780784 let cK = bL(Z)
781785 let ak = $Tuple2(parseIntValue(cK[z]), parseIntValue(cK[A]))
782786 let eh = valueOrElse(getBoolean(aj(ak)), false)
783787 let ei = valueOrElse(getBoolean(am()), false)
784788 $Tuple2(nil, if (ei)
785789 then true
786790 else eh)
787791 }
788792
789793
790794
791795 @Callable(bh)
792796 func getInFeeREADONLY (Z) = {
793797 let ej = bX(aB(Z), aC(), 0)
794798 $Tuple2(nil, ej)
795799 }
796800
797801
798802
799803 @Callable(bh)
800804 func getOutFeeREADONLY (Z) = {
801805 let ej = bX(aD(Z), aE(), fraction(10, b, 10000))
802806 $Tuple2(nil, ej)
803807 }
804808
805809
806810
807811 @Callable(bh)
808812 func getPoolStatusREADONLY (Z) = {
809813 let bM = split(aF(at(Z)), j)
810814 let ah = bM[1]
811815 let ai = bM[2]
812816 let ek = split(aF(ag(ah, ai)), j)
813817 $Tuple2(nil, parseIntValue(ek[t]))
814818 }
815819
816820
821+
822+@Callable(bh)
823+func getPoolAssetsByLpAssetId (cP) = {
824+ let bM = split(aF(an(cP)), j)
825+ let ah = bM[1]
826+ let ai = bM[2]
827+ let ek = split(aF(ag(ah, ai)), j)
828+ $Tuple2(nil, ek)
829+ }
830+
831+
817832 @Verifier(el)
818833 func em () = {
819834 let en = {
820835 let ba = bc()
821836 if ($isInstanceOf(ba, "ByteVector"))
822837 then {
823838 let bj = ba
824839 bj
825840 }
826841 else if ($isInstanceOf(ba, "Unit"))
827842 then el.senderPublicKey
828843 else throw("Match error")
829844 }
830845 sigVerify(el.bodyBytes, el.proofs[0], en)
831846 }
832847

github/deemru/w8io/026f985 
78.46 ms