tx · 2r3nHa2C2jT3bhxThg4LJXAuNgH9pF6Tm9D1748MSVc1

3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH:  -0.03500000 Waves

2023.04.19 12:38 [3606828] smart account 3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH > SELF 0.00000000 Waves

{ "type": 13, "id": "2r3nHa2C2jT3bhxThg4LJXAuNgH9pF6Tm9D1748MSVc1", "fee": 3500000, "feeAssetId": null, "timestamp": 1681897105145, "version": 2, "chainId": 87, "sender": "3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH", "senderPublicKey": "8DxbUxhy23djr6kUEE1Jzp7oVJXBsHNaATLRiABpkSde", "proofs": [ "5AHp7FWAEXcvFiuo413fyg6jHpyUSg58gmjaZdMaQd3gVDSA8MtXTBEtRdBzBLJ8VL6MLu5284AniP8gJM32Qkh9" ], "script": "base64:BgKKAQgCEgASBAoCCAESBAoCCAESABIDCgEIEgQKAggBEgQKAggBEgQKAggBEgASBgoECAgICBIGCgQICAgIEgQKAggIEgQKAggIEgMKAQQSAwoBCBIDCgEEEggKBgQIAQgICBIFCgMECAgSBgoEBAgECBIDCgEEEgQKAggEEgQKAggEEgMKAQQSAwoBBB4AEnJlc2VydmVGdW5kQWRkcmVzcwkBB0FkZHJlc3MBARoBVx7h+0Axa4Hm7EtWGwUsUaGTbt8JsTzSwQALcmVzZXJ2ZUZ1bmQAFAARYWdncmVnYXRvckFkZHJlc3MJAQdBZGRyZXNzAQEaAVedDKrGE1GpbsuA92N9wWR44u9yTagMutMACW9yYWNsZVN0cgIjM1BQWFZLak42blJNelhlZWdjWWhmaWljOTZwZDJjOThFa20AEXNodXRkb3duV2hpdGVsaXN0CQDMCAIBGgFX1+EjUY58q4ha1dcol3XYiHXTj64jBabhCQDMCAIBGgFXYw0DgaZ/W1TSHLnkKCrzp4A08Ni1jdVlCQDMCAIBGgFXs9WSVEkJmioQ+8b4nxB2q+8/D3KliRWMCQDMCAIBGgFX+Pr6AibAUYvsajtGM0nSHHGwdYv5pMqaCQDMCAIBGgFXq92qIvOYuR9F2CzUp+r5EmKviTZqUDtyCQDMCAIBGgFXMDkc0aRmGDt+f+PY3qL9uGeY/1dNESadBQNuaWwBFnZlcmlmeUxpcXVpZGF0b3JSaWdodHMBB2FkZHJlc3MJAQEhAQMDCQECIT0CBQdhZGRyZXNzCQEHQWRkcmVzcwEBGgFXd6rO0XhW6KmeXquV77/p4XFYdV4ymnGBCQECIT0CBQdhZGRyZXNzCQEHQWRkcmVzcwEBGgFX1+EjUY58q4ha1dcol3XYiHXTj64jBabhBwkBAiE9AgUHYWRkcmVzcwkBB0FkZHJlc3MBARoBV6vdqiLzmLkfRdgs1Kfq+RJir4k2alA7cgcBDGdldFJhdGVDdXJ2ZQEKYXNzZXRJZFN0cgQHJG1hdGNoMAUKYXNzZXRJZFN0cgMJAAACAiw5d2MzTFhOQTRURUJzWHlLdG9MRTltcmJERDdXTUhYdlhyQ2padmFiTEFzaQUHJG1hdGNoMAkAlgoEAICJegDA8PULAIDokiYAgMLXLwMJAAACAixIR2dhYlRxVVM4V3RWRlVKemZtclRETWdFY2NKdVpMQlBoRmdRRnh2bnNvVwUHJG1hdGNoMAkAlgoEAICJegDA8PULAIDokiYAgMLXLwMJAAACAiwzNE45WWNFRVRMV245M3FZUTY0RXNQMXg4OXRTcnVKVTQ0UnJFTVNYWEVQSgUHJG1hdGNoMAkAlgoEAICJegDA8PULAIDokiYAgMLXLwMJAAACAiw2WHRIanBYYnM5UlJKUDJTcjlHVXlWcXpBQ2NieTlUa1RoSFhualZDNUNESgUHJG1hdGNoMAkAlgoEAICJegDA8PULAIDokiYAgMLXLwMJAAACAixERzJ4RmtQZER3S1VvQmt6R0FoUXRMcFNHemZYTGlDWVBFemVLSDJBZDI0cAUHJG1hdGNoMAkAlgoEAICJegDA8PULAIDokiYAgMLXLwMJAAACAixBanNvNm5UVGpwdHUyVUhMeDZoZlNYVnRIRnRSQkpDa0tZZDVTQXlqN3pmNQUHJG1hdGNoMAkAlgoEAICJegCAtIkTAIDokiYAgKPDRwMJAAACAixIRUI4UWF3OXhyV3BXczh0SHNpQVRZR0JXREJ0UDJTN2tjUEFMck11NDNBUwUHJG1hdGNoMAkAlgoEAAAAgNrECQCA6JImAIC0iRMDCQAAAgIFV0FWRVMFByRtYXRjaDAJAJYKBACAiXoAgIenDgCA6JImAIDh6xcDCQAAAgIsQXRxdjU5RVl6akZHdWl0S1ZuTVJrNkg4RnVram9WM2t0UG9yYkV5czI1b24FByRtYXRjaDAJAJYKBAAAAIDaxAkAgOiSJgCAtIkTAwkAAAICLERTYmJoTHNTVGVEZzVMc2l1ZmsyQW5laDNEalZxSnVQcjJNOXVVMWd3eTVwBQckbWF0Y2gwCQCWCgQAAACA2sQJAIDokiYAgMLXLwMJAAACAiw4dDREUFdUd1B6cGF0SEE5QWtUeFdBQjQ3VEhuWXpCc0Rub1k3ZlFxYkc5MQUHJG1hdGNoMAkAlgoEAAAAgIenDgCA6JImAIC0iRMDCQAAAgIsQXQ4RDZORkZwaGVDYnZLVm5qVm9lTEw4NEVvOE5abjZvdk1hbnhmTGFGV0wFByRtYXRjaDAJAJYKBAAAAMDw9QsAgOiSJgCAtIkTAwkAAAICLDhMUVc4ZjdQNWQ1UFpNN0d0WkVCZ2FxUlBHU3pTM0RmUHVpWHJVUko0QUpTBQckbWF0Y2gwCQCWCgQAgIl6AICHpw4AgOiSJgCA4esXAwkAAAICLDQ3NGpUZVl4MnIyVmEzNTc5NHRDU2NBWFdKRzloVTJIY2d4ek1vd2FaVW51BQckbWF0Y2gwCQCWCgQAgIl6AICHpw4AgOiSJgCA4esXAwkAAAICLDVVWUJQcHE0V29VNW40TXdwRmtnSm5XM0ZxNEIxdTN1a3BLMzNpazRRZXJSBQckbWF0Y2gwCQCWCgQAgIl6AICHpw4AgOiSJgCA4esXAwkAAAICLDJ0aHNBQ3VIbXpETXVOZXpQTTMyd2c5YTNCd1V6QldEZVNLYWtnejNjdzIxBQckbWF0Y2gwCQCWCgQAgIl6AIC0iRMAgOiSJgCAwtcvAwkAAAICK1lpTmJvZkZ6QzE3akVISENNd3JSY3B5OU1ycmphYk1NTFp4ZzhnNXhtZjcFByRtYXRjaDAJAJYKBACAiXoAgIenDgCA6JImAIDokiYJAJYKBAAAAIDaxAkAgOiSJgCA6JImAAZTY2FsZTgAgMLXLwAHU2NhbGUxMACAyK+gJQAHU2NhbGUxNgkAaAIFBlNjYWxlOAUGU2NhbGU4AAlkYXlCbG9ja3MAoAsBCmxpSW50VG9TdHIBAmxpCgEBZgIFYWNjdW0EbmV4dAkArAICCQCsAgIFBWFjY3VtCQCkAwEFBG5leHQCASwKAAIkbAUCbGkKAAIkcwkAkAMBBQIkbAoABSRhY2MwAgAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBAWYCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDgJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAQ10cnlHZXRJbnRlZ2VyAQNrZXkEByRtYXRjaDAJAJoIAgUEdGhpcwUDa2V5AwkAAQIFByRtYXRjaDACA0ludAQBYgUHJG1hdGNoMAUBYgAAAQ10cnlHZXRCb29sZWFuAQNrZXkEByRtYXRjaDAJAJsIAgUEdGhpcwUDa2V5AwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAWIFByRtYXRjaDAFAWIHAQx0cnlHZXRTdHJpbmcBA2tleQQHJG1hdGNoMAkAnQgCBQR0aGlzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFiBQckbWF0Y2gwBQFiAgABDHRyeUdldEJpbmFyeQEDa2V5BAckbWF0Y2gwCQCcCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwBQFiAQABDmdldEFzc2V0U3RyaW5nAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAJANgEAQUBYgIFV0FWRVMBDWdldEFzc2V0Qnl0ZXMBCmFzc2V0SWRTdHIDCQAAAgUKYXNzZXRJZFN0cgIFV0FWRVMFBHVuaXQJANkEAQUKYXNzZXRJZFN0cgEKZ2V0QmFsYW5jZQEKYXNzZXRJZFN0cgMJAAACBQphc3NldElkU3RyAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQphc3NldElkU3RyAQ9nZXRNYXJrZXRBc3NldHMACQC1CQIJAQx0cnlHZXRTdHJpbmcBAgxzZXR1cF90b2tlbnMCASwBEmdldEFzc2V0c01heFN1cHBseQAEAXMJAQx0cnlHZXRTdHJpbmcBAg9zZXR1cF9tYXhzdXBwbHkDCQAAAgUBcwIACQDMCAIA////////////AQkAzAgCAP///////////wEJAMwIAgD///////////8BCQDMCAIA////////////AQkAzAgCAP///////////wEJAMwIAgD///////////8BCQDMCAIA////////////AQUDbmlsCQC1CQIFAXMCASwBDWdldE91dGRhdGVkVXIBCmFzc2V0SWRTdHIEBGRvd24JAGsDCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgIPdG90YWxfc3VwcGxpZWRfBQphc3NldElkU3RyCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgUKYXNzZXRJZFN0cgIGX3NSYXRlBQdTY2FsZTE2AwkAAAIFBGRvd24AAAAACQBrAwUGU2NhbGU4CQBrAwkBDXRyeUdldEludGVnZXIBCQCsAgICD3RvdGFsX2JvcnJvd2VkXwUKYXNzZXRJZFN0cgkBDXRyeUdldEludGVnZXIBCQCsAgIFCmFzc2V0SWRTdHICBl9iUmF0ZQUHU2NhbGUxNgUEZG93bgELZ2V0SW50ZXJlc3QBCmFzc2V0SWRTdHIEAnVyCQENZ2V0T3V0ZGF0ZWRVcgEFCmFzc2V0SWRTdHIEBWN1cnZlCQEMZ2V0UmF0ZUN1cnZlAQUKYXNzZXRJZFN0cgQEcmF0ZQkAZAIIBQVjdXJ2ZQJfMQMJAGcCCAUFY3VydmUCXzMFAnVyCQBrAwUCdXIIBQVjdXJ2ZQJfMggFBWN1cnZlAl8zCQBkAggFBWN1cnZlAl8yCQBrAwkAZQIFAnVyCAUFY3VydmUCXzMIBQVjdXJ2ZQJfNAkAZQIAgMLXLwgFBWN1cnZlAl8zCQCWAwEJAMwIAgkAawMFBHJhdGUFBlNjYWxlOAkAaAIFCWRheUJsb2NrcwDtAgkAzAgCAAEFA25pbAEQdG9rZW5SYXRlc1JlY2FsYwEKYXNzZXRJZFN0cgQIaW50ZXJlc3QJAQtnZXRJbnRlcmVzdAEFCmFzc2V0SWRTdHIEAnVyCQENZ2V0T3V0ZGF0ZWRVcgEFCmFzc2V0SWRTdHIEEGxhc3RSZWNhbGNIZWlnaHQJAQ10cnlHZXRJbnRlZ2VyAQIObGFzdFJhdGVIZWlnaHQECWxhc3RCUmF0ZQkAlgMBCQDMCAIJAQ10cnlHZXRJbnRlZ2VyAQkArAICBQphc3NldElkU3RyAgZfYlJhdGUJAMwIAgUHU2NhbGUxNgUDbmlsBAhuZXdCUmF0ZQkAZAIFCWxhc3RCUmF0ZQkAaAIJAGUCBQZoZWlnaHQFEGxhc3RSZWNhbGNIZWlnaHQFCGludGVyZXN0BAlsYXN0U1JhdGUJAJYDAQkAzAgCCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgUKYXNzZXRJZFN0cgIGX3NSYXRlCQDMCAIFB1NjYWxlMTYFA25pbAQIbmV3U1JhdGUJAGQCBQlsYXN0U1JhdGUJAGkCCQBoAgkAaAIJAGUCBQZoZWlnaHQFEGxhc3RSZWNhbGNIZWlnaHQJAGsDBQhpbnRlcmVzdAUCdXIFBlNjYWxlOAkAZQIAZAULcmVzZXJ2ZUZ1bmQAZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQphc3NldElkU3RyAgZfc1JhdGUFCG5ld1NSYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCmFzc2V0SWRTdHICBl9iUmF0ZQUIbmV3QlJhdGUJAMwIAgkBDEludGVnZXJFbnRyeQICDmxhc3RSYXRlSGVpZ2h0BQZoZWlnaHQFA25pbAENZ2V0QWN0dWFsUmF0ZQIKYXNzZXRJZFN0cghyYXRlVHlwZQoBAWYCBWFjY3VtBXRva2VuBAZyZWNhbGMJARB0b2tlblJhdGVzUmVjYWxjAQUFdG9rZW4JAJQKAgMJAQIhPQIFBXRva2VuBQphc3NldElkU3RyCAUFYWNjdW0CXzEDCQAAAgUIcmF0ZVR5cGUCBXNSYXRlCAkAkQMCBQZyZWNhbGMAAAV2YWx1ZQgJAJEDAgUGcmVjYWxjAAEFdmFsdWUJAM4IAggFBWFjY3VtAl8yBQZyZWNhbGMKAAIkbAkBD2dldE1hcmtldEFzc2V0cwAKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQFmAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA4CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAEFZ2V0VXIBCmFzc2V0SWRTdHIEBXJhdGVzCQEQdG9rZW5SYXRlc1JlY2FsYwEFCmFzc2V0SWRTdHIEBGRvd24JAGsDCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgIPdG90YWxfc3VwcGxpZWRfBQphc3NldElkU3RyCAkAkQMCBQVyYXRlcwAABXZhbHVlBQdTY2FsZTE2CQBrAwUGU2NhbGU4CQBrAwkBDXRyeUdldEludGVnZXIBCQCsAgICD3RvdGFsX2JvcnJvd2VkXwUKYXNzZXRJZFN0cggJAJEDAgUFcmF0ZXMAAQV2YWx1ZQUHU2NhbGUxNgUEZG93bgELcmF0ZXNSZWNhbGMACgEBZgIFYWNjdW0FdG9rZW4JAM4IAgUFYWNjdW0JARB0b2tlblJhdGVzUmVjYWxjAQUFdG9rZW4KAAIkbAkBD2dldE1hcmtldEFzc2V0cwAKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBAWYCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDgJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAQ1nZXRUb2tlblByaWNlAQphc3NldElkU3RyAwMJAAACBQphc3NldElkU3RyAiw5d2MzTFhOQTRURUJzWHlLdG9MRTltcmJERDdXTUhYdlhyQ2padmFiTEFzaQYJAAACBQphc3NldElkU3RyAixIR2dhYlRxVVM4V3RWRlVKemZtclRETWdFY2NKdVpMQlBoRmdRRnh2bnNvVwkAlAoCAMCEPQDAhD0EBGludjMJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQUJb3JhY2xlU3RyAglnZXRUV0FQNjAJAMwIAgUKYXNzZXRJZFN0cgkAzAgCBwUDbmlsBQNuaWwDCQAAAgUEaW52MwUEaW52MwQFZGF0YTMEByRtYXRjaDAFBGludjMDCQABAgUHJG1hdGNoMAIKKEludCwgSW50KQQBeAUHJG1hdGNoMAUBeAkAAgECFWVycm9yIG9mIHByaWNlIG9yYWNsZQMJAAACBQVkYXRhMwUFZGF0YTMFBWRhdGEzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQ5jYWxjQXNzZXRTY2FsZQEKYXNzZXRJZFN0cgQIZGVjaW1hbHMDCQAAAgUKYXNzZXRJZFN0cgIFV0FWRVMACAgJAQV2YWx1ZQEJAOwHAQkA2QQBBQphc3NldElkU3RyCGRlY2ltYWxzCQBsBgAKAAAFCGRlY2ltYWxzAAAAAAUERE9XTgESY2FsY1VzZXJDb2xsYXRlcmFsAQdhZGRyZXNzBBR1c2VyQ29sbGF0ZXJhbEludm9rZQkA/AcEBQR0aGlzAhFnZXRVc2VyQ29sbGF0ZXJhbAkAzAgCBwkAzAgCBQdhZGRyZXNzCQDMCAIGCQDMCAICAAUDbmlsBQNuaWwDCQAAAgUUdXNlckNvbGxhdGVyYWxJbnZva2UFFHVzZXJDb2xsYXRlcmFsSW52b2tlBBN1c2VyQ29sbGF0ZXJhbFZhbHVlBAckbWF0Y2gwBRR1c2VyQ29sbGF0ZXJhbEludm9rZQMJAAECBQckbWF0Y2gwAgNJbnQEAXgFByRtYXRjaDAFAXgJAAIBAiRpc3N1ZSB3aGlsZSBkb2luZyBpbi1kYXBwIGludm9jYXRpb24DCQAAAgUTdXNlckNvbGxhdGVyYWxWYWx1ZQUTdXNlckNvbGxhdGVyYWxWYWx1ZQUTdXNlckNvbGxhdGVyYWxWYWx1ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLhgBaQEGc3VwcGx5AAMJAQEhAQkBDXRyeUdldEJvb2xlYW4BAgxzZXR1cF9hY3RpdmUJAAIBAhFtYXJrZXQgaXMgc3RvcHBlZAMDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEGCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQAAAkAAgECHDEgcGF5bWVudCBoYXMgdG8gYmUgYXR0YWNoZWQECmFzc2V0SWRTdHIJAQ5nZXRBc3NldFN0cmluZwEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQLYXNzZXRBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAskdDA4NDI5ODQ5NgkBDWdldEFjdHVhbFJhdGUCBQphc3NldElkU3RyAgVzUmF0ZQQFc1JhdGUIBQskdDA4NDI5ODQ5NgJfMQQRcmF0ZXNSZWNhbGNSZXN1bHQIBQskdDA4NDI5ODQ5NgJfMgQGYW1vdW50CQBuBAULYXNzZXRBbW91bnQFB1NjYWxlMTYFBXNSYXRlBQRET1dOBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQJbWF4U3VwcGx5BAckbWF0Y2gwCQCiCAEJAKwCAgIQc2V0dXBfbWF4U3VwcGx5XwUKYXNzZXRJZFN0cgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXgFByRtYXRjaDAJAQ1wYXJzZUludFZhbHVlAQUBeAAABAphc3NldFByaWNlCQENZ2V0VG9rZW5QcmljZQEFCmFzc2V0SWRTdHIEEG5ld1RvdGFsU3VwcGxpZWQJAGQCCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICBQdhZGRyZXNzAgpfc3VwcGxpZWRfBQphc3NldElkU3RyBQZhbW91bnQEBHJhdGUICQENZ2V0QWN0dWFsUmF0ZQIFCmFzc2V0SWRTdHICBXNSYXRlAl8xBAphc3NldFNjYWxlCQEOY2FsY0Fzc2V0U2NhbGUBBQphc3NldElkU3RyBBNuZXdUb3RhbFN1cHBsaWVkVXNkCQBrAwkAawMFEG5ld1RvdGFsU3VwcGxpZWQFBHJhdGUFB1NjYWxlMTYIBQphc3NldFByaWNlAl8xBQphc3NldFNjYWxlAwkAAAIJALMJAgkBDHRyeUdldFN0cmluZwECDHNldHVwX3Rva2VucwUKYXNzZXRJZFN0cgUEdW5pdAkAAgECKXRoaXMgYXNzZXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgbWFya2V0AwMJAQIhPQIFCW1heFN1cHBseQAACQBmAgUTbmV3VG90YWxTdXBwbGllZFVzZAUJbWF4U3VwcGx5BwkAAgECM21heCB0b3RhbCBzdXBwbHkgZm9yIHRoaXMgdG9rZW4gcmVhY2hlZCBpbiB0aGUgcG9vbAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgUHYWRkcmVzcwIKX3N1cHBsaWVkXwUKYXNzZXRJZFN0cgUQbmV3VG90YWxTdXBwbGllZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAg90b3RhbF9zdXBwbGllZF8FCmFzc2V0SWRTdHIJAGQCCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgIPdG90YWxfc3VwcGxpZWRfBQphc3NldElkU3RyBQZhbW91bnQFA25pbAURcmF0ZXNSZWNhbGNSZXN1bHQBaQEId2l0aGRyYXcCCmFzc2V0SWRTdHILYXNzZXRBbW91bnQECyR0MDk3NTY5ODIzCQENZ2V0QWN0dWFsUmF0ZQIFCmFzc2V0SWRTdHICBXNSYXRlBAVzUmF0ZQgFCyR0MDk3NTY5ODIzAl8xBBFyYXRlc1JlY2FsY1Jlc3VsdAgFCyR0MDk3NTY5ODIzAl8yBAZhbW91bnQJAG4EBQthc3NldEFtb3VudAUHU2NhbGUxNgUFc1JhdGUFB0NFSUxJTkcEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyBA1hc3NldFN1cHBsaWVkCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgIPdG90YWxfc3VwcGxpZWRfBQphc3NldElkU3RyBA1hc3NldEJvcnJvd2VkCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgIPdG90YWxfYm9ycm93ZWRfBQphc3NldElkU3RyBBF1c2VyQXNzZXRTdXBwbGllZAkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgUHYWRkcmVzcwIKX3N1cHBsaWVkXwUKYXNzZXRJZFN0cgQRdXNlckFzc2V0Qm9ycm93ZWQJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgIFB2FkZHJlc3MCCl9ib3Jyb3dlZF8FCmFzc2V0SWRTdHIEEmNvbGxhdGVyYWxWYWx1ZUludgkA/AcEBQR0aGlzAhFnZXRVc2VyQ29sbGF0ZXJhbAkAzAgCBwkAzAgCBQdhZGRyZXNzCQDMCAIGCQDMCAIJAKwCAgkArAICBQphc3NldElkU3RyAgosc3VwcGxpZWQsCQCkAwEJAQEtAQUGYW1vdW50BQNuaWwFA25pbAMJAAACBRJjb2xsYXRlcmFsVmFsdWVJbnYFEmNvbGxhdGVyYWxWYWx1ZUludgQPY29sbGF0ZXJhbFZhbHVlBAckbWF0Y2gwBRJjb2xsYXRlcmFsVmFsdWVJbnYDCQABAgUHJG1hdGNoMAIDSW50BAF4BQckbWF0Y2gwBQF4CQACAQIfY2FuJ3QgZ2V0IHVzZXIgY29sbGF0ZXJhbCB2YWx1ZQMJAQEhAQkBDXRyeUdldEJvb2xlYW4BAgxzZXR1cF9hY3RpdmUJAAIBAhFtYXJrZXQgaXMgc3RvcHBlZAMJAGYCAAAFD2NvbGxhdGVyYWxWYWx1ZQkAAgECMnlvdSBkb250IGhhdmUgZW5vdWdoIGNvbGxhdGVyYWwgZm9yIHRoaXMgb3BlcmF0aW9uAwkAZgIFBmFtb3VudAkAZQIFDWFzc2V0U3VwcGxpZWQFDWFzc2V0Qm9ycm93ZWQJAAIBAip0aGlzIGFtb3VudCBpcyBub3QgYXZhaWxhYmxlIG9uIHRoZSBtYXJrZXQDCQBmAgUGYW1vdW50CQBlAgURdXNlckFzc2V0U3VwcGxpZWQFEXVzZXJBc3NldEJvcnJvd2VkCQACAQIqdGhpcyBhbW91bnQgaXMgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyB1c2VyCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICBQdhZGRyZXNzAgpfc3VwcGxpZWRfBQphc3NldElkU3RyCQBlAgkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgUHYWRkcmVzcwIKX3N1cHBsaWVkXwUKYXNzZXRJZFN0cgUGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICD3RvdGFsX3N1cHBsaWVkXwUKYXNzZXRJZFN0cgkAZQIJAQ10cnlHZXRJbnRlZ2VyAQkArAICAg90b3RhbF9zdXBwbGllZF8FCmFzc2V0SWRTdHIFBmFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFC2Fzc2V0QW1vdW50CQENZ2V0QXNzZXRCeXRlcwEFCmFzc2V0SWRTdHIFA25pbAURcmF0ZXNSZWNhbGNSZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEGYm9ycm93Agphc3NldElkU3RyC2Fzc2V0QW1vdW50BAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQNJHQwMTEzOTUxMTQ2MgkBDWdldEFjdHVhbFJhdGUCBQphc3NldElkU3RyAgViUmF0ZQQFYlJhdGUIBQ0kdDAxMTM5NTExNDYyAl8xBBFyYXRlc1JlY2FsY1Jlc3VsdAgFDSR0MDExMzk1MTE0NjICXzIEBmFtb3VudAkAbgQFC2Fzc2V0QW1vdW50BQdTY2FsZTE2BQViUmF0ZQUHQ0VJTElORwQSY29sbGF0ZXJhbFZhbHVlSW52CQD8BwQFBHRoaXMCEWdldFVzZXJDb2xsYXRlcmFsCQDMCAIHCQDMCAIFB2FkZHJlc3MJAMwIAgYJAMwIAgkArAICCQCsAgIFCmFzc2V0SWRTdHICCixib3Jyb3dlZCwJAKQDAQUGYW1vdW50BQNuaWwFA25pbAMJAAACBRJjb2xsYXRlcmFsVmFsdWVJbnYFEmNvbGxhdGVyYWxWYWx1ZUludgQPY29sbGF0ZXJhbFZhbHVlBAckbWF0Y2gwBRJjb2xsYXRlcmFsVmFsdWVJbnYDCQABAgUHJG1hdGNoMAIDSW50BAF4BQckbWF0Y2gwBQF4CQACAQIfY2FuJ3QgZ2V0IHVzZXIgY29sbGF0ZXJhbCB2YWx1ZQMJAQEhAQkBDXRyeUdldEJvb2xlYW4BAgxzZXR1cF9hY3RpdmUJAAIBAhFtYXJrZXQgaXMgc3RvcHBlZAMJAGYCAAAFD2NvbGxhdGVyYWxWYWx1ZQkAAgECIXlvdSBoYXZlIHRvIHN1cHBseSBtb3JlIHRvIGJvcnJvdwQNYXNzZXRTdXBwbGllZAkBDXRyeUdldEludGVnZXIBCQCsAgICD3RvdGFsX3N1cHBsaWVkXwUKYXNzZXRJZFN0cgQNYXNzZXRCb3Jyb3dlZAkBDXRyeUdldEludGVnZXIBCQCsAgICD3RvdGFsX2JvcnJvd2VkXwUKYXNzZXRJZFN0cgQRdXNlckFzc2V0Qm9ycm93ZWQJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgIFB2FkZHJlc3MCCl9ib3Jyb3dlZF8FCmFzc2V0SWRTdHIDCQBmAgUGYW1vdW50CQBlAgUNYXNzZXRTdXBwbGllZAUNYXNzZXRCb3Jyb3dlZAkAAgECHHRoaXMgYW1vdW50IGlzIG5vdCBhdmFpbGFibGUJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIFB2FkZHJlc3MCCl9ib3Jyb3dlZF8FCmFzc2V0SWRTdHIJAGQCBRF1c2VyQXNzZXRCb3Jyb3dlZAUGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICD3RvdGFsX2JvcnJvd2VkXwUKYXNzZXRJZFN0cgkAZAIFDWFzc2V0Qm9ycm93ZWQFBmFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFC2Fzc2V0QW1vdW50CQENZ2V0QXNzZXRCeXRlcwEFCmFzc2V0SWRTdHIFA25pbAURcmF0ZXNSZWNhbGNSZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFcmVwYXkAAwkBASEBCQENdHJ5R2V0Qm9vbGVhbgECDHNldHVwX2FjdGl2ZQkAAgECEW1hcmtldCBpcyBzdG9wcGVkAwMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQYJAAACCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAAACQACAQIcMSBwYXltZW50IGhhcyB0byBiZSBhdHRhY2hlZAQKYXNzZXRJZFN0cgkBDmdldEFzc2V0U3RyaW5nAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAthc3NldEFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEDSR0MDEyOTY3MTMwMzQJAQ1nZXRBY3R1YWxSYXRlAgUKYXNzZXRJZFN0cgIFYlJhdGUEBWJSYXRlCAUNJHQwMTI5NjcxMzAzNAJfMQQRcmF0ZXNSZWNhbGNSZXN1bHQIBQ0kdDAxMjk2NzEzMDM0Al8yBAZhbW91bnQJAG4EBQthc3NldEFtb3VudAUHU2NhbGUxNgUFYlJhdGUFB0NFSUxJTkcEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyBA1hc3NldFN1cHBsaWVkCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgIPdG90YWxfc3VwcGxpZWRfBQphc3NldElkU3RyBA1hc3NldEJvcnJvd2VkCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgIPdG90YWxfYm9ycm93ZWRfBQphc3NldElkU3RyBBF1c2VyQXNzZXRCb3Jyb3dlZAkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgUHYWRkcmVzcwIKX2JvcnJvd2VkXwUKYXNzZXRJZFN0cgQKYW1vdW50TGVmdAkAZQIFEXVzZXJBc3NldEJvcnJvd2VkBQZhbW91bnQEC3JlcGF5QW1vdW50AwkAZwIFCmFtb3VudExlZnQAAAUGYW1vdW50BRF1c2VyQXNzZXRCb3Jyb3dlZAMJAAACCQCzCQIJAQx0cnlHZXRTdHJpbmcBAgxzZXR1cF90b2tlbnMFCmFzc2V0SWRTdHIFBHVuaXQJAAIBAil0aGlzIGFzc2V0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIG1hcmtldAkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICBQdhZGRyZXNzAgpfYm9ycm93ZWRfBQphc3NldElkU3RyCQBlAgURdXNlckFzc2V0Qm9ycm93ZWQFC3JlcGF5QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICD3RvdGFsX2JvcnJvd2VkXwUKYXNzZXRJZFN0cgkAZQIFDWFzc2V0Qm9ycm93ZWQFC3JlcGF5QW1vdW50BQNuaWwFEXJhdGVzUmVjYWxjUmVzdWx0AwkAZwIFCmFtb3VudExlZnQAAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkBAS0BBQphbW91bnRMZWZ0CAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFA25pbAFpAQ1zdGFrZVRva2VuQWxsAQphc3NldElkU3RyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIsb25seSBmb3IgaW50ZXJuYWwgc21hcnQgY29udHJhY3QgaW52b2NhdGlvbnMEBmFtb3VudAkBCmdldEJhbGFuY2UBBQphc3NldElkU3RyBANpbnYJAPwHBAUEdGhpcwIKc3Rha2VUb2tlbgkAzAgCBQphc3NldElkU3RyCQDMCAIFBmFtb3VudAUDbmlsBQNuaWwDCQAAAgUDaW52BQNpbnYFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpzdGFrZVRva2VuAgphc3NldElkU3RyBmFtb3VudAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECLG9ubHkgZm9yIGludGVybmFsIHNtYXJ0IGNvbnRyYWN0IGludm9jYXRpb25zAwkAAAIFCmFzc2V0SWRTdHICLERHMnhGa1BkRHdLVW9Ca3pHQWhRdExwU0d6ZlhMaUNZUEV6ZUtIMkFkMjRwBAxhbW91bnRTdGFrZWQJAQ10cnlHZXRJbnRlZ2VyAQI9YXV0b3N0YWtlX2Ftb3VudF9ERzJ4RmtQZER3S1VvQmt6R0FoUXRMcFNHemZYTGlDWVBFemVLSDJBZDI0cAQDaW52CQD8BwQJAQdBZGRyZXNzAQEaAVfkDqc2T5IL15fPpB0/NRvPQ2rrqjzzcZ0CBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIBILYmKcME9c5TkaQOS3UkL2SMUbH6369UKb1I0h0qsqrRBQZhbW91bnQFA25pbAMJAAACBQNpbnYFA2ludgkAzAgCCQEMSW50ZWdlckVudHJ5AgI9YXV0b3N0YWtlX2Ftb3VudF9ERzJ4RmtQZER3S1VvQmt6R0FoUXRMcFNHemZYTGlDWVBFemVLSDJBZDI0cAkAZAIFDGFtb3VudFN0YWtlZAUGYW1vdW50BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUKYXNzZXRJZFN0cgIsOHQ0RFBXVHdQenBhdEhBOUFrVHhXQUI0N1RIbll6QnNEbm9ZN2ZRcWJHOTEEDGFtb3VudFN0YWtlZAkBDXRyeUdldEludGVnZXIBAj1hdXRvc3Rha2VfYW1vdW50Xzh0NERQV1R3UHpwYXRIQTlBa1R4V0FCNDdUSG5ZekJzRG5vWTdmUXFiRzkxBANpbnYJAPwHBAkBB0FkZHJlc3MBARoBV/cVNRHF7XKFU1QQ8N0bTeJqPNO0aHcpWgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgEgdRYQOIB2DVVlfknzrrHb5hmcahBoH8lVYfpKRlp3MBwFBmFtb3VudAUDbmlsAwkAAAIFA2ludgUDaW52CQDMCAIJAQxJbnRlZ2VyRW50cnkCAj1hdXRvc3Rha2VfYW1vdW50Xzh0NERQV1R3UHpwYXRIQTlBa1R4V0FCNDdUSG5ZekJzRG5vWTdmUXFiRzkxCQBkAgUMYW1vdW50U3Rha2VkBQZhbW91bnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQphc3NldElkU3RyAixBdDhENk5GRnBoZUNidktWbmpWb2VMTDg0RW84TlpuNm92TWFueGZMYUZXTAQMYW1vdW50U3Rha2VkCQENdHJ5R2V0SW50ZWdlcgECPWF1dG9zdGFrZV9hbW91bnRfQXQ4RDZORkZwaGVDYnZLVm5qVm9lTEw4NEVvOE5abjZvdk1hbnhmTGFGV0wEA2ludgkA/AcECQEHQWRkcmVzcwEBGgFXa2g44QPUmoyfEhvGLLwjBzkLze0S1wpfAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCASCS0fRK4hEBK/R+6t4hjj3F+8nyfc6Hsu1SGfA6TiRY9QUGYW1vdW50BQNuaWwDCQAAAgUDaW52BQNpbnYJAMwIAgkBDEludGVnZXJFbnRyeQICPWF1dG9zdGFrZV9hbW91bnRfQXQ4RDZORkZwaGVDYnZLVm5qVm9lTEw4NEVvOE5abjZvdk1hbnhmTGFGV0wJAGQCBQxhbW91bnRTdGFrZWQFBmFtb3VudAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwBaQEMdW5zdGFrZVRva2VuAgphc3NldElkU3RyBmFtb3VudAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECLG9ubHkgZm9yIGludGVybmFsIHNtYXJ0IGNvbnRyYWN0IGludm9jYXRpb25zAwkAAAIFCmFzc2V0SWRTdHICLDh0NERQV1R3UHpwYXRIQTlBa1R4V0FCNDdUSG5ZekJzRG5vWTdmUXFiRzkxBAxhbW91bnRTdGFrZWQJAQ10cnlHZXRJbnRlZ2VyAQI9YXV0b3N0YWtlX2Ftb3VudF84dDREUFdUd1B6cGF0SEE5QWtUeFdBQjQ3VEhuWXpCc0Rub1k3ZlFxYkc5MQQDaW52CQD8BwQJAQdBZGRyZXNzAQEaAVf3FTURxe1yhVNUEPDdG03iajzTtGh3KVoCB3VuU3Rha2UJAMwIAgUGYW1vdW50BQNuaWwFA25pbAMJAAACBQNpbnYFA2ludgkAzAgCCQEMSW50ZWdlckVudHJ5AgI9YXV0b3N0YWtlX2Ftb3VudF84dDREUFdUd1B6cGF0SEE5QWtUeFdBQjQ3VEhuWXpCc0Rub1k3ZlFxYkc5MQkAZQIFDGFtb3VudFN0YWtlZAUGYW1vdW50BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUKYXNzZXRJZFN0cgIsQXQ4RDZORkZwaGVDYnZLVm5qVm9lTEw4NEVvOE5abjZvdk1hbnhmTGFGV0wEDGFtb3VudFN0YWtlZAkBDXRyeUdldEludGVnZXIBAj1hdXRvc3Rha2VfYW1vdW50X0F0OEQ2TkZGcGhlQ2J2S1ZualZvZUxMODRFbzhOWm42b3ZNYW54ZkxhRldMBANpbnYJAPwHBAkBB0FkZHJlc3MBARoBV2toOOED1JqMnxIbxiy8Iwc5C83tEtcKXwIHdW5zdGFrZQkAzAgCBQZhbW91bnQFA25pbAUDbmlsAwkAAAIFA2ludgUDaW52BARiYWwwCQEKZ2V0QmFsYW5jZQECLEF0OEQ2TkZGcGhlQ2J2S1ZualZvZUxMODRFbzhOWm42b3ZNYW54ZkxhRldMAwkAAAIFBGJhbDAFBGJhbDAEBGludjIJAPwHBAkBB0FkZHJlc3MBARoBV/t16usT/RnAywjcj2CzfgO6EY6tj7fQ6wIXZ25zYnRSZXdhcmRzU1lTUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAACBQRpbnYyBQRpbnYyBAx0b3B1cFJld2FyZHMEByRtYXRjaDAFBGludjIDCQABAgUHJG1hdGNoMAIJTGlzdFtBbnldBAF4BQckbWF0Y2gwBAhzZWNvbmRFbAkAkQMCBQF4AAEEByRtYXRjaDEFCHNlY29uZEVsAwkAAQIFByRtYXRjaDECBlN0cmluZwQIc2Vjb25kRWwFByRtYXRjaDEECXVzZG5WYWx1ZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCCQC1CQIFCHNlY29uZEVsAgFfAAECAToAAQQKd2F2ZXNWYWx1ZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCCQC1CQIFCHNlY29uZEVsAgFfAAACAToAAQMDCQECIT0CBQl1c2RuVmFsdWUAAAYJAQIhPQIFCndhdmVzVmFsdWUAAAQIdXNkbkJhbDAJAQpnZXRCYWxhbmNlAQIsREcyeEZrUGREd0tVb0JrekdBaFF0THBTR3pmWExpQ1lQRXplS0gyQWQyNHADCQAAAgUIdXNkbkJhbDAFCHVzZG5CYWwwBAl3YXZlc0JhbDAJAQpnZXRCYWxhbmNlAQIFV0FWRVMDCQAAAgUJd2F2ZXNCYWwwBQl3YXZlc0JhbDAEBGludjMJAPwHBAkBB0FkZHJlc3MBARoBV2toOOED1JqMnxIbxiy8Iwc5C83tEtcKXwIMY2xhaW1SZXdhcmRzBQNuaWwFA25pbAMJAAACBQRpbnYzBQRpbnYzBAl3YXZlc0JhbDEJAQpnZXRCYWxhbmNlAQIFV0FWRVMDCQAAAgUJd2F2ZXNCYWwxBQl3YXZlc0JhbDEEBGludjQJAPwHBAkBB0FkZHJlc3MBARoBV84UFJ0WWAPkQ0x69aXssp+tv82zg/kpogIEc3dhcAkAzAgCAixERzJ4RmtQZER3S1VvQmt6R0FoUXRMcFNHemZYTGlDWVBFemVLSDJBZDI0cAkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAkAZQIFCXdhdmVzQmFsMQUJd2F2ZXNCYWwwBQNuaWwDCQAAAgUEaW52NAUEaW52NAQIdXNkbkJhbDEJAQpnZXRCYWxhbmNlAQIsREcyeEZrUGREd0tVb0JrekdBaFF0THBTR3pmWExpQ1lQRXplS0gyQWQyNHADCQAAAgUIdXNkbkJhbDEFCHVzZG5CYWwxBARpbnY1CQD8BwQJAQdBZGRyZXNzAQEaAVdA6qFcZYEoPXSEW1dgnvvjeSu33Iq0kHcCBHN3YXAJAMwIAgIsQXQ4RDZORkZwaGVDYnZLVm5qVm9lTEw4NEVvOE5abjZvdk1hbnhmTGFGV0wJAMwIAgAABQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIBILYmKcME9c5TkaQOS3UkL2SMUbH6369UKb1I0h0qsqrRCQBlAgUIdXNkbkJhbDEFCHVzZG5CYWwwBQNuaWwDCQAAAgUEaW52NQUEaW52NQQEaW52NgkA/AcEBQR0aGlzAgthZGRJbnRlcmVzdAkAzAgCAixBdDhENk5GRnBoZUNidktWbmpWb2VMTDg0RW84TlpuNm92TWFueGZMYUZXTAkAzAgCCQBlAgkBCmdldEJhbGFuY2UBAixBdDhENk5GRnBoZUNidktWbmpWb2VMTDg0RW84TlpuNm92TWFueGZMYUZXTAUEYmFsMAUDbmlsBQNuaWwDCQAAAgUEaW52NgUEaW52NgACCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAEAAQAAAwkAAAIFDHRvcHVwUmV3YXJkcwUMdG9wdXBSZXdhcmRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAj1hdXRvc3Rha2VfYW1vdW50X0F0OEQ2TkZGcGhlQ2J2S1ZualZvZUxMODRFbzhOWm42b3ZNYW54ZkxhRldMCQBlAgUMYW1vdW50U3Rha2VkBQZhbW91bnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsAWkBC2FkZEludGVyZXN0Agphc3NldElkU3RyBmFtb3VudAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECGG9ubHkgZm9yIHNlbGYgaW52b2NhdGlvbgQGZWFybmVkCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgIVYXV0b3N0YWtlX2xhc3RFYXJuZWRfBQphc3NldElkU3RyBApsYXN0SGVpZ2h0CQENdHJ5R2V0SW50ZWdlcgEJAKwCAgIUYXV0b3N0YWtlX2xhc3RCbG9ja18FCmFzc2V0SWRTdHIEC2NsZWFuQW1vdW50CQBrAwUGYW1vdW50AFAAZAQMc3RhdGVDaGFuZ2VzAwMJAAACBQpsYXN0SGVpZ2h0BQZoZWlnaHQGCQAAAgUGYW1vdW50AAAFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhhhdXRvc3Rha2VfcHJlTGFzdEVhcm5lZF8FCmFzc2V0SWRTdHIFBmVhcm5lZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhdhdXRvc3Rha2VfcHJlTGFzdEJsb2NrXwUKYXNzZXRJZFN0cgUKbGFzdEhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhVhdXRvc3Rha2VfbGFzdEVhcm5lZF8FCmFzc2V0SWRTdHIJAGQCBQZlYXJuZWQFC2NsZWFuQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICFGF1dG9zdGFrZV9sYXN0QmxvY2tfBQphc3NldElkU3RyBQZoZWlnaHQFA25pbAkAzggCBQxzdGF0ZUNoYW5nZXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUKYXNzZXRJZFN0cgIGX3NSYXRlCQBkAgkBDXRyeUdldEludGVnZXIBCQCsAgIFCmFzc2V0SWRTdHICBl9zUmF0ZQkAawMFB1NjYWxlMTYFC2NsZWFuQW1vdW50CQENdHJ5R2V0SW50ZWdlcgEJAKwCAgIPdG90YWxfc3VwcGxpZWRfBQphc3NldElkU3RyBQNuaWwBaQETYWRkSW50ZXJlc3RFWFRFUk5BTAAEBmFtb3VudAkAawMICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AFAAZAQHYXNzZXRJZAgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAphc3NldElkU3RyCQEOZ2V0QXNzZXRTdHJpbmcBBQdhc3NldElkBAZlYXJuZWQJAQ10cnlHZXRJbnRlZ2VyAQkArAICAhVhdXRvc3Rha2VfbGFzdEVhcm5lZF8FCmFzc2V0SWRTdHIECmxhc3RIZWlnaHQJAQ10cnlHZXRJbnRlZ2VyAQkArAICAhRhdXRvc3Rha2VfbGFzdEJsb2NrXwUKYXNzZXRJZFN0cgQMc3RhdGVDaGFuZ2VzAwMJAAACBQpsYXN0SGVpZ2h0BQZoZWlnaHQGCQAAAgUGYW1vdW50AAAFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhhhdXRvc3Rha2VfcHJlTGFzdEVhcm5lZF8FCmFzc2V0SWRTdHIFBmVhcm5lZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhdhdXRvc3Rha2VfcHJlTGFzdEJsb2NrXwUKYXNzZXRJZFN0cgUKbGFzdEhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhVhdXRvc3Rha2VfbGFzdEVhcm5lZF8FCmFzc2V0SWRTdHIJAGQCBQZlYXJuZWQFBmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhRhdXRvc3Rha2VfbGFzdEJsb2NrXwUKYXNzZXRJZFN0cgUGaGVpZ2h0BQNuaWwJAM4IAgUMc3RhdGVDaGFuZ2VzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCmFzc2V0SWRTdHICBl9zUmF0ZQkAZAIJAQ10cnlHZXRJbnRlZ2VyAQkArAICBQphc3NldElkU3RyAgZfc1JhdGUJAGsDBQdTY2FsZTE2BQZhbW91bnQJAQ10cnlHZXRJbnRlZ2VyAQkArAICAg90b3RhbF9zdXBwbGllZF8FCmFzc2V0SWRTdHIFA25pbAFpAQdwcmVJbml0BAZ0b2tlbnMEbHR2cwNsdHMJcGVuYWx0aWVzCgEBZgIFYWNjdW0FdG9rZW4JAM4IAgUFYWNjdW0JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUFdG9rZW4CBl9iUmF0ZQUHU2NhbGUxNgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQV0b2tlbgIGX3NSYXRlBQdTY2FsZTE2BQNuaWwDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgphZG1pbiBvbmx5BAVyYXRlcwoAAiRsCQC1CQIFBnRva2VucwIBLAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEBZgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgOAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCAgxzZXR1cF90b2tlbnMFBnRva2VucwkAzAgCCQELU3RyaW5nRW50cnkCAgpzZXR1cF9sdHZzBQRsdHZzCQDMCAIJAQtTdHJpbmdFbnRyeQICCXNldHVwX2x0cwUDbHRzCQDMCAIJAQtTdHJpbmdFbnRyeQICD3NldHVwX3BlbmFsdGllcwUJcGVuYWx0aWVzCQDMCAIJAQxCb29sZWFuRW50cnkCAgxzZXR1cF9hY3RpdmUGBQNuaWwFBXJhdGVzAWkBDGluaXROZXdUb2tlbgQFdG9rZW4DbHR2Amx0B3BlbmFsdHkDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgphZG1pbiBvbmx5CQDMCAIJAQtTdHJpbmdFbnRyeQICDHNldHVwX3Rva2VucwkArAICCQCsAgIJAQx0cnlHZXRTdHJpbmcBAgxzZXR1cF90b2tlbnMCASwFBXRva2VuCQDMCAIJAQtTdHJpbmdFbnRyeQICCnNldHVwX2x0dnMJAKwCAgkArAICCQEMdHJ5R2V0U3RyaW5nAQIKc2V0dXBfbHR2cwIBLAUDbHR2CQDMCAIJAQtTdHJpbmdFbnRyeQICCXNldHVwX2x0cwkArAICCQCsAgIJAQx0cnlHZXRTdHJpbmcBAglzZXR1cF9sdHMCASwFAmx0CQDMCAIJAQtTdHJpbmdFbnRyeQICD3NldHVwX3BlbmFsdGllcwkArAICCQCsAgIJAQx0cnlHZXRTdHJpbmcBAg9zZXR1cF9wZW5hbHRpZXMCASwFB3BlbmFsdHkJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUFdG9rZW4CBl9iUmF0ZQUHU2NhbGUxNgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQV0b2tlbgIGX3NSYXRlBQdTY2FsZTE2BQNuaWwBaQEPdXBkYXRlUGFyYW1ldGVyAgNrZXkDdmFsAwMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkBAiE9AggFAWkGY2FsbGVyCQEHQWRkcmVzcwEBGgFXFHlYhcD6GmfnFDSNDPfE8G1F7fYc+T1BBwkAAgECCmFkbWluIG9ubHkJAMwIAgkBDEludGVnZXJFbnRyeQIFA2tleQkBDXBhcnNlSW50VmFsdWUBBQN2YWwFA25pbAFpAQx1cGRhdGVTdHJpbmcCA2tleQN2YWwDAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQECIT0CCAUBaQZjYWxsZXIJAQdBZGRyZXNzAQEaAVcUeViFwPoaZ+cUNI0M98TwbUXt9hz5PUEHCQACAQIKYWRtaW4gb25seQkAzAgCCQELU3RyaW5nRW50cnkCBQNrZXkFA3ZhbAUDbmlsAWkBEmNsYWltVG9SZXNlcnZlRnVuZAEFZGVidWcEBmFzc2V0cwkBD2dldE1hcmtldEFzc2V0cwAEBXJhdGVzCAkBDWdldEFjdHVhbFJhdGUCCQCRAwIFBmFzc2V0cwAAAgVzUmF0ZQJfMgQCbGkJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGBQNuaWwKAQFmAgVhY2N1bQFuAwkAZwIFAW4JAJADAQUGYXNzZXRzBQVhY2N1bQQKYXNzZXRJZFN0cgkAkQMCBQZhc3NldHMFAW4ED2F1dG9zdGFrZUFtb3VudAkBDHRyeUdldFN0cmluZwEJAKwCAgIRYXV0b3N0YWtlX2Ftb3VudF8FCmFzc2V0SWRTdHIEBmFtb3VudAkAZQIJAGQCCQBkAgkAZAIJAQpnZXRCYWxhbmNlAQUKYXNzZXRJZFN0cgkBDXRyeUdldEludGVnZXIBCQCsAgICEWF1dG9zdGFrZV9hbW91bnRfBQphc3NldElkU3RyAwkBAiE9AgUPYXV0b3N0YWtlQW1vdW50AgAJAQ1wYXJzZUludFZhbHVlAQUPYXV0b3N0YWtlQW1vdW50AAAJAGsDCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgIPdG90YWxfYm9ycm93ZWRfBQphc3NldElkU3RyCAkAkQMCBQVyYXRlcwkAZAIJAGgCBQFuAAMAAQV2YWx1ZQUHU2NhbGUxNgkAawMJAQ10cnlHZXRJbnRlZ2VyAQkArAICAg90b3RhbF9zdXBwbGllZF8FCmFzc2V0SWRTdHIICQCRAwIFBXJhdGVzCQBoAgUBbgADBXZhbHVlBQdTY2FsZTE2CQDOCAIFBWFjY3VtCQDMCAIFBmFtb3VudAUDbmlsBAlwYXJhbWV0ZXIKAAIkbAUCbGkKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBAWYCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDgJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAICgECZjICBWFjY3VtAW4DCQBnAgUBbgkAkAMBBQZhc3NldHMFBWFjY3VtBAphc3NldElkU3RyCQCRAwIFBmFzc2V0cwUBbgkAzggCBQVhY2N1bQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRJyZXNlcnZlRnVuZEFkZHJlc3MJAJYDAQkAzAgCCQCRAwIFCXBhcmFtZXRlcgUBbgkAzAgCAAAFA25pbAkBDWdldEFzc2V0Qnl0ZXMBBQphc3NldElkU3RyBQNuaWwDBQVkZWJ1ZwkAAgEJAQpsaUludFRvU3RyAQUJcGFyYW1ldGVyCQCUCgIKAAIkbAUCbGkKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBAmYyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA4CQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAUJcGFyYW1ldGVyAWkBB3JlU2V0dXABCmFzc2V0SWRTdHIEC2xhc3RSZXNldHVwCQENdHJ5R2V0SW50ZWdlcgECEnJlc2V0dXBfbGFzdFVwZGF0ZQMJAGYCBQlkYXlCbG9ja3MJAGUCBQZoZWlnaHQFC2xhc3RSZXNldHVwCQACAQIgY2FuIGJlIHVwZGF0ZWQgb25seSBvbmNlIHBlciBkYXkEA2x0cwkAtQkCCQEMdHJ5R2V0U3RyaW5nAQIJc2V0dXBfbHRzAgEsBAZhc3NldHMJAQ9nZXRNYXJrZXRBc3NldHMABAJ1cgkBBWdldFVyAQUKYXNzZXRJZFN0cgQGdGVtcExUCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICAgZzZXR1cF8FCmFzc2V0SWRTdHICB190ZW1wTFQEAmx0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGYXNzZXRzCQEFdmFsdWUBCQDPCAIFBmFzc2V0cwUKYXNzZXRJZFN0cgMJAGYCBQJ1cgCAlfUqCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgIGc2V0dXBfBQphc3NldElkU3RyAgdfdGVtcExUCQBrAwUGdGVtcExUAPdNAJBOBQNuaWwDAwkAZgIFAmx0BQZ0ZW1wTFQJAGYCAICV9SoFAnVyBwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgICBnNldHVwXwUKYXNzZXRJZFN0cgIHX3RlbXBMVAkAawMFBnRlbXBMVACpTgCQTgUDbmlsBQNuaWwBaQEIc2h1dGRvd24BCHNodXRkb3duAwkAAAIJAM8IAgURc2h1dGRvd25XaGl0ZWxpc3QICAUBaQZjYWxsZXIFYnl0ZXMFBHVuaXQJAAIBAhd1c2VyIG5vdCBpbiBhIHdoaXRlbGlzdAkAzAgCCQEMQm9vbGVhbkVudHJ5AgIMc2V0dXBfYWN0aXZlCQEBIQEFCHNodXRkb3duBQNuaWwBaQEJbGlxdWlkYXRlBgVkZWJ1ZwdhZGRyZXNzC2Fzc2V0QW1vdW50C3NBc3NldElkU3RyC2JBc3NldElkU3RyCHJvdXRlU3RyAwkBASEBCQEWdmVyaWZ5TGlxdWlkYXRvclJpZ2h0cwEIBQFpBmNhbGxlcgkAAgECKHRlbXBvcmFyaWx5IGF2YWlsYWJsZSBmb3Igd2hpdGVsaXN0IG9ubHkDCQEBIQEJAQ10cnlHZXRCb29sZWFuAQIMc2V0dXBfYWN0aXZlCQACAQIRbWFya2V0IGlzIHN0b3BwZWQEDnVzZXJDb2xsYXRlcmFsCQESY2FsY1VzZXJDb2xsYXRlcmFsAQUHYWRkcmVzcwMJAAACBQ51c2VyQ29sbGF0ZXJhbAUOdXNlckNvbGxhdGVyYWwEDSR0MDI2NTE2MjY1NzgJAQ1nZXRBY3R1YWxSYXRlAgULc0Fzc2V0SWRTdHICBXNSYXRlBAVzUmF0ZQgFDSR0MDI2NTE2MjY1NzgCXzEEC3JhdGVzUmVzdWx0CAUNJHQwMjY1MTYyNjU3OAJfMgQNJHQwMjY1ODMyNjY1MgkBDWdldEFjdHVhbFJhdGUCBQtiQXNzZXRJZFN0cgIFYlJhdGUEBWJSYXRlCAUNJHQwMjY1ODMyNjY1MgJfMQQScmF0ZXNSZWNhbGNSZXN1bHQyCAUNJHQwMjY1ODMyNjY1MgJfMgQMc0Fzc2V0QW1vdW50CQBrAwULYXNzZXRBbW91bnQFB1NjYWxlMTYFBXNSYXRlBBBjdXJyZW50U1Bvc2l0aW9uCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICBQdhZGRyZXNzAgpfc3VwcGxpZWRfBQtzQXNzZXRJZFN0cgQTY3VycmVudEJQb3NpdGlvblZhbAkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgUHYWRkcmVzcwIKX2JvcnJvd2VkXwULYkFzc2V0SWRTdHIEEGN1cnJlbnRCUG9zaXRpb24DCQBmAgUTY3VycmVudEJQb3NpdGlvblZhbAAABRNjdXJyZW50QlBvc2l0aW9uVmFsCQACAQIgdXNlciBoYXMgbm8gYm9ycm93IGluIHRoaXMgdG9rZW4DCQBmAgUOdXNlckNvbGxhdGVyYWwAAAkAAgECGHVzZXIgY2FuJ3QgYmUgbGlxdWlkYXRlZAMJAGYCBQxzQXNzZXRBbW91bnQFEGN1cnJlbnRTUG9zaXRpb24JAAIBAjJwb3NpdGlvbiB0byBsaXF1aWRhdGUgaXMgYmlnZ2VyIHRoYW4gdXNlcidzIHN1cHBseQQOYmFsYW5jZTBCZWZvcmUJAQpnZXRCYWxhbmNlAQULc0Fzc2V0SWRTdHIDCQAAAgUOYmFsYW5jZTBCZWZvcmUFDmJhbGFuY2UwQmVmb3JlBA5iYWxhbmNlMUJlZm9yZQkBCmdldEJhbGFuY2UBBQtiQXNzZXRJZFN0cgMJAAACBQ5iYWxhbmNlMUJlZm9yZQUOYmFsYW5jZTFCZWZvcmUEDmV4Y2hhbmdlSW52b2tlCQD8BwQFEWFnZ3JlZ2F0b3JBZGRyZXNzAgRzd2FwCQDMCAIFCHJvdXRlU3RyCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFC3NBc3NldElkU3RyBQthc3NldEFtb3VudAUDbmlsAwkAAAIFDmV4Y2hhbmdlSW52b2tlBQ5leGNoYW5nZUludm9rZQQKYXNzZXQwU29sZAkAZQIFDmJhbGFuY2UwQmVmb3JlCQEKZ2V0QmFsYW5jZQEFC3NBc3NldElkU3RyAwkAAAIFCmFzc2V0MFNvbGQFCmFzc2V0MFNvbGQEDGFzc2V0MUJvdWdodAkAZQIJAQpnZXRCYWxhbmNlAQULYkFzc2V0SWRTdHIFDmJhbGFuY2UxQmVmb3JlAwkAAAIFDGFzc2V0MUJvdWdodAUMYXNzZXQxQm91Z2h0BAthc3NldDBQcmljZQgJAQ1nZXRUb2tlblByaWNlAQULc0Fzc2V0SWRTdHICXzEEC2Fzc2V0MFNjYWxlCQEOY2FsY0Fzc2V0U2NhbGUBBQtzQXNzZXRJZFN0cgQJYXNzZXQwVXNkCQBrAwUKYXNzZXQwU29sZAULYXNzZXQwUHJpY2UFC2Fzc2V0MFNjYWxlBAthc3NldDFQcmljZQgJAQ1nZXRUb2tlblByaWNlAQULYkFzc2V0SWRTdHICXzIEC2Fzc2V0MVNjYWxlCQEOY2FsY0Fzc2V0U2NhbGUBBQtiQXNzZXRJZFN0cgQJYXNzZXQxVXNkCQBrAwUMYXNzZXQxQm91Z2h0BQthc3NldDFQcmljZQULYXNzZXQxU2NhbGUEB3BlbmFsdHkJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAQx0cnlHZXRTdHJpbmcBAg9zZXR1cF9wZW5hbHRpZXMCASwJAQV2YWx1ZQEJAM8IAgkBD2dldE1hcmtldEFzc2V0cwAFC2JBc3NldElkU3RyBBFsaXF1aWRhdGlvblByb2ZpdAkAZQIFCWFzc2V0MVVzZAkAawMFCWFzc2V0MFVzZAkAZQIFBlNjYWxlOAUHcGVuYWx0eQUGU2NhbGU4BAxzQXNzZXRDaGFuZ2UJAGsDBQphc3NldDBTb2xkBQdTY2FsZTE2BQVzUmF0ZQQMYkFzc2V0Q2hhbmdlCQBrAwkAawMFDGFzc2V0MUJvdWdodAUHU2NhbGUxNgUFYlJhdGUJAGUCBQZTY2FsZTgJAGsDBRFsaXF1aWRhdGlvblByb2ZpdAUGU2NhbGU4BQlhc3NldDFVc2QFBlNjYWxlOAMJAGYCBQphc3NldDBTb2xkBQthc3NldEFtb3VudAkAAgECI21vcmUgYXNzZXRzIGV4Y2hhbmdlZCB0aGFuIGV4cGVjdGVkAwkAZgIAAAURbGlxdWlkYXRpb25Qcm9maXQJAAIBAi9wcmljZSBpbXBhY3QgaXMgYmlnZ2VyIHRoYW4gbGlxdWlkYXRpb24gcGVuYWx0eQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIFB2FkZHJlc3MCCl9zdXBwbGllZF8FC3NBc3NldElkU3RyCQBlAgUQY3VycmVudFNQb3NpdGlvbgUMc0Fzc2V0Q2hhbmdlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgUHYWRkcmVzcwIKX2JvcnJvd2VkXwULYkFzc2V0SWRTdHIJAGUCBRBjdXJyZW50QlBvc2l0aW9uBQxiQXNzZXRDaGFuZ2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgIPdG90YWxfc3VwcGxpZWRfBQtzQXNzZXRJZFN0cgkAZQIJAQ10cnlHZXRJbnRlZ2VyAQkArAICAg90b3RhbF9zdXBwbGllZF8FC3NBc3NldElkU3RyBQxzQXNzZXRDaGFuZ2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgIPdG90YWxfYm9ycm93ZWRfBQtiQXNzZXRJZFN0cgkAZQIJAQ10cnlHZXRJbnRlZ2VyAQkArAICAg90b3RhbF9ib3Jyb3dlZF8FC2JBc3NldElkU3RyBQxiQXNzZXRDaGFuZ2UFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQtsaXF1aWRhdGVWMgMFZGVidWcHYWRkcmVzcwtzQXNzZXRJZFN0cgMJAQEhAQkBFnZlcmlmeUxpcXVpZGF0b3JSaWdodHMBCAUBaQZjYWxsZXIJAAIBAih0ZW1wb3JhcmlseSBhdmFpbGFibGUgZm9yIHdoaXRlbGlzdCBvbmx5AwkBASEBCQENdHJ5R2V0Qm9vbGVhbgECDHNldHVwX2FjdGl2ZQkAAgECEW1hcmtldCBpcyBzdG9wcGVkBAhiQXNzZXRJZAgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAtiQXNzZXRJZFN0cgkBDmdldEFzc2V0U3RyaW5nAQUIYkFzc2V0SWQEDGJBc3NldEFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEDnVzZXJDb2xsYXRlcmFsCQESY2FsY1VzZXJDb2xsYXRlcmFsAQUHYWRkcmVzcwMJAAACBQ51c2VyQ29sbGF0ZXJhbAUOdXNlckNvbGxhdGVyYWwDCQBmAgUOdXNlckNvbGxhdGVyYWwAAAkAAgECGHVzZXIgY2FuJ3QgYmUgbGlxdWlkYXRlZAQMbWFya2V0QXNzZXRzCQEPZ2V0TWFya2V0QXNzZXRzAAQJYXNzZXQxTnVtCQEFdmFsdWUBCQDPCAIFDG1hcmtldEFzc2V0cwULYkFzc2V0SWRTdHIECWFzc2V0ME51bQkBBXZhbHVlAQkAzwgCBQxtYXJrZXRBc3NldHMFC3NBc3NldElkU3RyBA0kdDAyOTgwNzI5ODY5CQENZ2V0QWN0dWFsUmF0ZQIFC2JBc3NldElkU3RyAgViUmF0ZQQFYlJhdGUIBQ0kdDAyOTgwNzI5ODY5Al8xBAtyYXRlc1Jlc3VsdAgFDSR0MDI5ODA3Mjk4NjkCXzIEC2Fzc2V0MVByaWNlCAkBDWdldFRva2VuUHJpY2UBBQtiQXNzZXRJZFN0cgJfMgQLYXNzZXQxU2NhbGUJAQ5jYWxjQXNzZXRTY2FsZQEFC2JBc3NldElkU3RyBApiQW1vdW50VXNkCQBrAwUMYkFzc2V0QW1vdW50BQthc3NldDFQcmljZQULYXNzZXQxU2NhbGUEB3BlbmFsdHkJAQ1wYXJzZUludFZhbHVlAQkBBXZhbHVlAQkAkQMCCQC1CQIJAQx0cnlHZXRTdHJpbmcBAg9zZXR1cF9wZW5hbHRpZXMCASwFCWFzc2V0MU51bQQLYXNzZXQwUHJpY2UICQENZ2V0VG9rZW5QcmljZQEFC3NBc3NldElkU3RyAl8xBAthc3NldDBTY2FsZQkBDmNhbGNBc3NldFNjYWxlAQULc0Fzc2V0SWRTdHIECnNBbW91bnRVc2QJAGsDBQpiQW1vdW50VXNkCQBkAgUGU2NhbGU4BQdwZW5hbHR5BQZTY2FsZTgEDHNBc3NldEFtb3VudAkAawMFCnNBbW91bnRVc2QFC2Fzc2V0MFNjYWxlBQthc3NldDBQcmljZQQHYkFtb3VudAkAawMFDGJBc3NldEFtb3VudAUHU2NhbGUxNgUFYlJhdGUEB3NBbW91bnQJAGsDBQxzQXNzZXRBbW91bnQFB1NjYWxlMTYICQCRAwIFC3JhdGVzUmVzdWx0CQBkAgkAaAIFCWFzc2V0ME51bQADAAEFdmFsdWUEEGN1cnJlbnRTUG9zaXRpb24JAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgIFB2FkZHJlc3MCCl9zdXBwbGllZF8FC3NBc3NldElkU3RyBBNjdXJyZW50QlBvc2l0aW9uVmFsCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICBQdhZGRyZXNzAgpfYm9ycm93ZWRfBQtiQXNzZXRJZFN0cgQQY3VycmVudEJQb3NpdGlvbgMJAGYCBRNjdXJyZW50QlBvc2l0aW9uVmFsAAAFE2N1cnJlbnRCUG9zaXRpb25WYWwJAAIBAiB1c2VyIGhhcyBubyBib3Jyb3cgaW4gdGhpcyB0b2tlbgMJAGYCBQdzQW1vdW50BRBjdXJyZW50U1Bvc2l0aW9uCQACAQIycG9zaXRpb24gdG8gbGlxdWlkYXRlIGlzIGJpZ2dlciB0aGFuIHVzZXIncyBzdXBwbHkDBQVkZWJ1ZwkAAgECFWxpcXVpZGF0aW9uIHdpbGwgcGFzcwkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUMc0Fzc2V0QW1vdW50CQENZ2V0QXNzZXRCeXRlcwEFC3NBc3NldElkU3RyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgUHYWRkcmVzcwIKX3N1cHBsaWVkXwULc0Fzc2V0SWRTdHIJAGUCBRBjdXJyZW50U1Bvc2l0aW9uBQdzQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgUHYWRkcmVzcwIKX2JvcnJvd2VkXwULYkFzc2V0SWRTdHIJAGUCBRBjdXJyZW50QlBvc2l0aW9uBQdiQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICD3RvdGFsX3N1cHBsaWVkXwULc0Fzc2V0SWRTdHIJAGUCCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgIPdG90YWxfc3VwcGxpZWRfBQtzQXNzZXRJZFN0cgUHc0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAg90b3RhbF9ib3Jyb3dlZF8FC2JBc3NldElkU3RyCQBlAgkBDXRyeUdldEludGVnZXIBCQCsAgICD3RvdGFsX2JvcnJvd2VkXwULYkFzc2V0SWRTdHIFB2JBbW91bnQFA25pbAULcmF0ZXNSZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQERZ2V0VXNlckNvbGxhdGVyYWwEBWRlYnVnB2FkZHJlc3MNbWludXNCb3Jyb3dlZAthZnRlckNoYW5nZQQGYXNzZXRzCQEPZ2V0TWFya2V0QXNzZXRzAAQEbHR2cwkAtQkCCQEMdHJ5R2V0U3RyaW5nAQIKc2V0dXBfbHR2cwIBLAQDbHRzCQC1CQIJAQx0cnlHZXRTdHJpbmcBAglzZXR1cF9sdHMCASwEBXJhdGVzCAkBDWdldEFjdHVhbFJhdGUCCQCRAwIFBmFzc2V0cwAAAgVzUmF0ZQJfMgQNY2hhbmdlSGFuZGxlcgkAtQkCBQthZnRlckNoYW5nZQIBLAoBAWYCBWFjY3VtBG5leHQDCQBnAgUEbmV4dAkAkAMBBQZhc3NldHMFBWFjY3VtBAx1c2VyU3VwcGxpZWQJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgIFB2FkZHJlc3MCCl9zdXBwbGllZF8JAJEDAgUGYXNzZXRzBQRuZXh0BAx1c2VyQm9ycm93ZWQJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgIFB2FkZHJlc3MCCl9ib3Jyb3dlZF8JAJEDAgUGYXNzZXRzBQRuZXh0BBNuZWVkVG9rZW5BY2NvdW50aW5nAwkAAAIFC2FmdGVyQ2hhbmdlAgADAwkBAiE9AgUMdXNlckJvcnJvd2VkAAAGCQECIT0CBQx1c2VyU3VwcGxpZWQAAAYHBgMFE25lZWRUb2tlbkFjY291bnRpbmcECmFzc2V0U2NhbGUJAQ5jYWxjQXNzZXRTY2FsZQEJAJEDAgUGYXNzZXRzBQRuZXh0BAphc3NldFByaWNlCQENZ2V0VG9rZW5QcmljZQEJAJEDAgUGYXNzZXRzBQRuZXh0CQBlAgkAZAIFBWFjY3VtCQBrAwkAawMJAGsDCQBkAgUMdXNlclN1cHBsaWVkAwMDCQECIT0CBQthZnRlckNoYW5nZQIACQAAAgkAkQMCBQ1jaGFuZ2VIYW5kbGVyAAAJAJEDAgUGYXNzZXRzBQRuZXh0BwkAAAIJAJEDAgUNY2hhbmdlSGFuZGxlcgABAghzdXBwbGllZAcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ1jaGFuZ2VIYW5kbGVyAAIAAAgJAJEDAgUFcmF0ZXMJAGgCBQRuZXh0AAMFdmFsdWUFB1NjYWxlMTYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsdHZzBQRuZXh0BQZTY2FsZTgIBQphc3NldFByaWNlAl8xBQphc3NldFNjYWxlAwUNbWludXNCb3Jyb3dlZAkAawMJAGsDCQBrAwkAZAIFDHVzZXJCb3Jyb3dlZAMDAwkBAiE9AgULYWZ0ZXJDaGFuZ2UCAAkAAAIJAJEDAgUNY2hhbmdlSGFuZGxlcgAACQCRAwIFBmFzc2V0cwUEbmV4dAcJAAACCQCRAwIFDWNoYW5nZUhhbmRsZXIAAQIIYm9ycm93ZWQHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUNY2hhbmdlSGFuZGxlcgACAAAICQCRAwIFBXJhdGVzCQBkAgkAaAIFBG5leHQAAwABBXZhbHVlBQdTY2FsZTE2BQZTY2FsZTgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsdHMFBG5leHQIBQphc3NldFByaWNlAl8yBQphc3NldFNjYWxlAAAFBWFjY3VtBAZyZXN1bHQKAAIkbAkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYFA25pbAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEBZgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgOAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgDBQVkZWJ1ZwkAAgEJAKQDAQUGcmVzdWx0CQCUCgIFBXJhdGVzBQZyZXN1bHQBaQEJZ2V0UHJpY2VzAQVkZWJ1ZwQGYXNzZXRzCQEPZ2V0TWFya2V0QXNzZXRzAAoBAWYCBWFjY3VtBG5leHQDCQBnAgUEbmV4dAkAkAMBBQZhc3NldHMFBWFjY3VtBAphc3NldFByaWNlCQENZ2V0VG9rZW5QcmljZQEJAJEDAgUGYXNzZXRzBQRuZXh0CQCsAgIJAKwCAgkArAICCQCsAgIFBWFjY3VtCQCkAwEIBQphc3NldFByaWNlAl8xAgEsCQCkAwEIBQphc3NldFByaWNlAl8yAgF8BAZyZXN1bHQKAAIkbAkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYFA25pbAoAAiRzCQCQAwEFAiRsCgAFJGFjYzACAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEBZgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgOAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgDBQVkZWJ1ZwkAAgEFBnJlc3VsdAkAlAoCBQNuaWwFBnJlc3VsdAFpARljYWxjdWxhdGVVdGlsaXphdGlvblJhdGlvAgphc3NldElkU3RyBWRlYnVnAwUFZGVidWcJAAIBCQCkAwEJAQVnZXRVcgEFCmFzc2V0SWRTdHIJAJQKAgUDbmlsCQEFZ2V0VXIBBQphc3NldElkU3RyAWkBE2NhbGN1bGF0ZU91dGRhdGVkVVICCmFzc2V0SWRTdHIFZGVidWcDBQVkZWJ1ZwkAAgEJAKQDAQkBDWdldE91dGRhdGVkVXIBBQphc3NldElkU3RyCQCUCgIFA25pbAkBDWdldE91dGRhdGVkVXIBBQphc3NldElkU3RyAWkBE2NhbGN1bGF0ZVRva2VuUmF0ZXMBBWRlYnVnCgEBZgIFYWNjdW0KYXNzZXRJZFN0cgQFcmF0ZXMJARB0b2tlblJhdGVzUmVjYWxjAQUKYXNzZXRJZFN0cgkAlAoCCQCsAgIJAKwCAgkArAICCQCsAgIIBQVhY2N1bQJfMQkApAMBCAkAkQMCBQVyYXRlcwABBXZhbHVlAgF8CQCkAwEICQCRAwIFBXJhdGVzAAAFdmFsdWUCASwJAM4IAggFBWFjY3VtAl8yBQVyYXRlcwQJcGFyYW1ldGVyCgACJGwJAQ9nZXRNYXJrZXRBc3NldHMACgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCAgAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEBZgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgOAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgDBQVkZWJ1ZwkAAgEIBQlwYXJhbWV0ZXICXzEJAJQKAggFCXBhcmFtZXRlcgJfMggFCXBhcmFtZXRlcgJfMQFpARdjYWxjdWxhdGVUb2tlbnNJbnRlcmVzdAEFZGVidWcKAQFmAgVhY2N1bQphc3NldElkU3RyBARyYXRlCQBrAwkBC2dldEludGVyZXN0AQUKYXNzZXRJZFN0cgUJZGF5QmxvY2tzBQZTY2FsZTgJAKwCAgkArAICBQVhY2N1bQkApAMBBQRyYXRlAgEsBAlwYXJhbWV0ZXIKAAIkbAkBD2dldE1hcmtldEFzc2V0cwAKAAIkcwkAkAMBBQIkbAoABSRhY2MwAgAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBAWYCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDgJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAwUFZGVidWcJAAIBBQlwYXJhbWV0ZXIJAJQKAgUDbmlsBQlwYXJhbWV0ZXIBAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5MVsddw==", "height": 3606828, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: JC3t3h3As57ua9FCTAtzeoqmG5pjxqTUjb1zQVNPUSbC Next: 9DSg1R5kxJ97mehXMKnEc5yGfTR9ZMV7wWP6C2SYMbxo Diff:
OldNewDifferences
673673 func claimToReserveFund (bp) = {
674674 let bq = K()
675675 let af = aa(bq[0], "sRate")._2
676- let p = [0, 1, 2, 3, 4, 5]
676+ let p = [0, 1, 2, 3, 4, 5, 6]
677677 func q (r,br) = if ((br >= size(bq)))
678678 then r
679679 else {
918918 }
919919
920920 let cq = {
921- let t = [0, 1, 2, 3, 4, 5]
921+ let t = [0, 1, 2, 3, 4, 5, 6]
922922 let u = size(t)
923923 let v = 0
924924 func w (x,y) = if ((y >= u))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = Address(base58'3P4kBiU4wr2yV1S5gMfu3MdkVvy7kxXHsKe')
55
66 let b = 20
77
88 let c = Address(base58'3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU')
99
1010 let d = "3PPXVKjN6nRMzXeegcYhfiic96pd2c98Ekm"
1111
1212 let e = [base58'3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL', base58'3PAxdDSmN758L5SHSGRC5apEtQE2aApZotG', base58'3PJKmXoHJvVeQXjSJdhtkUcFDtdiQqMbUTD', base58'3PQdNxynJy5mche2kxMVc5shXWzK8Gstq3o', base58'3PHbdpaKzz8EiAngGHaFu2hVuNCdsC67qh3', base58'3P6Ksahs71SiKQgQ4qaZuFAVhqncdi2nvJQ']
1313
1414 func f (g) = !(if (if ((g != Address(base58'3PCqdm1mAoQqR46oZotFanmqb5CLUvrKEo2')))
1515 then (g != Address(base58'3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL'))
1616 else false)
1717 then (g != Address(base58'3PHbdpaKzz8EiAngGHaFu2hVuNCdsC67qh3'))
1818 else false)
1919
2020
2121 func h (i) = {
2222 let j = i
2323 if (("9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi" == j))
2424 then $Tuple4(2000000, 25000000, 80000000, 100000000)
2525 else if (("HGgabTqUS8WtVFUJzfmrTDMgEccJuZLBPhFgQFxvnsoW" == j))
2626 then $Tuple4(2000000, 25000000, 80000000, 100000000)
2727 else if (("34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ" == j))
2828 then $Tuple4(2000000, 25000000, 80000000, 100000000)
2929 else if (("6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ" == j))
3030 then $Tuple4(2000000, 25000000, 80000000, 100000000)
3131 else if (("DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p" == j))
3232 then $Tuple4(2000000, 25000000, 80000000, 100000000)
3333 else if (("Ajso6nTTjptu2UHLx6hfSXVtHFtRBJCkKYd5SAyj7zf5" == j))
3434 then $Tuple4(2000000, 40000000, 80000000, 150000000)
3535 else if (("HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS" == j))
3636 then $Tuple4(0, 20000000, 80000000, 40000000)
3737 else if (("WAVES" == j))
3838 then $Tuple4(2000000, 30000000, 80000000, 50000000)
3939 else if (("Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on" == j))
4040 then $Tuple4(0, 20000000, 80000000, 40000000)
4141 else if (("DSbbhLsSTeDg5Lsiufk2Aneh3DjVqJuPr2M9uU1gwy5p" == j))
4242 then $Tuple4(0, 20000000, 80000000, 100000000)
4343 else if (("8t4DPWTwPzpatHA9AkTxWAB47THnYzBsDnoY7fQqbG91" == j))
4444 then $Tuple4(0, 30000000, 80000000, 40000000)
4545 else if (("At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL" == j))
4646 then $Tuple4(0, 25000000, 80000000, 40000000)
4747 else if (("8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS" == j))
4848 then $Tuple4(2000000, 30000000, 80000000, 50000000)
4949 else if (("474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu" == j))
5050 then $Tuple4(2000000, 30000000, 80000000, 50000000)
5151 else if (("5UYBPpq4WoU5n4MwpFkgJnW3Fq4B1u3ukpK33ik4QerR" == j))
5252 then $Tuple4(2000000, 30000000, 80000000, 50000000)
5353 else if (("2thsACuHmzDMuNezPM32wg9a3BwUzBWDeSKakgz3cw21" == j))
5454 then $Tuple4(2000000, 40000000, 80000000, 100000000)
5555 else if (("YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7" == j))
5656 then $Tuple4(2000000, 30000000, 80000000, 80000000)
5757 else $Tuple4(0, 20000000, 80000000, 80000000)
5858 }
5959
6060
6161 let k = 100000000
6262
6363 let l = 10000000000
6464
6565 let m = (k * k)
6666
6767 let n = 1440
6868
6969 func o (p) = {
7070 func q (r,s) = ((r + toString(s)) + ",")
7171
7272 let t = p
7373 let u = size(t)
7474 let v = ""
7575 func w (x,y) = if ((y >= u))
7676 then x
7777 else q(x, t[y])
7878
7979 func z (x,y) = if ((y >= u))
8080 then x
8181 else throw("List size exceeds 8")
8282
8383 z(w(w(w(w(w(w(w(w(v, 0), 1), 2), 3), 4), 5), 6), 7), 8)
8484 }
8585
8686
8787 func A (B) = {
8888 let j = getInteger(this, B)
8989 if ($isInstanceOf(j, "Int"))
9090 then {
9191 let C = j
9292 C
9393 }
9494 else 0
9595 }
9696
9797
9898 func D (B) = {
9999 let j = getBoolean(this, B)
100100 if ($isInstanceOf(j, "Boolean"))
101101 then {
102102 let C = j
103103 C
104104 }
105105 else false
106106 }
107107
108108
109109 func E (B) = {
110110 let j = getString(this, B)
111111 if ($isInstanceOf(j, "String"))
112112 then {
113113 let C = j
114114 C
115115 }
116116 else ""
117117 }
118118
119119
120120 func F (B) = {
121121 let j = getBinary(this, B)
122122 if ($isInstanceOf(j, "ByteVector"))
123123 then {
124124 let C = j
125125 C
126126 }
127127 else base58''
128128 }
129129
130130
131131 func G (H) = {
132132 let j = H
133133 if ($isInstanceOf(j, "ByteVector"))
134134 then {
135135 let C = j
136136 toBase58String(C)
137137 }
138138 else "WAVES"
139139 }
140140
141141
142142 func I (i) = if ((i == "WAVES"))
143143 then unit
144144 else fromBase58String(i)
145145
146146
147147 func J (i) = if ((i == "WAVES"))
148148 then wavesBalance(this).available
149149 else assetBalance(this, fromBase58String(i))
150150
151151
152152 func K () = split(E("setup_tokens"), ",")
153153
154154
155155 func L () = {
156156 let M = E("setup_maxsupply")
157157 if ((M == ""))
158158 then [-1, -1, -1, -1, -1, -1, -1]
159159 else split(M, ",")
160160 }
161161
162162
163163 func N (i) = {
164164 let O = fraction(A(("total_supplied_" + i)), A((i + "_sRate")), m)
165165 if ((O == 0))
166166 then 0
167167 else fraction(k, fraction(A(("total_borrowed_" + i)), A((i + "_bRate")), m), O)
168168 }
169169
170170
171171 func P (i) = {
172172 let Q = N(i)
173173 let R = h(i)
174174 let S = (R._1 + (if ((R._3 >= Q))
175175 then fraction(Q, R._2, R._3)
176176 else (R._2 + fraction((Q - R._3), R._4, (100000000 - R._3)))))
177177 max([fraction(S, k, (n * 365)), 1])
178178 }
179179
180180
181181 func T (i) = {
182182 let U = P(i)
183183 let Q = N(i)
184184 let V = A("lastRateHeight")
185185 let W = max([A((i + "_bRate")), m])
186186 let X = (W + ((height - V) * U))
187187 let Y = max([A((i + "_sRate")), m])
188188 let Z = (Y + ((((height - V) * fraction(U, Q, k)) * (100 - b)) / 100))
189189 [IntegerEntry((i + "_sRate"), Z), IntegerEntry((i + "_bRate"), X), IntegerEntry("lastRateHeight", height)]
190190 }
191191
192192
193193 func aa (i,ab) = {
194194 func q (r,ac) = {
195195 let ad = T(ac)
196196 $Tuple2(if ((ac != i))
197197 then r._1
198198 else if ((ab == "sRate"))
199199 then ad[0].value
200200 else ad[1].value, (r._2 ++ ad))
201201 }
202202
203203 let t = K()
204204 let u = size(t)
205205 let v = $Tuple2(0, nil)
206206 func w (x,y) = if ((y >= u))
207207 then x
208208 else q(x, t[y])
209209
210210 func z (x,y) = if ((y >= u))
211211 then x
212212 else throw("List size exceeds 8")
213213
214214 z(w(w(w(w(w(w(w(w(v, 0), 1), 2), 3), 4), 5), 6), 7), 8)
215215 }
216216
217217
218218 func ae (i) = {
219219 let af = T(i)
220220 let O = fraction(A(("total_supplied_" + i)), af[0].value, m)
221221 fraction(k, fraction(A(("total_borrowed_" + i)), af[1].value, m), O)
222222 }
223223
224224
225225 func ag () = {
226226 func q (r,ac) = (r ++ T(ac))
227227
228228 let t = K()
229229 let u = size(t)
230230 let v = nil
231231 func w (x,y) = if ((y >= u))
232232 then x
233233 else q(x, t[y])
234234
235235 func z (x,y) = if ((y >= u))
236236 then x
237237 else throw("List size exceeds 8")
238238
239239 z(w(w(w(w(w(w(w(w(v, 0), 1), 2), 3), 4), 5), 6), 7), 8)
240240 }
241241
242242
243243 func ah (i) = if (if ((i == "9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi"))
244244 then true
245245 else (i == "HGgabTqUS8WtVFUJzfmrTDMgEccJuZLBPhFgQFxvnsoW"))
246246 then $Tuple2(1000000, 1000000)
247247 else {
248248 let ai = invoke(addressFromStringValue(d), "getTWAP60", [i, false], nil)
249249 if ((ai == ai))
250250 then {
251251 let aj = {
252252 let j = ai
253253 if ($isInstanceOf(j, "(Int, Int)"))
254254 then {
255255 let ak = j
256256 ak
257257 }
258258 else throw("error of price oracle")
259259 }
260260 if ((aj == aj))
261261 then aj
262262 else throw("Strict value is not equal to itself.")
263263 }
264264 else throw("Strict value is not equal to itself.")
265265 }
266266
267267
268268 func al (i) = {
269269 let am = if ((i == "WAVES"))
270270 then 8
271271 else value(assetInfo(fromBase58String(i))).decimals
272272 pow(10, 0, am, 0, 0, DOWN)
273273 }
274274
275275
276276 func an (g) = {
277277 let ao = invoke(this, "getUserCollateral", [false, g, true, ""], nil)
278278 if ((ao == ao))
279279 then {
280280 let ap = {
281281 let j = ao
282282 if ($isInstanceOf(j, "Int"))
283283 then {
284284 let ak = j
285285 ak
286286 }
287287 else throw("issue while doing in-dapp invocation")
288288 }
289289 if ((ap == ap))
290290 then ap
291291 else throw("Strict value is not equal to itself.")
292292 }
293293 else throw("Strict value is not equal to itself.")
294294 }
295295
296296
297297 @Callable(aq)
298298 func supply () = if (!(D("setup_active")))
299299 then throw("market is stopped")
300300 else if (if ((size(aq.payments) != 1))
301301 then true
302302 else (aq.payments[0].amount == 0))
303303 then throw("1 payment has to be attached")
304304 else {
305305 let i = G(aq.payments[0].assetId)
306306 let ar = aq.payments[0].amount
307307 let as = aa(i, "sRate")
308308 let at = as._1
309309 let au = as._2
310310 let av = fraction(ar, m, at, DOWN)
311311 let g = toString(aq.caller)
312312 let aw = {
313313 let j = getString(("setup_maxSupply_" + i))
314314 if ($isInstanceOf(j, "String"))
315315 then {
316316 let ak = j
317317 parseIntValue(ak)
318318 }
319319 else 0
320320 }
321321 let ax = ah(i)
322322 let ay = (A(((g + "_supplied_") + i)) + av)
323323 let S = aa(i, "sRate")._1
324324 let az = al(i)
325325 let aA = fraction(fraction(ay, S, m), ax._1, az)
326326 if ((indexOf(E("setup_tokens"), i) == unit))
327327 then throw("this asset is not supported by the market")
328328 else if (if ((aw != 0))
329329 then (aA > aw)
330330 else false)
331331 then throw("max total supply for this token reached in the pool")
332332 else ([IntegerEntry(((g + "_supplied_") + i), ay), IntegerEntry(("total_supplied_" + i), (A(("total_supplied_" + i)) + av))] ++ au)
333333 }
334334
335335
336336
337337 @Callable(aq)
338338 func withdraw (i,ar) = {
339339 let aB = aa(i, "sRate")
340340 let at = aB._1
341341 let au = aB._2
342342 let av = fraction(ar, m, at, CEILING)
343343 let g = toString(aq.caller)
344344 let aC = A(("total_supplied_" + i))
345345 let aD = A(("total_borrowed_" + i))
346346 let aE = A(((g + "_supplied_") + i))
347347 let aF = A(((g + "_borrowed_") + i))
348348 let aG = invoke(this, "getUserCollateral", [false, g, true, ((i + ",supplied,") + toString(-(av)))], nil)
349349 if ((aG == aG))
350350 then {
351351 let aH = {
352352 let j = aG
353353 if ($isInstanceOf(j, "Int"))
354354 then {
355355 let ak = j
356356 ak
357357 }
358358 else throw("can't get user collateral value")
359359 }
360360 if (!(D("setup_active")))
361361 then throw("market is stopped")
362362 else if ((0 > aH))
363363 then throw("you dont have enough collateral for this operation")
364364 else if ((av > (aC - aD)))
365365 then throw("this amount is not available on the market")
366366 else if ((av > (aE - aF)))
367367 then throw("this amount is not available for this user")
368368 else ([IntegerEntry(((g + "_supplied_") + i), (A(((g + "_supplied_") + i)) - av)), IntegerEntry(("total_supplied_" + i), (A(("total_supplied_" + i)) - av)), ScriptTransfer(aq.caller, ar, I(i))] ++ au)
369369 }
370370 else throw("Strict value is not equal to itself.")
371371 }
372372
373373
374374
375375 @Callable(aq)
376376 func borrow (i,ar) = {
377377 let g = toString(aq.caller)
378378 let aI = aa(i, "bRate")
379379 let aJ = aI._1
380380 let au = aI._2
381381 let av = fraction(ar, m, aJ, CEILING)
382382 let aG = invoke(this, "getUserCollateral", [false, g, true, ((i + ",borrowed,") + toString(av))], nil)
383383 if ((aG == aG))
384384 then {
385385 let aH = {
386386 let j = aG
387387 if ($isInstanceOf(j, "Int"))
388388 then {
389389 let ak = j
390390 ak
391391 }
392392 else throw("can't get user collateral value")
393393 }
394394 if (!(D("setup_active")))
395395 then throw("market is stopped")
396396 else if ((0 > aH))
397397 then throw("you have to supply more to borrow")
398398 else {
399399 let aC = A(("total_supplied_" + i))
400400 let aD = A(("total_borrowed_" + i))
401401 let aF = A(((g + "_borrowed_") + i))
402402 if ((av > (aC - aD)))
403403 then throw("this amount is not available")
404404 else ([IntegerEntry(((g + "_borrowed_") + i), (aF + av)), IntegerEntry(("total_borrowed_" + i), (aD + av)), ScriptTransfer(aq.caller, ar, I(i))] ++ au)
405405 }
406406 }
407407 else throw("Strict value is not equal to itself.")
408408 }
409409
410410
411411
412412 @Callable(aq)
413413 func repay () = if (!(D("setup_active")))
414414 then throw("market is stopped")
415415 else if (if ((size(aq.payments) != 1))
416416 then true
417417 else (aq.payments[0].amount == 0))
418418 then throw("1 payment has to be attached")
419419 else {
420420 let i = G(aq.payments[0].assetId)
421421 let ar = aq.payments[0].amount
422422 let aK = aa(i, "bRate")
423423 let aJ = aK._1
424424 let au = aK._2
425425 let av = fraction(ar, m, aJ, CEILING)
426426 let g = toString(aq.caller)
427427 let aC = A(("total_supplied_" + i))
428428 let aD = A(("total_borrowed_" + i))
429429 let aF = A(((g + "_borrowed_") + i))
430430 let aL = (aF - av)
431431 let aM = if ((aL >= 0))
432432 then av
433433 else aF
434434 if ((indexOf(E("setup_tokens"), i) == unit))
435435 then throw("this asset is not supported by the market")
436436 else (([IntegerEntry(((g + "_borrowed_") + i), (aF - aM)), IntegerEntry(("total_borrowed_" + i), (aD - aM))] ++ au) ++ (if ((aL >= 0))
437437 then nil
438438 else [ScriptTransfer(aq.caller, -(aL), aq.payments[0].assetId)]))
439439 }
440440
441441
442442
443443 @Callable(aq)
444444 func stakeTokenAll (i) = if ((aq.caller != this))
445445 then throw("only for internal smart contract invocations")
446446 else {
447447 let av = J(i)
448448 let aN = invoke(this, "stakeToken", [i, av], nil)
449449 if ((aN == aN))
450450 then nil
451451 else throw("Strict value is not equal to itself.")
452452 }
453453
454454
455455
456456 @Callable(aq)
457457 func stakeToken (i,av) = if ((aq.caller != this))
458458 then throw("only for internal smart contract invocations")
459459 else if ((i == "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"))
460460 then {
461461 let aO = A("autostake_amount_DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p")
462462 let aN = invoke(Address(base58'3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ'), "stake", nil, [AttachedPayment(base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p', av)])
463463 if ((aN == aN))
464464 then [IntegerEntry("autostake_amount_DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p", (aO + av))]
465465 else throw("Strict value is not equal to itself.")
466466 }
467467 else if ((i == "8t4DPWTwPzpatHA9AkTxWAB47THnYzBsDnoY7fQqbG91"))
468468 then {
469469 let aO = A("autostake_amount_8t4DPWTwPzpatHA9AkTxWAB47THnYzBsDnoY7fQqbG91")
470470 let aN = invoke(Address(base58'3PQTM38wDmAY9vWonK6ha7QL3PAycLz5oPP'), "stake", nil, [AttachedPayment(base58'8t4DPWTwPzpatHA9AkTxWAB47THnYzBsDnoY7fQqbG91', av)])
471471 if ((aN == aN))
472472 then [IntegerEntry("autostake_amount_8t4DPWTwPzpatHA9AkTxWAB47THnYzBsDnoY7fQqbG91", (aO + av))]
473473 else throw("Strict value is not equal to itself.")
474474 }
475475 else if ((i == "At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL"))
476476 then {
477477 let aO = A("autostake_amount_At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL")
478478 let aN = invoke(Address(base58'3PBiotFpqjRMkkeFBccnQNUXUopy7KFez5C'), "stake", nil, [AttachedPayment(base58'At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL', av)])
479479 if ((aN == aN))
480480 then [IntegerEntry("autostake_amount_At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL", (aO + av))]
481481 else throw("Strict value is not equal to itself.")
482482 }
483483 else nil
484484
485485
486486
487487 @Callable(aq)
488488 func unstakeToken (i,av) = if ((aq.caller != this))
489489 then throw("only for internal smart contract invocations")
490490 else if ((i == "8t4DPWTwPzpatHA9AkTxWAB47THnYzBsDnoY7fQqbG91"))
491491 then {
492492 let aO = A("autostake_amount_8t4DPWTwPzpatHA9AkTxWAB47THnYzBsDnoY7fQqbG91")
493493 let aN = invoke(Address(base58'3PQTM38wDmAY9vWonK6ha7QL3PAycLz5oPP'), "unStake", [av], nil)
494494 if ((aN == aN))
495495 then [IntegerEntry("autostake_amount_8t4DPWTwPzpatHA9AkTxWAB47THnYzBsDnoY7fQqbG91", (aO - av))]
496496 else throw("Strict value is not equal to itself.")
497497 }
498498 else if ((i == "At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL"))
499499 then {
500500 let aO = A("autostake_amount_At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL")
501501 let aN = invoke(Address(base58'3PBiotFpqjRMkkeFBccnQNUXUopy7KFez5C'), "unstake", [av], nil)
502502 if ((aN == aN))
503503 then {
504504 let aP = J("At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL")
505505 if ((aP == aP))
506506 then {
507507 let aQ = invoke(Address(base58'3PQrVbTVpqXHqpVKftkNdjy3zZAh4dsRzN6'), "gnsbtRewardsSYSREADONLY", [toString(this)], nil)
508508 if ((aQ == aQ))
509509 then {
510510 let aR = {
511511 let j = aQ
512512 if ($isInstanceOf(j, "List[Any]"))
513513 then {
514514 let ak = j
515515 let aS = ak[1]
516516 let aT = aS
517517 if ($isInstanceOf(aT, "String"))
518518 then {
519519 let aS = aT
520520 let aU = parseIntValue(split(split(aS, "_")[1], ":")[1])
521521 let aV = parseIntValue(split(split(aS, "_")[0], ":")[1])
522522 if (if ((aU != 0))
523523 then true
524524 else (aV != 0))
525525 then {
526526 let aW = J("DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p")
527527 if ((aW == aW))
528528 then {
529529 let aX = J("WAVES")
530530 if ((aX == aX))
531531 then {
532532 let ai = invoke(Address(base58'3PBiotFpqjRMkkeFBccnQNUXUopy7KFez5C'), "claimRewards", nil, nil)
533533 if ((ai == ai))
534534 then {
535535 let aY = J("WAVES")
536536 if ((aY == aY))
537537 then {
538538 let aZ = invoke(Address(base58'3PLiXyywNThdvf3vVEUxwc7TJTucjZvuegh'), "swap", ["DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p", 0], [AttachedPayment(unit, (aY - aX))])
539539 if ((aZ == aZ))
540540 then {
541541 let ba = J("DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p")
542542 if ((ba == ba))
543543 then {
544544 let bb = invoke(Address(base58'3P7r93vXHuusageNJVGwzqaz3WMotAu49Yz'), "swap", ["At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL", 0], [AttachedPayment(base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p', (ba - aW))])
545545 if ((bb == bb))
546546 then {
547547 let bc = invoke(this, "addInterest", ["At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL", (J("At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL") - aP)], nil)
548548 if ((bc == bc))
549549 then 2
550550 else throw("Strict value is not equal to itself.")
551551 }
552552 else throw("Strict value is not equal to itself.")
553553 }
554554 else throw("Strict value is not equal to itself.")
555555 }
556556 else throw("Strict value is not equal to itself.")
557557 }
558558 else throw("Strict value is not equal to itself.")
559559 }
560560 else throw("Strict value is not equal to itself.")
561561 }
562562 else throw("Strict value is not equal to itself.")
563563 }
564564 else throw("Strict value is not equal to itself.")
565565 }
566566 else 1
567567 }
568568 else 1
569569 }
570570 else 0
571571 }
572572 if ((aR == aR))
573573 then [IntegerEntry("autostake_amount_At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL", (aO - av))]
574574 else throw("Strict value is not equal to itself.")
575575 }
576576 else throw("Strict value is not equal to itself.")
577577 }
578578 else throw("Strict value is not equal to itself.")
579579 }
580580 else throw("Strict value is not equal to itself.")
581581 }
582582 else nil
583583
584584
585585
586586 @Callable(aq)
587587 func addInterest (i,av) = if ((aq.caller != this))
588588 then throw("only for self invocation")
589589 else {
590590 let bd = A(("autostake_lastEarned_" + i))
591591 let be = A(("autostake_lastBlock_" + i))
592592 let bf = fraction(av, 80, 100)
593593 let bg = if (if ((be == height))
594594 then true
595595 else (av == 0))
596596 then nil
597597 else [IntegerEntry(("autostake_preLastEarned_" + i), bd), IntegerEntry(("autostake_preLastBlock_" + i), be), IntegerEntry(("autostake_lastEarned_" + i), (bd + bf)), IntegerEntry(("autostake_lastBlock_" + i), height)]
598598 (bg ++ [IntegerEntry((i + "_sRate"), (A((i + "_sRate")) + fraction(m, bf, A(("total_supplied_" + i)))))])
599599 }
600600
601601
602602
603603 @Callable(aq)
604604 func addInterestEXTERNAL () = {
605605 let av = fraction(aq.payments[0].amount, 80, 100)
606606 let H = aq.payments[0].assetId
607607 let i = G(H)
608608 let bd = A(("autostake_lastEarned_" + i))
609609 let be = A(("autostake_lastBlock_" + i))
610610 let bg = if (if ((be == height))
611611 then true
612612 else (av == 0))
613613 then nil
614614 else [IntegerEntry(("autostake_preLastEarned_" + i), bd), IntegerEntry(("autostake_preLastBlock_" + i), be), IntegerEntry(("autostake_lastEarned_" + i), (bd + av)), IntegerEntry(("autostake_lastBlock_" + i), height)]
615615 (bg ++ [IntegerEntry((i + "_sRate"), (A((i + "_sRate")) + fraction(m, av, A(("total_supplied_" + i)))))])
616616 }
617617
618618
619619
620620 @Callable(aq)
621621 func preInit (bh,bi,bj,bk) = {
622622 func q (r,ac) = (r ++ [IntegerEntry((ac + "_bRate"), m), IntegerEntry((ac + "_sRate"), m)])
623623
624624 if ((aq.caller != this))
625625 then throw("admin only")
626626 else {
627627 let af = {
628628 let t = split(bh, ",")
629629 let u = size(t)
630630 let v = nil
631631 func w (x,y) = if ((y >= u))
632632 then x
633633 else q(x, t[y])
634634
635635 func z (x,y) = if ((y >= u))
636636 then x
637637 else throw("List size exceeds 8")
638638
639639 z(w(w(w(w(w(w(w(w(v, 0), 1), 2), 3), 4), 5), 6), 7), 8)
640640 }
641641 ([StringEntry("setup_tokens", bh), StringEntry("setup_ltvs", bi), StringEntry("setup_lts", bj), StringEntry("setup_penalties", bk), BooleanEntry("setup_active", true)] ++ af)
642642 }
643643 }
644644
645645
646646
647647 @Callable(aq)
648648 func initNewToken (ac,bl,bm,bn) = if ((aq.caller != this))
649649 then throw("admin only")
650650 else [StringEntry("setup_tokens", ((E("setup_tokens") + ",") + ac)), StringEntry("setup_ltvs", ((E("setup_ltvs") + ",") + bl)), StringEntry("setup_lts", ((E("setup_lts") + ",") + bm)), StringEntry("setup_penalties", ((E("setup_penalties") + ",") + bn)), IntegerEntry((ac + "_bRate"), m), IntegerEntry((ac + "_sRate"), m)]
651651
652652
653653
654654 @Callable(aq)
655655 func updateParameter (B,bo) = if (if ((aq.caller != this))
656656 then (aq.caller != Address(base58'3P3o9cLTV2u9N4nYNKRYL6gy6cUEU9DwXW8'))
657657 else false)
658658 then throw("admin only")
659659 else [IntegerEntry(B, parseIntValue(bo))]
660660
661661
662662
663663 @Callable(aq)
664664 func updateString (B,bo) = if (if ((aq.caller != this))
665665 then (aq.caller != Address(base58'3P3o9cLTV2u9N4nYNKRYL6gy6cUEU9DwXW8'))
666666 else false)
667667 then throw("admin only")
668668 else [StringEntry(B, bo)]
669669
670670
671671
672672 @Callable(aq)
673673 func claimToReserveFund (bp) = {
674674 let bq = K()
675675 let af = aa(bq[0], "sRate")._2
676- let p = [0, 1, 2, 3, 4, 5]
676+ let p = [0, 1, 2, 3, 4, 5, 6]
677677 func q (r,br) = if ((br >= size(bq)))
678678 then r
679679 else {
680680 let i = bq[br]
681681 let bs = E(("autostake_amount_" + i))
682682 let av = ((((J(i) + A(("autostake_amount_" + i))) + (if ((bs != ""))
683683 then parseIntValue(bs)
684684 else 0)) + fraction(A(("total_borrowed_" + i)), af[((br * 3) + 1)].value, m)) - fraction(A(("total_supplied_" + i)), af[(br * 3)].value, m))
685685 (r ++ [av])
686686 }
687687
688688 let bt = {
689689 let t = p
690690 let u = size(t)
691691 let v = nil
692692 func w (x,y) = if ((y >= u))
693693 then x
694694 else q(x, t[y])
695695
696696 func z (x,y) = if ((y >= u))
697697 then x
698698 else throw("List size exceeds 8")
699699
700700 z(w(w(w(w(w(w(w(w(v, 0), 1), 2), 3), 4), 5), 6), 7), 8)
701701 }
702702 func bu (r,br) = if ((br >= size(bq)))
703703 then r
704704 else {
705705 let i = bq[br]
706706 (r ++ [ScriptTransfer(a, max([bt[br], 0]), I(i))])
707707 }
708708
709709 if (bp)
710710 then throw(o(bt))
711711 else $Tuple2({
712712 let t = p
713713 let u = size(t)
714714 let v = nil
715715 func bv (x,y) = if ((y >= u))
716716 then x
717717 else bu(x, t[y])
718718
719719 func bw (x,y) = if ((y >= u))
720720 then x
721721 else throw("List size exceeds 8")
722722
723723 bw(bv(bv(bv(bv(bv(bv(bv(bv(v, 0), 1), 2), 3), 4), 5), 6), 7), 8)
724724 }, bt)
725725 }
726726
727727
728728
729729 @Callable(aq)
730730 func reSetup (i) = {
731731 let bx = A("resetup_lastUpdate")
732732 if ((n > (height - bx)))
733733 then throw("can be updated only once per day")
734734 else {
735735 let bj = split(E("setup_lts"), ",")
736736 let bq = K()
737737 let Q = ae(i)
738738 let by = A((("setup_" + i) + "_tempLT"))
739739 let bm = parseIntValue(bq[value(indexOf(bq, i))])
740740 if ((Q > 90000000))
741741 then [IntegerEntry((("setup_" + i) + "_tempLT"), fraction(by, 9975, 10000))]
742742 else if (if ((bm > by))
743743 then (90000000 > Q)
744744 else false)
745745 then [IntegerEntry((("setup_" + i) + "_tempLT"), fraction(by, 10025, 10000))]
746746 else nil
747747 }
748748 }
749749
750750
751751
752752 @Callable(aq)
753753 func shutdown (bz) = if ((indexOf(e, aq.caller.bytes) == unit))
754754 then throw("user not in a whitelist")
755755 else [BooleanEntry("setup_active", !(bz))]
756756
757757
758758
759759 @Callable(aq)
760760 func liquidate (bp,g,ar,bA,bB,bC) = if (!(f(aq.caller)))
761761 then throw("temporarily available for whitelist only")
762762 else if (!(D("setup_active")))
763763 then throw("market is stopped")
764764 else {
765765 let bD = an(g)
766766 if ((bD == bD))
767767 then {
768768 let bE = aa(bA, "sRate")
769769 let at = bE._1
770770 let bF = bE._2
771771 let bG = aa(bB, "bRate")
772772 let aJ = bG._1
773773 let bH = bG._2
774774 let bI = fraction(ar, m, at)
775775 let bJ = A(((g + "_supplied_") + bA))
776776 let bK = A(((g + "_borrowed_") + bB))
777777 let bL = if ((bK > 0))
778778 then bK
779779 else throw("user has no borrow in this token")
780780 if ((bD > 0))
781781 then throw("user can't be liquidated")
782782 else if ((bI > bJ))
783783 then throw("position to liquidate is bigger than user's supply")
784784 else {
785785 let bM = J(bA)
786786 if ((bM == bM))
787787 then {
788788 let bN = J(bB)
789789 if ((bN == bN))
790790 then {
791791 let bO = invoke(c, "swap", [bC, 0], [AttachedPayment(I(bA), ar)])
792792 if ((bO == bO))
793793 then {
794794 let bP = (bM - J(bA))
795795 if ((bP == bP))
796796 then {
797797 let bQ = (J(bB) - bN)
798798 if ((bQ == bQ))
799799 then {
800800 let bR = ah(bA)._1
801801 let bS = al(bA)
802802 let bT = fraction(bP, bR, bS)
803803 let bU = ah(bB)._2
804804 let bV = al(bB)
805805 let bW = fraction(bQ, bU, bV)
806806 let bn = parseIntValue(split(E("setup_penalties"), ",")[value(indexOf(K(), bB))])
807807 let bX = (bW - fraction(bT, (k - bn), k))
808808 let bY = fraction(bP, m, at)
809809 let bZ = fraction(fraction(bQ, m, aJ), (k - fraction(bX, k, bW)), k)
810810 if ((bP > ar))
811811 then throw("more assets exchanged than expected")
812812 else if ((0 > bX))
813813 then throw("price impact is bigger than liquidation penalty")
814814 else [IntegerEntry(((g + "_supplied_") + bA), (bJ - bY)), IntegerEntry(((g + "_borrowed_") + bB), (bL - bZ)), IntegerEntry(("total_supplied_" + bA), (A(("total_supplied_" + bA)) - bY)), IntegerEntry(("total_borrowed_" + bB), (A(("total_borrowed_" + bB)) - bZ))]
815815 }
816816 else throw("Strict value is not equal to itself.")
817817 }
818818 else throw("Strict value is not equal to itself.")
819819 }
820820 else throw("Strict value is not equal to itself.")
821821 }
822822 else throw("Strict value is not equal to itself.")
823823 }
824824 else throw("Strict value is not equal to itself.")
825825 }
826826 }
827827 else throw("Strict value is not equal to itself.")
828828 }
829829
830830
831831
832832 @Callable(aq)
833833 func liquidateV2 (bp,g,bA) = if (!(f(aq.caller)))
834834 then throw("temporarily available for whitelist only")
835835 else if (!(D("setup_active")))
836836 then throw("market is stopped")
837837 else {
838838 let ca = aq.payments[0].assetId
839839 let bB = G(ca)
840840 let cb = aq.payments[0].amount
841841 let bD = an(g)
842842 if ((bD == bD))
843843 then if ((bD > 0))
844844 then throw("user can't be liquidated")
845845 else {
846846 let cc = K()
847847 let cd = value(indexOf(cc, bB))
848848 let ce = value(indexOf(cc, bA))
849849 let cf = aa(bB, "bRate")
850850 let aJ = cf._1
851851 let bF = cf._2
852852 let bU = ah(bB)._2
853853 let bV = al(bB)
854854 let cg = fraction(cb, bU, bV)
855855 let bn = parseIntValue(value(split(E("setup_penalties"), ",")[cd]))
856856 let bR = ah(bA)._1
857857 let bS = al(bA)
858858 let ch = fraction(cg, (k + bn), k)
859859 let bI = fraction(ch, bS, bR)
860860 let ci = fraction(cb, m, aJ)
861861 let cj = fraction(bI, m, bF[((ce * 3) + 1)].value)
862862 let bJ = A(((g + "_supplied_") + bA))
863863 let bK = A(((g + "_borrowed_") + bB))
864864 let bL = if ((bK > 0))
865865 then bK
866866 else throw("user has no borrow in this token")
867867 if ((cj > bJ))
868868 then throw("position to liquidate is bigger than user's supply")
869869 else if (bp)
870870 then throw("liquidation will pass")
871871 else ([ScriptTransfer(aq.caller, bI, I(bA)), IntegerEntry(((g + "_supplied_") + bA), (bJ - cj)), IntegerEntry(((g + "_borrowed_") + bB), (bL - ci)), IntegerEntry(("total_supplied_" + bA), (A(("total_supplied_" + bA)) - cj)), IntegerEntry(("total_borrowed_" + bB), (A(("total_borrowed_" + bB)) - ci))] ++ bF)
872872 }
873873 else throw("Strict value is not equal to itself.")
874874 }
875875
876876
877877
878878 @Callable(aq)
879879 func getUserCollateral (bp,g,ck,cl) = {
880880 let bq = K()
881881 let bi = split(E("setup_ltvs"), ",")
882882 let bj = split(E("setup_lts"), ",")
883883 let af = aa(bq[0], "sRate")._2
884884 let cm = split(cl, ",")
885885 func q (r,s) = if ((s >= size(bq)))
886886 then r
887887 else {
888888 let cn = A(((g + "_supplied_") + bq[s]))
889889 let co = A(((g + "_borrowed_") + bq[s]))
890890 let cp = if ((cl == ""))
891891 then if (if ((co != 0))
892892 then true
893893 else (cn != 0))
894894 then true
895895 else false
896896 else true
897897 if (cp)
898898 then {
899899 let az = al(bq[s])
900900 let ax = ah(bq[s])
901901 ((r + fraction(fraction(fraction((cn + (if (if (if ((cl != ""))
902902 then (cm[0] == bq[s])
903903 else false)
904904 then (cm[1] == "supplied")
905905 else false)
906906 then parseIntValue(cm[2])
907907 else 0)), af[(s * 3)].value, m), parseIntValue(bi[s]), k), ax._1, az)) - (if (ck)
908908 then fraction(fraction(fraction((co + (if (if (if ((cl != ""))
909909 then (cm[0] == bq[s])
910910 else false)
911911 then (cm[1] == "borrowed")
912912 else false)
913913 then parseIntValue(cm[2])
914914 else 0)), af[((s * 3) + 1)].value, m), k, parseIntValue(bj[s])), ax._2, az)
915915 else 0))
916916 }
917917 else r
918918 }
919919
920920 let cq = {
921- let t = [0, 1, 2, 3, 4, 5]
921+ let t = [0, 1, 2, 3, 4, 5, 6]
922922 let u = size(t)
923923 let v = 0
924924 func w (x,y) = if ((y >= u))
925925 then x
926926 else q(x, t[y])
927927
928928 func z (x,y) = if ((y >= u))
929929 then x
930930 else throw("List size exceeds 8")
931931
932932 z(w(w(w(w(w(w(w(w(v, 0), 1), 2), 3), 4), 5), 6), 7), 8)
933933 }
934934 if (bp)
935935 then throw(toString(cq))
936936 else $Tuple2(af, cq)
937937 }
938938
939939
940940
941941 @Callable(aq)
942942 func getPrices (bp) = {
943943 let bq = K()
944944 func q (r,s) = if ((s >= size(bq)))
945945 then r
946946 else {
947947 let ax = ah(bq[s])
948948 ((((r + toString(ax._1)) + ",") + toString(ax._2)) + "|")
949949 }
950950
951951 let cq = {
952952 let t = [0, 1, 2, 3, 4, 5, 6]
953953 let u = size(t)
954954 let v = ""
955955 func w (x,y) = if ((y >= u))
956956 then x
957957 else q(x, t[y])
958958
959959 func z (x,y) = if ((y >= u))
960960 then x
961961 else throw("List size exceeds 8")
962962
963963 z(w(w(w(w(w(w(w(w(v, 0), 1), 2), 3), 4), 5), 6), 7), 8)
964964 }
965965 if (bp)
966966 then throw(cq)
967967 else $Tuple2(nil, cq)
968968 }
969969
970970
971971
972972 @Callable(aq)
973973 func calculateUtilizationRatio (i,bp) = if (bp)
974974 then throw(toString(ae(i)))
975975 else $Tuple2(nil, ae(i))
976976
977977
978978
979979 @Callable(aq)
980980 func calculateOutdatedUR (i,bp) = if (bp)
981981 then throw(toString(N(i)))
982982 else $Tuple2(nil, N(i))
983983
984984
985985
986986 @Callable(aq)
987987 func calculateTokenRates (bp) = {
988988 func q (r,i) = {
989989 let af = T(i)
990990 $Tuple2(((((r._1 + toString(af[1].value)) + "|") + toString(af[0].value)) + ","), (r._2 ++ af))
991991 }
992992
993993 let bt = {
994994 let t = K()
995995 let u = size(t)
996996 let v = $Tuple2("", nil)
997997 func w (x,y) = if ((y >= u))
998998 then x
999999 else q(x, t[y])
10001000
10011001 func z (x,y) = if ((y >= u))
10021002 then x
10031003 else throw("List size exceeds 8")
10041004
10051005 z(w(w(w(w(w(w(w(w(v, 0), 1), 2), 3), 4), 5), 6), 7), 8)
10061006 }
10071007 if (bp)
10081008 then throw(bt._1)
10091009 else $Tuple2(bt._2, bt._1)
10101010 }
10111011
10121012
10131013
10141014 @Callable(aq)
10151015 func calculateTokensInterest (bp) = {
10161016 func q (r,i) = {
10171017 let S = fraction(P(i), n, k)
10181018 ((r + toString(S)) + ",")
10191019 }
10201020
10211021 let bt = {
10221022 let t = K()
10231023 let u = size(t)
10241024 let v = ""
10251025 func w (x,y) = if ((y >= u))
10261026 then x
10271027 else q(x, t[y])
10281028
10291029 func z (x,y) = if ((y >= u))
10301030 then x
10311031 else throw("List size exceeds 8")
10321032
10331033 z(w(w(w(w(w(w(w(w(v, 0), 1), 2), 3), 4), 5), 6), 7), 8)
10341034 }
10351035 if (bp)
10361036 then throw(bt)
10371037 else $Tuple2(nil, bt)
10381038 }
10391039
10401040
10411041 @Verifier(cr)
10421042 func cs () = sigVerify(cr.bodyBytes, cr.proofs[0], cr.senderPublicKey)
10431043

github/deemru/w8io/3ef1775 
99.54 ms