tx · 5jtFQrneKqwRi3MJA2jNMPvspWvUqk2kSGfUvLgtri7W

3PBy5csSnjgkieeF9dRTXN2AwG3SXBsVpww:  -0.01900000 Waves

2022.12.16 22:38 [3428757] smart account 3PBy5csSnjgkieeF9dRTXN2AwG3SXBsVpww > SELF 0.00000000 Waves

{ "type": 13, "id": "5jtFQrneKqwRi3MJA2jNMPvspWvUqk2kSGfUvLgtri7W", "fee": 1900000, "feeAssetId": null, "timestamp": 1671219499751, "version": 2, "chainId": 87, "sender": "3PBy5csSnjgkieeF9dRTXN2AwG3SXBsVpww", "senderPublicKey": "ACUCrsKGyXXF5qHMFHPnQRbm5dQ619jBk5r4xWgex9TE", "proofs": [ "2wVdzhoUjpiGPVRtSySvgTgQjEioazzMjyD1RuxLyhE74qN6bPuGpZ6pQFMUUUpgL237ibgB7EYrpavjKBWgBWDV" ], "script": "base64:BgJICAISAwoBARIDCgEBEgMKAQESAwoBARIDCgEBEgMKAQESAwoBARIDCgEBEgMKAQESAwoBARIDCgEBEgMKAQESAwoBARIDCgEBIgAGd3hQb29sCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUFBaV2dGTlJLSEx2TTUxcHdTOTM0QzhWWjdkMkY0WjU4ZwALdXNkbkFzc2V0SWQBILYmKcME9c5TkaQOS3UkL2SMUbH6369UKb1I0h0qsqrRABF1c2RuQXNzZXRJZFN0cmluZwIsREcyeEZrUGREd0tVb0JrekdBaFF0THBTR3pmWExpQ1lQRXplS0gyQWQyNHAAF3VzZG5XYXZlc0xQVG9rZW5Bc3NldElkASBd521uRqbHObG0riFDU2pol6qZD59bFfq8alENHEkZIAAUbm9uUm91dGluZ1B1enpsZVBvb2wJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQRHJZUEY2aXp6YTJzWFdmZnpUUEY3ZTJGY2lyMkNNcGtpAAtzdXJmQXNzZXRJZAEgktH0SuIRASv0fureIY49xfvJ8n3Oh7LtUhnwOk4kWPUAEXN1cmZBc3NldElkU3RyaW5nAixBdDhENk5GRnBoZUNidktWbmpWb2VMTDg0RW84TlpuNm92TWFueGZMYUZXTAAYbm9uUm91dGluZ1B1enpsZVN1cmZQb29sCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUDdyOTN2WEh1dXNhZ2VOSlZHd3pxYXozV01vdEF1NDlZegAMc3dvcFN1cmZQb29sCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUExwOUtyZHJiV0F2U0ZIR0pWRWFzelV1YnF1ejNNNm1mZQAJd3hBc3NldElkASCTARyrqcduJVfOZp5xtr2qa/g86FgLKu7ZoE67PNwUsQAPd3hBc3NldElkU3RyaW5nAixBdHF2NTlFWXpqRkd1aXRLVm5NUms2SDhGdWtqb1Yza3RQb3JiRXlzMjVvbgAKc3dvcFd4UG9vbAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BLaTRHM1ZYMms0MlpTbU5Ocm12Z2RESDdKelJhVWhZN1IACHd4V3hQb29sCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUENFTnBFS2U4YXR3RUxaN29DU21jZEVmY1J1S1RyVXg5OQAUdXNkbld4TFBUb2tlbkFzc2V0SWQBINBPvVF0EhldWsVrCmu2B8GL9iAJSmQkHIi+9sauVOtoAAp3eFVzZGNQb29sCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUEMzSHR1cEJ4Qm15NFd0WmYxVHltMXZyeGc5TXdiWlJLMQARdXNkY0Fzc2V0SWRTdHJpbmcCLDZYdEhqcFhiczlSUkpQMlNyOUdVeVZxekFDY2J5OVRrVGhIWG5qVkM1Q0RKAAt1c2RjQXNzZXRJZAEgUjPZ4ZeIJuXiH8L96og0uId2o4yxg+/IYBx+ChJUJiUAFHVzZGNXeExQVG9rZW5Bc3NldElkASADaQH8GwqYCojNj/4RWYWFJpEys1qS/CbpSF3Tn95cdgAOcHV6emxlVXNkY1Bvb2wJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQOTNLcXo4UFViQ3Vkdk15amJjaTU0V3hRcnRCdHc0ZGJaAAp3eFVzZHRQb29sCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUDhLTXlBSkNQV05jeWVkcXJteW14YWVXb252bWtoR2F1egARdXNkdEFzc2V0SWRTdHJpbmcCLDM0TjlZY0VFVExXbjkzcVlRNjRFc1AxeDg5dFNydUpVNDRSckVNU1hYRVBKAAt1c2R0QXNzZXRJZAEgHpQHE1J2oSWV/chhqIJfEH/fOk8pu/yaRj9a/TZPn5EAFHVzZHRXeExQVG9rZW5Bc3NldElkASB4p79M5F037ZUh19Z+VbL+rgR/6BH9WtYv/UMYL5a3wAAOcHV6emxlVXNkdFBvb2wJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQOTNLcXo4UFViQ3Vkdk15amJjaTU0V3hRcnRCdHc0ZGJaAAl3eFRzblBvb2wJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQSDgzMmVLbnc2N1BGdkpmVWc5S256NkJITTg3UXZqTWVMABB0c25Bc3NldElkU3RyaW5nAiw4dDREUFdUd1B6cGF0SEE5QWtUeFdBQjQ3VEhuWXpCc0Rub1k3ZlFxYkc5MQAKdHNuQXNzZXRJZAEgdRYQOIB2DVVlfknzrrHb5hmcahBoH8lVYfpKRlp3MBwAE3Rzbld4TFBUb2tlbkFzc2V0SWQBIMobqxDlBb4Btze0E871/oNWTcbB9LmeGtGidutsomByAA1wdXp6bGVUc25Qb29sCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUE4xZUpwZGhKeVJwdGNOOWlMVGFyc0pCdFIyS2IzTlhTVQAJd3hCdGNQb29sCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUENCV0RUQTZqckZzd2Q3Z1FnYUUzWGs3Z0xNNVJLb2Z2cAALc3dvcEJ0Y1Bvb2wJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQQUNqMkRMVHczdVVoc1VtVDk4ekhVNU00aFB1ZmJIS2F2ABBidGNBc3NldElkU3RyaW5nAiw4TFFXOGY3UDVkNVBaTTdHdFpFQmdhcVJQR1N6UzNEZlB1aVhyVVJKNEFKUwAKYnRjQXNzZXRJZAEgbPpq/8XtqowLf7Uqk9KiDC+Cgtt0egSMU/v9Ex9zoP8AE2J0Y1d4TFBUb2tlbkFzc2V0SWQBIG+dMYPvXXk73J9vCeuuR/J7WrtDrDfS7FEZZyt2ElkUDgFpAQJhMQEBYQMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECG3lvdSBhcmUgbm90IGFsbG93ZWQgdG8gYXJiIQQRdXNkbkJhbGFuY2VCZWZvcmUJAPAHAgUEdGhpcwULdXNkbkFzc2V0SWQDCQAAAgURdXNkbkJhbGFuY2VCZWZvcmUFEXVzZG5CYWxhbmNlQmVmb3JlBBJ3YXZlc0JhbGFuY2VCZWZvcmUICQDvBwEFBHRoaXMJYXZhaWxhYmxlAwkAAAIFEndhdmVzQmFsYW5jZUJlZm9yZQUSd2F2ZXNCYWxhbmNlQmVmb3JlBAtidXlPblB1enpsZQkA/AcEBRRub25Sb3V0aW5nUHV6emxlUG9vbAIEc3dhcAkAzAgCAgVXQVZFUwkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgULdXNkbkFzc2V0SWQJAGgCBQFhAMCEPQUDbmlsAwkAAAIFC2J1eU9uUHV6emxlBQtidXlPblB1enpsZQQOd2F2ZXNCYWxUb1N3YXAJAGUCCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQUSd2F2ZXNCYWxhbmNlQmVmb3JlAwkAZwIAAAUOd2F2ZXNCYWxUb1N3YXAJAAIBAg5ub3RoaW5nIHRvIGFyYgQUcHV0VGhlVG9rZW5JblRoZVBvb2wJAPwHBAUGd3hQb29sAglwdXRPbmVUa24JAMwIAgABCQDMCAIHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQFDndhdmVzQmFsVG9Td2FwBQNuaWwDCQAAAgUUcHV0VGhlVG9rZW5JblRoZVBvb2wFFHB1dFRoZVRva2VuSW5UaGVQb29sBA5scFRva2VuQmFsYW5jZQkA8AcCBQR0aGlzBRd1c2RuV2F2ZXNMUFRva2VuQXNzZXRJZAMJAAACBQ5scFRva2VuQmFsYW5jZQUObHBUb2tlbkJhbGFuY2UEDXNlbGxQb29sVG9rZW4JAPwHBAUGd3hQb29sAglnZXRPbmVUa24JAMwIAgURdXNkbkFzc2V0SWRTdHJpbmcJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFF3VzZG5XYXZlc0xQVG9rZW5Bc3NldElkBQ5scFRva2VuQmFsYW5jZQUDbmlsAwkAAAIFDXNlbGxQb29sVG9rZW4FDXNlbGxQb29sVG9rZW4EEHVzZG5CYWxhbmNlQWZ0ZXIJAPAHAgUEdGhpcwULdXNkbkFzc2V0SWQDCQAAAgUQdXNkbkJhbGFuY2VBZnRlcgUQdXNkbkJhbGFuY2VBZnRlcgMJAGcCAAAJAGUCBRB1c2RuQmFsYW5jZUFmdGVyBRF1c2RuQmFsYW5jZUJlZm9yZQkAAgECGFdVIFBVWlpMRSAtPiBXWCAgWygkXyQpXQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBAmEyAQFhAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIbeW91IGFyZSBub3QgYWxsb3dlZCB0byBhcmIhBBF1c2RuQmFsYW5jZUJlZm9yZQkA8AcCBQR0aGlzBQt1c2RuQXNzZXRJZAMJAAACBRF1c2RuQmFsYW5jZUJlZm9yZQURdXNkbkJhbGFuY2VCZWZvcmUEEndhdmVzQmFsYW5jZUJlZm9yZQgJAO8HAQUEdGhpcwlhdmFpbGFibGUDCQAAAgUSd2F2ZXNCYWxhbmNlQmVmb3JlBRJ3YXZlc0JhbGFuY2VCZWZvcmUEFHB1dFRoZVRva2VuSW5UaGVQb29sCQD8BwQFBnd4UG9vbAIJcHV0T25lVGtuCQDMCAIAAQkAzAgCBwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQt1c2RuQXNzZXRJZAkAaAIFAWEAwIQ9BQNuaWwDCQAAAgUUcHV0VGhlVG9rZW5JblRoZVBvb2wFFHB1dFRoZVRva2VuSW5UaGVQb29sBA5scFRva2VuQmFsYW5jZQkA8AcCBQR0aGlzBRd1c2RuV2F2ZXNMUFRva2VuQXNzZXRJZAMJAAACBQ5scFRva2VuQmFsYW5jZQUObHBUb2tlbkJhbGFuY2UEDXNlbGxQb29sVG9rZW4JAPwHBAUGd3hQb29sAglnZXRPbmVUa24JAMwIAgIFV0FWRVMJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFF3VzZG5XYXZlc0xQVG9rZW5Bc3NldElkBQ5scFRva2VuQmFsYW5jZQUDbmlsAwkAAAIFDXNlbGxQb29sVG9rZW4FDXNlbGxQb29sVG9rZW4EDndhdmVzQmFsVG9Td2FwCQBlAggJAO8HAQUEdGhpcwlhdmFpbGFibGUFEndhdmVzQmFsYW5jZUJlZm9yZQMJAGcCAAAFDndhdmVzQmFsVG9Td2FwCQACAQIObm90aGluZyB0byBhcmIEC2J1eU9uUHV6emxlCQD8BwQFFG5vblJvdXRpbmdQdXp6bGVQb29sAgRzd2FwCQDMCAIFEXVzZG5Bc3NldElkU3RyaW5nCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR1bml0BQ53YXZlc0JhbFRvU3dhcAUDbmlsAwkAAAIFC2J1eU9uUHV6emxlBQtidXlPblB1enpsZQQQdXNkbkJhbGFuY2VBZnRlcgkA8AcCBQR0aGlzBQt1c2RuQXNzZXRJZAMJAAACBRB1c2RuQmFsYW5jZUFmdGVyBRB1c2RuQmFsYW5jZUFmdGVyAwkAZwIAAAkAZQIFEHVzZG5CYWxhbmNlQWZ0ZXIFEXVzZG5CYWxhbmNlQmVmb3JlCQACAQIXV1UgV1ggLT4gUFVaWkxFIFsoJF8kKV0FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQJhMwEBYQMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECG3lvdSBhcmUgbm90IGFsbG93ZWQgdG8gYXJiIQQRdXNkbkJhbGFuY2VCZWZvcmUJAPAHAgUEdGhpcwULdXNkbkFzc2V0SWQDCQAAAgURdXNkbkJhbGFuY2VCZWZvcmUFEXVzZG5CYWxhbmNlQmVmb3JlBA9idXlTdXJmT25QdXp6bGUJAPwHBAUYbm9uUm91dGluZ1B1enpsZVN1cmZQb29sAgRzd2FwCQDMCAIFEXN1cmZBc3NldElkU3RyaW5nCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQt1c2RuQXNzZXRJZAkAaAIFAWEAwIQ9BQNuaWwDCQAAAgUPYnV5U3VyZk9uUHV6emxlBQ9idXlTdXJmT25QdXp6bGUEDXN1cmZCYWxUb1N3YXAJAPAHAgUEdGhpcwULc3VyZkFzc2V0SWQEDnN3YXBTdXJmT25Td29wCQD8BwQFDHN3b3BTdXJmUG9vbAIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3N1cmZBc3NldElkBQ1zdXJmQmFsVG9Td2FwBQNuaWwDCQAAAgUOc3dhcFN1cmZPblN3b3AFDnN3YXBTdXJmT25Td29wBBB1c2RuQmFsYW5jZUFmdGVyCQDwBwIFBHRoaXMFC3VzZG5Bc3NldElkAwkAAAIFEHVzZG5CYWxhbmNlQWZ0ZXIFEHVzZG5CYWxhbmNlQWZ0ZXIDCQBnAgAACQBlAgUQdXNkbkJhbGFuY2VBZnRlcgURdXNkbkJhbGFuY2VCZWZvcmUJAAIBAhtTVVJGIFBVWlpMRSAtPiBTV09QIFsoJF8kKV0FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQJhNAEBYQMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECG3lvdSBhcmUgbm90IGFsbG93ZWQgdG8gYXJiIQQRdXNkbkJhbGFuY2VCZWZvcmUJAPAHAgUEdGhpcwULdXNkbkFzc2V0SWQDCQAAAgURdXNkbkJhbGFuY2VCZWZvcmUFEXVzZG5CYWxhbmNlQmVmb3JlBBBzd2FwVG9TdXJmT25Td29wCQD8BwQFDHN3b3BTdXJmUG9vbAIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3VzZG5Bc3NldElkCQBoAgUBYQDAhD0FA25pbAMJAAACBRBzd2FwVG9TdXJmT25Td29wBRBzd2FwVG9TdXJmT25Td29wBA1zdXJmQmFsVG9Td2FwCQDwBwIFBHRoaXMFC3N1cmZBc3NldElkBBBzZWxsU3VyZk9uUHV6emxlCQD8BwQFGG5vblJvdXRpbmdQdXp6bGVTdXJmUG9vbAIEc3dhcAkAzAgCBRF1c2RuQXNzZXRJZFN0cmluZwkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgULc3VyZkFzc2V0SWQFDXN1cmZCYWxUb1N3YXAFA25pbAMJAAACBRBzZWxsU3VyZk9uUHV6emxlBRBzZWxsU3VyZk9uUHV6emxlBBB1c2RuQmFsYW5jZUFmdGVyCQDwBwIFBHRoaXMFC3VzZG5Bc3NldElkAwkAAAIFEHVzZG5CYWxhbmNlQWZ0ZXIFEHVzZG5CYWxhbmNlQWZ0ZXIDCQBnAgAACQBlAgUQdXNkbkJhbGFuY2VBZnRlcgURdXNkbkJhbGFuY2VCZWZvcmUJAAIBAhtTVVJGIFNXT1AgLT4gUFVaWkxFIFsoJF8kKV0FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQJhNQEBYQMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECG3lvdSBhcmUgbm90IGFsbG93ZWQgdG8gYXJiIQQRdXNkbkJhbGFuY2VCZWZvcmUJAPAHAgUEdGhpcwULdXNkbkFzc2V0SWQDCQAAAgURdXNkbkJhbGFuY2VCZWZvcmUFEXVzZG5CYWxhbmNlQmVmb3JlBBRwdXRUaGVUb2tlbkluVGhlUG9vbAkA/AcEBQh3eFd4UG9vbAIJcHV0T25lVGtuCQDMCAIAAQkAzAgCBwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQt1c2RuQXNzZXRJZAkAaAIFAWEAwIQ9BQNuaWwDCQAAAgUUcHV0VGhlVG9rZW5JblRoZVBvb2wFFHB1dFRoZVRva2VuSW5UaGVQb29sBA5scFRva2VuQmFsYW5jZQkA8AcCBQR0aGlzBRR1c2RuV3hMUFRva2VuQXNzZXRJZAMJAAACBQ5scFRva2VuQmFsYW5jZQUObHBUb2tlbkJhbGFuY2UEDXNlbGxQb29sVG9rZW4JAPwHBAUId3hXeFBvb2wCCWdldE9uZVRrbgkAzAgCBQ93eEFzc2V0SWRTdHJpbmcJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFFHVzZG5XeExQVG9rZW5Bc3NldElkBQ5scFRva2VuQmFsYW5jZQUDbmlsAwkAAAIFDXNlbGxQb29sVG9rZW4FDXNlbGxQb29sVG9rZW4EC3d4QmFsVG9Td2FwCQDwBwIFBHRoaXMFCXd4QXNzZXRJZAQMc3dhcFd4T25Td29wCQD8BwQFCnN3b3BXeFBvb2wCCGV4Y2hhbmdlCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQl3eEFzc2V0SWQFC3d4QmFsVG9Td2FwBQNuaWwDCQAAAgUMc3dhcFd4T25Td29wBQxzd2FwV3hPblN3b3AEEHVzZG5CYWxhbmNlQWZ0ZXIJAPAHAgUEdGhpcwULdXNkbkFzc2V0SWQDCQAAAgUQdXNkbkJhbGFuY2VBZnRlcgUQdXNkbkJhbGFuY2VBZnRlcgMJAGcCAAAJAGUCBRB1c2RuQmFsYW5jZUFmdGVyBRF1c2RuQmFsYW5jZUJlZm9yZQkAAgECFVdYIFdYIC0+IFNXT1AgWygkXyQpXQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBAmE2AQFhAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIbeW91IGFyZSBub3QgYWxsb3dlZCB0byBhcmIhBBF1c2RuQmFsYW5jZUJlZm9yZQkA8AcCBQR0aGlzBQt1c2RuQXNzZXRJZAMJAAACBRF1c2RuQmFsYW5jZUJlZm9yZQURdXNkbkJhbGFuY2VCZWZvcmUEDnN3YXBUb1d4T25Td29wCQD8BwQFCnN3b3BXeFBvb2wCCGV4Y2hhbmdlCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQt1c2RuQXNzZXRJZAkAaAIFAWEAwIQ9BQNuaWwDCQAAAgUOc3dhcFRvV3hPblN3b3AFDnN3YXBUb1d4T25Td29wBAt3eEJhbFRvU3dhcAkA8AcCBQR0aGlzBQl3eEFzc2V0SWQEFHB1dFRoZVRva2VuSW5UaGVQb29sCQD8BwQFCHd4V3hQb29sAglwdXRPbmVUa24JAMwIAgABCQDMCAIHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCXd4QXNzZXRJZAULd3hCYWxUb1N3YXAFA25pbAMJAAACBRRwdXRUaGVUb2tlbkluVGhlUG9vbAUUcHV0VGhlVG9rZW5JblRoZVBvb2wEDmxwVG9rZW5CYWxhbmNlCQDwBwIFBHRoaXMFFHVzZG5XeExQVG9rZW5Bc3NldElkAwkAAAIFDmxwVG9rZW5CYWxhbmNlBQ5scFRva2VuQmFsYW5jZQQNc2VsbFBvb2xUb2tlbgkA/AcEBQh3eFd4UG9vbAIJZ2V0T25lVGtuCQDMCAIFEXVzZG5Bc3NldElkU3RyaW5nCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBRR1c2RuV3hMUFRva2VuQXNzZXRJZAUObHBUb2tlbkJhbGFuY2UFA25pbAMJAAACBQ1zZWxsUG9vbFRva2VuBQ1zZWxsUG9vbFRva2VuBBB1c2RuQmFsYW5jZUFmdGVyCQDwBwIFBHRoaXMFC3VzZG5Bc3NldElkAwkAAAIFEHVzZG5CYWxhbmNlQWZ0ZXIFEHVzZG5CYWxhbmNlQWZ0ZXIDCQBnAgAACQBlAgUQdXNkbkJhbGFuY2VBZnRlcgURdXNkbkJhbGFuY2VCZWZvcmUJAAIBAhVXWCBTV09QIC0+IFdYIFsoJF8kKV0FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQJhNwEBYQMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECG3lvdSBhcmUgbm90IGFsbG93ZWQgdG8gYXJiIQQRdXNkbkJhbGFuY2VCZWZvcmUJAPAHAgUEdGhpcwULdXNkbkFzc2V0SWQDCQAAAgURdXNkbkJhbGFuY2VCZWZvcmUFEXVzZG5CYWxhbmNlQmVmb3JlBA9idXlVc2RjT25QdXp6bGUJAPwHBAUOcHV6emxlVXNkY1Bvb2wCBHN3YXAJAMwIAgURdXNkY0Fzc2V0SWRTdHJpbmcJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3VzZG5Bc3NldElkCQBoAgUBYQDAhD0FA25pbAMJAAACBQ9idXlVc2RjT25QdXp6bGUFD2J1eVVzZGNPblB1enpsZQQNdXNkY0JhbFRvU3dhcAkA8AcCBQR0aGlzBQt1c2RjQXNzZXRJZAMJAAACBQ11c2RjQmFsVG9Td2FwBQ11c2RjQmFsVG9Td2FwBBRwdXRUaGVUb2tlbkluVGhlUG9vbAkA/AcEBQp3eFVzZGNQb29sAgtwdXRPbmVUa25WMgkAzAgCAAEJAMwIAgcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgULdXNkY0Fzc2V0SWQFDXVzZGNCYWxUb1N3YXAFA25pbAMJAAACBRRwdXRUaGVUb2tlbkluVGhlUG9vbAUUcHV0VGhlVG9rZW5JblRoZVBvb2wEDmxwVG9rZW5CYWxhbmNlCQDwBwIFBHRoaXMFFHVzZGNXeExQVG9rZW5Bc3NldElkAwkAAAIFDmxwVG9rZW5CYWxhbmNlBQ5scFRva2VuQmFsYW5jZQQNc2VsbFBvb2xUb2tlbgkA/AcEBQp3eFVzZGNQb29sAgtnZXRPbmVUa25WMgkAzAgCBRF1c2RuQXNzZXRJZFN0cmluZwkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUUdXNkY1d4TFBUb2tlbkFzc2V0SWQFDmxwVG9rZW5CYWxhbmNlBQNuaWwDCQAAAgUNc2VsbFBvb2xUb2tlbgUNc2VsbFBvb2xUb2tlbgQQdXNkbkJhbGFuY2VBZnRlcgkA8AcCBQR0aGlzBQt1c2RuQXNzZXRJZAMJAAACBRB1c2RuQmFsYW5jZUFmdGVyBRB1c2RuQmFsYW5jZUFmdGVyAwkAZwIAAAkAZQIFEHVzZG5CYWxhbmNlQWZ0ZXIFEXVzZG5CYWxhbmNlQmVmb3JlCQACAQIZVVNEQyBQVVpaTEUgLT4gV1ggWygkXyQpXQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBAmE4AQFhAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIbeW91IGFyZSBub3QgYWxsb3dlZCB0byBhcmIhBBF1c2RuQmFsYW5jZUJlZm9yZQkA8AcCBQR0aGlzBQt1c2RuQXNzZXRJZAMJAAACBRF1c2RuQmFsYW5jZUJlZm9yZQURdXNkbkJhbGFuY2VCZWZvcmUEFHB1dFRoZVRva2VuSW5UaGVQb29sCQD8BwQFCnd4VXNkY1Bvb2wCC3B1dE9uZVRrblYyCQDMCAIAAQkAzAgCBwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQt1c2RuQXNzZXRJZAkAaAIFAWEAwIQ9BQNuaWwDCQAAAgUUcHV0VGhlVG9rZW5JblRoZVBvb2wFFHB1dFRoZVRva2VuSW5UaGVQb29sBA5scFRva2VuQmFsYW5jZQkA8AcCBQR0aGlzBRR1c2RjV3hMUFRva2VuQXNzZXRJZAMJAAACBQ5scFRva2VuQmFsYW5jZQUObHBUb2tlbkJhbGFuY2UEDXNlbGxQb29sVG9rZW4JAPwHBAUKd3hVc2RjUG9vbAILZ2V0T25lVGtuVjIJAMwIAgURdXNkY0Fzc2V0SWRTdHJpbmcJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFFHVzZGNXeExQVG9rZW5Bc3NldElkBQ5scFRva2VuQmFsYW5jZQUDbmlsAwkAAAIFDXNlbGxQb29sVG9rZW4FDXNlbGxQb29sVG9rZW4EDXVzZGNCYWxUb1N3YXAJAPAHAgUEdGhpcwULdXNkY0Fzc2V0SWQDCQAAAgUNdXNkY0JhbFRvU3dhcAUNdXNkY0JhbFRvU3dhcAQQc2VsbFVzZGNPblB1enpsZQkA/AcEBQ5wdXp6bGVVc2RjUG9vbAIEc3dhcAkAzAgCBRF1c2RuQXNzZXRJZFN0cmluZwkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgULdXNkY0Fzc2V0SWQFDXVzZGNCYWxUb1N3YXAFA25pbAMJAAACBRBzZWxsVXNkY09uUHV6emxlBRBzZWxsVXNkY09uUHV6emxlBBB1c2RuQmFsYW5jZUFmdGVyCQDwBwIFBHRoaXMFC3VzZG5Bc3NldElkAwkAAAIFEHVzZG5CYWxhbmNlQWZ0ZXIFEHVzZG5CYWxhbmNlQWZ0ZXIDCQBnAgAACQBlAgUQdXNkbkJhbGFuY2VBZnRlcgURdXNkbkJhbGFuY2VCZWZvcmUJAAIBAhlVU0RDIFdYIC0+IFBVWlpMRSBbKCRfJCldBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQECYTkBAWEDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAht5b3UgYXJlIG5vdCBhbGxvd2VkIHRvIGFyYiEEEXVzZG5CYWxhbmNlQmVmb3JlCQDwBwIFBHRoaXMFC3VzZG5Bc3NldElkAwkAAAIFEXVzZG5CYWxhbmNlQmVmb3JlBRF1c2RuQmFsYW5jZUJlZm9yZQQPYnV5VXNkdE9uUHV6emxlCQD8BwQFDnB1enpsZVVzZHRQb29sAgRzd2FwCQDMCAIFEXVzZHRBc3NldElkU3RyaW5nCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQt1c2RuQXNzZXRJZAkAaAIFAWEAwIQ9BQNuaWwDCQAAAgUPYnV5VXNkdE9uUHV6emxlBQ9idXlVc2R0T25QdXp6bGUEDXVzZHRCYWxUb1N3YXAJAPAHAgUEdGhpcwULdXNkdEFzc2V0SWQDCQAAAgUNdXNkdEJhbFRvU3dhcAUNdXNkdEJhbFRvU3dhcAQUcHV0VGhlVG9rZW5JblRoZVBvb2wJAPwHBAUKd3hVc2R0UG9vbAILcHV0T25lVGtuVjIJAMwIAgABCQDMCAIHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3VzZHRBc3NldElkBQ11c2R0QmFsVG9Td2FwBQNuaWwDCQAAAgUUcHV0VGhlVG9rZW5JblRoZVBvb2wFFHB1dFRoZVRva2VuSW5UaGVQb29sBA5scFRva2VuQmFsYW5jZQkA8AcCBQR0aGlzBRR1c2R0V3hMUFRva2VuQXNzZXRJZAMJAAACBQ5scFRva2VuQmFsYW5jZQUObHBUb2tlbkJhbGFuY2UEDXNlbGxQb29sVG9rZW4JAPwHBAUKd3hVc2R0UG9vbAILZ2V0T25lVGtuVjIJAMwIAgURdXNkbkFzc2V0SWRTdHJpbmcJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFFHVzZHRXeExQVG9rZW5Bc3NldElkBQ5scFRva2VuQmFsYW5jZQUDbmlsAwkAAAIFDXNlbGxQb29sVG9rZW4FDXNlbGxQb29sVG9rZW4EEHVzZG5CYWxhbmNlQWZ0ZXIJAPAHAgUEdGhpcwULdXNkbkFzc2V0SWQDCQAAAgUQdXNkbkJhbGFuY2VBZnRlcgUQdXNkbkJhbGFuY2VBZnRlcgMJAGcCAAAJAGUCBRB1c2RuQmFsYW5jZUFmdGVyBRF1c2RuQmFsYW5jZUJlZm9yZQkAAgECGVVTRFQgUFVaWkxFIC0+IFdYIFsoJF8kKV0FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQNhMTABAWEDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAht5b3UgYXJlIG5vdCBhbGxvd2VkIHRvIGFyYiEEEXVzZG5CYWxhbmNlQmVmb3JlCQDwBwIFBHRoaXMFC3VzZG5Bc3NldElkAwkAAAIFEXVzZG5CYWxhbmNlQmVmb3JlBRF1c2RuQmFsYW5jZUJlZm9yZQQUcHV0VGhlVG9rZW5JblRoZVBvb2wJAPwHBAUKd3hVc2R0UG9vbAILcHV0T25lVGtuVjIJAMwIAgABCQDMCAIHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3VzZG5Bc3NldElkCQBoAgUBYQDAhD0FA25pbAMJAAACBRRwdXRUaGVUb2tlbkluVGhlUG9vbAUUcHV0VGhlVG9rZW5JblRoZVBvb2wEDmxwVG9rZW5CYWxhbmNlCQDwBwIFBHRoaXMFFHVzZHRXeExQVG9rZW5Bc3NldElkAwkAAAIFDmxwVG9rZW5CYWxhbmNlBQ5scFRva2VuQmFsYW5jZQQNc2VsbFBvb2xUb2tlbgkA/AcEBQp3eFVzZHRQb29sAgtnZXRPbmVUa25WMgkAzAgCBRF1c2R0QXNzZXRJZFN0cmluZwkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUUdXNkdFd4TFBUb2tlbkFzc2V0SWQFDmxwVG9rZW5CYWxhbmNlBQNuaWwDCQAAAgUNc2VsbFBvb2xUb2tlbgUNc2VsbFBvb2xUb2tlbgQNdXNkdEJhbFRvU3dhcAkA8AcCBQR0aGlzBQt1c2R0QXNzZXRJZAMJAAACBQ11c2R0QmFsVG9Td2FwBQ11c2R0QmFsVG9Td2FwBBBzZWxsVXNkdE9uUHV6emxlCQD8BwQFDnB1enpsZVVzZHRQb29sAgRzd2FwCQDMCAIFEXVzZG5Bc3NldElkU3RyaW5nCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQt1c2R0QXNzZXRJZAUNdXNkdEJhbFRvU3dhcAUDbmlsAwkAAAIFEHNlbGxVc2R0T25QdXp6bGUFEHNlbGxVc2R0T25QdXp6bGUEEHVzZG5CYWxhbmNlQWZ0ZXIJAPAHAgUEdGhpcwULdXNkbkFzc2V0SWQDCQAAAgUQdXNkbkJhbGFuY2VBZnRlcgUQdXNkbkJhbGFuY2VBZnRlcgMJAGcCAAAJAGUCBRB1c2RuQmFsYW5jZUFmdGVyBRF1c2RuQmFsYW5jZUJlZm9yZQkAAgECGVVTRFQgV1ggLT4gUFVaWkxFIFsoJF8kKV0FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQNhMTEBAWEDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAht5b3UgYXJlIG5vdCBhbGxvd2VkIHRvIGFyYiEEEXVzZG5CYWxhbmNlQmVmb3JlCQDwBwIFBHRoaXMFC3VzZG5Bc3NldElkAwkAAAIFEXVzZG5CYWxhbmNlQmVmb3JlBRF1c2RuQmFsYW5jZUJlZm9yZQQOYnV5VHNuT25QdXp6bGUJAPwHBAUNcHV6emxlVHNuUG9vbAIEc3dhcAkAzAgCBRB0c25Bc3NldElkU3RyaW5nCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQt1c2RuQXNzZXRJZAkAaAIFAWEAwIQ9BQNuaWwDCQAAAgUOYnV5VHNuT25QdXp6bGUFDmJ1eVRzbk9uUHV6emxlBAx0c25CYWxUb1N3YXAJAPAHAgUEdGhpcwUKdHNuQXNzZXRJZAMJAAACBQx0c25CYWxUb1N3YXAFDHRzbkJhbFRvU3dhcAQUcHV0VGhlVG9rZW5JblRoZVBvb2wJAPwHBAUJd3hUc25Qb29sAglwdXRPbmVUa24JAMwIAgABCQDMCAIHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnRzbkFzc2V0SWQFDHRzbkJhbFRvU3dhcAUDbmlsAwkAAAIFFHB1dFRoZVRva2VuSW5UaGVQb29sBRRwdXRUaGVUb2tlbkluVGhlUG9vbAQObHBUb2tlbkJhbGFuY2UJAPAHAgUEdGhpcwUTdHNuV3hMUFRva2VuQXNzZXRJZAMJAAACBQ5scFRva2VuQmFsYW5jZQUObHBUb2tlbkJhbGFuY2UEDXNlbGxQb29sVG9rZW4JAPwHBAUJd3hUc25Qb29sAglnZXRPbmVUa24JAMwIAgURdXNkbkFzc2V0SWRTdHJpbmcJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFE3Rzbld4TFBUb2tlbkFzc2V0SWQFDmxwVG9rZW5CYWxhbmNlBQNuaWwDCQAAAgUNc2VsbFBvb2xUb2tlbgUNc2VsbFBvb2xUb2tlbgQQdXNkbkJhbGFuY2VBZnRlcgkA8AcCBQR0aGlzBQt1c2RuQXNzZXRJZAMJAAACBRB1c2RuQmFsYW5jZUFmdGVyBRB1c2RuQmFsYW5jZUFmdGVyAwkAZwIAAAkAZQIFEHVzZG5CYWxhbmNlQWZ0ZXIFEXVzZG5CYWxhbmNlQmVmb3JlCQACAQIYVFNOIFBVWlpMRSAtPiBXWCBbKCRfJCldBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEDYTEyAQFhAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIbeW91IGFyZSBub3QgYWxsb3dlZCB0byBhcmIhBBF1c2RuQmFsYW5jZUJlZm9yZQkA8AcCBQR0aGlzBQt1c2RuQXNzZXRJZAMJAAACBRF1c2RuQmFsYW5jZUJlZm9yZQURdXNkbkJhbGFuY2VCZWZvcmUEFHB1dFRoZVRva2VuSW5UaGVQb29sCQD8BwQFCXd4VHNuUG9vbAIJcHV0T25lVGtuCQDMCAIAAQkAzAgCBwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQt1c2RuQXNzZXRJZAkAaAIFAWEAwIQ9BQNuaWwDCQAAAgUUcHV0VGhlVG9rZW5JblRoZVBvb2wFFHB1dFRoZVRva2VuSW5UaGVQb29sBA5scFRva2VuQmFsYW5jZQkA8AcCBQR0aGlzBRN0c25XeExQVG9rZW5Bc3NldElkAwkAAAIFDmxwVG9rZW5CYWxhbmNlBQ5scFRva2VuQmFsYW5jZQQNc2VsbFBvb2xUb2tlbgkA/AcEBQl3eFRzblBvb2wCCWdldE9uZVRrbgkAzAgCBRB0c25Bc3NldElkU3RyaW5nCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBRN0c25XeExQVG9rZW5Bc3NldElkBQ5scFRva2VuQmFsYW5jZQUDbmlsAwkAAAIFDXNlbGxQb29sVG9rZW4FDXNlbGxQb29sVG9rZW4EDHRzbkJhbFRvU3dhcAkA8AcCBQR0aGlzBQp0c25Bc3NldElkAwkAAAIFDHRzbkJhbFRvU3dhcAUMdHNuQmFsVG9Td2FwBA9zZWxsdHNuT25QdXp6bGUJAPwHBAUNcHV6emxlVHNuUG9vbAIEc3dhcAkAzAgCBRF1c2RuQXNzZXRJZFN0cmluZwkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUKdHNuQXNzZXRJZAUMdHNuQmFsVG9Td2FwBQNuaWwDCQAAAgUPc2VsbHRzbk9uUHV6emxlBQ9zZWxsdHNuT25QdXp6bGUEEHVzZG5CYWxhbmNlQWZ0ZXIJAPAHAgUEdGhpcwULdXNkbkFzc2V0SWQDCQAAAgUQdXNkbkJhbGFuY2VBZnRlcgUQdXNkbkJhbGFuY2VBZnRlcgMJAGcCAAAJAGUCBRB1c2RuQmFsYW5jZUFmdGVyBRF1c2RuQmFsYW5jZUJlZm9yZQkAAgECGFRTTiBXWCAtPiBQVVpaTEUgWygkXyQpXQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBA2ExMwEBYQMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECG3lvdSBhcmUgbm90IGFsbG93ZWQgdG8gYXJiIQQRdXNkbkJhbGFuY2VCZWZvcmUJAPAHAgUEdGhpcwULdXNkbkFzc2V0SWQDCQAAAgURdXNkbkJhbGFuY2VCZWZvcmUFEXVzZG5CYWxhbmNlQmVmb3JlBBRwdXRUaGVUb2tlbkluVGhlUG9vbAkA/AcEBQl3eEJ0Y1Bvb2wCCXB1dE9uZVRrbgkAzAgCAAEJAMwIAgcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgULdXNkbkFzc2V0SWQJAGgCBQFhAMCEPQUDbmlsAwkAAAIFFHB1dFRoZVRva2VuSW5UaGVQb29sBRRwdXRUaGVUb2tlbkluVGhlUG9vbAQObHBUb2tlbkJhbGFuY2UJAPAHAgUEdGhpcwUTYnRjV3hMUFRva2VuQXNzZXRJZAMJAAACBQ5scFRva2VuQmFsYW5jZQUObHBUb2tlbkJhbGFuY2UEDXNlbGxQb29sVG9rZW4JAPwHBAUJd3hCdGNQb29sAglnZXRPbmVUa24JAMwIAgUQYnRjQXNzZXRJZFN0cmluZwkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUTYnRjV3hMUFRva2VuQXNzZXRJZAUObHBUb2tlbkJhbGFuY2UFA25pbAMJAAACBQ1zZWxsUG9vbFRva2VuBQ1zZWxsUG9vbFRva2VuBAxidGNCYWxUb1N3YXAJAPAHAgUEdGhpcwUKYnRjQXNzZXRJZAQNc3dhcEJ0Y09uU3dvcAkA/AcEBQtzd29wQnRjUG9vbAIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCmJ0Y0Fzc2V0SWQFDGJ0Y0JhbFRvU3dhcAUDbmlsAwkAAAIFDXN3YXBCdGNPblN3b3AFDXN3YXBCdGNPblN3b3AEEHVzZG5CYWxhbmNlQWZ0ZXIJAPAHAgUEdGhpcwULdXNkbkFzc2V0SWQDCQAAAgUQdXNkbkJhbGFuY2VBZnRlcgUQdXNkbkJhbGFuY2VBZnRlcgMJAGcCAAAJAGUCBRB1c2RuQmFsYW5jZUFmdGVyBRF1c2RuQmFsYW5jZUJlZm9yZQkAAgECFkJUQyBXWCAtPiBTV09QIFsoJF8kKV0FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQNhMTQBAWEDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAht5b3UgYXJlIG5vdCBhbGxvd2VkIHRvIGFyYiEEEXVzZG5CYWxhbmNlQmVmb3JlCQDwBwIFBHRoaXMFC3VzZG5Bc3NldElkAwkAAAIFEXVzZG5CYWxhbmNlQmVmb3JlBRF1c2RuQmFsYW5jZUJlZm9yZQQPc3dhcFRvQnRjT25Td29wCQD8BwQFC3N3b3BCdGNQb29sAghleGNoYW5nZQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgULdXNkbkFzc2V0SWQJAGgCBQFhAMCEPQUDbmlsAwkAAAIFD3N3YXBUb0J0Y09uU3dvcAUPc3dhcFRvQnRjT25Td29wBAxidGNCYWxUb1N3YXAJAPAHAgUEdGhpcwUKYnRjQXNzZXRJZAQUcHV0VGhlVG9rZW5JblRoZVBvb2wJAPwHBAUJd3hCdGNQb29sAglwdXRPbmVUa24JAMwIAgABCQDMCAIHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCmJ0Y0Fzc2V0SWQFDGJ0Y0JhbFRvU3dhcAUDbmlsAwkAAAIFFHB1dFRoZVRva2VuSW5UaGVQb29sBRRwdXRUaGVUb2tlbkluVGhlUG9vbAQObHBUb2tlbkJhbGFuY2UJAPAHAgUEdGhpcwUTYnRjV3hMUFRva2VuQXNzZXRJZAMJAAACBQ5scFRva2VuQmFsYW5jZQUObHBUb2tlbkJhbGFuY2UEDXNlbGxQb29sVG9rZW4JAPwHBAUJd3hCdGNQb29sAglnZXRPbmVUa24JAMwIAgURdXNkbkFzc2V0SWRTdHJpbmcJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFE2J0Y1d4TFBUb2tlbkFzc2V0SWQFDmxwVG9rZW5CYWxhbmNlBQNuaWwDCQAAAgUNc2VsbFBvb2xUb2tlbgUNc2VsbFBvb2xUb2tlbgQQdXNkbkJhbGFuY2VBZnRlcgkA8AcCBQR0aGlzBQt1c2RuQXNzZXRJZAMJAAACBRB1c2RuQmFsYW5jZUFmdGVyBRB1c2RuQmFsYW5jZUFmdGVyAwkAZwIAAAkAZQIFEHVzZG5CYWxhbmNlQWZ0ZXIFEXVzZG5CYWxhbmNlQmVmb3JlCQACAQIWQlRDIFNXT1AgLT4gV1ggWygkXyQpXQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAkAyBMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleRyTINQ=", "height": 3428757, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8UGi5KFRGoE6twVNNwRyCT542tHjL9W5piUQfCtwgaBh Next: 5GyNBCAiYsySdiovwKRb8kDtaj9ZKCTR3sz8ZAEUMhBW Diff:
OldNewDifferences
594594 let usdnBalanceAfter = assetBalance(this, usdnAssetId)
595595 if ((usdnBalanceAfter == usdnBalanceAfter))
596596 then if ((0 >= (usdnBalanceAfter - usdnBalanceBefore)))
597- then throw("WX WX -> SWOP [($_$)]")
597+ then throw("BTC WX -> SWOP [($_$)]")
598598 else nil
599599 else throw("Strict value is not equal to itself.")
600600 }
634634 let usdnBalanceAfter = assetBalance(this, usdnAssetId)
635635 if ((usdnBalanceAfter == usdnBalanceAfter))
636636 then if ((0 >= (usdnBalanceAfter - usdnBalanceBefore)))
637- then throw("WX SWOP -> WX [($_$)]")
637+ then throw("BTC SWOP -> WX [($_$)]")
638638 else nil
639639 else throw("Strict value is not equal to itself.")
640640 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let wxPool = addressFromStringValue("3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g")
55
66 let usdnAssetId = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
77
88 let usdnAssetIdString = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
99
1010 let usdnWavesLPTokenAssetId = base58'7KZbJrVopwJhkdwbe1eFDBbex4dkY63MxjTNjqXtrzj1'
1111
1212 let nonRoutingPuzzlePool = addressFromStringValue("3PDrYPF6izza2sXWffzTPF7e2Fcir2CMpki")
1313
1414 let surfAssetId = base58'At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL'
1515
1616 let surfAssetIdString = "At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL"
1717
1818 let nonRoutingPuzzleSurfPool = addressFromStringValue("3P7r93vXHuusageNJVGwzqaz3WMotAu49Yz")
1919
2020 let swopSurfPool = addressFromStringValue("3PLp9KrdrbWAvSFHGJVEaszUubquz3M6mfe")
2121
2222 let wxAssetId = base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on'
2323
2424 let wxAssetIdString = "Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on"
2525
2626 let swopWxPool = addressFromStringValue("3PKi4G3VX2k42ZSmNNrmvgdDH7JzRaUhY7R")
2727
2828 let wxWxPool = addressFromStringValue("3PCENpEKe8atwELZ7oCSmcdEfcRuKTrUx99")
2929
3030 let usdnWxLPTokenAssetId = base58'F2AKkA513k5yHEJkLsU6vWxCYYk811GpjLhwEv2WGwZ9'
3131
3232 let wxUsdcPool = addressFromStringValue("3PC3HtupBxBmy4WtZf1Tym1vrxg9MwbZRK1")
3333
3434 let usdcAssetIdString = "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ"
3535
3636 let usdcAssetId = base58'6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ'
3737
3838 let usdcWxLPTokenAssetId = base58'EK6N7S38xbtBT3SxAqoGdDLCiX6rojX6G169CnSyuE5'
3939
4040 let puzzleUsdcPool = addressFromStringValue("3P93Kqz8PUbCudvMyjbci54WxQrtBtw4dbZ")
4141
4242 let wxUsdtPool = addressFromStringValue("3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz")
4343
4444 let usdtAssetIdString = "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"
4545
4646 let usdtAssetId = base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ'
4747
4848 let usdtWxLPTokenAssetId = base58'97zHFp1C3cB7qfvx8Xv5f2rWp9nUSG5UnAamfPcW6txf'
4949
5050 let puzzleUsdtPool = addressFromStringValue("3P93Kqz8PUbCudvMyjbci54WxQrtBtw4dbZ")
5151
5252 let wxTsnPool = addressFromStringValue("3PH832eKnw67PFvJfUg9Knz6BHM87QvjMeL")
5353
5454 let tsnAssetIdString = "8t4DPWTwPzpatHA9AkTxWAB47THnYzBsDnoY7fQqbG91"
5555
5656 let tsnAssetId = base58'8t4DPWTwPzpatHA9AkTxWAB47THnYzBsDnoY7fQqbG91'
5757
5858 let tsnWxLPTokenAssetId = base58'EbwpqrZjrvi7XLowkM5Z2rg7xVdzfg6S5ec9asarpAU9'
5959
6060 let puzzleTsnPool = addressFromStringValue("3PN1eJpdhJyRptcN9iLTarsJBtR2Kb3NXSU")
6161
6262 let wxBtcPool = addressFromStringValue("3PCBWDTA6jrFswd7gQgaE3Xk7gLM5RKofvp")
6363
6464 let swopBtcPool = addressFromStringValue("3PACj2DLTw3uUhsUmT98zHU5M4hPufbHKav")
6565
6666 let btcAssetIdString = "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"
6767
6868 let btcAssetId = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS'
6969
7070 let btcWxLPTokenAssetId = base58'8WhH5CCJ6NakPvEvAJcizqqD7H6axhupdYHDFumSDwsy'
7171
7272 @Callable(i)
7373 func a1 (a) = if ((i.caller != this))
7474 then throw("you are not allowed to arb!")
7575 else {
7676 let usdnBalanceBefore = assetBalance(this, usdnAssetId)
7777 if ((usdnBalanceBefore == usdnBalanceBefore))
7878 then {
7979 let wavesBalanceBefore = wavesBalance(this).available
8080 if ((wavesBalanceBefore == wavesBalanceBefore))
8181 then {
8282 let buyOnPuzzle = invoke(nonRoutingPuzzlePool, "swap", ["WAVES", 1], [AttachedPayment(usdnAssetId, (a * 1000000))])
8383 if ((buyOnPuzzle == buyOnPuzzle))
8484 then {
8585 let wavesBalToSwap = (wavesBalance(this).available - wavesBalanceBefore)
8686 if ((0 >= wavesBalToSwap))
8787 then throw("nothing to arb")
8888 else {
8989 let putTheTokenInThePool = invoke(wxPool, "putOneTkn", [1, false], [AttachedPayment(unit, wavesBalToSwap)])
9090 if ((putTheTokenInThePool == putTheTokenInThePool))
9191 then {
9292 let lpTokenBalance = assetBalance(this, usdnWavesLPTokenAssetId)
9393 if ((lpTokenBalance == lpTokenBalance))
9494 then {
9595 let sellPoolToken = invoke(wxPool, "getOneTkn", [usdnAssetIdString, 1], [AttachedPayment(usdnWavesLPTokenAssetId, lpTokenBalance)])
9696 if ((sellPoolToken == sellPoolToken))
9797 then {
9898 let usdnBalanceAfter = assetBalance(this, usdnAssetId)
9999 if ((usdnBalanceAfter == usdnBalanceAfter))
100100 then if ((0 >= (usdnBalanceAfter - usdnBalanceBefore)))
101101 then throw("WU PUZZLE -> WX [($_$)]")
102102 else nil
103103 else throw("Strict value is not equal to itself.")
104104 }
105105 else throw("Strict value is not equal to itself.")
106106 }
107107 else throw("Strict value is not equal to itself.")
108108 }
109109 else throw("Strict value is not equal to itself.")
110110 }
111111 }
112112 else throw("Strict value is not equal to itself.")
113113 }
114114 else throw("Strict value is not equal to itself.")
115115 }
116116 else throw("Strict value is not equal to itself.")
117117 }
118118
119119
120120
121121 @Callable(i)
122122 func a2 (a) = if ((i.caller != this))
123123 then throw("you are not allowed to arb!")
124124 else {
125125 let usdnBalanceBefore = assetBalance(this, usdnAssetId)
126126 if ((usdnBalanceBefore == usdnBalanceBefore))
127127 then {
128128 let wavesBalanceBefore = wavesBalance(this).available
129129 if ((wavesBalanceBefore == wavesBalanceBefore))
130130 then {
131131 let putTheTokenInThePool = invoke(wxPool, "putOneTkn", [1, false], [AttachedPayment(usdnAssetId, (a * 1000000))])
132132 if ((putTheTokenInThePool == putTheTokenInThePool))
133133 then {
134134 let lpTokenBalance = assetBalance(this, usdnWavesLPTokenAssetId)
135135 if ((lpTokenBalance == lpTokenBalance))
136136 then {
137137 let sellPoolToken = invoke(wxPool, "getOneTkn", ["WAVES", 1], [AttachedPayment(usdnWavesLPTokenAssetId, lpTokenBalance)])
138138 if ((sellPoolToken == sellPoolToken))
139139 then {
140140 let wavesBalToSwap = (wavesBalance(this).available - wavesBalanceBefore)
141141 if ((0 >= wavesBalToSwap))
142142 then throw("nothing to arb")
143143 else {
144144 let buyOnPuzzle = invoke(nonRoutingPuzzlePool, "swap", [usdnAssetIdString, 1], [AttachedPayment(unit, wavesBalToSwap)])
145145 if ((buyOnPuzzle == buyOnPuzzle))
146146 then {
147147 let usdnBalanceAfter = assetBalance(this, usdnAssetId)
148148 if ((usdnBalanceAfter == usdnBalanceAfter))
149149 then if ((0 >= (usdnBalanceAfter - usdnBalanceBefore)))
150150 then throw("WU WX -> PUZZLE [($_$)]")
151151 else nil
152152 else throw("Strict value is not equal to itself.")
153153 }
154154 else throw("Strict value is not equal to itself.")
155155 }
156156 }
157157 else throw("Strict value is not equal to itself.")
158158 }
159159 else throw("Strict value is not equal to itself.")
160160 }
161161 else throw("Strict value is not equal to itself.")
162162 }
163163 else throw("Strict value is not equal to itself.")
164164 }
165165 else throw("Strict value is not equal to itself.")
166166 }
167167
168168
169169
170170 @Callable(i)
171171 func a3 (a) = if ((i.caller != this))
172172 then throw("you are not allowed to arb!")
173173 else {
174174 let usdnBalanceBefore = assetBalance(this, usdnAssetId)
175175 if ((usdnBalanceBefore == usdnBalanceBefore))
176176 then {
177177 let buySurfOnPuzzle = invoke(nonRoutingPuzzleSurfPool, "swap", [surfAssetIdString, 1], [AttachedPayment(usdnAssetId, (a * 1000000))])
178178 if ((buySurfOnPuzzle == buySurfOnPuzzle))
179179 then {
180180 let surfBalToSwap = assetBalance(this, surfAssetId)
181181 let swapSurfOnSwop = invoke(swopSurfPool, "exchange", [1], [AttachedPayment(surfAssetId, surfBalToSwap)])
182182 if ((swapSurfOnSwop == swapSurfOnSwop))
183183 then {
184184 let usdnBalanceAfter = assetBalance(this, usdnAssetId)
185185 if ((usdnBalanceAfter == usdnBalanceAfter))
186186 then if ((0 >= (usdnBalanceAfter - usdnBalanceBefore)))
187187 then throw("SURF PUZZLE -> SWOP [($_$)]")
188188 else nil
189189 else throw("Strict value is not equal to itself.")
190190 }
191191 else throw("Strict value is not equal to itself.")
192192 }
193193 else throw("Strict value is not equal to itself.")
194194 }
195195 else throw("Strict value is not equal to itself.")
196196 }
197197
198198
199199
200200 @Callable(i)
201201 func a4 (a) = if ((i.caller != this))
202202 then throw("you are not allowed to arb!")
203203 else {
204204 let usdnBalanceBefore = assetBalance(this, usdnAssetId)
205205 if ((usdnBalanceBefore == usdnBalanceBefore))
206206 then {
207207 let swapToSurfOnSwop = invoke(swopSurfPool, "exchange", [1], [AttachedPayment(usdnAssetId, (a * 1000000))])
208208 if ((swapToSurfOnSwop == swapToSurfOnSwop))
209209 then {
210210 let surfBalToSwap = assetBalance(this, surfAssetId)
211211 let sellSurfOnPuzzle = invoke(nonRoutingPuzzleSurfPool, "swap", [usdnAssetIdString, 1], [AttachedPayment(surfAssetId, surfBalToSwap)])
212212 if ((sellSurfOnPuzzle == sellSurfOnPuzzle))
213213 then {
214214 let usdnBalanceAfter = assetBalance(this, usdnAssetId)
215215 if ((usdnBalanceAfter == usdnBalanceAfter))
216216 then if ((0 >= (usdnBalanceAfter - usdnBalanceBefore)))
217217 then throw("SURF SWOP -> PUZZLE [($_$)]")
218218 else nil
219219 else throw("Strict value is not equal to itself.")
220220 }
221221 else throw("Strict value is not equal to itself.")
222222 }
223223 else throw("Strict value is not equal to itself.")
224224 }
225225 else throw("Strict value is not equal to itself.")
226226 }
227227
228228
229229
230230 @Callable(i)
231231 func a5 (a) = if ((i.caller != this))
232232 then throw("you are not allowed to arb!")
233233 else {
234234 let usdnBalanceBefore = assetBalance(this, usdnAssetId)
235235 if ((usdnBalanceBefore == usdnBalanceBefore))
236236 then {
237237 let putTheTokenInThePool = invoke(wxWxPool, "putOneTkn", [1, false], [AttachedPayment(usdnAssetId, (a * 1000000))])
238238 if ((putTheTokenInThePool == putTheTokenInThePool))
239239 then {
240240 let lpTokenBalance = assetBalance(this, usdnWxLPTokenAssetId)
241241 if ((lpTokenBalance == lpTokenBalance))
242242 then {
243243 let sellPoolToken = invoke(wxWxPool, "getOneTkn", [wxAssetIdString, 1], [AttachedPayment(usdnWxLPTokenAssetId, lpTokenBalance)])
244244 if ((sellPoolToken == sellPoolToken))
245245 then {
246246 let wxBalToSwap = assetBalance(this, wxAssetId)
247247 let swapWxOnSwop = invoke(swopWxPool, "exchange", [1], [AttachedPayment(wxAssetId, wxBalToSwap)])
248248 if ((swapWxOnSwop == swapWxOnSwop))
249249 then {
250250 let usdnBalanceAfter = assetBalance(this, usdnAssetId)
251251 if ((usdnBalanceAfter == usdnBalanceAfter))
252252 then if ((0 >= (usdnBalanceAfter - usdnBalanceBefore)))
253253 then throw("WX WX -> SWOP [($_$)]")
254254 else nil
255255 else throw("Strict value is not equal to itself.")
256256 }
257257 else throw("Strict value is not equal to itself.")
258258 }
259259 else throw("Strict value is not equal to itself.")
260260 }
261261 else throw("Strict value is not equal to itself.")
262262 }
263263 else throw("Strict value is not equal to itself.")
264264 }
265265 else throw("Strict value is not equal to itself.")
266266 }
267267
268268
269269
270270 @Callable(i)
271271 func a6 (a) = if ((i.caller != this))
272272 then throw("you are not allowed to arb!")
273273 else {
274274 let usdnBalanceBefore = assetBalance(this, usdnAssetId)
275275 if ((usdnBalanceBefore == usdnBalanceBefore))
276276 then {
277277 let swapToWxOnSwop = invoke(swopWxPool, "exchange", [1], [AttachedPayment(usdnAssetId, (a * 1000000))])
278278 if ((swapToWxOnSwop == swapToWxOnSwop))
279279 then {
280280 let wxBalToSwap = assetBalance(this, wxAssetId)
281281 let putTheTokenInThePool = invoke(wxWxPool, "putOneTkn", [1, false], [AttachedPayment(wxAssetId, wxBalToSwap)])
282282 if ((putTheTokenInThePool == putTheTokenInThePool))
283283 then {
284284 let lpTokenBalance = assetBalance(this, usdnWxLPTokenAssetId)
285285 if ((lpTokenBalance == lpTokenBalance))
286286 then {
287287 let sellPoolToken = invoke(wxWxPool, "getOneTkn", [usdnAssetIdString, 1], [AttachedPayment(usdnWxLPTokenAssetId, lpTokenBalance)])
288288 if ((sellPoolToken == sellPoolToken))
289289 then {
290290 let usdnBalanceAfter = assetBalance(this, usdnAssetId)
291291 if ((usdnBalanceAfter == usdnBalanceAfter))
292292 then if ((0 >= (usdnBalanceAfter - usdnBalanceBefore)))
293293 then throw("WX SWOP -> WX [($_$)]")
294294 else nil
295295 else throw("Strict value is not equal to itself.")
296296 }
297297 else throw("Strict value is not equal to itself.")
298298 }
299299 else throw("Strict value is not equal to itself.")
300300 }
301301 else throw("Strict value is not equal to itself.")
302302 }
303303 else throw("Strict value is not equal to itself.")
304304 }
305305 else throw("Strict value is not equal to itself.")
306306 }
307307
308308
309309
310310 @Callable(i)
311311 func a7 (a) = if ((i.caller != this))
312312 then throw("you are not allowed to arb!")
313313 else {
314314 let usdnBalanceBefore = assetBalance(this, usdnAssetId)
315315 if ((usdnBalanceBefore == usdnBalanceBefore))
316316 then {
317317 let buyUsdcOnPuzzle = invoke(puzzleUsdcPool, "swap", [usdcAssetIdString, 1], [AttachedPayment(usdnAssetId, (a * 1000000))])
318318 if ((buyUsdcOnPuzzle == buyUsdcOnPuzzle))
319319 then {
320320 let usdcBalToSwap = assetBalance(this, usdcAssetId)
321321 if ((usdcBalToSwap == usdcBalToSwap))
322322 then {
323323 let putTheTokenInThePool = invoke(wxUsdcPool, "putOneTknV2", [1, false], [AttachedPayment(usdcAssetId, usdcBalToSwap)])
324324 if ((putTheTokenInThePool == putTheTokenInThePool))
325325 then {
326326 let lpTokenBalance = assetBalance(this, usdcWxLPTokenAssetId)
327327 if ((lpTokenBalance == lpTokenBalance))
328328 then {
329329 let sellPoolToken = invoke(wxUsdcPool, "getOneTknV2", [usdnAssetIdString, 1], [AttachedPayment(usdcWxLPTokenAssetId, lpTokenBalance)])
330330 if ((sellPoolToken == sellPoolToken))
331331 then {
332332 let usdnBalanceAfter = assetBalance(this, usdnAssetId)
333333 if ((usdnBalanceAfter == usdnBalanceAfter))
334334 then if ((0 >= (usdnBalanceAfter - usdnBalanceBefore)))
335335 then throw("USDC PUZZLE -> WX [($_$)]")
336336 else nil
337337 else throw("Strict value is not equal to itself.")
338338 }
339339 else throw("Strict value is not equal to itself.")
340340 }
341341 else throw("Strict value is not equal to itself.")
342342 }
343343 else throw("Strict value is not equal to itself.")
344344 }
345345 else throw("Strict value is not equal to itself.")
346346 }
347347 else throw("Strict value is not equal to itself.")
348348 }
349349 else throw("Strict value is not equal to itself.")
350350 }
351351
352352
353353
354354 @Callable(i)
355355 func a8 (a) = if ((i.caller != this))
356356 then throw("you are not allowed to arb!")
357357 else {
358358 let usdnBalanceBefore = assetBalance(this, usdnAssetId)
359359 if ((usdnBalanceBefore == usdnBalanceBefore))
360360 then {
361361 let putTheTokenInThePool = invoke(wxUsdcPool, "putOneTknV2", [1, false], [AttachedPayment(usdnAssetId, (a * 1000000))])
362362 if ((putTheTokenInThePool == putTheTokenInThePool))
363363 then {
364364 let lpTokenBalance = assetBalance(this, usdcWxLPTokenAssetId)
365365 if ((lpTokenBalance == lpTokenBalance))
366366 then {
367367 let sellPoolToken = invoke(wxUsdcPool, "getOneTknV2", [usdcAssetIdString, 1], [AttachedPayment(usdcWxLPTokenAssetId, lpTokenBalance)])
368368 if ((sellPoolToken == sellPoolToken))
369369 then {
370370 let usdcBalToSwap = assetBalance(this, usdcAssetId)
371371 if ((usdcBalToSwap == usdcBalToSwap))
372372 then {
373373 let sellUsdcOnPuzzle = invoke(puzzleUsdcPool, "swap", [usdnAssetIdString, 1], [AttachedPayment(usdcAssetId, usdcBalToSwap)])
374374 if ((sellUsdcOnPuzzle == sellUsdcOnPuzzle))
375375 then {
376376 let usdnBalanceAfter = assetBalance(this, usdnAssetId)
377377 if ((usdnBalanceAfter == usdnBalanceAfter))
378378 then if ((0 >= (usdnBalanceAfter - usdnBalanceBefore)))
379379 then throw("USDC WX -> PUZZLE [($_$)]")
380380 else nil
381381 else throw("Strict value is not equal to itself.")
382382 }
383383 else throw("Strict value is not equal to itself.")
384384 }
385385 else throw("Strict value is not equal to itself.")
386386 }
387387 else throw("Strict value is not equal to itself.")
388388 }
389389 else throw("Strict value is not equal to itself.")
390390 }
391391 else throw("Strict value is not equal to itself.")
392392 }
393393 else throw("Strict value is not equal to itself.")
394394 }
395395
396396
397397
398398 @Callable(i)
399399 func a9 (a) = if ((i.caller != this))
400400 then throw("you are not allowed to arb!")
401401 else {
402402 let usdnBalanceBefore = assetBalance(this, usdnAssetId)
403403 if ((usdnBalanceBefore == usdnBalanceBefore))
404404 then {
405405 let buyUsdtOnPuzzle = invoke(puzzleUsdtPool, "swap", [usdtAssetIdString, 1], [AttachedPayment(usdnAssetId, (a * 1000000))])
406406 if ((buyUsdtOnPuzzle == buyUsdtOnPuzzle))
407407 then {
408408 let usdtBalToSwap = assetBalance(this, usdtAssetId)
409409 if ((usdtBalToSwap == usdtBalToSwap))
410410 then {
411411 let putTheTokenInThePool = invoke(wxUsdtPool, "putOneTknV2", [1, false], [AttachedPayment(usdtAssetId, usdtBalToSwap)])
412412 if ((putTheTokenInThePool == putTheTokenInThePool))
413413 then {
414414 let lpTokenBalance = assetBalance(this, usdtWxLPTokenAssetId)
415415 if ((lpTokenBalance == lpTokenBalance))
416416 then {
417417 let sellPoolToken = invoke(wxUsdtPool, "getOneTknV2", [usdnAssetIdString, 1], [AttachedPayment(usdtWxLPTokenAssetId, lpTokenBalance)])
418418 if ((sellPoolToken == sellPoolToken))
419419 then {
420420 let usdnBalanceAfter = assetBalance(this, usdnAssetId)
421421 if ((usdnBalanceAfter == usdnBalanceAfter))
422422 then if ((0 >= (usdnBalanceAfter - usdnBalanceBefore)))
423423 then throw("USDT PUZZLE -> WX [($_$)]")
424424 else nil
425425 else throw("Strict value is not equal to itself.")
426426 }
427427 else throw("Strict value is not equal to itself.")
428428 }
429429 else throw("Strict value is not equal to itself.")
430430 }
431431 else throw("Strict value is not equal to itself.")
432432 }
433433 else throw("Strict value is not equal to itself.")
434434 }
435435 else throw("Strict value is not equal to itself.")
436436 }
437437 else throw("Strict value is not equal to itself.")
438438 }
439439
440440
441441
442442 @Callable(i)
443443 func a10 (a) = if ((i.caller != this))
444444 then throw("you are not allowed to arb!")
445445 else {
446446 let usdnBalanceBefore = assetBalance(this, usdnAssetId)
447447 if ((usdnBalanceBefore == usdnBalanceBefore))
448448 then {
449449 let putTheTokenInThePool = invoke(wxUsdtPool, "putOneTknV2", [1, false], [AttachedPayment(usdnAssetId, (a * 1000000))])
450450 if ((putTheTokenInThePool == putTheTokenInThePool))
451451 then {
452452 let lpTokenBalance = assetBalance(this, usdtWxLPTokenAssetId)
453453 if ((lpTokenBalance == lpTokenBalance))
454454 then {
455455 let sellPoolToken = invoke(wxUsdtPool, "getOneTknV2", [usdtAssetIdString, 1], [AttachedPayment(usdtWxLPTokenAssetId, lpTokenBalance)])
456456 if ((sellPoolToken == sellPoolToken))
457457 then {
458458 let usdtBalToSwap = assetBalance(this, usdtAssetId)
459459 if ((usdtBalToSwap == usdtBalToSwap))
460460 then {
461461 let sellUsdtOnPuzzle = invoke(puzzleUsdtPool, "swap", [usdnAssetIdString, 1], [AttachedPayment(usdtAssetId, usdtBalToSwap)])
462462 if ((sellUsdtOnPuzzle == sellUsdtOnPuzzle))
463463 then {
464464 let usdnBalanceAfter = assetBalance(this, usdnAssetId)
465465 if ((usdnBalanceAfter == usdnBalanceAfter))
466466 then if ((0 >= (usdnBalanceAfter - usdnBalanceBefore)))
467467 then throw("USDT WX -> PUZZLE [($_$)]")
468468 else nil
469469 else throw("Strict value is not equal to itself.")
470470 }
471471 else throw("Strict value is not equal to itself.")
472472 }
473473 else throw("Strict value is not equal to itself.")
474474 }
475475 else throw("Strict value is not equal to itself.")
476476 }
477477 else throw("Strict value is not equal to itself.")
478478 }
479479 else throw("Strict value is not equal to itself.")
480480 }
481481 else throw("Strict value is not equal to itself.")
482482 }
483483
484484
485485
486486 @Callable(i)
487487 func a11 (a) = if ((i.caller != this))
488488 then throw("you are not allowed to arb!")
489489 else {
490490 let usdnBalanceBefore = assetBalance(this, usdnAssetId)
491491 if ((usdnBalanceBefore == usdnBalanceBefore))
492492 then {
493493 let buyTsnOnPuzzle = invoke(puzzleTsnPool, "swap", [tsnAssetIdString, 1], [AttachedPayment(usdnAssetId, (a * 1000000))])
494494 if ((buyTsnOnPuzzle == buyTsnOnPuzzle))
495495 then {
496496 let tsnBalToSwap = assetBalance(this, tsnAssetId)
497497 if ((tsnBalToSwap == tsnBalToSwap))
498498 then {
499499 let putTheTokenInThePool = invoke(wxTsnPool, "putOneTkn", [1, false], [AttachedPayment(tsnAssetId, tsnBalToSwap)])
500500 if ((putTheTokenInThePool == putTheTokenInThePool))
501501 then {
502502 let lpTokenBalance = assetBalance(this, tsnWxLPTokenAssetId)
503503 if ((lpTokenBalance == lpTokenBalance))
504504 then {
505505 let sellPoolToken = invoke(wxTsnPool, "getOneTkn", [usdnAssetIdString, 1], [AttachedPayment(tsnWxLPTokenAssetId, lpTokenBalance)])
506506 if ((sellPoolToken == sellPoolToken))
507507 then {
508508 let usdnBalanceAfter = assetBalance(this, usdnAssetId)
509509 if ((usdnBalanceAfter == usdnBalanceAfter))
510510 then if ((0 >= (usdnBalanceAfter - usdnBalanceBefore)))
511511 then throw("TSN PUZZLE -> WX [($_$)]")
512512 else nil
513513 else throw("Strict value is not equal to itself.")
514514 }
515515 else throw("Strict value is not equal to itself.")
516516 }
517517 else throw("Strict value is not equal to itself.")
518518 }
519519 else throw("Strict value is not equal to itself.")
520520 }
521521 else throw("Strict value is not equal to itself.")
522522 }
523523 else throw("Strict value is not equal to itself.")
524524 }
525525 else throw("Strict value is not equal to itself.")
526526 }
527527
528528
529529
530530 @Callable(i)
531531 func a12 (a) = if ((i.caller != this))
532532 then throw("you are not allowed to arb!")
533533 else {
534534 let usdnBalanceBefore = assetBalance(this, usdnAssetId)
535535 if ((usdnBalanceBefore == usdnBalanceBefore))
536536 then {
537537 let putTheTokenInThePool = invoke(wxTsnPool, "putOneTkn", [1, false], [AttachedPayment(usdnAssetId, (a * 1000000))])
538538 if ((putTheTokenInThePool == putTheTokenInThePool))
539539 then {
540540 let lpTokenBalance = assetBalance(this, tsnWxLPTokenAssetId)
541541 if ((lpTokenBalance == lpTokenBalance))
542542 then {
543543 let sellPoolToken = invoke(wxTsnPool, "getOneTkn", [tsnAssetIdString, 1], [AttachedPayment(tsnWxLPTokenAssetId, lpTokenBalance)])
544544 if ((sellPoolToken == sellPoolToken))
545545 then {
546546 let tsnBalToSwap = assetBalance(this, tsnAssetId)
547547 if ((tsnBalToSwap == tsnBalToSwap))
548548 then {
549549 let selltsnOnPuzzle = invoke(puzzleTsnPool, "swap", [usdnAssetIdString, 1], [AttachedPayment(tsnAssetId, tsnBalToSwap)])
550550 if ((selltsnOnPuzzle == selltsnOnPuzzle))
551551 then {
552552 let usdnBalanceAfter = assetBalance(this, usdnAssetId)
553553 if ((usdnBalanceAfter == usdnBalanceAfter))
554554 then if ((0 >= (usdnBalanceAfter - usdnBalanceBefore)))
555555 then throw("TSN WX -> PUZZLE [($_$)]")
556556 else nil
557557 else throw("Strict value is not equal to itself.")
558558 }
559559 else throw("Strict value is not equal to itself.")
560560 }
561561 else throw("Strict value is not equal to itself.")
562562 }
563563 else throw("Strict value is not equal to itself.")
564564 }
565565 else throw("Strict value is not equal to itself.")
566566 }
567567 else throw("Strict value is not equal to itself.")
568568 }
569569 else throw("Strict value is not equal to itself.")
570570 }
571571
572572
573573
574574 @Callable(i)
575575 func a13 (a) = if ((i.caller != this))
576576 then throw("you are not allowed to arb!")
577577 else {
578578 let usdnBalanceBefore = assetBalance(this, usdnAssetId)
579579 if ((usdnBalanceBefore == usdnBalanceBefore))
580580 then {
581581 let putTheTokenInThePool = invoke(wxBtcPool, "putOneTkn", [1, false], [AttachedPayment(usdnAssetId, (a * 1000000))])
582582 if ((putTheTokenInThePool == putTheTokenInThePool))
583583 then {
584584 let lpTokenBalance = assetBalance(this, btcWxLPTokenAssetId)
585585 if ((lpTokenBalance == lpTokenBalance))
586586 then {
587587 let sellPoolToken = invoke(wxBtcPool, "getOneTkn", [btcAssetIdString, 1], [AttachedPayment(btcWxLPTokenAssetId, lpTokenBalance)])
588588 if ((sellPoolToken == sellPoolToken))
589589 then {
590590 let btcBalToSwap = assetBalance(this, btcAssetId)
591591 let swapBtcOnSwop = invoke(swopBtcPool, "exchange", [1], [AttachedPayment(btcAssetId, btcBalToSwap)])
592592 if ((swapBtcOnSwop == swapBtcOnSwop))
593593 then {
594594 let usdnBalanceAfter = assetBalance(this, usdnAssetId)
595595 if ((usdnBalanceAfter == usdnBalanceAfter))
596596 then if ((0 >= (usdnBalanceAfter - usdnBalanceBefore)))
597- then throw("WX WX -> SWOP [($_$)]")
597+ then throw("BTC WX -> SWOP [($_$)]")
598598 else nil
599599 else throw("Strict value is not equal to itself.")
600600 }
601601 else throw("Strict value is not equal to itself.")
602602 }
603603 else throw("Strict value is not equal to itself.")
604604 }
605605 else throw("Strict value is not equal to itself.")
606606 }
607607 else throw("Strict value is not equal to itself.")
608608 }
609609 else throw("Strict value is not equal to itself.")
610610 }
611611
612612
613613
614614 @Callable(i)
615615 func a14 (a) = if ((i.caller != this))
616616 then throw("you are not allowed to arb!")
617617 else {
618618 let usdnBalanceBefore = assetBalance(this, usdnAssetId)
619619 if ((usdnBalanceBefore == usdnBalanceBefore))
620620 then {
621621 let swapToBtcOnSwop = invoke(swopBtcPool, "exchange", [1], [AttachedPayment(usdnAssetId, (a * 1000000))])
622622 if ((swapToBtcOnSwop == swapToBtcOnSwop))
623623 then {
624624 let btcBalToSwap = assetBalance(this, btcAssetId)
625625 let putTheTokenInThePool = invoke(wxBtcPool, "putOneTkn", [1, false], [AttachedPayment(btcAssetId, btcBalToSwap)])
626626 if ((putTheTokenInThePool == putTheTokenInThePool))
627627 then {
628628 let lpTokenBalance = assetBalance(this, btcWxLPTokenAssetId)
629629 if ((lpTokenBalance == lpTokenBalance))
630630 then {
631631 let sellPoolToken = invoke(wxBtcPool, "getOneTkn", [usdnAssetIdString, 1], [AttachedPayment(btcWxLPTokenAssetId, lpTokenBalance)])
632632 if ((sellPoolToken == sellPoolToken))
633633 then {
634634 let usdnBalanceAfter = assetBalance(this, usdnAssetId)
635635 if ((usdnBalanceAfter == usdnBalanceAfter))
636636 then if ((0 >= (usdnBalanceAfter - usdnBalanceBefore)))
637- then throw("WX SWOP -> WX [($_$)]")
637+ then throw("BTC SWOP -> WX [($_$)]")
638638 else nil
639639 else throw("Strict value is not equal to itself.")
640640 }
641641 else throw("Strict value is not equal to itself.")
642642 }
643643 else throw("Strict value is not equal to itself.")
644644 }
645645 else throw("Strict value is not equal to itself.")
646646 }
647647 else throw("Strict value is not equal to itself.")
648648 }
649649 else throw("Strict value is not equal to itself.")
650650 }
651651
652652
653653 @Verifier(tx)
654654 func verify () = sigVerify_128Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
655655

github/deemru/w8io/3ef1775 
81.76 ms