tx · FLMFT8HhkkskmVWkva4CfpGyrwrdwaiw77TudejEZL22

3PBbLJcBjLWUZZrFFUk5s53TdTUneHXDc7e:  -0.01700000 Waves

2023.10.07 09:27 [3853677] smart account 3PBbLJcBjLWUZZrFFUk5s53TdTUneHXDc7e > SELF 0.00000000 Waves

{ "type": 13, "id": "FLMFT8HhkkskmVWkva4CfpGyrwrdwaiw77TudejEZL22", "fee": 1700000, "feeAssetId": null, "timestamp": 1696660089449, "version": 2, "chainId": 87, "sender": "3PBbLJcBjLWUZZrFFUk5s53TdTUneHXDc7e", "senderPublicKey": "qv5sHFvV7GyNRm1A2r8BR9oX2nhkc1yNa1QfWLkaja8", "proofs": [ "4o4aknR7Hd3KChzGNxrQXJevhtiFZrtxpyptpkFS6KMM58zmmTLebpMAsLhz9M8EoLnZ6StvT57eTJdZU8csoNjS" ], "script": "base64:BgIjCAISABIAEgASAwoBARIAEgASABIAEgASABIAEgASBAoCCAE7AQ10cnlHZXRJbnRlZ2VyAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAmggCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwBQFiAAAAAmQ4AIDC1y8AA2QxNgkAaAIFAmQ4BQJkOAAQYnVybnh0blBQVHBvb2xJZAEaAVf1RmgngA1o304mdXq0odMoMeAJv/V5eTcADHByb2plY3RPd25lcgEaAVeOHeZRyjgjzsORw8RWi9WD02+IVv823QsAD3doaXJscG9vbFBvb2xJZAEaAVcJSFSomLX/zEpG2xL9S8mTGUY3Q5iH180ACXdoaXJscG9vbAEgWeON3MK1I7pKFNzE0K8UCeZk5gS+JQYLJk7lUG2XWccAD3doaXJscG9vbFN0cmluZwkA2AQBASBZ443cwrUjukoU3MTQrxQJ5mTmBL4lBgsmTuVQbZdZxwAEdGVzdAEgCc6A2qSEYQEDFtHChxRdJUyYFe25w8sijpje/5CtqUcABXdhdmVzAQQTq9kzAAd1c2R0ZXJjASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQAHdXNkY2VyYwEg8b90j2kCa66vzjuwb/Nd8MVKoTFsVrfc+ipKoeuRGkkAB3VzZHRic2MBIIeFKhRdvRvgacOk2tYbd0/cBQSbrAXfQbCvgMBJMOmiAAd1c2RjYnNjASAvN5TEMA7UHoYvTQ14Xf3kXkI8Q97mJBxq1GB3huvltQAHYnVybnh0bgEgJE91eWp+Mzm4+wz/hKlxXF7KLd4zoMRdafnqRBHsTFQAA2V0aAEgJR76/9ghyXCe+8C03j63q4aeBTtm79wH/FHj9agzKHIAA2JuYgEgS7ep4jwDLeZJ/TwoM/wRUkbi6v6x+mu9cBafRBfVHhwABHdidGMBIBKeo3EHNGSP6mN2enCiK9cwBs75vPQVGctmd0xybol/AARidGNiASDIlsraYoy6SPYFNHcPBbtsEP/v2GRaY5157d4CGOemoQAEZWFzdAEgVoJP4wutz64pn/F3h50Vd/r+QUj98n3dRjyfnx8R03QABnN0ZWFzdAEg4Tj7DL+1BlqSS0fgEtOD/O7RI9SQqBlxFRrcq0CylDYABnN3YXZlcwEgCB/I9xYw7VHCKRvsrBqP/JBxHFk4LeshgbA3QfBF0UoAC3Bvb2xib29zdFNDARoBV1+hRBbaqQHNFrLXSm/kpWLQp/1rM4gJMQAHUExfTWFpbgkBB0FkZHJlc3MBARoBVyCUXEqtz/RIOTuIQLO/2+6MUKCnas/a6AAHUExfRGVmaQkBB0FkZHJlc3MBARoBVxkLO48/zcX1AFJDuOumjMisvxQ5MT4kvgAGUExfTG93CQEHQWRkcmVzcwEBGgFXrmAU0mZwDPA/3HTF0nTmGr6p4FLB6guQAApFQVNUX3N0YWtlCQEHQWRkcmVzcwEBGgFXCHSp2cN38YJ996KDSPPrm7NP/Ig86xdvAA1XWF9XQVZFU19FQVNUCQEHQWRkcmVzcwEBGgFXtcI/53C/UBxRdbkKYmb09j7c3NWdpOjUAAxTV0FWRVNfc3Rha2UJAQdBZGRyZXNzAQEaAVd9yXuTFHn/51HxsUrHb/lqHYCVR89YI34ACWV0aEluUG9vbAkBDXRyeUdldEludGVnZXICCQEHQWRkcmVzcwEFEGJ1cm54dG5QUFRwb29sSWQJAKwCAgkArAICAgdnbG9iYWxfCQDYBAEFA2V0aAIIX2JhbGFuY2UAC3dhdmVzSW5Qb29sCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUQYnVybnh0blBQVHBvb2xJZAkArAICCQCsAgICB2dsb2JhbF8JANgEAQUFd2F2ZXMCCF9iYWxhbmNlAAhldGhXYXZlcwkAawMFAmQ4BQt3YXZlc0luUG9vbAUJZXRoSW5Qb29sAAxwcm9qZWN0U3Rha2UJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBRBidXJueHRuUFBUcG9vbElkCQCsAgIJAKUIAQUEdGhpcwIMX2luZGV4U3Rha2VkAAp0b3RhbFN0YWtlCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUQYnVybnh0blBQVHBvb2xJZAIXZ2xvYmFsX3Bvb2xUb2tlbl9hbW91bnQBCFBMX3ZhbHVlAgtkQXBwQWRkcmVzcwVhc3NldAkAawMJAQ10cnlHZXRJbnRlZ2VyAgULZEFwcEFkZHJlc3MJAKwCAgkArAICCQClCAEFBHRoaXMCCl9zdXBwbGllZF8JANgEAQUFYXNzZXQJAQ10cnlHZXRJbnRlZ2VyAgULZEFwcEFkZHJlc3MJAKwCAgkA2AQBBQVhc3NldAIGX3NSYXRlBQNkMTYBCF9sb2FkSW50AgRrZXlfCGRlZmF1bHRfBAckbWF0Y2gwCQCaCAIFDFNXQVZFU19zdGFrZQUEa2V5XwMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEFCGRlZmF1bHRfAQtfbG9hZEJpZ0ludAIEa2V5XwhkZWZhdWx0XwQHJG1hdGNoMAkAnAgCBQxTV0FWRVNfc3Rha2UFBGtleV8DCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYQUHJG1hdGNoMAkAngMBBQFhBQhkZWZhdWx0XwAIbGFzdFJhdGUJAQtfbG9hZEJpZ0ludAICCUxBU1RfUkFURQkAtgIBAICglKWNHQALY3VycmVudFJhdGUJAQtfbG9hZEJpZ0ludAICDENVUlJFTlRfUkFURQkAtgIBAAAACmxhc3RIZWlnaHQJAQhfbG9hZEludAICC0xBU1RfSEVJR0hUAAAADHRhcmdldEhlaWdodAkAlwMBCQDMCAIJAQhfbG9hZEludAICDVRBUkdFVF9IRUlHSFQAAAkAzAgCBQZoZWlnaHQFA25pbAAPbGFzdFJhdGVVcGRhdGVkCQC3AgIFCGxhc3RSYXRlCQC5AgIFC2N1cnJlbnRSYXRlCQC2AgEJAGUCBQx0YXJnZXRIZWlnaHQFCmxhc3RIZWlnaHQACmJhc2VBbW91bnQJAKADAQkAvQIECQC2AgEJAPAHAgUNV1hfV0FWRVNfRUFTVAUGc3dhdmVzBQ9sYXN0UmF0ZVVwZGF0ZWQJALYCAQCAoJSljR0FBUZMT09SAAl3YXZlc0luV1gJAGQCCAkA7wcBBQ1XWF9XQVZFU19FQVNUB3JlZ3VsYXIFCmJhc2VBbW91bnQACGVhc3RJbldYCQDwBwIFDVdYX1dBVkVTX0VBU1QFBGVhc3QACXdhdmVzRWFzdAkAawMJAGgCBQJkOABkBQhlYXN0SW5XWAUJd2F2ZXNJbldYABB3YXZlc0luV2hpcmxwb29sCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUPd2hpcmxwb29sUG9vbElkCQCsAgIJAKwCAgIHZ2xvYmFsXwkA2AQBBQV3YXZlcwIIX2JhbGFuY2UAEHdoaXJsSW5XaGlybHBvb2wJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBQ93aGlybHBvb2xQb29sSWQJAKwCAgkArAICAgdnbG9iYWxfBQ93aGlybHBvb2xTdHJpbmcCCF9iYWxhbmNlABFwcm9qZWN0U3Rha2VXaGlybAkBDXRyeUdldEludGVnZXICCQEHQWRkcmVzcwEFD3doaXJscG9vbFBvb2xJZAkArAICCQClCAEFBHRoaXMCDF9pbmRleFN0YWtlZAAPdG90YWxTdGFrZVdoaXJsCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUPd2hpcmxwb29sUG9vbElkAhdnbG9iYWxfcG9vbFRva2VuX2Ftb3VudAANc3RFYXN0SW5XYXZlcwkAaAIJAGsDCQBpAgkAbgQJAPAHAgUEdGhpcwUGc3RlYXN0CQENdHJ5R2V0SW50ZWdlcgIFCkVBU1Rfc3Rha2UCCCVzX19yYXRlAICglKWNHQUISEFMRkVWRU4AZAUCZDgFCXdhdmVzRWFzdABkAA1lYXN0SW5TdGFraW5nCQBpAgkAbgQJAPAHAgUEdGhpcwUGc3RlYXN0CQENdHJ5R2V0SW50ZWdlcgIFCkVBU1Rfc3Rha2UCCCVzX19yYXRlAICglKWNHQUISEFMRkVWRU4AZAAKdHZsSW5XYXZlcwkAZAIJAGQCCQBkAgkAawMJAGgCBQt3YXZlc0luUG9vbAAKBQxwcm9qZWN0U3Rha2UFCnRvdGFsU3Rha2UJAGsDCQEIUExfdmFsdWUCBQdQTF9NYWluBQNldGgFCGV0aFdhdmVzBQJkOAkAawMJAGgCBRB3YXZlc0luV2hpcmxwb29sAAoFEXByb2plY3RTdGFrZVdoaXJsBQ90b3RhbFN0YWtlV2hpcmwFDXN0RWFzdEluV2F2ZXMAD3doaXJscG9vbFN1cHBseQQHJG1hdGNoMAkA7AcBBQR0ZXN0AwkAAQIFByRtYXRjaDACBUFzc2V0BAVhc3NldAUHJG1hdGNoMAgFBWFzc2V0CHF1YW50aXR5CQACAQIQQ2FuJ3QgZmluZCBhc3NldAAFcHJpY2UDCQBnAgkAZAIJAGsDCQBkAgUKdHZsSW5XYXZlcwkBDXRyeUdldEludGVnZXICBQR0aGlzAhxzdXJwbHVzIHJlY2VpdmVkIGluIHdhdmVsZXRzBQJkOAUPd2hpcmxwb29sU3VwcGx5BQJkOAkBDXRyeUdldEludGVnZXICBQR0aGlzAiFXSElSTFBPT0wgaXNzdWUgcHJpY2UgaW4gd2F2ZWxldHMJAGQCCQBrAwkAZAIFCnR2bEluV2F2ZXMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwIcc3VycGx1cyByZWNlaXZlZCBpbiB3YXZlbGV0cwUCZDgFD3doaXJscG9vbFN1cHBseQUCZDgJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwIhV0hJUkxQT09MIGlzc3VlIHByaWNlIGluIHdhdmVsZXRzARN3aXRoZHJhd0Ftb3VudFdhdmVzAQtkYXBwQWRkcmVzcwkAZQIJAQhQTF92YWx1ZQIFC2RhcHBBZGRyZXNzBQV3YXZlcwkAaQIJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwIed2F2ZWxldHMgcmVjZWl2ZWQgZm9yIHRyZWFzdXJ5AAMBCHN1cHBseVBMAwtkYXBwQWRkcmVzcwdhc3NldElkDHN1cHBseUFtb3VudAkA/AcEBQtkYXBwQWRkcmVzcwIGc3VwcGx5BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFB2Fzc2V0SWQFDHN1cHBseUFtb3VudAUDbmlsAQp3aXRoZHJhd1BMAwtkYXBwQWRkcmVzcwdhc3NldElkDndpdGhkcmF3QW1vdW50CQD8BwQFC2RhcHBBZGRyZXNzAgh3aXRoZHJhdwkAzAgCCQDYBAEFB2Fzc2V0SWQJAMwIAgUOd2l0aGRyYXdBbW91bnQFA25pbAUDbmlsAQtzd2FwVG9XYXZlcwIGcG9vbElkB2Fzc2V0SWQJAPwHBAkBB0FkZHJlc3MBBQZwb29sSWQCBHN3YXAJAMwIAgIFV0FWRVMJAMwIAgAABQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFB2Fzc2V0SWQJAPAHAgUEdGhpcwUHYXNzZXRJZAUDbmlsDQFpARVidXlXSElSTFBPT0x3aXRoV0FWRVMAAwMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkBAiE9AggFAWkGY2FsbGVyCQEHQWRkcmVzcwEBGgFX6WYhKtIG4NwWiusIWpfUn51io3/3wlpMBwkAAgECIHNtYXJ0IGNvbnRyYWN0IHVuZGVyIG1haW50ZW5hbmNlBBZXaGlybHBvb2xCYWxhbmNlQmVmb3JlCQDwBwIFBHRoaXMFCXdoaXJscG9vbAMJAAACBRZXaGlybHBvb2xCYWxhbmNlQmVmb3JlBRZXaGlybHBvb2xCYWxhbmNlQmVmb3JlBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHc3VycGx1cwkAawMJAGUCBQVwcmljZQUCZDgIBQNwbXQGYW1vdW50BQJkOAQLSXNzdWVBbW91bnQDCQBnAggFA3BtdAZhbW91bnQJAGsDCAUDcG10BmFtb3VudAUCZDgFBXByaWNlCQBrAwgFA3BtdAZhbW91bnQFAmQ4BQVwcmljZQkAAgECMHBsZWFzZSBjb250YWN0IHByb2plY3Qgb3duZXI6IGlzc3VlIGFtb3VudCBlcnJvcgQMc3VwcGx5QW1vdW50CQBpAgkAZQIIBQNwbXQGYW1vdW50BQdzdXJwbHVzAAMEDWNsZWFuQW1vdW50SW4JAGUCCAUDcG10BmFtb3VudAkAawMIBQNwbXQGYW1vdW50AMgBAJBOBAlBbW91bnRPdXQJAG4EBRB3aGlybEluV2hpcmxwb29sCQBlAgkAaAIFAmQ4BQJkOAkAoAMBCQB2BgkAvQIECQC2AgEJAGgCANgEBQJkOAkAtgIBCQBoAgUCZDgFAmQ4CQC2AgEJAGQCCQBoAgDYBAUCZDgFDWNsZWFuQW1vdW50SW4FBkhBTEZVUAAQCQC2AgEJAGsDAKCNBgCQTgCg9zYABAAQBQdDRUlMSU5HCQBoAgUCZDgFAmQ4BQRET1dOAwkBAiE9AggFA3BtdAdhc3NldElkBQR1bml0CQACAQIXYXR0YWNoIFdBVkVTIHRva2VuIG9ubHkEA2J1eQMJAGYCBQlBbW91bnRPdXQFC0lzc3VlQW1vdW50CQD8BwQJAQdBZGRyZXNzAQUPd2hpcmxwb29sUG9vbElkAgRzd2FwCQDMCAIFD3doaXJscG9vbFN0cmluZwkAzAgCCQBkAgULSXNzdWVBbW91bnQAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR1bml0CAUDcG10BmFtb3VudAUDbmlsBQR1bml0AwkAAAIFA2J1eQUDYnV5BARtYWluAwkAZwIFC0lzc3VlQW1vdW50BQlBbW91bnRPdXQJAQhzdXBwbHlQTAMFB1BMX01haW4FBHVuaXQFDHN1cHBseUFtb3VudAUEdW5pdAMJAAACBQRtYWluBQRtYWluBARkZWZpAwkAZwIFC0lzc3VlQW1vdW50BQlBbW91bnRPdXQJAQhzdXBwbHlQTAMFB1BMX0RlZmkFBHVuaXQFDHN1cHBseUFtb3VudAUEdW5pdAMJAAACBQRkZWZpBQRkZWZpBANsb3cDCQBnAgULSXNzdWVBbW91bnQFCUFtb3VudE91dAkBCHN1cHBseVBMAwUGUExfTG93BQR1bml0BQxzdXBwbHlBbW91bnQFBHVuaXQDCQAAAgUDbG93BQNsb3cEFVdoaXJscG9vbEJhbGFuY2VBZnRlcgkA8AcCBQR0aGlzBQl3aGlybHBvb2wEEVdoaXJscG9vbEZyb21Td2FwCQBlAgUVV2hpcmxwb29sQmFsYW5jZUFmdGVyBRZXaGlybHBvb2xCYWxhbmNlQmVmb3JlCQDMCAIJAQdSZWlzc3VlAwUEdGVzdAMJAGcCBQtJc3N1ZUFtb3VudAUJQW1vdW50T3V0BQtJc3N1ZUFtb3VudAAABgkAzAgCAwkAZgIFCUFtb3VudE91dAULSXNzdWVBbW91bnQJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgURV2hpcmxwb29sRnJvbVN3YXAFCXdoaXJscG9vbAkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQtJc3N1ZUFtb3VudAUEdGVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgIhV0hJUkxQT09MIGlzc3VlIHByaWNlIGluIHdhdmVsZXRzBQVwcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIgdG90YWwgV0FWRVMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMDCQBnAgULSXNzdWVBbW91bnQFCUFtb3VudE91dAkAZAIIBQNwbXQGYW1vdW50CQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMCIHRvdGFsIFdBVkVTIHJlY2VpdmVkIGluIHdhdmVsZXRzCQBkAgAACQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMCIHRvdGFsIFdBVkVTIHJlY2VpdmVkIGluIHdhdmVsZXRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAh53YXZlbGV0cyByZWNlaXZlZCBmb3IgdHJlYXN1cnkDCQBnAgULSXNzdWVBbW91bnQFCUFtb3VudE91dAkAZAIJAGUCCAUDcG10BmFtb3VudAUHc3VycGx1cwkBDXRyeUdldEludGVnZXICBQR0aGlzAh53YXZlbGV0cyByZWNlaXZlZCBmb3IgdHJlYXN1cnkAAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEnByaWNlU3VycGx1c1N1cHBseQAJAMwIAgkBDEludGVnZXJFbnRyeQICClBMIEJUIE1haW4JAQhQTF92YWx1ZQIFB1BMX01haW4FBXdhdmVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAgpQTCBCVCBEZWZpCQEIUExfdmFsdWUCBQdQTF9EZWZpBQV3YXZlcwkAzAgCCQEMSW50ZWdlckVudHJ5AgIJUEwgQlQgTG93CQEIUExfdmFsdWUCBQZQTF9Mb3cFBXdhdmVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhBQTCBiYXNlIHRyZWFzdXJ5CQBkAgkAZAIJAQhQTF92YWx1ZQIFB1BMX01haW4FBXdhdmVzCQEIUExfdmFsdWUCBQdQTF9EZWZpBQV3YXZlcwkBCFBMX3ZhbHVlAgUGUExfTG93BQV3YXZlcwkAzAgCCQEMSW50ZWdlckVudHJ5AgIwc3VycGx1cyB0cmVhc3VyeSBCVVJOLVhUTiB4IFBlcGVUZWFtIGluIHdhdmVsZXRzCQBrAwkAaAIFC3dhdmVzSW5Qb29sAAoFDHByb2plY3RTdGFrZQUKdG90YWxTdGFrZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIZRVRIIFB1enpsZSBMZW5kIG1haW4gcG9vbAkBCFBMX3ZhbHVlAgUHUExfTWFpbgUDZXRoCQDMCAIJAQxJbnRlZ2VyRW50cnkCAjZzdXJwbHVzIHRyZWFzdXJ5IEVUSCBQdXp6bGUgTGVuZCBtYWluIHBvb2wgaW4gd2F2ZWxldHMJAGsDCQEIUExfdmFsdWUCBQdQTF9NYWluBQNldGgFCGV0aFdhdmVzBQJkOAkAzAgCCQEMSW50ZWdlckVudHJ5AgIqc3VycGx1cyB0cmVhc3VyeSBXSElSTFBPT0wgQU1NIGluIHdhdmVsZXRzCQBrAwkAaAIFEHdhdmVzSW5XaGlybHBvb2wACgURcHJvamVjdFN0YWtlV2hpcmwFD3RvdGFsU3Rha2VXaGlybAkAzAgCCQEMSW50ZWdlckVudHJ5AgISU1QgRUFTVCBpbiBzdGFraW5nBQ1lYXN0SW5TdGFraW5nCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhJTVCBzdEVBU1QgaW4gd2F2ZXMFDXN0RWFzdEluV2F2ZXMJAMwIAgkBDEludGVnZXJFbnRyeQICKFRvdGFsIHN1cnBsdXMgdHJlYXN1cnkgdmFsdWUgaW4gd2F2ZWxldHMFCnR2bEluV2F2ZXMJAMwIAgkBDEludGVnZXJFbnRyeQICIVdISVJMUE9PTCBpc3N1ZSBwcmljZSBpbiB3YXZlbGV0cwUFcHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQICGldISVJMUE9PTCBtaWQgbWFya2V0IHByaWNlCQBrAwUCZDgJAGgCBRB3YXZlc0luV2hpcmxwb29sAAkFEHdoaXJsSW5XaGlybHBvb2wJAMwIAgkBDEludGVnZXJFbnRyeQICFldISVJMUE9PTCB0b3RhbCBzdXBwbHkFD3doaXJscG9vbFN1cHBseQkAzAgCCQEMSW50ZWdlckVudHJ5AgIOVG90YWwgdHJlYXN1cnkJAGQCCQBkAgkAZAIJAQhQTF92YWx1ZQIFB1BMX01haW4FBXdhdmVzCQEIUExfdmFsdWUCBQdQTF9EZWZpBQV3YXZlcwkBCFBMX3ZhbHVlAgUGUExfTG93BQV3YXZlcwUKdHZsSW5XYXZlcwkAzAgCCQEMSW50ZWdlckVudHJ5AgINTkFWIFdISVJMUE9PTAkAawMFAmQ4CQBkAgkAZAIJAGQCCQEIUExfdmFsdWUCBQdQTF9NYWluBQV3YXZlcwkBCFBMX3ZhbHVlAgUHUExfRGVmaQUFd2F2ZXMJAQhQTF92YWx1ZQIFBlBMX0xvdwUFd2F2ZXMFCnR2bEluV2F2ZXMFD3doaXJscG9vbFN1cHBseQkAzAgCCQEMSW50ZWdlckVudHJ5AgIgdG90YWwgV0FWRVMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwIgdG90YWwgV0FWRVMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMJAMwIAgkBDEludGVnZXJFbnRyeQICHHN1cnBsdXMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwIcc3VycGx1cyByZWNlaXZlZCBpbiB3YXZlbGV0cwkAzAgCCQEMSW50ZWdlckVudHJ5AgIed2F2ZWxldHMgcmVjZWl2ZWQgZm9yIHRyZWFzdXJ5CQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMCHndhdmVsZXRzIHJlY2VpdmVkIGZvciB0cmVhc3VyeQkAzAgCCQEMSW50ZWdlckVudHJ5AgIgdG90YWwgV0FWRVMgcGFpZCBvdXQgaW4gd2F2ZWxldHMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwIgdG90YWwgV0FWRVMgcGFpZCBvdXQgaW4gd2F2ZWxldHMJAMwIAgkBDEludGVnZXJFbnRyeQICEFJPSSBiYXNpcyBwb2ludHMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwIQUk9JIGJhc2lzIHBvaW50cwUDbmlsAWkBE3Bvb2xPbmVUb2tlblN1cnBsdXMAAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgQNc3VycGx1c0Ftb3VudAkBDXRyeUdldEludGVnZXICBQR0aGlzAhxzdXJwbHVzIHJlY2VpdmVkIGluIHdhdmVsZXRzBBNQb29sT25lVG9rZW5TdXJwbHVzCQD8BwQJAQdBZGRyZXNzAQEaAVf9JcO9TmGUQe+6XhJjj8U5b0m1iDr16W0CIWdlbmVyYXRlSW5kZXhXaXRoT25lVG9rZW5BbmRTdGFrZQkAzAgCCQDYBAEFEGJ1cm54dG5QUFRwb29sSWQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAUNc3VycGx1c0Ftb3VudAUDbmlsAwkAAAIFE1Bvb2xPbmVUb2tlblN1cnBsdXMFE1Bvb2xPbmVUb2tlblN1cnBsdXMJAMwIAgkBDEludGVnZXJFbnRyeQICHHN1cnBsdXMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMJAGUCCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMCHHN1cnBsdXMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMFDXN1cnBsdXNBbW91bnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQxib29zdFBvb2xBUFkBEndhdmVzQmFsYW5jZUJlZm9yZQMJAGYCCQBkAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwIVQWN0aXZhdGVkIGJsb2NraGVpZ2h0CQBoAgAIAKALBQZoZWlnaHQJAAIBCQCsAgICFldhaXQgdGlsbCBibG9ja2hlaWdodDoJAKQDAQkAZAIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCFUFjdGl2YXRlZCBibG9ja2hlaWdodAkAaAIACACgCwQPd2F2ZXNEaWZmZXJlbmNlCQBlAggJAO8HAQUEdGhpcwlhdmFpbGFibGUFEndhdmVzQmFsYW5jZUJlZm9yZQMJAAACBQ93YXZlc0RpZmZlcmVuY2UFD3dhdmVzRGlmZmVyZW5jZQQQd2F2ZXNBbW91bnRCb29zdAkAawMFD3dhdmVzRGlmZmVyZW5jZQBQAGQDCQAAAgUQd2F2ZXNBbW91bnRCb29zdAUQd2F2ZXNBbW91bnRCb29zdAQLYW1vdW50Qm9vc3QJAGsDBQ93YXZlc0RpZmZlcmVuY2UAUABkAwkAAAIFC2Ftb3VudEJvb3N0BQthbW91bnRCb29zdAQLYW1vdW50T3duZXIJAGsDBQ93YXZlc0RpZmZlcmVuY2UAFABkAwkAAAIFC2Ftb3VudE93bmVyBQthbW91bnRPd25lcgQFYm9vc3QJAPwHBAkBB0FkZHJlc3MBBQtwb29sYm9vc3RTQwILYWRkQm9vc3RpbmcJAMwIAgkA2AQBBQ93aGlybHBvb2xQb29sSWQJAMwIAgAHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQFC2Ftb3VudEJvb3N0BQNuaWwDCQAAAgUFYm9vc3QFBWJvb3N0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUMcHJvamVjdE93bmVyBQthbW91bnRPd25lcgUEdW5pdAkAzAgCCQEMSW50ZWdlckVudHJ5AgIgdG90YWwgV0FWRVMgcGFpZCBvdXQgaW4gd2F2ZWxldHMJAGQCBRB3YXZlc0Ftb3VudEJvb3N0CQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMCIHRvdGFsIFdBVkVTIHBhaWQgb3V0IGluIHdhdmVsZXRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhBST0kgYmFzaXMgcG9pbnRzCQBrAwkBDXRyeUdldEludGVnZXICBQR0aGlzAiB0b3RhbCBXQVZFUyBwYWlkIG91dCBpbiB3YXZlbGV0cwCQTgkBDXRyeUdldEludGVnZXICBQR0aGlzAiB0b3RhbCBXQVZFUyByZWNlaXZlZCBpbiB3YXZlbGV0cwkAzAgCCQEMSW50ZWdlckVudHJ5AgMJAAACCAUBaQZjYWxsZXIFBHRoaXMCFUFjdGl2YXRlZCBibG9ja2hlaWdodAIgQWN0aXZhdGVkIGJ5IGFueWJvZHkgYmxvY2toZWlnaHQFBmhlaWdodAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFmJvb3N0UG9vbEFQWWJ1cm54dG5QUFQAAwkAZgIJAGQCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAhVBY3RpdmF0ZWQgYmxvY2toZWlnaHQJAGgCAAgAoAsFBmhlaWdodAkAAgEJAKwCAgIWV2FpdCB0aWxsIGJsb2NraGVpZ2h0OgkApAMBCQBkAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwIVQWN0aXZhdGVkIGJsb2NraGVpZ2h0CQBoAgAIAKALBBJ3YXZlc0JhbGFuY2VCZWZvcmUICQDvBwEFBHRoaXMJYXZhaWxhYmxlAwkAAAIFEndhdmVzQmFsYW5jZUJlZm9yZQUSd2F2ZXNCYWxhbmNlQmVmb3JlBAVjbGFpbQkA/AcECQEHQWRkcmVzcwEFEGJ1cm54dG5QUFRwb29sSWQCEWNsYWltSW5kZXhSZXdhcmRzBQNuaWwFA25pbAMJAAACBQVjbGFpbQUFY2xhaW0EC3N3YXBidXJueHRuCQELc3dhcFRvV2F2ZXMCBRBidXJueHRuUFBUcG9vbElkBQdidXJueHRuAwkAAAIFC3N3YXBidXJueHRuBQtzd2FwYnVybnh0bgQLc3dhcHVzZHRlcmMJAQtzd2FwVG9XYXZlcwIFEGJ1cm54dG5QUFRwb29sSWQFB3VzZHRlcmMDCQAAAgULc3dhcHVzZHRlcmMFC3N3YXB1c2R0ZXJjBAtzd2FwdXNkdGJzYwkBC3N3YXBUb1dhdmVzAgUQYnVybnh0blBQVHBvb2xJZAUHdXNkdGJzYwMJAAACBQtzd2FwdXNkdGJzYwULc3dhcHVzZHRic2MEC3N3YXB1c2RjZXJjCQELc3dhcFRvV2F2ZXMCBRBidXJueHRuUFBUcG9vbElkBQd1c2RjZXJjAwkAAAIFC3N3YXB1c2RjZXJjBQtzd2FwdXNkY2VyYwQLc3dhcHVzZGNic2MJAQtzd2FwVG9XYXZlcwIFEGJ1cm54dG5QUFRwb29sSWQFB3VzZGNic2MDCQAAAgULc3dhcHVzZGNic2MFC3N3YXB1c2RjYnNjBAdzd2FwZXRoCQELc3dhcFRvV2F2ZXMCBRBidXJueHRuUFBUcG9vbElkBQNldGgDCQAAAgUHc3dhcGV0aAUHc3dhcGV0aAQHc3dhcGJuYgkBC3N3YXBUb1dhdmVzAgUQYnVybnh0blBQVHBvb2xJZAUDYm5iAwkAAAIFB3N3YXBibmIFB3N3YXBibmIECHN3YXB3YnRjCQELc3dhcFRvV2F2ZXMCBRBidXJueHRuUFBUcG9vbElkBQR3YnRjAwkAAAIFCHN3YXB3YnRjBQhzd2Fwd2J0YwQIc3dhcGJ0Y2IJAQtzd2FwVG9XYXZlcwIFEGJ1cm54dG5QUFRwb29sSWQFBGJ0Y2IDCQAAAgUIc3dhcGJ0Y2IFCHN3YXBidGNiBAVib29zdAkA/AcEBQR0aGlzAgxib29zdFBvb2xBUFkJAMwIAgUSd2F2ZXNCYWxhbmNlQmVmb3JlBQNuaWwFA25pbAMJAAACBQVib29zdAUFYm9vc3QFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARRib29zdFBvb2xBUFl3RVRIbWFpbgADCQBmAgkAZAIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCFUFjdGl2YXRlZCBibG9ja2hlaWdodAkAaAIACACgCwUGaGVpZ2h0CQACAQkArAICAhZXYWl0IHRpbGwgYmxvY2toZWlnaHQ6CQCkAwEJAGQCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAhVBY3RpdmF0ZWQgYmxvY2toZWlnaHQJAGgCAAgAoAsEEndhdmVzQmFsYW5jZUJlZm9yZQgJAO8HAQUEdGhpcwlhdmFpbGFibGUDCQAAAgUSd2F2ZXNCYWxhbmNlQmVmb3JlBRJ3YXZlc0JhbGFuY2VCZWZvcmUEE2NhbGN1bGF0ZVRva2VuUmF0ZXMJAPwHBAUHUExfTWFpbgITY2FsY3VsYXRlVG9rZW5SYXRlcwkAzAgCBwUDbmlsBQNuaWwDCQAAAgUTY2FsY3VsYXRlVG9rZW5SYXRlcwUTY2FsY3VsYXRlVG9rZW5SYXRlcwQOd2l0aGRyYXdBbW91bnQJAGUCCQEIUExfdmFsdWUCBQdQTF9NYWluBQNldGgJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwIMRVRIIHN1cHBsaWVkBAh3aXRoZHJhdwkBCndpdGhkcmF3UEwDBQdQTF9NYWluBQNldGgFDndpdGhkcmF3QW1vdW50AwkAAAIFCHdpdGhkcmF3BQh3aXRoZHJhdwQHc3dhcGV0aAkBC3N3YXBUb1dhdmVzAgUQYnVybnh0blBQVHBvb2xJZAUDZXRoAwkAAAIFB3N3YXBldGgFB3N3YXBldGgEBWJvb3N0CQD8BwQFBHRoaXMCDGJvb3N0UG9vbEFQWQkAzAgCBRJ3YXZlc0JhbGFuY2VCZWZvcmUFA25pbAUDbmlsAwkAAAIFBWJvb3N0BQVib29zdAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFmJvb3N0UG9vbEFQWXdXaGlybHBvb2wAAwkAZgIJAGQCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAhVBY3RpdmF0ZWQgYmxvY2toZWlnaHQJAGgCAAgAoAsFBmhlaWdodAkAAgEJAKwCAgIWV2FpdCB0aWxsIGJsb2NraGVpZ2h0OgkApAMBCQBkAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwIVQWN0aXZhdGVkIGJsb2NraGVpZ2h0CQBoAgAIAKALBBJ3YXZlc0JhbGFuY2VCZWZvcmUICQDvBwEFBHRoaXMJYXZhaWxhYmxlAwkAAAIFEndhdmVzQmFsYW5jZUJlZm9yZQUSd2F2ZXNCYWxhbmNlQmVmb3JlBAVjbGFpbQkA/AcECQEHQWRkcmVzcwEFD3doaXJscG9vbFBvb2xJZAIRY2xhaW1JbmRleFJld2FyZHMFA25pbAUDbmlsAwkAAAIFBWNsYWltBQVjbGFpbQQNc3dhcHdoaXJscG9vbAkBC3N3YXBUb1dhdmVzAgUPd2hpcmxwb29sUG9vbElkBQl3aGlybHBvb2wDCQAAAgUNc3dhcHdoaXJscG9vbAUNc3dhcHdoaXJscG9vbAQFYm9vc3QJAPwHBAUEdGhpcwIMYm9vc3RQb29sQVBZCQDMCAIFEndhdmVzQmFsYW5jZUJlZm9yZQUDbmlsBQNuaWwDCQAAAgUFYm9vc3QFBWJvb3N0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENc3VwcGx5RVRIbWFpbgADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyBAxzdXBwbHlBbW91bnQJAPAHAgUEdGhpcwUDZXRoAwkAAAIFDHN1cHBseUFtb3VudAUMc3VwcGx5QW1vdW50BARtYWluCQEIc3VwcGx5UEwDBQdQTF9NYWluBQNldGgFDHN1cHBseUFtb3VudAMJAAACBQRtYWluBQRtYWluCQDMCAIJAQxJbnRlZ2VyRW50cnkCAgxFVEggc3VwcGxpZWQJAGQCBQxzdXBwbHlBbW91bnQJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwIMRVRIIHN1cHBsaWVkCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhlFVEggUHV6emxlIExlbmQgbWFpbiBwb29sCQEIUExfdmFsdWUCBQdQTF9NYWluBQNldGgJAMwIAgkBDEludGVnZXJFbnRyeQICNnN1cnBsdXMgdHJlYXN1cnkgRVRIIFB1enpsZSBMZW5kIG1haW4gcG9vbCBpbiB3YXZlbGV0cwkAawMJAQhQTF92YWx1ZQIFB1BMX01haW4FA2V0aAUIZXRoV2F2ZXMFAmQ4BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQESd2l0aGRyYXdXQVZFU19NYWluAAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIEDndpdGhkcmF3QW1vdW50CQETd2l0aGRyYXdBbW91bnRXYXZlcwEFB1BMX01haW4DCQAAAgUOd2l0aGRyYXdBbW91bnQFDndpdGhkcmF3QW1vdW50BAh3aXRoZHJhdwkBCndpdGhkcmF3UEwDBQdQTF9NYWluBQV3YXZlcwkBE3dpdGhkcmF3QW1vdW50V2F2ZXMBBQdQTF9NYWluAwkAAAIFCHdpdGhkcmF3BQh3aXRoZHJhdwkAzAgCCQEMSW50ZWdlckVudHJ5AgIKUEwgQlQgTWFpbgkBCFBMX3ZhbHVlAgUHUExfTWFpbgUFd2F2ZXMJAMwIAgkBDEludGVnZXJFbnRyeQICFXdpdGhkcmF3IEFtb3VudCBXYXZlcwUOd2l0aGRyYXdBbW91bnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARJ3aXRoZHJhd1dBVkVTX0RlZmkAAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgQOd2l0aGRyYXdBbW91bnQJARN3aXRoZHJhd0Ftb3VudFdhdmVzAQUHUExfRGVmaQMJAAACBQ53aXRoZHJhd0Ftb3VudAUOd2l0aGRyYXdBbW91bnQECHdpdGhkcmF3CQEKd2l0aGRyYXdQTAMFB1BMX0RlZmkFBXdhdmVzCQETd2l0aGRyYXdBbW91bnRXYXZlcwEFB1BMX0RlZmkDCQAAAgUId2l0aGRyYXcFCHdpdGhkcmF3CQDMCAIJAQxJbnRlZ2VyRW50cnkCAgpQTCBCVCBEZWZpCQEIUExfdmFsdWUCBQdQTF9EZWZpBQV3YXZlcwkAzAgCCQEMSW50ZWdlckVudHJ5AgIVd2l0aGRyYXcgQW1vdW50IFdhdmVzBQ53aXRoZHJhd0Ftb3VudAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEXdpdGhkcmF3V0FWRVNfTG93AAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIEDndpdGhkcmF3QW1vdW50CQETd2l0aGRyYXdBbW91bnRXYXZlcwEFBlBMX0xvdwMJAAACBQ53aXRoZHJhd0Ftb3VudAUOd2l0aGRyYXdBbW91bnQECHdpdGhkcmF3CQEKd2l0aGRyYXdQTAMFBlBMX0xvdwUFd2F2ZXMJARN3aXRoZHJhd0Ftb3VudFdhdmVzAQUGUExfTG93AwkAAAIFCHdpdGhkcmF3BQh3aXRoZHJhdwkAzAgCCQEMSW50ZWdlckVudHJ5AgIJUEwgQlQgTG93CQEIUExfdmFsdWUCBQZQTF9Mb3cFBXdhdmVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhV3aXRoZHJhdyBBbW91bnQgV2F2ZXMFDndpdGhkcmF3QW1vdW50BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJc3Rha2VFQVNUAAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIECXN0YWtlRUFTVAkA/AcEBQpFQVNUX3N0YWtlAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQRlYXN0CQDwBwIFBHRoaXMFBGVhc3QFA25pbAMJAAACBQlzdGFrZUVBU1QFCXN0YWtlRUFTVAkAzAgCCQEMSW50ZWdlckVudHJ5AgILRUFTVCBzdGFrZWQJAGQCCQDwBwIFBHRoaXMFBGVhc3QJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwILRUFTVCBzdGFrZWQJAMwIAgkBDEludGVnZXJFbnRyeQICElNUIEVBU1QgaW4gc3Rha2luZwUNZWFzdEluU3Rha2luZwkAzAgCCQEMSW50ZWdlckVudHJ5AgISU1Qgc3RFQVNUIGluIHdhdmVzBQ1zdEVhc3RJbldhdmVzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQESY2hhbmdlSW50ZWdlckVudHJ5AglrZXlTdHJpbmcHaW50ZWdlcgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleVN0cmluZwUHaW50ZWdlcgUDbmlsALDajyI=", "height": 3853677, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4G9pj6Rqk9HB9DUcs1Ypsb47GHaBXWxCgyHtP3eZGt3X Next: A3CdCoWDtfBaByHz9TovouJ1a7M8eRrS4B8KUyD4m41F Diff:
OldNewDifferences
165165 else throw("please contact project owner: issue amount error")
166166 let supplyAmount = ((pmt.amount - surplus) / 3)
167167 let cleanAmountIn = (pmt.amount - fraction(pmt.amount, 200, 10000))
168- let AmountOut = fraction(whirlInWhirlpool, ((d8 * d8) - toInt(pow(fraction(toBigInt((600 * d8)), toBigInt((d8 * d8)), toBigInt(((600 * d8) + cleanAmountIn)), HALFUP), 16, toBigInt(fraction(1000, 10000, 9000)), 4, 16, CEILING))), (d8 * d8), DOWN)
168+ let AmountOut = fraction(whirlInWhirlpool, ((d8 * d8) - toInt(pow(fraction(toBigInt((600 * d8)), toBigInt((d8 * d8)), toBigInt(((600 * d8) + cleanAmountIn)), HALFUP), 16, toBigInt(fraction(100000, 10000, 900000)), 4, 16, CEILING))), (d8 * d8), DOWN)
169169 if ((pmt.assetId != unit))
170170 then throw("attach WAVES token only")
171171 else {
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func tryGetInteger (address,key) = match getInteger(address, key) {
55 case b: Int =>
66 b
77 case _ =>
88 0
99 }
1010
1111
1212 let d8 = 100000000
1313
1414 let d16 = (d8 * d8)
1515
1616 let burnxtnPPTpoolId = base58'3PQHndCUVrv3wBuQjbvVP9SnGmfbfitGxfx'
1717
1818 let projectOwner = base58'3PEtLVxDT8mxAh1SDAn8m7JTGNkdpkaFxBk'
1919
2020 let whirlpoolPoolId = base58'3P2myTbd5zpEHcYmNpdWTp5gXS5B8tL1RCY'
2121
2222 let whirlpool = base58'73tY3E6Gd5AWYmsuq8m8Kek7KnJNAYyS3GoveTbc6jCi'
2323
2424 let whirlpoolString = toBase58String(base58'73tY3E6Gd5AWYmsuq8m8Kek7KnJNAYyS3GoveTbc6jCi')
2525
2626 let test = base58'fHJWWsh2hZAc4Atv8VRhKy3jNbHLeMwQMsLpdaBY51Y'
2727
2828 let waves = base58'WAVES'
2929
3030 let usdterc = base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
3131
3232 let usdcerc = base58'HGgabTqUS8WtVFUJzfmrTDMgEccJuZLBPhFgQFxvnsoW'
3333
3434 let usdtbsc = base58'A81p1LTRyoq2rDR2TNxB2dWYxsiNwCSSi8sXef2SEkwb'
3535
3636 let usdcbsc = base58'4BKKSp6NoNcrFHyorZogDyctq1fq6w7114Ym1pw6HUtC'
3737
3838 let burnxtn = base58'3SjxA2YLdfF9fTRbzLm9xFn27C6MW34W1YsdJ6Axefns'
3939
4040 let eth = base58'3VuV5WTmDz47Dmdn3QpcYjzbSdipjQE4JMdNe1xZpX13'
4141
4242 let bnb = base58'66a1br3BrkoaJgP7yEar9hJcSTvJPoH6PYBLqscXcMGo'
4343
4444 let wbtc = base58'2Fge5HEBRD3XTeg7Xg3FW5yiB9HVJFQtMXiWMQo72Up6'
4545
4646 let btcb = base58'EW1uGLVo21Wd9i2Rhq8o4VKDTCQTGCGXE8DqayHGrLg8'
4747
4848 let east = base58'6phK22ztGBW127gUFmdMEHKB3CVd6ZhWox2WtwJkbqTq'
4949
5050 let steast = base58'GAB8JowY9UANZ4TQy2TzJyhxjPqXX3DUrb2cdMWrrJus'
5151
5252 let swaves = base58'YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7'
5353
5454 let poolboostSC = base58'3PAeY7RgwuNUZNscGqahqJxFTFDkh7fbNwJ'
5555
5656 let PL_Main = Address(base58'3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH')
5757
5858 let PL_Defi = Address(base58'3P4DK5VzDwL3vfc5ahUEhtoe5ByZNyacJ3X')
5959
6060 let PL_Low = Address(base58'3PHpuQUPVUoR3AYzFeJzeWJfYLsLTmWssVH')
6161
6262 let EAST_stake = Address(base58'3P2hbtheN5apNppqqUK7L7qAwmRFXy91CNa')
6363
6464 let WX_WAVES_EAST = Address(base58'3PJVwjfi2fF5Jv9AauayU6xLxrYBn8bpGH1')
6565
6666 let SWAVES_stake = Address(base58'3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV')
6767
6868 let ethInPool = tryGetInteger(Address(burnxtnPPTpoolId), (("global_" + toBase58String(eth)) + "_balance"))
6969
7070 let wavesInPool = tryGetInteger(Address(burnxtnPPTpoolId), (("global_" + toBase58String(waves)) + "_balance"))
7171
7272 let ethWaves = fraction(d8, wavesInPool, ethInPool)
7373
7474 let projectStake = tryGetInteger(Address(burnxtnPPTpoolId), (toString(this) + "_indexStaked"))
7575
7676 let totalStake = tryGetInteger(Address(burnxtnPPTpoolId), "global_poolToken_amount")
7777
7878 func PL_value (dAppAddress,asset) = fraction(tryGetInteger(dAppAddress, ((toString(this) + "_supplied_") + toBase58String(asset))), tryGetInteger(dAppAddress, (toBase58String(asset) + "_sRate")), d16)
7979
8080
8181 func _loadInt (key_,default_) = match getInteger(SWAVES_stake, key_) {
8282 case a: Int =>
8383 a
8484 case _ =>
8585 default_
8686 }
8787
8888
8989 func _loadBigInt (key_,default_) = match getBinary(SWAVES_stake, key_) {
9090 case a: ByteVector =>
9191 toBigInt(a)
9292 case _ =>
9393 default_
9494 }
9595
9696
9797 let lastRate = _loadBigInt("LAST_RATE", toBigInt(1000000000000))
9898
9999 let currentRate = _loadBigInt("CURRENT_RATE", toBigInt(0))
100100
101101 let lastHeight = _loadInt("LAST_HEIGHT", 0)
102102
103103 let targetHeight = min([_loadInt("TARGET_HEIGHT", 0), height])
104104
105105 let lastRateUpdated = (lastRate + (currentRate * toBigInt((targetHeight - lastHeight))))
106106
107107 let baseAmount = toInt(fraction(toBigInt(assetBalance(WX_WAVES_EAST, swaves)), lastRateUpdated, toBigInt(1000000000000), FLOOR))
108108
109109 let wavesInWX = (wavesBalance(WX_WAVES_EAST).regular + baseAmount)
110110
111111 let eastInWX = assetBalance(WX_WAVES_EAST, east)
112112
113113 let wavesEast = fraction((d8 * 100), eastInWX, wavesInWX)
114114
115115 let wavesInWhirlpool = tryGetInteger(Address(whirlpoolPoolId), (("global_" + toBase58String(waves)) + "_balance"))
116116
117117 let whirlInWhirlpool = tryGetInteger(Address(whirlpoolPoolId), (("global_" + whirlpoolString) + "_balance"))
118118
119119 let projectStakeWhirl = tryGetInteger(Address(whirlpoolPoolId), (toString(this) + "_indexStaked"))
120120
121121 let totalStakeWhirl = tryGetInteger(Address(whirlpoolPoolId), "global_poolToken_amount")
122122
123123 let stEastInWaves = (fraction((fraction(assetBalance(this, steast), tryGetInteger(EAST_stake, "%s__rate"), 1000000000000, HALFEVEN) / 100), d8, wavesEast) * 100)
124124
125125 let eastInStaking = (fraction(assetBalance(this, steast), tryGetInteger(EAST_stake, "%s__rate"), 1000000000000, HALFEVEN) / 100)
126126
127127 let tvlInWaves = (((fraction((wavesInPool * 10), projectStake, totalStake) + fraction(PL_value(PL_Main, eth), ethWaves, d8)) + fraction((wavesInWhirlpool * 10), projectStakeWhirl, totalStakeWhirl)) + stEastInWaves)
128128
129129 let whirlpoolSupply = match assetInfo(test) {
130130 case asset: Asset =>
131131 asset.quantity
132132 case _ =>
133133 throw("Can't find asset")
134134 }
135135
136136 let price = if (((fraction((tvlInWaves + tryGetInteger(this, "surplus received in wavelets")), d8, whirlpoolSupply) + d8) >= tryGetInteger(this, "WHIRLPOOL issue price in wavelets")))
137137 then (fraction((tvlInWaves + tryGetInteger(this, "surplus received in wavelets")), d8, whirlpoolSupply) + d8)
138138 else tryGetInteger(this, "WHIRLPOOL issue price in wavelets")
139139
140140 func withdrawAmountWaves (dappAddress) = (PL_value(dappAddress, waves) - (tryGetInteger(this, "wavelets received for treasury") / 3))
141141
142142
143143 func supplyPL (dappAddress,assetId,supplyAmount) = invoke(dappAddress, "supply", nil, [AttachedPayment(assetId, supplyAmount)])
144144
145145
146146 func withdrawPL (dappAddress,assetId,withdrawAmount) = invoke(dappAddress, "withdraw", [toBase58String(assetId), withdrawAmount], nil)
147147
148148
149149 func swapToWaves (poolId,assetId) = invoke(Address(poolId), "swap", ["WAVES", 0], [AttachedPayment(assetId, assetBalance(this, assetId))])
150150
151151
152152 @Callable(i)
153153 func buyWHIRLPOOLwithWAVES () = if (if ((i.caller != this))
154154 then (i.caller != Address(base58'3PPCzX2doZ7agBNuGSKqjrbdXgGEtE7CpQ3'))
155155 else false)
156156 then throw("smart contract under maintenance")
157157 else {
158158 let WhirlpoolBalanceBefore = assetBalance(this, whirlpool)
159159 if ((WhirlpoolBalanceBefore == WhirlpoolBalanceBefore))
160160 then {
161161 let pmt = value(i.payments[0])
162162 let surplus = fraction((price - d8), pmt.amount, d8)
163163 let IssueAmount = if ((pmt.amount >= fraction(pmt.amount, d8, price)))
164164 then fraction(pmt.amount, d8, price)
165165 else throw("please contact project owner: issue amount error")
166166 let supplyAmount = ((pmt.amount - surplus) / 3)
167167 let cleanAmountIn = (pmt.amount - fraction(pmt.amount, 200, 10000))
168- let AmountOut = fraction(whirlInWhirlpool, ((d8 * d8) - toInt(pow(fraction(toBigInt((600 * d8)), toBigInt((d8 * d8)), toBigInt(((600 * d8) + cleanAmountIn)), HALFUP), 16, toBigInt(fraction(1000, 10000, 9000)), 4, 16, CEILING))), (d8 * d8), DOWN)
168+ let AmountOut = fraction(whirlInWhirlpool, ((d8 * d8) - toInt(pow(fraction(toBigInt((600 * d8)), toBigInt((d8 * d8)), toBigInt(((600 * d8) + cleanAmountIn)), HALFUP), 16, toBigInt(fraction(100000, 10000, 900000)), 4, 16, CEILING))), (d8 * d8), DOWN)
169169 if ((pmt.assetId != unit))
170170 then throw("attach WAVES token only")
171171 else {
172172 let buy = if ((AmountOut > IssueAmount))
173173 then invoke(Address(whirlpoolPoolId), "swap", [whirlpoolString, (IssueAmount + 1)], [AttachedPayment(unit, pmt.amount)])
174174 else unit
175175 if ((buy == buy))
176176 then {
177177 let main = if ((IssueAmount >= AmountOut))
178178 then supplyPL(PL_Main, unit, supplyAmount)
179179 else unit
180180 if ((main == main))
181181 then {
182182 let defi = if ((IssueAmount >= AmountOut))
183183 then supplyPL(PL_Defi, unit, supplyAmount)
184184 else unit
185185 if ((defi == defi))
186186 then {
187187 let low = if ((IssueAmount >= AmountOut))
188188 then supplyPL(PL_Low, unit, supplyAmount)
189189 else unit
190190 if ((low == low))
191191 then {
192192 let WhirlpoolBalanceAfter = assetBalance(this, whirlpool)
193193 let WhirlpoolFromSwap = (WhirlpoolBalanceAfter - WhirlpoolBalanceBefore)
194194 [Reissue(test, if ((IssueAmount >= AmountOut))
195195 then IssueAmount
196196 else 0, true), if ((AmountOut > IssueAmount))
197197 then ScriptTransfer(i.caller, WhirlpoolFromSwap, whirlpool)
198198 else ScriptTransfer(i.caller, IssueAmount, test), IntegerEntry("WHIRLPOOL issue price in wavelets", price), IntegerEntry("total WAVES received in wavelets", if ((IssueAmount >= AmountOut))
199199 then (pmt.amount + tryGetInteger(this, "total WAVES received in wavelets"))
200200 else (0 + tryGetInteger(this, "total WAVES received in wavelets"))), IntegerEntry("wavelets received for treasury", if ((IssueAmount >= AmountOut))
201201 then ((pmt.amount - surplus) + tryGetInteger(this, "wavelets received for treasury"))
202202 else 0)]
203203 }
204204 else throw("Strict value is not equal to itself.")
205205 }
206206 else throw("Strict value is not equal to itself.")
207207 }
208208 else throw("Strict value is not equal to itself.")
209209 }
210210 else throw("Strict value is not equal to itself.")
211211 }
212212 }
213213 else throw("Strict value is not equal to itself.")
214214 }
215215
216216
217217
218218 @Callable(i)
219219 func priceSurplusSupply () = [IntegerEntry("PL BT Main", PL_value(PL_Main, waves)), IntegerEntry("PL BT Defi", PL_value(PL_Defi, waves)), IntegerEntry("PL BT Low", PL_value(PL_Low, waves)), IntegerEntry("PL base treasury", ((PL_value(PL_Main, waves) + PL_value(PL_Defi, waves)) + PL_value(PL_Low, waves))), IntegerEntry("surplus treasury BURN-XTN x PepeTeam in wavelets", fraction((wavesInPool * 10), projectStake, totalStake)), IntegerEntry("ETH Puzzle Lend main pool", PL_value(PL_Main, eth)), IntegerEntry("surplus treasury ETH Puzzle Lend main pool in wavelets", fraction(PL_value(PL_Main, eth), ethWaves, d8)), IntegerEntry("surplus treasury WHIRLPOOL AMM in wavelets", fraction((wavesInWhirlpool * 10), projectStakeWhirl, totalStakeWhirl)), IntegerEntry("ST EAST in staking", eastInStaking), IntegerEntry("ST stEAST in waves", stEastInWaves), IntegerEntry("Total surplus treasury value in wavelets", tvlInWaves), IntegerEntry("WHIRLPOOL issue price in wavelets", price), IntegerEntry("WHIRLPOOL mid market price", fraction(d8, (wavesInWhirlpool * 9), whirlInWhirlpool)), IntegerEntry("WHIRLPOOL total supply", whirlpoolSupply), IntegerEntry("Total treasury", (((PL_value(PL_Main, waves) + PL_value(PL_Defi, waves)) + PL_value(PL_Low, waves)) + tvlInWaves)), IntegerEntry("NAV WHIRLPOOL", fraction(d8, (((PL_value(PL_Main, waves) + PL_value(PL_Defi, waves)) + PL_value(PL_Low, waves)) + tvlInWaves), whirlpoolSupply)), IntegerEntry("total WAVES received in wavelets", tryGetInteger(this, "total WAVES received in wavelets")), IntegerEntry("surplus received in wavelets", tryGetInteger(this, "surplus received in wavelets")), IntegerEntry("wavelets received for treasury", tryGetInteger(this, "wavelets received for treasury")), IntegerEntry("total WAVES paid out in wavelets", tryGetInteger(this, "total WAVES paid out in wavelets")), IntegerEntry("ROI basis points", tryGetInteger(this, "ROI basis points"))]
220220
221221
222222
223223 @Callable(i)
224224 func poolOneTokenSurplus () = if ((i.caller != this))
225225 then throw("access only by project owner")
226226 else {
227227 let surplusAmount = tryGetInteger(this, "surplus received in wavelets")
228228 let PoolOneTokenSurplus = invoke(Address(base58'3PR1Qvi9mHT35SwWEkLSqqE2L8thiPLdVWU'), "generateIndexWithOneTokenAndStake", [toBase58String(burnxtnPPTpoolId)], [AttachedPayment(unit, surplusAmount)])
229229 if ((PoolOneTokenSurplus == PoolOneTokenSurplus))
230230 then [IntegerEntry("surplus received in wavelets", (tryGetInteger(this, "surplus received in wavelets") - surplusAmount))]
231231 else throw("Strict value is not equal to itself.")
232232 }
233233
234234
235235
236236 @Callable(i)
237237 func boostPoolAPY (wavesBalanceBefore) = if (((getIntegerValue(this, "Activated blockheight") + (8 * 1440)) > height))
238238 then throw(("Wait till blockheight:" + toString((getIntegerValue(this, "Activated blockheight") + (8 * 1440)))))
239239 else {
240240 let wavesDifference = (wavesBalance(this).available - wavesBalanceBefore)
241241 if ((wavesDifference == wavesDifference))
242242 then {
243243 let wavesAmountBoost = fraction(wavesDifference, 80, 100)
244244 if ((wavesAmountBoost == wavesAmountBoost))
245245 then {
246246 let amountBoost = fraction(wavesDifference, 80, 100)
247247 if ((amountBoost == amountBoost))
248248 then {
249249 let amountOwner = fraction(wavesDifference, 20, 100)
250250 if ((amountOwner == amountOwner))
251251 then {
252252 let boost = invoke(Address(poolboostSC), "addBoosting", [toBase58String(whirlpoolPoolId), 7], [AttachedPayment(unit, amountBoost)])
253253 if ((boost == boost))
254254 then [ScriptTransfer(Address(projectOwner), amountOwner, unit), IntegerEntry("total WAVES paid out in wavelets", (wavesAmountBoost + tryGetInteger(this, "total WAVES paid out in wavelets"))), IntegerEntry("ROI basis points", fraction(tryGetInteger(this, "total WAVES paid out in wavelets"), 10000, tryGetInteger(this, "total WAVES received in wavelets"))), IntegerEntry(if ((i.caller == this))
255255 then "Activated blockheight"
256256 else "Activated by anybody blockheight", height)]
257257 else throw("Strict value is not equal to itself.")
258258 }
259259 else throw("Strict value is not equal to itself.")
260260 }
261261 else throw("Strict value is not equal to itself.")
262262 }
263263 else throw("Strict value is not equal to itself.")
264264 }
265265 else throw("Strict value is not equal to itself.")
266266 }
267267
268268
269269
270270 @Callable(i)
271271 func boostPoolAPYburnxtnPPT () = if (((getIntegerValue(this, "Activated blockheight") + (8 * 1440)) > height))
272272 then throw(("Wait till blockheight:" + toString((getIntegerValue(this, "Activated blockheight") + (8 * 1440)))))
273273 else {
274274 let wavesBalanceBefore = wavesBalance(this).available
275275 if ((wavesBalanceBefore == wavesBalanceBefore))
276276 then {
277277 let claim = invoke(Address(burnxtnPPTpoolId), "claimIndexRewards", nil, nil)
278278 if ((claim == claim))
279279 then {
280280 let swapburnxtn = swapToWaves(burnxtnPPTpoolId, burnxtn)
281281 if ((swapburnxtn == swapburnxtn))
282282 then {
283283 let swapusdterc = swapToWaves(burnxtnPPTpoolId, usdterc)
284284 if ((swapusdterc == swapusdterc))
285285 then {
286286 let swapusdtbsc = swapToWaves(burnxtnPPTpoolId, usdtbsc)
287287 if ((swapusdtbsc == swapusdtbsc))
288288 then {
289289 let swapusdcerc = swapToWaves(burnxtnPPTpoolId, usdcerc)
290290 if ((swapusdcerc == swapusdcerc))
291291 then {
292292 let swapusdcbsc = swapToWaves(burnxtnPPTpoolId, usdcbsc)
293293 if ((swapusdcbsc == swapusdcbsc))
294294 then {
295295 let swapeth = swapToWaves(burnxtnPPTpoolId, eth)
296296 if ((swapeth == swapeth))
297297 then {
298298 let swapbnb = swapToWaves(burnxtnPPTpoolId, bnb)
299299 if ((swapbnb == swapbnb))
300300 then {
301301 let swapwbtc = swapToWaves(burnxtnPPTpoolId, wbtc)
302302 if ((swapwbtc == swapwbtc))
303303 then {
304304 let swapbtcb = swapToWaves(burnxtnPPTpoolId, btcb)
305305 if ((swapbtcb == swapbtcb))
306306 then {
307307 let boost = invoke(this, "boostPoolAPY", [wavesBalanceBefore], nil)
308308 if ((boost == boost))
309309 then nil
310310 else throw("Strict value is not equal to itself.")
311311 }
312312 else throw("Strict value is not equal to itself.")
313313 }
314314 else throw("Strict value is not equal to itself.")
315315 }
316316 else throw("Strict value is not equal to itself.")
317317 }
318318 else throw("Strict value is not equal to itself.")
319319 }
320320 else throw("Strict value is not equal to itself.")
321321 }
322322 else throw("Strict value is not equal to itself.")
323323 }
324324 else throw("Strict value is not equal to itself.")
325325 }
326326 else throw("Strict value is not equal to itself.")
327327 }
328328 else throw("Strict value is not equal to itself.")
329329 }
330330 else throw("Strict value is not equal to itself.")
331331 }
332332 else throw("Strict value is not equal to itself.")
333333 }
334334
335335
336336
337337 @Callable(i)
338338 func boostPoolAPYwETHmain () = if (((getIntegerValue(this, "Activated blockheight") + (8 * 1440)) > height))
339339 then throw(("Wait till blockheight:" + toString((getIntegerValue(this, "Activated blockheight") + (8 * 1440)))))
340340 else {
341341 let wavesBalanceBefore = wavesBalance(this).available
342342 if ((wavesBalanceBefore == wavesBalanceBefore))
343343 then {
344344 let calculateTokenRates = invoke(PL_Main, "calculateTokenRates", [false], nil)
345345 if ((calculateTokenRates == calculateTokenRates))
346346 then {
347347 let withdrawAmount = (PL_value(PL_Main, eth) - tryGetInteger(this, "ETH supplied"))
348348 let withdraw = withdrawPL(PL_Main, eth, withdrawAmount)
349349 if ((withdraw == withdraw))
350350 then {
351351 let swapeth = swapToWaves(burnxtnPPTpoolId, eth)
352352 if ((swapeth == swapeth))
353353 then {
354354 let boost = invoke(this, "boostPoolAPY", [wavesBalanceBefore], nil)
355355 if ((boost == boost))
356356 then nil
357357 else throw("Strict value is not equal to itself.")
358358 }
359359 else throw("Strict value is not equal to itself.")
360360 }
361361 else throw("Strict value is not equal to itself.")
362362 }
363363 else throw("Strict value is not equal to itself.")
364364 }
365365 else throw("Strict value is not equal to itself.")
366366 }
367367
368368
369369
370370 @Callable(i)
371371 func boostPoolAPYwWhirlpool () = if (((getIntegerValue(this, "Activated blockheight") + (8 * 1440)) > height))
372372 then throw(("Wait till blockheight:" + toString((getIntegerValue(this, "Activated blockheight") + (8 * 1440)))))
373373 else {
374374 let wavesBalanceBefore = wavesBalance(this).available
375375 if ((wavesBalanceBefore == wavesBalanceBefore))
376376 then {
377377 let claim = invoke(Address(whirlpoolPoolId), "claimIndexRewards", nil, nil)
378378 if ((claim == claim))
379379 then {
380380 let swapwhirlpool = swapToWaves(whirlpoolPoolId, whirlpool)
381381 if ((swapwhirlpool == swapwhirlpool))
382382 then {
383383 let boost = invoke(this, "boostPoolAPY", [wavesBalanceBefore], nil)
384384 if ((boost == boost))
385385 then nil
386386 else throw("Strict value is not equal to itself.")
387387 }
388388 else throw("Strict value is not equal to itself.")
389389 }
390390 else throw("Strict value is not equal to itself.")
391391 }
392392 else throw("Strict value is not equal to itself.")
393393 }
394394
395395
396396
397397 @Callable(i)
398398 func supplyETHmain () = if ((i.caller != this))
399399 then throw("access only by project owner")
400400 else {
401401 let supplyAmount = assetBalance(this, eth)
402402 if ((supplyAmount == supplyAmount))
403403 then {
404404 let main = supplyPL(PL_Main, eth, supplyAmount)
405405 if ((main == main))
406406 then [IntegerEntry("ETH supplied", (supplyAmount + tryGetInteger(this, "ETH supplied"))), IntegerEntry("ETH Puzzle Lend main pool", PL_value(PL_Main, eth)), IntegerEntry("surplus treasury ETH Puzzle Lend main pool in wavelets", fraction(PL_value(PL_Main, eth), ethWaves, d8))]
407407 else throw("Strict value is not equal to itself.")
408408 }
409409 else throw("Strict value is not equal to itself.")
410410 }
411411
412412
413413
414414 @Callable(i)
415415 func withdrawWAVES_Main () = if ((i.caller != this))
416416 then throw("access only by project owner")
417417 else {
418418 let withdrawAmount = withdrawAmountWaves(PL_Main)
419419 if ((withdrawAmount == withdrawAmount))
420420 then {
421421 let withdraw = withdrawPL(PL_Main, waves, withdrawAmountWaves(PL_Main))
422422 if ((withdraw == withdraw))
423423 then [IntegerEntry("PL BT Main", PL_value(PL_Main, waves)), IntegerEntry("withdraw Amount Waves", withdrawAmount)]
424424 else throw("Strict value is not equal to itself.")
425425 }
426426 else throw("Strict value is not equal to itself.")
427427 }
428428
429429
430430
431431 @Callable(i)
432432 func withdrawWAVES_Defi () = if ((i.caller != this))
433433 then throw("access only by project owner")
434434 else {
435435 let withdrawAmount = withdrawAmountWaves(PL_Defi)
436436 if ((withdrawAmount == withdrawAmount))
437437 then {
438438 let withdraw = withdrawPL(PL_Defi, waves, withdrawAmountWaves(PL_Defi))
439439 if ((withdraw == withdraw))
440440 then [IntegerEntry("PL BT Defi", PL_value(PL_Defi, waves)), IntegerEntry("withdraw Amount Waves", withdrawAmount)]
441441 else throw("Strict value is not equal to itself.")
442442 }
443443 else throw("Strict value is not equal to itself.")
444444 }
445445
446446
447447
448448 @Callable(i)
449449 func withdrawWAVES_Low () = if ((i.caller != this))
450450 then throw("access only by project owner")
451451 else {
452452 let withdrawAmount = withdrawAmountWaves(PL_Low)
453453 if ((withdrawAmount == withdrawAmount))
454454 then {
455455 let withdraw = withdrawPL(PL_Low, waves, withdrawAmountWaves(PL_Low))
456456 if ((withdraw == withdraw))
457457 then [IntegerEntry("PL BT Low", PL_value(PL_Low, waves)), IntegerEntry("withdraw Amount Waves", withdrawAmount)]
458458 else throw("Strict value is not equal to itself.")
459459 }
460460 else throw("Strict value is not equal to itself.")
461461 }
462462
463463
464464
465465 @Callable(i)
466466 func stakeEAST () = if ((i.caller != this))
467467 then throw("access only by project owner")
468468 else {
469469 let stakeEAST = invoke(EAST_stake, "stake", nil, [AttachedPayment(east, assetBalance(this, east))])
470470 if ((stakeEAST == stakeEAST))
471471 then [IntegerEntry("EAST staked", (assetBalance(this, east) + tryGetInteger(this, "EAST staked"))), IntegerEntry("ST EAST in staking", eastInStaking), IntegerEntry("ST stEAST in waves", stEastInWaves)]
472472 else throw("Strict value is not equal to itself.")
473473 }
474474
475475
476476
477477 @Callable(i)
478478 func changeIntegerEntry (keyString,integer) = if ((i.caller != this))
479479 then throw("access only by project owner")
480480 else [IntegerEntry(keyString, integer)]
481481
482482

github/deemru/w8io/3ef1775 
131.48 ms