tx · C5XNVasuPbZsqNyz6dfXZ3tEkUHZ41RJPe4PSQLzqLYb

3M8MK2fPpyEa7ENJhMa5rpoxgFQ4Bo9Fmux:  -0.10000000 Waves

2025.12.03 08:40 [784042] smart account 3M8MK2fPpyEa7ENJhMa5rpoxgFQ4Bo9Fmux > SELF 0.00000000 Waves

{ "type": 13, "id": "C5XNVasuPbZsqNyz6dfXZ3tEkUHZ41RJPe4PSQLzqLYb", "fee": 10000000, "feeAssetId": null, "timestamp": 1764740445483, "version": 2, "chainId": 82, "sender": "3M8MK2fPpyEa7ENJhMa5rpoxgFQ4Bo9Fmux", "senderPublicKey": "77RPwkcZCFR5qitZfjQxkDbsj52nys8ZPbDfCogRytGf", "proofs": [ "2BYdfnCW5C72ZtU8iQMezkVRtEaTA74v4aSeAZSbJKJgXNLrUzKRZyDRJ9NRWXf9PorQYWp5CNXSw18WRfnggJoN" ], "script": "base64:BgIHCAISAwoBCIgBAAljb25maWdTdHIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwINY29uZmlnQWRkcmVzcwIjM1BNb0VpYmRMZVdxY1VSUTgzNTFYaGFXd3lhY0RjN0c0ZTUADkNPTkZJR19BRERSRVNTAwkAAAIFCWNvbmZpZ1N0cgIABQR0aGlzCQEHQWRkcmVzcwEJANkEAQUJY29uZmlnU3RyAANyZXgJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUOQ09ORklHX0FERFJFU1MCE0FHR1JFR0FUT1JfQ09OVFJBQ1QCIzNQR0ZIelZHVDROVGlnd0NLUDFOY3dvWGtvZFZad3ZCdXVVAAhwbF9wcm94eQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ5DT05GSUdfQUREUkVTUwITTEVORF9QUk9YWV9DT05UUkFDVAIjM1BKRVNWRFRIUnY4aTgzWGJtSHJSR1FoRGM1cmdSM2F6UXMABG9yY2wJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUOQ09ORklHX0FERFJFU1MCDW9yYWNsZUFkZHJlc3MCIzNQOGQxRTFCTEtvRDUyeTNiUUoxYkRUZDJURDFncGFMbjl0AAt3eF9zd2FwX3N0cgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ5DT05GSUdfQUREUkVTUwIKV1hfU1dBUFBFUgIjM1A2OHpOaXVmc3UxdmlacHUxYVkzY2RhaFJSS2N2VjVOOTMAB3d4X3N3YXAJAQdBZGRyZXNzAQkA2QQBBQt3eF9zd2FwX3N0cgARcHpTaHV0ZG93bkFkZHJlc3MJAQdBZGRyZXNzAQkA2QQBCQELdmFsdWVPckVsc2UCCQCdCAIFDkNPTkZJR19BRERSRVNTAg9zaHV0ZG93bkFkZHJlc3MCIzNQRXB2OWhSRldFRUJVMjJXUm5Mc3cxYkg0WUd0Y1U3MjhvABBwelJhbmdlTWFzdGVyU3RyCQELdmFsdWVPckVsc2UCCQCdCAIFDkNPTkZJR19BRERSRVNTAg9wb29sc0h1YkFkZHJlc3MCIzNQNVJHWXlDbkVMRjhKVFB4Z1g1NGRCR3p3a1FNS1VKNUg3AA1welJhbmdlTWFzdGVyCQEHQWRkcmVzcwEJANkEAQUQcHpSYW5nZU1hc3RlclN0cgARc3dvcGZpX29yYWNsZV9zdHIJAQt2YWx1ZU9yRWxzZQIJAKIIAQINc3dvcGZpX29yYWNsZQIjM1BFYnFWaUVSQ29Lbm1jU1VMaDZuMmFpTXZVZFNRZENzb20ADXN3b3BmaV9vcmFjbGUJAQdBZGRyZXNzAQkA2QQBBRFzd29wZmlfb3JhY2xlX3N0cgAOd3hfZmFjdG9yeV9zdHIJAQt2YWx1ZU9yRWxzZQIJAKIIAQIKd3hfZmFjdG9yeQIjM1BDdUhzVFU1OFdLaENxb3RiY1N3QUJ2ZFB6cXFWQWJiVHYACnd4X2ZhY3RvcnkJAQdBZGRyZXNzAQkA2QQBBQ53eF9mYWN0b3J5X3N0cgAOZWFzdF9wcm94eV9zdHIJAQt2YWx1ZU9yRWxzZQIJAKIIAQIKZWFzdF9wcm94eQIjM1BNdEduZjNMWGlFRzZpc0RRTHExeE1ES1VxalFHcU5ITGIACmVhc3RfcHJveHkJAQdBZGRyZXNzAQkA2QQBBQ5lYXN0X3Byb3h5X3N0cgAQZWFzdF9jb29yZGluYXRvcgkBC3ZhbHVlT3JFbHNlAgkAoggBAhBlYXN0X2Nvb3JkaW5hdG9yAiMzUEo1Q1ZScVcxNW5ua0tOSEpNelQzcFBUdERKZjcxckd4SwALdHNuX3N3YXBwZXIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUOQ09ORklHX0FERFJFU1MCDFRTTl9DT05UUkFDVAIjM1BLejVqbkpMb2hGMkdqU2hRN2JHNUg0QmViZG9BOTh6WjIAEHRzbl9zd2FwcGVyX2FkZHIJAQdBZGRyZXNzAQkA2QQBBQt0c25fc3dhcHBlcgAKS19hbV9hc19pZAIPJXNfX2Ftb3VudEFzc2V0AApLX3ByX2FzX2lkAg4lc19fcHJpY2VBc3NldAAFS19hbXACByVzX19hbXAAB0tfc2hhcmUCRCVzJXNfX3NoYXJlQXNzZXRCYWxhbmNlX19ZaU5ib2ZGekMxN2pFSEhDTXdyUmNweTlNcnJqYWJNTUxaeGc4ZzV4bWY3AAhLX3N0YWtlZAIaJXMlc19fc3Rha2VkQmFsYW5jZV9fV0FWRVMAEUtfZmFjdG9yeUNvbnRyYWN0AhMlc19fZmFjdG9yeUNvbnRyYWN0AAxLX3d4U2h1dERvd24CDCVzX19zaHV0ZG93bgAJS19hX2FzX2lkAgpBX2Fzc2V0X2lkAAlLX2JfYXNfaWQCCkJfYXNzZXRfaWQACktfYV9hc19iYWwCD0FfYXNzZXRfYmFsYW5jZQAKS19iX2FzX2JhbAIPQl9hc3NldF9iYWxhbmNlAAVLX2ZlZQIKY29tbWlzc2lvbgAPS19zd29wZmlfYWN0aXZlAgZhY3RpdmUAFktfc3dvcGZpX2dsb2JhbF9hY3RpdmUCFGFjdGl2ZV9hbGxfY29udHJhY3RzAAtLX2Fzc2V0X2lkcwIPc3RhdGljX3Rva2VuSWRzAAlLX2ZlZV9wdXoCCnN0YXRpY19mZWUACktfZmVlVG9rZW4CD3N0YXRpY19mZWVUb2tlbgAVS19nbG9iYWxfcG9vbFRva2VuX2lkAhZzdGF0aWNfcG9vbFRva2VuX2lkU3RyABxLX2dsb2JhbF9wb29sVG9rZW5faWRfYmluYXJ5AhNnbG9iYWxfcG9vbFRva2VuX2lkABlLX2dsb2JhbF9wb29sVG9rZW5fYW1vdW50AhdnbG9iYWxfcG9vbFRva2VuX2Ftb3VudAAOS19zdGF0aWNfS011bHQCDHN0YXRpY19LTXVsdAARS19wel9yYW5nZWRfcG9vbHMCDGdsb2JhbF9wb29scwAWS190bXBfcmVibGFuY2VBc3NldElkcwIVdG1wX3JlYmFsYW5jZUFzc2V0SWRzABZLX3JlYmFsYW5jZV9pblByb2dyZXNzAhRyZWJhbGFuY2VfaW5Qcm9ncmVzcwAVS19yZWJhbGFuY2Vfc3RlcHNEb25lAhNyZWJhbGFuY2Vfc3RlcHNEb25lABdLX3JlYmFsYW5jZV9zdGVwc0Ftb3VudAIVcmViYWxhbmNlX3N0ZXBzQW1vdW50ABdLX3JlYmFsYW5jZV9hc3NldERlbHRhcwIVcmViYWxhbmNlX2Fzc2V0RGVsdGFzABtLX3JlYmFsYW5jZV9hdHRhY2hlZFBheW1lbnQCGnJlYmFsYW5jZV9hdHRhY2hlZFBheW1lbnRfAAVrX2ZlZQIFa19mZWUACGtfcmViYXRlAghrX3JlYmF0ZQAVa19mZWVUb1N0YWtlcnNQZXJjZW50AhVrX2ZlZVRvU3Rha2Vyc1BlcmNlbnQAD2tfZXhjZXNzQmFsYW5jZQIPa19leGNlc3NCYWxhbmNlAA1rX2ZyZWVCYWxhbmNlAg1rX2ZyZWVCYWxhbmNlABRrX21heFNwb3RVdGlsaXphdGlvbgIUa19tYXhTcG90VXRpbGl6YXRpb24ADWtfdG90YWxTdXBwbHkCDWtfdG90YWxTdXBwbHkABmtfcmF0ZQIGa19yYXRlAAhrX2JzQXN0UgIIa19ic0FzdFIACGtfYnNBc3RXAghrX2JzQXN0VwAIa19xdEFzdFICCGtfcXRBc3RSAAhrX3F0QXN0VwIIa19xdEFzdFcAEGtfbWF4UHJpY2VJbXBhY3QCEGtfbWF4UHJpY2VJbXBhY3QAEGtfbWF4UHJpY2VTcHJlYWQCEGtfbWF4UHJpY2VTcHJlYWQAE2tfdG90YWxQb3NpdGlvblNpemUCE2tfdG90YWxQb3NpdGlvblNpemUADGtfYmFzZU9yYWNsZQIMa19iYXNlT3JhY2xlABBrX21heE9yYWNsZURlbGF5AhBrX21heE9yYWNsZURlbGF5AAlrX3N0b3JhZ2UCB1NUT1JBR0UACGtfYXNzZXRzAgZBU1NFVFMACGtfc3RhdHVzAgZTVEFUVVMACGtfcGF1c2VkAgZQQVVTRUQAEGtfYXNzZXRfYmFsYW5jZXMCDkFTU0VUX0JBTEFOQ0VTAA9rX2Fzc2V0X3dlaWdodHMCDUFTU0VUX1dFSUdIVFMACGtfbHBfZmVlAgZMUF9GRUUADmtfcHJvdG9jb2xfZmVlAgxQUk9UT0NPTF9GRUUAC2tfcHJlY2lzaW9uAglQUkVDSVNJT04AEmtfc2lnbWFfZmVlX3Blcl9scAIQU0lHTUFfRkVFX1BFUl9MUAAXa191c2VyX3NpZ21hX2ZlZV9wZXJfbHACFVVTRVJfU0lHTUFfRkVFX1BFUl9MUAAJa191c2VyX2xwAgdVU0VSX0xQAAprX3RvdGFsX2xwAghUT1RBTF9MUAAOa191c2VyX3Byb2ZpdHMCDFVTRVJfUFJPRklUUwARa19yZXdhcmRfYmFsYW5jZXMCD1JFV0FSRF9CQUxBTkNFUwEKZ2V0X2RvbWFpbgELcG9vbEFkZHJlc3MEByRtYXRjaDAFC3Bvb2xBZGRyZXNzAwkAAAICIzNQNHVBNWV0blppNEFtQmFiS2lucTJiTWlXVThLY25IWmRIBQckbWF0Y2gwAgExAgEwAQlrX3BsVG9rZW4CCGFzc2V0X2lkBmRvbWFpbgkArAICCQCsAgIJAKwCAgIJc2V0dXBfcGxfBQhhc3NldF9pZAIBXwUGZG9tYWluARBrX3RvdGFsX3N1cHBsaWVkAQhhc3NldF9pZAkArAICAg90b3RhbF9zdXBwbGllZF8FCGFzc2V0X2lkAQdrX3NSYXRlAQhhc3NldF9pZAkArAICBQhhc3NldF9pZAIGX3NSYXRlARBrX3RvdGFsX2JvcnJvd2VkAQhhc3NldF9pZAkArAICAg90b3RhbF9ib3Jyb3dlZF8FCGFzc2V0X2lkAQdrX2JSYXRlAQhhc3NldF9pZAkArAICBQhhc3NldF9pZAIGX2JSYXRlAQtrX21heFN1cHBseQEIYXNzZXRfaWQJAKwCAgIQc2V0dXBfbWF4U3VwcGx5XwUIYXNzZXRfaWQAEGtfbGFzdFJhdGVIZWlnaHQCDmxhc3RSYXRlSGVpZ2h0ARBnZXRQdXpCYWxhbmNlS2V5AQdhc3NldElkCQCsAgIJAKwCAgIHZ2xvYmFsXwUHYXNzZXRJZAIIX2JhbGFuY2UBFGdldFB1ekZhY3RCYWxhbmNlS2V5AQdhc3NldElkCQCsAgIJAKwCAgIHZ2xvYmFsXwUHYXNzZXRJZAIMX2ZhY3RCYWxhbmNlAQ9nZXRQdXpXZWlnaHRLZXkBB2Fzc2V0SWQJAKwCAgkArAICAgdzdGF0aWNfBQdhc3NldElkAgdfd2VpZ2h0AQdnZXRCUEFLAQdhZGRyZXNzCQCsAgIFB2FkZHJlc3MCEF9zdGF0aWNBc3NldHNJZHMBDHRyeUdldFN0cmluZwIDa2V5B2FkZHJlc3MEByRtYXRjaDAJAJ0IAgUHYWRkcmVzcwUDa2V5AwkAAQIFByRtYXRjaDACBlN0cmluZwQBYgUHJG1hdGNoMAUBYgIAARN0cnlHZXRTdHJpbmdXaXRoRGVmAwNrZXkHYWRkcmVzcwNkZWYEByRtYXRjaDAJAJ0IAgUHYWRkcmVzcwUDa2V5AwkAAQIFByRtYXRjaDACBlN0cmluZwQBYgUHJG1hdGNoMAUBYgUDZGVmAQp0cnlHZXRCb29sAgNrZXkHYWRkcmVzcwQHJG1hdGNoMAkAmwgCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBYgUHJG1hdGNoMAUBYgcBEXRyeUdldEJvb2xXaXRoRGVmAwNrZXkHYWRkcmVzcwNkZWYEByRtYXRjaDAJAJsIAgUHYWRkcmVzcwUDa2V5AwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAWIFByRtYXRjaDAFAWIFA2RlZgENdHJ5R2V0SW50ZWdlcgIDa2V5B2FkZHJlc3MEByRtYXRjaDAJAJoIAgUHYWRkcmVzcwUDa2V5AwkAAQIFByRtYXRjaDACA0ludAQBYgUHJG1hdGNoMAUBYgAAARV0cnlHZXRJbnRlZ2VyQXNTdHJpbmcCA2tleQdhZGRyZXNzBAckbWF0Y2gwCQCaCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWIFByRtYXRjaDAJAKQDAQUBYgIETm9uZQEUdHJ5R2V0SW50ZWdlcldpdGhEZWYDA2tleQdhZGRyZXNzA2RlZgQHJG1hdGNoMAkAmggCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwBQFiBQNkZWYBDmdldEFzc2V0U3RyaW5nAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAJANgEAQUBYgIFV0FWRVMBEGdldFd4RGVmYXVsdEZlZXMABAdwb29sRmVlCQEUdHJ5R2V0SW50ZWdlcldpdGhEZWYDAgslc19fcG9vbEZlZQUHd3hfc3dhcADAmgwEC3Byb3RvY29sRmVlCQEUdHJ5R2V0SW50ZWdlcldpdGhEZWYDAg8lc19fcHJvdG9jb2xGZWUFB3d4X3N3YXAAwJoMCQCUCgIJAKQDAQUHcG9vbEZlZQkApAMBBQtwcm90b2NvbEZlZQENZ2V0V3hQb29sRmVlcwEHYWRkcmVzcwQHZmVlc0tleQkArAICAg8lcyVzX19zd2FwRmVlX18FB2FkZHJlc3MEBGZlZXMJAQx0cnlHZXRTdHJpbmcCBQdmZWVzS2V5BQp3eF9mYWN0b3J5AwkAAAIFBGZlZXMCAAkBEGdldFd4RGVmYXVsdEZlZXMABAxzcGxpdHRlZEZlZXMJALUJAgUEZmVlcwICX18JAJQKAgkAkQMCBQxzcGxpdHRlZEZlZXMAAQkAkQMCBQxzcGxpdHRlZEZlZXMAAgEPZ2V0QXNzZXRCYWxhbmNlAgdhZGRyZXNzB2Fzc2V0SWQEAWEJAPAHAgUHYWRkcmVzcwUHYXNzZXRJZAUBYQEPZ2V0V2F2ZXNCYWxhbmNlAQdhZGRyZXNzBAF3CAkA7wcBBQdhZGRyZXNzCWF2YWlsYWJsZQUBdwEKZ2V0QmFsYW5jZQIGcmVzdWx0B2Fzc2V0SWQEB2FkZHJlc3MJAK8CAgUGcmVzdWx0ACMEBGFkZHIJAQdBZGRyZXNzAQkA2QQBBQdhZGRyZXNzBAdiYWxhbmNlAwkAAAIFB2Fzc2V0SWQCBVdBVkVTCQEPZ2V0V2F2ZXNCYWxhbmNlAQUEYWRkcgQDYUlkCQDZBAEFB2Fzc2V0SWQJAQ9nZXRBc3NldEJhbGFuY2UCBQRhZGRyBQNhSWQEA2xlbgkAsQIBBQZyZXN1bHQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQdhZGRyZXNzCQCwAgIFBnJlc3VsdAAjBQdhc3NldElkAgE6CQCkAwEFB2JhbGFuY2UCASwBEWdldEFkZHJlc3NCYWxhbmNlAgRhZGRyB2Fzc2V0SWQEB2JhbGFuY2UDCQAAAgUHYXNzZXRJZAIFV0FWRVMJAQ9nZXRXYXZlc0JhbGFuY2UBBQRhZGRyBANhSWQJANkEAQUHYXNzZXRJZAkBD2dldEFzc2V0QmFsYW5jZQIFBGFkZHIFA2FJZAUHYmFsYW5jZQEQZ2V0QXNzZXREZWNpbWFscwEKYXNzZXRJZFN0cgQIZGVjaW1hbHMDCQAAAgUKYXNzZXRJZFN0cgIFV0FWRVMACAgJAQV2YWx1ZQEJAOwHAQkA2QQBBQphc3NldElkU3RyCGRlY2ltYWxzBQhkZWNpbWFscwEJZ2V0V3hEYXRhAQdhZGRyZXNzBARhZGRyCQEHQWRkcmVzcwEJANkEAQUHYWRkcmVzcwQPX3d4X2ZhY3Rvcnlfc3RyCQETdHJ5R2V0U3RyaW5nV2l0aERlZgMCEyVzX19mYWN0b3J5Q29udHJhY3QFBGFkZHIFDnd4X2ZhY3Rvcnlfc3RyBAtfd3hfZmFjdG9yeQkBB0FkZHJlc3MBCQDZBAEFD193eF9mYWN0b3J5X3N0cgQIYW1vdW50SWQJAQx0cnlHZXRTdHJpbmcCBQpLX2FtX2FzX2lkBQRhZGRyBAdwcmljZUlkCQEMdHJ5R2V0U3RyaW5nAgUKS19wcl9hc19pZAUEYWRkcgQLaW5kZXhBbW91bnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQtfd3hfZmFjdG9yeQkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQhhbW91bnRJZAIRd3ggbWFwIGFzc2V0IGZhaWwECmluZGV4UHJpY2UJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQtfd3hfZmFjdG9yeQkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQdwcmljZUlkAhF3eCBtYXAgYXNzZXQgZmFpbAQKcG9vbENvbmZpZwkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgULX3d4X2ZhY3RvcnkJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18JAKQDAQULaW5kZXhBbW91bnQCAl9fCQCkAwEFCmluZGV4UHJpY2UCCF9fY29uZmlnAhN3eCBwb29sIGNvbmZpZyBmYWlsAgJfXwQNcG9vbFN0YXR1c1N0cgkAkQMCBQpwb29sQ29uZmlnAAIEA2FtcAkBDHRyeUdldFN0cmluZwIFBUtfYW1wBQRhZGRyBAVzaGFyZQkBDXRyeUdldEludGVnZXICBQdLX3NoYXJlBQRhZGRyBAVzdGFrZQkBDXRyeUdldEludGVnZXICBQhLX3N0YWtlZAUEYWRkcgQLJHQwOTE2ODkyMTkJAQ1nZXRXeFBvb2xGZWVzAQUHYWRkcmVzcwQHcG9vbEZlZQgFCyR0MDkxNjg5MjE5Al8xBAtwcm90b2NvbEZlZQgFCyR0MDkxNjg5MjE5Al8yBBBpc0dsb2JhbFNodXRkb3duCQEKdHJ5R2V0Qm9vbAIFDEtfd3hTaHV0RG93bgULX3d4X2ZhY3RvcnkEE2lzR2xvYmFsU2h1dGRvd25TdHIDBRBpc0dsb2JhbFNodXRkb3duAgExAgEwBBJpc1Bvb2xTd2FwRGlzYWJsZWQJAQp0cnlHZXRCb29sAgkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwkApAMBBQtpbmRleEFtb3VudAICX18JAKQDAQUKaW5kZXhQcmljZQIOX19zd2FwRGlzYWJsZWQFC193eF9mYWN0b3J5BBVpc1Bvb2xTd2FwRGlzYWJsZWRTdHIDBRJpc1Bvb2xTd2FwRGlzYWJsZWQCATECATAJAJQKAgkArAICCQCsAgIFCGFtb3VudElkAgEsBQdwcmljZUlkCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUDYW1wAgEsCQCkAwEFBXNoYXJlAgEsCQCkAwEFBXN0YWtlAgEsBQdwb29sRmVlAgEsBQtwcm90b2NvbEZlZQIBLAUTaXNHbG9iYWxTaHV0ZG93blN0cgIBLAUNcG9vbFN0YXR1c1N0cgIBLAUVaXNQb29sU3dhcERpc2FibGVkU3RyAQlnZXRTd0RhdGEBB2FkZHJlc3MEBGFkZHIJAQdBZGRyZXNzAQkA2QQBBQdhZGRyZXNzBARBX2lkCQEMdHJ5R2V0U3RyaW5nAgUJS19hX2FzX2lkBQRhZGRyBARCX2lkCQEMdHJ5R2V0U3RyaW5nAgUJS19iX2FzX2lkBQRhZGRyBAlBX2JhbGFuY2UJAQ10cnlHZXRJbnRlZ2VyAgUKS19hX2FzX2JhbAUEYWRkcgQJQl9iYWxhbmNlCQENdHJ5R2V0SW50ZWdlcgIFCktfYl9hc19iYWwFBGFkZHIEA2ZlZQkBFHRyeUdldEludGVnZXJXaXRoRGVmAwUFS19mZWUFBGFkZHIA8C4ECmRlcHJlY2F0ZWQJAQp0cnlHZXRCb29sAgkArAICAgtkZXByZWNhdGVkXwUHYWRkcmVzcwUNc3dvcGZpX29yYWNsZQQGYWN0aXZlCQERdHJ5R2V0Qm9vbFdpdGhEZWYDBQ9LX3N3b3BmaV9hY3RpdmUFBGFkZHIGBA1nbG9iYWxfYWN0aXZlCQERdHJ5R2V0Qm9vbFdpdGhEZWYDBRZLX3N3b3BmaV9nbG9iYWxfYWN0aXZlBQ1zd29wZmlfb3JhY2xlBgQJYWN0aXZlU3RyAwUGYWN0aXZlAgExAgEwBA9nbG9iYWxBY3RpdmVTdHIDBQ1nbG9iYWxfYWN0aXZlAgExAgEwCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEQV9pZAIBOgkApAMBBQlBX2JhbGFuY2UCASwFBEJfaWQCAToJAKQDAQUJQl9iYWxhbmNlAgEsCQCkAwEFA2ZlZQIBLAkApQMBBQpkZXByZWNhdGVkAgEsBQlhY3RpdmVTdHICASwFD2dsb2JhbEFjdGl2ZVN0cgESZ2V0UHpSZWJhbGFuY2VEYXRhAQdhZGRyZXNzBARhZGRyCQEHQWRkcmVzcwEJANkEAQUHYWRkcmVzcwQMdG1wQXNzZXRzU3RyCQELdmFsdWVPckVsc2UCCQCdCAIFBGFkZHIFFktfdG1wX3JlYmxhbmNlQXNzZXRJZHMCAAQKaW5Qcm9ncmVzcwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQRhZGRyBRZLX3JlYmFsYW5jZV9pblByb2dyZXNzBwQJc3RlcHNEb25lCQELdmFsdWVPckVsc2UCCQCaCAIFBGFkZHIFFUtfcmViYWxhbmNlX3N0ZXBzRG9uZQAABAtzdGVwc0Ftb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQRhZGRyBRdLX3JlYmFsYW5jZV9zdGVwc0Ftb3VudAAABAthc3NldERlbHRhcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQRhZGRyBRdLX3JlYmFsYW5jZV9hc3NldERlbHRhcwIABAl0bXBBc3NldHMJALUJAgUMdG1wQXNzZXRzU3RyAgEsCgEPY29sbGVjdFBheW1lbnRzAgVhY2N1bQdhc3NldElkBANrZXkJAKwCAgUbS19yZWJhbGFuY2VfYXR0YWNoZWRQYXltZW50BQdhc3NldElkBAN2YWwJAQ10cnlHZXRJbnRlZ2VyAgUDa2V5BQRhZGRyAwkBAiE9AgUDdmFsAAAJAM4IAgUFYWNjdW0JAMwIAgkArAICCQCsAgIFA2tleQIBKgkApAMBBQN2YWwFA25pbAUFYWNjdW0EEXJlYmFsYW5jZVBheW1lbnRzCgACJGwFCXRtcEFzc2V0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEPY29sbGVjdFBheW1lbnRzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBBRyZWJhbGFuY2VQYXltZW50c1N0cgkAuQkCBRFyZWJhbGFuY2VQYXltZW50cwIBLAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQx0bXBBc3NldHNTdHICATsJAKUDAQUKaW5Qcm9ncmVzcwIBOwkApAMBBQlzdGVwc0RvbmUCATsJAKQDAQULc3RlcHNBbW91bnQCATsFC2Fzc2V0RGVsdGFzAgE7BRRyZWJhbGFuY2VQYXltZW50c1N0cgEUY29sbGVjdFB1ekFzc2V0c0RhdGECBnJlc3VsdAdhc3NldElkBANsZW4JAJADAQUGcmVzdWx0BAdhZGRyZXNzCQCRAwIFBnJlc3VsdAkAZQIFA2xlbgABBARhZGRyCQEHQWRkcmVzcwEJANkEAQUHYWRkcmVzcwQKYmFsYW5jZUtleQkBEGdldFB1ekJhbGFuY2VLZXkBBQdhc3NldElkBA5mYWN0QmFsYW5jZUtleQkBFGdldFB1ekZhY3RCYWxhbmNlS2V5AQUHYXNzZXRJZAQJd2VpZ2h0S2V5CQEPZ2V0UHV6V2VpZ2h0S2V5AQUHYXNzZXRJZAQGd2VpZ2h0CQENdHJ5R2V0SW50ZWdlcgIFCXdlaWdodEtleQUEYWRkcgQLcmVhbEJhbGFuY2UJARFnZXRBZGRyZXNzQmFsYW5jZQIFBGFkZHIFB2Fzc2V0SWQECm1heFNlbGxvZmYJARV0cnlHZXRJbnRlZ2VyQXNTdHJpbmcCCQCsAgIJAKwCAgIHc3RhdGljXwUHYXNzZXRJZAILX21heFNlbGxvZmYFBGFkZHIECWFzc2V0RGF0YQkBDHRyeUdldFN0cmluZwIJAKwCAgINZ2xvYmFsUGFyYW1zXwUHYXNzZXRJZAUEYWRkcgQNJHQwMTIzMDExMjkzNQMJAAACBQlhc3NldERhdGECAAQIX2JhbGFuY2UJAKQDAQkBDXRyeUdldEludGVnZXICBQpiYWxhbmNlS2V5BQRhZGRyBAxfZmFjdEJhbGFuY2UJAKQDAQkBDXRyeUdldEludGVnZXICBQ5mYWN0QmFsYW5jZUtleQUEYWRkcgQMX2N1cnJTZWxsb2ZmCQEVdHJ5R2V0SW50ZWdlckFzU3RyaW5nAgkArAICCQCsAgICB2dsb2JhbF8FB2Fzc2V0SWQCCF9zZWxsb2ZmBQRhZGRyCQCVCgMFCF9iYWxhbmNlBQxfZmFjdEJhbGFuY2UFDF9jdXJyU2VsbG9mZgQKX2Fzc2V0RGF0YQkAtQkCBQlhc3NldERhdGECAl9fBAhfYmFsYW5jZQkAkQMCBQpfYXNzZXREYXRhAAAEDF9mYWN0QmFsYW5jZQkAkQMCBQpfYXNzZXREYXRhAAEEDF9jdXJyU2VsbG9mZgkAkQMCBQpfYXNzZXREYXRhAAUJAJUKAwUIX2JhbGFuY2UFDF9mYWN0QmFsYW5jZQUMX2N1cnJTZWxsb2ZmBAdiYWxhbmNlCAUNJHQwMTIzMDExMjkzNQJfMQQLZmFjdEJhbGFuY2UIBQ0kdDAxMjMwMTEyOTM1Al8yBAtjdXJyU2VsbG9mZggFDSR0MDEyMzAxMTI5MzUCXzMEA3JlcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUHYXNzZXRJZAIBLAUHYmFsYW5jZQIBLAkApAMBBQZ3ZWlnaHQCASwJAKQDAQULcmVhbEJhbGFuY2UCASwFC2ZhY3RCYWxhbmNlAgEsBQtjdXJyU2VsbG9mZgIBLAUKbWF4U2VsbG9mZgkAzAgCBQNyZXMFBnJlc3VsdAEMaXNSYW5nZWRQb29sAQdhZGRyZXNzCgEFY2hlY2sCA2FjYwRuZXh0BANrZXkDCQBmAgACBQRuZXh0AgxnbG9iYWxfcG9vbHMJAKwCAgINZ2xvYmFsX3Bvb2xzXwkApAMBBQRuZXh0BAtyYW5nZWRQb29scwkBDHRyeUdldFN0cmluZwIFA2tleQUNcHpSYW5nZU1hc3RlcgQIaXNSYW5nZWQJAQIhPQIJALMJAgULcmFuZ2VkUG9vbHMFB2FkZHJlc3MFBHVuaXQDBQhpc1JhbmdlZAYFA2FjYwQDYXJyCQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBANmZmYKAAIkbAUDYXJyCgACJHMJAJADAQUCJGwKAAUkYWNjMAcKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWNoZWNrAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4FA2ZmZgEJZ2V0UHpEYXRhAQdhZGRyZXNzBARhZGRyCQEHQWRkcmVzcwEJANkEAQUHYWRkcmVzcwQEZmVlMQkBDXRyeUdldEludGVnZXICBQlLX2ZlZV9wdXoFBGFkZHIECGZlZVRva2VuCQEMdHJ5R2V0U3RyaW5nAgUKS19mZWVUb2tlbgUEYWRkcgQKYXNzZXRzU3RyMQkBDHRyeUdldFN0cmluZwIFC0tfYXNzZXRfaWRzBQRhZGRyBA0kdDAxMzc3NzEzOTI2AwkAAAIFCmFzc2V0c1N0cjECAAkAlAoCCQEMdHJ5R2V0U3RyaW5nAgkBB2dldEJQQUsBBQdhZGRyZXNzBQR0aGlzAMgBCQCUCgIFCmFzc2V0c1N0cjEFBGZlZTEECWFzc2V0c1N0cggFDSR0MDEzNzc3MTM5MjYCXzEEA2ZlZQgFDSR0MDEzNzc3MTM5MjYCXzIEBmFzc2V0cwkAtQkCBQlhc3NldHNTdHICASwECmFzc2V0c0RhdGEKAAIkbAUGYXNzZXRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAzAgCBQdhZGRyZXNzBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBFGNvbGxlY3RQdXpBc3NldHNEYXRhAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBANsZW4JAJADAQUKYXNzZXRzRGF0YQQJYXNzZXRzQXJyCQDRCAIFCmFzc2V0c0RhdGEJAGUCBQNsZW4AAQQNYXNzZXRzRGF0YVN0cgkAugkCBQlhc3NldHNBcnICATsEDnBvb2xUb2tlbklkU3RyCQEMdHJ5R2V0U3RyaW5nAgUVS19nbG9iYWxfcG9vbFRva2VuX2lkBQRhZGRyBAtwb29sVG9rZW5JZAMJAQIhPQIFDnBvb2xUb2tlbklkU3RyAgAFDnBvb2xUb2tlbklkU3RyBBFwb29sVG9rZW5JZEJpbmFyeQkBC3ZhbHVlT3JFbHNlAgkAnAgCBQRhZGRyBRxLX2dsb2JhbF9wb29sVG9rZW5faWRfYmluYXJ5CQDZBAECBGJ1YmkJAQ5nZXRBc3NldFN0cmluZwEFEXBvb2xUb2tlbklkQmluYXJ5BA9wb29sVG9rZW5BbW91bnQJAQ10cnlHZXRJbnRlZ2VyAgUZS19nbG9iYWxfcG9vbFRva2VuX2Ftb3VudAUEYWRkcgQFa011bHQJARR0cnlHZXRJbnRlZ2VyV2l0aERlZgMFDktfc3RhdGljX0tNdWx0BQRhZGRyAAEEDHBhdXNlZEdsb2JhbAkBCnRyeUdldEJvb2wCAgtpc19zaHV0ZG93bgURcHpTaHV0ZG93bkFkZHJlc3MED3BhdXNlZEdsb2JhbFN0cgMFDHBhdXNlZEdsb2JhbAIBMQIBMAQGcGF1c2VkBwQJcGF1c2VkU3RyAwUGcGF1c2VkAgExAgEwBAhpc1JhbmdlZAkBDGlzUmFuZ2VkUG9vbAEFB2FkZHJlc3MECHBvb2xNb2RlAwUIaXNSYW5nZWQCCXB6X3JhbmdlZAIHcmVndWxhcgkAmwoJBQNmZWUFCGZlZVRva2VuBQtwb29sVG9rZW5JZAUPcG9vbFRva2VuQW1vdW50BQVrTXVsdAUNYXNzZXRzRGF0YVN0cgUPcGF1c2VkR2xvYmFsU3RyBQlwYXVzZWRTdHIFCHBvb2xNb2RlAQpnZXRUc25EYXRhAgdhZGRyZXNzCGFzc2V0X2lkBARhZGRyCQEHQWRkcmVzcwEJANkEAQUHYWRkcmVzcwQGYnNBc3RSCQENdHJ5R2V0SW50ZWdlcgIFCGtfYnNBc3RSBQRhZGRyBAZic0FzdFcJAQ10cnlHZXRJbnRlZ2VyAgUIa19ic0FzdFcFBGFkZHIEBnF0QXN0UgkBDXRyeUdldEludGVnZXICBQhrX3F0QXN0UgUEYWRkcgQGcXRBc3RXCQENdHJ5R2V0SW50ZWdlcgIFCGtfcXRBc3RXBQRhZGRyBA5tYXhQcmljZUltcGFjdAkBDXRyeUdldEludGVnZXICBRBrX21heFByaWNlSW1wYWN0BQRhZGRyBA5tYXhQcmljZVNwcmVhZAkBDXRyeUdldEludGVnZXICBRBrX21heFByaWNlU3ByZWFkBQRhZGRyBBF0b3RhbFBvc2l0aW9uU2l6ZQkBDXRyeUdldEludGVnZXICBRNrX3RvdGFsUG9zaXRpb25TaXplBQRhZGRyBA5tYXhPcmFjbGVEZWxheQkBDXRyeUdldEludGVnZXICBRBrX21heE9yYWNsZURlbGF5BQRhZGRyBAxvcmFjbGVTdHJpbmcJAQx0cnlHZXRTdHJpbmcCBQxrX2Jhc2VPcmFjbGUFBGFkZHIEA2FycgkAtQkCBQxvcmFjbGVTdHJpbmcCASwEDSR0MDE1ODQ1MTU5MTEJAJUKAwkAkQMCBQNhcnIAAAkAkQMCBQNhcnIAAQkAkQMCBQNhcnIAAgQNb3JhY2xlQWRkcmVzcwgFDSR0MDE1ODQ1MTU5MTECXzEECHByaWNlS2V5CAUNJHQwMTU4NDUxNTkxMQJfMgQIYmxvY2tLZXkIBQ0kdDAxNTg0NTE1OTExAl8zBApvcmFjbGVBZGRyCQEHQWRkcmVzcwEJANkEAQUNb3JhY2xlQWRkcmVzcwQLb3JhY2xlUHJpY2UJAQ10cnlHZXRJbnRlZ2VyAgUIcHJpY2VLZXkFCm9yYWNsZUFkZHIECWN1ckhlaWdodAUGaGVpZ2h0BApsYXN0SGVpZ2h0AwkBAiE9AgUIYmxvY2tLZXkCAAkBDXRyeUdldEludGVnZXICBQhibG9ja0tleQUKb3JhY2xlQWRkcgUJY3VySGVpZ2h0BAV2YXVsdAkBDHRyeUdldFN0cmluZwIJAKwCAgIOa19hc3NldF92YXVsdF8FCGFzc2V0X2lkBRB0c25fc3dhcHBlcl9hZGRyBAp2YXVsdF9hZGRyCQEHQWRkcmVzcwEJANkEAQUFdmF1bHQEDWV4Y2Vzc0JhbGFuY2UJAQ10cnlHZXRJbnRlZ2VyAgUPa19leGNlc3NCYWxhbmNlBQp2YXVsdF9hZGRyBAtmcmVlQmFsYW5jZQkBDXRyeUdldEludGVnZXICBQ1rX2ZyZWVCYWxhbmNlBQp2YXVsdF9hZGRyBBJtYXhTcG90VXRpbGl6YXRpb24JAQ10cnlHZXRJbnRlZ2VyAgUUa19tYXhTcG90VXRpbGl6YXRpb24FCnZhdWx0X2FkZHIEC3RvdGFsU3VwcGx5CQENdHJ5R2V0SW50ZWdlcgIFDWtfdG90YWxTdXBwbHkFCnZhdWx0X2FkZHIEBHJhdGUJAQ10cnlHZXRJbnRlZ2VyAgUGa19yYXRlBQp2YXVsdF9hZGRyCQCiChAFBmJzQXN0UgUGYnNBc3RXBQZxdEFzdFIFBnF0QXN0VwURdG90YWxQb3NpdGlvblNpemUFDm1heFByaWNlSW1wYWN0BQ5tYXhQcmljZVNwcmVhZAULb3JhY2xlUHJpY2UFDWV4Y2Vzc0JhbGFuY2UFC2ZyZWVCYWxhbmNlBRJtYXhTcG90VXRpbGl6YXRpb24FC3RvdGFsU3VwcGx5BQRyYXRlBQljdXJIZWlnaHQFCmxhc3RIZWlnaHQFDm1heE9yYWNsZURlbGF5AQhnZXRQcmljZQEHYXNzZXRJZAQFcHJpY2UJAQ10cnlHZXRJbnRlZ2VyAgkArAICBQdhc3NldElkAgdfdHdhcDVCCQEHQWRkcmVzcwEJANkEAQUEb3JjbAUFcHJpY2UBCWdldFBMRGF0YQIMcG9vbF9hZGRyZXNzCGFzc2V0X2lkBAZkb21haW4JAQpnZXRfZG9tYWluAQUMcG9vbF9hZGRyZXNzBAdwb29sQWRyCQEHQWRkcmVzcwEJANkEAQUMcG9vbF9hZGRyZXNzBAlwbFRva2VuSWQJAQx0cnlHZXRTdHJpbmcCCQEJa19wbFRva2VuAgUIYXNzZXRfaWQFBmRvbWFpbgkBB0FkZHJlc3MBCQDZBAEFCHBsX3Byb3h5BAVzUmF0ZQkBDXRyeUdldEludGVnZXICCQEHa19zUmF0ZQEFCGFzc2V0X2lkBQdwb29sQWRyBAViUmF0ZQkBDXRyeUdldEludGVnZXICCQEHa19iUmF0ZQEFCGFzc2V0X2lkBQdwb29sQWRyBA10b3RhbFN1cHBsaWVkCQENdHJ5R2V0SW50ZWdlcgIJARBrX3RvdGFsX3N1cHBsaWVkAQUIYXNzZXRfaWQFB3Bvb2xBZHIEDXRvdGFsQm9ycm93ZWQJAQ10cnlHZXRJbnRlZ2VyAgkBEGtfdG90YWxfYm9ycm93ZWQBBQhhc3NldF9pZAUHcG9vbEFkcgQJbWF4U3VwcGx5CQEMdHJ5R2V0U3RyaW5nAgkBC2tfbWF4U3VwcGx5AQUIYXNzZXRfaWQFB3Bvb2xBZHIECmxhc3RIZWlnaHQJAQ10cnlHZXRJbnRlZ2VyAgUQa19sYXN0UmF0ZUhlaWdodAUHcG9vbEFkcgQJY3VySGVpZ2h0BQZoZWlnaHQEBXByaWNlCQEIZ2V0UHJpY2UBBQhhc3NldF9pZAQIZGVjaW1hbHMJARBnZXRBc3NldERlY2ltYWxzAQUIYXNzZXRfaWQEBmFjdGl2ZQkBCnRyeUdldEJvb2wCAgxzZXR1cF9hY3RpdmUFB3Bvb2xBZHIECXBhdXNlZFN0cgMFBmFjdGl2ZQIBMAIBMQkAngoMBQhhc3NldF9pZAUJcGxUb2tlbklkBQVzUmF0ZQUFYlJhdGUFDXRvdGFsU3VwcGxpZWQFDXRvdGFsQm9ycm93ZWQFCW1heFN1cHBseQUKbGFzdEhlaWdodAUJY3VySGVpZ2h0BQVwcmljZQUIZGVjaW1hbHMFCXBhdXNlZFN0cgEJdGVzdF9sb29wAgZyZXN1bHQDZWxlCQDMCAIFA2VsZQUGcmVzdWx0AQ5nZXRCYWxhbmNlc1N0cgIJYXNzZXRzU3RyB2FkZHJlc3MEBmFzc2V0cwkAvAkCBQlhc3NldHNTdHICASwEA3JlcwoAAiRsBQZhc3NldHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQdhZGRyZXNzCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpnZXRCYWxhbmNlAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAyCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgQIYmFsYW5jZXMJALACAgUDcmVzACMEBGJhbHMJALMCAgUIYmFsYW5jZXMAAQUEYmFscwEJcHJvY2Vzc1dYAgZyZXN1bHQHYWRkcmVzcwQNJHQwMTgzNTAxODM5MwkBCWdldFd4RGF0YQEFB2FkZHJlc3MECWFzc2V0c1N0cggFDSR0MDE4MzUwMTgzOTMCXzEEBWRhdGFzCAUNJHQwMTgzNTAxODM5MwJfMgQMYXNzZXRzU3RyaW5nCQEOZ2V0QmFsYW5jZXNTdHICBQlhc3NldHNTdHIFB2FkZHJlc3MEB3Jlc0l0ZW0JAKwCAgkArAICCQCsAgIJAKwCAgUHYWRkcmVzcwIBLwUMYXNzZXRzU3RyaW5nAgEvBQVkYXRhcwkAzAgCBQdyZXNJdGVtBQZyZXN1bHQBCXByb2Nlc3NTVwIGcmVzdWx0B2FkZHJlc3MEDGFzc2V0c1N0cmluZwkBCWdldFN3RGF0YQEFB2FkZHJlc3MEB3Jlc0l0ZW0JAKwCAgkArAICBQdhZGRyZXNzAgEvBQxhc3NldHNTdHJpbmcJAMwIAgUHcmVzSXRlbQUGcmVzdWx0AQlwcm9jZXNzUFoCBnJlc3VsdAdhZGRyZXNzBA0kdDAxODc4MDE4OTAzCQEJZ2V0UHpEYXRhAQUHYWRkcmVzcwQDZmVlCAUNJHQwMTg3ODAxODkwMwJfMQQIZmVlVG9rZW4IBQ0kdDAxODc4MDE4OTAzAl8yBAtwb29sVG9rZW5JZAgFDSR0MDE4NzgwMTg5MDMCXzMED3Bvb2xUb2tlbkFtb3VudAgFDSR0MDE4NzgwMTg5MDMCXzQEBWtNdWx0CAUNJHQwMTg3ODAxODkwMwJfNQQMYXNzZXRzU3RyaW5nCAUNJHQwMTg3ODAxODkwMwJfNgQMcGF1c2VkR2xvYmFsCAUNJHQwMTg3ODAxODkwMwJfNwQGcGF1c2VkCAUNJHQwMTg3ODAxODkwMwJfOAQIcG9vbE1vZGUIBQ0kdDAxODc4MDE4OTAzAl85BAhyZWJhRGF0YQkBEmdldFB6UmViYWxhbmNlRGF0YQEFB2FkZHJlc3MEB3Jlc0l0ZW0JAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQdhZGRyZXNzAgEvCQCkAwEFA2ZlZQIBLwUIZmVlVG9rZW4CAS8FDGFzc2V0c1N0cmluZwIBLwUIcmViYURhdGECAS8FC3Bvb2xUb2tlbklkAgEvCQCkAwEFD3Bvb2xUb2tlbkFtb3VudAIBLwkApAMBBQVrTXVsdAIBLwUMcGF1c2VkR2xvYmFsAgEvBQZwYXVzZWQCAS8FCHBvb2xNb2RlCQDMCAIFB3Jlc0l0ZW0FBnJlc3VsdAEKcHJvY2Vzc1RTTgIGcmVzdWx0BWxhYmVsBANhcnIJALUJAgUFbGFiZWwCAV8EDSR0MDE5MzEwMTkzNTIJAJQKAgkAkQMCBQNhcnIAAAkAkQMCBQNhcnIAAQQHYWRkcmVzcwgFDSR0MDE5MzEwMTkzNTICXzEECGFzc2V0X2lkCAUNJHQwMTkzMTAxOTM1MgJfMgQNJHQwMTkzNTcxOTU5NQkBCmdldFRzbkRhdGECBQdhZGRyZXNzBQhhc3NldF9pZAQGYnNBc3RSCAUNJHQwMTkzNTcxOTU5NQJfMQQGYnNBc3RXCAUNJHQwMTkzNTcxOTU5NQJfMgQGcXRBc3RSCAUNJHQwMTkzNTcxOTU5NQJfMwQGcXRBc3RXCAUNJHQwMTkzNTcxOTU5NQJfNAQRdG90YWxQb3NpdGlvblNpemUIBQ0kdDAxOTM1NzE5NTk1Al81BA5tYXhQcmljZUltcGFjdAgFDSR0MDE5MzU3MTk1OTUCXzYEDm1heFByaWNlU3ByZWFkCAUNJHQwMTkzNTcxOTU5NQJfNwQLb3JhY2xlUHJpY2UIBQ0kdDAxOTM1NzE5NTk1Al84BA1leGNlc3NCYWxhbmNlCAUNJHQwMTkzNTcxOTU5NQJfOQQLZnJlZUJhbGFuY2UIBQ0kdDAxOTM1NzE5NTk1A18xMAQSbWF4U3BvdFV0aWxpemF0aW9uCAUNJHQwMTkzNTcxOTU5NQNfMTEEC3RvdGFsU3VwcGx5CAUNJHQwMTkzNTcxOTU5NQNfMTIEBHJhdGUIBQ0kdDAxOTM1NzE5NTk1A18xMwQJY3VySGVpZ2h0CAUNJHQwMTkzNTcxOTU5NQNfMTQECmxhc3RIZWlnaHQIBQ0kdDAxOTM1NzE5NTk1A18xNQQObWF4T3JhY2xlRGVsYXkIBQ0kdDAxOTM1NzE5NTk1A18xNgQOYXNzZXRfZGVjaW1hbHMDCQAAAgUIYXNzZXRfaWQCBVdBVkVTAAgICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQhhc3NldF9pZAkArAICAg1JdmFsaWQgYXNzZXQgBQhhc3NldF9pZAhkZWNpbWFscwQHcmVzSXRlbQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUHYWRkcmVzcwIBLAUIYXNzZXRfaWQCASwJAKQDAQUOYXNzZXRfZGVjaW1hbHMCASwJAKQDAQUGYnNBc3RSAgEsCQCkAwEFBmJzQXN0VwIBLAkApAMBBQZxdEFzdFICASwJAKQDAQUGcXRBc3RXAgEsCQCkAwEFEXRvdGFsUG9zaXRpb25TaXplAgEsCQCkAwEFDm1heFByaWNlSW1wYWN0AgEsCQCkAwEFDm1heFByaWNlU3ByZWFkAgEsCQCkAwEFC29yYWNsZVByaWNlAgEsCQCkAwEFDWV4Y2Vzc0JhbGFuY2UCASwJAKQDAQULZnJlZUJhbGFuY2UCASwJAKQDAQUSbWF4U3BvdFV0aWxpemF0aW9uAgEsCQCkAwEFC3RvdGFsU3VwcGx5AgEsCQCkAwEFBHJhdGUCASwJAKQDAQUJY3VySGVpZ2h0AgEsCQCkAwEFCmxhc3RIZWlnaHQCASwJAKQDAQUObWF4T3JhY2xlRGVsYXkJAMwIAgUHcmVzSXRlbQUGcmVzdWx0AQlwcm9jZXNzUEwCBnJlc3VsdAVsYWJlbAQDYXJyCQC1CQIFBWxhYmVsAgEtBA0kdDAyMDQ3MzIwNTIwCQCUCgIJAJEDAgUDYXJyAAAJAJEDAgUDYXJyAAEEDHBvb2xfYWRkcmVzcwgFDSR0MDIwNDczMjA1MjACXzEECGFzc2V0X2lkCAUNJHQwMjA0NzMyMDUyMAJfMgQNJHQwMjA1MjUyMDY5MwkBCWdldFBMRGF0YQIFDHBvb2xfYWRkcmVzcwUIYXNzZXRfaWQECWFzc2V0X2lkZAgFDSR0MDIwNTI1MjA2OTMCXzEECXBsVG9rZW5JZAgFDSR0MDIwNTI1MjA2OTMCXzIEBXNSYXRlCAUNJHQwMjA1MjUyMDY5MwJfMwQFYlJhdGUIBQ0kdDAyMDUyNTIwNjkzAl80BA10b3RhbFN1cHBsaWVkCAUNJHQwMjA1MjUyMDY5MwJfNQQNdG90YWxCb3Jyb3dlZAgFDSR0MDIwNTI1MjA2OTMCXzYECW1heFN1cHBseQgFDSR0MDIwNTI1MjA2OTMCXzcECmxhc3RIZWlnaHQIBQ0kdDAyMDUyNTIwNjkzAl84BAljdXJIZWlnaHQIBQ0kdDAyMDUyNTIwNjkzAl85BAVwcmljZQgFDSR0MDIwNTI1MjA2OTMDXzEwBAhkZWNpbWFscwgFDSR0MDIwNTI1MjA2OTMDXzExBAlwYXVzZWRTdHIIBQ0kdDAyMDUyNTIwNjkzA18xMgQHcmVzSXRlbQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUFbGFiZWwCASwFCWFzc2V0X2lkZAIBLAUJcGxUb2tlbklkAgEsCQCkAwEFBXNSYXRlAgEsCQCkAwEFBWJSYXRlAgEsCQCkAwEFDXRvdGFsU3VwcGxpZWQCASwJAKQDAQUNdG90YWxCb3Jyb3dlZAIBLAUJbWF4U3VwcGx5AgEsCQCkAwEFCmxhc3RIZWlnaHQCASwJAKQDAQUJY3VySGVpZ2h0AgEsCQCkAwEFBXByaWNlAgEsCQCkAwEFCGRlY2ltYWxzAgEsBQlwYXVzZWRTdHIJAMwIAgUHcmVzSXRlbQUGcmVzdWx0AQVnZXRXWAEGcGFyYW1zBAVwb29scwkAvQkCBQZwYXJhbXMC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CQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQAS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MQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQGcmVzdWx0CQC6CQIFBnJlc0FycgIBfAQDZmVlCQENdHJ5R2V0SW50ZWdlcgIFBWtfZmVlBRB0c25fc3dhcHBlcl9hZGRyBAZyZWJhdGUJAQ10cnlHZXRJbnRlZ2VyAgUIa19yZWJhdGUFEHRzbl9zd2FwcGVyX2FkZHIEE2ZlZVRvU3Rha2Vyc1BlcmNlbnQJAQ10cnlHZXRJbnRlZ2VyAgUVa19mZWVUb1N0YWtlcnNQZXJjZW50BRB0c25fc3dhcHBlcl9hZGRyCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCkAwEFA2ZlZQIBLAkApAMBBQZyZWJhdGUCASwJAKQDAQUTZmVlVG9TdGFrZXJzUGVyY2VudAIBLwUGcmVzdWx0AQVnZXRQTAEGcGFyYW1zBAVwb29scwkAtQkCBQZwYXJhbXMCASwEBnJlc0FycgoAAiRsBQVwb29scwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJcHJvY2Vzc1BMAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBAZyZXN1bHQJALoJAgUGcmVzQXJyAgF8BQZyZXN1bHQBDmxvYWRQZXBlQXNzZXRzAQtwZXBlX21hcmtldAQGYXNzZXRzCQEMdHJ5R2V0U3RyaW5nAgUIa19hc3NldHMFC3BlcGVfbWFya2V0CQC8CQIFBmFzc2V0cwICX18BFWxvYWRQZXBlQXNzZXRCYWxhbmNlcwELcGVwZV9tYXJrZXQKAQhm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ZQgFDSR0MDI1MDUzMjUyNTYCXzUEEW1heEFsbG9jQW1wbGlmaWVyCAUNJHQwMjUwNTMyNTI1NgJfNgQPd2VpZ2h0QW1wbGlmaWVyCAUNJHQwMjUwNTMyNTI1NgJfNwQPZGlzYmFsYW5jZUNvZWZmCAUNJHQwMjUwNTMyNTI1NgJfOAQJcHJlY2lzaW9uCQENdHJ5R2V0SW50ZWdlcgIFC2tfcHJlY2lzaW9uBQtwZXBlX21hcmtldAQNc2lnbWFGZWVQZXJMcAkBDHRyeUdldFN0cmluZwIFEmtfc2lnbWFfZmVlX3Blcl9scAULcGVwZV9tYXJrZXQEBnBhdXNlZAkBCnRyeUdldEJvb2wCBQhrX3BhdXNlZAULcGVwZV9tYXJrZXQEB3RvdGFsTHAJAQ10cnlHZXRJbnRlZ2VyAgUKa190b3RhbF9scAULcGVwZV9tYXJrZXQEDnJld2FyZEJhbGFuY2VzCQEMdHJ5R2V0U3RyaW5nAgURa19yZXdhcmRfYmFsYW5jZXMFC3BlcGVfbWFya2V0BApscERlY2ltYWxzCQEQZ2V0QXNzZXREZWNpbWFscwEFCWxwQXNzZXRJZAQGYXNzZXRzCQEObG9hZFBlcGVBc3NldHMBBQtwZXBlX21hcmtldAQMZGVjaW1hbHNfYXJyCQEQbG9hZFBlcGVEZWNpbWFscwEFBmFzc2V0cwQNJHQwMjU3MTEyNTc3OAkBFGxvYWRQZXBlQXNzZXRXZWlnaHRzAQULcGVwZV9tYXJrZXQEDGFzc2V0V2VpZ2h0cwgFDSR0MDI1NzExMjU3NzgCXzEEC3NpZ21hV2VpZ2h0CAUNJHQwMjU3MTEyNTc3OAJfMgQNJHQwMjU3ODMyNTg2NgkBFWxvYWRQZXBlQXNzZXRCYWxhbmNlcwEFC3BlcGVfbWFya2V0BBFwcmV2QXNzZXRCYWxhbmNlcwgFDSR0MDI1NzgzMjU4NjYCXzEEFHByZXZBc3NldFRvdGFsU3VwcGx5CAUNJHQwMjU3ODMyNTg2NgJfMgQUd2F0Y2hkb2dfYWRkcmVzc19zdHIJAQx0cnlHZXRTdHJpbmcCAghXQVRDSERPRwULcGVwZV9tYXJrZXQECHdhdGNoZG9nCQEHQWRkcmVzcwEJANkEAQUUd2F0Y2hkb2dfYWRkcmVzc19zdHIED3dhdGNoZG9nX29mZnNldAkBDXRyeUdldEludGVnZXICAg9XQVRDSERPR19PRkZTRVQFC3BlcGVfbWFya2V0BA93YXRjaGRvZ19oZWlnaHQJAQ10cnlHZXRJbnRlZ2VyAgIPV0FUQ0hET0dfSEVJR0hUBQh3YXRjaGRvZwQTd2F0Y2hkb2dfcGF1c2VkX3N0cgMJAGYCBQZoZWlnaHQJAGQCBQ93YXRjaGRvZ19oZWlnaHQFD3dhdGNoZG9nX29mZnNldAIBMQIBMAQIbWFpbl9zdHIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQlscEFzc2V0SWQCASwJAKUDAQUIdW5sb2NrZWQCASwFDWxwVG90YWxTdXBwbHkCASwFCWxwRmVlUmF0ZQIBLAUPcHJvdG9jb2xGZWVSYXRlAgEsBRFtYXhBbGxvY0FtcGxpZmllcgIBLAUPd2VpZ2h0QW1wbGlmaWVyAgEsBQ9kaXNiYWxhbmNlQ29lZmYCASwJAKQDAQULc2lnbWFXZWlnaHQCASwJAKQDAQUUcHJldkFzc2V0VG90YWxTdXBwbHkCASwJAKQDAQUJcHJlY2lzaW9uAgEsBQ1zaWdtYUZlZVBlckxwAgEsCQCkAwEFB3RvdGFsTHACASwJAKUDAQUGcGF1c2VkAgEsCQCkAwEFCmxwRGVjaW1hbHMCASwFD3BlcGVfbWFya2V0X3N0cgIBLAUTd2F0Y2hkb2dfcGF1c2VkX3N0cgQKYXNzZXRzX2lkcwkAuwkCBQZhc3NldHMCASwEDmFzc2V0c193ZWlnaHRzCQC7CQIFDGFzc2V0V2VpZ2h0cwIBLAQPYXNzZXRzX2JhbGFuY2VzCQC7CQIFEXByZXZBc3NldEJhbGFuY2VzAgEsBA9hc3NldHNfZGVjaW1hbHMJALsJAgUMZGVjaW1hbHNfYXJyAgEsBANyZXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUIbWFpbl9zdHICAXwFCmFzc2V0c19pZHMCAXwFDmFzc2V0c193ZWlnaHRzAgF8BQ9hc3NldHNfYmFsYW5jZXMCAXwFD2Fzc2V0c19kZWNpbWFscwIBfAUOcmV3YXJkQmFsYW5jZXMJAM0IAgUGcmVzdWx0BQNyZXMBB2dldFBlcGUBBnBhcmFtcwQJYWRkcmVzc2VzCQC1CQIFBnBhcmFtcwIBLAQGcmVzQXJyCgACJGwFCWFkZHJlc3NlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQELcHJvY2Vzc1BlcGUCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoEBnJlc3VsdAkAuwkCBQZyZXNBcnICATsFBnJlc3VsdAEKZ2V0Q29tYmluZQEGcGFyYW1zBAlwYXJhbXNBcnIJALUJAgUGcGFyYW1zAgIqKgQNJHQwMjc3MTcyNzc5OQkAlQoDCQCRAwIFCXBhcmFtc0FycgAACQCRAwIFCXBhcmFtc0FycgABCQCRAwIFCXBhcmFtc0FycgACBAl0c25QYXJhbXMIBQ0kdDAyNzcxNzI3Nzk5Al8xBAhwbFBhcmFtcwgFDSR0MDI3NzE3Mjc3OTkCXzIECnBlcGVQYXJhbXMIBQ0kdDAyNzcxNzI3Nzk5Al8zBAd0c25EYXRhCQEGZ2V0VFNOAQUJdHNuUGFyYW1zBAZwbERhdGEJAQVnZXRQTAEFCHBsUGFyYW1zBAhwZXBlRGF0YQkBB2dldFBlcGUBBQpwZXBlUGFyYW1zCQC7CQIJAMwIAgUHdHNuRGF0YQkAzAgCBQZwbERhdGEJAMwIAgUIcGVwZURhdGEFA25pbAICKioBEGdldEVhc3RBc3NldERhdGEBB2Fzc2V0SWQEBnBhcmFtcwkBDHRyeUdldFN0cmluZwIJAKwCAgINJXMlc19fYXNzZXRfXwUHYXNzZXRJZAUKZWFzdF9wcm94eQQJcGFyYW1zQXJyCQC1CQIFBnBhcmFtcwICX18EDSR0MDI4MTIwMjgxODAJAJQKAgkAkQMCBQlwYXJhbXNBcnIAAQkAkQMCBQlwYXJhbXNBcnIAAgQFZW5TdHIIBQ0kdDAyODEyMDI4MTgwAl8xBBBhc3NldENvbnRyYWN0U3RyCAUNJHQwMjgxMjAyODE4MAJfMgQNYXNzZXRDb250cmFjdAkBB0FkZHJlc3MBCQDZBAEFEGFzc2V0Q29udHJhY3RTdHIEB2VuYWJsZWQDCQAAAgUFZW5TdHICB0VOQUJMRUQGBwQMYmFja2luZ1JhdGlvCQENdHJ5R2V0SW50ZWdlcgICECVzX19iYWNraW5nUmF0aW8FDWFzc2V0Q29udHJhY3QEEGxpcXVpZGF0aW9uUmF0aW8JAQ10cnlHZXRJbnRlZ2VyAgIUJXNfX2xpcXVpZGF0aW9uUmF0aW8FDWFzc2V0Q29udHJhY3QEEG9yYWNsZUFkZHJlc3NTdHIJAQx0cnlHZXRTdHJpbmcCAhElc19fb3JhY2xlQWRkcmVzcwUNYXNzZXRDb250cmFjdAQNb3JhY2xlQWRkcmVzcwkBB0FkZHJlc3MBCQDZBAEFEG9yYWNsZUFkZHJlc3NTdHIEBnRpY2tlcgkBDHRyeUdldFN0cmluZwICCiVzX190aWNrZXIFDWFzc2V0Q29udHJhY3QED2Vhc3RNaW50ZWRMaW1pdAkBDXRyeUdldEludGVnZXICAhMlc19fZWFzdE1pbnRlZExpbWl0BQ1hc3NldENvbnRyYWN0BAVwcmljZQkBDXRyeUdldEludGVnZXICCQCsAgICDSVzJXNfX3ByaWNlX18FBnRpY2tlcgUNb3JhY2xlQWRkcmVzcwkAugkCCQDMCAIJAKUDAQUHZW5hYmxlZAkAzAgCCQCkAwEFDGJhY2tpbmdSYXRpbwkAzAgCCQCkAwEFEGxpcXVpZGF0aW9uUmF0aW8JAMwIAgkApAMBBQ9lYXN0TWludGVkTGltaXQJAMwIAgkApAMBBQVwcmljZQUDbmlsAgEsARJnZXRFYXN0TGlxdWlkYXRpb24BBnBhcmFtcwQJcGFyYW1zQXJyCQC1CQIFBnBhcmFtcwIBLAoBAWYCBWFjY3VtBG5leHQJAM0IAgUFYWNjdW0JAKwCAgkArAICBQRuZXh0AgEsCQEQZ2V0RWFzdEFzc2V0RGF0YQEFBG5leHQEA3JlcwoAAiRsBQlwYXJhbXNBcnIKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBAWYCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoECmFzc2V0c0RhdGEJALsJAgUDcmVzAgE7BBVjdW11bGF0aXZlRmVlRnJhY3Rpb24JAQ10cnlHZXRJbnRlZ2VyAgIZJXNfX2N1bXVsYXRpdmVGZWVGcmFjdGlvbgUKZWFzdF9wcm94eQQGY3VyclRzCQBpAggFCWxhc3RCbG9jawl0aW1lc3RhbXAA6AcEE2ZyYWN0aW9uTGFzdFVwZGF0ZWQJARR0cnlHZXRJbnRlZ2VyV2l0aERlZgMCFyVzX19mcmFjdGlvbkxhc3RVcGRhdGVkBQplYXN0X3Byb3h5BQZjdXJyVHMEDmNvb3JkaW5hdG9yU3RyCQEMdHJ5R2V0U3RyaW5nAgIWJXNfX2Nvb3JkaW5hdG9yQWRkcmVzcwUKZWFzdF9wcm94eQQLY29vcmRpbmF0b3IJAQdBZGRyZXNzAQkA2QQBBQ5jb29yZGluYXRvclN0cgQHc3RhYkZlZQkBFHRyeUdldEludGVnZXJXaXRoRGVmAwIQJXNfX3N0YWJpbGl0eUZlZQULY29vcmRpbmF0b3IAgMivoCUECGxpcUJvbnVzCQENdHJ5R2V0SW50ZWdlcgICFCVzX19saXF1aWRhdGlvbkJvbnVzBQtjb29yZGluYXRvcgQKY29tbW9uRGF0YQkAuQkCCQDMCAIJAKQDAQUVY3VtdWxhdGl2ZUZlZUZyYWN0aW9uCQDMCAIJAKQDAQUGY3VyclRzCQDMCAIJAKQDAQUTZnJhY3Rpb25MYXN0VXBkYXRlZAkAzAgCCQCkAwEFB3N0YWJGZWUJAMwIAgkApAMBBQhsaXFCb251cwUDbmlsAgEsCQCsAgIJAKwCAgUKY29tbW9uRGF0YQIBfAUKYXNzZXRzRGF0YQEBaQEEdGVzdAEBcwQBcgkBCnRyeUdldEJvb2wCAi5kZXByZWNhdGVkXzNQMjg2VGtUSEFSdHJKenhVaFBvSFhhcmR2dXRDMzdhOXJNBQ1zd29wZmlfb3JhY2xlCQACAQkApQMBBQFyALChMek=", "height": 784042, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let configStr = valueOrElse(getString(this, "configAddress"), "3PMoEibdLeWqcURQ8351XhaWwyacDc7G4e5")
5+
6+let CONFIG_ADDRESS = if ((configStr == ""))
7+ then this
8+ else Address(fromBase58String(configStr))
9+
10+let rex = valueOrElse(getString(CONFIG_ADDRESS, "AGGREGATOR_CONTRACT"), "3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU")
11+
12+let pl_proxy = valueOrElse(getString(CONFIG_ADDRESS, "LEND_PROXY_CONTRACT"), "3PJESVDTHRv8i83XbmHrRGQhDc5rgR3azQs")
13+
14+let orcl = valueOrElse(getString(CONFIG_ADDRESS, "oracleAddress"), "3P8d1E1BLKoD52y3bQJ1bDTd2TD1gpaLn9t")
15+
16+let wx_swap_str = valueOrElse(getString(CONFIG_ADDRESS, "WX_SWAPPER"), "3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93")
17+
18+let wx_swap = Address(fromBase58String(wx_swap_str))
19+
20+let pzShutdownAddress = Address(fromBase58String(valueOrElse(getString(CONFIG_ADDRESS, "shutdownAddress"), "3PEpv9hRFWEEBU22WRnLsw1bH4YGtcU728o")))
21+
22+let pzRangeMasterStr = valueOrElse(getString(CONFIG_ADDRESS, "poolsHubAddress"), "3P5RGYyCnELF8JTPxgX54dBGzwkQMKUJ5H7")
23+
24+let pzRangeMaster = Address(fromBase58String(pzRangeMasterStr))
25+
26+let swopfi_oracle_str = valueOrElse(getString("swopfi_oracle"), "3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom")
27+
28+let swopfi_oracle = Address(fromBase58String(swopfi_oracle_str))
29+
30+let wx_factory_str = valueOrElse(getString("wx_factory"), "3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv")
31+
32+let wx_factory = Address(fromBase58String(wx_factory_str))
33+
34+let east_proxy_str = valueOrElse(getString("east_proxy"), "3PMtGnf3LXiEG6isDQLq1xMDKUqjQGqNHLb")
35+
36+let east_proxy = Address(fromBase58String(east_proxy_str))
37+
38+let east_coordinator = valueOrElse(getString("east_coordinator"), "3PJ5CVRqW15nnkKNHJMzT3pPTtDJf71rGxK")
39+
40+let tsn_swapper = valueOrElse(getString(CONFIG_ADDRESS, "TSN_CONTRACT"), "3PKz5jnJLohF2GjShQ7bG5H4BebdoA98zZ2")
41+
42+let tsn_swapper_addr = Address(fromBase58String(tsn_swapper))
43+
44+let K_am_as_id = "%s__amountAsset"
45+
46+let K_pr_as_id = "%s__priceAsset"
47+
48+let K_amp = "%s__amp"
49+
50+let K_share = "%s%s__shareAssetBalance__YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7"
51+
52+let K_staked = "%s%s__stakedBalance__WAVES"
53+
54+let K_factoryContract = "%s__factoryContract"
55+
56+let K_wxShutDown = "%s__shutdown"
57+
58+let K_a_as_id = "A_asset_id"
59+
60+let K_b_as_id = "B_asset_id"
61+
62+let K_a_as_bal = "A_asset_balance"
63+
64+let K_b_as_bal = "B_asset_balance"
65+
66+let K_fee = "commission"
67+
68+let K_swopfi_active = "active"
69+
70+let K_swopfi_global_active = "active_all_contracts"
71+
72+let K_asset_ids = "static_tokenIds"
73+
74+let K_fee_puz = "static_fee"
75+
76+let K_feeToken = "static_feeToken"
77+
78+let K_global_poolToken_id = "static_poolToken_idStr"
79+
80+let K_global_poolToken_id_binary = "global_poolToken_id"
81+
82+let K_global_poolToken_amount = "global_poolToken_amount"
83+
84+let K_static_KMult = "static_KMult"
85+
86+let K_pz_ranged_pools = "global_pools"
87+
88+let K_tmp_reblanceAssetIds = "tmp_rebalanceAssetIds"
89+
90+let K_rebalance_inProgress = "rebalance_inProgress"
91+
92+let K_rebalance_stepsDone = "rebalance_stepsDone"
93+
94+let K_rebalance_stepsAmount = "rebalance_stepsAmount"
95+
96+let K_rebalance_assetDeltas = "rebalance_assetDeltas"
97+
98+let K_rebalance_attachedPayment = "rebalance_attachedPayment_"
99+
100+let k_fee = "k_fee"
101+
102+let k_rebate = "k_rebate"
103+
104+let k_feeToStakersPercent = "k_feeToStakersPercent"
105+
106+let k_excessBalance = "k_excessBalance"
107+
108+let k_freeBalance = "k_freeBalance"
109+
110+let k_maxSpotUtilization = "k_maxSpotUtilization"
111+
112+let k_totalSupply = "k_totalSupply"
113+
114+let k_rate = "k_rate"
115+
116+let k_bsAstR = "k_bsAstR"
117+
118+let k_bsAstW = "k_bsAstW"
119+
120+let k_qtAstR = "k_qtAstR"
121+
122+let k_qtAstW = "k_qtAstW"
123+
124+let k_maxPriceImpact = "k_maxPriceImpact"
125+
126+let k_maxPriceSpread = "k_maxPriceSpread"
127+
128+let k_totalPositionSize = "k_totalPositionSize"
129+
130+let k_baseOracle = "k_baseOracle"
131+
132+let k_maxOracleDelay = "k_maxOracleDelay"
133+
134+let k_storage = "STORAGE"
135+
136+let k_assets = "ASSETS"
137+
138+let k_status = "STATUS"
139+
140+let k_paused = "PAUSED"
141+
142+let k_asset_balances = "ASSET_BALANCES"
143+
144+let k_asset_weights = "ASSET_WEIGHTS"
145+
146+let k_lp_fee = "LP_FEE"
147+
148+let k_protocol_fee = "PROTOCOL_FEE"
149+
150+let k_precision = "PRECISION"
151+
152+let k_sigma_fee_per_lp = "SIGMA_FEE_PER_LP"
153+
154+let k_user_sigma_fee_per_lp = "USER_SIGMA_FEE_PER_LP"
155+
156+let k_user_lp = "USER_LP"
157+
158+let k_total_lp = "TOTAL_LP"
159+
160+let k_user_profits = "USER_PROFITS"
161+
162+let k_reward_balances = "REWARD_BALANCES"
163+
164+func get_domain (poolAddress) = match poolAddress {
165+ case _ =>
166+ if (("3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH" == $match0))
167+ then "1"
168+ else "0"
169+}
170+
171+
172+func k_plToken (asset_id,domain) = ((("setup_pl_" + asset_id) + "_") + domain)
173+
174+
175+func k_total_supplied (asset_id) = ("total_supplied_" + asset_id)
176+
177+
178+func k_sRate (asset_id) = (asset_id + "_sRate")
179+
180+
181+func k_total_borrowed (asset_id) = ("total_borrowed_" + asset_id)
182+
183+
184+func k_bRate (asset_id) = (asset_id + "_bRate")
185+
186+
187+func k_maxSupply (asset_id) = ("setup_maxSupply_" + asset_id)
188+
189+
190+let k_lastRateHeight = "lastRateHeight"
191+
192+func getPuzBalanceKey (assetId) = (("global_" + assetId) + "_balance")
193+
194+
195+func getPuzFactBalanceKey (assetId) = (("global_" + assetId) + "_factBalance")
196+
197+
198+func getPuzWeightKey (assetId) = (("static_" + assetId) + "_weight")
199+
200+
201+func getBPAK (address) = (address + "_staticAssetsIds")
202+
203+
204+func tryGetString (key,address) = match getString(address, key) {
205+ case b: String =>
206+ b
207+ case _ =>
208+ ""
209+}
210+
211+
212+func tryGetStringWithDef (key,address,def) = match getString(address, key) {
213+ case b: String =>
214+ b
215+ case _ =>
216+ def
217+}
218+
219+
220+func tryGetBool (key,address) = match getBoolean(address, key) {
221+ case b: Boolean =>
222+ b
223+ case _ =>
224+ false
225+}
226+
227+
228+func tryGetBoolWithDef (key,address,def) = match getBoolean(address, key) {
229+ case b: Boolean =>
230+ b
231+ case _ =>
232+ def
233+}
234+
235+
236+func tryGetInteger (key,address) = match getInteger(address, key) {
237+ case b: Int =>
238+ b
239+ case _ =>
240+ 0
241+}
242+
243+
244+func tryGetIntegerAsString (key,address) = match getInteger(address, key) {
245+ case b: Int =>
246+ toString(b)
247+ case _ =>
248+ "None"
249+}
250+
251+
252+func tryGetIntegerWithDef (key,address,def) = match getInteger(address, key) {
253+ case b: Int =>
254+ b
255+ case _ =>
256+ def
257+}
258+
259+
260+func getAssetString (assetId) = match assetId {
261+ case b: ByteVector =>
262+ toBase58String(b)
263+ case _ =>
264+ "WAVES"
265+}
266+
267+
268+func getWxDefaultFees () = {
269+ let poolFee = tryGetIntegerWithDef("%s__poolFee", wx_swap, 200000)
270+ let protocolFee = tryGetIntegerWithDef("%s__protocolFee", wx_swap, 200000)
271+ $Tuple2(toString(poolFee), toString(protocolFee))
272+ }
273+
274+
275+func getWxPoolFees (address) = {
276+ let feesKey = ("%s%s__swapFee__" + address)
277+ let fees = tryGetString(feesKey, wx_factory)
278+ if ((fees == ""))
279+ then getWxDefaultFees()
280+ else {
281+ let splittedFees = split(fees, "__")
282+ $Tuple2(splittedFees[1], splittedFees[2])
283+ }
284+ }
285+
286+
287+func getAssetBalance (address,assetId) = {
288+ let a = assetBalance(address, assetId)
289+ a
290+ }
291+
292+
293+func getWavesBalance (address) = {
294+ let w = wavesBalance(address).available
295+ w
296+ }
297+
298+
299+func getBalance (result,assetId) = {
300+ let address = take(result, 35)
301+ let addr = Address(fromBase58String(address))
302+ let balance = if ((assetId == "WAVES"))
303+ then getWavesBalance(addr)
304+ else {
305+ let aId = fromBase58String(assetId)
306+ getAssetBalance(addr, aId)
307+ }
308+ let len = size(result)
309+ (((((address + drop(result, 35)) + assetId) + ":") + toString(balance)) + ",")
310+ }
311+
312+
313+func getAddressBalance (addr,assetId) = {
314+ let balance = if ((assetId == "WAVES"))
315+ then getWavesBalance(addr)
316+ else {
317+ let aId = fromBase58String(assetId)
318+ getAssetBalance(addr, aId)
319+ }
320+ balance
321+ }
322+
323+
324+func getAssetDecimals (assetIdStr) = {
325+ let decimals = if ((assetIdStr == "WAVES"))
326+ then 8
327+ else value(assetInfo(fromBase58String(assetIdStr))).decimals
328+ decimals
329+ }
330+
331+
332+func getWxData (address) = {
333+ let addr = Address(fromBase58String(address))
334+ let _wx_factory_str = tryGetStringWithDef("%s__factoryContract", addr, wx_factory_str)
335+ let _wx_factory = Address(fromBase58String(_wx_factory_str))
336+ let amountId = tryGetString(K_am_as_id, addr)
337+ let priceId = tryGetString(K_pr_as_id, addr)
338+ let indexAmount = valueOrErrorMessage(getInteger(_wx_factory, ("%s%s%s__mappings__baseAsset2internalId__" + amountId)), "wx map asset fail")
339+ let indexPrice = valueOrErrorMessage(getInteger(_wx_factory, ("%s%s%s__mappings__baseAsset2internalId__" + priceId)), "wx map asset fail")
340+ let poolConfig = split(valueOrErrorMessage(getString(_wx_factory, (((("%d%d%s__" + toString(indexAmount)) + "__") + toString(indexPrice)) + "__config")), "wx pool config fail"), "__")
341+ let poolStatusStr = poolConfig[2]
342+ let amp = tryGetString(K_amp, addr)
343+ let share = tryGetInteger(K_share, addr)
344+ let stake = tryGetInteger(K_staked, addr)
345+ let $t091689219 = getWxPoolFees(address)
346+ let poolFee = $t091689219._1
347+ let protocolFee = $t091689219._2
348+ let isGlobalShutdown = tryGetBool(K_wxShutDown, _wx_factory)
349+ let isGlobalShutdownStr = if (isGlobalShutdown)
350+ then "1"
351+ else "0"
352+ let isPoolSwapDisabled = tryGetBool((((("%d%d%s__" + toString(indexAmount)) + "__") + toString(indexPrice)) + "__swapDisabled"), _wx_factory)
353+ let isPoolSwapDisabledStr = if (isPoolSwapDisabled)
354+ then "1"
355+ else "0"
356+ $Tuple2(((amountId + ",") + priceId), ((((((((((((((amp + ",") + toString(share)) + ",") + toString(stake)) + ",") + poolFee) + ",") + protocolFee) + ",") + isGlobalShutdownStr) + ",") + poolStatusStr) + ",") + isPoolSwapDisabledStr))
357+ }
358+
359+
360+func getSwData (address) = {
361+ let addr = Address(fromBase58String(address))
362+ let A_id = tryGetString(K_a_as_id, addr)
363+ let B_id = tryGetString(K_b_as_id, addr)
364+ let A_balance = tryGetInteger(K_a_as_bal, addr)
365+ let B_balance = tryGetInteger(K_b_as_bal, addr)
366+ let fee = tryGetIntegerWithDef(K_fee, addr, 6000)
367+ let deprecated = tryGetBool(("deprecated_" + address), swopfi_oracle)
368+ let active = tryGetBoolWithDef(K_swopfi_active, addr, true)
369+ let global_active = tryGetBoolWithDef(K_swopfi_global_active, swopfi_oracle, true)
370+ let activeStr = if (active)
371+ then "1"
372+ else "0"
373+ let globalActiveStr = if (global_active)
374+ then "1"
375+ else "0"
376+ ((((((((((((((A_id + ":") + toString(A_balance)) + ",") + B_id) + ":") + toString(B_balance)) + ",") + toString(fee)) + ",") + toString(deprecated)) + ",") + activeStr) + ",") + globalActiveStr)
377+ }
378+
379+
380+func getPzRebalanceData (address) = {
381+ let addr = Address(fromBase58String(address))
382+ let tmpAssetsStr = valueOrElse(getString(addr, K_tmp_reblanceAssetIds), "")
383+ let inProgress = valueOrElse(getBoolean(addr, K_rebalance_inProgress), false)
384+ let stepsDone = valueOrElse(getInteger(addr, K_rebalance_stepsDone), 0)
385+ let stepsAmount = valueOrElse(getInteger(addr, K_rebalance_stepsAmount), 0)
386+ let assetDeltas = valueOrElse(getString(addr, K_rebalance_assetDeltas), "")
387+ let tmpAssets = split(tmpAssetsStr, ",")
388+ func collectPayments (accum,assetId) = {
389+ let key = (K_rebalance_attachedPayment + assetId)
390+ let val = tryGetInteger(key, addr)
391+ if ((val != 0))
392+ then (accum ++ [((key + "*") + toString(val))])
393+ else accum
394+ }
395+
396+ let rebalancePayments = {
397+ let $l = tmpAssets
398+ let $s = size($l)
399+ let $acc0 = nil
400+ func $f0_1 ($a,$i) = if (($i >= $s))
401+ then $a
402+ else collectPayments($a, $l[$i])
403+
404+ func $f0_2 ($a,$i) = if (($i >= $s))
405+ then $a
406+ else throw("List size exceeds 10")
407+
408+ $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)
409+ }
410+ let rebalancePaymentsStr = makeString(rebalancePayments, ",")
411+ ((((((((((tmpAssetsStr + ";") + toString(inProgress)) + ";") + toString(stepsDone)) + ";") + toString(stepsAmount)) + ";") + assetDeltas) + ";") + rebalancePaymentsStr)
412+ }
413+
414+
415+func collectPuzAssetsData (result,assetId) = {
416+ let len = size(result)
417+ let address = result[(len - 1)]
418+ let addr = Address(fromBase58String(address))
419+ let balanceKey = getPuzBalanceKey(assetId)
420+ let factBalanceKey = getPuzFactBalanceKey(assetId)
421+ let weightKey = getPuzWeightKey(assetId)
422+ let weight = tryGetInteger(weightKey, addr)
423+ let realBalance = getAddressBalance(addr, assetId)
424+ let maxSelloff = tryGetIntegerAsString((("static_" + assetId) + "_maxSelloff"), addr)
425+ let assetData = tryGetString(("globalParams_" + assetId), addr)
426+ let $t01230112935 = if ((assetData == ""))
427+ then {
428+ let _balance = toString(tryGetInteger(balanceKey, addr))
429+ let _factBalance = toString(tryGetInteger(factBalanceKey, addr))
430+ let _currSelloff = tryGetIntegerAsString((("global_" + assetId) + "_selloff"), addr)
431+ $Tuple3(_balance, _factBalance, _currSelloff)
432+ }
433+ else {
434+ let _assetData = split(assetData, "__")
435+ let _balance = _assetData[0]
436+ let _factBalance = _assetData[1]
437+ let _currSelloff = _assetData[5]
438+ $Tuple3(_balance, _factBalance, _currSelloff)
439+ }
440+ let balance = $t01230112935._1
441+ let factBalance = $t01230112935._2
442+ let currSelloff = $t01230112935._3
443+ let res = ((((((((((((assetId + ",") + balance) + ",") + toString(weight)) + ",") + toString(realBalance)) + ",") + factBalance) + ",") + currSelloff) + ",") + maxSelloff)
444+res :: result
445+ }
446+
447+
448+func isRangedPool (address) = {
449+ func check (acc,next) = {
450+ let key = if ((2 > next))
451+ then "global_pools"
452+ else ("global_pools_" + toString(next))
453+ let rangedPools = tryGetString(key, pzRangeMaster)
454+ let isRanged = (indexOf(rangedPools, address) != unit)
455+ if (isRanged)
456+ then true
457+ else acc
458+ }
459+
460+ let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14]
461+ let fff = {
462+ let $l = arr
463+ let $s = size($l)
464+ let $acc0 = false
465+ func $f0_1 ($a,$i) = if (($i >= $s))
466+ then $a
467+ else check($a, $l[$i])
468+
469+ func $f0_2 ($a,$i) = if (($i >= $s))
470+ then $a
471+ else throw("List size exceeds 14")
472+
473+ $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($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14)
474+ }
475+ fff
476+ }
477+
478+
479+func getPzData (address) = {
480+ let addr = Address(fromBase58String(address))
481+ let fee1 = tryGetInteger(K_fee_puz, addr)
482+ let feeToken = tryGetString(K_feeToken, addr)
483+ let assetsStr1 = tryGetString(K_asset_ids, addr)
484+ let $t01377713926 = if ((assetsStr1 == ""))
485+ then $Tuple2(tryGetString(getBPAK(address), this), 200)
486+ else $Tuple2(assetsStr1, fee1)
487+ let assetsStr = $t01377713926._1
488+ let fee = $t01377713926._2
489+ let assets = split(assetsStr, ",")
490+ let assetsData = {
491+ let $l = assets
492+ let $s = size($l)
493+ let $acc0 = [address]
494+ func $f0_1 ($a,$i) = if (($i >= $s))
495+ then $a
496+ else collectPuzAssetsData($a, $l[$i])
497+
498+ func $f0_2 ($a,$i) = if (($i >= $s))
499+ then $a
500+ else throw("List size exceeds 10")
501+
502+ $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)
503+ }
504+ let len = size(assetsData)
505+ let assetsArr = removeByIndex(assetsData, (len - 1))
506+ let assetsDataStr = makeString_2C(assetsArr, ";")
507+ let poolTokenIdStr = tryGetString(K_global_poolToken_id, addr)
508+ let poolTokenId = if ((poolTokenIdStr != ""))
509+ then poolTokenIdStr
510+ else {
511+ let poolTokenIdBinary = valueOrElse(getBinary(addr, K_global_poolToken_id_binary), fromBase58String("bubi"))
512+ getAssetString(poolTokenIdBinary)
513+ }
514+ let poolTokenAmount = tryGetInteger(K_global_poolToken_amount, addr)
515+ let kMult = tryGetIntegerWithDef(K_static_KMult, addr, 1)
516+ let pausedGlobal = tryGetBool("is_shutdown", pzShutdownAddress)
517+ let pausedGlobalStr = if (pausedGlobal)
518+ then "1"
519+ else "0"
520+ let paused = false
521+ let pausedStr = if (paused)
522+ then "1"
523+ else "0"
524+ let isRanged = isRangedPool(address)
525+ let poolMode = if (isRanged)
526+ then "pz_ranged"
527+ else "regular"
528+ $Tuple9(fee, feeToken, poolTokenId, poolTokenAmount, kMult, assetsDataStr, pausedGlobalStr, pausedStr, poolMode)
529+ }
530+
531+
532+func getTsnData (address,asset_id) = {
533+ let addr = Address(fromBase58String(address))
534+ let bsAstR = tryGetInteger(k_bsAstR, addr)
535+ let bsAstW = tryGetInteger(k_bsAstW, addr)
536+ let qtAstR = tryGetInteger(k_qtAstR, addr)
537+ let qtAstW = tryGetInteger(k_qtAstW, addr)
538+ let maxPriceImpact = tryGetInteger(k_maxPriceImpact, addr)
539+ let maxPriceSpread = tryGetInteger(k_maxPriceSpread, addr)
540+ let totalPositionSize = tryGetInteger(k_totalPositionSize, addr)
541+ let maxOracleDelay = tryGetInteger(k_maxOracleDelay, addr)
542+ let oracleString = tryGetString(k_baseOracle, addr)
543+ let arr = split(oracleString, ",")
544+ let $t01584515911 = $Tuple3(arr[0], arr[1], arr[2])
545+ let oracleAddress = $t01584515911._1
546+ let priceKey = $t01584515911._2
547+ let blockKey = $t01584515911._3
548+ let oracleAddr = Address(fromBase58String(oracleAddress))
549+ let oraclePrice = tryGetInteger(priceKey, oracleAddr)
550+ let curHeight = height
551+ let lastHeight = if ((blockKey != ""))
552+ then tryGetInteger(blockKey, oracleAddr)
553+ else curHeight
554+ let vault = tryGetString(("k_asset_vault_" + asset_id), tsn_swapper_addr)
555+ let vault_addr = Address(fromBase58String(vault))
556+ let excessBalance = tryGetInteger(k_excessBalance, vault_addr)
557+ let freeBalance = tryGetInteger(k_freeBalance, vault_addr)
558+ let maxSpotUtilization = tryGetInteger(k_maxSpotUtilization, vault_addr)
559+ let totalSupply = tryGetInteger(k_totalSupply, vault_addr)
560+ let rate = tryGetInteger(k_rate, vault_addr)
561+ $Tuple16(bsAstR, bsAstW, qtAstR, qtAstW, totalPositionSize, maxPriceImpact, maxPriceSpread, oraclePrice, excessBalance, freeBalance, maxSpotUtilization, totalSupply, rate, curHeight, lastHeight, maxOracleDelay)
562+ }
563+
564+
565+func getPrice (assetId) = {
566+ let price = tryGetInteger((assetId + "_twap5B"), Address(fromBase58String(orcl)))
567+ price
568+ }
569+
570+
571+func getPLData (pool_address,asset_id) = {
572+ let domain = get_domain(pool_address)
573+ let poolAdr = Address(fromBase58String(pool_address))
574+ let plTokenId = tryGetString(k_plToken(asset_id, domain), Address(fromBase58String(pl_proxy)))
575+ let sRate = tryGetInteger(k_sRate(asset_id), poolAdr)
576+ let bRate = tryGetInteger(k_bRate(asset_id), poolAdr)
577+ let totalSupplied = tryGetInteger(k_total_supplied(asset_id), poolAdr)
578+ let totalBorrowed = tryGetInteger(k_total_borrowed(asset_id), poolAdr)
579+ let maxSupply = tryGetString(k_maxSupply(asset_id), poolAdr)
580+ let lastHeight = tryGetInteger(k_lastRateHeight, poolAdr)
581+ let curHeight = height
582+ let price = getPrice(asset_id)
583+ let decimals = getAssetDecimals(asset_id)
584+ let active = tryGetBool("setup_active", poolAdr)
585+ let pausedStr = if (active)
586+ then "0"
587+ else "1"
588+ $Tuple12(asset_id, plTokenId, sRate, bRate, totalSupplied, totalBorrowed, maxSupply, lastHeight, curHeight, price, decimals, pausedStr)
589+ }
590+
591+
592+func test_loop (result,ele) = ele :: result
593+
594+
595+func getBalancesStr (assetsStr,address) = {
596+ let assets = split_4C(assetsStr, ",")
597+ let res = {
598+ let $l = assets
599+ let $s = size($l)
600+ let $acc0 = address
601+ func $f0_1 ($a,$i) = if (($i >= $s))
602+ then $a
603+ else getBalance($a, $l[$i])
604+
605+ func $f0_2 ($a,$i) = if (($i >= $s))
606+ then $a
607+ else throw("List size exceeds 2")
608+
609+ $f0_2($f0_1($f0_1($acc0, 0), 1), 2)
610+ }
611+ let balances = drop(res, 35)
612+ let bals = dropRight(balances, 1)
613+ bals
614+ }
615+
616+
617+func processWX (result,address) = {
618+ let $t01835018393 = getWxData(address)
619+ let assetsStr = $t01835018393._1
620+ let datas = $t01835018393._2
621+ let assetsString = getBalancesStr(assetsStr, address)
622+ let resItem = ((((address + "/") + assetsString) + "/") + datas)
623+resItem :: result
624+ }
625+
626+
627+func processSW (result,address) = {
628+ let assetsString = getSwData(address)
629+ let resItem = ((address + "/") + assetsString)
630+resItem :: result
631+ }
632+
633+
634+func processPZ (result,address) = {
635+ let $t01878018903 = getPzData(address)
636+ let fee = $t01878018903._1
637+ let feeToken = $t01878018903._2
638+ let poolTokenId = $t01878018903._3
639+ let poolTokenAmount = $t01878018903._4
640+ let kMult = $t01878018903._5
641+ let assetsString = $t01878018903._6
642+ let pausedGlobal = $t01878018903._7
643+ let paused = $t01878018903._8
644+ let poolMode = $t01878018903._9
645+ let rebaData = getPzRebalanceData(address)
646+ let resItem = ((((((((((((((((((((address + "/") + toString(fee)) + "/") + feeToken) + "/") + assetsString) + "/") + rebaData) + "/") + poolTokenId) + "/") + toString(poolTokenAmount)) + "/") + toString(kMult)) + "/") + pausedGlobal) + "/") + paused) + "/") + poolMode)
647+resItem :: result
648+ }
649+
650+
651+func processTSN (result,label) = {
652+ let arr = split(label, "_")
653+ let $t01931019352 = $Tuple2(arr[0], arr[1])
654+ let address = $t01931019352._1
655+ let asset_id = $t01931019352._2
656+ let $t01935719595 = getTsnData(address, asset_id)
657+ let bsAstR = $t01935719595._1
658+ let bsAstW = $t01935719595._2
659+ let qtAstR = $t01935719595._3
660+ let qtAstW = $t01935719595._4
661+ let totalPositionSize = $t01935719595._5
662+ let maxPriceImpact = $t01935719595._6
663+ let maxPriceSpread = $t01935719595._7
664+ let oraclePrice = $t01935719595._8
665+ let excessBalance = $t01935719595._9
666+ let freeBalance = $t01935719595._10
667+ let maxSpotUtilization = $t01935719595._11
668+ let totalSupply = $t01935719595._12
669+ let rate = $t01935719595._13
670+ let curHeight = $t01935719595._14
671+ let lastHeight = $t01935719595._15
672+ let maxOracleDelay = $t01935719595._16
673+ let asset_decimals = if ((asset_id == "WAVES"))
674+ then 8
675+ else valueOrErrorMessage(assetInfo(fromBase58String(asset_id)), ("Ivalid asset " + asset_id)).decimals
676+ 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))
677+resItem :: result
678+ }
679+
680+
681+func processPL (result,label) = {
682+ let arr = split(label, "-")
683+ let $t02047320520 = $Tuple2(arr[0], arr[1])
684+ let pool_address = $t02047320520._1
685+ let asset_id = $t02047320520._2
686+ let $t02052520693 = getPLData(pool_address, asset_id)
687+ let asset_idd = $t02052520693._1
688+ let plTokenId = $t02052520693._2
689+ let sRate = $t02052520693._3
690+ let bRate = $t02052520693._4
691+ let totalSupplied = $t02052520693._5
692+ let totalBorrowed = $t02052520693._6
693+ let maxSupply = $t02052520693._7
694+ let lastHeight = $t02052520693._8
695+ let curHeight = $t02052520693._9
696+ let price = $t02052520693._10
697+ let decimals = $t02052520693._11
698+ let pausedStr = $t02052520693._12
699+ let resItem = ((((((((((((((((((((((((label + ",") + asset_idd) + ",") + plTokenId) + ",") + toString(sRate)) + ",") + toString(bRate)) + ",") + toString(totalSupplied)) + ",") + toString(totalBorrowed)) + ",") + maxSupply) + ",") + toString(lastHeight)) + ",") + toString(curHeight)) + ",") + toString(price)) + ",") + toString(decimals)) + ",") + pausedStr)
700+resItem :: result
701+ }
702+
703+
704+func getWX (params) = {
705+ let pools = split_51C(params, ",")
706+ let resArr = {
707+ let $l = pools
708+ let $s = size($l)
709+ let $acc0 = nil
710+ func $f0_1 ($a,$i) = if (($i >= $s))
711+ then $a
712+ else processWX($a, $l[$i])
713+
714+ func $f0_2 ($a,$i) = if (($i >= $s))
715+ then $a
716+ else throw("List size exceeds 120")
717+
718+ $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)
719+ }
720+ let result = makeString_11C(resArr, "|")
721+ result
722+ }
723+
724+
725+func getSW (params) = {
726+ let pools = split_4C(params, ",")
727+ let resArr = {
728+ let $l = pools
729+ let $s = size($l)
730+ let $acc0 = nil
731+ func $f0_1 ($a,$i) = if (($i >= $s))
732+ then $a
733+ else processSW($a, $l[$i])
734+
735+ func $f0_2 ($a,$i) = if (($i >= $s))
736+ then $a
737+ else throw("List size exceeds 100")
738+
739+ $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)
740+ }
741+ let result = makeString_11C(resArr, "|")
742+ result
743+ }
744+
745+
746+func getPZ (params) = {
747+ let pools = split_4C(params, ",")
748+ let resArr = {
749+ let $l = pools
750+ let $s = size($l)
751+ let $acc0 = nil
752+ func $f0_1 ($a,$i) = if (($i >= $s))
753+ then $a
754+ else processPZ($a, $l[$i])
755+
756+ func $f0_2 ($a,$i) = if (($i >= $s))
757+ then $a
758+ else throw("List size exceeds 100")
759+
760+ $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)
761+ }
762+ let result = makeString_11C(resArr, "|")
763+ result
764+ }
765+
766+
767+func getTSN (params) = {
768+ let vaults_labels = split(params, ",")
769+ let resArr = {
770+ let $l = vaults_labels
771+ let $s = size($l)
772+ let $acc0 = nil
773+ func $f0_1 ($a,$i) = if (($i >= $s))
774+ then $a
775+ else processTSN($a, $l[$i])
776+
777+ func $f0_2 ($a,$i) = if (($i >= $s))
778+ then $a
779+ else throw("List size exceeds 10")
780+
781+ $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)
782+ }
783+ let result = makeString_2C(resArr, "|")
784+ let fee = tryGetInteger(k_fee, tsn_swapper_addr)
785+ let rebate = tryGetInteger(k_rebate, tsn_swapper_addr)
786+ let feeToStakersPercent = tryGetInteger(k_feeToStakersPercent, tsn_swapper_addr)
787+ ((((((toString(fee) + ",") + toString(rebate)) + ",") + toString(feeToStakersPercent)) + "/") + result)
788+ }
789+
790+
791+func getPL (params) = {
792+ let pools = split(params, ",")
793+ let resArr = {
794+ let $l = pools
795+ let $s = size($l)
796+ let $acc0 = nil
797+ func $f0_1 ($a,$i) = if (($i >= $s))
798+ then $a
799+ else processPL($a, $l[$i])
800+
801+ func $f0_2 ($a,$i) = if (($i >= $s))
802+ then $a
803+ else throw("List size exceeds 10")
804+
805+ $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)
806+ }
807+ let result = makeString_2C(resArr, "|")
808+ result
809+ }
810+
811+
812+func loadPepeAssets (pepe_market) = {
813+ let assets = tryGetString(k_assets, pepe_market)
814+ split_4C(assets, "__")
815+ }
816+
817+
818+func loadPepeAssetBalances (pepe_market) = {
819+ func foldFunc (acc,elem) = {
820+ let balance = parseIntValue(elem)
821+ $Tuple2((acc._1 :+ elem), (acc._2 + balance))
822+ }
823+
824+ let assetBalances = tryGetString(k_asset_balances, pepe_market)
825+ let $l = split_51C(assetBalances, "__")
826+ let $s = size($l)
827+ let $acc0 = $Tuple2(nil, 0)
828+ func $f0_1 ($a,$i) = if (($i >= $s))
829+ then $a
830+ else foldFunc($a, $l[$i])
831+
832+ func $f0_2 ($a,$i) = if (($i >= $s))
833+ then $a
834+ else throw("List size exceeds 10")
835+
836+ $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)
837+ }
838+
839+
840+func loadPepeAssetWeights (pepe_market) = {
841+ func foldFunc (acc,elem) = {
842+ let weight = parseIntValue(elem)
843+ $Tuple2((acc._1 :+ elem), (acc._2 + weight))
844+ }
845+
846+ let assetWeights = tryGetString(k_asset_weights, pepe_market)
847+ let $l = split_4C(assetWeights, "__")
848+ let $s = size($l)
849+ let $acc0 = $Tuple2(nil, 0)
850+ func $f0_1 ($a,$i) = if (($i >= $s))
851+ then $a
852+ else foldFunc($a, $l[$i])
853+
854+ func $f0_2 ($a,$i) = if (($i >= $s))
855+ then $a
856+ else throw("List size exceeds 10")
857+
858+ $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)
859+ }
860+
861+
862+func loadPepeDecimals (assets) = {
863+ func getDecs (acc,item) = {
864+ let decimals = getAssetDecimals(item)
865+ (acc :+ toString(decimals))
866+ }
867+
868+ let $l = assets
869+ let $s = size($l)
870+ let $acc0 = nil
871+ func $f0_1 ($a,$i) = if (($i >= $s))
872+ then $a
873+ else getDecs($a, $l[$i])
874+
875+ func $f0_2 ($a,$i) = if (($i >= $s))
876+ then $a
877+ else throw("List size exceeds 11")
878+
879+ $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)
880+ }
881+
882+
883+func processPepe (result,pepe_market_str) = {
884+ let pepe_market = Address(fromBase58String(pepe_market_str))
885+ let storage = tryGetString(k_storage, pepe_market)
886+ let sarr = split_4C(storage, "__")
887+ let $t02505325256 = $Tuple8(sarr[0], (sarr[1] == "1"), sarr[2], sarr[3], sarr[4], sarr[5], sarr[6], sarr[7])
888+ let lpAssetId = $t02505325256._1
889+ let unlocked = $t02505325256._2
890+ let lpTotalSupply = $t02505325256._3
891+ let lpFeeRate = $t02505325256._4
892+ let protocolFeeRate = $t02505325256._5
893+ let maxAllocAmplifier = $t02505325256._6
894+ let weightAmplifier = $t02505325256._7
895+ let disbalanceCoeff = $t02505325256._8
896+ let precision = tryGetInteger(k_precision, pepe_market)
897+ let sigmaFeePerLp = tryGetString(k_sigma_fee_per_lp, pepe_market)
898+ let paused = tryGetBool(k_paused, pepe_market)
899+ let totalLp = tryGetInteger(k_total_lp, pepe_market)
900+ let rewardBalances = tryGetString(k_reward_balances, pepe_market)
901+ let lpDecimals = getAssetDecimals(lpAssetId)
902+ let assets = loadPepeAssets(pepe_market)
903+ let decimals_arr = loadPepeDecimals(assets)
904+ let $t02571125778 = loadPepeAssetWeights(pepe_market)
905+ let assetWeights = $t02571125778._1
906+ let sigmaWeight = $t02571125778._2
907+ let $t02578325866 = loadPepeAssetBalances(pepe_market)
908+ let prevAssetBalances = $t02578325866._1
909+ let prevAssetTotalSupply = $t02578325866._2
910+ let watchdog_address_str = tryGetString("WATCHDOG", pepe_market)
911+ let watchdog = Address(fromBase58String(watchdog_address_str))
912+ let watchdog_offset = tryGetInteger("WATCHDOG_OFFSET", pepe_market)
913+ let watchdog_height = tryGetInteger("WATCHDOG_HEIGHT", watchdog)
914+ let watchdog_paused_str = if ((height > (watchdog_height + watchdog_offset)))
915+ then "1"
916+ else "0"
917+ 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) + ",") + watchdog_paused_str)
918+ let assets_ids = makeString_11C(assets, ",")
919+ let assets_weights = makeString_11C(assetWeights, ",")
920+ let assets_balances = makeString_11C(prevAssetBalances, ",")
921+ let assets_decimals = makeString_11C(decimals_arr, ",")
922+ let res = ((((((((((main_str + "|") + assets_ids) + "|") + assets_weights) + "|") + assets_balances) + "|") + assets_decimals) + "|") + rewardBalances)
923+ (result :+ res)
924+ }
925+
926+
927+func getPepe (params) = {
928+ let addresses = split(params, ",")
929+ let resArr = {
930+ let $l = addresses
931+ let $s = size($l)
932+ let $acc0 = nil
933+ func $f0_1 ($a,$i) = if (($i >= $s))
934+ then $a
935+ else processPepe($a, $l[$i])
936+
937+ func $f0_2 ($a,$i) = if (($i >= $s))
938+ then $a
939+ else throw("List size exceeds 10")
940+
941+ $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)
942+ }
943+ let result = makeString_11C(resArr, ";")
944+ result
945+ }
946+
947+
948+func getCombine (params) = {
949+ let paramsArr = split(params, "**")
950+ let $t02771727799 = $Tuple3(paramsArr[0], paramsArr[1], paramsArr[2])
951+ let tsnParams = $t02771727799._1
952+ let plParams = $t02771727799._2
953+ let pepeParams = $t02771727799._3
954+ let tsnData = getTSN(tsnParams)
955+ let plData = getPL(plParams)
956+ let pepeData = getPepe(pepeParams)
957+ makeString_11C([tsnData, plData, pepeData], "**")
958+ }
959+
960+
961+func getEastAssetData (assetId) = {
962+ let params = tryGetString(("%s%s__asset__" + assetId), east_proxy)
963+ let paramsArr = split(params, "__")
964+ let $t02812028180 = $Tuple2(paramsArr[1], paramsArr[2])
965+ let enStr = $t02812028180._1
966+ let assetContractStr = $t02812028180._2
967+ let assetContract = Address(fromBase58String(assetContractStr))
968+ let enabled = if ((enStr == "ENABLED"))
969+ then true
970+ else false
971+ let backingRatio = tryGetInteger("%s__backingRatio", assetContract)
972+ let liquidationRatio = tryGetInteger("%s__liquidationRatio", assetContract)
973+ let oracleAddressStr = tryGetString("%s__oracleAddress", assetContract)
974+ let oracleAddress = Address(fromBase58String(oracleAddressStr))
975+ let ticker = tryGetString("%s__ticker", assetContract)
976+ let eastMintedLimit = tryGetInteger("%s__eastMintedLimit", assetContract)
977+ let price = tryGetInteger(("%s%s__price__" + ticker), oracleAddress)
978+ makeString_2C([toString(enabled), toString(backingRatio), toString(liquidationRatio), toString(eastMintedLimit), toString(price)], ",")
979+ }
980+
981+
982+func getEastLiquidation (params) = {
983+ let paramsArr = split(params, ",")
984+ func f (accum,next) = (accum :+ ((next + ",") + getEastAssetData(next)))
985+
986+ let res = {
987+ let $l = paramsArr
988+ let $s = size($l)
989+ let $acc0 = nil
990+ func $f0_1 ($a,$i) = if (($i >= $s))
991+ then $a
992+ else f($a, $l[$i])
993+
994+ func $f0_2 ($a,$i) = if (($i >= $s))
995+ then $a
996+ else throw("List size exceeds 10")
997+
998+ $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)
999+ }
1000+ let assetsData = makeString_11C(res, ";")
1001+ let cumulativeFeeFraction = tryGetInteger("%s__cumulativeFeeFraction", east_proxy)
1002+ let currTs = (lastBlock.timestamp / 1000)
1003+ let fractionLastUpdated = tryGetIntegerWithDef("%s__fractionLastUpdated", east_proxy, currTs)
1004+ let coordinatorStr = tryGetString("%s__coordinatorAddress", east_proxy)
1005+ let coordinator = Address(fromBase58String(coordinatorStr))
1006+ let stabFee = tryGetIntegerWithDef("%s__stabilityFee", coordinator, 10000000000)
1007+ let liqBonus = tryGetInteger("%s__liquidationBonus", coordinator)
1008+ let commonData = makeString([toString(cumulativeFeeFraction), toString(currTs), toString(fractionLastUpdated), toString(stabFee), toString(liqBonus)], ",")
1009+ ((commonData + "|") + assetsData)
1010+ }
1011+
1012+
1013+@Callable(i)
1014+func test (s) = {
1015+ let r = tryGetBool("deprecated_3P286TkTHARtrJzxUhPoHXardvutC37a9rM", swopfi_oracle)
1016+ throw(toString(r))
1017+ }
1018+
1019+

github/deemru/w8io
58.14 ms