tx · 2mAvsfm6S64zRQamk7oYB1ANbSrVhm4EfCpKBzutkC5U

3P7VznyyJc91e2SXpWTgc9Zp2d9XWHdwLJ1:  -0.02600000 Waves

2024.03.04 22:02 [4069497] smart account 3P7VznyyJc91e2SXpWTgc9Zp2d9XWHdwLJ1 > SELF 0.00000000 Waves

{ "type": 13, "id": "2mAvsfm6S64zRQamk7oYB1ANbSrVhm4EfCpKBzutkC5U", "fee": 2600000, "feeAssetId": null, "timestamp": 1709578981916, "version": 2, "chainId": 87, "sender": "3P7VznyyJc91e2SXpWTgc9Zp2d9XWHdwLJ1", "senderPublicKey": "DiCe6VGgddpG7YfGhT4XXsPuQtiyzaV68EZUB8GNT3hs", "proofs": [ "Arj1tN1MXWhKBZs7DYMoDWYfATVku7tPgf2HowR26tgtCjq7euhnHJxZRtU2UzoX3xLdjBmnADUjy1Z81dSfW34" ], "script": "base64:BgIHCAISAwoBCHgAA3JleAIjM1BHRkh6VkdUNE5UaWd3Q0tQMU5jd29Ya29kVlp3dkJ1dVUADXN3b3BmaV9vcmFjbGUCIzNQRWJxVmlFUkNvS25tY1NVTGg2bjJhaU12VWRTUWRDc29tAAhwbF9wcm94eQIjM1BKRVNWRFRIUnY4aTgzWGJtSHJSR1FoRGM1cmdSM2F6UXMABG9yY2wCIzNQOGQxRTFCTEtvRDUyeTNiUUoxYkRUZDJURDFncGFMbjl0AA53eF9mYWN0b3J5X3N0cgIjM1BDdUhzVFU1OFdLaENxb3RiY1N3QUJ2ZFB6cXFWQWJiVHYAC3d4X3N3YXBfc3RyAiMzUDY4ek5pdWZzdTF2aVpwdTFhWTNjZGFoUlJLY3ZWNU45MwAOZWFzdF9wcm94eV9zdHICIzNQTXRHbmYzTFhpRUc2aXNEUUxxMXhNREtVcWpRR3FOSExiABBlYXN0X2Nvb3JkaW5hdG9yAiMzUEo1Q1ZScVcxNW5ua0tOSEpNelQzcFBUdERKZjcxckd4SwAKd3hfZmFjdG9yeQkBB0FkZHJlc3MBCQDZBAEFDnd4X2ZhY3Rvcnlfc3RyAAd3eF9zd2FwCQEHQWRkcmVzcwEJANkEAQULd3hfc3dhcF9zdHIACmVhc3RfcHJveHkJAQdBZGRyZXNzAQkA2QQBBQ5lYXN0X3Byb3h5X3N0cgAKS19hbV9hc19pZAIPJXNfX2Ftb3VudEFzc2V0AApLX3ByX2FzX2lkAg4lc19fcHJpY2VBc3NldAAFS19hbXACByVzX19hbXAAB0tfc2hhcmUCRCVzJXNfX3NoYXJlQXNzZXRCYWxhbmNlX19ZaU5ib2ZGekMxN2pFSEhDTXdyUmNweTlNcnJqYWJNTUxaeGc4ZzV4bWY3AAhLX3N0YWtlZAIaJXMlc19fc3Rha2VkQmFsYW5jZV9fV0FWRVMACUtfYV9hc19pZAIKQV9hc3NldF9pZAAJS19iX2FzX2lkAgpCX2Fzc2V0X2lkAApLX2FfYXNfYmFsAg9BX2Fzc2V0X2JhbGFuY2UACktfYl9hc19iYWwCD0JfYXNzZXRfYmFsYW5jZQAFS19mZWUCCmNvbW1pc3Npb24AC0tfYXNzZXRfaWRzAg9zdGF0aWNfdG9rZW5JZHMACUtfZmVlX3B1egIKc3RhdGljX2ZlZQAKS19mZWVUb2tlbgIPc3RhdGljX2ZlZVRva2VuABVLX2dsb2JhbF9wb29sVG9rZW5faWQCFnN0YXRpY19wb29sVG9rZW5faWRTdHIAHEtfZ2xvYmFsX3Bvb2xUb2tlbl9pZF9iaW5hcnkCE2dsb2JhbF9wb29sVG9rZW5faWQAGUtfZ2xvYmFsX3Bvb2xUb2tlbl9hbW91bnQCF2dsb2JhbF9wb29sVG9rZW5fYW1vdW50AA5LX3N0YXRpY19LTXVsdAIMc3RhdGljX0tNdWx0ABZLX3RtcF9yZWJsYW5jZUFzc2V0SWRzAhV0bXBfcmViYWxhbmNlQXNzZXRJZHMAFktfcmViYWxhbmNlX2luUHJvZ3Jlc3MCFHJlYmFsYW5jZV9pblByb2dyZXNzABVLX3JlYmFsYW5jZV9zdGVwc0RvbmUCE3JlYmFsYW5jZV9zdGVwc0RvbmUAF0tfcmViYWxhbmNlX3N0ZXBzQW1vdW50AhVyZWJhbGFuY2Vfc3RlcHNBbW91bnQAF0tfcmViYWxhbmNlX2Fzc2V0RGVsdGFzAhVyZWJhbGFuY2VfYXNzZXREZWx0YXMAG0tfcmViYWxhbmNlX2F0dGFjaGVkUGF5bWVudAIacmViYWxhbmNlX2F0dGFjaGVkUGF5bWVudF8AC3Rzbl9zd2FwcGVyAiMzUEt6NWpuSkxvaEYyR2pTaFE3Ykc1SDRCZWJkb0E5OHpaMgAQdHNuX3N3YXBwZXJfYWRkcgkBB0FkZHJlc3MBCQDZBAEFC3Rzbl9zd2FwcGVyAAVrX2ZlZQIFa19mZWUACGtfcmViYXRlAghrX3JlYmF0ZQAVa19mZWVUb1N0YWtlcnNQZXJjZW50AhVrX2ZlZVRvU3Rha2Vyc1BlcmNlbnQAD2tfZXhjZXNzQmFsYW5jZQIPa19leGNlc3NCYWxhbmNlAA1rX2ZyZWVCYWxhbmNlAg1rX2ZyZWVCYWxhbmNlABRrX21heFNwb3RVdGlsaXphdGlvbgIUa19tYXhTcG90VXRpbGl6YXRpb24ADWtfdG90YWxTdXBwbHkCDWtfdG90YWxTdXBwbHkABmtfcmF0ZQIGa19yYXRlAAhrX2JzQXN0UgIIa19ic0FzdFIACGtfYnNBc3RXAghrX2JzQXN0VwAIa19xdEFzdFICCGtfcXRBc3RSAAhrX3F0QXN0VwIIa19xdEFzdFcAEGtfbWF4UHJpY2VJbXBhY3QCEGtfbWF4UHJpY2VJbXBhY3QAEGtfbWF4UHJpY2VTcHJlYWQCEGtfbWF4UHJpY2VTcHJlYWQAE2tfdG90YWxQb3NpdGlvblNpemUCE2tfdG90YWxQb3NpdGlvblNpemUADGtfYmFzZU9yYWNsZQIMa19iYXNlT3JhY2xlABBrX21heE9yYWNsZURlbGF5AhBrX21heE9yYWNsZURlbGF5AAlrX3N0b3JhZ2UCB1NUT1JBR0UACGtfYXNzZXRzAgZBU1NFVFMACGtfc3RhdHVzAgZTVEFUVVMACGtfcGF1c2VkAgZQQVVTRUQAEGtfYXNzZXRfYmFsYW5jZXMCDkFTU0VUX0JBTEFOQ0VTAA9rX2Fzc2V0X3dlaWdodHMCDUFTU0VUX1dFSUdIVFMACGtfbHBfZmVlAgZMUF9GRUUADmtfcHJvdG9jb2xfZmVlAgxQUk9UT0NPTF9GRUUAC2tfcHJlY2lzaW9uAglQUkVDSVNJT04AEmtfc2lnbWFfZmVlX3Blcl9scAIQU0lHTUFfRkVFX1BFUl9MUAAXa191c2VyX3NpZ21hX2ZlZV9wZXJfbHACFVVTRVJfU0lHTUFfRkVFX1BFUl9MUAAJa191c2VyX2xwAgdVU0VSX0xQAAprX3RvdGFsX2xwAghUT1RBTF9MUAAOa191c2VyX3Byb2ZpdHMCDFVTRVJfUFJPRklUUwARa19yZXdhcmRfYmFsYW5jZXMCD1JFV0FSRF9CQUxBTkNFUwEKZ2V0X2RvbWFpbgELcG9vbEFkZHJlc3MEByRtYXRjaDAFC3Bvb2xBZGRyZXNzAwkAAAICIzNQNHVBNWV0blppNEFtQmFiS2lucTJiTWlXVThLY25IWmRIBQckbWF0Y2gwAgExAgEwAQlrX3BsVG9rZW4CCGFzc2V0X2lkBmRvbWFpbgkArAICCQCsAgIJAKwCAgIJc2V0dXBfcGxfBQhhc3NldF9pZAIBXwUGZG9tYWluARBrX3RvdGFsX3N1cHBsaWVkAQhhc3NldF9pZAkArAICAg90b3RhbF9zdXBwbGllZF8FCGFzc2V0X2lkAQdrX3NSYXRlAQhhc3NldF9pZAkArAICBQhhc3NldF9pZAIGX3NSYXRlARBrX3RvdGFsX2JvcnJvd2VkAQhhc3NldF9pZAkArAICAg90b3RhbF9ib3Jyb3dlZF8FCGFzc2V0X2lkAQdrX2JSYXRlAQhhc3NldF9pZAkArAICBQhhc3NldF9pZAIGX2JSYXRlAQtrX21heFN1cHBseQEIYXNzZXRfaWQJAKwCAgIQc2V0dXBfbWF4U3VwcGx5XwUIYXNzZXRfaWQAEGtfbGFzdFJhdGVIZWlnaHQCDmxhc3RSYXRlSGVpZ2h0ARBnZXRQdXpCYWxhbmNlS2V5AQdhc3NldElkCQCsAgIJAKwCAgIHZ2xvYmFsXwUHYXNzZXRJZAIIX2JhbGFuY2UBD2dldFB1eldlaWdodEtleQEHYXNzZXRJZAkArAICCQCsAgICB3N0YXRpY18FB2Fzc2V0SWQCB193ZWlnaHQBB2dldEJQQUsBB2FkZHJlc3MJAKwCAgUHYWRkcmVzcwIQX3N0YXRpY0Fzc2V0c0lkcwEMdHJ5R2V0U3RyaW5nAgNrZXkHYWRkcmVzcwQHJG1hdGNoMAkAnQgCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFiBQckbWF0Y2gwBQFiAgABCnRyeUdldEJvb2wCA2tleQdhZGRyZXNzBAckbWF0Y2gwCQCbCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAFiBQckbWF0Y2gwBQFiBwENdHJ5R2V0SW50ZWdlcgIDa2V5B2FkZHJlc3MEByRtYXRjaDAJAJoIAgUHYWRkcmVzcwUDa2V5AwkAAQIFByRtYXRjaDACA0ludAQBYgUHJG1hdGNoMAUBYgAAARR0cnlHZXRJbnRlZ2VyV2l0aERlZgMDa2V5B2FkZHJlc3MDZGVmBAckbWF0Y2gwCQCaCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWIFByRtYXRjaDAFAWIFA2RlZgEOZ2V0QXNzZXRTdHJpbmcBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkA2AQBBQFiAgVXQVZFUwEQZ2V0V3hEZWZhdWx0RmVlcwAEB3Bvb2xGZWUJARR0cnlHZXRJbnRlZ2VyV2l0aERlZgMCCyVzX19wb29sRmVlBQd3eF9zd2FwAMCaDAQLcHJvdG9jb2xGZWUJARR0cnlHZXRJbnRlZ2VyV2l0aERlZgMCDyVzX19wcm90b2NvbEZlZQUHd3hfc3dhcADAmgwJAJQKAgkApAMBBQdwb29sRmVlCQCkAwEFC3Byb3RvY29sRmVlAQ1nZXRXeFBvb2xGZWVzAQdhZGRyZXNzBAdmZWVzS2V5CQCsAgICDyVzJXNfX3N3YXBGZWVfXwUHYWRkcmVzcwQEZmVlcwkBDHRyeUdldFN0cmluZwIFB2ZlZXNLZXkFCnd4X2ZhY3RvcnkDCQAAAgUEZmVlcwIACQEQZ2V0V3hEZWZhdWx0RmVlcwAEDHNwbGl0dGVkRmVlcwkAtQkCBQRmZWVzAgJfXwkAlAoCCQCRAwIFDHNwbGl0dGVkRmVlcwABCQCRAwIFDHNwbGl0dGVkRmVlcwACAQ9nZXRBc3NldEJhbGFuY2UCB2FkZHJlc3MHYXNzZXRJZAQBYQkA8AcCBQdhZGRyZXNzBQdhc3NldElkBQFhAQ9nZXRXYXZlc0JhbGFuY2UBB2FkZHJlc3MEAXcICQDvBwEFB2FkZHJlc3MJYXZhaWxhYmxlBQF3AQpnZXRCYWxhbmNlAgZyZXN1bHQHYXNzZXRJZAQHYWRkcmVzcwkArwICBQZyZXN1bHQAIwQEYWRkcgkBB0FkZHJlc3MBCQDZBAEFB2FkZHJlc3MEB2JhbGFuY2UDCQAAAgUHYXNzZXRJZAIFV0FWRVMJAQ9nZXRXYXZlc0JhbGFuY2UBBQRhZGRyBANhSWQJANkEAQUHYXNzZXRJZAkBD2dldEFzc2V0QmFsYW5jZQIFBGFkZHIFA2FJZAQDbGVuCQCxAgEFBnJlc3VsdAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFB2FkZHJlc3MJALACAgUGcmVzdWx0ACMFB2Fzc2V0SWQCAToJAKQDAQUHYmFsYW5jZQIBLAERZ2V0QWRkcmVzc0JhbGFuY2UCBGFkZHIHYXNzZXRJZAQHYmFsYW5jZQMJAAACBQdhc3NldElkAgVXQVZFUwkBD2dldFdhdmVzQmFsYW5jZQEFBGFkZHIEA2FJZAkA2QQBBQdhc3NldElkCQEPZ2V0QXNzZXRCYWxhbmNlAgUEYWRkcgUDYUlkBQdiYWxhbmNlARBnZXRBc3NldERlY2ltYWxzAQphc3NldElkU3RyBAhkZWNpbWFscwMJAAACBQphc3NldElkU3RyAgVXQVZFUwAICAkBBXZhbHVlAQkA7AcBCQDZBAEFCmFzc2V0SWRTdHIIZGVjaW1hbHMFCGRlY2ltYWxzAQlnZXRXeERhdGEBB2FkZHJlc3MEBGFkZHIJAQdBZGRyZXNzAQkA2QQBBQdhZGRyZXNzBAhhbW91bnRJZAkBDHRyeUdldFN0cmluZwIFCktfYW1fYXNfaWQFBGFkZHIEB3ByaWNlSWQJAQx0cnlHZXRTdHJpbmcCBQpLX3ByX2FzX2lkBQRhZGRyBANhbXAJAQx0cnlHZXRTdHJpbmcCBQVLX2FtcAUEYWRkcgQFc2hhcmUJAQ10cnlHZXRJbnRlZ2VyAgUHS19zaGFyZQUEYWRkcgQFc3Rha2UJAQ10cnlHZXRJbnRlZ2VyAgUIS19zdGFrZWQFBGFkZHIECyR0MDY5MjU2OTc2CQENZ2V0V3hQb29sRmVlcwEFB2FkZHJlc3MEB3Bvb2xGZWUIBQskdDA2OTI1Njk3NgJfMQQLcHJvdG9jb2xGZWUIBQskdDA2OTI1Njk3NgJfMgkAlAoCCQCsAgIJAKwCAgUIYW1vdW50SWQCASwFB3ByaWNlSWQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQNhbXACASwJAKQDAQUFc2hhcmUCASwJAKQDAQUFc3Rha2UCASwFB3Bvb2xGZWUCASwFC3Byb3RvY29sRmVlAQlnZXRTd0RhdGEBB2FkZHJlc3MEBGFkZHIJAQdBZGRyZXNzAQkA2QQBBQdhZGRyZXNzBARBX2lkCQEMdHJ5R2V0U3RyaW5nAgUJS19hX2FzX2lkBQRhZGRyBARCX2lkCQEMdHJ5R2V0U3RyaW5nAgUJS19iX2FzX2lkBQRhZGRyBAlBX2JhbGFuY2UJAQ10cnlHZXRJbnRlZ2VyAgUKS19hX2FzX2JhbAUEYWRkcgQJQl9iYWxhbmNlCQENdHJ5R2V0SW50ZWdlcgIFCktfYl9hc19iYWwFBGFkZHIEA2ZlZQkBFHRyeUdldEludGVnZXJXaXRoRGVmAwUFS19mZWUFBGFkZHIA8C4ECmRlcHJlY2F0ZWQJAQp0cnlHZXRCb29sAgkArAICAgtkZXByZWNhdGVkXwUHYWRkcmVzcwkBB0FkZHJlc3MBCQDZBAEFDXN3b3BmaV9vcmFjbGUJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEQV9pZAIBOgkApAMBBQlBX2JhbGFuY2UCASwFBEJfaWQCAToJAKQDAQUJQl9iYWxhbmNlAgEsCQCkAwEFA2ZlZQIBLAkApQMBBQpkZXByZWNhdGVkARJnZXRQelJlYmFsYW5jZURhdGEBB2FkZHJlc3MEBGFkZHIJAQdBZGRyZXNzAQkA2QQBBQdhZGRyZXNzBAx0bXBBc3NldHNTdHIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEYWRkcgUWS190bXBfcmVibGFuY2VBc3NldElkcwIABAppblByb2dyZXNzCQELdmFsdWVPckVsc2UCCQCbCAIFBGFkZHIFFktfcmViYWxhbmNlX2luUHJvZ3Jlc3MHBAlzdGVwc0RvbmUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEYWRkcgUVS19yZWJhbGFuY2Vfc3RlcHNEb25lAAAEC3N0ZXBzQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBGFkZHIFF0tfcmViYWxhbmNlX3N0ZXBzQW1vdW50AAAEC2Fzc2V0RGVsdGFzCQELdmFsdWVPckVsc2UCCQCdCAIFBGFkZHIFF0tfcmViYWxhbmNlX2Fzc2V0RGVsdGFzAgAECXRtcEFzc2V0cwkAtQkCBQx0bXBBc3NldHNTdHICASwKAQ9jb2xsZWN0UGF5bWVudHMCBWFjY3VtB2Fzc2V0SWQEA2tleQkArAICBRtLX3JlYmFsYW5jZV9hdHRhY2hlZFBheW1lbnQFB2Fzc2V0SWQEA3ZhbAkBDXRyeUdldEludGVnZXICBQNrZXkFBGFkZHIDCQECIT0CBQN2YWwAAAkAzggCBQVhY2N1bQkAzAgCCQCsAgIJAKwCAgUDa2V5AgEqCQCkAwEFA3ZhbAUDbmlsBQVhY2N1bQQRcmViYWxhbmNlUGF5bWVudHMKAAIkbAUJdG1wQXNzZXRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQ9jb2xsZWN0UGF5bWVudHMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoEFHJlYmFsYW5jZVBheW1lbnRzU3RyCQC5CQIFEXJlYmFsYW5jZVBheW1lbnRzAgEsCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFDHRtcEFzc2V0c1N0cgIBOwkApQMBBQppblByb2dyZXNzAgE7CQCkAwEFCXN0ZXBzRG9uZQIBOwkApAMBBQtzdGVwc0Ftb3VudAIBOwULYXNzZXREZWx0YXMCATsFFHJlYmFsYW5jZVBheW1lbnRzU3RyARRjb2xsZWN0UHV6QXNzZXRzRGF0YQIGcmVzdWx0B2Fzc2V0SWQEA2xlbgkAkAMBBQZyZXN1bHQEB2FkZHJlc3MJAJEDAgUGcmVzdWx0CQBlAgUDbGVuAAEEBGFkZHIJAQdBZGRyZXNzAQkA2QQBBQdhZGRyZXNzBApiYWxhbmNlS2V5CQEQZ2V0UHV6QmFsYW5jZUtleQEFB2Fzc2V0SWQECXdlaWdodEtleQkBD2dldFB1eldlaWdodEtleQEFB2Fzc2V0SWQEB2JhbGFuY2UJAQ10cnlHZXRJbnRlZ2VyAgUKYmFsYW5jZUtleQUEYWRkcgQGd2VpZ2h0CQENdHJ5R2V0SW50ZWdlcgIFCXdlaWdodEtleQUEYWRkcgQLcmVhbEJhbGFuY2UJARFnZXRBZGRyZXNzQmFsYW5jZQIFBGFkZHIFB2Fzc2V0SWQEA3JlcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUHYXNzZXRJZAIBLAkApAMBBQdiYWxhbmNlAgEsCQCkAwEFBndlaWdodAIBLAkApAMBBQtyZWFsQmFsYW5jZQkAzAgCBQNyZXMFBnJlc3VsdAEJZ2V0UHpEYXRhAQdhZGRyZXNzBARhZGRyCQEHQWRkcmVzcwEJANkEAQUHYWRkcmVzcwQEZmVlMQkBDXRyeUdldEludGVnZXICBQlLX2ZlZV9wdXoFBGFkZHIECGZlZVRva2VuCQEMdHJ5R2V0U3RyaW5nAgUKS19mZWVUb2tlbgUEYWRkcgQKYXNzZXRzU3RyMQkBDHRyeUdldFN0cmluZwIFC0tfYXNzZXRfaWRzBQRhZGRyBAskdDA5NjEyOTc2NQMJAAACBQphc3NldHNTdHIxAgAJAJQKAgkBDHRyeUdldFN0cmluZwIJAQdnZXRCUEFLAQUHYWRkcmVzcwUEdGhpcwDIAQkAlAoCBQphc3NldHNTdHIxBQRmZWUxBAlhc3NldHNTdHIIBQskdDA5NjEyOTc2NQJfMQQDZmVlCAULJHQwOTYxMjk3NjUCXzIEBmFzc2V0cwkAtQkCBQlhc3NldHNTdHICASwECmFzc2V0c0RhdGEKAAIkbAUGYXNzZXRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAzAgCBQdhZGRyZXNzBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBFGNvbGxlY3RQdXpBc3NldHNEYXRhAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBANsZW4JAJADAQUKYXNzZXRzRGF0YQQJYXNzZXRzQXJyCQDRCAIFCmFzc2V0c0RhdGEJAGUCBQNsZW4AAQQNYXNzZXRzRGF0YVN0cgkAugkCBQlhc3NldHNBcnICATsEDnBvb2xUb2tlbklkU3RyCQEMdHJ5R2V0U3RyaW5nAgUVS19nbG9iYWxfcG9vbFRva2VuX2lkBQRhZGRyBAtwb29sVG9rZW5JZAMJAQIhPQIFDnBvb2xUb2tlbklkU3RyAgAFDnBvb2xUb2tlbklkU3RyBBFwb29sVG9rZW5JZEJpbmFyeQkBC3ZhbHVlT3JFbHNlAgkAnAgCBQRhZGRyBRxLX2dsb2JhbF9wb29sVG9rZW5faWRfYmluYXJ5CQDZBAECBGJ1YmkJAQ5nZXRBc3NldFN0cmluZwEFEXBvb2xUb2tlbklkQmluYXJ5BA9wb29sVG9rZW5BbW91bnQJAQ10cnlHZXRJbnRlZ2VyAgUZS19nbG9iYWxfcG9vbFRva2VuX2Ftb3VudAUEYWRkcgQFa011bHQJARR0cnlHZXRJbnRlZ2VyV2l0aERlZgMFDktfc3RhdGljX0tNdWx0BQRhZGRyAAEJAJgKBgUDZmVlBQhmZWVUb2tlbgULcG9vbFRva2VuSWQFD3Bvb2xUb2tlbkFtb3VudAUFa011bHQFDWFzc2V0c0RhdGFTdHIBCmdldFRzbkRhdGECB2FkZHJlc3MIYXNzZXRfaWQEBGFkZHIJAQdBZGRyZXNzAQkA2QQBBQdhZGRyZXNzBAZic0FzdFIJAQ10cnlHZXRJbnRlZ2VyAgUIa19ic0FzdFIFBGFkZHIEBmJzQXN0VwkBDXRyeUdldEludGVnZXICBQhrX2JzQXN0VwUEYWRkcgQGcXRBc3RSCQENdHJ5R2V0SW50ZWdlcgIFCGtfcXRBc3RSBQRhZGRyBAZxdEFzdFcJAQ10cnlHZXRJbnRlZ2VyAgUIa19xdEFzdFcFBGFkZHIEDm1heFByaWNlSW1wYWN0CQENdHJ5R2V0SW50ZWdlcgIFEGtfbWF4UHJpY2VJbXBhY3QFBGFkZHIEDm1heFByaWNlU3ByZWFkCQENdHJ5R2V0SW50ZWdlcgIFEGtfbWF4UHJpY2VTcHJlYWQFBGFkZHIEEXRvdGFsUG9zaXRpb25TaXplCQENdHJ5R2V0SW50ZWdlcgIFE2tfdG90YWxQb3NpdGlvblNpemUFBGFkZHIEDm1heE9yYWNsZURlbGF5CQENdHJ5R2V0SW50ZWdlcgIFEGtfbWF4T3JhY2xlRGVsYXkFBGFkZHIEDG9yYWNsZVN0cmluZwkBDHRyeUdldFN0cmluZwIFDGtfYmFzZU9yYWNsZQUEYWRkcgQDYXJyCQC1CQIFDG9yYWNsZVN0cmluZwIBLAQNJHQwMTEyMTQxMTI4MAkAlQoDCQCRAwIFA2FycgAACQCRAwIFA2FycgABCQCRAwIFA2FycgACBA1vcmFjbGVBZGRyZXNzCAUNJHQwMTEyMTQxMTI4MAJfMQQIcHJpY2VLZXkIBQ0kdDAxMTIxNDExMjgwAl8yBAhibG9ja0tleQgFDSR0MDExMjE0MTEyODACXzMECm9yYWNsZUFkZHIJAQdBZGRyZXNzAQkA2QQBBQ1vcmFjbGVBZGRyZXNzBAtvcmFjbGVQcmljZQkBDXRyeUdldEludGVnZXICBQhwcmljZUtleQUKb3JhY2xlQWRkcgQJY3VySGVpZ2h0BQZoZWlnaHQECmxhc3RIZWlnaHQDCQECIT0CBQhibG9ja0tleQIACQENdHJ5R2V0SW50ZWdlcgIFCGJsb2NrS2V5BQpvcmFjbGVBZGRyBQljdXJIZWlnaHQEBXZhdWx0CQEMdHJ5R2V0U3RyaW5nAgkArAICAg5rX2Fzc2V0X3ZhdWx0XwUIYXNzZXRfaWQFEHRzbl9zd2FwcGVyX2FkZHIECnZhdWx0X2FkZHIJAQdBZGRyZXNzAQkA2QQBBQV2YXVsdAQNZXhjZXNzQmFsYW5jZQkBDXRyeUdldEludGVnZXICBQ9rX2V4Y2Vzc0JhbGFuY2UFCnZhdWx0X2FkZHIEC2ZyZWVCYWxhbmNlCQENdHJ5R2V0SW50ZWdlcgIFDWtfZnJlZUJhbGFuY2UFCnZhdWx0X2FkZHIEEm1heFNwb3RVdGlsaXphdGlvbgkBDXRyeUdldEludGVnZXICBRRrX21heFNwb3RVdGlsaXphdGlvbgUKdmF1bHRfYWRkcgQLdG90YWxTdXBwbHkJAQ10cnlHZXRJbnRlZ2VyAgUNa190b3RhbFN1cHBseQUKdmF1bHRfYWRkcgQEcmF0ZQkBDXRyeUdldEludGVnZXICBQZrX3JhdGUFCnZhdWx0X2FkZHIJAKIKEAUGYnNBc3RSBQZic0FzdFcFBnF0QXN0UgUGcXRBc3RXBRF0b3RhbFBvc2l0aW9uU2l6ZQUObWF4UHJpY2VJbXBhY3QFDm1heFByaWNlU3ByZWFkBQtvcmFjbGVQcmljZQUNZXhjZXNzQmFsYW5jZQULZnJlZUJhbGFuY2UFEm1heFNwb3RVdGlsaXphdGlvbgULdG90YWxTdXBwbHkFBHJhdGUFCWN1ckhlaWdodAUKbGFzdEhlaWdodAUObWF4T3JhY2xlRGVsYXkBCGdldFByaWNlAQdhc3NldElkBAVwcmljZQkBDXRyeUdldEludGVnZXICCQCsAgIFB2Fzc2V0SWQCB190d2FwNUIJAQdBZGRyZXNzAQkA2QQBBQRvcmNsBQVwcmljZQEJZ2V0UExEYXRhAgxwb29sX2FkZHJlc3MIYXNzZXRfaWQEBmRvbWFpbgkBCmdldF9kb21haW4BBQxwb29sX2FkZHJlc3MEB3Bvb2xBZHIJAQdBZGRyZXNzAQkA2QQBBQxwb29sX2FkZHJlc3MECXBsVG9rZW5JZAkBDHRyeUdldFN0cmluZwIJAQlrX3BsVG9rZW4CBQhhc3NldF9pZAUGZG9tYWluCQEHQWRkcmVzcwEJANkEAQUIcGxfcHJveHkEBXNSYXRlCQENdHJ5R2V0SW50ZWdlcgIJAQdrX3NSYXRlAQUIYXNzZXRfaWQFB3Bvb2xBZHIEBWJSYXRlCQENdHJ5R2V0SW50ZWdlcgIJAQdrX2JSYXRlAQUIYXNzZXRfaWQFB3Bvb2xBZHIEDXRvdGFsU3VwcGxpZWQJAQ10cnlHZXRJbnRlZ2VyAgkBEGtfdG90YWxfc3VwcGxpZWQBBQhhc3NldF9pZAUHcG9vbEFkcgQNdG90YWxCb3Jyb3dlZAkBDXRyeUdldEludGVnZXICCQEQa190b3RhbF9ib3Jyb3dlZAEFCGFzc2V0X2lkBQdwb29sQWRyBAltYXhTdXBwbHkJAQx0cnlHZXRTdHJpbmcCCQELa19tYXhTdXBwbHkBBQhhc3NldF9pZAUHcG9vbEFkcgQKbGFzdEhlaWdodAkBDXRyeUdldEludGVnZXICBRBrX2xhc3RSYXRlSGVpZ2h0BQdwb29sQWRyBAljdXJIZWlnaHQFBmhlaWdodAQFcHJpY2UJAQhnZXRQcmljZQEFCGFzc2V0X2lkBAhkZWNpbWFscwkBEGdldEFzc2V0RGVjaW1hbHMBBQhhc3NldF9pZAkAnQoLBQhhc3NldF9pZAUJcGxUb2tlbklkBQVzUmF0ZQUFYlJhdGUFDXRvdGFsU3VwcGxpZWQFDXRvdGFsQm9ycm93ZWQFCW1heFN1cHBseQUKbGFzdEhlaWdodAUJY3VySGVpZ2h0BQVwcmljZQUIZGVjaW1hbHMBCXRlc3RfbG9vcAIGcmVzdWx0A2VsZQkAzAgCBQNlbGUFBnJlc3VsdAEOZ2V0QmFsYW5jZXNTdHICCWFzc2V0c1N0cgdhZGRyZXNzBAZhc3NldHMJALwJAgUJYXNzZXRzU3RyAgEsBANyZXMKAAIkbAUGYXNzZXRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUHYWRkcmVzcwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKZ2V0QmFsYW5jZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgMgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIECGJhbGFuY2VzCQCwAgIFA3JlcwAjBARiYWxzCQCzAgIFCGJhbGFuY2VzAAEFBGJhbHMBCXByb2Nlc3NXWAIGcmVzdWx0B2FkZHJlc3MEDSR0MDEzNjU2MTM2OTkJAQlnZXRXeERhdGEBBQdhZGRyZXNzBAlhc3NldHNTdHIIBQ0kdDAxMzY1NjEzNjk5Al8xBAVkYXRhcwgFDSR0MDEzNjU2MTM2OTkCXzIEDGFzc2V0c1N0cmluZwkBDmdldEJhbGFuY2VzU3RyAgUJYXNzZXRzU3RyBQdhZGRyZXNzBAdyZXNJdGVtCQCsAgIJAKwCAgkArAICCQCsAgIFB2FkZHJlc3MCAS8FDGFzc2V0c1N0cmluZwIBLwUFZGF0YXMJAMwIAgUHcmVzSXRlbQUGcmVzdWx0AQlwcm9jZXNzU1cCBnJlc3VsdAdhZGRyZXNzBAxhc3NldHNTdHJpbmcJAQlnZXRTd0RhdGEBBQdhZGRyZXNzBAdyZXNJdGVtCQCsAgIJAKwCAgUHYWRkcmVzcwIBLwUMYXNzZXRzU3RyaW5nCQDMCAIFB3Jlc0l0ZW0FBnJlc3VsdAEJcHJvY2Vzc1BaAgZyZXN1bHQHYWRkcmVzcwQNJHQwMTQwOTkxNDE5MAkBCWdldFB6RGF0YQEFB2FkZHJlc3MEA2ZlZQgFDSR0MDE0MDk5MTQxOTACXzEECGZlZVRva2VuCAUNJHQwMTQwOTkxNDE5MAJfMgQLcG9vbFRva2VuSWQIBQ0kdDAxNDA5OTE0MTkwAl8zBA9wb29sVG9rZW5BbW91bnQIBQ0kdDAxNDA5OTE0MTkwAl80BAVrTXVsdAgFDSR0MDE0MDk5MTQxOTACXzUEDGFzc2V0c1N0cmluZwgFDSR0MDE0MDk5MTQxOTACXzYECHJlYmFEYXRhCQESZ2V0UHpSZWJhbGFuY2VEYXRhAQUHYWRkcmVzcwQHcmVzSXRlbQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFB2FkZHJlc3MCAS8JAKQDAQUDZmVlAgEvBQhmZWVUb2tlbgIBLwUMYXNzZXRzU3RyaW5nAgEvBQhyZWJhRGF0YQIBLwULcG9vbFRva2VuSWQCAS8JAKQDAQUPcG9vbFRva2VuQW1vdW50AgEvCQCkAwEFBWtNdWx0CQDMCAIFB3Jlc0l0ZW0FBnJlc3VsdAEKcHJvY2Vzc1RTTgIGcmVzdWx0BWxhYmVsBANhcnIJALUJAgUFbGFiZWwCAV8EDSR0MDE0NTUyMTQ1OTQJAJQKAgkAkQMCBQNhcnIAAAkAkQMCBQNhcnIAAQQHYWRkcmVzcwgFDSR0MDE0NTUyMTQ1OTQCXzEECGFzc2V0X2lkCAUNJHQwMTQ1NTIxNDU5NAJfMgQNJHQwMTQ2MDAxNDgzOAkBCmdldFRzbkRhdGECBQdhZGRyZXNzBQhhc3NldF9pZAQGYnNBc3RSCAUNJHQwMTQ2MDAxNDgzOAJfMQQGYnNBc3RXCAUNJHQwMTQ2MDAxNDgzOAJfMgQGcXRBc3RSCAUNJHQwMTQ2MDAxNDgzOAJfMwQGcXRBc3RXCAUNJHQwMTQ2MDAxNDgzOAJfNAQRdG90YWxQb3NpdGlvblNpemUIBQ0kdDAxNDYwMDE0ODM4Al81BA5tYXhQcmljZUltcGFjdAgFDSR0MDE0NjAwMTQ4MzgCXzYEDm1heFByaWNlU3ByZWFkCAUNJHQwMTQ2MDAxNDgzOAJfNwQLb3JhY2xlUHJpY2UIBQ0kdDAxNDYwMDE0ODM4Al84BA1leGNlc3NCYWxhbmNlCAUNJHQwMTQ2MDAxNDgzOAJfOQQLZnJlZUJhbGFuY2UIBQ0kdDAxNDYwMDE0ODM4A18xMAQSbWF4U3BvdFV0aWxpemF0aW9uCAUNJHQwMTQ2MDAxNDgzOANfMTEEC3RvdGFsU3VwcGx5CAUNJHQwMTQ2MDAxNDgzOANfMTIEBHJhdGUIBQ0kdDAxNDYwMDE0ODM4A18xMwQJY3VySGVpZ2h0CAUNJHQwMTQ2MDAxNDgzOANfMTQECmxhc3RIZWlnaHQIBQ0kdDAxNDYwMDE0ODM4A18xNQQObWF4T3JhY2xlRGVsYXkIBQ0kdDAxNDYwMDE0ODM4A18xNgQOYXNzZXRfZGVjaW1hbHMDCQAAAgUIYXNzZXRfaWQCBVdBVkVTAAgICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQhhc3NldF9pZAkArAICAg1JdmFsaWQgYXNzZXQgBQhhc3NldF9pZAhkZWNpbWFscwQHcmVzSXRlbQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUHYWRkcmVzcwIBLAUIYXNzZXRfaWQCASwJAKQDAQUOYXNzZXRfZGVjaW1hbHMCASwJAKQDAQUGYnNBc3RSAgEsCQCkAwEFBmJzQXN0VwIBLAkApAMBBQZxdEFzdFICASwJAKQDAQUGcXRBc3RXAgEsCQCkAwEFEXRvdGFsUG9zaXRpb25TaXplAgEsCQCkAwEFDm1heFByaWNlSW1wYWN0AgEsCQCkAwEFDm1heFByaWNlU3ByZWFkAgEsCQCkAwEFC29yYWNsZVByaWNlAgEsCQCkAwEFDWV4Y2Vzc0JhbGFuY2UCASwJAKQDAQULZnJlZUJhbGFuY2UCASwJAKQDAQUSbWF4U3BvdFV0aWxpemF0aW9uAgEsCQCkAwEFC3RvdGFsU3VwcGx5AgEsCQCkAwEFBHJhdGUCASwJAKQDAQUJY3VySGVpZ2h0AgEsCQCkAwEFCmxhc3RIZWlnaHQCASwJAKQDAQUObWF4T3JhY2xlRGVsYXkJAMwIAgUHcmVzSXRlbQUGcmVzdWx0AQlwcm9jZXNzUEwCBnJlc3VsdAVsYWJlbAQDYXJyCQC1CQIFBWxhYmVsAgEtBA0kdDAxNTcyODE1Nzc1CQCUCgIJAJEDAgUDYXJyAAAJAJEDAgUDYXJyAAEEDHBvb2xfYWRkcmVzcwgFDSR0MDE1NzI4MTU3NzUCXzEECGFzc2V0X2lkCAUNJHQwMTU3MjgxNTc3NQJfMgQNJHQwMTU3ODExNTkzOAkBCWdldFBMRGF0YQIFDHBvb2xfYWRkcmVzcwUIYXNzZXRfaWQECWFzc2V0X2lkZAgFDSR0MDE1NzgxMTU5MzgCXzEECXBsVG9rZW5JZAgFDSR0MDE1NzgxMTU5MzgCXzIEBXNSYXRlCAUNJHQwMTU3ODExNTkzOAJfMwQFYlJhdGUIBQ0kdDAxNTc4MTE1OTM4Al80BA10b3RhbFN1cHBsaWVkCAUNJHQwMTU3ODExNTkzOAJfNQQNdG90YWxCb3Jyb3dlZAgFDSR0MDE1NzgxMTU5MzgCXzYECW1heFN1cHBseQgFDSR0MDE1NzgxMTU5MzgCXzcECmxhc3RIZWlnaHQIBQ0kdDAxNTc4MTE1OTM4Al84BAljdXJIZWlnaHQIBQ0kdDAxNTc4MTE1OTM4Al85BAVwcmljZQgFDSR0MDE1NzgxMTU5MzgDXzEwBAhkZWNpbWFscwgFDSR0MDE1NzgxMTU5MzgDXzExBAdyZXNJdGVtCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBWxhYmVsAgEsBQlhc3NldF9pZGQCASwFCXBsVG9rZW5JZAIBLAkApAMBBQVzUmF0ZQIBLAkApAMBBQViUmF0ZQIBLAkApAMBBQ10b3RhbFN1cHBsaWVkAgEsCQCkAwEFDXRvdGFsQm9ycm93ZWQCASwFCW1heFN1cHBseQIBLAkApAMBBQpsYXN0SGVpZ2h0AgEsCQCkAwEFCWN1ckhlaWdodAIBLAkApAMBBQVwcmljZQIBLAkApAMBBQhkZWNpbWFscwkAzAgCBQdyZXNJdGVtBQZyZXN1bHQBBWdldFdYAQZwYXJhbXMEBXBvb2xzCQC9CQIFBnBhcmFtcwIBLAQGcmVzQXJyCgACJGwFBXBvb2xzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlwcm9jZXNzV1gCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFUxpc3Qgc2l6ZSBleGNlZWRzIDEyMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkAGUAZgBnAGgAaQBqAGsAbABtAG4AbwBwAHEAcgBzAHQAdQB2AHcAeAQGcmVzdWx0CQC7CQIFBnJlc0FycgIBfAUGcmVzdWx0AQVnZXRTVwEGcGFyYW1zBAVwb29scwkAvAkCBQZwYXJhbXMCASwEBnJlc0FycgoAAiRsBQVwb29scwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJcHJvY2Vzc1NXAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhVMaXN0IHNpemUgZXhjZWVkcyAxMDAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZAQGcmVzdWx0CQC7CQIFBnJlc0FycgIBfAUGcmVzdWx0AQVnZXRQWgEGcGFyYW1zBAVwb29scwkAvAkCBQZwYXJhbXMCASwEBnJlc0FycgoAAiRsBQVwb29scwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJcHJvY2Vzc1BaAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhVMaXN0IHNpemUgZXhjZWVkcyAxMDAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZAQGcmVzdWx0CQC7CQIFBnJlc0FycgIBfAUGcmVzdWx0AQZnZXRUU04BBnBhcmFtcwQNdmF1bHRzX2xhYmVscwkAtQkCBQZwYXJhbXMCASwEBnJlc0FycgoAAiRsBQ12YXVsdHNfbGFiZWxzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpwcm9jZXNzVFNOAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBAZyZXN1bHQJALoJAgUGcmVzQXJyAgF8BANmZWUJAQ10cnlHZXRJbnRlZ2VyAgUFa19mZWUFEHRzbl9zd2FwcGVyX2FkZHIEBnJlYmF0ZQkBDXRyeUdldEludGVnZXICBQhrX3JlYmF0ZQUQdHNuX3N3YXBwZXJfYWRkcgQTZmVlVG9TdGFrZXJzUGVyY2VudAkBDXRyeUdldEludGVnZXICBRVrX2ZlZVRvU3Rha2Vyc1BlcmNlbnQFEHRzbl9zd2FwcGVyX2FkZHIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKQDAQUDZmVlAgEsCQCkAwEFBnJlYmF0ZQIBLAkApAMBBRNmZWVUb1N0YWtlcnNQZXJjZW50AgEvBQZyZXN1bHQBBWdldFBMAQZwYXJhbXMEBXBvb2xzCQC1CQIFBnBhcmFtcwIBLAQGcmVzQXJyCgACJGwFBXBvb2xzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlwcm9jZXNzUEwCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoEBnJlc3VsdAkAugkCBQZyZXNBcnICAXwFBnJlc3VsdAEObG9hZFBlcGVBc3NldHMBC3BlcGVfbWFya2V0BAZhc3NldHMJAQx0cnlHZXRTdHJpbmcCBQhrX2Fzc2V0cwULcGVwZV9tYXJrZXQJALwJAgUGYXNzZXRzAgJfXwEVbG9hZFBlcGVBc3NldEJhbGFuY2VzAQtwZXBlX21hcmtldAoBCGZvbGRGdW5jAgNhY2MEZWxlbQQHYmFsYW5jZQkBDXBhcnNlSW50VmFsdWUBBQRlbGVtCQCUCgIJAM0IAggFA2FjYwJfMQUEZWxlbQkAZAIIBQNhY2MCXzIFB2JhbGFuY2UEDWFzc2V0QmFsYW5jZXMJAQx0cnlHZXRTdHJpbmcCBRBrX2Fzc2V0X2JhbGFuY2VzBQtwZXBlX21hcmtldAoAAiRsCQC9CQIFDWFzc2V0QmFsYW5jZXMCAl9fCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZm9sZEZ1bmMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoBFGxvYWRQZXBlQXNzZXRXZWlnaHRzAQtwZXBlX21hcmtldAoBCGZvbGRGdW5jAgNhY2MEZWxlbQQGd2VpZ2h0CQENcGFyc2VJbnRWYWx1ZQEFBGVsZW0JAJQKAgkAzQgCCAUDYWNjAl8xBQRlbGVtCQBkAggFA2FjYwJfMgUGd2VpZ2h0BAxhc3NldFdlaWdodHMJAQx0cnlHZXRTdHJpbmcCBQ9rX2Fzc2V0X3dlaWdodHMFC3BlcGVfbWFya2V0CgACJGwJALwJAgUMYXNzZXRXZWlnaHRzAgJfXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGZvbGRGdW5jAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKARBsb2FkUGVwZURlY2ltYWxzAQZhc3NldHMKAQdnZXREZWNzAgNhY2MEaXRlbQQIZGVjaW1hbHMJARBnZXRBc3NldERlY2ltYWxzAQUEaXRlbQkAzQgCBQNhY2MJAKQDAQUIZGVjaW1hbHMKAAIkbAUGYXNzZXRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdnZXREZWNzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsBC3Byb2Nlc3NQZXBlAgZyZXN1bHQPcGVwZV9tYXJrZXRfc3RyBAtwZXBlX21hcmtldAkBB0FkZHJlc3MBCQDZBAEFD3BlcGVfbWFya2V0X3N0cgQHc3RvcmFnZQkBDHRyeUdldFN0cmluZwIFCWtfc3RvcmFnZQULcGVwZV9tYXJrZXQEBHNhcnIJALwJAgUHc3RvcmFnZQICX18EDSR0MDIwMzMwMjA1MzMJAJoKCAkAkQMCBQRzYXJyAAAJAAACCQCRAwIFBHNhcnIAAQIBMQkAkQMCBQRzYXJyAAIJAJEDAgUEc2FycgADCQCRAwIFBHNhcnIABAkAkQMCBQRzYXJyAAUJAJEDAgUEc2FycgAGCQCRAwIFBHNhcnIABwQJbHBBc3NldElkCAUNJHQwMjAzMzAyMDUzMwJfMQQIdW5sb2NrZWQIBQ0kdDAyMDMzMDIwNTMzAl8yBA1scFRvdGFsU3VwcGx5CAUNJHQwMjAzMzAyMDUzMwJfMwQJbHBGZWVSYXRlCAUNJHQwMjAzMzAyMDUzMwJfNAQPcHJvdG9jb2xGZWVSYXRlCAUNJHQwMjAzMzAyMDUzMwJfNQQRbWF4QWxsb2NBbXBsaWZpZXIIBQ0kdDAyMDMzMDIwNTMzAl82BA93ZWlnaHRBbXBsaWZpZXIIBQ0kdDAyMDMzMDIwNTMzAl83BA9kaXNiYWxhbmNlQ29lZmYIBQ0kdDAyMDMzMDIwNTMzAl84BAlwcmVjaXNpb24JAQ10cnlHZXRJbnRlZ2VyAgULa19wcmVjaXNpb24FC3BlcGVfbWFya2V0BA1zaWdtYUZlZVBlckxwCQEMdHJ5R2V0U3RyaW5nAgUSa19zaWdtYV9mZWVfcGVyX2xwBQtwZXBlX21hcmtldAQGcGF1c2VkCQEKdHJ5R2V0Qm9vbAIFCGtfcGF1c2VkBQtwZXBlX21hcmtldAQHdG90YWxMcAkBDXRyeUdldEludGVnZXICBQprX3RvdGFsX2xwBQtwZXBlX21hcmtldAQOcmV3YXJkQmFsYW5jZXMJAQx0cnlHZXRTdHJpbmcCBRFrX3Jld2FyZF9iYWxhbmNlcwULcGVwZV9tYXJrZXQECmxwRGVjaW1hbHMJARBnZXRBc3NldERlY2ltYWxzAQUJbHBBc3NldElkBAZhc3NldHMJAQ5sb2FkUGVwZUFzc2V0cwEFC3BlcGVfbWFya2V0BAxkZWNpbWFsc19hcnIJARBsb2FkUGVwZURlY2ltYWxzAQUGYXNzZXRzBA0kdDAyMDk5NzIxMDY0CQEUbG9hZFBlcGVBc3NldFdlaWdodHMBBQtwZXBlX21hcmtldAQMYXNzZXRXZWlnaHRzCAUNJHQwMjA5OTcyMTA2NAJfMQQLc2lnbWFXZWlnaHQIBQ0kdDAyMDk5NzIxMDY0Al8yBA0kdDAyMTA3MDIxMTUzCQEVbG9hZFBlcGVBc3NldEJhbGFuY2VzAQULcGVwZV9tYXJrZXQEEXByZXZBc3NldEJhbGFuY2VzCAUNJHQwMjEwNzAyMTE1MwJfMQQUcHJldkFzc2V0VG90YWxTdXBwbHkIBQ0kdDAyMTA3MDIxMTUzAl8yBAhtYWluX3N0cgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUJbHBBc3NldElkAgEsCQClAwEFCHVubG9ja2VkAgEsBQ1scFRvdGFsU3VwcGx5AgEsBQlscEZlZVJhdGUCASwFD3Byb3RvY29sRmVlUmF0ZQIBLAURbWF4QWxsb2NBbXBsaWZpZXICASwFD3dlaWdodEFtcGxpZmllcgIBLAUPZGlzYmFsYW5jZUNvZWZmAgEsCQCkAwEFC3NpZ21hV2VpZ2h0AgEsCQCkAwEFFHByZXZBc3NldFRvdGFsU3VwcGx5AgEsCQCkAwEFCXByZWNpc2lvbgIBLAUNc2lnbWFGZWVQZXJMcAIBLAkApAMBBQd0b3RhbExwAgEsCQClAwEFBnBhdXNlZAIBLAkApAMBBQpscERlY2ltYWxzAgEsBQ9wZXBlX21hcmtldF9zdHIECmFzc2V0c19pZHMJALsJAgUGYXNzZXRzAgEsBA5hc3NldHNfd2VpZ2h0cwkAuwkCBQxhc3NldFdlaWdodHMCASwED2Fzc2V0c19iYWxhbmNlcwkAuwkCBRFwcmV2QXNzZXRCYWxhbmNlcwIBLAQPYXNzZXRzX2RlY2ltYWxzCQC7CQIFDGRlY2ltYWxzX2FycgIBLAQDcmVzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFCG1haW5fc3RyAgF8BQphc3NldHNfaWRzAgF8BQ5hc3NldHNfd2VpZ2h0cwIBfAUPYXNzZXRzX2JhbGFuY2VzAgF8BQ9hc3NldHNfZGVjaW1hbHMCAXwFDnJld2FyZEJhbGFuY2VzCQDNCAIFBnJlc3VsdAUDcmVzAQdnZXRQZXBlAQZwYXJhbXMECWFkZHJlc3NlcwkAtQkCBQZwYXJhbXMCASwEBnJlc0FycgoAAiRsBQlhZGRyZXNzZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBC3Byb2Nlc3NQZXBlAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBAZyZXN1bHQJALsJAgUGcmVzQXJyAgE7BQZyZXN1bHQBCmdldENvbWJpbmUBBnBhcmFtcwQJcGFyYW1zQXJyCQC1CQIFBnBhcmFtcwICKioEDSR0MDIyNjQyMjI3MjQJAJUKAwkAkQMCBQlwYXJhbXNBcnIAAAkAkQMCBQlwYXJhbXNBcnIAAQkAkQMCBQlwYXJhbXNBcnIAAgQJdHNuUGFyYW1zCAUNJHQwMjI2NDIyMjcyNAJfMQQIcGxQYXJhbXMIBQ0kdDAyMjY0MjIyNzI0Al8yBApwZXBlUGFyYW1zCAUNJHQwMjI2NDIyMjcyNAJfMwQHdHNuRGF0YQkBBmdldFRTTgEFCXRzblBhcmFtcwQGcGxEYXRhCQEFZ2V0UEwBBQhwbFBhcmFtcwQIcGVwZURhdGEJAQdnZXRQZXBlAQUKcGVwZVBhcmFtcwkAuwkCCQDMCAIFB3RzbkRhdGEJAMwIAgUGcGxEYXRhCQDMCAIFCHBlcGVEYXRhBQNuaWwCAioqARBnZXRFYXN0QXNzZXREYXRhAQdhc3NldElkBAZwYXJhbXMJAQx0cnlHZXRTdHJpbmcCCQCsAgICDSVzJXNfX2Fzc2V0X18FB2Fzc2V0SWQFCmVhc3RfcHJveHkECXBhcmFtc0FycgkAtQkCBQZwYXJhbXMCAl9fBA0kdDAyMzA1NTIzMTE1CQCUCgIJAJEDAgUJcGFyYW1zQXJyAAEJAJEDAgUJcGFyYW1zQXJyAAIEBWVuU3RyCAUNJHQwMjMwNTUyMzExNQJfMQQQYXNzZXRDb250cmFjdFN0cggFDSR0MDIzMDU1MjMxMTUCXzIEDWFzc2V0Q29udHJhY3QJAQdBZGRyZXNzAQkA2QQBBRBhc3NldENvbnRyYWN0U3RyBAdlbmFibGVkAwkAAAIFBWVuU3RyAgdFTkFCTEVEBgcEDGJhY2tpbmdSYXRpbwkBDXRyeUdldEludGVnZXICAhAlc19fYmFja2luZ1JhdGlvBQ1hc3NldENvbnRyYWN0BBBsaXF1aWRhdGlvblJhdGlvCQENdHJ5R2V0SW50ZWdlcgICFCVzX19saXF1aWRhdGlvblJhdGlvBQ1hc3NldENvbnRyYWN0BBBvcmFjbGVBZGRyZXNzU3RyCQEMdHJ5R2V0U3RyaW5nAgIRJXNfX29yYWNsZUFkZHJlc3MFDWFzc2V0Q29udHJhY3QEDW9yYWNsZUFkZHJlc3MJAQdBZGRyZXNzAQkA2QQBBRBvcmFjbGVBZGRyZXNzU3RyBAZ0aWNrZXIJAQx0cnlHZXRTdHJpbmcCAgolc19fdGlja2VyBQ1hc3NldENvbnRyYWN0BA9lYXN0TWludGVkTGltaXQJAQ10cnlHZXRJbnRlZ2VyAgITJXNfX2Vhc3RNaW50ZWRMaW1pdAUNYXNzZXRDb250cmFjdAQFcHJpY2UJAQ10cnlHZXRJbnRlZ2VyAgkArAICAg0lcyVzX19wcmljZV9fBQZ0aWNrZXIFDW9yYWNsZUFkZHJlc3MJALoJAgkAzAgCCQClAwEFB2VuYWJsZWQJAMwIAgkApAMBBQxiYWNraW5nUmF0aW8JAMwIAgkApAMBBRBsaXF1aWRhdGlvblJhdGlvCQDMCAIJAKQDAQUPZWFzdE1pbnRlZExpbWl0CQDMCAIJAKQDAQUFcHJpY2UFA25pbAIBLAESZ2V0RWFzdExpcXVpZGF0aW9uAQZwYXJhbXMECXBhcmFtc0FycgkAtQkCBQZwYXJhbXMCASwKAQFmAgVhY2N1bQRuZXh0CQDNCAIFBWFjY3VtCQCsAgIJAKwCAgUEbmV4dAIBLAkBEGdldEVhc3RBc3NldERhdGEBBQRuZXh0BANyZXMKAAIkbAUJcGFyYW1zQXJyCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQFmAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBAphc3NldHNEYXRhCQC7CQIFA3JlcwIBOwQVY3VtdWxhdGl2ZUZlZUZyYWN0aW9uCQENdHJ5R2V0SW50ZWdlcgICGSVzX19jdW11bGF0aXZlRmVlRnJhY3Rpb24FCmVhc3RfcHJveHkEBmN1cnJUcwkAaQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wAOgHBBNmcmFjdGlvbkxhc3RVcGRhdGVkCQEUdHJ5R2V0SW50ZWdlcldpdGhEZWYDAhclc19fZnJhY3Rpb25MYXN0VXBkYXRlZAUKZWFzdF9wcm94eQUGY3VyclRzBA5jb29yZGluYXRvclN0cgkBDHRyeUdldFN0cmluZwICFiVzX19jb29yZGluYXRvckFkZHJlc3MFCmVhc3RfcHJveHkEC2Nvb3JkaW5hdG9yCQEHQWRkcmVzcwEJANkEAQUOY29vcmRpbmF0b3JTdHIEB3N0YWJGZWUJARR0cnlHZXRJbnRlZ2VyV2l0aERlZgMCECVzX19zdGFiaWxpdHlGZWUFC2Nvb3JkaW5hdG9yAIDIr6AlBAhsaXFCb251cwkBDXRyeUdldEludGVnZXICAhQlc19fbGlxdWlkYXRpb25Cb251cwULY29vcmRpbmF0b3IECmNvbW1vbkRhdGEJALkJAgkAzAgCCQCkAwEFFWN1bXVsYXRpdmVGZWVGcmFjdGlvbgkAzAgCCQCkAwEFBmN1cnJUcwkAzAgCCQCkAwEFE2ZyYWN0aW9uTGFzdFVwZGF0ZWQJAMwIAgkApAMBBQdzdGFiRmVlCQDMCAIJAKQDAQUIbGlxQm9udXMFA25pbAIBLAkArAICCQCsAgIFCmNvbW1vbkRhdGECAXwFCmFzc2V0c0RhdGEBAWkBBHRlc3QBAXMEAXIJAQp0cnlHZXRCb29sAgIuZGVwcmVjYXRlZF8zUDI4NlRrVEhBUnRySnp4VWhQb0hYYXJkdnV0QzM3YTlyTQkBB0FkZHJlc3MBCQDZBAEFDXN3b3BmaV9vcmFjbGUJAAIBCQClAwEFAXIAY2/tkQ==", "height": 4069497, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: E5en9Jiu9sPcE3xk4TwncWRVMeV3pxUMKJ9Riw6TbMSr Next: none Diff:
OldNewDifferences
741741 let pepe_market = Address(fromBase58String(pepe_market_str))
742742 let storage = tryGetString(k_storage, pepe_market)
743743 let sarr = split_4C(storage, "__")
744- let $t02033020551 = $Tuple9(sarr[0], (sarr[1] == "1"), sarr[2], sarr[3], sarr[4], sarr[5], sarr[6], sarr[7], sarr[8])
745- let lpAssetId = $t02033020551._1
746- let unlocked = $t02033020551._2
747- let lpTotalSupply = $t02033020551._3
748- let lpFeeRate = $t02033020551._4
749- let protocolFeeRate = $t02033020551._5
750- let maxAllocAmplifier = $t02033020551._6
751- let weightAmplifier = $t02033020551._7
752- let slippageRate = $t02033020551._8
753- let feeMaxRate = $t02033020551._9
744+ let $t02033020533 = $Tuple8(sarr[0], (sarr[1] == "1"), sarr[2], sarr[3], sarr[4], sarr[5], sarr[6], sarr[7])
745+ let lpAssetId = $t02033020533._1
746+ let unlocked = $t02033020533._2
747+ let lpTotalSupply = $t02033020533._3
748+ let lpFeeRate = $t02033020533._4
749+ let protocolFeeRate = $t02033020533._5
750+ let maxAllocAmplifier = $t02033020533._6
751+ let weightAmplifier = $t02033020533._7
752+ let disbalanceCoeff = $t02033020533._8
754753 let precision = tryGetInteger(k_precision, pepe_market)
755754 let sigmaFeePerLp = tryGetString(k_sigma_fee_per_lp, pepe_market)
756755 let paused = tryGetBool(k_paused, pepe_market)
759758 let lpDecimals = getAssetDecimals(lpAssetId)
760759 let assets = loadPepeAssets(pepe_market)
761760 let decimals_arr = loadPepeDecimals(assets)
762- let $t02101521082 = loadPepeAssetWeights(pepe_market)
763- let assetWeights = $t02101521082._1
764- let sigmaWeight = $t02101521082._2
765- let $t02108821171 = loadPepeAssetBalances(pepe_market)
766- let prevAssetBalances = $t02108821171._1
767- let prevAssetTotalSupply = $t02108821171._2
768- let main_str = ((((((((((((((((((((((((((((((((lpAssetId + ",") + toString(unlocked)) + ",") + lpTotalSupply) + ",") + lpFeeRate) + ",") + protocolFeeRate) + ",") + maxAllocAmplifier) + ",") + weightAmplifier) + ",") + slippageRate) + ",") + feeMaxRate) + ",") + toString(sigmaWeight)) + ",") + toString(prevAssetTotalSupply)) + ",") + toString(precision)) + ",") + sigmaFeePerLp) + ",") + toString(totalLp)) + ",") + toString(paused)) + ",") + toString(lpDecimals)) + ",") + pepe_market_str)
761+ let $t02099721064 = loadPepeAssetWeights(pepe_market)
762+ let assetWeights = $t02099721064._1
763+ let sigmaWeight = $t02099721064._2
764+ let $t02107021153 = loadPepeAssetBalances(pepe_market)
765+ let prevAssetBalances = $t02107021153._1
766+ let prevAssetTotalSupply = $t02107021153._2
767+ let main_str = ((((((((((((((((((((((((((((((lpAssetId + ",") + toString(unlocked)) + ",") + lpTotalSupply) + ",") + lpFeeRate) + ",") + protocolFeeRate) + ",") + maxAllocAmplifier) + ",") + weightAmplifier) + ",") + disbalanceCoeff) + ",") + toString(sigmaWeight)) + ",") + toString(prevAssetTotalSupply)) + ",") + toString(precision)) + ",") + sigmaFeePerLp) + ",") + toString(totalLp)) + ",") + toString(paused)) + ",") + toString(lpDecimals)) + ",") + pepe_market_str)
769768 let assets_ids = makeString_11C(assets, ",")
770769 let assets_weights = makeString_11C(assetWeights, ",")
771770 let assets_balances = makeString_11C(prevAssetBalances, ",")
798797
799798 func getCombine (params) = {
800799 let paramsArr = split(params, "**")
801- let $t02268422766 = $Tuple3(paramsArr[0], paramsArr[1], paramsArr[2])
802- let tsnParams = $t02268422766._1
803- let plParams = $t02268422766._2
804- let pepeParams = $t02268422766._3
800+ let $t02264222724 = $Tuple3(paramsArr[0], paramsArr[1], paramsArr[2])
801+ let tsnParams = $t02264222724._1
802+ let plParams = $t02264222724._2
803+ let pepeParams = $t02264222724._3
805804 let tsnData = getTSN(tsnParams)
806805 let plData = getPL(plParams)
807806 let pepeData = getPepe(pepeParams)
812811 func getEastAssetData (assetId) = {
813812 let params = tryGetString(("%s%s__asset__" + assetId), east_proxy)
814813 let paramsArr = split(params, "__")
815- let $t02309723157 = $Tuple2(paramsArr[1], paramsArr[2])
816- let enStr = $t02309723157._1
817- let assetContractStr = $t02309723157._2
814+ let $t02305523115 = $Tuple2(paramsArr[1], paramsArr[2])
815+ let enStr = $t02305523115._1
816+ let assetContractStr = $t02305523115._2
818817 let assetContract = Address(fromBase58String(assetContractStr))
819818 let enabled = if ((enStr == "ENABLED"))
820819 then true
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let rex = "3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU"
55
66 let swopfi_oracle = "3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom"
77
88 let pl_proxy = "3PJESVDTHRv8i83XbmHrRGQhDc5rgR3azQs"
99
1010 let orcl = "3P8d1E1BLKoD52y3bQJ1bDTd2TD1gpaLn9t"
1111
1212 let wx_factory_str = "3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv"
1313
1414 let wx_swap_str = "3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93"
1515
1616 let east_proxy_str = "3PMtGnf3LXiEG6isDQLq1xMDKUqjQGqNHLb"
1717
1818 let east_coordinator = "3PJ5CVRqW15nnkKNHJMzT3pPTtDJf71rGxK"
1919
2020 let wx_factory = Address(fromBase58String(wx_factory_str))
2121
2222 let wx_swap = Address(fromBase58String(wx_swap_str))
2323
2424 let east_proxy = Address(fromBase58String(east_proxy_str))
2525
2626 let K_am_as_id = "%s__amountAsset"
2727
2828 let K_pr_as_id = "%s__priceAsset"
2929
3030 let K_amp = "%s__amp"
3131
3232 let K_share = "%s%s__shareAssetBalance__YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7"
3333
3434 let K_staked = "%s%s__stakedBalance__WAVES"
3535
3636 let K_a_as_id = "A_asset_id"
3737
3838 let K_b_as_id = "B_asset_id"
3939
4040 let K_a_as_bal = "A_asset_balance"
4141
4242 let K_b_as_bal = "B_asset_balance"
4343
4444 let K_fee = "commission"
4545
4646 let K_asset_ids = "static_tokenIds"
4747
4848 let K_fee_puz = "static_fee"
4949
5050 let K_feeToken = "static_feeToken"
5151
5252 let K_global_poolToken_id = "static_poolToken_idStr"
5353
5454 let K_global_poolToken_id_binary = "global_poolToken_id"
5555
5656 let K_global_poolToken_amount = "global_poolToken_amount"
5757
5858 let K_static_KMult = "static_KMult"
5959
6060 let K_tmp_reblanceAssetIds = "tmp_rebalanceAssetIds"
6161
6262 let K_rebalance_inProgress = "rebalance_inProgress"
6363
6464 let K_rebalance_stepsDone = "rebalance_stepsDone"
6565
6666 let K_rebalance_stepsAmount = "rebalance_stepsAmount"
6767
6868 let K_rebalance_assetDeltas = "rebalance_assetDeltas"
6969
7070 let K_rebalance_attachedPayment = "rebalance_attachedPayment_"
7171
7272 let tsn_swapper = "3PKz5jnJLohF2GjShQ7bG5H4BebdoA98zZ2"
7373
7474 let tsn_swapper_addr = Address(fromBase58String(tsn_swapper))
7575
7676 let k_fee = "k_fee"
7777
7878 let k_rebate = "k_rebate"
7979
8080 let k_feeToStakersPercent = "k_feeToStakersPercent"
8181
8282 let k_excessBalance = "k_excessBalance"
8383
8484 let k_freeBalance = "k_freeBalance"
8585
8686 let k_maxSpotUtilization = "k_maxSpotUtilization"
8787
8888 let k_totalSupply = "k_totalSupply"
8989
9090 let k_rate = "k_rate"
9191
9292 let k_bsAstR = "k_bsAstR"
9393
9494 let k_bsAstW = "k_bsAstW"
9595
9696 let k_qtAstR = "k_qtAstR"
9797
9898 let k_qtAstW = "k_qtAstW"
9999
100100 let k_maxPriceImpact = "k_maxPriceImpact"
101101
102102 let k_maxPriceSpread = "k_maxPriceSpread"
103103
104104 let k_totalPositionSize = "k_totalPositionSize"
105105
106106 let k_baseOracle = "k_baseOracle"
107107
108108 let k_maxOracleDelay = "k_maxOracleDelay"
109109
110110 let k_storage = "STORAGE"
111111
112112 let k_assets = "ASSETS"
113113
114114 let k_status = "STATUS"
115115
116116 let k_paused = "PAUSED"
117117
118118 let k_asset_balances = "ASSET_BALANCES"
119119
120120 let k_asset_weights = "ASSET_WEIGHTS"
121121
122122 let k_lp_fee = "LP_FEE"
123123
124124 let k_protocol_fee = "PROTOCOL_FEE"
125125
126126 let k_precision = "PRECISION"
127127
128128 let k_sigma_fee_per_lp = "SIGMA_FEE_PER_LP"
129129
130130 let k_user_sigma_fee_per_lp = "USER_SIGMA_FEE_PER_LP"
131131
132132 let k_user_lp = "USER_LP"
133133
134134 let k_total_lp = "TOTAL_LP"
135135
136136 let k_user_profits = "USER_PROFITS"
137137
138138 let k_reward_balances = "REWARD_BALANCES"
139139
140140 func get_domain (poolAddress) = match poolAddress {
141141 case _ =>
142142 if (("3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH" == $match0))
143143 then "1"
144144 else "0"
145145 }
146146
147147
148148 func k_plToken (asset_id,domain) = ((("setup_pl_" + asset_id) + "_") + domain)
149149
150150
151151 func k_total_supplied (asset_id) = ("total_supplied_" + asset_id)
152152
153153
154154 func k_sRate (asset_id) = (asset_id + "_sRate")
155155
156156
157157 func k_total_borrowed (asset_id) = ("total_borrowed_" + asset_id)
158158
159159
160160 func k_bRate (asset_id) = (asset_id + "_bRate")
161161
162162
163163 func k_maxSupply (asset_id) = ("setup_maxSupply_" + asset_id)
164164
165165
166166 let k_lastRateHeight = "lastRateHeight"
167167
168168 func getPuzBalanceKey (assetId) = (("global_" + assetId) + "_balance")
169169
170170
171171 func getPuzWeightKey (assetId) = (("static_" + assetId) + "_weight")
172172
173173
174174 func getBPAK (address) = (address + "_staticAssetsIds")
175175
176176
177177 func tryGetString (key,address) = match getString(address, key) {
178178 case b: String =>
179179 b
180180 case _ =>
181181 ""
182182 }
183183
184184
185185 func tryGetBool (key,address) = match getBoolean(address, key) {
186186 case b: Boolean =>
187187 b
188188 case _ =>
189189 false
190190 }
191191
192192
193193 func tryGetInteger (key,address) = match getInteger(address, key) {
194194 case b: Int =>
195195 b
196196 case _ =>
197197 0
198198 }
199199
200200
201201 func tryGetIntegerWithDef (key,address,def) = match getInteger(address, key) {
202202 case b: Int =>
203203 b
204204 case _ =>
205205 def
206206 }
207207
208208
209209 func getAssetString (assetId) = match assetId {
210210 case b: ByteVector =>
211211 toBase58String(b)
212212 case _ =>
213213 "WAVES"
214214 }
215215
216216
217217 func getWxDefaultFees () = {
218218 let poolFee = tryGetIntegerWithDef("%s__poolFee", wx_swap, 200000)
219219 let protocolFee = tryGetIntegerWithDef("%s__protocolFee", wx_swap, 200000)
220220 $Tuple2(toString(poolFee), toString(protocolFee))
221221 }
222222
223223
224224 func getWxPoolFees (address) = {
225225 let feesKey = ("%s%s__swapFee__" + address)
226226 let fees = tryGetString(feesKey, wx_factory)
227227 if ((fees == ""))
228228 then getWxDefaultFees()
229229 else {
230230 let splittedFees = split(fees, "__")
231231 $Tuple2(splittedFees[1], splittedFees[2])
232232 }
233233 }
234234
235235
236236 func getAssetBalance (address,assetId) = {
237237 let a = assetBalance(address, assetId)
238238 a
239239 }
240240
241241
242242 func getWavesBalance (address) = {
243243 let w = wavesBalance(address).available
244244 w
245245 }
246246
247247
248248 func getBalance (result,assetId) = {
249249 let address = take(result, 35)
250250 let addr = Address(fromBase58String(address))
251251 let balance = if ((assetId == "WAVES"))
252252 then getWavesBalance(addr)
253253 else {
254254 let aId = fromBase58String(assetId)
255255 getAssetBalance(addr, aId)
256256 }
257257 let len = size(result)
258258 (((((address + drop(result, 35)) + assetId) + ":") + toString(balance)) + ",")
259259 }
260260
261261
262262 func getAddressBalance (addr,assetId) = {
263263 let balance = if ((assetId == "WAVES"))
264264 then getWavesBalance(addr)
265265 else {
266266 let aId = fromBase58String(assetId)
267267 getAssetBalance(addr, aId)
268268 }
269269 balance
270270 }
271271
272272
273273 func getAssetDecimals (assetIdStr) = {
274274 let decimals = if ((assetIdStr == "WAVES"))
275275 then 8
276276 else value(assetInfo(fromBase58String(assetIdStr))).decimals
277277 decimals
278278 }
279279
280280
281281 func getWxData (address) = {
282282 let addr = Address(fromBase58String(address))
283283 let amountId = tryGetString(K_am_as_id, addr)
284284 let priceId = tryGetString(K_pr_as_id, addr)
285285 let amp = tryGetString(K_amp, addr)
286286 let share = tryGetInteger(K_share, addr)
287287 let stake = tryGetInteger(K_staked, addr)
288288 let $t069256976 = getWxPoolFees(address)
289289 let poolFee = $t069256976._1
290290 let protocolFee = $t069256976._2
291291 $Tuple2(((amountId + ",") + priceId), ((((((((amp + ",") + toString(share)) + ",") + toString(stake)) + ",") + poolFee) + ",") + protocolFee))
292292 }
293293
294294
295295 func getSwData (address) = {
296296 let addr = Address(fromBase58String(address))
297297 let A_id = tryGetString(K_a_as_id, addr)
298298 let B_id = tryGetString(K_b_as_id, addr)
299299 let A_balance = tryGetInteger(K_a_as_bal, addr)
300300 let B_balance = tryGetInteger(K_b_as_bal, addr)
301301 let fee = tryGetIntegerWithDef(K_fee, addr, 6000)
302302 let deprecated = tryGetBool(("deprecated_" + address), Address(fromBase58String(swopfi_oracle)))
303303 ((((((((((A_id + ":") + toString(A_balance)) + ",") + B_id) + ":") + toString(B_balance)) + ",") + toString(fee)) + ",") + toString(deprecated))
304304 }
305305
306306
307307 func getPzRebalanceData (address) = {
308308 let addr = Address(fromBase58String(address))
309309 let tmpAssetsStr = valueOrElse(getString(addr, K_tmp_reblanceAssetIds), "")
310310 let inProgress = valueOrElse(getBoolean(addr, K_rebalance_inProgress), false)
311311 let stepsDone = valueOrElse(getInteger(addr, K_rebalance_stepsDone), 0)
312312 let stepsAmount = valueOrElse(getInteger(addr, K_rebalance_stepsAmount), 0)
313313 let assetDeltas = valueOrElse(getString(addr, K_rebalance_assetDeltas), "")
314314 let tmpAssets = split(tmpAssetsStr, ",")
315315 func collectPayments (accum,assetId) = {
316316 let key = (K_rebalance_attachedPayment + assetId)
317317 let val = tryGetInteger(key, addr)
318318 if ((val != 0))
319319 then (accum ++ [((key + "*") + toString(val))])
320320 else accum
321321 }
322322
323323 let rebalancePayments = {
324324 let $l = tmpAssets
325325 let $s = size($l)
326326 let $acc0 = nil
327327 func $f0_1 ($a,$i) = if (($i >= $s))
328328 then $a
329329 else collectPayments($a, $l[$i])
330330
331331 func $f0_2 ($a,$i) = if (($i >= $s))
332332 then $a
333333 else throw("List size exceeds 10")
334334
335335 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
336336 }
337337 let rebalancePaymentsStr = makeString(rebalancePayments, ",")
338338 ((((((((((tmpAssetsStr + ";") + toString(inProgress)) + ";") + toString(stepsDone)) + ";") + toString(stepsAmount)) + ";") + assetDeltas) + ";") + rebalancePaymentsStr)
339339 }
340340
341341
342342 func collectPuzAssetsData (result,assetId) = {
343343 let len = size(result)
344344 let address = result[(len - 1)]
345345 let addr = Address(fromBase58String(address))
346346 let balanceKey = getPuzBalanceKey(assetId)
347347 let weightKey = getPuzWeightKey(assetId)
348348 let balance = tryGetInteger(balanceKey, addr)
349349 let weight = tryGetInteger(weightKey, addr)
350350 let realBalance = getAddressBalance(addr, assetId)
351351 let res = ((((((assetId + ",") + toString(balance)) + ",") + toString(weight)) + ",") + toString(realBalance))
352352 res :: result
353353 }
354354
355355
356356 func getPzData (address) = {
357357 let addr = Address(fromBase58String(address))
358358 let fee1 = tryGetInteger(K_fee_puz, addr)
359359 let feeToken = tryGetString(K_feeToken, addr)
360360 let assetsStr1 = tryGetString(K_asset_ids, addr)
361361 let $t096129765 = if ((assetsStr1 == ""))
362362 then $Tuple2(tryGetString(getBPAK(address), this), 200)
363363 else $Tuple2(assetsStr1, fee1)
364364 let assetsStr = $t096129765._1
365365 let fee = $t096129765._2
366366 let assets = split(assetsStr, ",")
367367 let assetsData = {
368368 let $l = assets
369369 let $s = size($l)
370370 let $acc0 = [address]
371371 func $f0_1 ($a,$i) = if (($i >= $s))
372372 then $a
373373 else collectPuzAssetsData($a, $l[$i])
374374
375375 func $f0_2 ($a,$i) = if (($i >= $s))
376376 then $a
377377 else throw("List size exceeds 10")
378378
379379 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
380380 }
381381 let len = size(assetsData)
382382 let assetsArr = removeByIndex(assetsData, (len - 1))
383383 let assetsDataStr = makeString_2C(assetsArr, ";")
384384 let poolTokenIdStr = tryGetString(K_global_poolToken_id, addr)
385385 let poolTokenId = if ((poolTokenIdStr != ""))
386386 then poolTokenIdStr
387387 else {
388388 let poolTokenIdBinary = valueOrElse(getBinary(addr, K_global_poolToken_id_binary), fromBase58String("bubi"))
389389 getAssetString(poolTokenIdBinary)
390390 }
391391 let poolTokenAmount = tryGetInteger(K_global_poolToken_amount, addr)
392392 let kMult = tryGetIntegerWithDef(K_static_KMult, addr, 1)
393393 $Tuple6(fee, feeToken, poolTokenId, poolTokenAmount, kMult, assetsDataStr)
394394 }
395395
396396
397397 func getTsnData (address,asset_id) = {
398398 let addr = Address(fromBase58String(address))
399399 let bsAstR = tryGetInteger(k_bsAstR, addr)
400400 let bsAstW = tryGetInteger(k_bsAstW, addr)
401401 let qtAstR = tryGetInteger(k_qtAstR, addr)
402402 let qtAstW = tryGetInteger(k_qtAstW, addr)
403403 let maxPriceImpact = tryGetInteger(k_maxPriceImpact, addr)
404404 let maxPriceSpread = tryGetInteger(k_maxPriceSpread, addr)
405405 let totalPositionSize = tryGetInteger(k_totalPositionSize, addr)
406406 let maxOracleDelay = tryGetInteger(k_maxOracleDelay, addr)
407407 let oracleString = tryGetString(k_baseOracle, addr)
408408 let arr = split(oracleString, ",")
409409 let $t01121411280 = $Tuple3(arr[0], arr[1], arr[2])
410410 let oracleAddress = $t01121411280._1
411411 let priceKey = $t01121411280._2
412412 let blockKey = $t01121411280._3
413413 let oracleAddr = Address(fromBase58String(oracleAddress))
414414 let oraclePrice = tryGetInteger(priceKey, oracleAddr)
415415 let curHeight = height
416416 let lastHeight = if ((blockKey != ""))
417417 then tryGetInteger(blockKey, oracleAddr)
418418 else curHeight
419419 let vault = tryGetString(("k_asset_vault_" + asset_id), tsn_swapper_addr)
420420 let vault_addr = Address(fromBase58String(vault))
421421 let excessBalance = tryGetInteger(k_excessBalance, vault_addr)
422422 let freeBalance = tryGetInteger(k_freeBalance, vault_addr)
423423 let maxSpotUtilization = tryGetInteger(k_maxSpotUtilization, vault_addr)
424424 let totalSupply = tryGetInteger(k_totalSupply, vault_addr)
425425 let rate = tryGetInteger(k_rate, vault_addr)
426426 $Tuple16(bsAstR, bsAstW, qtAstR, qtAstW, totalPositionSize, maxPriceImpact, maxPriceSpread, oraclePrice, excessBalance, freeBalance, maxSpotUtilization, totalSupply, rate, curHeight, lastHeight, maxOracleDelay)
427427 }
428428
429429
430430 func getPrice (assetId) = {
431431 let price = tryGetInteger((assetId + "_twap5B"), Address(fromBase58String(orcl)))
432432 price
433433 }
434434
435435
436436 func getPLData (pool_address,asset_id) = {
437437 let domain = get_domain(pool_address)
438438 let poolAdr = Address(fromBase58String(pool_address))
439439 let plTokenId = tryGetString(k_plToken(asset_id, domain), Address(fromBase58String(pl_proxy)))
440440 let sRate = tryGetInteger(k_sRate(asset_id), poolAdr)
441441 let bRate = tryGetInteger(k_bRate(asset_id), poolAdr)
442442 let totalSupplied = tryGetInteger(k_total_supplied(asset_id), poolAdr)
443443 let totalBorrowed = tryGetInteger(k_total_borrowed(asset_id), poolAdr)
444444 let maxSupply = tryGetString(k_maxSupply(asset_id), poolAdr)
445445 let lastHeight = tryGetInteger(k_lastRateHeight, poolAdr)
446446 let curHeight = height
447447 let price = getPrice(asset_id)
448448 let decimals = getAssetDecimals(asset_id)
449449 $Tuple11(asset_id, plTokenId, sRate, bRate, totalSupplied, totalBorrowed, maxSupply, lastHeight, curHeight, price, decimals)
450450 }
451451
452452
453453 func test_loop (result,ele) = ele :: result
454454
455455
456456 func getBalancesStr (assetsStr,address) = {
457457 let assets = split_4C(assetsStr, ",")
458458 let res = {
459459 let $l = assets
460460 let $s = size($l)
461461 let $acc0 = address
462462 func $f0_1 ($a,$i) = if (($i >= $s))
463463 then $a
464464 else getBalance($a, $l[$i])
465465
466466 func $f0_2 ($a,$i) = if (($i >= $s))
467467 then $a
468468 else throw("List size exceeds 2")
469469
470470 $f0_2($f0_1($f0_1($acc0, 0), 1), 2)
471471 }
472472 let balances = drop(res, 35)
473473 let bals = dropRight(balances, 1)
474474 bals
475475 }
476476
477477
478478 func processWX (result,address) = {
479479 let $t01365613699 = getWxData(address)
480480 let assetsStr = $t01365613699._1
481481 let datas = $t01365613699._2
482482 let assetsString = getBalancesStr(assetsStr, address)
483483 let resItem = ((((address + "/") + assetsString) + "/") + datas)
484484 resItem :: result
485485 }
486486
487487
488488 func processSW (result,address) = {
489489 let assetsString = getSwData(address)
490490 let resItem = ((address + "/") + assetsString)
491491 resItem :: result
492492 }
493493
494494
495495 func processPZ (result,address) = {
496496 let $t01409914190 = getPzData(address)
497497 let fee = $t01409914190._1
498498 let feeToken = $t01409914190._2
499499 let poolTokenId = $t01409914190._3
500500 let poolTokenAmount = $t01409914190._4
501501 let kMult = $t01409914190._5
502502 let assetsString = $t01409914190._6
503503 let rebaData = getPzRebalanceData(address)
504504 let resItem = ((((((((((((((address + "/") + toString(fee)) + "/") + feeToken) + "/") + assetsString) + "/") + rebaData) + "/") + poolTokenId) + "/") + toString(poolTokenAmount)) + "/") + toString(kMult))
505505 resItem :: result
506506 }
507507
508508
509509 func processTSN (result,label) = {
510510 let arr = split(label, "_")
511511 let $t01455214594 = $Tuple2(arr[0], arr[1])
512512 let address = $t01455214594._1
513513 let asset_id = $t01455214594._2
514514 let $t01460014838 = getTsnData(address, asset_id)
515515 let bsAstR = $t01460014838._1
516516 let bsAstW = $t01460014838._2
517517 let qtAstR = $t01460014838._3
518518 let qtAstW = $t01460014838._4
519519 let totalPositionSize = $t01460014838._5
520520 let maxPriceImpact = $t01460014838._6
521521 let maxPriceSpread = $t01460014838._7
522522 let oraclePrice = $t01460014838._8
523523 let excessBalance = $t01460014838._9
524524 let freeBalance = $t01460014838._10
525525 let maxSpotUtilization = $t01460014838._11
526526 let totalSupply = $t01460014838._12
527527 let rate = $t01460014838._13
528528 let curHeight = $t01460014838._14
529529 let lastHeight = $t01460014838._15
530530 let maxOracleDelay = $t01460014838._16
531531 let asset_decimals = if ((asset_id == "WAVES"))
532532 then 8
533533 else valueOrErrorMessage(assetInfo(fromBase58String(asset_id)), ("Ivalid asset " + asset_id)).decimals
534534 let resItem = ((((((((((((((((((((((((((((((((((((address + ",") + asset_id) + ",") + toString(asset_decimals)) + ",") + toString(bsAstR)) + ",") + toString(bsAstW)) + ",") + toString(qtAstR)) + ",") + toString(qtAstW)) + ",") + toString(totalPositionSize)) + ",") + toString(maxPriceImpact)) + ",") + toString(maxPriceSpread)) + ",") + toString(oraclePrice)) + ",") + toString(excessBalance)) + ",") + toString(freeBalance)) + ",") + toString(maxSpotUtilization)) + ",") + toString(totalSupply)) + ",") + toString(rate)) + ",") + toString(curHeight)) + ",") + toString(lastHeight)) + ",") + toString(maxOracleDelay))
535535 resItem :: result
536536 }
537537
538538
539539 func processPL (result,label) = {
540540 let arr = split(label, "-")
541541 let $t01572815775 = $Tuple2(arr[0], arr[1])
542542 let pool_address = $t01572815775._1
543543 let asset_id = $t01572815775._2
544544 let $t01578115938 = getPLData(pool_address, asset_id)
545545 let asset_idd = $t01578115938._1
546546 let plTokenId = $t01578115938._2
547547 let sRate = $t01578115938._3
548548 let bRate = $t01578115938._4
549549 let totalSupplied = $t01578115938._5
550550 let totalBorrowed = $t01578115938._6
551551 let maxSupply = $t01578115938._7
552552 let lastHeight = $t01578115938._8
553553 let curHeight = $t01578115938._9
554554 let price = $t01578115938._10
555555 let decimals = $t01578115938._11
556556 let resItem = ((((((((((((((((((((((label + ",") + asset_idd) + ",") + plTokenId) + ",") + toString(sRate)) + ",") + toString(bRate)) + ",") + toString(totalSupplied)) + ",") + toString(totalBorrowed)) + ",") + maxSupply) + ",") + toString(lastHeight)) + ",") + toString(curHeight)) + ",") + toString(price)) + ",") + toString(decimals))
557557 resItem :: result
558558 }
559559
560560
561561 func getWX (params) = {
562562 let pools = split_51C(params, ",")
563563 let resArr = {
564564 let $l = pools
565565 let $s = size($l)
566566 let $acc0 = nil
567567 func $f0_1 ($a,$i) = if (($i >= $s))
568568 then $a
569569 else processWX($a, $l[$i])
570570
571571 func $f0_2 ($a,$i) = if (($i >= $s))
572572 then $a
573573 else throw("List size exceeds 120")
574574
575575 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100), 101), 102), 103), 104), 105), 106), 107), 108), 109), 110), 111), 112), 113), 114), 115), 116), 117), 118), 119), 120)
576576 }
577577 let result = makeString_11C(resArr, "|")
578578 result
579579 }
580580
581581
582582 func getSW (params) = {
583583 let pools = split_4C(params, ",")
584584 let resArr = {
585585 let $l = pools
586586 let $s = size($l)
587587 let $acc0 = nil
588588 func $f0_1 ($a,$i) = if (($i >= $s))
589589 then $a
590590 else processSW($a, $l[$i])
591591
592592 func $f0_2 ($a,$i) = if (($i >= $s))
593593 then $a
594594 else throw("List size exceeds 100")
595595
596596 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
597597 }
598598 let result = makeString_11C(resArr, "|")
599599 result
600600 }
601601
602602
603603 func getPZ (params) = {
604604 let pools = split_4C(params, ",")
605605 let resArr = {
606606 let $l = pools
607607 let $s = size($l)
608608 let $acc0 = nil
609609 func $f0_1 ($a,$i) = if (($i >= $s))
610610 then $a
611611 else processPZ($a, $l[$i])
612612
613613 func $f0_2 ($a,$i) = if (($i >= $s))
614614 then $a
615615 else throw("List size exceeds 100")
616616
617617 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
618618 }
619619 let result = makeString_11C(resArr, "|")
620620 result
621621 }
622622
623623
624624 func getTSN (params) = {
625625 let vaults_labels = split(params, ",")
626626 let resArr = {
627627 let $l = vaults_labels
628628 let $s = size($l)
629629 let $acc0 = nil
630630 func $f0_1 ($a,$i) = if (($i >= $s))
631631 then $a
632632 else processTSN($a, $l[$i])
633633
634634 func $f0_2 ($a,$i) = if (($i >= $s))
635635 then $a
636636 else throw("List size exceeds 10")
637637
638638 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
639639 }
640640 let result = makeString_2C(resArr, "|")
641641 let fee = tryGetInteger(k_fee, tsn_swapper_addr)
642642 let rebate = tryGetInteger(k_rebate, tsn_swapper_addr)
643643 let feeToStakersPercent = tryGetInteger(k_feeToStakersPercent, tsn_swapper_addr)
644644 ((((((toString(fee) + ",") + toString(rebate)) + ",") + toString(feeToStakersPercent)) + "/") + result)
645645 }
646646
647647
648648 func getPL (params) = {
649649 let pools = split(params, ",")
650650 let resArr = {
651651 let $l = pools
652652 let $s = size($l)
653653 let $acc0 = nil
654654 func $f0_1 ($a,$i) = if (($i >= $s))
655655 then $a
656656 else processPL($a, $l[$i])
657657
658658 func $f0_2 ($a,$i) = if (($i >= $s))
659659 then $a
660660 else throw("List size exceeds 10")
661661
662662 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
663663 }
664664 let result = makeString_2C(resArr, "|")
665665 result
666666 }
667667
668668
669669 func loadPepeAssets (pepe_market) = {
670670 let assets = tryGetString(k_assets, pepe_market)
671671 split_4C(assets, "__")
672672 }
673673
674674
675675 func loadPepeAssetBalances (pepe_market) = {
676676 func foldFunc (acc,elem) = {
677677 let balance = parseIntValue(elem)
678678 $Tuple2((acc._1 :+ elem), (acc._2 + balance))
679679 }
680680
681681 let assetBalances = tryGetString(k_asset_balances, pepe_market)
682682 let $l = split_51C(assetBalances, "__")
683683 let $s = size($l)
684684 let $acc0 = $Tuple2(nil, 0)
685685 func $f0_1 ($a,$i) = if (($i >= $s))
686686 then $a
687687 else foldFunc($a, $l[$i])
688688
689689 func $f0_2 ($a,$i) = if (($i >= $s))
690690 then $a
691691 else throw("List size exceeds 10")
692692
693693 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
694694 }
695695
696696
697697 func loadPepeAssetWeights (pepe_market) = {
698698 func foldFunc (acc,elem) = {
699699 let weight = parseIntValue(elem)
700700 $Tuple2((acc._1 :+ elem), (acc._2 + weight))
701701 }
702702
703703 let assetWeights = tryGetString(k_asset_weights, pepe_market)
704704 let $l = split_4C(assetWeights, "__")
705705 let $s = size($l)
706706 let $acc0 = $Tuple2(nil, 0)
707707 func $f0_1 ($a,$i) = if (($i >= $s))
708708 then $a
709709 else foldFunc($a, $l[$i])
710710
711711 func $f0_2 ($a,$i) = if (($i >= $s))
712712 then $a
713713 else throw("List size exceeds 10")
714714
715715 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
716716 }
717717
718718
719719 func loadPepeDecimals (assets) = {
720720 func getDecs (acc,item) = {
721721 let decimals = getAssetDecimals(item)
722722 (acc :+ toString(decimals))
723723 }
724724
725725 let $l = assets
726726 let $s = size($l)
727727 let $acc0 = nil
728728 func $f0_1 ($a,$i) = if (($i >= $s))
729729 then $a
730730 else getDecs($a, $l[$i])
731731
732732 func $f0_2 ($a,$i) = if (($i >= $s))
733733 then $a
734734 else throw("List size exceeds 11")
735735
736736 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
737737 }
738738
739739
740740 func processPepe (result,pepe_market_str) = {
741741 let pepe_market = Address(fromBase58String(pepe_market_str))
742742 let storage = tryGetString(k_storage, pepe_market)
743743 let sarr = split_4C(storage, "__")
744- let $t02033020551 = $Tuple9(sarr[0], (sarr[1] == "1"), sarr[2], sarr[3], sarr[4], sarr[5], sarr[6], sarr[7], sarr[8])
745- let lpAssetId = $t02033020551._1
746- let unlocked = $t02033020551._2
747- let lpTotalSupply = $t02033020551._3
748- let lpFeeRate = $t02033020551._4
749- let protocolFeeRate = $t02033020551._5
750- let maxAllocAmplifier = $t02033020551._6
751- let weightAmplifier = $t02033020551._7
752- let slippageRate = $t02033020551._8
753- let feeMaxRate = $t02033020551._9
744+ let $t02033020533 = $Tuple8(sarr[0], (sarr[1] == "1"), sarr[2], sarr[3], sarr[4], sarr[5], sarr[6], sarr[7])
745+ let lpAssetId = $t02033020533._1
746+ let unlocked = $t02033020533._2
747+ let lpTotalSupply = $t02033020533._3
748+ let lpFeeRate = $t02033020533._4
749+ let protocolFeeRate = $t02033020533._5
750+ let maxAllocAmplifier = $t02033020533._6
751+ let weightAmplifier = $t02033020533._7
752+ let disbalanceCoeff = $t02033020533._8
754753 let precision = tryGetInteger(k_precision, pepe_market)
755754 let sigmaFeePerLp = tryGetString(k_sigma_fee_per_lp, pepe_market)
756755 let paused = tryGetBool(k_paused, pepe_market)
757756 let totalLp = tryGetInteger(k_total_lp, pepe_market)
758757 let rewardBalances = tryGetString(k_reward_balances, pepe_market)
759758 let lpDecimals = getAssetDecimals(lpAssetId)
760759 let assets = loadPepeAssets(pepe_market)
761760 let decimals_arr = loadPepeDecimals(assets)
762- let $t02101521082 = loadPepeAssetWeights(pepe_market)
763- let assetWeights = $t02101521082._1
764- let sigmaWeight = $t02101521082._2
765- let $t02108821171 = loadPepeAssetBalances(pepe_market)
766- let prevAssetBalances = $t02108821171._1
767- let prevAssetTotalSupply = $t02108821171._2
768- let main_str = ((((((((((((((((((((((((((((((((lpAssetId + ",") + toString(unlocked)) + ",") + lpTotalSupply) + ",") + lpFeeRate) + ",") + protocolFeeRate) + ",") + maxAllocAmplifier) + ",") + weightAmplifier) + ",") + slippageRate) + ",") + feeMaxRate) + ",") + toString(sigmaWeight)) + ",") + toString(prevAssetTotalSupply)) + ",") + toString(precision)) + ",") + sigmaFeePerLp) + ",") + toString(totalLp)) + ",") + toString(paused)) + ",") + toString(lpDecimals)) + ",") + pepe_market_str)
761+ let $t02099721064 = loadPepeAssetWeights(pepe_market)
762+ let assetWeights = $t02099721064._1
763+ let sigmaWeight = $t02099721064._2
764+ let $t02107021153 = loadPepeAssetBalances(pepe_market)
765+ let prevAssetBalances = $t02107021153._1
766+ let prevAssetTotalSupply = $t02107021153._2
767+ let main_str = ((((((((((((((((((((((((((((((lpAssetId + ",") + toString(unlocked)) + ",") + lpTotalSupply) + ",") + lpFeeRate) + ",") + protocolFeeRate) + ",") + maxAllocAmplifier) + ",") + weightAmplifier) + ",") + disbalanceCoeff) + ",") + toString(sigmaWeight)) + ",") + toString(prevAssetTotalSupply)) + ",") + toString(precision)) + ",") + sigmaFeePerLp) + ",") + toString(totalLp)) + ",") + toString(paused)) + ",") + toString(lpDecimals)) + ",") + pepe_market_str)
769768 let assets_ids = makeString_11C(assets, ",")
770769 let assets_weights = makeString_11C(assetWeights, ",")
771770 let assets_balances = makeString_11C(prevAssetBalances, ",")
772771 let assets_decimals = makeString_11C(decimals_arr, ",")
773772 let res = ((((((((((main_str + "|") + assets_ids) + "|") + assets_weights) + "|") + assets_balances) + "|") + assets_decimals) + "|") + rewardBalances)
774773 (result :+ res)
775774 }
776775
777776
778777 func getPepe (params) = {
779778 let addresses = split(params, ",")
780779 let resArr = {
781780 let $l = addresses
782781 let $s = size($l)
783782 let $acc0 = nil
784783 func $f0_1 ($a,$i) = if (($i >= $s))
785784 then $a
786785 else processPepe($a, $l[$i])
787786
788787 func $f0_2 ($a,$i) = if (($i >= $s))
789788 then $a
790789 else throw("List size exceeds 10")
791790
792791 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
793792 }
794793 let result = makeString_11C(resArr, ";")
795794 result
796795 }
797796
798797
799798 func getCombine (params) = {
800799 let paramsArr = split(params, "**")
801- let $t02268422766 = $Tuple3(paramsArr[0], paramsArr[1], paramsArr[2])
802- let tsnParams = $t02268422766._1
803- let plParams = $t02268422766._2
804- let pepeParams = $t02268422766._3
800+ let $t02264222724 = $Tuple3(paramsArr[0], paramsArr[1], paramsArr[2])
801+ let tsnParams = $t02264222724._1
802+ let plParams = $t02264222724._2
803+ let pepeParams = $t02264222724._3
805804 let tsnData = getTSN(tsnParams)
806805 let plData = getPL(plParams)
807806 let pepeData = getPepe(pepeParams)
808807 makeString_11C([tsnData, plData, pepeData], "**")
809808 }
810809
811810
812811 func getEastAssetData (assetId) = {
813812 let params = tryGetString(("%s%s__asset__" + assetId), east_proxy)
814813 let paramsArr = split(params, "__")
815- let $t02309723157 = $Tuple2(paramsArr[1], paramsArr[2])
816- let enStr = $t02309723157._1
817- let assetContractStr = $t02309723157._2
814+ let $t02305523115 = $Tuple2(paramsArr[1], paramsArr[2])
815+ let enStr = $t02305523115._1
816+ let assetContractStr = $t02305523115._2
818817 let assetContract = Address(fromBase58String(assetContractStr))
819818 let enabled = if ((enStr == "ENABLED"))
820819 then true
821820 else false
822821 let backingRatio = tryGetInteger("%s__backingRatio", assetContract)
823822 let liquidationRatio = tryGetInteger("%s__liquidationRatio", assetContract)
824823 let oracleAddressStr = tryGetString("%s__oracleAddress", assetContract)
825824 let oracleAddress = Address(fromBase58String(oracleAddressStr))
826825 let ticker = tryGetString("%s__ticker", assetContract)
827826 let eastMintedLimit = tryGetInteger("%s__eastMintedLimit", assetContract)
828827 let price = tryGetInteger(("%s%s__price__" + ticker), oracleAddress)
829828 makeString_2C([toString(enabled), toString(backingRatio), toString(liquidationRatio), toString(eastMintedLimit), toString(price)], ",")
830829 }
831830
832831
833832 func getEastLiquidation (params) = {
834833 let paramsArr = split(params, ",")
835834 func f (accum,next) = (accum :+ ((next + ",") + getEastAssetData(next)))
836835
837836 let res = {
838837 let $l = paramsArr
839838 let $s = size($l)
840839 let $acc0 = nil
841840 func $f0_1 ($a,$i) = if (($i >= $s))
842841 then $a
843842 else f($a, $l[$i])
844843
845844 func $f0_2 ($a,$i) = if (($i >= $s))
846845 then $a
847846 else throw("List size exceeds 10")
848847
849848 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
850849 }
851850 let assetsData = makeString_11C(res, ";")
852851 let cumulativeFeeFraction = tryGetInteger("%s__cumulativeFeeFraction", east_proxy)
853852 let currTs = (lastBlock.timestamp / 1000)
854853 let fractionLastUpdated = tryGetIntegerWithDef("%s__fractionLastUpdated", east_proxy, currTs)
855854 let coordinatorStr = tryGetString("%s__coordinatorAddress", east_proxy)
856855 let coordinator = Address(fromBase58String(coordinatorStr))
857856 let stabFee = tryGetIntegerWithDef("%s__stabilityFee", coordinator, 10000000000)
858857 let liqBonus = tryGetInteger("%s__liquidationBonus", coordinator)
859858 let commonData = makeString([toString(cumulativeFeeFraction), toString(currTs), toString(fractionLastUpdated), toString(stabFee), toString(liqBonus)], ",")
860859 ((commonData + "|") + assetsData)
861860 }
862861
863862
864863 @Callable(i)
865864 func test (s) = {
866865 let r = tryGetBool("deprecated_3P286TkTHARtrJzxUhPoHXardvutC37a9rM", Address(fromBase58String(swopfi_oracle)))
867866 throw(toString(r))
868867 }
869868
870869

github/deemru/w8io/3ef1775 
91.95 ms