tx · 56SZ52Ui6whgJ3PXKKH4x8PWbRWovBKMZmpQz2DXHda6

3PLYyoymYb83rsZQr73JvjifrWUuwsndaJ9:  -0.03500000 Waves

2023.01.30 12:47 [3493088] smart account 3PLYyoymYb83rsZQr73JvjifrWUuwsndaJ9 > SELF 0.00000000 Waves

{ "type": 13, "id": "56SZ52Ui6whgJ3PXKKH4x8PWbRWovBKMZmpQz2DXHda6", "fee": 3500000, "feeAssetId": null, "timestamp": 1675072142274, "version": 2, "chainId": 87, "sender": "3PLYyoymYb83rsZQr73JvjifrWUuwsndaJ9", "senderPublicKey": "H4fKUnUe4wm4b2RQhrHiT6NoVhLSSC6rocfxk3AhUgKx", "proofs": [ "5CDGQLDsvfZB8AkPaxAGKM4GdFzQ8uFzQu6ZXqWB6igBc4YFkYCfZvmabd1diNzMa2sv9Jk1nTqYdjbakL1hUHUu" ], "script": "base64:BgIuCAISCAoGCAgICAgBEgASABIDCgEEEgASAwoBARIAEgMKAQgSAwoBBBIECgIIAS4AC3VzZG5Bc3NldElkASC2JinDBPXOU5GkDkt1JC9kjFGx+t+vVCm9SNIdKrKq0QANcHV6emxlQXNzZXRJZAEg8Rr+Jf72mTj0aSrE3+ES1keyxsoOujcJr3dtH46i5WMAC3VzZHRBc3NldElkASAelAcTUnahJZX9yGGogl8Qf986Tym7/JpGP1r9Nk+fkQAOdXNkbkFzc2V0SWRTdHICLERHMnhGa1BkRHdLVW9Ca3pHQWhRdExwU0d6ZlhMaUNZUEV6ZUtIMkFkMjRwABBwdXp6bGVBc3NldElkU3RyAixIRUI4UWF3OXhyV3BXczh0SHNpQVRZR0JXREJ0UDJTN2tjUEFMck11NDNBUwAOdXNkdEFzc2V0SWRTdHICLDM0TjlZY0VFVExXbjkzcVlRNjRFc1AxeDg5dFNydUpVNDRSckVNU1hYRVBKABFwYXJlbnRQb29sQWRkcmVzcwkBB0FkZHJlc3MBARoBV5HG6inqeWcP2YTvMnaUs8B1QuQ1g8HTWAANbWFzdGVyQWRkcmVzcwkBB0FkZHJlc3MBARoBV85X8yTRB6SzTv7SuuIorMWQltaK0W0F7gAMbWFzdGVyUHViS2V5ASA7NU1uP5+++FSclkQHgFarL+ITYEXEe/I/F0P0QgUmXQENdHJ5R2V0SW50ZWdlcgEDa2V5BAckbWF0Y2gwCQCaCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWIFByRtYXRjaDAFAWIAAAEMdHJ5R2V0QmluYXJ5AQNrZXkEByRtYXRjaDAJAJwIAgUEdGhpcwUDa2V5AwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAFAWIBAAEMdHJ5R2V0U3RyaW5nAQNrZXkEByRtYXRjaDAJAJ0IAgUEdGhpcwUDa2V5AwkAAQIFByRtYXRjaDACBlN0cmluZwQBYgUHJG1hdGNoMAUBYgIAAQ5nZXRBc3NldFN0cmluZwEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDYBAEFAWICBVdBVkVTAQ1nZXRBc3NldEJ5dGVzAQphc3NldElkU3RyAwkAAAIFCmFzc2V0SWRTdHICBVdBVkVTBQR1bml0CQDZBAEFCmFzc2V0SWRTdHIBE2FkZEFzc2V0Qnl0ZXNUb0xpc3QCBWFjY3VtBGl0ZW0JAM4IAgUFYWNjdW0JAMwIAgkBDWdldEFzc2V0Qnl0ZXMBBQRpdGVtBQNuaWwBFGFkZEFzc2V0V2VpZ2h0VG9MaXN0AgVhY2N1bQRpdGVtCQDOCAIFBWFjY3VtCQDMCAIJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgICB3N0YXRpY18JAQ5nZXRBc3NldFN0cmluZwEFBGl0ZW0CB193ZWlnaHQFA25pbAEWYWRkQXNzZXREZWNpbWFsc1RvTGlzdAIFYWNjdW0EaXRlbQkAzggCBQVhY2N1bQkAzAgCCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICAgdzdGF0aWNfCQEOZ2V0QXNzZXRTdHJpbmcBBQRpdGVtAglfZGVjaW1hbHMFA25pbAETYWRkQXNzZXRTY2FsZVRvTGlzdAIFYWNjdW0EaXRlbQkAzggCBQVhY2N1bQkAzAgCCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICAgdzdGF0aWNfCQEOZ2V0QXNzZXRTdHJpbmcBBQRpdGVtAgZfc2NhbGUFA25pbAEMYWRkSW50VG9MaXN0AgVhY2N1bQRpdGVtCQDOCAIFBWFjY3VtCQDMCAIJAQ1wYXJzZUludFZhbHVlAQUEaXRlbQUDbmlsAAFUCQENdHJ5R2V0SW50ZWdlcgECE3N0YXRpY190b2tlbnNBbW91bnQACGFzc2V0SWRzCgACJGwJALUJAgkBDHRyeUdldFN0cmluZwECD3N0YXRpY190b2tlbklkcwIBLAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQETYWRkQXNzZXRCeXRlc1RvTGlzdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgANQXNzZXRzV2VpZ2h0cwoAAiRsBQhhc3NldElkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEUYWRkQXNzZXRXZWlnaHRUb0xpc3QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjFfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACERlY2ltYWxzCgACJGwFCGFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYyXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARZhZGRBc3NldERlY2ltYWxzVG9MaXN0AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYyXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMl8yAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAZTY2FsZXMKAAIkbAUIYXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjNfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBE2FkZEFzc2V0U2NhbGVUb0xpc3QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjNfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYzXzICCQEFJGYzXzECCQEFJGYzXzECCQEFJGYzXzECCQEFJGYzXzECCQEFJGYzXzECCQEFJGYzXzECCQEFJGYzXzECCQEFJGYzXzECCQEFJGYzXzECCQEFJGYzXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoAA0ZlZQkBDXRyeUdldEludGVnZXIBAgpzdGF0aWNfZmVlABVBc3NldHNXZWlnaHRzRGVjaW1hbHMABAAFU2NhbGUAkE4ABlNjYWxlOACAwtcvAAhGZWVTY2FsZQCQTgARUG9vbFRva2VuRGVjaW1hbHMACAAOUG9vbFRva2VuU2NhbGUJAGwGAAoAAAURUG9vbFRva2VuRGVjaW1hbHMAAAAABQZIQUxGVVAADGVhcm5lZEFzc2V0cwUIYXNzZXRJZHMBCmlzU2h1dGRvd24ABAckbWF0Y2gwCQCbCAIJAQdBZGRyZXNzAQEaAVeNeFN6nxXSPZU0i4J5ZNgZ0ycem/I1WqgCC2lzX3NodXRkb3duAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAXgFByRtYXRjaDAFAXgHARZnZXRDdXJyZW50VG9rZW5CYWxhbmNlAQl0b2tlblR5cGUEB3Rva2VuSWQJAQ5nZXRBc3NldFN0cmluZwEJAJEDAgUIYXNzZXRJZHMFCXRva2VuVHlwZQkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgIHZ2xvYmFsXwUHdG9rZW5JZAIIX2JhbGFuY2UBEGNhbGN1bGF0ZVBJc3N1ZWQCBmFtb3VudAd0b2tlbklkBAdQc3VwcGx5CQENdHJ5R2V0SW50ZWdlcgECF2dsb2JhbF9wb29sVG9rZW5fYW1vdW50BAdCYWxhbmNlCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICAgdnbG9iYWxfCQEOZ2V0QXNzZXRTdHJpbmcBBQd0b2tlbklkAghfYmFsYW5jZQkAbgQFBmFtb3VudAUHUHN1cHBseQUHQmFsYW5jZQUERE9XTgENZ2V0TWluUElzc3VlZAEIcGF5bWVudHMKAQdoYW5kbGVyAgVhY2N1bQdjdXJyZW50BAdQSXNzdWVkCQEQY2FsY3VsYXRlUElzc3VlZAIIBQdjdXJyZW50BmFtb3VudAgFB2N1cnJlbnQHYXNzZXRJZAMJAAACBQdQSXNzdWVkAAAJAAIBAiRvbmUgb2YgdGhlIHRva2VucyBhbW91bnRzIGlzIHRvbyBsb3cDAwkAAAIFBWFjY3VtAAAGCQBmAgUFYWNjdW0FB1BJc3N1ZWQFB1BJc3N1ZWQFBWFjY3VtBAltaW5QSXNzZWQKAAIkbAUIcGF5bWVudHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjRfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2hhbmRsZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjRfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGY0XzICCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoFCW1pblBJc3NlZAESY2FsY3VsYXRlVXNkblZhbHVlBAdhc3NldElkBmFtb3VudAhhQmFsYW5jZRBnaXZlblVzZG5CYWxhbmNlBAp1c2RuSW5Qb29sCQDPCAIFCGFzc2V0SWRzBQt1c2RuQXNzZXRJZAQKdXNkdEluUG9vbAkAzwgCBQhhc3NldElkcwULdXNkdEFzc2V0SWQEC2Fzc2V0V2VpZ2h0CQCRAwIFDUFzc2V0c1dlaWdodHMJAQV2YWx1ZQEJAM8IAgUIYXNzZXRJZHMFB2Fzc2V0SWQDAwkAAAIFCnVzZG5JblBvb2wFBHVuaXQJAAACBQp1c2R0SW5Qb29sBQR1bml0BwQMcHV6emxlV2VpZ2h0CQCRAwIFDUFzc2V0c1dlaWdodHMJAQV2YWx1ZQEJAM8IAgUIYXNzZXRJZHMFDXB1enpsZUFzc2V0SWQEDXB1enpsZUJhbGFuY2UJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgICB2dsb2JhbF8FEHB1enpsZUFzc2V0SWRTdHICCF9iYWxhbmNlBA5hbW91bnRJblB1enpsZQkAawMFBmFtb3VudAkAaQIFDXB1enpsZUJhbGFuY2UFDHB1enpsZVdlaWdodAkAaQIFCGFCYWxhbmNlBQthc3NldFdlaWdodAQLcHV6emxlUHJpY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFEXBhcmVudFBvb2xBZGRyZXNzAhZnbG9iYWxfbGFzdFB1enpsZVByaWNlCQBrAwkAaAIFDmFtb3VudEluUHV6emxlBQtwdXp6bGVQcmljZQABBQZTY2FsZTgDCQECIT0CBQp1c2R0SW5Qb29sBQR1bml0BAp1c2R0V2VpZ2h0CQCRAwIFDUFzc2V0c1dlaWdodHMJAQV2YWx1ZQEFCnVzZHRJblBvb2wEC3VzZHRCYWxhbmNlCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICAgdnbG9iYWxfBQ51c2R0QXNzZXRJZFN0cgIIX2JhbGFuY2UJAGsDBQZhbW91bnQJAGkCBQt1c2R0QmFsYW5jZQUKdXNkdFdlaWdodAkAaQIFCGFCYWxhbmNlBQthc3NldFdlaWdodAQKdXNkbldlaWdodAkAkQMCBQ1Bc3NldHNXZWlnaHRzCQEFdmFsdWUBCQDPCAIFCGFzc2V0SWRzBQt1c2RuQXNzZXRJZAQLdXNkbkJhbGFuY2UEByRtYXRjaDAFEGdpdmVuVXNkbkJhbGFuY2UDCQABAgUHJG1hdGNoMAIDSW50BAF4BQckbWF0Y2gwBRBnaXZlblVzZG5CYWxhbmNlCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICAgdnbG9iYWxfCQEOZ2V0QXNzZXRTdHJpbmcBBQt1c2RuQXNzZXRJZAIIX2JhbGFuY2UJAGsDBQZhbW91bnQJAGkCCQEFdmFsdWUBBQt1c2RuQmFsYW5jZQUKdXNkbldlaWdodAkAaQIFCGFCYWxhbmNlBQthc3NldFdlaWdodAETY2hlY2tUb2tlbnNWYWxpZGl0eQEIcGF5bWVudHMKAQhoYW5kbGVyMQIFYWNjdW0HcGF5bWVudAkAzggCBQVhY2N1bQkAzAgCCAUHcGF5bWVudAdhc3NldElkBQNuaWwEA2lkcwoAAiRsBQhwYXltZW50cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmNF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIaGFuZGxlcjECBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjRfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGY0XzICCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDCQAAAgUDaWRzBQNpZHMKAQhoYW5kbGVyMgIFYWNjdW0HYXNzZXRJZAMJAQIhPQIJAM8IAgUDaWRzBQdhc3NldElkBQR1bml0CQBkAgUFYWNjdW0AAQkAAgEJAKwCAgIUYXNzZXQgbm90IGF0dGFjaGVkOiAJAQ5nZXRBc3NldFN0cmluZwEFB2Fzc2V0SWQEBmNoZWNrcwoAAiRsBQhhc3NldElkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmNV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIaGFuZGxlcjICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjVfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGY1XzICCQEFJGY1XzECCQEFJGY1XzECCQEFJGY1XzECCQEFJGY1XzECCQEFJGY1XzECCQEFJGY1XzECCQEFJGY1XzECCQEFJGY1XzECCQEFJGY1XzECCQEFJGY1XzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDCQAAAgUGY2hlY2tzBQZjaGVja3MGCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARNoYW5kbGVQb29sVG9rZW5zQWRkBAdQSXNzdWVkCHBheW1lbnRzC3VzZXJBZGRyZXNzCm5lZWRDaGFuZ2UKARVnZXRUb2tlblBheW1lbnRBbW91bnQBB3Rva2VuSWQKAQdoYW5kbGVyAgVhY2N1bQdwYXltZW50AwkAAAIIBQdwYXltZW50B2Fzc2V0SWQFB3Rva2VuSWQIBQdwYXltZW50BmFtb3VudAUFYWNjdW0KAAIkbAUIcGF5bWVudHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjRfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2hhbmRsZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjRfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGY0XzICCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoKARFoYW5kbGVUb2tlbkNoYW5nZQIFYWNjdW0HdG9rZW5JZAQCQmsJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgICB2dsb2JhbF8JAQ5nZXRBc3NldFN0cmluZwEFB3Rva2VuSWQCCF9iYWxhbmNlBAdQU3VwcGx5CQENdHJ5R2V0SW50ZWdlcgECF2dsb2JhbF9wb29sVG9rZW5fYW1vdW50BA10b2tlbkRlY2ltYWxzCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICAgdzdGF0aWNfCQEOZ2V0QXNzZXRTdHJpbmcBBQd0b2tlbklkAgZfc2NhbGUEAkRrCQBuBAkAZQIJAG4ECQBkAgUHUFN1cHBseQUHUElzc3VlZAUNdG9rZW5EZWNpbWFscwUHUFN1cHBseQUHQ0VJTElORwUNdG9rZW5EZWNpbWFscwUCQmsFDXRva2VuRGVjaW1hbHMFB0NFSUxJTkcEDXBheW1lbnRBbW91bnQJARVnZXRUb2tlblBheW1lbnRBbW91bnQBBQd0b2tlbklkBAh0b1JldHVybgkAZQIDCQECIT0CBQ1wYXltZW50QW1vdW50AAAFDXBheW1lbnRBbW91bnQAAAUCRGsEAXQDAwUKbmVlZENoYW5nZQkAZgIFCHRvUmV0dXJuAAAHCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQh0b1JldHVybgUHdG9rZW5JZAUDbmlsBQNuaWwJAM4IAgkAzggCBQVhY2N1bQUBdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgICB2dsb2JhbF8JAQ5nZXRBc3NldFN0cmluZwEFB3Rva2VuSWQCCF9iYWxhbmNlCQBkAgUCQmsFAkRrBQNuaWwKAAIkbAUIYXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjRfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEWhhbmRsZVRva2VuQ2hhbmdlAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGY0XzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmNF8yAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKARZoYW5kbGVQb29sVG9rZW5zUmVkZWVtAglQUmVkZWVtZWQLdXNlckFkZHJlc3MKARFoYW5kbGVUb2tlblJlZGVlbQIFYWNjdW0HdG9rZW5JZAQCQmsJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgICB2dsb2JhbF8JAQ5nZXRBc3NldFN0cmluZwEFB3Rva2VuSWQCCF9iYWxhbmNlBAdQU3VwcGx5CQENdHJ5R2V0SW50ZWdlcgECF2dsb2JhbF9wb29sVG9rZW5fYW1vdW50BA10b2tlbkRlY2ltYWxzCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICAgdzdGF0aWNfCQEOZ2V0QXNzZXRTdHJpbmcBBQd0b2tlbklkAgZfc2NhbGUEBmFtb3VudAkAoAMBCQC9AgQJALgCAgkAtgIBBQZTY2FsZTgJAL0CBAkAtgIBCQBlAgUHUFN1cHBseQUJUFJlZGVlbWVkCQC2AgEFBlNjYWxlOAkAtgIBBQdQU3VwcGx5BQdDRUlMSU5HCQC2AgEFAkJrCQC2AgEFBlNjYWxlOAUERE9XTgkAzggCBQVhY2N1bQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgICB2dsb2JhbF8JAQ5nZXRBc3NldFN0cmluZwEFB3Rva2VuSWQCCF9iYWxhbmNlCQBlAgUCQmsFBmFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQt1c2VyQWRkcmVzcwUGYW1vdW50BQd0b2tlbklkBQNuaWwKAAIkbAUIYXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjRfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEWhhbmRsZVRva2VuUmVkZWVtAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGY0XzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmNF8yAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKARJjYWxjdWxhdGVPdXRBbW91bnQFCEFtb3VudEluB2Fzc2V0SW4IYXNzZXRPdXQJQmFsYW5jZUluCkJhbGFuY2VPdXQEB0luZGV4SW4JAQV2YWx1ZQEJAM8IAgUIYXNzZXRJZHMFB2Fzc2V0SW4ECEluZGV4T3V0CQEFdmFsdWUBCQDPCAIFCGFzc2V0SWRzBQhhc3NldE91dAMJAAACBQdJbmRleEluBQhJbmRleE91dAUIQW1vdW50SW4JAG4EBQpCYWxhbmNlT3V0CQBlAgkAaAIFBlNjYWxlOAUGU2NhbGU4CQCgAwEJAHYGCQC9AgQJALYCAQUJQmFsYW5jZUluCQC2AgEJAGgCBQZTY2FsZTgFBlNjYWxlOAkAtgIBCQBkAgUJQmFsYW5jZUluBQhBbW91bnRJbgUGSEFMRlVQABAJALYCAQkAawMJAJEDAgUNQXNzZXRzV2VpZ2h0cwUHSW5kZXhJbgCQTgkAkQMCBQ1Bc3NldHNXZWlnaHRzBQhJbmRleE91dAAEABAFB0NFSUxJTkcJAGgCBQZTY2FsZTgFBlNjYWxlOAUERE9XTgEPZ2V0VG9rZW5CYWxhbmNlAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAXQFByRtYXRjaDAJAPAHAgUEdGhpcwUBdAgJAO8HAQUEdGhpcwlhdmFpbGFibGUBHWNhbGN1bGF0ZUN1cnJlbnRBc3NldEludGVyZXN0BAdhc3NldElkCmFzc2V0SWRTdHIIYUJhbGFuY2UWdG9rZW5FYXJuaW5nc0xhc3RDaGVjawQLdG90YWxTdGFrZWQJAQ10cnlHZXRJbnRlZ2VyAQISZ2xvYmFsX2luZGV4U3Rha2VkBBV0b2tlbkJhbGFuY2VMYXN0Q2hlY2sFFnRva2VuRWFybmluZ3NMYXN0Q2hlY2sEE2N1cnJlbnRCYWxhbmNlRGVsdGEJAGUCCQEPZ2V0VG9rZW5CYWxhbmNlAQUHYXNzZXRJZAUIYUJhbGFuY2UEFGN1cnJlbnRUb2tlbkVhcm5pbmdzAwkAZgIFE2N1cnJlbnRCYWxhbmNlRGVsdGEFFXRva2VuQmFsYW5jZUxhc3RDaGVjawUTY3VycmVudEJhbGFuY2VEZWx0YQUVdG9rZW5CYWxhbmNlTGFzdENoZWNrBAtuZXdFYXJuaW5ncwkAZQIFFGN1cnJlbnRUb2tlbkVhcm5pbmdzBRV0b2tlbkJhbGFuY2VMYXN0Q2hlY2sEC25ld0ludGVyZXN0AwkAAAIFC3RvdGFsU3Rha2VkAAAAAAkAawMFC25ld0Vhcm5pbmdzBQZTY2FsZTgFC3RvdGFsU3Rha2VkBBFsYXN0Q2hlY2tJbnRlcmVzdAkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgIRZ2xvYmFsX2xhc3RDaGVja18FCmFzc2V0SWRTdHICCV9pbnRlcmVzdAkAZAIFEWxhc3RDaGVja0ludGVyZXN0BQtuZXdJbnRlcmVzdAELY2xhaW1SZXN1bHQBB2FkZHJlc3MECmFkZHJlc3NTdHIJAKUIAQUHYWRkcmVzcwQMcHV6emxlQW1vdW50CQENdHJ5R2V0SW50ZWdlcgEJAKwCAgUKYWRkcmVzc1N0cgIMX2luZGV4U3Rha2VkCgEHaGFuZGxlcgIFYWNjdW0HYXNzZXRJZAQKYXNzZXRJZFN0cgkBDmdldEFzc2V0U3RyaW5nAQUHYXNzZXRJZAQIYUJhbGFuY2UJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgICB2dsb2JhbF8JAQ5nZXRBc3NldFN0cmluZwEFB2Fzc2V0SWQCCF9iYWxhbmNlBBZ0b2tlbkVhcm5pbmdzTGFzdENoZWNrCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICAhFnbG9iYWxfbGFzdENoZWNrXwUKYXNzZXRJZFN0cgIJX2Vhcm5pbmdzBBRjdXJyZW50VG9rZW5JbnRlcmVzdAkBHWNhbGN1bGF0ZUN1cnJlbnRBc3NldEludGVyZXN0BAUHYXNzZXRJZAUKYXNzZXRJZFN0cgUIYUJhbGFuY2UFFnRva2VuRWFybmluZ3NMYXN0Q2hlY2sEFGN1cnJlbnRUb2tlbkVhcm5pbmdzCQCWAwEJAMwIAgUWdG9rZW5FYXJuaW5nc0xhc3RDaGVjawkAzAgCCQBlAgkBD2dldFRva2VuQmFsYW5jZQEFB2Fzc2V0SWQFCGFCYWxhbmNlBQNuaWwEDHJld2FyZEFtb3VudAkAawMFDHB1enpsZUFtb3VudAkAZQIFFGN1cnJlbnRUb2tlbkludGVyZXN0CQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICCQCsAgIFCmFkZHJlc3NTdHICC19sYXN0Q2hlY2tfBQphc3NldElkU3RyAglfaW50ZXJlc3QFBlNjYWxlOAQIdHJhbnNmZXIDCQAAAgUMcmV3YXJkQW1vdW50AAAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQdhZGRyZXNzBQxyZXdhcmRBbW91bnQFB2Fzc2V0SWQFA25pbAkAlAoCCQDOCAIJAM4IAggFBWFjY3VtAl8xBQh0cmFuc2ZlcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgICEWdsb2JhbF9sYXN0Q2hlY2tfBQphc3NldElkU3RyAglfZWFybmluZ3MJAGUCBRRjdXJyZW50VG9rZW5FYXJuaW5ncwUMcmV3YXJkQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgIRZ2xvYmFsX2xhc3RDaGVja18FCmFzc2V0SWRTdHICCV9pbnRlcmVzdAUUY3VycmVudFRva2VuSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFCmFkZHJlc3NTdHICC19sYXN0Q2hlY2tfBQphc3NldElkU3RyAglfaW50ZXJlc3QFFGN1cnJlbnRUb2tlbkludGVyZXN0BQNuaWwJAGQCCAUFYWNjdW0CXzIJARJjYWxjdWxhdGVVc2RuVmFsdWUEBQdhc3NldElkBQxyZXdhcmRBbW91bnQFCGFCYWxhbmNlBQR1bml0BAVhY2N1bQoAAiRsBQxlYXJuZWRBc3NldHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAAACgEFJGY0XzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdoYW5kbGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGY0XzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmNF8yAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKCQCUCgIJAM4IAggFBWFjY3VtAl8xCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCmFkZHJlc3NTdHICE19jbGFpbWVkUmV3YXJkVmFsdWUJAGQCCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgUKYWRkcmVzc1N0cgITX2NsYWltZWRSZXdhcmRWYWx1ZQgFBWFjY3VtAl8yCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCmFkZHJlc3NTdHICCl9sYXN0Q2xhaW0IBQlsYXN0QmxvY2sJdGltZXN0YW1wBQNuaWwIBQVhY2N1bQJfMgEQaW5kZXhTdGFrZVJlc3VsdAIKYWRkcmVzc1N0cgZhbW91bnQEAmxpCAkBC2NsYWltUmVzdWx0AQkBEUBleHRyTmF0aXZlKDEwNjIpAQUKYWRkcmVzc1N0cgJfMQkAzggCBQJsaQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQphZGRyZXNzU3RyAgxfaW5kZXhTdGFrZWQJAGQCCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgUKYWRkcmVzc1N0cgIMX2luZGV4U3Rha2VkBQZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQICEmdsb2JhbF9pbmRleFN0YWtlZAkAZAIJAQ10cnlHZXRJbnRlZ2VyAQISZ2xvYmFsX2luZGV4U3Rha2VkBQZhbW91bnQFA25pbAEDc3VtAgVhY2N1bQFuCQBkAgUFYWNjdW0JAQ1wYXJzZUludFZhbHVlAQUBbgoBaQEHcHJlSW5pdAYLYXNzZXRJZHNTdHIPYXNzZXRXZWlnaHRzU3RyDmJhc2VUb2tlbklkU3RyCnBvb2xEb21haW4JcG9vbE93bmVyA2ZlZQQQcG9vbE93bmVyQWRkcmVzcwkBB0FkZHJlc3MBCQDZBAEFCXBvb2xPd25lcgMJAQppc1NodXRkb3duAAkAAgECE2NvbnRyYWN0IGlzIG9uIHN0b3ADCQECIT0CBQR0aGlzCAUBaQZjYWxsZXIJAAIBAgphZG1pbiBvbmx5AwkAZgIJALECAQUKcG9vbERvbWFpbgANCQACAQIVdG9vIGxhcmdlIHBvb2wgZG9tYWluAwMJAGYCBQNmZWUA9AMGCQBmAgAyBQNmZWUJAAIBAi1mZWUgdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDUwIGFuZCA1MDAgKDAuNS01JSkDAwMJAAACCQCzCQIFC2Fzc2V0SWRzU3RyBRBwdXp6bGVBc3NldElkU3RyBQR1bml0CQAAAgkAswkCBQthc3NldElkc1N0cgUOdXNkbkFzc2V0SWRTdHIFBHVuaXQHCQAAAgkAswkCBQthc3NldElkc1N0cgUOdXNkdEFzc2V0SWRTdHIFBHVuaXQHCQACAQI2cG9vbCBtdXN0IGhhdmUgVVNEVCwgVVNETiBvciBQVVpaTEUgaW4gdGhlIGNvbXBvc2l0aW9uBA1hc3NldElkc1N0ckxpCQC1CQIFC2Fzc2V0SWRzU3RyAgEsBAphc3NldElkc0xpCgACJGwFDWFzc2V0SWRzU3RyTGkKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjRfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBE2FkZEFzc2V0Qnl0ZXNUb0xpc3QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjRfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGY0XzICCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoEEWFzc2V0V2VpZ2h0c1N0ckxpCQC1CQIFD2Fzc2V0V2VpZ2h0c1N0cgIBLAQPYXNzZXRXZWlnaHRzU3VtCgACJGwFEWFzc2V0V2VpZ2h0c1N0ckxpCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGY1XzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQNzdW0CBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjVfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGY1XzICCQEFJGY1XzECCQEFJGY1XzECCQEFJGY1XzECCQEFJGY1XzECCQEFJGY1XzECCQEFJGY1XzECCQEFJGY1XzECCQEFJGY1XzECCQEFJGY1XzECCQEFJGY1XzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoEC2ZlZUFzc2V0U3RyAwkAAAIJALMJAgULYXNzZXRJZHNTdHIFDnVzZG5Bc3NldElkU3RyBQR1bml0AwkAAAIJALMJAgULYXNzZXRJZHNTdHIFEHB1enpsZUFzc2V0SWRTdHIFBHVuaXQFDnVzZHRBc3NldElkU3RyBRBwdXp6bGVBc3NldElkU3RyBQ51c2RuQXNzZXRJZFN0cgoBE2FkZFRva2VuRGF0YUVudHJpZXMCBWFjY3VtCGFzc2V0TnVtAwkAZwIFCGFzc2V0TnVtCQCQAwEFCmFzc2V0SWRzTGkFBWFjY3VtBA1hc3NldERlY2ltYWxzBAckbWF0Y2gwCQCRAwIFCmFzc2V0SWRzTGkFCGFzc2V0TnVtAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAXgFByRtYXRjaDAICQEFdmFsdWUBCQDsBwEFAXgIZGVjaW1hbHMACAkAzggCBQVhY2N1bQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgICB3N0YXRpY18JAJEDAgUNYXNzZXRJZHNTdHJMaQUIYXNzZXROdW0CBl9zY2FsZQkAbAYACgAABQ1hc3NldERlY2ltYWxzAAAAAAUERE9XTgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgICB3N0YXRpY18JAJEDAgUNYXNzZXRJZHNTdHJMaQUIYXNzZXROdW0CCV9kZWNpbWFscwUNYXNzZXREZWNpbWFscwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgICB3N0YXRpY18JAJEDAgUNYXNzZXRJZHNTdHJMaQUIYXNzZXROdW0CB193ZWlnaHQJAQV2YWx1ZQEJALYJAQkAkQMCBRFhc3NldFdlaWdodHNTdHJMaQUIYXNzZXROdW0FA25pbAMJAQIhPQIFD2Fzc2V0V2VpZ2h0c1N1bQCQTgkAAgECK3N1bSBvZiB0b2tlbiB3ZWlnaHRzIG11c3QgYmUgZXF1YWwgdG8gMTAwMDAJAM4IAgoAAiRsCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQUDbmlsCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGY2XzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARNhZGRUb2tlbkRhdGFFbnRyaWVzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGY2XzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmNl8yAgkBBSRmNl8xAgkBBSRmNl8xAgkBBSRmNl8xAgkBBSRmNl8xAgkBBSRmNl8xAgkBBSRmNl8xAgkBBSRmNl8xAgkBBSRmNl8xAgkBBSRmNl8xAgkBBSRmNl8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKCQDMCAIJAQtTdHJpbmdFbnRyeQICD3N0YXRpY190b2tlbklkcwULYXNzZXRJZHNTdHIJAMwIAgkBC1N0cmluZ0VudHJ5AgIPc3RhdGljX2ZlZVRva2VuBQtmZWVBc3NldFN0cgkAzAgCCQELU3RyaW5nRW50cnkCAhNzdGF0aWNfdG9rZW5XZWlnaHRzBQ9hc3NldFdlaWdodHNTdHIJAMwIAgkBDEludGVnZXJFbnRyeQICE3N0YXRpY190b2tlbnNBbW91bnQJAJADAQUKYXNzZXRJZHNMaQkAzAgCCQELU3RyaW5nRW50cnkCAhFzdGF0aWNfcG9vbERvbWFpbgUKcG9vbERvbWFpbgkAzAgCCQELU3RyaW5nRW50cnkCAhJzdGF0aWNfYmFzZVRva2VuSWQFDmJhc2VUb2tlbklkU3RyCQDMCAIJAQtTdHJpbmdFbnRyeQICEHN0YXRpY19wb29sT3duZXIFCXBvb2xPd25lcgkAzAgCCQEMSW50ZWdlckVudHJ5AgIKc3RhdGljX2ZlZQUDZmVlBQNuaWwBaQEGZGVJbml0AAMJAQppc1NodXRkb3duAAkAAgECE2NvbnRyYWN0IGlzIG9uIHN0b3ADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgphZG1pbiBvbmx5CQDMCAIJAQxJbnRlZ2VyRW50cnkCAhBnbG9iYWxfd2FzSW5pdGVkAAAFA25pbAFpAQRpbml0AAoBC3ByZXBhcmVMaXN0AAoBB2hhbmRsZXICBWFjY3VtAW4JAM4IAgUFYWNjdW0JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICAgdnbG9iYWxfCQEOZ2V0QXNzZXRTdHJpbmcBCAUBbgdhc3NldElkAghfYmFsYW5jZQgFAW4GYW1vdW50BQNuaWwKAAIkbAgFAWkIcGF5bWVudHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjRfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2hhbmRsZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjRfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGY0XzICCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoKARljYWxjdWxhdGVQb29sVG9rZW5zQW1vdW50AQhwYXltZW50cwoBB2hhbmRsZXICBWFjY3VtA3BtdAQHYXNzZXRJZAgFA3BtdAdhc3NldElkCgEIaGFuZGxlcjICBWFjY3VtAW4DCQAAAgUBbgUHYXNzZXRJZAkBBXZhbHVlAQkAzwgCBQhhc3NldElkcwUBbgUFYWNjdW0EBVRva2VuCgACJGwFCGFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAABCgEFJGY0XzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhoYW5kbGVyMgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmNF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjRfMgIJAQUkZjRfMQIJAQUkZjRfMQIJAQUkZjRfMQIJAQUkZjRfMQIJAQUkZjRfMQIJAQUkZjRfMQIJAQUkZjRfMQIJAQUkZjRfMQIJAQUkZjRfMQIJAQUkZjRfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgkAawMFBWFjY3VtCQBsBggFA3BtdAZhbW91bnQJAJEDAgUIRGVjaW1hbHMFBVRva2VuCQCRAwIFDUFzc2V0c1dlaWdodHMFBVRva2VuBRVBc3NldHNXZWlnaHRzRGVjaW1hbHMACAUFRkxPT1IFBlNjYWxlOAoAAiRsBQhwYXltZW50cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFDlBvb2xUb2tlblNjYWxlCgEFJGY0XzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdoYW5kbGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGY0XzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmNF8yAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAwkBCmlzU2h1dGRvd24ACQACAQITY29udHJhY3QgaXMgb24gc3RvcAMJAGYCCQENdHJ5R2V0SW50ZWdlcgECEGdsb2JhbF93YXNJbml0ZWQAAAkAAgECE3Bvb2wgYWxyZWFkeSBpbml0ZWQEEWluaXRpYWxQb29sVG9rZW5zCQEZY2FsY3VsYXRlUG9vbFRva2Vuc0Ftb3VudAEIBQFpCHBheW1lbnRzAwkAAAIFEWluaXRpYWxQb29sVG9rZW5zAAAJAAIBAjJ5b3UgbmVlZCBhIGJpZ2dlciB0b2tlbnMgYW1vdW50IHRvIGxhdW5jaCB0aGUgcG9vbAQOcG9vbFRva2VuSXNzdWUJAMMIBwkArAICAgNQWiAJAQx0cnlHZXRTdHJpbmcBAhFzdGF0aWNfcG9vbERvbWFpbgIdUHV6emxlIFN3YXA6IHBvb2wgaW5kZXggdG9rZW4FEWluaXRpYWxQb29sVG9rZW5zBRFQb29sVG9rZW5EZWNpbWFscwYFBHVuaXQAAAQLcG9vbFRva2VuSWQJALgIAQUOcG9vbFRva2VuSXNzdWUJAM4IAgkBC3ByZXBhcmVMaXN0AAkAzAgCBQ5wb29sVG9rZW5Jc3N1ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIXZ2xvYmFsX3Bvb2xUb2tlbl9hbW91bnQFEWluaXRpYWxQb29sVG9rZW5zCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhBnbG9iYWxfd2FzSW5pdGVkAAEJAMwIAgkBC0JpbmFyeUVudHJ5AgITZ2xvYmFsX3Bvb2xUb2tlbl9pZAULcG9vbFRva2VuSWQJAMwIAgkBC1N0cmluZ0VudHJ5AgIWc3RhdGljX3Bvb2xUb2tlbl9pZFN0cgkBDmdldEFzc2V0U3RyaW5nAQULcG9vbFRva2VuSWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkApQgBCAUBaQZjYWxsZXICDF9pbmRleFN0YWtlZAURaW5pdGlhbFBvb2xUb2tlbnMJAMwIAgkBDEludGVnZXJFbnRyeQICEmdsb2JhbF9pbmRleFN0YWtlZAURaW5pdGlhbFBvb2xUb2tlbnMFA25pbAFpAQ1nZW5lcmF0ZUluZGV4AQpuZWVkQ2hhbmdlAwkBCmlzU2h1dGRvd24ACQACAQITY29udHJhY3QgaXMgb24gc3RvcAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMFAVQJAAIBCQCsAgICO3lvdSBuZWVkIHRvIGF0dGFjaCBhbGwgcG9vbCB0b2tlbnMuIGFtb3VudCBvZiBwb29sIHRva2VuczogCQCkAwEFAVQDCQEBIQEJARNjaGVja1Rva2Vuc1ZhbGlkaXR5AQgFAWkIcGF5bWVudHMJAAIBAhV3cm9uZyBhc3NldHMgYXR0YWNoZWQEB1BJc3N1ZWQJAQ1nZXRNaW5QSXNzdWVkAQgFAWkIcGF5bWVudHMEB3JlaXNzdWUJAQdSZWlzc3VlAwkBEUBleHRyTmF0aXZlKDEwNTcpAQITZ2xvYmFsX3Bvb2xUb2tlbl9pZAUHUElzc3VlZAYEBnJlc3VsdAkBE2hhbmRsZVBvb2xUb2tlbnNBZGQEBQdQSXNzdWVkCAUBaQhwYXltZW50cwgFAWkMb3JpZ2luQ2FsbGVyBQpuZWVkQ2hhbmdlCQCUCgIJAM4IAgUGcmVzdWx0CQDMCAIFB3JlaXNzdWUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQdQSXNzdWVkCQEMdHJ5R2V0QmluYXJ5AQITZ2xvYmFsX3Bvb2xUb2tlbl9pZAkAzAgCCQEMSW50ZWdlckVudHJ5AgIXZ2xvYmFsX3Bvb2xUb2tlbl9hbW91bnQJAGQCCQENdHJ5R2V0SW50ZWdlcgECF2dsb2JhbF9wb29sVG9rZW5fYW1vdW50BQdQSXNzdWVkBQNuaWwFB1BJc3N1ZWQBaQEKc3Rha2VJbmRleAAECmFkZHJlc3NTdHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAMJAQppc1NodXRkb3duAAkAAgECE2NvbnRyYWN0IGlzIG9uIHN0b3ADCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQJAQx0cnlHZXRCaW5hcnkBAhNnbG9iYWxfcG9vbFRva2VuX2lkCQACAQIUd3JvbmcgYXNzZXQgYXR0YWNoZWQJARBpbmRleFN0YWtlUmVzdWx0AgUKYWRkcmVzc1N0cggFA3BtdAZhbW91bnQBaQEMdW5zdGFrZUluZGV4AQxwdXp6bGVBbW91bnQECmFkZHJlc3NTdHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBA9wdXp6bGVBdmFpbGFibGUJAQ10cnlHZXRJbnRlZ2VyAQkArAICBQphZGRyZXNzU3RyAgxfaW5kZXhTdGFrZWQDCQEKaXNTaHV0ZG93bgAJAAIBAhNjb250cmFjdCBpcyBvbiBzdG9wAwkAZgIFDHB1enpsZUFtb3VudAUPcHV6emxlQXZhaWxhYmxlCQACAQIleW91IGRvbid0IGhhdmUgaW5kZXggdG9rZW5zIGF2YWlsYWJsZQMJAQppc1NodXRkb3duAAkAAgECE2NvbnRyYWN0IGlzIG9uIHN0b3AJAM4IAggJAQtjbGFpbVJlc3VsdAEIBQFpDG9yaWdpbkNhbGxlcgJfMQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQphZGRyZXNzU3RyAgxfaW5kZXhTdGFrZWQJAGUCBQ9wdXp6bGVBdmFpbGFibGUFDHB1enpsZUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgISZ2xvYmFsX2luZGV4U3Rha2VkCQBlAgkBDXRyeUdldEludGVnZXIBAhJnbG9iYWxfaW5kZXhTdGFrZWQFDHB1enpsZUFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFDHB1enpsZUFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTcpAQITZ2xvYmFsX3Bvb2xUb2tlbl9pZAUDbmlsAWkBEWNsYWltSW5kZXhSZXdhcmRzAAMJAQppc1NodXRkb3duAAkAAgECE2NvbnRyYWN0IGlzIG9uIHN0b3AJAQtjbGFpbVJlc3VsdAEIBQFpBmNhbGxlcgFpAQ1ldmFsdWF0ZUNsYWltAQR1c2VyCQCUCgIFA25pbAgJAQtjbGFpbVJlc3VsdAEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBHVzZXICXzIBaQELcmVkZWVtSW5kZXgBDHNlbmRUb09yaWdpbgQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQJAQx0cnlHZXRCaW5hcnkBAhNnbG9iYWxfcG9vbFRva2VuX2lkCQACAQIecGxlYXNlIGF0dGFjaCBwb29sIHNoYXJlIHRva2VuAwkBCmlzU2h1dGRvd24ACQACAQITY29udHJhY3QgaXMgb24gc3RvcAQJUFJlZGVlbWVkCAUDcG10BmFtb3VudAQGcmVzdWx0CQEWaGFuZGxlUG9vbFRva2Vuc1JlZGVlbQIFCVBSZWRlZW1lZAMFDHNlbmRUb09yaWdpbggFAWkMb3JpZ2luQ2FsbGVyCAUBaQZjYWxsZXIJAM4IAgUGcmVzdWx0CQDMCAIJAQRCdXJuAgkBDHRyeUdldEJpbmFyeQECE2dsb2JhbF9wb29sVG9rZW5faWQFCVBSZWRlZW1lZAkAzAgCCQEMSW50ZWdlckVudHJ5AgIXZ2xvYmFsX3Bvb2xUb2tlbl9hbW91bnQJAGUCCQENdHJ5R2V0SW50ZWdlcgECF2dsb2JhbF9wb29sVG9rZW5fYW1vdW50BQlQUmVkZWVtZWQFA25pbAFpAQRzd2FwAghhc3NldE91dAdtaW5pbXVtBANwbXQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABCQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAJAAIBAiFwbGVhc2UgYXR0YWNoIGV4YWN0bHkgb25lIHBheW1lbnQECEFtb3VudEluCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQHQXNzZXRJbggFA3BtdAdhc3NldElkBAhBc3NldE91dAkBDWdldEFzc2V0Qnl0ZXMBBQhhc3NldE91dAQOZmVlQXNzZXRPdXRTdHIJAQx0cnlHZXRTdHJpbmcBAg9zdGF0aWNfZmVlVG9rZW4EC2ZlZUFzc2V0T3V0AwkAAAIFDmZlZUFzc2V0T3V0U3RyAgAFC3VzZG5Bc3NldElkCQDZBAEFDmZlZUFzc2V0T3V0U3RyBA5Bc3NldEluQmFsYW5jZQkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgIHZ2xvYmFsXwkBDmdldEFzc2V0U3RyaW5nAQUHQXNzZXRJbgIIX2JhbGFuY2UED0Fzc2V0T3V0QmFsYW5jZQkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgIHZ2xvYmFsXwUIYXNzZXRPdXQCCF9iYWxhbmNlBAtmZWVBbW91bnRJbgkAawMFCEFtb3VudEluBQNGZWUFCEZlZVNjYWxlBA1jbGVhbkFtb3VudEluCQBlAgUIQW1vdW50SW4FC2ZlZUFtb3VudEluBAlBbW91bnRPdXQJARJjYWxjdWxhdGVPdXRBbW91bnQFBQ1jbGVhbkFtb3VudEluBQdBc3NldEluBQhBc3NldE91dAUOQXNzZXRJbkJhbGFuY2UFD0Fzc2V0T3V0QmFsYW5jZQQQQXNzZXRPdXRCYWxhbmNlMgkAZQIFD0Fzc2V0T3V0QmFsYW5jZQUJQW1vdW50T3V0BA9Bc3NldEluQmFsYW5jZTIJAGQCBQ5Bc3NldEluQmFsYW5jZQUNY2xlYW5BbW91bnRJbgQSZmVlQXNzZXRPdXRCYWxhbmNlAwkAAAIFC2ZlZUFzc2V0T3V0BQdBc3NldEluBQ9Bc3NldEluQmFsYW5jZTIDCQAAAgULZmVlQXNzZXRPdXQFCEFzc2V0T3V0BRBBc3NldE91dEJhbGFuY2UyCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICAgdnbG9iYWxfCQEOZ2V0QXNzZXRTdHJpbmcBBQtmZWVBc3NldE91dAIIX2JhbGFuY2UEDGZlZUFtb3VudE91dAkBEmNhbGN1bGF0ZU91dEFtb3VudAUFC2ZlZUFtb3VudEluBQdBc3NldEluBQtmZWVBc3NldE91dAUOQXNzZXRJbkJhbGFuY2UFEmZlZUFzc2V0T3V0QmFsYW5jZQMJAGYCBQdtaW5pbXVtBQlBbW91bnRPdXQJAAIBCQCsAgICK2Ftb3VudCB0byByZWNpZXZlIGlzIGxvd2VyIHRoYW4gZ2l2ZW4gb25lOiAJAKQDAQUJQW1vdW50T3V0AwkAAAIFCEFzc2V0T3V0BQdBc3NldEluCQACAQIYdGhpcyBzd2FwIGlzIG5vdCBhbGxvd2VkAwkAZgIAAAkAZQIFD0Fzc2V0T3V0QmFsYW5jZQUJQW1vdW50T3V0CQACAQIbY29udHJhY3QgaXMgb3V0IG9mIHJlc2VydmVzAwkBCmlzU2h1dGRvd24ACQACAQITY29udHJhY3QgaXMgb24gc3RvcAQKY3JlYXRvckZlZQkAawMFDGZlZUFtb3VudE91dAABAAoEC3Byb3RvY29sRmVlCQBrAwUMZmVlQW1vdW50T3V0AAQACgQMc3Rha2luZ1RvcFVwAwkAAAIFC2ZlZUFzc2V0T3V0BQt1c2RuQXNzZXRJZAkA/QcECQEHQWRkcmVzcwEBGgFXlGiM+e6iuaqf1vWOvKmPZxqcBvQWKYm7Agt0b3BVcFJld2FyZAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQtmZWVBc3NldE91dAULcHJvdG9jb2xGZWUFA25pbAUEdW5pdAMJAAACBQxzdGFraW5nVG9wVXAFDHN0YWtpbmdUb3BVcAQMbmV3QmFsYW5jZUluCQBlAgUPQXNzZXRJbkJhbGFuY2UyAwkAAAIFB0Fzc2V0SW4FC2ZlZUFzc2V0T3V0BQxmZWVBbW91bnRPdXQAAAQNbmV3QmFsYW5jZU91dAkAZQIFEEFzc2V0T3V0QmFsYW5jZTIDCQAAAgUIQXNzZXRPdXQFC2ZlZUFzc2V0T3V0BQxmZWVBbW91bnRPdXQAAAQSbmV3QmFsYW5jZUZlZUFzc2V0AwMJAQIhPQIFC2ZlZUFzc2V0T3V0BQdBc3NldEluCQECIT0CBQtmZWVBc3NldE91dAUIQXNzZXRPdXQHCQBlAgUSZmVlQXNzZXRPdXRCYWxhbmNlBQxmZWVBbW91bnRPdXQFBHVuaXQEDWFzc2V0SW5DaGFuZ2UJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgIHZ2xvYmFsXwkBDmdldEFzc2V0U3RyaW5nAQUHQXNzZXRJbgIIX2JhbGFuY2UFDG5ld0JhbGFuY2VJbgQOYXNzZXRPdXRDaGFuZ2UJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgIHZ2xvYmFsXwUIYXNzZXRPdXQCCF9iYWxhbmNlBQ1uZXdCYWxhbmNlT3V0BBFmZWVBc3NldE91dENoYW5nZQMJAQIhPQIFEm5ld0JhbGFuY2VGZWVBc3NldAUEdW5pdAkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICAgdnbG9iYWxfCQEOZ2V0QXNzZXRTdHJpbmcBBQtmZWVBc3NldE91dAIIX2JhbGFuY2UFEmZlZUFzc2V0T3V0QmFsYW5jZQkBC1N0cmluZ0VudHJ5AgIFaGVsbG8CBXdvcmxkCQCUCgIJAM4IAgkAzAgCBQ5hc3NldE91dENoYW5nZQkAzAgCBQ1hc3NldEluQ2hhbmdlCQDMCAIFEWZlZUFzc2V0T3V0Q2hhbmdlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUJQW1vdW50T3V0BQhBc3NldE91dAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQEMdHJ5R2V0U3RyaW5nAQIQc3RhdGljX3Bvb2xPd25lcgUKY3JlYXRvckZlZQULZmVlQXNzZXRPdXQJAMwIAgkBDEludGVnZXJFbnRyeQICFGdsb2JhbF9lYXJuZWRCeU93bmVyCQBkAgkBDXRyeUdldEludGVnZXIBAhRnbG9iYWxfZWFybmVkQnlPd25lcgUKY3JlYXRvckZlZQkAzAgCCQEMSW50ZWdlckVudHJ5AgINZ2xvYmFsX3ZvbHVtZQkAZAIJAQ10cnlHZXRJbnRlZ2VyAQINZ2xvYmFsX3ZvbHVtZQkBEmNhbGN1bGF0ZVVzZG5WYWx1ZQQFB0Fzc2V0SW4FCEFtb3VudEluBQ5Bc3NldEluQmFsYW5jZQUSZmVlQXNzZXRPdXRCYWxhbmNlBQNuaWwDCQAAAgUMc3Rha2luZ1RvcFVwBQR1bml0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQEaAVce4ftAMWuB5uxLVhsFLFGhk27fCbE80sEFC3Byb3RvY29sRmVlBQtmZWVBc3NldE91dAUDbmlsBQNuaWwFCUFtb3VudE91dAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQADCQEKaXNTaHV0ZG93bgAHAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleQYJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFDG1hc3RlclB1YktleV6psVg=", "height": 3493088, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BMdvBVQfX88mCKjqVbKm7UqqgntLUzjHHCW6sQtJFv2x Next: 8vkntYCnNm75MKjFZyjTCF7wdWxStCwe8GpeaakX2YQK Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
55
66 let b = base58'HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS'
77
8-let c = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
8+let c = base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ'
99
10-let d = "HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS"
10+let d = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
1111
12-let e = Address(base58'3PFDgzu1UtswAkCMxqqQjbTeHaX4cMab8Kh')
12+let e = "HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS"
1313
14-let f = Address(base58'3PLjwHcz9NEuaTo63NZR9B9okQiKQxZSbmf')
14+let f = "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"
1515
16-let g = base58'4z8CKSYQBKkzx7PBb5uBP1YPa6YAHRNTApW1sQVHT5eU'
16+let g = Address(base58'3PFDgzu1UtswAkCMxqqQjbTeHaX4cMab8Kh')
1717
18-func h (i) = {
19- let j = getInteger(this, i)
20- if ($isInstanceOf(j, "Int"))
18+let h = Address(base58'3PLjwHcz9NEuaTo63NZR9B9okQiKQxZSbmf')
19+
20+let i = base58'4z8CKSYQBKkzx7PBb5uBP1YPa6YAHRNTApW1sQVHT5eU'
21+
22+func j (k) = {
23+ let l = getInteger(this, k)
24+ if ($isInstanceOf(l, "Int"))
2125 then {
22- let k = j
23- k
26+ let m = l
27+ m
2428 }
2529 else 0
2630 }
2731
2832
29-func l (i) = {
30- let j = getBinary(this, i)
31- if ($isInstanceOf(j, "ByteVector"))
33+func n (k) = {
34+ let l = getBinary(this, k)
35+ if ($isInstanceOf(l, "ByteVector"))
3236 then {
33- let k = j
34- k
37+ let m = l
38+ m
3539 }
3640 else base58''
3741 }
3842
3943
40-func m (i) = {
41- let j = getString(this, i)
42- if ($isInstanceOf(j, "String"))
44+func o (k) = {
45+ let l = getString(this, k)
46+ if ($isInstanceOf(l, "String"))
4347 then {
44- let k = j
45- k
48+ let m = l
49+ m
4650 }
4751 else ""
4852 }
4953
5054
51-func n (o) = {
52- let j = o
53- if ($isInstanceOf(j, "ByteVector"))
55+func p (q) = {
56+ let l = q
57+ if ($isInstanceOf(l, "ByteVector"))
5458 then {
55- let k = j
56- toBase58String(k)
59+ let m = l
60+ toBase58String(m)
5761 }
5862 else "WAVES"
5963 }
6064
6165
62-func p (q) = if ((q == "WAVES"))
66+func r (s) = if ((s == "WAVES"))
6367 then unit
64- else fromBase58String(q)
68+ else fromBase58String(s)
6569
6670
67-func r (s,t) = (s ++ [p(t)])
71+func t (u,v) = (u ++ [r(v)])
6872
6973
70-func u (s,t) = (s ++ [h((("static_" + n(t)) + "_weight"))])
74+func w (u,v) = (u ++ [j((("static_" + p(v)) + "_weight"))])
7175
7276
73-func v (s,t) = (s ++ [h((("static_" + n(t)) + "_decimals"))])
77+func x (u,v) = (u ++ [j((("static_" + p(v)) + "_decimals"))])
7478
7579
76-func w (s,t) = (s ++ [h((("static_" + n(t)) + "_scale"))])
80+func y (u,v) = (u ++ [j((("static_" + p(v)) + "_scale"))])
7781
7882
79-func x (s,t) = (s ++ [parseIntValue(t)])
83+func z (u,v) = (u ++ [parseIntValue(v)])
8084
8185
82-let y = h("static_tokensAmount")
86+let A = j("static_tokensAmount")
8387
84-let z = {
85- let A = split(m("static_tokenIds"), ",")
86- let B = size(A)
87- let C = nil
88- func D (E,F) = if ((F >= B))
89- then E
90- else r(E, A[F])
88+let B = {
89+ let C = split(o("static_tokenIds"), ",")
90+ let D = size(C)
91+ let E = nil
92+ func F (G,H) = if ((H >= D))
93+ then G
94+ else t(G, C[H])
9195
92- func G (E,F) = if ((F >= B))
93- then E
96+ func I (G,H) = if ((H >= D))
97+ then G
9498 else throw("List size exceeds 10")
9599
96- G(D(D(D(D(D(D(D(D(D(D(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
100+ I(F(F(F(F(F(F(F(F(F(F(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
97101 }
98102
99-let H = {
100- let A = z
101- let B = size(A)
102- let C = nil
103- func I (E,F) = if ((F >= B))
104- then E
105- else u(E, A[F])
103+let J = {
104+ let C = B
105+ let D = size(C)
106+ let E = nil
107+ func K (G,H) = if ((H >= D))
108+ then G
109+ else w(G, C[H])
106110
107- func J (E,F) = if ((F >= B))
108- then E
111+ func L (G,H) = if ((H >= D))
112+ then G
109113 else throw("List size exceeds 10")
110114
111- J(I(I(I(I(I(I(I(I(I(I(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
115+ L(K(K(K(K(K(K(K(K(K(K(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
112116 }
113117
114-let K = {
115- let A = z
116- let B = size(A)
117- let C = nil
118- func L (E,F) = if ((F >= B))
119- then E
120- else v(E, A[F])
118+let M = {
119+ let C = B
120+ let D = size(C)
121+ let E = nil
122+ func N (G,H) = if ((H >= D))
123+ then G
124+ else x(G, C[H])
121125
122- func M (E,F) = if ((F >= B))
123- then E
126+ func O (G,H) = if ((H >= D))
127+ then G
124128 else throw("List size exceeds 10")
125129
126- M(L(L(L(L(L(L(L(L(L(L(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
130+ O(N(N(N(N(N(N(N(N(N(N(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
127131 }
128132
129-let N = {
130- let A = z
131- let B = size(A)
132- let C = nil
133- func O (E,F) = if ((F >= B))
134- then E
135- else w(E, A[F])
133+let P = {
134+ let C = B
135+ let D = size(C)
136+ let E = nil
137+ func Q (G,H) = if ((H >= D))
138+ then G
139+ else y(G, C[H])
136140
137- func P (E,F) = if ((F >= B))
138- then E
141+ func R (G,H) = if ((H >= D))
142+ then G
139143 else throw("List size exceeds 10")
140144
141- P(O(O(O(O(O(O(O(O(O(O(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
145+ R(Q(Q(Q(Q(Q(Q(Q(Q(Q(Q(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
142146 }
143147
144-let Q = h("static_fee")
148+let S = j("static_fee")
145149
146-let R = 4
147-
148-let S = 10000
149-
150-let T = 100000000
150+let T = 4
151151
152152 let U = 10000
153153
154-let V = 8
154+let V = 100000000
155155
156-let W = pow(10, 0, V, 0, 0, HALFUP)
156+let W = 10000
157157
158-let X = z
158+let X = 8
159159
160-func Y () = {
161- let j = getBoolean(Address(base58'3PEpv9hRFWEEBU22WRnLsw1bH4YGtcU728o'), "is_shutdown")
162- if ($isInstanceOf(j, "Boolean"))
160+let Y = pow(10, 0, X, 0, 0, HALFUP)
161+
162+let Z = B
163+
164+func aa () = {
165+ let l = getBoolean(Address(base58'3PEpv9hRFWEEBU22WRnLsw1bH4YGtcU728o'), "is_shutdown")
166+ if ($isInstanceOf(l, "Boolean"))
163167 then {
164- let Z = j
165- Z
168+ let ab = l
169+ ab
166170 }
167171 else false
168172 }
169173
170174
171-func aa (ab) = {
172- let ac = n(z[ab])
173- h((("global_" + ac) + "_balance"))
175+func ac (ad) = {
176+ let ae = p(B[ad])
177+ j((("global_" + ae) + "_balance"))
174178 }
175179
176180
177-func ad (ae,ac) = {
178- let af = h("global_poolToken_amount")
179- let ag = h((("global_" + n(ac)) + "_balance"))
180- fraction(ae, af, ag, DOWN)
181+func af (ag,ae) = {
182+ let ah = j("global_poolToken_amount")
183+ let ai = j((("global_" + p(ae)) + "_balance"))
184+ fraction(ag, ah, ai, DOWN)
181185 }
182186
183187
184-func ah (ai) = {
185- func aj (s,ak) = {
186- let al = ad(ak.amount, ak.assetId)
187- if ((al == 0))
188+func aj (ak) = {
189+ func al (u,am) = {
190+ let an = af(am.amount, am.assetId)
191+ if ((an == 0))
188192 then throw("one of the tokens amounts is too low")
189- else if (if ((s == 0))
193+ else if (if ((u == 0))
190194 then true
191- else (s > al))
192- then al
193- else s
195+ else (u > an))
196+ then an
197+ else u
194198 }
195199
196- let am = {
197- let A = ai
198- let B = size(A)
199- let C = 0
200- func an (E,F) = if ((F >= B))
201- then E
202- else aj(E, A[F])
200+ let ao = {
201+ let C = ak
202+ let D = size(C)
203+ let E = 0
204+ func ap (G,H) = if ((H >= D))
205+ then G
206+ else al(G, C[H])
203207
204- func ao (E,F) = if ((F >= B))
205- then E
208+ func aq (G,H) = if ((H >= D))
209+ then G
206210 else throw("List size exceeds 10")
207211
208- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
212+ aq(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
209213 }
210- am
214+ ao
211215 }
212216
213217
214-func ap (o,ae,aq,ar) = {
215- let as = indexOf(z, a)
216- let at = H[value(indexOf(z, o))]
217- if ((as == unit))
218+func ar (q,ag,as,at) = {
219+ let au = indexOf(B, a)
220+ let av = indexOf(B, c)
221+ let aw = J[value(indexOf(B, q))]
222+ if (if ((au == unit))
223+ then (av == unit)
224+ else false)
218225 then {
219- let au = H[value(indexOf(z, b))]
220- let av = h((("global_" + d) + "_balance"))
221- let aw = fraction(ae, (av / au), (aq / at))
222- let ax = getIntegerValue(e, "global_lastPuzzlePrice")
223- fraction((aw * ax), 1, T)
226+ let ax = J[value(indexOf(B, b))]
227+ let ay = j((("global_" + e) + "_balance"))
228+ let az = fraction(ag, (ay / ax), (as / aw))
229+ let aA = getIntegerValue(g, "global_lastPuzzlePrice")
230+ fraction((az * aA), 1, V)
224231 }
225- else {
226- let ay = H[value(indexOf(z, a))]
227- let az = {
228- let j = ar
229- if ($isInstanceOf(j, "Int"))
230- then {
231- let Z = j
232- ar
233- }
234- else h((("global_" + n(a)) + "_balance"))
232+ else if ((av != unit))
233+ then {
234+ let aB = J[value(av)]
235+ let aC = j((("global_" + f) + "_balance"))
236+ fraction(ag, (aC / aB), (as / aw))
235237 }
236- fraction(ae, (value(az) / ay), (aq / at))
237- }
238+ else {
239+ let aD = J[value(indexOf(B, a))]
240+ let aE = {
241+ let l = at
242+ if ($isInstanceOf(l, "Int"))
243+ then {
244+ let ab = l
245+ at
246+ }
247+ else j((("global_" + p(a)) + "_balance"))
248+ }
249+ fraction(ag, (value(aE) / aD), (as / aw))
250+ }
238251 }
239252
240253
241-func aA (ai) = {
242- func aB (s,aC) = (s ++ [aC.assetId])
254+func aF (ak) = {
255+ func aG (u,aH) = (u ++ [aH.assetId])
243256
244- let aD = {
245- let A = ai
246- let B = size(A)
247- let C = nil
248- func an (E,F) = if ((F >= B))
249- then E
250- else aB(E, A[F])
257+ let aI = {
258+ let C = ak
259+ let D = size(C)
260+ let E = nil
261+ func ap (G,H) = if ((H >= D))
262+ then G
263+ else aG(G, C[H])
251264
252- func ao (E,F) = if ((F >= B))
253- then E
265+ func aq (G,H) = if ((H >= D))
266+ then G
254267 else throw("List size exceeds 10")
255268
256- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
269+ aq(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
257270 }
258- if ((aD == aD))
271+ if ((aI == aI))
259272 then {
260- func aE (s,o) = if ((indexOf(aD, o) != unit))
261- then (s + 1)
262- else throw(("asset not attached: " + n(o)))
273+ func aJ (u,q) = if ((indexOf(aI, q) != unit))
274+ then (u + 1)
275+ else throw(("asset not attached: " + p(q)))
263276
264- let aF = {
265- let A = z
266- let B = size(A)
267- let C = 0
268- func aG (E,F) = if ((F >= B))
269- then E
270- else aE(E, A[F])
277+ let aK = {
278+ let C = B
279+ let D = size(C)
280+ let E = 0
281+ func aL (G,H) = if ((H >= D))
282+ then G
283+ else aJ(G, C[H])
271284
272- func aH (E,F) = if ((F >= B))
273- then E
285+ func aM (G,H) = if ((H >= D))
286+ then G
274287 else throw("List size exceeds 10")
275288
276- aH(aG(aG(aG(aG(aG(aG(aG(aG(aG(aG(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
289+ aM(aL(aL(aL(aL(aL(aL(aL(aL(aL(aL(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
277290 }
278- if ((aF == aF))
291+ if ((aK == aK))
279292 then true
280293 else throw("Strict value is not equal to itself.")
281294 }
283296 }
284297
285298
286-func aI (al,ai,aJ,aK) = {
287- func aL (ac) = {
288- func aj (s,aC) = if ((aC.assetId == ac))
289- then aC.amount
290- else s
299+func aN (an,ak,aO,aP) = {
300+ func aQ (ae) = {
301+ func al (u,aH) = if ((aH.assetId == ae))
302+ then aH.amount
303+ else u
291304
292- let A = ai
293- let B = size(A)
294- let C = 0
295- func an (E,F) = if ((F >= B))
296- then E
297- else aj(E, A[F])
305+ let C = ak
306+ let D = size(C)
307+ let E = 0
308+ func ap (G,H) = if ((H >= D))
309+ then G
310+ else al(G, C[H])
298311
299- func ao (E,F) = if ((F >= B))
300- then E
312+ func aq (G,H) = if ((H >= D))
313+ then G
301314 else throw("List size exceeds 10")
302315
303- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
316+ aq(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
304317 }
305318
306- func aM (s,ac) = {
307- let aN = h((("global_" + n(ac)) + "_balance"))
308- let aO = h("global_poolToken_amount")
309- let aP = h((("static_" + n(ac)) + "_scale"))
310- let aQ = fraction((fraction((aO + al), aP, aO, CEILING) - aP), aN, aP, CEILING)
311- let aR = aL(ac)
312- let aS = ((if ((aR != 0))
313- then aR
314- else 0) - aQ)
315- let aT = if (if (aK)
316- then (aS > 0)
319+ func aR (u,ae) = {
320+ let aS = j((("global_" + p(ae)) + "_balance"))
321+ let aT = j("global_poolToken_amount")
322+ let aU = j((("static_" + p(ae)) + "_scale"))
323+ let aV = fraction((fraction((aT + an), aU, aT, CEILING) - aU), aS, aU, CEILING)
324+ let aW = aQ(ae)
325+ let aX = ((if ((aW != 0))
326+ then aW
327+ else 0) - aV)
328+ let aY = if (if (aP)
329+ then (aX > 0)
317330 else false)
318- then [ScriptTransfer(aJ, aS, ac)]
331+ then [ScriptTransfer(aO, aX, ae)]
319332 else nil
320- ((s ++ aT) ++ [IntegerEntry((("global_" + n(ac)) + "_balance"), (aN + aQ))])
333+ ((u ++ aY) ++ [IntegerEntry((("global_" + p(ae)) + "_balance"), (aS + aV))])
321334 }
322335
323- let A = z
324- let B = size(A)
325- let C = nil
326- func an (E,F) = if ((F >= B))
327- then E
328- else aM(E, A[F])
336+ let C = B
337+ let D = size(C)
338+ let E = nil
339+ func ap (G,H) = if ((H >= D))
340+ then G
341+ else aR(G, C[H])
329342
330- func ao (E,F) = if ((F >= B))
331- then E
343+ func aq (G,H) = if ((H >= D))
344+ then G
332345 else throw("List size exceeds 10")
333346
334- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
347+ aq(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
335348 }
336349
337350
338-func aU (aV,aJ) = {
339- func aW (s,ac) = {
340- let aN = h((("global_" + n(ac)) + "_balance"))
341- let aO = h("global_poolToken_amount")
342- let aP = h((("static_" + n(ac)) + "_scale"))
343- let ae = toInt(fraction((toBigInt(T) - fraction(toBigInt((aO - aV)), toBigInt(T), toBigInt(aO), CEILING)), toBigInt(aN), toBigInt(T), DOWN))
344- (s ++ [IntegerEntry((("global_" + n(ac)) + "_balance"), (aN - ae)), ScriptTransfer(aJ, ae, ac)])
351+func aZ (ba,aO) = {
352+ func bb (u,ae) = {
353+ let aS = j((("global_" + p(ae)) + "_balance"))
354+ let aT = j("global_poolToken_amount")
355+ let aU = j((("static_" + p(ae)) + "_scale"))
356+ let ag = toInt(fraction((toBigInt(V) - fraction(toBigInt((aT - ba)), toBigInt(V), toBigInt(aT), CEILING)), toBigInt(aS), toBigInt(V), DOWN))
357+ (u ++ [IntegerEntry((("global_" + p(ae)) + "_balance"), (aS - ag)), ScriptTransfer(aO, ag, ae)])
345358 }
346359
347- let A = z
348- let B = size(A)
349- let C = nil
350- func an (E,F) = if ((F >= B))
351- then E
352- else aW(E, A[F])
360+ let C = B
361+ let D = size(C)
362+ let E = nil
363+ func ap (G,H) = if ((H >= D))
364+ then G
365+ else bb(G, C[H])
353366
354- func ao (E,F) = if ((F >= B))
355- then E
367+ func aq (G,H) = if ((H >= D))
368+ then G
356369 else throw("List size exceeds 10")
357370
358- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
371+ aq(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
359372 }
360373
361374
362-func aX (aY,aZ,ba,bb,bc) = {
363- let bd = value(indexOf(z, aZ))
364- let be = value(indexOf(z, ba))
365- if ((bd == be))
366- then throw("inalid tokens pair")
367- else fraction(bc, ((T * T) - toInt(pow(fraction(toBigInt(bb), toBigInt((T * T)), toBigInt((bb + aY)), HALFUP), 16, toBigInt(fraction(H[bd], 10000, H[be])), 4, 16, CEILING))), (T * T), DOWN)
375+func bc (bd,be,bf,bg,bh) = {
376+ let bi = value(indexOf(B, be))
377+ let bj = value(indexOf(B, bf))
378+ if ((bi == bj))
379+ then bd
380+ else fraction(bh, ((V * V) - toInt(pow(fraction(toBigInt(bg), toBigInt((V * V)), toBigInt((bg + bd)), HALFUP), 16, toBigInt(fraction(J[bi], 10000, J[bj])), 4, 16, CEILING))), (V * V), DOWN)
368381 }
369382
370383
371-func bf (o) = {
372- let j = o
373- if ($isInstanceOf(j, "ByteVector"))
384+func bk (q) = {
385+ let l = q
386+ if ($isInstanceOf(l, "ByteVector"))
374387 then {
375- let aT = j
376- assetBalance(this, aT)
388+ let aY = l
389+ assetBalance(this, aY)
377390 }
378391 else wavesBalance(this).available
379392 }
380393
381394
382-func bg (o,q,aq,bh) = {
383- let bi = h("global_indexStaked")
384- let bj = bh
385- let bk = (bf(o) - aq)
386- let bl = if ((bk > bj))
387- then bk
388- else bj
389- let bm = (bl - bj)
390- let bn = if ((bi == 0))
395+func bl (q,s,as,bm) = {
396+ let bn = j("global_indexStaked")
397+ let bo = bm
398+ let bp = (bk(q) - as)
399+ let bq = if ((bp > bo))
400+ then bp
401+ else bo
402+ let br = (bq - bo)
403+ let bs = if ((bn == 0))
391404 then 0
392- else fraction(bm, T, bi)
393- let bo = h((("global_lastCheck_" + q) + "_interest"))
394- (bo + bn)
405+ else fraction(br, V, bn)
406+ let bt = j((("global_lastCheck_" + s) + "_interest"))
407+ (bt + bs)
395408 }
396409
397410
398-func bp (bq) = {
399- let br = toString(bq)
400- let bs = h((br + "_indexStaked"))
401- func aj (s,o) = {
402- let q = n(o)
403- let aq = h((("global_" + n(o)) + "_balance"))
404- let bh = h((("global_lastCheck_" + q) + "_earnings"))
405- let bt = bg(o, q, aq, bh)
406- let bl = max([bh, (bf(o) - aq)])
407- let bu = fraction(bs, (bt - h((((br + "_lastCheck_") + q) + "_interest"))), T)
408- let bv = if ((bu == 0))
411+func bu (bv) = {
412+ let bw = toString(bv)
413+ let bx = j((bw + "_indexStaked"))
414+ func al (u,q) = {
415+ let s = p(q)
416+ let as = j((("global_" + p(q)) + "_balance"))
417+ let bm = j((("global_lastCheck_" + s) + "_earnings"))
418+ let by = bl(q, s, as, bm)
419+ let bq = max([bm, (bk(q) - as)])
420+ let bz = fraction(bx, (by - j((((bw + "_lastCheck_") + s) + "_interest"))), V)
421+ let bA = if ((bz == 0))
409422 then nil
410- else [ScriptTransfer(bq, bu, o)]
411- $Tuple2(((s._1 ++ bv) ++ [IntegerEntry((("global_lastCheck_" + q) + "_earnings"), (bl - bu)), IntegerEntry((("global_lastCheck_" + q) + "_interest"), bt), IntegerEntry((((br + "_lastCheck_") + q) + "_interest"), bt)]), (s._2 + ap(o, bu, aq, unit)))
423+ else [ScriptTransfer(bv, bz, q)]
424+ $Tuple2(((u._1 ++ bA) ++ [IntegerEntry((("global_lastCheck_" + s) + "_earnings"), (bq - bz)), IntegerEntry((("global_lastCheck_" + s) + "_interest"), by), IntegerEntry((((bw + "_lastCheck_") + s) + "_interest"), by)]), (u._2 + ar(q, bz, as, unit)))
412425 }
413426
414- let s = {
415- let A = X
416- let B = size(A)
417- let C = $Tuple2(nil, 0)
418- func an (E,F) = if ((F >= B))
419- then E
420- else aj(E, A[F])
427+ let u = {
428+ let C = Z
429+ let D = size(C)
430+ let E = $Tuple2(nil, 0)
431+ func ap (G,H) = if ((H >= D))
432+ then G
433+ else al(G, C[H])
421434
422- func ao (E,F) = if ((F >= B))
423- then E
435+ func aq (G,H) = if ((H >= D))
436+ then G
424437 else throw("List size exceeds 10")
425438
426- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
439+ aq(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
427440 }
428- (s._1 ++ [IntegerEntry((br + "_claimedRewardValue"), (h((br + "_claimedRewardValue")) + s._2)), IntegerEntry((br + "_lastClaim"), lastBlock.timestamp)])
441+ $Tuple2((u._1 ++ [IntegerEntry((bw + "_claimedRewardValue"), (j((bw + "_claimedRewardValue")) + u._2)), IntegerEntry((bw + "_lastClaim"), lastBlock.timestamp)]), u._2)
429442 }
430443
431444
432-func bw (br,ae) = {
433- let bx = bp(addressFromStringValue(br))
434- (bx ++ [IntegerEntry((br + "_indexStaked"), (h((br + "_indexStaked")) + ae)), IntegerEntry("global_indexStaked", (h("global_indexStaked") + ae))])
445+func bB (bw,ag) = {
446+ let bC = bu(addressFromStringValue(bw))._1
447+ (bC ++ [IntegerEntry((bw + "_indexStaked"), (j((bw + "_indexStaked")) + ag)), IntegerEntry("global_indexStaked", (j("global_indexStaked") + ag))])
435448 }
436449
437450
438-func by (s,bz) = (s + parseIntValue(bz))
451+func bD (u,bE) = (u + parseIntValue(bE))
439452
440453
441-@Callable(bA)
442-func preInit (bB,bC,bD,bE,bF,bG) = {
443- let bH = Address(fromBase58String(bF))
444- if ((this != bA.caller))
445- then throw("admin only")
446- else if ((size(bE) > 13))
447- then throw("too large pool domain")
448- else if (if ((bG > 500))
449- then true
450- else (50 > bG))
451- then throw("fee value must be between 50 and 500 (0.5-5%)")
452- else if (if ((indexOf(bB, d) == unit))
453- then (indexOf(bB, c) == unit)
454- else false)
455- then throw("pool must have USDN or PUZZLE in the composition")
456- else {
457- let bI = split(bB, ",")
458- let bJ = {
459- let A = bI
460- let B = size(A)
461- let C = nil
462- func an (E,F) = if ((F >= B))
463- then E
464- else r(E, A[F])
454+@Callable(bF)
455+func preInit (bG,bH,bI,bJ,bK,bL) = {
456+ let bM = Address(fromBase58String(bK))
457+ if (aa())
458+ then throw("contract is on stop")
459+ else if ((this != bF.caller))
460+ then throw("admin only")
461+ else if ((size(bJ) > 13))
462+ then throw("too large pool domain")
463+ else if (if ((bL > 500))
464+ then true
465+ else (50 > bL))
466+ then throw("fee value must be between 50 and 500 (0.5-5%)")
467+ else if (if (if ((indexOf(bG, e) == unit))
468+ then (indexOf(bG, d) == unit)
469+ else false)
470+ then (indexOf(bG, f) == unit)
471+ else false)
472+ then throw("pool must have USDT, USDN or PUZZLE in the composition")
473+ else {
474+ let bN = split(bG, ",")
475+ let bO = {
476+ let C = bN
477+ let D = size(C)
478+ let E = nil
479+ func ap (G,H) = if ((H >= D))
480+ then G
481+ else t(G, C[H])
465482
466- func ao (E,F) = if ((F >= B))
467- then E
468- else throw("List size exceeds 10")
469-
470- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
471- }
472- let bK = split(bC, ",")
473- let bL = {
474- let A = bK
475- let B = size(A)
476- let C = 0
477- func aG (E,F) = if ((F >= B))
478- then E
479- else by(E, A[F])
480-
481- func aH (E,F) = if ((F >= B))
482- then E
483- else throw("List size exceeds 10")
484-
485- aH(aG(aG(aG(aG(aG(aG(aG(aG(aG(aG(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
486- }
487- let bM = if ((indexOf(bB, c) == unit))
488- then d
489- else c
490- func bN (s,bO) = if ((bO >= size(bJ)))
491- then s
492- else {
493- let bP = {
494- let j = bJ[bO]
495- if ($isInstanceOf(j, "ByteVector"))
496- then {
497- let Z = j
498- value(assetInfo(Z)).decimals
499- }
500- else 8
501- }
502- (s ++ [IntegerEntry((("static_" + bI[bO]) + "_scale"), pow(10, 0, bP, 0, 0, DOWN)), IntegerEntry((("static_" + bI[bO]) + "_decimals"), bP), IntegerEntry((("static_" + bI[bO]) + "_weight"), value(parseInt(bK[bO])))])
503- }
504-
505- if ((bL != 10000))
506- then throw("sum of token weights must be equal to 10000")
507- else ({
508- let A = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
509- let B = size(A)
510- let C = nil
511- func bQ (E,F) = if ((F >= B))
512- then E
513- else bN(E, A[F])
514-
515- func bR (E,F) = if ((F >= B))
516- then E
483+ func aq (G,H) = if ((H >= D))
484+ then G
517485 else throw("List size exceeds 10")
518486
519- bR(bQ(bQ(bQ(bQ(bQ(bQ(bQ(bQ(bQ(bQ(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
520- } ++ [StringEntry("static_tokenIds", bB), StringEntry("static_feeToken", bM), StringEntry("static_tokenWeights", bC), IntegerEntry("static_tokensAmount", size(bJ)), StringEntry("static_poolDomain", bE), StringEntry("static_baseTokenId", bD), StringEntry("static_poolOwner", bF), IntegerEntry("static_fee", bG)])
521- }
487+ aq(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
488+ }
489+ let bP = split(bH, ",")
490+ let bQ = {
491+ let C = bP
492+ let D = size(C)
493+ let E = 0
494+ func aL (G,H) = if ((H >= D))
495+ then G
496+ else bD(G, C[H])
497+
498+ func aM (G,H) = if ((H >= D))
499+ then G
500+ else throw("List size exceeds 10")
501+
502+ aM(aL(aL(aL(aL(aL(aL(aL(aL(aL(aL(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
503+ }
504+ let bR = if ((indexOf(bG, d) == unit))
505+ then if ((indexOf(bG, e) == unit))
506+ then f
507+ else e
508+ else d
509+ func bS (u,bT) = if ((bT >= size(bO)))
510+ then u
511+ else {
512+ let bU = {
513+ let l = bO[bT]
514+ if ($isInstanceOf(l, "ByteVector"))
515+ then {
516+ let ab = l
517+ value(assetInfo(ab)).decimals
518+ }
519+ else 8
520+ }
521+ (u ++ [IntegerEntry((("static_" + bN[bT]) + "_scale"), pow(10, 0, bU, 0, 0, DOWN)), IntegerEntry((("static_" + bN[bT]) + "_decimals"), bU), IntegerEntry((("static_" + bN[bT]) + "_weight"), value(parseInt(bP[bT])))])
522+ }
523+
524+ if ((bQ != 10000))
525+ then throw("sum of token weights must be equal to 10000")
526+ else ({
527+ let C = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
528+ let D = size(C)
529+ let E = nil
530+ func bV (G,H) = if ((H >= D))
531+ then G
532+ else bS(G, C[H])
533+
534+ func bW (G,H) = if ((H >= D))
535+ then G
536+ else throw("List size exceeds 10")
537+
538+ bW(bV(bV(bV(bV(bV(bV(bV(bV(bV(bV(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
539+ } ++ [StringEntry("static_tokenIds", bG), StringEntry("static_feeToken", bR), StringEntry("static_tokenWeights", bH), IntegerEntry("static_tokensAmount", size(bO)), StringEntry("static_poolDomain", bJ), StringEntry("static_baseTokenId", bI), StringEntry("static_poolOwner", bK), IntegerEntry("static_fee", bL)])
540+ }
522541 }
523542
524543
525544
526-@Callable(bA)
527-func deInit () = if ((bA.caller != this))
528- then throw("admin only")
529- else [IntegerEntry("global_wasInited", 0)]
545+@Callable(bF)
546+func deInit () = if (aa())
547+ then throw("contract is on stop")
548+ else if ((bF.caller != this))
549+ then throw("admin only")
550+ else [IntegerEntry("global_wasInited", 0)]
530551
531552
532553
533-@Callable(bA)
554+@Callable(bF)
534555 func init () = {
535- func bS () = {
536- func aj (s,bz) = (s ++ [IntegerEntry((("global_" + n(bz.assetId)) + "_balance"), bz.amount)])
556+ func bX () = {
557+ func al (u,bE) = (u ++ [IntegerEntry((("global_" + p(bE.assetId)) + "_balance"), bE.amount)])
537558
538- let A = bA.payments
539- let B = size(A)
540- let C = nil
541- func an (E,F) = if ((F >= B))
542- then E
543- else aj(E, A[F])
559+ let C = bF.payments
560+ let D = size(C)
561+ let E = nil
562+ func ap (G,H) = if ((H >= D))
563+ then G
564+ else al(G, C[H])
544565
545- func ao (E,F) = if ((F >= B))
546- then E
566+ func aq (G,H) = if ((H >= D))
567+ then G
547568 else throw("List size exceeds 10")
548569
549- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
570+ aq(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
550571 }
551572
552- func bT (ai) = {
553- func aj (s,bU) = {
554- let o = bU.assetId
555- func aE (s,bz) = if ((bz == o))
556- then value(indexOf(z, bz))
557- else s
573+ func bY (ak) = {
574+ func al (u,bZ) = {
575+ let q = bZ.assetId
576+ func aJ (u,bE) = if ((bE == q))
577+ then value(indexOf(B, bE))
578+ else u
558579
559- let bV = {
560- let A = z
561- let B = size(A)
562- let C = 1
563- func an (E,F) = if ((F >= B))
564- then E
565- else aE(E, A[F])
580+ let ca = {
581+ let C = B
582+ let D = size(C)
583+ let E = 1
584+ func ap (G,H) = if ((H >= D))
585+ then G
586+ else aJ(G, C[H])
566587
567- func ao (E,F) = if ((F >= B))
568- then E
588+ func aq (G,H) = if ((H >= D))
589+ then G
569590 else throw("List size exceeds 10")
570591
571- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
592+ aq(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
572593 }
573- fraction(s, pow(bU.amount, K[bV], H[bV], R, 8, FLOOR), T)
594+ fraction(u, pow(bZ.amount, M[ca], J[ca], T, 8, FLOOR), V)
574595 }
575596
576- let A = ai
577- let B = size(A)
578- let C = W
579- func an (E,F) = if ((F >= B))
580- then E
581- else aj(E, A[F])
597+ let C = ak
598+ let D = size(C)
599+ let E = Y
600+ func ap (G,H) = if ((H >= D))
601+ then G
602+ else al(G, C[H])
582603
583- func ao (E,F) = if ((F >= B))
584- then E
604+ func aq (G,H) = if ((H >= D))
605+ then G
585606 else throw("List size exceeds 10")
586607
587- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
608+ aq(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
588609 }
589610
590- if ((h("global_wasInited") > 0))
591- then throw("pool already inited")
592- else {
593- let bW = bT(bA.payments)
594- if ((bW == 0))
595- then throw("you need a bigger tokens amount to launch the pool")
596- else {
597- let bX = Issue(("PZ " + m("static_poolDomain")), "Puzzle Swap: pool index token", bW, V, true, unit, 0)
598- let bY = calculateAssetId(bX)
599- (bS() ++ [bX, IntegerEntry("global_poolToken_amount", bW), IntegerEntry("global_wasInited", 1), BinaryEntry("global_poolToken_id", bY), StringEntry("static_poolToken_idStr", n(bY)), IntegerEntry((toString(bA.caller) + "_indexStaked"), bW), IntegerEntry("global_indexStaked", bW)])
600- }
601- }
602- }
603-
604-
605-
606-@Callable(bA)
607-func generateIndex (aK) = if ((size(bA.payments) != y))
608- then throw(("you need to attach all pool tokens. amount of pool tokens: " + toString(y)))
609- else if (!(aA(bA.payments)))
610- then throw("wrong assets attached")
611- else {
612- let al = ah(bA.payments)
613- let bZ = Reissue(getBinaryValue("global_poolToken_id"), al, true)
614- let ca = aI(al, bA.payments, bA.originCaller, aK)
615- $Tuple2((ca ++ [ScriptTransfer(bA.caller, al, l("global_poolToken_id")), bZ, IntegerEntry("global_poolToken_amount", (h("global_poolToken_amount") + al))]), al)
616- }
617-
618-
619-
620-@Callable(bA)
621-func stakeIndex () = {
622- let br = toString(bA.originCaller)
623- let bU = bA.payments[0]
624- if ((value(bU.assetId) != l("global_poolToken_id")))
625- then throw("wrong asset attached")
626- else bw(br, bU.amount)
627- }
628-
629-
630-
631-@Callable(bA)
632-func unstakeIndex (bs) = {
633- let br = toString(bA.originCaller)
634- let cb = h((br + "_indexStaked"))
635- if ((bs > cb))
636- then throw("you don't have index tokens available")
637- else if (Y())
638- then throw("contract is on stop")
639- else (bp(bA.originCaller) ++ [IntegerEntry((br + "_indexStaked"), (cb - bs)), IntegerEntry("global_indexStaked", (h("global_indexStaked") - bs)), ScriptTransfer(bA.caller, bs, getBinaryValue("global_poolToken_id"))])
640- }
641-
642-
643-
644-@Callable(bA)
645-func claimIndexRewards () = if (Y())
646- then throw("contract is on stop")
647- else bp(bA.caller)
648-
649-
650-
651-@Callable(bA)
652-func redeemIndex (cc) = {
653- let bU = bA.payments[0]
654- if ((bU.assetId != l("global_poolToken_id")))
655- then throw("please attach pool share token")
656- else if (Y())
657- then throw("contract is on stop")
611+ if (aa())
612+ then throw("contract is on stop")
613+ else if ((j("global_wasInited") > 0))
614+ then throw("pool already inited")
658615 else {
659- let aV = bU.amount
660- let ca = aU(aV, if (cc)
661- then bA.originCaller
662- else bA.caller)
663- (ca ++ [Burn(l("global_poolToken_id"), aV), IntegerEntry("global_poolToken_amount", (h("global_poolToken_amount") - aV))])
616+ let cb = bY(bF.payments)
617+ if ((cb == 0))
618+ then throw("you need a bigger tokens amount to launch the pool")
619+ else {
620+ let cc = Issue(("PZ " + o("static_poolDomain")), "Puzzle Swap: pool index token", cb, X, true, unit, 0)
621+ let cd = calculateAssetId(cc)
622+ (bX() ++ [cc, IntegerEntry("global_poolToken_amount", cb), IntegerEntry("global_wasInited", 1), BinaryEntry("global_poolToken_id", cd), StringEntry("static_poolToken_idStr", p(cd)), IntegerEntry((toString(bF.caller) + "_indexStaked"), cb), IntegerEntry("global_indexStaked", cb)])
623+ }
664624 }
665625 }
666626
667627
668628
669-@Callable(bA)
670-func swap (ba,cd) = if (Y())
629+@Callable(bF)
630+func generateIndex (aP) = if (aa())
671631 then throw("contract is on stop")
672- else {
673- let bU = if ((size(bA.payments) == 1))
674- then value(bA.payments[0])
675- else throw("please attach exactly one payment")
676- let aY = value(bA.payments[0].amount)
677- let ce = bU.assetId
678- let cf = p(ba)
679- let cg = m("static_feeToken")
680- let ch = if ((cg == ""))
681- then a
682- else fromBase58String(cg)
683- let ci = h((("global_" + n(ce)) + "_balance"))
684- let cj = h((("global_" + ba) + "_balance"))
685- let ck = fraction(aY, Q, U)
686- let cl = (aY - ck)
687- let cm = aX(cl, ce, cf, ci, cj)
688- if ((cd > cm))
689- then throw(("amount to recieve is lower than given one: " + toString(cm)))
690- else if ((0 > (cj - cm)))
691- then throw("contract is out of reserves")
692- else {
693- let cn = (ci + cl)
694- let co = (cj - cm)
695- let cp = if ((ce == ch))
696- then cn
697- else if ((ch == cf))
698- then co
699- else h((("global_" + n(ch)) + "_balance"))
700- let cq = if ((ce == ch))
701- then ck
702- else aX(ck, ce, ch, cn, cp)
703- let cr = (cn + (if ((ce == ch))
704- then 0
705- else ck))
706- let cs = (co - (if ((ce == ch))
707- then 0
708- else if ((cf == ch))
709- then cq
710- else 0))
711- let ct = if (if ((ch != ce))
712- then (ch != cf)
713- else false)
714- then [IntegerEntry((("global_" + n(ch)) + "_balance"), (cp - cq))]
715- else nil
716- let cu = fraction(cq, 1, 10)
717- let cv = fraction(cq, 4, 10)
718- let cw = if ((ch == a))
719- then reentrantInvoke(Address(base58'3PFTbywqxtFfukX3HyT881g4iW5K4QL3FAS'), "topUpReward", nil, [AttachedPayment(ch, cv)])
720- else unit
721- if ((cw == cw))
722- then {
723- let cx = [IntegerEntry((("global_" + n(ce)) + "_balance"), cr)]
724- let cy = [IntegerEntry((("global_" + ba) + "_balance"), cs)]
725- $Tuple2(((((cy ++ cx) ++ ct) ++ [ScriptTransfer(bA.caller, cm, cf), ScriptTransfer(addressFromStringValue(m("static_poolOwner")), cu, ch), IntegerEntry("global_earnedByOwner", (h("global_earnedByOwner") + cu)), IntegerEntry("global_volume", (h("global_volume") + ap(ce, aY, ci, cp)))]) ++ (if ((cw == unit))
726- then [Burn(ch, cv)]
727- else nil)), cm)
728- }
729- else throw("Strict value is not equal to itself.")
730- }
731- }
632+ else if ((size(bF.payments) != A))
633+ then throw(("you need to attach all pool tokens. amount of pool tokens: " + toString(A)))
634+ else if (!(aF(bF.payments)))
635+ then throw("wrong assets attached")
636+ else {
637+ let an = aj(bF.payments)
638+ let ce = Reissue(getBinaryValue("global_poolToken_id"), an, true)
639+ let cf = aN(an, bF.payments, bF.originCaller, aP)
640+ $Tuple2((cf ++ [ce, ScriptTransfer(bF.caller, an, n("global_poolToken_id")), IntegerEntry("global_poolToken_amount", (j("global_poolToken_amount") + an))]), an)
641+ }
732642
733643
734-@Verifier(cz)
735-func cA () = if (Y())
644+
645+@Callable(bF)
646+func stakeIndex () = {
647+ let bw = toString(bF.originCaller)
648+ let bZ = bF.payments[0]
649+ if (aa())
650+ then throw("contract is on stop")
651+ else if ((value(bZ.assetId) != n("global_poolToken_id")))
652+ then throw("wrong asset attached")
653+ else bB(bw, bZ.amount)
654+ }
655+
656+
657+
658+@Callable(bF)
659+func unstakeIndex (bx) = {
660+ let bw = toString(bF.originCaller)
661+ let cg = j((bw + "_indexStaked"))
662+ if (aa())
663+ then throw("contract is on stop")
664+ else if ((bx > cg))
665+ then throw("you don't have index tokens available")
666+ else if (aa())
667+ then throw("contract is on stop")
668+ else (bu(bF.originCaller)._1 ++ [IntegerEntry((bw + "_indexStaked"), (cg - bx)), IntegerEntry("global_indexStaked", (j("global_indexStaked") - bx)), ScriptTransfer(bF.caller, bx, getBinaryValue("global_poolToken_id"))])
669+ }
670+
671+
672+
673+@Callable(bF)
674+func claimIndexRewards () = if (aa())
675+ then throw("contract is on stop")
676+ else bu(bF.caller)
677+
678+
679+
680+@Callable(bF)
681+func evaluateClaim (ch) = $Tuple2(nil, bu(addressFromStringValue(ch))._2)
682+
683+
684+
685+@Callable(bF)
686+func redeemIndex (ci) = {
687+ let bZ = bF.payments[0]
688+ if ((bZ.assetId != n("global_poolToken_id")))
689+ then throw("please attach pool share token")
690+ else if (aa())
691+ then throw("contract is on stop")
692+ else {
693+ let ba = bZ.amount
694+ let cf = aZ(ba, if (ci)
695+ then bF.originCaller
696+ else bF.caller)
697+ (cf ++ [Burn(n("global_poolToken_id"), ba), IntegerEntry("global_poolToken_amount", (j("global_poolToken_amount") - ba))])
698+ }
699+ }
700+
701+
702+
703+@Callable(bF)
704+func swap (bf,cj) = {
705+ let bZ = if ((size(bF.payments) == 1))
706+ then value(bF.payments[0])
707+ else throw("please attach exactly one payment")
708+ let bd = value(bF.payments[0].amount)
709+ let ck = bZ.assetId
710+ let cl = r(bf)
711+ let cm = o("static_feeToken")
712+ let cn = if ((cm == ""))
713+ then a
714+ else fromBase58String(cm)
715+ let co = j((("global_" + p(ck)) + "_balance"))
716+ let cp = j((("global_" + bf) + "_balance"))
717+ let cq = fraction(bd, S, W)
718+ let cr = (bd - cq)
719+ let cs = bc(cr, ck, cl, co, cp)
720+ let ct = (cp - cs)
721+ let cu = (co + cr)
722+ let cv = if ((cn == ck))
723+ then cu
724+ else if ((cn == cl))
725+ then ct
726+ else j((("global_" + p(cn)) + "_balance"))
727+ let cw = bc(cq, ck, cn, co, cv)
728+ if ((cj > cs))
729+ then throw(("amount to recieve is lower than given one: " + toString(cs)))
730+ else if ((cl == ck))
731+ then throw("this swap is not allowed")
732+ else if ((0 > (cp - cs)))
733+ then throw("contract is out of reserves")
734+ else if (aa())
735+ then throw("contract is on stop")
736+ else {
737+ let cx = fraction(cw, 1, 10)
738+ let cy = fraction(cw, 4, 10)
739+ let cz = if ((cn == a))
740+ then reentrantInvoke(Address(base58'3PFTbywqxtFfukX3HyT881g4iW5K4QL3FAS'), "topUpReward", nil, [AttachedPayment(cn, cy)])
741+ else unit
742+ if ((cz == cz))
743+ then {
744+ let cA = (cu - (if ((ck == cn))
745+ then cw
746+ else 0))
747+ let cB = (ct - (if ((cl == cn))
748+ then cw
749+ else 0))
750+ let cC = if (if ((cn != ck))
751+ then (cn != cl)
752+ else false)
753+ then (cv - cw)
754+ else unit
755+ let cD = IntegerEntry((("global_" + p(ck)) + "_balance"), cA)
756+ let cE = IntegerEntry((("global_" + bf) + "_balance"), cB)
757+ let cF = if ((cC != unit))
758+ then IntegerEntry((("global_" + p(cn)) + "_balance"), cv)
759+ else StringEntry("hello", "world")
760+ $Tuple2(([cE, cD, cF, ScriptTransfer(bF.caller, cs, cl), ScriptTransfer(addressFromStringValue(o("static_poolOwner")), cx, cn), IntegerEntry("global_earnedByOwner", (j("global_earnedByOwner") + cx)), IntegerEntry("global_volume", (j("global_volume") + ar(ck, bd, co, cv)))] ++ (if ((cz == unit))
761+ then [ScriptTransfer(Address(base58'3P4kBiU4wr2yV1S5gMfu3MdkVvy7kxXHsKe'), cy, cn)]
762+ else nil)), cs)
763+ }
764+ else throw("Strict value is not equal to itself.")
765+ }
766+ }
767+
768+
769+@Verifier(cG)
770+func cH () = if (aa())
736771 then false
737- else if (sigVerify(cz.bodyBytes, cz.proofs[0], cz.senderPublicKey))
772+ else if (sigVerify(cG.bodyBytes, cG.proofs[0], cG.senderPublicKey))
738773 then true
739- else sigVerify(cz.bodyBytes, cz.proofs[0], g)
774+ else sigVerify(cG.bodyBytes, cG.proofs[0], i)
740775
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
55
66 let b = base58'HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS'
77
8-let c = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
8+let c = base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ'
99
10-let d = "HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS"
10+let d = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
1111
12-let e = Address(base58'3PFDgzu1UtswAkCMxqqQjbTeHaX4cMab8Kh')
12+let e = "HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS"
1313
14-let f = Address(base58'3PLjwHcz9NEuaTo63NZR9B9okQiKQxZSbmf')
14+let f = "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"
1515
16-let g = base58'4z8CKSYQBKkzx7PBb5uBP1YPa6YAHRNTApW1sQVHT5eU'
16+let g = Address(base58'3PFDgzu1UtswAkCMxqqQjbTeHaX4cMab8Kh')
1717
18-func h (i) = {
19- let j = getInteger(this, i)
20- if ($isInstanceOf(j, "Int"))
18+let h = Address(base58'3PLjwHcz9NEuaTo63NZR9B9okQiKQxZSbmf')
19+
20+let i = base58'4z8CKSYQBKkzx7PBb5uBP1YPa6YAHRNTApW1sQVHT5eU'
21+
22+func j (k) = {
23+ let l = getInteger(this, k)
24+ if ($isInstanceOf(l, "Int"))
2125 then {
22- let k = j
23- k
26+ let m = l
27+ m
2428 }
2529 else 0
2630 }
2731
2832
29-func l (i) = {
30- let j = getBinary(this, i)
31- if ($isInstanceOf(j, "ByteVector"))
33+func n (k) = {
34+ let l = getBinary(this, k)
35+ if ($isInstanceOf(l, "ByteVector"))
3236 then {
33- let k = j
34- k
37+ let m = l
38+ m
3539 }
3640 else base58''
3741 }
3842
3943
40-func m (i) = {
41- let j = getString(this, i)
42- if ($isInstanceOf(j, "String"))
44+func o (k) = {
45+ let l = getString(this, k)
46+ if ($isInstanceOf(l, "String"))
4347 then {
44- let k = j
45- k
48+ let m = l
49+ m
4650 }
4751 else ""
4852 }
4953
5054
51-func n (o) = {
52- let j = o
53- if ($isInstanceOf(j, "ByteVector"))
55+func p (q) = {
56+ let l = q
57+ if ($isInstanceOf(l, "ByteVector"))
5458 then {
55- let k = j
56- toBase58String(k)
59+ let m = l
60+ toBase58String(m)
5761 }
5862 else "WAVES"
5963 }
6064
6165
62-func p (q) = if ((q == "WAVES"))
66+func r (s) = if ((s == "WAVES"))
6367 then unit
64- else fromBase58String(q)
68+ else fromBase58String(s)
6569
6670
67-func r (s,t) = (s ++ [p(t)])
71+func t (u,v) = (u ++ [r(v)])
6872
6973
70-func u (s,t) = (s ++ [h((("static_" + n(t)) + "_weight"))])
74+func w (u,v) = (u ++ [j((("static_" + p(v)) + "_weight"))])
7175
7276
73-func v (s,t) = (s ++ [h((("static_" + n(t)) + "_decimals"))])
77+func x (u,v) = (u ++ [j((("static_" + p(v)) + "_decimals"))])
7478
7579
76-func w (s,t) = (s ++ [h((("static_" + n(t)) + "_scale"))])
80+func y (u,v) = (u ++ [j((("static_" + p(v)) + "_scale"))])
7781
7882
79-func x (s,t) = (s ++ [parseIntValue(t)])
83+func z (u,v) = (u ++ [parseIntValue(v)])
8084
8185
82-let y = h("static_tokensAmount")
86+let A = j("static_tokensAmount")
8387
84-let z = {
85- let A = split(m("static_tokenIds"), ",")
86- let B = size(A)
87- let C = nil
88- func D (E,F) = if ((F >= B))
89- then E
90- else r(E, A[F])
88+let B = {
89+ let C = split(o("static_tokenIds"), ",")
90+ let D = size(C)
91+ let E = nil
92+ func F (G,H) = if ((H >= D))
93+ then G
94+ else t(G, C[H])
9195
92- func G (E,F) = if ((F >= B))
93- then E
96+ func I (G,H) = if ((H >= D))
97+ then G
9498 else throw("List size exceeds 10")
9599
96- G(D(D(D(D(D(D(D(D(D(D(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
100+ I(F(F(F(F(F(F(F(F(F(F(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
97101 }
98102
99-let H = {
100- let A = z
101- let B = size(A)
102- let C = nil
103- func I (E,F) = if ((F >= B))
104- then E
105- else u(E, A[F])
103+let J = {
104+ let C = B
105+ let D = size(C)
106+ let E = nil
107+ func K (G,H) = if ((H >= D))
108+ then G
109+ else w(G, C[H])
106110
107- func J (E,F) = if ((F >= B))
108- then E
111+ func L (G,H) = if ((H >= D))
112+ then G
109113 else throw("List size exceeds 10")
110114
111- J(I(I(I(I(I(I(I(I(I(I(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
115+ L(K(K(K(K(K(K(K(K(K(K(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
112116 }
113117
114-let K = {
115- let A = z
116- let B = size(A)
117- let C = nil
118- func L (E,F) = if ((F >= B))
119- then E
120- else v(E, A[F])
118+let M = {
119+ let C = B
120+ let D = size(C)
121+ let E = nil
122+ func N (G,H) = if ((H >= D))
123+ then G
124+ else x(G, C[H])
121125
122- func M (E,F) = if ((F >= B))
123- then E
126+ func O (G,H) = if ((H >= D))
127+ then G
124128 else throw("List size exceeds 10")
125129
126- M(L(L(L(L(L(L(L(L(L(L(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
130+ O(N(N(N(N(N(N(N(N(N(N(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
127131 }
128132
129-let N = {
130- let A = z
131- let B = size(A)
132- let C = nil
133- func O (E,F) = if ((F >= B))
134- then E
135- else w(E, A[F])
133+let P = {
134+ let C = B
135+ let D = size(C)
136+ let E = nil
137+ func Q (G,H) = if ((H >= D))
138+ then G
139+ else y(G, C[H])
136140
137- func P (E,F) = if ((F >= B))
138- then E
141+ func R (G,H) = if ((H >= D))
142+ then G
139143 else throw("List size exceeds 10")
140144
141- P(O(O(O(O(O(O(O(O(O(O(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
145+ R(Q(Q(Q(Q(Q(Q(Q(Q(Q(Q(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
142146 }
143147
144-let Q = h("static_fee")
148+let S = j("static_fee")
145149
146-let R = 4
147-
148-let S = 10000
149-
150-let T = 100000000
150+let T = 4
151151
152152 let U = 10000
153153
154-let V = 8
154+let V = 100000000
155155
156-let W = pow(10, 0, V, 0, 0, HALFUP)
156+let W = 10000
157157
158-let X = z
158+let X = 8
159159
160-func Y () = {
161- let j = getBoolean(Address(base58'3PEpv9hRFWEEBU22WRnLsw1bH4YGtcU728o'), "is_shutdown")
162- if ($isInstanceOf(j, "Boolean"))
160+let Y = pow(10, 0, X, 0, 0, HALFUP)
161+
162+let Z = B
163+
164+func aa () = {
165+ let l = getBoolean(Address(base58'3PEpv9hRFWEEBU22WRnLsw1bH4YGtcU728o'), "is_shutdown")
166+ if ($isInstanceOf(l, "Boolean"))
163167 then {
164- let Z = j
165- Z
168+ let ab = l
169+ ab
166170 }
167171 else false
168172 }
169173
170174
171-func aa (ab) = {
172- let ac = n(z[ab])
173- h((("global_" + ac) + "_balance"))
175+func ac (ad) = {
176+ let ae = p(B[ad])
177+ j((("global_" + ae) + "_balance"))
174178 }
175179
176180
177-func ad (ae,ac) = {
178- let af = h("global_poolToken_amount")
179- let ag = h((("global_" + n(ac)) + "_balance"))
180- fraction(ae, af, ag, DOWN)
181+func af (ag,ae) = {
182+ let ah = j("global_poolToken_amount")
183+ let ai = j((("global_" + p(ae)) + "_balance"))
184+ fraction(ag, ah, ai, DOWN)
181185 }
182186
183187
184-func ah (ai) = {
185- func aj (s,ak) = {
186- let al = ad(ak.amount, ak.assetId)
187- if ((al == 0))
188+func aj (ak) = {
189+ func al (u,am) = {
190+ let an = af(am.amount, am.assetId)
191+ if ((an == 0))
188192 then throw("one of the tokens amounts is too low")
189- else if (if ((s == 0))
193+ else if (if ((u == 0))
190194 then true
191- else (s > al))
192- then al
193- else s
195+ else (u > an))
196+ then an
197+ else u
194198 }
195199
196- let am = {
197- let A = ai
198- let B = size(A)
199- let C = 0
200- func an (E,F) = if ((F >= B))
201- then E
202- else aj(E, A[F])
200+ let ao = {
201+ let C = ak
202+ let D = size(C)
203+ let E = 0
204+ func ap (G,H) = if ((H >= D))
205+ then G
206+ else al(G, C[H])
203207
204- func ao (E,F) = if ((F >= B))
205- then E
208+ func aq (G,H) = if ((H >= D))
209+ then G
206210 else throw("List size exceeds 10")
207211
208- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
212+ aq(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
209213 }
210- am
214+ ao
211215 }
212216
213217
214-func ap (o,ae,aq,ar) = {
215- let as = indexOf(z, a)
216- let at = H[value(indexOf(z, o))]
217- if ((as == unit))
218+func ar (q,ag,as,at) = {
219+ let au = indexOf(B, a)
220+ let av = indexOf(B, c)
221+ let aw = J[value(indexOf(B, q))]
222+ if (if ((au == unit))
223+ then (av == unit)
224+ else false)
218225 then {
219- let au = H[value(indexOf(z, b))]
220- let av = h((("global_" + d) + "_balance"))
221- let aw = fraction(ae, (av / au), (aq / at))
222- let ax = getIntegerValue(e, "global_lastPuzzlePrice")
223- fraction((aw * ax), 1, T)
226+ let ax = J[value(indexOf(B, b))]
227+ let ay = j((("global_" + e) + "_balance"))
228+ let az = fraction(ag, (ay / ax), (as / aw))
229+ let aA = getIntegerValue(g, "global_lastPuzzlePrice")
230+ fraction((az * aA), 1, V)
224231 }
225- else {
226- let ay = H[value(indexOf(z, a))]
227- let az = {
228- let j = ar
229- if ($isInstanceOf(j, "Int"))
230- then {
231- let Z = j
232- ar
233- }
234- else h((("global_" + n(a)) + "_balance"))
232+ else if ((av != unit))
233+ then {
234+ let aB = J[value(av)]
235+ let aC = j((("global_" + f) + "_balance"))
236+ fraction(ag, (aC / aB), (as / aw))
235237 }
236- fraction(ae, (value(az) / ay), (aq / at))
237- }
238+ else {
239+ let aD = J[value(indexOf(B, a))]
240+ let aE = {
241+ let l = at
242+ if ($isInstanceOf(l, "Int"))
243+ then {
244+ let ab = l
245+ at
246+ }
247+ else j((("global_" + p(a)) + "_balance"))
248+ }
249+ fraction(ag, (value(aE) / aD), (as / aw))
250+ }
238251 }
239252
240253
241-func aA (ai) = {
242- func aB (s,aC) = (s ++ [aC.assetId])
254+func aF (ak) = {
255+ func aG (u,aH) = (u ++ [aH.assetId])
243256
244- let aD = {
245- let A = ai
246- let B = size(A)
247- let C = nil
248- func an (E,F) = if ((F >= B))
249- then E
250- else aB(E, A[F])
257+ let aI = {
258+ let C = ak
259+ let D = size(C)
260+ let E = nil
261+ func ap (G,H) = if ((H >= D))
262+ then G
263+ else aG(G, C[H])
251264
252- func ao (E,F) = if ((F >= B))
253- then E
265+ func aq (G,H) = if ((H >= D))
266+ then G
254267 else throw("List size exceeds 10")
255268
256- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
269+ aq(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
257270 }
258- if ((aD == aD))
271+ if ((aI == aI))
259272 then {
260- func aE (s,o) = if ((indexOf(aD, o) != unit))
261- then (s + 1)
262- else throw(("asset not attached: " + n(o)))
273+ func aJ (u,q) = if ((indexOf(aI, q) != unit))
274+ then (u + 1)
275+ else throw(("asset not attached: " + p(q)))
263276
264- let aF = {
265- let A = z
266- let B = size(A)
267- let C = 0
268- func aG (E,F) = if ((F >= B))
269- then E
270- else aE(E, A[F])
277+ let aK = {
278+ let C = B
279+ let D = size(C)
280+ let E = 0
281+ func aL (G,H) = if ((H >= D))
282+ then G
283+ else aJ(G, C[H])
271284
272- func aH (E,F) = if ((F >= B))
273- then E
285+ func aM (G,H) = if ((H >= D))
286+ then G
274287 else throw("List size exceeds 10")
275288
276- aH(aG(aG(aG(aG(aG(aG(aG(aG(aG(aG(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
289+ aM(aL(aL(aL(aL(aL(aL(aL(aL(aL(aL(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
277290 }
278- if ((aF == aF))
291+ if ((aK == aK))
279292 then true
280293 else throw("Strict value is not equal to itself.")
281294 }
282295 else throw("Strict value is not equal to itself.")
283296 }
284297
285298
286-func aI (al,ai,aJ,aK) = {
287- func aL (ac) = {
288- func aj (s,aC) = if ((aC.assetId == ac))
289- then aC.amount
290- else s
299+func aN (an,ak,aO,aP) = {
300+ func aQ (ae) = {
301+ func al (u,aH) = if ((aH.assetId == ae))
302+ then aH.amount
303+ else u
291304
292- let A = ai
293- let B = size(A)
294- let C = 0
295- func an (E,F) = if ((F >= B))
296- then E
297- else aj(E, A[F])
305+ let C = ak
306+ let D = size(C)
307+ let E = 0
308+ func ap (G,H) = if ((H >= D))
309+ then G
310+ else al(G, C[H])
298311
299- func ao (E,F) = if ((F >= B))
300- then E
312+ func aq (G,H) = if ((H >= D))
313+ then G
301314 else throw("List size exceeds 10")
302315
303- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
316+ aq(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
304317 }
305318
306- func aM (s,ac) = {
307- let aN = h((("global_" + n(ac)) + "_balance"))
308- let aO = h("global_poolToken_amount")
309- let aP = h((("static_" + n(ac)) + "_scale"))
310- let aQ = fraction((fraction((aO + al), aP, aO, CEILING) - aP), aN, aP, CEILING)
311- let aR = aL(ac)
312- let aS = ((if ((aR != 0))
313- then aR
314- else 0) - aQ)
315- let aT = if (if (aK)
316- then (aS > 0)
319+ func aR (u,ae) = {
320+ let aS = j((("global_" + p(ae)) + "_balance"))
321+ let aT = j("global_poolToken_amount")
322+ let aU = j((("static_" + p(ae)) + "_scale"))
323+ let aV = fraction((fraction((aT + an), aU, aT, CEILING) - aU), aS, aU, CEILING)
324+ let aW = aQ(ae)
325+ let aX = ((if ((aW != 0))
326+ then aW
327+ else 0) - aV)
328+ let aY = if (if (aP)
329+ then (aX > 0)
317330 else false)
318- then [ScriptTransfer(aJ, aS, ac)]
331+ then [ScriptTransfer(aO, aX, ae)]
319332 else nil
320- ((s ++ aT) ++ [IntegerEntry((("global_" + n(ac)) + "_balance"), (aN + aQ))])
333+ ((u ++ aY) ++ [IntegerEntry((("global_" + p(ae)) + "_balance"), (aS + aV))])
321334 }
322335
323- let A = z
324- let B = size(A)
325- let C = nil
326- func an (E,F) = if ((F >= B))
327- then E
328- else aM(E, A[F])
336+ let C = B
337+ let D = size(C)
338+ let E = nil
339+ func ap (G,H) = if ((H >= D))
340+ then G
341+ else aR(G, C[H])
329342
330- func ao (E,F) = if ((F >= B))
331- then E
343+ func aq (G,H) = if ((H >= D))
344+ then G
332345 else throw("List size exceeds 10")
333346
334- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
347+ aq(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
335348 }
336349
337350
338-func aU (aV,aJ) = {
339- func aW (s,ac) = {
340- let aN = h((("global_" + n(ac)) + "_balance"))
341- let aO = h("global_poolToken_amount")
342- let aP = h((("static_" + n(ac)) + "_scale"))
343- let ae = toInt(fraction((toBigInt(T) - fraction(toBigInt((aO - aV)), toBigInt(T), toBigInt(aO), CEILING)), toBigInt(aN), toBigInt(T), DOWN))
344- (s ++ [IntegerEntry((("global_" + n(ac)) + "_balance"), (aN - ae)), ScriptTransfer(aJ, ae, ac)])
351+func aZ (ba,aO) = {
352+ func bb (u,ae) = {
353+ let aS = j((("global_" + p(ae)) + "_balance"))
354+ let aT = j("global_poolToken_amount")
355+ let aU = j((("static_" + p(ae)) + "_scale"))
356+ let ag = toInt(fraction((toBigInt(V) - fraction(toBigInt((aT - ba)), toBigInt(V), toBigInt(aT), CEILING)), toBigInt(aS), toBigInt(V), DOWN))
357+ (u ++ [IntegerEntry((("global_" + p(ae)) + "_balance"), (aS - ag)), ScriptTransfer(aO, ag, ae)])
345358 }
346359
347- let A = z
348- let B = size(A)
349- let C = nil
350- func an (E,F) = if ((F >= B))
351- then E
352- else aW(E, A[F])
360+ let C = B
361+ let D = size(C)
362+ let E = nil
363+ func ap (G,H) = if ((H >= D))
364+ then G
365+ else bb(G, C[H])
353366
354- func ao (E,F) = if ((F >= B))
355- then E
367+ func aq (G,H) = if ((H >= D))
368+ then G
356369 else throw("List size exceeds 10")
357370
358- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
371+ aq(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
359372 }
360373
361374
362-func aX (aY,aZ,ba,bb,bc) = {
363- let bd = value(indexOf(z, aZ))
364- let be = value(indexOf(z, ba))
365- if ((bd == be))
366- then throw("inalid tokens pair")
367- else fraction(bc, ((T * T) - toInt(pow(fraction(toBigInt(bb), toBigInt((T * T)), toBigInt((bb + aY)), HALFUP), 16, toBigInt(fraction(H[bd], 10000, H[be])), 4, 16, CEILING))), (T * T), DOWN)
375+func bc (bd,be,bf,bg,bh) = {
376+ let bi = value(indexOf(B, be))
377+ let bj = value(indexOf(B, bf))
378+ if ((bi == bj))
379+ then bd
380+ else fraction(bh, ((V * V) - toInt(pow(fraction(toBigInt(bg), toBigInt((V * V)), toBigInt((bg + bd)), HALFUP), 16, toBigInt(fraction(J[bi], 10000, J[bj])), 4, 16, CEILING))), (V * V), DOWN)
368381 }
369382
370383
371-func bf (o) = {
372- let j = o
373- if ($isInstanceOf(j, "ByteVector"))
384+func bk (q) = {
385+ let l = q
386+ if ($isInstanceOf(l, "ByteVector"))
374387 then {
375- let aT = j
376- assetBalance(this, aT)
388+ let aY = l
389+ assetBalance(this, aY)
377390 }
378391 else wavesBalance(this).available
379392 }
380393
381394
382-func bg (o,q,aq,bh) = {
383- let bi = h("global_indexStaked")
384- let bj = bh
385- let bk = (bf(o) - aq)
386- let bl = if ((bk > bj))
387- then bk
388- else bj
389- let bm = (bl - bj)
390- let bn = if ((bi == 0))
395+func bl (q,s,as,bm) = {
396+ let bn = j("global_indexStaked")
397+ let bo = bm
398+ let bp = (bk(q) - as)
399+ let bq = if ((bp > bo))
400+ then bp
401+ else bo
402+ let br = (bq - bo)
403+ let bs = if ((bn == 0))
391404 then 0
392- else fraction(bm, T, bi)
393- let bo = h((("global_lastCheck_" + q) + "_interest"))
394- (bo + bn)
405+ else fraction(br, V, bn)
406+ let bt = j((("global_lastCheck_" + s) + "_interest"))
407+ (bt + bs)
395408 }
396409
397410
398-func bp (bq) = {
399- let br = toString(bq)
400- let bs = h((br + "_indexStaked"))
401- func aj (s,o) = {
402- let q = n(o)
403- let aq = h((("global_" + n(o)) + "_balance"))
404- let bh = h((("global_lastCheck_" + q) + "_earnings"))
405- let bt = bg(o, q, aq, bh)
406- let bl = max([bh, (bf(o) - aq)])
407- let bu = fraction(bs, (bt - h((((br + "_lastCheck_") + q) + "_interest"))), T)
408- let bv = if ((bu == 0))
411+func bu (bv) = {
412+ let bw = toString(bv)
413+ let bx = j((bw + "_indexStaked"))
414+ func al (u,q) = {
415+ let s = p(q)
416+ let as = j((("global_" + p(q)) + "_balance"))
417+ let bm = j((("global_lastCheck_" + s) + "_earnings"))
418+ let by = bl(q, s, as, bm)
419+ let bq = max([bm, (bk(q) - as)])
420+ let bz = fraction(bx, (by - j((((bw + "_lastCheck_") + s) + "_interest"))), V)
421+ let bA = if ((bz == 0))
409422 then nil
410- else [ScriptTransfer(bq, bu, o)]
411- $Tuple2(((s._1 ++ bv) ++ [IntegerEntry((("global_lastCheck_" + q) + "_earnings"), (bl - bu)), IntegerEntry((("global_lastCheck_" + q) + "_interest"), bt), IntegerEntry((((br + "_lastCheck_") + q) + "_interest"), bt)]), (s._2 + ap(o, bu, aq, unit)))
423+ else [ScriptTransfer(bv, bz, q)]
424+ $Tuple2(((u._1 ++ bA) ++ [IntegerEntry((("global_lastCheck_" + s) + "_earnings"), (bq - bz)), IntegerEntry((("global_lastCheck_" + s) + "_interest"), by), IntegerEntry((((bw + "_lastCheck_") + s) + "_interest"), by)]), (u._2 + ar(q, bz, as, unit)))
412425 }
413426
414- let s = {
415- let A = X
416- let B = size(A)
417- let C = $Tuple2(nil, 0)
418- func an (E,F) = if ((F >= B))
419- then E
420- else aj(E, A[F])
427+ let u = {
428+ let C = Z
429+ let D = size(C)
430+ let E = $Tuple2(nil, 0)
431+ func ap (G,H) = if ((H >= D))
432+ then G
433+ else al(G, C[H])
421434
422- func ao (E,F) = if ((F >= B))
423- then E
435+ func aq (G,H) = if ((H >= D))
436+ then G
424437 else throw("List size exceeds 10")
425438
426- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
439+ aq(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
427440 }
428- (s._1 ++ [IntegerEntry((br + "_claimedRewardValue"), (h((br + "_claimedRewardValue")) + s._2)), IntegerEntry((br + "_lastClaim"), lastBlock.timestamp)])
441+ $Tuple2((u._1 ++ [IntegerEntry((bw + "_claimedRewardValue"), (j((bw + "_claimedRewardValue")) + u._2)), IntegerEntry((bw + "_lastClaim"), lastBlock.timestamp)]), u._2)
429442 }
430443
431444
432-func bw (br,ae) = {
433- let bx = bp(addressFromStringValue(br))
434- (bx ++ [IntegerEntry((br + "_indexStaked"), (h((br + "_indexStaked")) + ae)), IntegerEntry("global_indexStaked", (h("global_indexStaked") + ae))])
445+func bB (bw,ag) = {
446+ let bC = bu(addressFromStringValue(bw))._1
447+ (bC ++ [IntegerEntry((bw + "_indexStaked"), (j((bw + "_indexStaked")) + ag)), IntegerEntry("global_indexStaked", (j("global_indexStaked") + ag))])
435448 }
436449
437450
438-func by (s,bz) = (s + parseIntValue(bz))
451+func bD (u,bE) = (u + parseIntValue(bE))
439452
440453
441-@Callable(bA)
442-func preInit (bB,bC,bD,bE,bF,bG) = {
443- let bH = Address(fromBase58String(bF))
444- if ((this != bA.caller))
445- then throw("admin only")
446- else if ((size(bE) > 13))
447- then throw("too large pool domain")
448- else if (if ((bG > 500))
449- then true
450- else (50 > bG))
451- then throw("fee value must be between 50 and 500 (0.5-5%)")
452- else if (if ((indexOf(bB, d) == unit))
453- then (indexOf(bB, c) == unit)
454- else false)
455- then throw("pool must have USDN or PUZZLE in the composition")
456- else {
457- let bI = split(bB, ",")
458- let bJ = {
459- let A = bI
460- let B = size(A)
461- let C = nil
462- func an (E,F) = if ((F >= B))
463- then E
464- else r(E, A[F])
454+@Callable(bF)
455+func preInit (bG,bH,bI,bJ,bK,bL) = {
456+ let bM = Address(fromBase58String(bK))
457+ if (aa())
458+ then throw("contract is on stop")
459+ else if ((this != bF.caller))
460+ then throw("admin only")
461+ else if ((size(bJ) > 13))
462+ then throw("too large pool domain")
463+ else if (if ((bL > 500))
464+ then true
465+ else (50 > bL))
466+ then throw("fee value must be between 50 and 500 (0.5-5%)")
467+ else if (if (if ((indexOf(bG, e) == unit))
468+ then (indexOf(bG, d) == unit)
469+ else false)
470+ then (indexOf(bG, f) == unit)
471+ else false)
472+ then throw("pool must have USDT, USDN or PUZZLE in the composition")
473+ else {
474+ let bN = split(bG, ",")
475+ let bO = {
476+ let C = bN
477+ let D = size(C)
478+ let E = nil
479+ func ap (G,H) = if ((H >= D))
480+ then G
481+ else t(G, C[H])
465482
466- func ao (E,F) = if ((F >= B))
467- then E
468- else throw("List size exceeds 10")
469-
470- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
471- }
472- let bK = split(bC, ",")
473- let bL = {
474- let A = bK
475- let B = size(A)
476- let C = 0
477- func aG (E,F) = if ((F >= B))
478- then E
479- else by(E, A[F])
480-
481- func aH (E,F) = if ((F >= B))
482- then E
483- else throw("List size exceeds 10")
484-
485- aH(aG(aG(aG(aG(aG(aG(aG(aG(aG(aG(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
486- }
487- let bM = if ((indexOf(bB, c) == unit))
488- then d
489- else c
490- func bN (s,bO) = if ((bO >= size(bJ)))
491- then s
492- else {
493- let bP = {
494- let j = bJ[bO]
495- if ($isInstanceOf(j, "ByteVector"))
496- then {
497- let Z = j
498- value(assetInfo(Z)).decimals
499- }
500- else 8
501- }
502- (s ++ [IntegerEntry((("static_" + bI[bO]) + "_scale"), pow(10, 0, bP, 0, 0, DOWN)), IntegerEntry((("static_" + bI[bO]) + "_decimals"), bP), IntegerEntry((("static_" + bI[bO]) + "_weight"), value(parseInt(bK[bO])))])
503- }
504-
505- if ((bL != 10000))
506- then throw("sum of token weights must be equal to 10000")
507- else ({
508- let A = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
509- let B = size(A)
510- let C = nil
511- func bQ (E,F) = if ((F >= B))
512- then E
513- else bN(E, A[F])
514-
515- func bR (E,F) = if ((F >= B))
516- then E
483+ func aq (G,H) = if ((H >= D))
484+ then G
517485 else throw("List size exceeds 10")
518486
519- bR(bQ(bQ(bQ(bQ(bQ(bQ(bQ(bQ(bQ(bQ(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
520- } ++ [StringEntry("static_tokenIds", bB), StringEntry("static_feeToken", bM), StringEntry("static_tokenWeights", bC), IntegerEntry("static_tokensAmount", size(bJ)), StringEntry("static_poolDomain", bE), StringEntry("static_baseTokenId", bD), StringEntry("static_poolOwner", bF), IntegerEntry("static_fee", bG)])
521- }
487+ aq(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
488+ }
489+ let bP = split(bH, ",")
490+ let bQ = {
491+ let C = bP
492+ let D = size(C)
493+ let E = 0
494+ func aL (G,H) = if ((H >= D))
495+ then G
496+ else bD(G, C[H])
497+
498+ func aM (G,H) = if ((H >= D))
499+ then G
500+ else throw("List size exceeds 10")
501+
502+ aM(aL(aL(aL(aL(aL(aL(aL(aL(aL(aL(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
503+ }
504+ let bR = if ((indexOf(bG, d) == unit))
505+ then if ((indexOf(bG, e) == unit))
506+ then f
507+ else e
508+ else d
509+ func bS (u,bT) = if ((bT >= size(bO)))
510+ then u
511+ else {
512+ let bU = {
513+ let l = bO[bT]
514+ if ($isInstanceOf(l, "ByteVector"))
515+ then {
516+ let ab = l
517+ value(assetInfo(ab)).decimals
518+ }
519+ else 8
520+ }
521+ (u ++ [IntegerEntry((("static_" + bN[bT]) + "_scale"), pow(10, 0, bU, 0, 0, DOWN)), IntegerEntry((("static_" + bN[bT]) + "_decimals"), bU), IntegerEntry((("static_" + bN[bT]) + "_weight"), value(parseInt(bP[bT])))])
522+ }
523+
524+ if ((bQ != 10000))
525+ then throw("sum of token weights must be equal to 10000")
526+ else ({
527+ let C = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
528+ let D = size(C)
529+ let E = nil
530+ func bV (G,H) = if ((H >= D))
531+ then G
532+ else bS(G, C[H])
533+
534+ func bW (G,H) = if ((H >= D))
535+ then G
536+ else throw("List size exceeds 10")
537+
538+ bW(bV(bV(bV(bV(bV(bV(bV(bV(bV(bV(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
539+ } ++ [StringEntry("static_tokenIds", bG), StringEntry("static_feeToken", bR), StringEntry("static_tokenWeights", bH), IntegerEntry("static_tokensAmount", size(bO)), StringEntry("static_poolDomain", bJ), StringEntry("static_baseTokenId", bI), StringEntry("static_poolOwner", bK), IntegerEntry("static_fee", bL)])
540+ }
522541 }
523542
524543
525544
526-@Callable(bA)
527-func deInit () = if ((bA.caller != this))
528- then throw("admin only")
529- else [IntegerEntry("global_wasInited", 0)]
545+@Callable(bF)
546+func deInit () = if (aa())
547+ then throw("contract is on stop")
548+ else if ((bF.caller != this))
549+ then throw("admin only")
550+ else [IntegerEntry("global_wasInited", 0)]
530551
531552
532553
533-@Callable(bA)
554+@Callable(bF)
534555 func init () = {
535- func bS () = {
536- func aj (s,bz) = (s ++ [IntegerEntry((("global_" + n(bz.assetId)) + "_balance"), bz.amount)])
556+ func bX () = {
557+ func al (u,bE) = (u ++ [IntegerEntry((("global_" + p(bE.assetId)) + "_balance"), bE.amount)])
537558
538- let A = bA.payments
539- let B = size(A)
540- let C = nil
541- func an (E,F) = if ((F >= B))
542- then E
543- else aj(E, A[F])
559+ let C = bF.payments
560+ let D = size(C)
561+ let E = nil
562+ func ap (G,H) = if ((H >= D))
563+ then G
564+ else al(G, C[H])
544565
545- func ao (E,F) = if ((F >= B))
546- then E
566+ func aq (G,H) = if ((H >= D))
567+ then G
547568 else throw("List size exceeds 10")
548569
549- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
570+ aq(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
550571 }
551572
552- func bT (ai) = {
553- func aj (s,bU) = {
554- let o = bU.assetId
555- func aE (s,bz) = if ((bz == o))
556- then value(indexOf(z, bz))
557- else s
573+ func bY (ak) = {
574+ func al (u,bZ) = {
575+ let q = bZ.assetId
576+ func aJ (u,bE) = if ((bE == q))
577+ then value(indexOf(B, bE))
578+ else u
558579
559- let bV = {
560- let A = z
561- let B = size(A)
562- let C = 1
563- func an (E,F) = if ((F >= B))
564- then E
565- else aE(E, A[F])
580+ let ca = {
581+ let C = B
582+ let D = size(C)
583+ let E = 1
584+ func ap (G,H) = if ((H >= D))
585+ then G
586+ else aJ(G, C[H])
566587
567- func ao (E,F) = if ((F >= B))
568- then E
588+ func aq (G,H) = if ((H >= D))
589+ then G
569590 else throw("List size exceeds 10")
570591
571- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
592+ aq(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
572593 }
573- fraction(s, pow(bU.amount, K[bV], H[bV], R, 8, FLOOR), T)
594+ fraction(u, pow(bZ.amount, M[ca], J[ca], T, 8, FLOOR), V)
574595 }
575596
576- let A = ai
577- let B = size(A)
578- let C = W
579- func an (E,F) = if ((F >= B))
580- then E
581- else aj(E, A[F])
597+ let C = ak
598+ let D = size(C)
599+ let E = Y
600+ func ap (G,H) = if ((H >= D))
601+ then G
602+ else al(G, C[H])
582603
583- func ao (E,F) = if ((F >= B))
584- then E
604+ func aq (G,H) = if ((H >= D))
605+ then G
585606 else throw("List size exceeds 10")
586607
587- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
608+ aq(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
588609 }
589610
590- if ((h("global_wasInited") > 0))
591- then throw("pool already inited")
592- else {
593- let bW = bT(bA.payments)
594- if ((bW == 0))
595- then throw("you need a bigger tokens amount to launch the pool")
596- else {
597- let bX = Issue(("PZ " + m("static_poolDomain")), "Puzzle Swap: pool index token", bW, V, true, unit, 0)
598- let bY = calculateAssetId(bX)
599- (bS() ++ [bX, IntegerEntry("global_poolToken_amount", bW), IntegerEntry("global_wasInited", 1), BinaryEntry("global_poolToken_id", bY), StringEntry("static_poolToken_idStr", n(bY)), IntegerEntry((toString(bA.caller) + "_indexStaked"), bW), IntegerEntry("global_indexStaked", bW)])
600- }
601- }
602- }
603-
604-
605-
606-@Callable(bA)
607-func generateIndex (aK) = if ((size(bA.payments) != y))
608- then throw(("you need to attach all pool tokens. amount of pool tokens: " + toString(y)))
609- else if (!(aA(bA.payments)))
610- then throw("wrong assets attached")
611- else {
612- let al = ah(bA.payments)
613- let bZ = Reissue(getBinaryValue("global_poolToken_id"), al, true)
614- let ca = aI(al, bA.payments, bA.originCaller, aK)
615- $Tuple2((ca ++ [ScriptTransfer(bA.caller, al, l("global_poolToken_id")), bZ, IntegerEntry("global_poolToken_amount", (h("global_poolToken_amount") + al))]), al)
616- }
617-
618-
619-
620-@Callable(bA)
621-func stakeIndex () = {
622- let br = toString(bA.originCaller)
623- let bU = bA.payments[0]
624- if ((value(bU.assetId) != l("global_poolToken_id")))
625- then throw("wrong asset attached")
626- else bw(br, bU.amount)
627- }
628-
629-
630-
631-@Callable(bA)
632-func unstakeIndex (bs) = {
633- let br = toString(bA.originCaller)
634- let cb = h((br + "_indexStaked"))
635- if ((bs > cb))
636- then throw("you don't have index tokens available")
637- else if (Y())
638- then throw("contract is on stop")
639- else (bp(bA.originCaller) ++ [IntegerEntry((br + "_indexStaked"), (cb - bs)), IntegerEntry("global_indexStaked", (h("global_indexStaked") - bs)), ScriptTransfer(bA.caller, bs, getBinaryValue("global_poolToken_id"))])
640- }
641-
642-
643-
644-@Callable(bA)
645-func claimIndexRewards () = if (Y())
646- then throw("contract is on stop")
647- else bp(bA.caller)
648-
649-
650-
651-@Callable(bA)
652-func redeemIndex (cc) = {
653- let bU = bA.payments[0]
654- if ((bU.assetId != l("global_poolToken_id")))
655- then throw("please attach pool share token")
656- else if (Y())
657- then throw("contract is on stop")
611+ if (aa())
612+ then throw("contract is on stop")
613+ else if ((j("global_wasInited") > 0))
614+ then throw("pool already inited")
658615 else {
659- let aV = bU.amount
660- let ca = aU(aV, if (cc)
661- then bA.originCaller
662- else bA.caller)
663- (ca ++ [Burn(l("global_poolToken_id"), aV), IntegerEntry("global_poolToken_amount", (h("global_poolToken_amount") - aV))])
616+ let cb = bY(bF.payments)
617+ if ((cb == 0))
618+ then throw("you need a bigger tokens amount to launch the pool")
619+ else {
620+ let cc = Issue(("PZ " + o("static_poolDomain")), "Puzzle Swap: pool index token", cb, X, true, unit, 0)
621+ let cd = calculateAssetId(cc)
622+ (bX() ++ [cc, IntegerEntry("global_poolToken_amount", cb), IntegerEntry("global_wasInited", 1), BinaryEntry("global_poolToken_id", cd), StringEntry("static_poolToken_idStr", p(cd)), IntegerEntry((toString(bF.caller) + "_indexStaked"), cb), IntegerEntry("global_indexStaked", cb)])
623+ }
664624 }
665625 }
666626
667627
668628
669-@Callable(bA)
670-func swap (ba,cd) = if (Y())
629+@Callable(bF)
630+func generateIndex (aP) = if (aa())
671631 then throw("contract is on stop")
672- else {
673- let bU = if ((size(bA.payments) == 1))
674- then value(bA.payments[0])
675- else throw("please attach exactly one payment")
676- let aY = value(bA.payments[0].amount)
677- let ce = bU.assetId
678- let cf = p(ba)
679- let cg = m("static_feeToken")
680- let ch = if ((cg == ""))
681- then a
682- else fromBase58String(cg)
683- let ci = h((("global_" + n(ce)) + "_balance"))
684- let cj = h((("global_" + ba) + "_balance"))
685- let ck = fraction(aY, Q, U)
686- let cl = (aY - ck)
687- let cm = aX(cl, ce, cf, ci, cj)
688- if ((cd > cm))
689- then throw(("amount to recieve is lower than given one: " + toString(cm)))
690- else if ((0 > (cj - cm)))
691- then throw("contract is out of reserves")
692- else {
693- let cn = (ci + cl)
694- let co = (cj - cm)
695- let cp = if ((ce == ch))
696- then cn
697- else if ((ch == cf))
698- then co
699- else h((("global_" + n(ch)) + "_balance"))
700- let cq = if ((ce == ch))
701- then ck
702- else aX(ck, ce, ch, cn, cp)
703- let cr = (cn + (if ((ce == ch))
704- then 0
705- else ck))
706- let cs = (co - (if ((ce == ch))
707- then 0
708- else if ((cf == ch))
709- then cq
710- else 0))
711- let ct = if (if ((ch != ce))
712- then (ch != cf)
713- else false)
714- then [IntegerEntry((("global_" + n(ch)) + "_balance"), (cp - cq))]
715- else nil
716- let cu = fraction(cq, 1, 10)
717- let cv = fraction(cq, 4, 10)
718- let cw = if ((ch == a))
719- then reentrantInvoke(Address(base58'3PFTbywqxtFfukX3HyT881g4iW5K4QL3FAS'), "topUpReward", nil, [AttachedPayment(ch, cv)])
720- else unit
721- if ((cw == cw))
722- then {
723- let cx = [IntegerEntry((("global_" + n(ce)) + "_balance"), cr)]
724- let cy = [IntegerEntry((("global_" + ba) + "_balance"), cs)]
725- $Tuple2(((((cy ++ cx) ++ ct) ++ [ScriptTransfer(bA.caller, cm, cf), ScriptTransfer(addressFromStringValue(m("static_poolOwner")), cu, ch), IntegerEntry("global_earnedByOwner", (h("global_earnedByOwner") + cu)), IntegerEntry("global_volume", (h("global_volume") + ap(ce, aY, ci, cp)))]) ++ (if ((cw == unit))
726- then [Burn(ch, cv)]
727- else nil)), cm)
728- }
729- else throw("Strict value is not equal to itself.")
730- }
731- }
632+ else if ((size(bF.payments) != A))
633+ then throw(("you need to attach all pool tokens. amount of pool tokens: " + toString(A)))
634+ else if (!(aF(bF.payments)))
635+ then throw("wrong assets attached")
636+ else {
637+ let an = aj(bF.payments)
638+ let ce = Reissue(getBinaryValue("global_poolToken_id"), an, true)
639+ let cf = aN(an, bF.payments, bF.originCaller, aP)
640+ $Tuple2((cf ++ [ce, ScriptTransfer(bF.caller, an, n("global_poolToken_id")), IntegerEntry("global_poolToken_amount", (j("global_poolToken_amount") + an))]), an)
641+ }
732642
733643
734-@Verifier(cz)
735-func cA () = if (Y())
644+
645+@Callable(bF)
646+func stakeIndex () = {
647+ let bw = toString(bF.originCaller)
648+ let bZ = bF.payments[0]
649+ if (aa())
650+ then throw("contract is on stop")
651+ else if ((value(bZ.assetId) != n("global_poolToken_id")))
652+ then throw("wrong asset attached")
653+ else bB(bw, bZ.amount)
654+ }
655+
656+
657+
658+@Callable(bF)
659+func unstakeIndex (bx) = {
660+ let bw = toString(bF.originCaller)
661+ let cg = j((bw + "_indexStaked"))
662+ if (aa())
663+ then throw("contract is on stop")
664+ else if ((bx > cg))
665+ then throw("you don't have index tokens available")
666+ else if (aa())
667+ then throw("contract is on stop")
668+ else (bu(bF.originCaller)._1 ++ [IntegerEntry((bw + "_indexStaked"), (cg - bx)), IntegerEntry("global_indexStaked", (j("global_indexStaked") - bx)), ScriptTransfer(bF.caller, bx, getBinaryValue("global_poolToken_id"))])
669+ }
670+
671+
672+
673+@Callable(bF)
674+func claimIndexRewards () = if (aa())
675+ then throw("contract is on stop")
676+ else bu(bF.caller)
677+
678+
679+
680+@Callable(bF)
681+func evaluateClaim (ch) = $Tuple2(nil, bu(addressFromStringValue(ch))._2)
682+
683+
684+
685+@Callable(bF)
686+func redeemIndex (ci) = {
687+ let bZ = bF.payments[0]
688+ if ((bZ.assetId != n("global_poolToken_id")))
689+ then throw("please attach pool share token")
690+ else if (aa())
691+ then throw("contract is on stop")
692+ else {
693+ let ba = bZ.amount
694+ let cf = aZ(ba, if (ci)
695+ then bF.originCaller
696+ else bF.caller)
697+ (cf ++ [Burn(n("global_poolToken_id"), ba), IntegerEntry("global_poolToken_amount", (j("global_poolToken_amount") - ba))])
698+ }
699+ }
700+
701+
702+
703+@Callable(bF)
704+func swap (bf,cj) = {
705+ let bZ = if ((size(bF.payments) == 1))
706+ then value(bF.payments[0])
707+ else throw("please attach exactly one payment")
708+ let bd = value(bF.payments[0].amount)
709+ let ck = bZ.assetId
710+ let cl = r(bf)
711+ let cm = o("static_feeToken")
712+ let cn = if ((cm == ""))
713+ then a
714+ else fromBase58String(cm)
715+ let co = j((("global_" + p(ck)) + "_balance"))
716+ let cp = j((("global_" + bf) + "_balance"))
717+ let cq = fraction(bd, S, W)
718+ let cr = (bd - cq)
719+ let cs = bc(cr, ck, cl, co, cp)
720+ let ct = (cp - cs)
721+ let cu = (co + cr)
722+ let cv = if ((cn == ck))
723+ then cu
724+ else if ((cn == cl))
725+ then ct
726+ else j((("global_" + p(cn)) + "_balance"))
727+ let cw = bc(cq, ck, cn, co, cv)
728+ if ((cj > cs))
729+ then throw(("amount to recieve is lower than given one: " + toString(cs)))
730+ else if ((cl == ck))
731+ then throw("this swap is not allowed")
732+ else if ((0 > (cp - cs)))
733+ then throw("contract is out of reserves")
734+ else if (aa())
735+ then throw("contract is on stop")
736+ else {
737+ let cx = fraction(cw, 1, 10)
738+ let cy = fraction(cw, 4, 10)
739+ let cz = if ((cn == a))
740+ then reentrantInvoke(Address(base58'3PFTbywqxtFfukX3HyT881g4iW5K4QL3FAS'), "topUpReward", nil, [AttachedPayment(cn, cy)])
741+ else unit
742+ if ((cz == cz))
743+ then {
744+ let cA = (cu - (if ((ck == cn))
745+ then cw
746+ else 0))
747+ let cB = (ct - (if ((cl == cn))
748+ then cw
749+ else 0))
750+ let cC = if (if ((cn != ck))
751+ then (cn != cl)
752+ else false)
753+ then (cv - cw)
754+ else unit
755+ let cD = IntegerEntry((("global_" + p(ck)) + "_balance"), cA)
756+ let cE = IntegerEntry((("global_" + bf) + "_balance"), cB)
757+ let cF = if ((cC != unit))
758+ then IntegerEntry((("global_" + p(cn)) + "_balance"), cv)
759+ else StringEntry("hello", "world")
760+ $Tuple2(([cE, cD, cF, ScriptTransfer(bF.caller, cs, cl), ScriptTransfer(addressFromStringValue(o("static_poolOwner")), cx, cn), IntegerEntry("global_earnedByOwner", (j("global_earnedByOwner") + cx)), IntegerEntry("global_volume", (j("global_volume") + ar(ck, bd, co, cv)))] ++ (if ((cz == unit))
761+ then [ScriptTransfer(Address(base58'3P4kBiU4wr2yV1S5gMfu3MdkVvy7kxXHsKe'), cy, cn)]
762+ else nil)), cs)
763+ }
764+ else throw("Strict value is not equal to itself.")
765+ }
766+ }
767+
768+
769+@Verifier(cG)
770+func cH () = if (aa())
736771 then false
737- else if (sigVerify(cz.bodyBytes, cz.proofs[0], cz.senderPublicKey))
772+ else if (sigVerify(cG.bodyBytes, cG.proofs[0], cG.senderPublicKey))
738773 then true
739- else sigVerify(cz.bodyBytes, cz.proofs[0], g)
774+ else sigVerify(cG.bodyBytes, cG.proofs[0], i)
740775

github/deemru/w8io/6500d08 
205.93 ms