tx · 7tvBSXMDLD5oZYJDWK7b44wzSu8pjAg2Pv93VcXdwd4D 3Mw8ZcMK47vENHqhYYhCZTCPDXhff6ZQVwt: -0.06000000 Waves 2023.12.27 12:06 [2904971] smart account 3Mw8ZcMK47vENHqhYYhCZTCPDXhff6ZQVwt > SELF 0.00000000 Waves
{ "type": 13, "id": "7tvBSXMDLD5oZYJDWK7b44wzSu8pjAg2Pv93VcXdwd4D", "fee": 6000000, "feeAssetId": null, "timestamp": 1703667922668, "version": 2, "chainId": 84, "sender": "3Mw8ZcMK47vENHqhYYhCZTCPDXhff6ZQVwt", "senderPublicKey": "3fNYAZ872D7hsaic3sPDZd5uAk59U5CiWiA153FUZ6Qv", "proofs": [ "2ZM7L1tmgEACj2VAfAHKyATkPRX9kqsKYbzuW7PnkDpfj1Yyjwg1twxW6USUCXs3gUuut3qQZ5DAhncYw4pck5VP" ], "script": "base64:BgKMAQgCEhAKDhgYAQEICAEBAQEBCAEIEgMKAQESAwoBARIAEgQKAggBEgQKAggBEgMKAQESBAoCCAESAwoBARIECgIIARIFCgMICAESAwoBCBIAEgASAwoBCBIAEgMKAQESAwoBCBIDCgEIEgQKAgEBEgYKBAEBAQESABIAEgASAwoBCBIECgIIARIDCgEIfgADU0VQAgJfXwAFV0FWRVMCBXdhdmVzAAdNQVhfSU5UAP//////////fwAHTUFYX0ZFRQDAhD0ADU1BWF9BTVBMSUZJRVIAwIQ9ABRNQVhfV0VJR0hUX0FNUExJRklFUgDAhD0ACk1BWF9XRUlHSFQAwIQ9AA9GRUVfUkFURV9GQUNUT1IAwIQ9AAtSQVRFX0ZBQ1RPUgDAhD0ADlBFUkNFTlRfRkFDVE9SCQC2AgEAgICQu7rWrfANABdESVNCQWxBTkNFX0NPRUZGX0ZBQ1RPUgkAtgIBAICglKWNHQAQWkVST19JTlRfTElTVF8xMAkAzAgCAAAJAMwIAgAACQDMCAIAAAkAzAgCAAAJAMwIAgAACQDMCAIAAAkAzAgCAAAJAMwIAgAACQDMCAIAAAkAzAgCAAAFA25pbAAQWkVST19JTlRfTElTVF8xMQkAzQgCBRBaRVJPX0lOVF9MSVNUXzEwAAAACklOREVYX0xJU1QJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJBQNuaWwAC1pFUk9fQklHSU5UCQC2AgEAAAATWkVST19CSUdJTlRfTElTVF8xMQkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAUDbmlsAAxJTlRfREVDSU1BTFMACAAPQklHSU5UX0RFQ0lNQUxTABIAB0xJU1RfNjQJAL0JAgJ/MF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMAIBXwAMS0VZX01VTFRJU0lHAghNVUxUSVNJRwAKS0VZX1NUQVRVUwIGU1RBVFVTAApLRVlfUEFVU0VEAgZQQVVTRUQACktFWV9QQVVTRVICBlBBVVNFUgALS0VZX1NUT1JBR0UCB1NUT1JBR0UACktFWV9BU1NFVFMCBkFTU0VUUwASS0VZX0FTU0VUX0JBTEFOQ0VTAg5BU1NFVF9CQUxBTkNFUwATS0VZX1JFV0FSRF9CQUxBTkNFUwIPUkVXQVJEX0JBTEFOQ0VTABFLRVlfQVNTRVRfV0VJR0hUUwINQVNTRVRfV0VJR0hUUwAKS0VZX0xQX0ZFRQIGTFBfRkVFABBLRVlfUFJPVE9DT0xfRkVFAgxQUk9UT0NPTF9GRUUADUtFWV9QUkVDSVNJT04CCVBSRUNJU0lPTgAUS0VZX1NJR01BX0ZFRV9QRVJfTFACEFNJR01BX0ZFRV9QRVJfTFAAGUtFWV9VU0VSX1NJR01BX0ZFRV9QRVJfTFACFVVTRVJfU0lHTUFfRkVFX1BFUl9MUAALS0VZX1VTRVJfTFACB1VTRVJfTFAADEtFWV9UT1RBTF9MUAIIVE9UQUxfTFAAEEtFWV9VU0VSX1BST0ZJVFMCDFVTRVJfUFJPRklUUwAMS0VZX1dBVENIRE9HAghXQVRDSERPRwATS0VZX1dBVENIRE9HX09GRlNFVAIPV0FUQ0hET0dfT0ZGU0VUABNLRVlfV0FUQ0hET0dfSEVJR0hUAg9XQVRDSERPR19IRUlHSFQBEF92YWxpZGF0ZUFkZHJlc3MCCGFkZHJlc3NfBGVycl8EByRtYXRjaDAJAKYIAQUIYWRkcmVzc18DCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQBYQUHJG1hdGNoMAYJAAIBBQRlcnJfAQ5fdmFsaWRhdGVBc3NldAIIYXNzZXRJZF8EZXJyXwMJAAACBQhhc3NldElkXwUFV0FWRVMGBAckbWF0Y2gwCQDsBwEJANkEAQUIYXNzZXRJZF8DCQABAgUHJG1hdGNoMAIFQXNzZXQEAWEFByRtYXRjaDAGCQACAQUEZXJyXwEMX3ZhbGlkYXRlSW50BAR2YWxfDmxvd2VyQm91bmRhcnlfDnVwcGVyQm91bmRhcnlfBGVycl8DAwkAZgIFDmxvd2VyQm91bmRhcnlfBQR2YWxfBgkAZgIFBHZhbF8FDnVwcGVyQm91bmRhcnlfCQACAQUEZXJyXwYBDV92YWxpZGF0ZUJvb2wDBHZhbF8HdGFyZ2V0XwRlcnJfAwkBAiE9AgUEdmFsXwUHdGFyZ2V0XwkAAgEFBGVycl8GARRfdmFsaWRhdGVTdHJpbmdFcXVhbAMFdmFsMV8FdmFsMl8EZXJyXwMJAQIhPQIFBXZhbDFfBQV2YWwyXwkAAgEFBGVycl8GARRfdmFsaWRhdGVTdHJpbmdOb3RFcQMFdmFsMV8FdmFsMl8EZXJyXwMJAAACBQV2YWwxXwUFdmFsMl8JAAIBBQRlcnJfBgEQX3ZhbGlkYXRlSW50TGlzdAQEdmFsXw5sb3dlckJvdW5kYXJ5Xw51cHBlckJvdW5kYXJ5XwRlcnJfCgEIZm9sZEZ1bmMCA2FjYwRlbGVtBAckbWF0Y2gwCQC2CQEFBGVsZW0DCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwAwUDYWNjCQEMX3ZhbGlkYXRlSW50BAUBYQUObG93ZXJCb3VuZGFyeV8FDnVwcGVyQm91bmRhcnlfBQRlcnJfBwkAAgEFBGVycl8KAAIkbAUEdmFsXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAGCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgEPX3ZhbGlkYXRlQXNzZXRzAgdhc3NldHNfBGVycl8KAQhmb2xkRnVuYwIDYWNjBGVsZW0DBQNhY2MJAQ5fdmFsaWRhdGVBc3NldAIFBGVsZW0FBGVycl8HCgACJGwFB2Fzc2V0c18KAAIkcwkAkAMBBQIkbAoABSRhY2MwBgoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZm9sZEZ1bmMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoBEl92YWxpZGF0ZUludEVxdWFscwMFdmFsMV8FdmFsMl8EZXJyXwMJAQIhPQIFBXZhbDFfBQV2YWwyXwkAAgEFBGVycl8GARJfdmFsaWRhdGVUb2tlbk5hbWUCBHZhbF8EZXJyXwMDCQBmAgAECQCxAgEFBHZhbF8GCQBmAgkAsQIBBQR2YWxfABAJAAIBBQRlcnJfBgETX3ZhbGlkYXRlVG9rZW5EZXNjcgIEdmFsXwRlcnJfAwkAZgIJALECAQUEdmFsXwDoBwkAAgEFBGVycl8GARFfdmFsaWRhdGVEZWNpbWFscwIEdmFsXwRlcnJfAwMJAGYCAAAFBHZhbF8GCQBmAgUEdmFsXwAICQACAQUEZXJyXwYBEF92YWxpZGF0ZVBheW1lbnQECHBheW1lbnRfCGFzc2V0SWRfD3JlcXVpcmVkQW1vdW50XwRlcnJfBAckbWF0Y2gwCAUIcGF5bWVudF8HYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFhBQckbWF0Y2gwAwkBAiE9AgUIYXNzZXRJZF8JANgEAQUBYQkAAgEJAKwCAgUEZXJyXwIHOiBhc3NldAMJAGYCBQ9yZXF1aXJlZEFtb3VudF8IBQhwYXltZW50XwZhbW91bnQJAAIBCQCsAgIFBGVycl8CCDogYW1vdW50BgkAAgEJAKwCAgUEZXJyXwIHOiBhc3NldAEVX3ZhbGlkYXRlTGlzdENvbnRhaW5zAwVsaXN0XwR2YWxfBGVycl8DCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCBQVsaXN0XwUEdmFsXwkAAgEFBGVycl8GAQtfYXNzZXRUb1N0cgEGYXNzZXRfBAckbWF0Y2gwBQZhc3NldF8DCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYQUHJG1hdGNoMAkA2AQBBQFhBQVXQVZFUwELX3N0clRvQXNzZXQBBmFzc2V0XwMDCQAAAgUGYXNzZXRfBQVXQVZFUwYJAAACBQZhc3NldF8CAAUEdW5pdAkA2QQBBQZhc3NldF8BCl9sb2FkUGF1c2UABAckbWF0Y2gwCQCgCAEFCktFWV9QQVVTRUQDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBYQUHJG1hdGNoMAUBYQcBCl9zYXZlUGF1c2UBCWlzUGF1c2VkXwkAzAgCCQEMQm9vbGVhbkVudHJ5AgUKS0VZX1BBVVNFRAUJaXNQYXVzZWRfBQNuaWwBC19sb2FkUGF1c2VyAAQHJG1hdGNoMAkAoggBBQpLRVlfUEFVU0VSAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQUBYQkBB0FkZHJlc3MBAQABC19zYXZlUGF1c2VyAQdwYXVzZXJfCQDMCAIJAQtTdHJpbmdFbnRyeQIFCktFWV9QQVVTRVIJAKUIAQUHcGF1c2VyXwUDbmlsAQ1fbG9hZE11bHRpc2lnAAQHJG1hdGNoMAkAoggBBQxLRVlfTVVMVElTSUcDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBBQFhCQEHQWRkcmVzcwEBAAENX3NhdmVNdWx0aXNpZwEJbXVsdGlzaWdfCQDMCAIJAQtTdHJpbmdFbnRyeQIFDEtFWV9NVUxUSVNJRwkApQgBBQltdWx0aXNpZ18FA25pbAEMX2xvYWRTdG9yYWdlAAQHJG1hdGNoMAkAoggBBQtLRVlfU1RPUkFHRQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAEBnN0cnVjdAkAtQkCBQFhBQNTRVAJAJwKCgkA2QQBCQCRAwIFBnN0cnVjdAAACQAAAgkAkQMCBQZzdHJ1Y3QAAQIBMQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0cnVjdAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RydWN0AAMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdHJ1Y3QABAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0cnVjdAAFCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RydWN0AAYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdHJ1Y3QABwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0cnVjdAAICQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFBnN0cnVjdAAJCQCcCgoBAAcAAAAAAAAAAAAAAAAAAAkBB0FkZHJlc3MBAQABDF9zYXZlU3RvcmFnZQEIc3RvcmFnZV8JAMwIAgkBC1N0cmluZ0VudHJ5AgULS0VZX1NUT1JBR0UJALkJAgkAzAgCCQDYBAEIBQhzdG9yYWdlXwJfMQkAzAgCAwgFCHN0b3JhZ2VfAl8yAgExAgEwCQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl8zCQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl80CQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl81CQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl82CQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl83CQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl84CQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl85CQDMCAIJAKUIAQgFCHN0b3JhZ2VfA18xMAUDbmlsBQNTRVAFA25pbAELX2xvYWRBc3NldHMABAckbWF0Y2gwCQCiCAEFCktFWV9BU1NFVFMDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwAwkAZgIJALECAQUBYQAACQC9CQIFAWEFA1NFUAUDbmlsBQNuaWwBC19zYXZlQXNzZXRzAQdhc3NldHNfCQDMCAIJAQtTdHJpbmdFbnRyeQIFCktFWV9BU1NFVFMJALsJAgUHYXNzZXRzXwUDU0VQBQNuaWwBEl9sb2FkQXNzZXRCYWxhbmNlcwAKAQhmb2xkRnVuYwIDYWNjBGVsZW0EB2JhbGFuY2UJAQ1wYXJzZUludFZhbHVlAQUEZWxlbQkAlAoCCQDNCAIIBQNhY2MCXzEFB2JhbGFuY2UJAGQCCAUD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BGVsZW0JAMwIAgkBC1N0cmluZ0VudHJ5AgkAuQkCCQDMCAIFEEtFWV9VU0VSX1BST0ZJVFMJAMwIAgkApQgBBQV1c2VyXwUDbmlsBQNTRVAJALsJAgoAAiRsBQR2YWxfCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTEJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALBQNTRVAFA25pbAENX2xvYWRXYXRjaGRvZwAEByRtYXRjaDAJAKIIAQUMS0VZX1dBVENIRE9HAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQUBYQkBB0FkZHJlc3MBAQABDV9zYXZlV2F0Y2hkb2cBCXdhdGNoZG9nXwkAzAgCCQELU3RyaW5nRW50cnkCBQxLRVlfV0FUQ0hET0cJAKUIAQUJd2F0Y2hkb2dfBQNuaWwBE19sb2FkV2F0Y2hkb2dPZmZzZXQABAckbWF0Y2gwCQCfCAEFE0tFWV9XQVRDSERPR19PRkZTRVQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAABE19zYXZlV2F0Y2hkb2dPZmZzZXQBB29mZnNldF8JAMwIAgkBDEludGVnZXJFbnRyeQIFE0tFWV9XQVRDSERPR19PRkZTRVQFB29mZnNldF8FA25pbAERX29ubHlUaGlzQ29udHJhY3QBB2NhbGxlcl8DCQECIT0CBQdjYWxsZXJfBQR0aGlzCQACAQIZX29ubHlUaGlzQ29udHJhY3Q6IHJldmVydAYBEF93aGVuTXVsdGlzaWdTZXQAAwkAAAIJAQ1fbG9hZE11bHRpc2lnAAkBB0FkZHJlc3MBAQAJAAIBAhhfd2hlbk11bHRpc2lnU2V0OiByZXZlcnQGARNfd2hlbk5vdEluaXRpYWxpemVkAAQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQADCQECIT0CCAUHc3RvcmFnZQJfMQEACQACAQIbX3doZW5Ob3RJbml0aWFsaXplZDogcmV2ZXJ0BgEQX3doZW5Jbml0aWFsaXplZAAEB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UAAwkAAAIIBQdzdG9yYWdlAl8xAQAJAAIBAhhfd2hlbkluaXRpYWxpemVkOiByZXZlcnQGAQ5fd2hlbk5vdFBhdXNlZAADCQEKX2xvYWRQYXVzZQAJAAIBAhZfd2hlbk5vdFBhdXNlZDogcmV2ZXJ0BgELX3doZW5QYXVzZWQAAwkBASEBCQEKX2xvYWRQYXVzZQAJAAIBAhNfd2hlblBhdXNlZDogcmV2ZXJ0BgELX29ubHlQYXVzZXIBB2NhbGxlcl8DCQECIT0CBQdjYWxsZXJfCQELX2xvYWRQYXVzZXIACQACAQITX29ubHlQYXVzZXI6IHJldmVydAYBDl9jaGVja1dhdGNoZG9nAAQCd2QEByRtYXRjaDAJAJoIAgkBDV9sb2FkV2F0Y2hkb2cABRNLRVlfV0FUQ0hET0dfSEVJR0hUAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAkAZAIFAWEJARNfbG9hZFdhdGNoZG9nT2Zmc2V0AAAAAwkAZgIFBmhlaWdodAUCd2QJAAIBAhZfY2hlY2tXYXRjaGRvZzogcmV2ZXJ0BgEMX2dldERlY2ltYWxzAQhhc3NldElkXwQHJG1hdGNoMAkA7AcBCQDZBAEFCGFzc2V0SWRfAwkAAQIFByRtYXRjaDACBUFzc2V0BAFhBQckbWF0Y2gwCAUBYQhkZWNpbWFscwkAAgEJAKwCAgIXX2dldERlY2ltYWxzOiBubyBhc3NldD0FCGFzc2V0SWRfARJfbm9ybWFsaXplRGVjaW1hbHMEB2Ftb3VudF8Pc291cmNlRGVjaW1hbHNfD3RhcmdldERlY2ltYWxzXwZyb3VuZF8DCQBnAgUPc291cmNlRGVjaW1hbHNfBQ90YXJnZXREZWNpbWFsc18JAG4EBQdhbW91bnRfAAEJAGwGAAoAAAkAZQIFD3NvdXJjZURl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AwIFCGFtb3VudHNfBQVpbmRleAQKbmV3QmFsYW5jZQkAZAIFBGVsZW0FBmFtb3VudAkAlQoDCQBkAgUFaW5kZXgAAQkAzQgCCAUDYWNjAl8yBQpuZXdCYWxhbmNlCQBkAggFA2FjYwJfMwUKbmV3QmFsYW5jZQQGcmVzdWx0CgACJGwFCWJhbGFuY2VzXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwAABQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZm9sZEZ1bmMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoJAJQKAggFBnJlc3VsdAJfMggFBnJlc3VsdAJfMwEcX2luY3JlbWVudEJhbGFuY2VzQnlQYXltZW50cwUJYmFsYW5jZXNfCXBheW1lbnRzXwdhc3NldHNfCWRlY2ltYWxzXwRlcnJfCgEIZm9sZEZ1bmMCA2FjYwRlbGVtBAVpbmRleAgFA2FjYwJfMQQHcGF5bWVudAkAkQMCBQlwYXltZW50c18FBWluZGV4BA9wYXltZW50QXNzZXRTdHIJAQtfYXNzZXRUb1N0cgEIBQdwYXltZW50B2Fzc2V0SWQEA2VycgMJAQIhPQIFD3BheW1lbnRBc3NldFN0cgkAkQMCBQdhc3NldHNfBQVpbmRleAkAAgEJAKwCAgkArAICBQRlcnJfAgg6IGluZGV4PQkApAMBBQVpbmRleAUEdW5pdAMJAAACBQNlcnIFA2VycgQNYXNzZXREZWNpbWFscwkBDF9nZXREZWNpbWFscwEFD3BheW1lbnRBc3NldFN0cgQKbmV3QmFsYW5jZQkAZAIFBGVsZW0JARJfbm9ybWFsaXplRGVjaW1hbHMECAkAkQMCBQlwYXltZW50c18FBWluZGV4BmFtb3VudAUNYXNzZXREZWNpbWFscwUJ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AgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoIBQZyZXN1bHQCXzIBEl9jYWxjdWxhdGVNaW51c0ZlZQUIYmFsYW5jZV8MZXF1aWxpYnJpdW1fCWxwQW1vdW50XxB3ZWlnaHRBbXBsaWZpZXJfEGRpc2JhbGFuY2VDb2VmZl8ECXRocmVzaG9sZAkAawMFDGVxdWlsaWJyaXVtXwkAZQIFFE1BWF9XRUlHSFRfQU1QTElGSUVSBRB3ZWlnaHRBbXBsaWZpZXJfBRRNQVhfV0VJR0hUX0FNUExJRklFUgMJAGYCBQhiYWxhbmNlXwUJdGhyZXNob2xkAAAJAKADAQkAvQIECQC8AgMJALYCAQUJbHBBbW91bnRfCQC2AgEFEGRpc2JhbGFuY2VDb2VmZl8FF0RJU0JBbEFOQ0VfQ09FRkZfRkFDVE9SCQC2AgEJAGUCBQl0aHJlc2hvbGQFCGJhbGFuY2VfCQC2AgEFCXRocmVzaG9sZAUHQ0VJTElORwEXX2NhbGN1bGF0ZU1pbnVzRmVlRGVsdGEGDmJhbGFuY2VCZWZvcmVfDWJhbGFuY2VBZnRlcl8MZXF1aWxpYnJpdW1fCWxwQW1vdW50XxB3ZWlnaHRBbXBsaWZpZXJfEGRpc2JhbGFuY2VDb2VmZl8DCQBmAgUNYmFsYW5jZUFmdGVyXwUOYmFsYW5jZUJlZm9yZV8AAAkAZQIJARJfY2FsY3VsYXRlTWludXNGZWUFBQ1iYWxhbmNlQWZ0ZXJfBQxlcXVpbGlicml1bV8FCWxwQW1vdW50XwUQd2VpZ2h0QW1wbGlmaWVyXwUQZGlzYmFsYW5jZUNvZWZmXwkBEl9jYWxjdWxhdGVNaW51c0ZlZQUFDmJhbGFuY2VCZWZvcmVfBQxlcXVpbGlicml1bV8FCWxwQW1vdW50XwUQd2VpZ2h0QW1wbGlmaWVyXwUQZGlzYmFsYW5jZUNvZWZmXwERX2NhbGN1bGF0ZVBsdXNGZWUDCGJhbGFuY2VfDGVxdWlsaWJyaXVtXw5yZXdhcmRCYWxhbmNlXwMJAGYCBQhiYWxhbmNlXwUMZXF1aWxpYnJpdW1fBQ5yZXdhcmRCYWxhbmNlXwkAbgQFDnJld2FyZEJhbGFuY2VfBQhiYWxhbmNlXwUMZXF1aWxpYnJpdW1fBQVGTE9PUgEWX2NhbGN1bGF0ZVBsdXNGZWVEZWx0YQQOYmFsYW5jZUJlZm9yZV8NYmFsYW5jZUFmdGVyXwxlcXVpbGlicml1bV8OcmV3YXJkQmFsYW5jZV8DCQBmAgUOYmFsYW5jZUJlZm9yZV8FDWJhbGFuY2VBZnRlcl8AAAkAZQIJARFfY2FsY3VsYXRlUGx1c0ZlZQMFDWJhbGFuY2VBZnRlcl8FDGVxdWlsaWJyaXVtXwUOcmV3YXJkQmFsYW5jZV8JARFfY2FsY3VsYXRlUGx1c0ZlZQMFDmJhbGFuY2VCZWZvcmVfBQxlcXVpbGlicml1bV8FDnJld2FyZEJhbGFuY2VfARNfdmFsaWRhdGVBbGxvY2F0aW9uAg5hc3NldEJhbGFuY2VzXw9yZXdhcmRCYWxhbmNlc18ECG1heEluZGV4CQCQAwEFDmFzc2V0QmFsYW5jZXNfCgEIZm9sZEZ1bmMCA2FjYwVpbmRleAMJAGcCBQVpbmRleAUIbWF4SW5kZXgFA2FjYwMJAGYCAAAJAJEDAgUOYXNzZXRCYWxhbmNlc18FBWluZGV4CQACAQIrX3ZhbGlkYXRlQWxsb2NhdGlvbjogbmVnYXRpdmUgYXNzZXRCYWxhbmNlcwMJAGYCAAAJAJEDAgUPcmV3YXJkQmFsYW5jZXNfBQVpbmRleAkAAgECLF92YWxpZGF0ZUFsbG9jYXRpb246IG5lZ2F0aXZlIHJld2FyZEJhbGFuY2VzBQNhY2MKAAIkbAUKSU5ERVhfTElTVAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAGCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgELX2NoZWNrcG9pbnQBBXVzZXJfBAZ1c2VyTHAJAQtfbG9hZFVzZXJMcAEFBXVzZXJfBAt1c2VyUHJvZml0cwkBEF9sb2FkVXNlclByb2ZpdHMBBQV1c2VyXwQNc2lnbWFGZWVQZXJMcAkBEl9sb2FkU2lnbWFGZWVQZXJMcAAEEXVzZXJTaWdtYUZlZVBlckxwCQEWX2xvYWRVc2VyU2lnbWFGZWVQZXJMcAEFBXVzZXJfCgEIZm9sZEZ1bmMCA2FjYwRlbGVtBAVpbmRleAgFA2FjYwJfMQQNcHJvZml0VXBkYXRlZAkAZAIJAJEDAgULdXNlclByb2ZpdHMFBWluZGV4CQCgAwEJALwCAwkAtgIBBQZ1c2VyTHAJALgCAgkAkQMCBQ1zaWdtYUZlZVBlckxwBQVpbmRleAkAkQMCBRF1c2VyU2lnbWFGZWVQZXJMcAUFaW5kZXgFDlBFUkNFTlRfRkFDVE9SCQCUCgIJAGQCBQVpbmRleAABCQDNCAIIBQNhY2MCXzIFDXByb2ZpdFVwZGF0ZWQEDSR0MDIyMzE0MjIzODcKAAIkbAUQWkVST19JTlRfTElTVF8xMQoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAABQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGZvbGRGdW5jAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsEA2lkeAgFDSR0MDIyMzE0MjIzODcCXzEEDnByb2ZpdHNVcGRhdGVkCAUNJHQwMjIzMTQyMjM4NwJfMgkAlAoCCQDOCAIJARBfc2F2ZVVzZXJQcm9maXRzAgUFdXNlcl8FDnByb2ZpdHNVcGRhdGVkCQEWX3NhdmVVc2VyU2lnbWFGZWVQZXJMcAIFBXVzZXJfBQ1zaWdtYUZlZVBlckxwBQ5wcm9maXRzVXBkYXRlZAEUX3VwZGF0ZVNpZ21hRmVlUGVyTHAEDnNpZ21hRmVlUGVyTHBfCHRvdGFsTHBfBmluZGV4XwZscEZlZV8KAQhmb2xkRnVuYwIDYWNjBGVsZW0EBWluZGV4CAUDYWNjAl8xBBRzaWdtYUZlZVBlckxwVXBkYXRlZAMJAAACBQZpbmRleF8FBWluZGV4CQC3AgIJAJEDAgUOc2lnbWFGZWVQZXJMcF8FBWluZGV4CQC8AgMJALYCAQUGbHBGZWVfBQ5QRVJDRU5UX0ZBQ1RPUgkAtgIBBQh0b3RhbExwXwkAkQMCBQ5zaWdtYUZlZVBlckxwXwUFaW5kZXgJAJQKAgkAZAIFBWluZGV4AAEJAM0IAggFA2FjYwJfMgUUc2lnbWFGZWVQZXJMcFVwZGF0ZWQEDSR0MDIzMDM3MjMxMTYKAAIkbAUQWkVST19JTlRfTElTVF8xMQoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAABQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGZvbGRGdW5jAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsEA2lkeAgFDSR0MDIzMDM3MjMxMTYCXzEEFHNpZ21hRmVlUGVyTHBVcGRhdGVkCAUNJHQwMjMwMzcyMzExNgJfMgUUc2lnbWFGZWVQZXJMcFVwZGF0ZWQBG19jYWxjdWxhdGVMcEFuZFByb3RvY29sRmVlcwQLYXNzZXRJbmRleF8HYW1vdW50XwpscEZlZVJhdGVfEHByb3RvY29sRmVlUmF0ZV8EDXNpZ21hRmVlUGVyTHAJARJfbG9hZFNpZ21hRmVlUGVyTHAABAd0b3RhbExwCQEMX2xvYWRUb3RhbExwAAQNJHQwMjMzMzcyMzYxMgMJAAACBQd0b3RhbExwAAAJAJQKAgAACQBrAwUHYW1vdW50XwUQcHJvdG9jb2xGZWVSYXRlXwUHTUFYX0ZFRQkAlAoCCQBrAwUHYW1vdW50XwUKbHBGZWVSYXRlXwUHTUFYX0ZFRQkAawMFB2Ftb3VudF8FEHByb3RvY29sRmVlUmF0ZV8FB01BWF9GRUUEBWxwRmVlCAUNJHQwMjMzMzcyMzYxMgJfMQQLcHJvdG9jb2xGZWUIBQ0kdDAyMzMzNzIzNjEyAl8yBBRzaWdtYUZlZVBlckxwVXBkYXRlZAMJAAACBQVscEZlZQAABQ1zaWdtYUZlZVBlckxwCQEUX3VwZGF0ZVNpZ21hRmVlUGVyTHAEBQ1zaWdtYUZlZVBlckxwBQd0b3RhbExwBQthc3NldEluZGV4XwUFbHBGZWUJAJUKAwUFbHBGZWUFC3Byb3RvY29sRmVlBRRzaWdtYUZlZVBlckxwVXBkYXRlZAELX2RlcG9zaXRBbGwBB2Ftb3VudF8EB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABA1scFRvdGFsU3VwcGx5CAUHc3RvcmFnZQJfMwQGYXNzZXRzCQELX2xvYWRBc3NldHMABA0kdDAyNDAxODI0MDcxCQERX2xvYWRBc3NldFdlaWdodHMABAxhc3NldFdlaWdodHMIBQ0kdDAyNDAxODI0MDcxAl8xBAtzaWdtYVdlaWdodAgFDSR0MDI0MDE4MjQwNzECXzIEDSR0MDI0MDc2MjQxNDQJARJfbG9hZEFzc2V0QmFsYW5jZXMABBFwcmV2QXNzZXRCYWxhbmNlcwgFDSR0MDI0MDc2MjQxNDQCXzEEFHByZXZBc3NldFRvdGFsU3VwcGx5CAUNJHQwMjQwNzYyNDE0NAJfMgQNJHQwMjQxNTAyNTM4MAMJAAACBRRwcmV2QXNzZXRUb3RhbFN1cHBseQAACgEIZm9sZEZ1bmMCA2FjYwRlbGVtBAVpbmRleAgFA2FjYwJfMQQYcmVxdWlyZWRBbW91bnROb3JtYWxpemVkCQBrAwkAkQMCBQxhc3NldFdlaWdodHMFBWluZGV4BQdhbW91bnRfBQtzaWdtYVdlaWdodAkAlAoCCQBkAgUFaW5kZXgAAQkAzQgCCAUDYWNjAl8yBRhyZXF1aXJlZEFtb3VudE5vcm1hbGl6ZWQEDSR0MDI0NTkyMjQ2NjYKAAIkbAUGYXNzZXRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCAAAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZm9sZEZ1bmMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoEA2lkeAgFDSR0MDI0NTkyMjQ2NjYCXzEEGXJlcXVpcmVkQW1vdW50c05vcm1hbGl6ZWQIBQ0kdDAyNDU5MjI0NjY2Al8yCQCUCgIFB2Ftb3VudF8FGXJlcXVpcmVkQW1vdW50c05vcm1hbGl6ZWQEBXJhdGlvCQC8AgMJALYCAQUHYW1vdW50XwUOUEVSQ0VOVF9GQUNUT1IJALYCAQUUcHJldkFzc2V0VG90YWxTdXBwbHkKAQlmb2xkRnVuYzECA2FjYwRlbGVtBAVpbmRleAgFA2FjYwJfMQQYcmVxdWlyZWRBbW91bnROb3JtYWxpemVkCQCgAwEJALwCAwUFcmF0aW8JALYCAQkAkQMCBRFwcmV2QXNzZXRCYWxhbmNlcwUFaW5kZXgFDlBFUkNFTlRfRkFDVE9SCQCUCgIJAGQCBQVpbmRleAABCQDNCAIIBQNhY2MCXzIFGHJlcXVpcmVkQW1vdW50Tm9ybWFsaXplZAQNJHQwMjUyMDkyNTI4NAoAAiRsBQZhc3NldHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlmb2xkRnVuYzECBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoEA2lkeAgFDSR0MDI1MjA5MjUyODQCXzEEGXJlcXVpcmVkQW1vdW50c05vcm1hbGl6ZWQIBQ0kdDAyNTIwOTI1Mjg0Al8yCQCUCgIJAGsDBQdhbW91bnRfBQ1scFRvdGFsU3VwcGx5BRRwcmV2QXNzZXRUb3RhbFN1cHBseQUZcmVxdWlyZWRBbW91bnRzTm9ybWFsaXplZAQObHBUb2tlbnNUb01pbnQIBQ0kdDAyNDE1MDI1MzgwAl8xBBlyZXF1aXJlZEFtb3VudHNOb3JtYWxpemVkCAUNJHQwMjQxNTAyNTM4MAJfMgQNJHQwMjUzODYyNTQ5OQkBG19pbmNyZW1lbnRCYWxhbmNlc0J5QW1vdW50cwIFEXByZXZBc3NldEJhbGFuY2VzBRlyZXF1aXJlZEFtb3VudHNOb3JtYWxpemVkBA1hc3NldEJhbGFuY2VzCAUNJHQwMjUzODYyNTQ5OQJfMQQQYXNzZXRUb3RhbFN1cHBseQgFDSR0MDI1Mzg2MjU0OTkCXzIJAJUKAwUObHBUb2tlbnNUb01pbnQFGXJlcXVpcmVkQW1vdW50c05vcm1hbGl6ZWQFDWFzc2V0QmFsYW5jZXMBCF9kZXBvc2l0Aghhc3NldElkXwdhbW91bnRfBAdzdG9yYWdlCQEMX2xvYWRTdG9yYWdlAAQNbHBUb3RhbFN1cHBseQgFB3N0b3JhZ2UCXzMECWxwRmVlUmF0ZQgFB3N0b3JhZ2UCXzQED3Byb3RvY29sRmVlUmF0ZQgFB3N0b3JhZ2UCXzUEEW1heEFsbG9jQW1wbGlmaWVyCAUHc3RvcmFnZQJfNgQPd2VpZ2h0QW1wbGlmaWVyCAUHc3RvcmFnZQJfNwQGYXNzZXRzCQELX2xvYWRBc3NldHMABA0kdDAyNTg2NTI1OTE4CQERX2xvYWRBc3NldFdlaWdodHMABAxhc3NldFdlaWdodHMIBQ0kdDAyNTg2NTI1OTE4Al8xBAtzaWdtYVdlaWdodAgFDSR0MDI1ODY1MjU5MTgCXzIEDSR0MDI1OTIzMjU5OTEJARJfbG9hZEFzc2V0QmFsYW5jZXMABBFwcmV2QXNzZXRCYWxhbmNlcwgFDSR0MDI1OTIzMjU5OTECXzEEFHByZXZBc3NldFRvdGFsU3VwcGx5CAUNJHQwMjU5MjMyNTk5MQJfMgQScHJldlJld2FyZEJhbGFuY2VzCQETX2xvYWRSZXdhcmRCYWxhbmNlcwAEA2VycgMDCQAAAgUUcHJldkFzc2V0VG90YWxTdXBwbHkAAAYJAAACBQ1scFRvdGFsU3VwcGx5AAAJAAIBAhRfZGVwb3NpdDogZW1wdHkgcG9vbAYDCQAAAgUDZXJyBQNlcnIEEHNvdXJjZUFzc2V0SW5kZXgJAQV2YWx1ZQEJAM8IAgUGYXNzZXRzBQhhc3NldElkXwQRc291cmNlRXF1aWxpYnJpdW0JAGsDBRRwcmV2QXNzZXRUb3RhbFN1cHBseQkAkQMCBQxhc3NldFdlaWdodHMFEHNvdXJjZUFzc2V0SW5kZXgFC3NpZ21hV2VpZ2h0BBNzb3VyY2VCYWxhbmNlQmVmb3JlCQCRAwIFEXByZXZBc3NldEJhbGFuY2VzBRBzb3VyY2VBc3NldEluZGV4BBNzb3VyY2VSZXdhcmRCYWxhbmNlCQCRAwIFEnByZXZSZXdhcmRCYWxhbmNlcwUQc291cmNlQXNzZXRJbmRleAQSc291cmNlUGx1c0ZlZURlbHRhCQEWX2NhbGN1bGF0ZVBsdXNGZWVEZWx0YQQFE3NvdXJjZUJhbGFuY2VCZWZvcmUJAGQCBRNzb3VyY2VCYWxhbmNlQmVmb3JlBQdhbW91bnRfBRFzb3VyY2VFcXVpbGlicml1bQUTc291cmNlUmV3YXJkQmFsYW5jZQQRbmV3UmV3YXJkQmFsYW5jZXMJARhfZGVjcmVtZW50QmFsYW5jZUJ5SW5kZXgDBRJwcmV2UmV3YXJkQmFsYW5jZXMFEHNvdXJjZUFzc2V0SW5kZXgFEnNvdXJjZVBsdXNGZWVEZWx0YQQQbmV3QXNzZXRCYWxhbmNlcwkBGF9pbmNyZW1lbnRCYWxhbmNlQnlJbmRleAMFEXByZXZBc3NldEJhbGFuY2VzBRBzb3VyY2VBc3NldEluZGV4CQBkAgUHYW1vdW50XwUSc291cmNlUGx1c0ZlZURlbHRhBA5scFRva2Vuc1RvTWludAkAZAIFB2Ftb3VudF8FEnNvdXJjZVBsdXNGZWVEZWx0YQQEZXJyMQkBE192YWxpZGF0ZUFsbG9jYXRpb24CBRBuZXdBc3NldEJhbGFuY2VzBRFuZXdSZXdhcmRCYWxhbmNlcwMJAAACBQRlcnIxBQRlcnIxBA0kdDAyNzA4MTI3MjEyCQEbX2NhbGN1bGF0ZUxwQW5kUHJvdG9jb2xGZWVzBAAABQ5scFRva2Vuc1RvTWludAkAaQIFCWxwRmVlUmF0ZQACCQBpAgUPcHJvdG9jb2xGZWVSYXRlAAIEBWxwRmVlCAUNJHQwMjcwODEyNzIxMgJfMQQLcHJvdG9jb2xGZWUIBQ0kdDAyNzA4MTI3MjEyAl8yBBRzaWdtYUZlZVBlckxwVXBkYXRlZAgFDSR0MDI3MDgxMjcyMTICXzMJAJgKBgUObHBUb2tlbnNUb01pbnQFEG5ld0Fzc2V0QmFsYW5jZXMFEW5ld1Jld2FyZEJhbGFuY2VzBQVscEZlZQULcHJvdG9jb2xGZWUFFHNpZ21hRmVlUGVyTHBVcGRhdGVkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQxfd2l0aGRyYXdBbGwBB2Ftb3VudF8EB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABA1scFRvdGFsU3VwcGx5CAUHc3RvcmFnZQJfMwQNJHQwMjc0MjUyNzQ5MwkBEl9sb2FkQXNzZXRCYWxhbmNlcwAEEXByZXZBc3NldEJhbGFuY2VzCAUNJHQwMjc0MjUyNzQ5MwJfMQQUcHJldkFzc2V0VG90YWxTdXBwbHkIBQ0kdDAyNzQyNTI3NDkzAl8yBA0kdDAyNzQ5ODI3NTUxCQERX2xvYWRBc3NldFdlaWdodHMABAxhc3NldFdlaWdodHMIBQ0kdDAyNzQ5ODI3NTUxAl8xBAtzaWdtYVdlaWdodAgFDSR0MDI3NDk4Mjc1NTECXzIEDmxwVG9rZW5zVG9CdXJuBQdhbW91bnRfBANlcnIJAQxfdmFsaWRhdGVJbnQEBQ5scFRva2Vuc1RvQnVybgAABQ1scFRvdGFsU3VwcGx5AiRfd2l0aGRyYXdBbGw6IGludmFsaWQgbHBUb2tlbnNUb0J1cm4DCQAAAgUDZXJyBQNlcnIEDSR0MDI3Njk1Mjc4MjgJARxfZGVjcmVtZW50QmFsYW5jZXNCeUxwQW1vdW50AwURcHJldkFzc2V0QmFsYW5jZXMFDmxwVG9rZW5zVG9CdXJuBQ1scFRvdGFsU3VwcGx5BA1hc3NldEJhbGFuY2VzCAUNJHQwMjc2OTUyNzgyOAJfMQQQYXNzZXRUb3RhbFN1cHBseQgFDSR0MDI3Njk1Mjc4MjgCXzIEDWJhbGFuY2VzVG9QYXkIBQ0kdDAyNzY5NTI3ODI4Al8zCQCVCgMFDmxwVG9rZW5zVG9CdXJuBQ1iYWxhbmNlc1RvUGF5BQ1hc3NldEJhbGFuY2VzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQlfd2l0aGRyYXcCCGFzc2V0SWRfCWxwQW1vdW50XwQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAEDWxwVG90YWxTdXBwbHkIBQdzdG9yYWdlAl8zBAlscEZlZVJhdGUIBQdzdG9yYWdlAl80BA9wcm90b2NvbEZlZVJhdGUIBQdzdG9yYWdlAl81BBFtYXhBbGxvY0FtcGxpZmllcggFB3N0b3JhZ2UCXzYED3dlaWdodEFtcGxpZmllcggFB3N0b3JhZ2UCXzcED2Rpc2JhbGFuY2VDb2VmZggFB3N0b3JhZ2UCXzgEBmFzc2V0cwkBC19sb2FkQXNzZXRzAAQNJHQwMjgyMjIyODI5MAkBEl9sb2FkQXNzZXRCYWxhbmNlcwAEEXByZXZBc3NldEJhbGFuY2VzCAUNJHQwMjgyMjIyODI5MAJfMQQUcHJldkFzc2V0VG90YWxTdXBwbHkIBQ0kdDAyODIyMjI4MjkwAl8yBA0kdDAyODI5NTI4MzQ4CQERX2xvYWRBc3NldFdlaWdodHMABAxhc3NldFdlaWdodHMIBQ0kdDAyODI5NTI4MzQ4Al8xBAtzaWdtYVdlaWdodAgFDSR0MDI4Mjk1MjgzNDgCXzIEEnByZXZSZXdhcmRCYWxhbmNlcwkBE19sb2FkUmV3YXJkQmFsYW5jZXMABBB0YXJnZXRBc3NldEluZGV4CQEFdmFsdWUBCQDPCAIFBmFzc2V0cwUIYXNzZXRJZF8EE3RhcmdldEJhbGFuY2VCZWZvcmUJAJEDAgURcHJldkFzc2V0QmFsYW5jZXMFEHRhcmdldEFzc2V0SW5kZXgEEXRhcmdldEVxdWlsaWJyaXVtCQBrAwUUcHJldkFzc2V0VG90YWxTdXBwbHkJAJEDAgUMYXNzZXRXZWlnaHRzBRB0YXJnZXRBc3NldEluZGV4BQtzaWdtYVdlaWdodAQTdGFyZ2V0UmV3YXJkQmFsYW5jZQkAkQMCBRJwcmV2UmV3YXJkQmFsYW5jZXMFEHRhcmdldEFzc2V0SW5kZXgEE3RhcmdldE1pbnVzRmVlRGVsdGEJARdfY2FsY3VsYXRlTWludXNGZWVEZWx0YQYFE3RhcmdldEJhbGFuY2VCZWZvcmUJAGUCBRN0YXJnZXRCYWxhbmNlQmVmb3JlBQlscEFtb3VudF8FEXRhcmdldEVxdWlsaWJyaXVtBRRwcmV2QXNzZXRUb3RhbFN1cHBseQUPd2VpZ2h0QW1wbGlmaWVyBQ9kaXNiYWxhbmNlQ29lZmYEDnJld2FyZEJhbGFuY2VzCQEYX2luY3JlbWVudEJhbGFuY2VCeUluZGV4AwUScHJldlJld2FyZEJhbGFuY2VzBRB0YXJnZXRBc3NldEluZGV4BRN0YXJnZXRNaW51c0ZlZURlbHRhBA1hc3NldEJhbGFuY2VzCQEYX2RlY3JlbWVudEJhbGFuY2VCeUluZGV4AwURcHJldkFzc2V0QmFsYW5jZXMFEHRhcmdldEFzc2V0SW5kZXgFCWxwQW1vdW50XwQMdGFyZ2V0QW1vdW50CQBlAgUJbHBBbW91bnRfBRN0YXJnZXRNaW51c0ZlZURlbHRhBANlcnIJARNfdmFsaWRhdGVBbGxvY2F0aW9uAgUNYXNzZXRCYWxhbmNlcwUOcmV3YXJkQmFsYW5jZXMDCQAAAgUDZXJyBQNlcnIEDSR0MDI5MzM0Mjk0ODIJARtfY2FsY3VsYXRlTHBBbmRQcm90b2NvbEZlZXMECQBkAgUQdGFyZ2V0QXNzZXRJbmRleAABBQx0YXJnZXRBbW91bnQJAGkCBQlscEZlZVJhdGUAAgkAaQIFD3Byb3RvY29sRmVlUmF0ZQACBAVscEZlZQgFDSR0MDI5MzM0Mjk0ODICXzEEC3Byb3RvY29sRmVlCAUNJHQwMjkzMzQyOTQ4MgJfMgQUc2lnbWFGZWVQZXJMcFVwZGF0ZWQIBQ0kdDAyOTMzNDI5NDgyAl8zCQCYCgYFDHRhcmdldEFtb3VudAUNYXNzZXRCYWxhbmNlcwUOcmV3YXJkQmFsYW5jZXMFBWxwRmVlBQtwcm90b2NvbEZlZQUUc2lnbWFGZWVQZXJMcFVwZGF0ZWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BBV9zd2FwAxFzb3VyY2VBc3NldEluZGV4XxF0YXJnZXRBc3NldEluZGV4Xw1zb3VyY2VBbW91bnRfBAdzdG9yYWdlCQEMX2xvYWRTdG9yYWdlAAQJbHBBc3NldElkCAUHc3RvcmFnZQJfMQQKbHBEZWNpbWFscwkBDF9nZXREZWNpbWFscwEJANgEAQUJbHBBc3NldElkBA1scFRvdGFsU3VwcGx5CAUHc3RvcmFnZQJfMwQJbHBGZWVSYXRlCAUHc3RvcmFnZQJfNAQPcHJvdG9jb2xGZWVSYXRlCAUHc3RvcmFnZQJfNQQRbWF4QWxsb2NBbXBsaWZpZXIIBQdzdG9yYWdlAl82BA93ZWlnaHRBbXBsaWZpZXIIBQdzdG9yYWdlAl83BA9kaXNiYWxhbmNlQ29lZmYIBQdzdG9yYWdlAl84BA0kdDAzMDAwOTMwMDc3CQESX2xvYWRBc3NldEJhbGFuY2VzAAQRcHJldkFzc2V0QmFsYW5jZXMIBQ0kdDAzMDAwOTMwMDc3Al8xBBRwcmV2QXNzZXRUb3RhbFN1cHBseQgFDSR0MDMwMDA5MzAwNzcCXzIEDSR0MDMwMDgyMzAxMzUJARFfbG9hZEFzc2V0V2VpZ2h0cwAEDGFzc2V0V2VpZ2h0cwgFDSR0MDMwMDgyMzAxMzUCXzEEC3NpZ21hV2VpZ2h0CAUNJHQwMzAwODIzMDEzNQJfMgQScHJldlJld2FyZEJhbGFuY2VzCQETX2xvYWRSZXdhcmRCYWxhbmNlcwAEEXNvdXJjZUVxdWlsaWJyaXVtCQBrAwUUcHJldkFzc2V0VG90YWxTdXBwbHkJAJEDAgUMYXNzZXRXZWlnaHRzBRFzb3VyY2VBc3NldEluZGV4XwULc2lnbWFXZWlnaHQEE3NvdXJjZUJhbGFuY2VCZWZvcmUJAJEDAgURcHJldkFzc2V0QmFsYW5jZXMFEXNvdXJjZUFzc2V0SW5kZXhfBBNzb3VyY2VSZXdhcmRCYWxhbmNlCQCRAwIFEnByZXZSZXdhcmRCYWxhbmNlcwURc291cmNlQXNzZXRJbmRleF8EEnNvdXJjZVBsdXNGZWVEZWx0YQkBFl9jYWxjdWxhdGVQbHVzRmVlRGVsdGEEBRNzb3VyY2VCYWxhbmNlQmVmb3JlCQBkAgUTc291cmNlQmFsYW5jZUJlZm9yZQUNc291cmNlQW1vdW50XwURc291cmNlRXF1aWxpYnJpdW0FE3NvdXJjZVJld2FyZEJhbGFuY2UEE3RhcmdldEJhbGFuY2VCZWZvcmUJAJEDAgURcHJldkFzc2V0QmFsYW5jZXMFEXRhcmdldEFzc2V0SW5kZXhfBBF0YXJnZXRFcXVpbGlicml1bQkAawMFFHByZXZBc3NldFRvdGFsU3VwcGx5CQCRAwIFDGFzc2V0V2VpZ2h0cwURdGFyZ2V0QXNzZXRJbmRleF8FC3NpZ21hV2VpZ2h0BBN0YXJnZXRSZXdhcmRCYWxhbmNlCQCRAwIFEnByZXZSZXdhcmRCYWxhbmNlcwURdGFyZ2V0QXNzZXRJbmRleF8EE3RhcmdldE1pbnVzRmVlRGVsdGEJARdfY2FsY3VsYXRlTWludXNGZWVEZWx0YQYFE3RhcmdldEJhbGFuY2VCZWZvcmUJAGUCBRN0YXJnZXRCYWxhbmNlQmVmb3JlBQ1zb3VyY2VBbW91bnRfBRF0YXJnZXRFcXVpbGlicml1bQUUcHJldkFzc2V0VG90YWxTdXBwbHkFD3dlaWdodEFtcGxpZmllcgUPZGlzYmFsYW5jZUNvZWZmBBJ0ZW1wUmV3YXJkQmFsYW5jZXMJARhfZGVjcmVtZW50QmFsYW5jZUJ5SW5kZXgDBRJwcmV2UmV3YXJkQmFsYW5jZXMFEXNvdXJjZUFzc2V0SW5kZXhfBRJzb3VyY2VQbHVzRmVlRGVsdGEEEW5ld1Jld2FyZEJhbGFuY2VzCQEYX2luY3JlbWVudEJhbGFuY2VCeUluZGV4AwUSdGVtcFJld2FyZEJhbGFuY2VzBRF0YXJnZXRBc3NldEluZGV4XwUTdGFyZ2V0TWludXNGZWVEZWx0YQQRdGVtcEFzc2V0QmFsYW5jZXMJARhfaW5jcmVtZW50QmFsYW5jZUJ5SW5kZXgDBRFwcmV2QXNzZXRCYWxhbmNlcwURc291cmNlQXNzZXRJbmRleF8JAGQCBQ1zb3VyY2VBbW91bnRfBRJzb3VyY2VQbHVzRmVlRGVsdGEEEG5ld0Fzc2V0QmFsYW5jZXMJARhfZGVjcmVtZW50QmFsYW5jZUJ5SW5kZXgDBRF0ZW1wQXNzZXRCYWxhbmNlcwURdGFyZ2V0QXNzZXRJbmRleF8JAGQCBQ1zb3VyY2VBbW91bnRfBRJzb3VyY2VQbHVzRmVlRGVsdGEEDHRhcmdldEFtb3VudAkAZQIJAGQCBQ1zb3VyY2VBbW91bnRfBRJzb3VyY2VQbHVzRmVlRGVsdGEFE3RhcmdldE1pbnVzRmVlRGVsdGEEA2VycgkBE192YWxpZGF0ZUFsbG9jYXRpb24CBRBuZXdBc3NldEJhbGFuY2VzBRFuZXdSZXdhcmRCYWxhbmNlcwMJAAACBQNlcnIFA2VycgQNJHQwMzE3MTQzMTg1NQkBG19jYWxjdWxhdGVMcEFuZFByb3RvY29sRmVlcwQJAGQCBRF0YXJnZXRBc3NldEluZGV4XwABBQx0YXJnZXRBbW91bnQFCWxwRmVlUmF0ZQUPcHJvdG9jb2xGZWVSYXRlBAVscEZlZQgFDSR0MDMxNzE0MzE4NTUCXzEEC3Byb3RvY29sRmVlCAUNJHQwMzE3MTQzMTg1NQJfMgQUc2lnbWFGZWVQZXJMcFVwZGF0ZWQIBQ0kdDAzMTcxNDMxODU1Al8zCQCYCgYFDHRhcmdldEFtb3VudAUQbmV3QXNzZXRCYWxhbmNlcwURbmV3UmV3YXJkQmFsYW5jZXMFBWxwRmVlBQtwcm90b2NvbEZlZQUUc2lnbWFGZWVQZXJMcFVwZGF0ZWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4bAWkBBGluaXQOB2Fzc2V0c18NYXNzZXRXZWlnaHRzXwpscEZlZVJhdGVfEHByb3RvY29sRmVlUmF0ZV8MbHBUb2tlbk5hbWVfDWxwVG9rZW5EZXNjcl8QbHBUb2tlbkRlY2ltYWxzXxdtYXhBbGxvY2F0aW9uQW1wbGlmaWVyXxB3ZWlnaHRBbXBsaWZpZXJfEGRpc2JhbGFuY2VDb2VmZl8LZmVlTWF4UmF0ZV8UcHJvdG9jb2xGZWVDb250cmFjdF8KcHJlY2lzaW9uXwdwYXVzZXJfBANlcnIDAwMDAwMDAwMDAwMDAwMDAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQETX3doZW5Ob3RJbml0aWFsaXplZAAHCQEQX3doZW5NdWx0aXNpZ1NldAAHCQEPX3ZhbGlkYXRlQXNzZXRzAgUHYXNzZXRzXwIUaW5pdDogaW52YWxpZCBhc3NldHMHCQEQX3ZhbGlkYXRlSW50TGlzdAQFDWFzc2V0V2VpZ2h0c18AAQUKTUFYX1dFSUdIVAIaaW5pdDogaW52YWxpZCBhc3NldFdlaWdodHMHCQESX3ZhbGlkYXRlSW50RXF1YWxzAwkAkAMBBQdhc3NldHNfCQCQAwEFDWFzc2V0V2VpZ2h0c18CH2luaXQ6IGludmFsaWQgYXNzZXRXZWlnaHRzIHNpemUHCQEMX3ZhbGlkYXRlSW50BAUKbHBGZWVSYXRlXwAABQdNQVhfRkVFAhRpbml0OiBpbnZhbGlkIGxwIGZlZQcJAQxfdmFsaWRhdGVJbnQEBRBwcm90b2NvbEZlZVJhdGVfAAAFB01BWF9GRUUCGmluaXQ6IGludmFsaWQgcHJvdG9jb2wgZmVlBwkBEl92YWxpZGF0ZVRva2VuTmFtZQIFDGxwVG9rZW5OYW1lXwISaW5pdDogaW52YWxpZCBuYW1lBwkBE192YWxpZGF0ZVRva2VuRGVzY3ICBQ1scFRva2VuRGVzY3JfAhNpbml0OiBpbnZhbGlkIGRlc2NyBwkBEV92YWxpZGF0ZURlY2ltYWxzAgUQbHBUb2tlbkRlY2ltYWxzXwIWaW5pdDogaW52YWxpZCBkZWNpbWFscwcJAQxfdmFsaWRhdGVJbnQEBRdtYXhBbGxvY2F0aW9uQW1wbGlmaWVyXwAABQ1NQVhfQU1QTElGSUVSAiRpbml0OiBpbnZhbGlkIG1heEFsbG9jYXRpb25BbXBsaWZpZXIHCQEMX3ZhbGlkYXRlSW50BAUQd2VpZ2h0QW1wbGlmaWVyXwAABRdtYXhBbGxvY2F0aW9uQW1wbGlmaWVyXwIdaW5pdDogaW52YWxpZCB3ZWlnaHRBbXBsaWZpZXIHCQEMX3ZhbGlkYXRlSW50BAUQZGlzYmFsYW5jZUNvZWZmXwAABQdNQVhfSU5UAh1pbml0OiBpbnZhbGlkIGRpc2JhbGFuY2VDb2VmZgcJAQxfdmFsaWRhdGVJbnQEBQtmZWVNYXhSYXRlXwAABQdNQVhfSU5UAhhpbml0OiBpbnZhbGlkIGZlZU1heFJhdGUHCQEQX3ZhbGlkYXRlQWRkcmVzcwIFFHByb3RvY29sRmVlQ29udHJhY3RfAiFpbml0OiBpbnZhbGlkIHByb3RvY29sRmVlQ29udHJhY3QHCQEMX3ZhbGlkYXRlSW50BAUKcHJlY2lzaW9uXwABBQdNQVhfSU5UAhdpbml0OiBpbnZhbGlkIHByZWNpc2lvbgcJARBfdmFsaWRhdGVBZGRyZXNzAgUHcGF1c2VyXwIUaW5pdDogaW52YWxpZCBwYXVzZXIHAwkAAAIFA2VycgUDZXJyBA0kdDAzMzc0NDMzODEzCQEUX3ByZXBhcmVBc3NldFdlaWdodHMBBQ1hc3NldFdlaWdodHNfBAxhc3NldFdlaWdodHMIBQ0kdDAzMzc0NDMzODEzAl8xBAtzaWdtYVdlaWdodAgFDSR0MDMzNzQ0MzM4MTMCXzIEDWFzc2V0QmFsYW5jZXMJARVfcHJlcGFyZUFzc2V0QmFsYW5jZXMBBQdhc3NldHNfBAVpc3N1ZQkAwggFBQxscFRva2VuTmFtZV8FDWxwVG9rZW5EZXNjcl8AAAUQbHBUb2tlbkRlY2ltYWxzXwYECWxwQXNzZXRJZAkAuAgBBQVpc3N1ZQQOc3RvcmFnZVVwZGF0ZWQJAJwKCgUJbHBBc3NldElkBgAABQpscEZlZVJhdGVfBRBwcm90b2NvbEZlZVJhdGVfBRdtYXhBbGxvY2F0aW9uQW1wbGlmaWVyXwUQd2VpZ2h0QW1wbGlmaWVyXwUQZGlzYmFsYW5jZUNvZWZmXwULZmVlTWF4UmF0ZV8JARFAZXh0ck5hdGl2ZSgxMDYyKQEFFHByb3RvY29sRmVlQ29udHJhY3RfCQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCCQDMCAIFBWlzc3VlBQNuaWwJAQxfc2F2ZVN0b3JhZ2UBBQ5zdG9yYWdlVXBkYXRlZAkBC19zYXZlQXNzZXRzAQUHYXNzZXRzXwkBEl9zYXZlQXNzZXRCYWxhbmNlcwEFDWFzc2V0QmFsYW5jZXMJARNfc2F2ZVJld2FyZEJhbGFuY2VzAQUNYXNzZXRCYWxhbmNlcwkBEV9zYXZlQXNzZXRXZWlnaHRzAQUMYXNzZXRXZWlnaHRzCQEOX3NhdmVQcmVjaXNpb24BBQpwcmVjaXNpb25fCQESX3NhdmVTaWdtYUZlZVBlckxwAQkBEl9sb2FkU2lnbWFGZWVQZXJMcAAJAQtfc2F2ZVBhdXNlcgEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB3BhdXNlcl8FBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKZGVwb3NpdEFsbAEHYW1vdW50XwQDZXJyAwMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcJAQxfdmFsaWRhdGVJbnQEBQdhbW91bnRfAAAFB01BWF9JTlQCGmRlcG9zaXRBbGw6IGludmFsaWQgYW1vdW50BwMJAAACBQNlcnIFA2VycgQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAECWxwQXNzZXRJZAgFB3N0b3JhZ2UCXzEECmxwRGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBCQDYBAEFCWxwQXNzZXRJZAQGYXNzZXRzCQELX2xvYWRBc3NldHMABA0kdDAzNTYxMjM1Njk3CQELX2RlcG9zaXRBbGwBBQdhbW91bnRfBA5scFRva2Vuc1RvTWludAgFDSR0MDM1NjEyMzU2OTcCXzEEGXJlcXVpcmVkQW1vdW50c05vcm1hbGl6ZWQIBQ0kdDAzNTYxMjM1Njk3Al8yBA1hc3NldEJhbGFuY2VzCAUNJHQwMzU2MTIzNTY5NwJfMwoBCGZvbGRGdW5jAgNhY2MEZWxlbQQFaW5kZXgIBQNhY2MCXzEED3BheW1lbnRBc3NldFN0cgkBC19hc3NldFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMFBWluZGV4B2Fzc2V0SWQEFHBheW1lbnRBc3NldERlY2ltYWxzCQEMX2dldERlY2ltYWxzAQUPcGF5bWVudEFzc2V0U3RyBBhyZXF1aXJlZEFtb3VudE5vcm1hbGl6ZWQJAJEDAgUZcmVxdWlyZWRBbW91bnRzTm9ybWFsaXplZAUFaW5kZXgEDnJlcXVpcmVkQW1vdW50CQESX25vcm1hbGl6ZURlY2ltYWxzBAUYcmVxdWlyZWRBbW91bnROb3JtYWxpemVkBQpscERlY2ltYWxzBRRwYXltZW50QXNzZXREZWNpbWFscwUHQ0VJTElORwQEZXJyMQMJAQIhPQIFD3BheW1lbnRBc3NldFN0cgUEZWxlbQkAAgEJAKwCAgIjZGVwb3NpdEFsbDogaW52YWxpZCBwYXltZW50OiBpbmRleD0JAKQDAQUFaW5kZXgDCQBnAgAABQ5yZXF1aXJlZEFtb3VudAkAAgECJmRlcG9zaXRBbGw6IHRvbyBsaXR0bGUgYW1vdW50IHJlcXVpcmVkBQR1bml0AwkAAAIFBGVycjEFBGVycjEEBmNoYW5nZQMJAGYCCAkAkQMCCAUBaQhwYXltZW50cwUFaW5kZXgGYW1vdW50BQ5yZXF1aXJlZEFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCCAkAkQMCCAUBaQhwYXltZW50cwUFaW5kZXgGYW1vdW50BQ5yZXF1aXJlZEFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMFBWluZGV4B2Fzc2V0SWQFA25pbAMJAGYCBQ5yZXF1aXJlZEFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMFBWluZGV4BmFtb3VudAkAAgEJAKwCAgkArAICCQCsAgICKGRlcG9zaXRBbGw6IGluc3VmZmljaWVudCBwYXltZW50LCBpbmRleD0JAKQDAQUFaW5kZXgCCywgcmVxdWlyZWQ9CQCkAwEFDnJlcXVpcmVkQW1vdW50BQNuaWwJAJQKAgkAZAIFBWluZGV4AAEJAM4IAggFA2FjYwJfMgUGY2hhbmdlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBA0kdDAzNjg0MDM2OTAyCgACJGwFBmFzc2V0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAABQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGZvbGRGdW5jAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBANpZHgIBQ0kdDAzNjg0MDM2OTAyAl8xBA1jaGFuZ2VBY3Rpb25zCAUNJHQwMzY4NDAzNjkwMgJfMgQOc3RvcmFnZVVwZGF0ZWQJAJwKCggFB3N0b3JhZ2UCXzEIBQdzdG9yYWdlAl8yCQBkAggFB3N0b3JhZ2UCXzMFDmxwVG9rZW5zVG9NaW50CAUHc3RvcmFnZQJfNAgFB3N0b3JhZ2UCXzUIBQdzdG9yYWdlAl82CAUHc3RvcmFnZQJfNwgFB3N0b3JhZ2UCXzgIBQdzdG9yYWdlAl85CAUHc3RvcmFnZQNfMTAJAJQKAgkAzggCCQDOCAIJAM4IAgkAzAgCCQEHUmVpc3N1ZQMFCWxwQXNzZXRJZAUObHBUb2tlbnNUb01pbnQGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUObHBUb2tlbnNUb01pbnQFCWxwQXNzZXRJZAUDbmlsCQEMX3NhdmVTdG9yYWdlAQUOc3RvcmFnZVVwZGF0ZWQJARJfc2F2ZUFzc2V0QmFsYW5jZXMBBQ1hc3NldEJhbGFuY2VzBQ1jaGFuZ2VBY3Rpb25zBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBB2RlcG9zaXQBDG1pbkxwQW1vdW50XwQDZXJyCQEMX3ZhbGlkYXRlSW50BAUMbWluTHBBbW91bnRfAAAFB01BWF9JTlQCHmRlcG9zaXQ6IGludmFsaWQgbWluIGxwIGFtb3VudAMJAAACBQNlcnIFA2VycgQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAECWxwQXNzZXRJZAgFB3N0b3JhZ2UCXzEEDGxwQXNzZXRJZFN0cgkBC19hc3NldFRvU3RyAQUJbHBBc3NldElkBApscERlY2ltYWxzCQEMX2dldERlY2ltYWxzAQUMbHBBc3NldElkU3RyBARlcnIxAwMDAwMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcJAQ5fY2hlY2tXYXRjaGRvZwAHCQESX3ZhbGlkYXRlSW50RXF1YWxzAwkAkAMBCAUBaQhwYXltZW50cwABAh5kZXBvc2l0OiBpbnZhbGlkIHBheW1lbnRzIHNpemUHCQEVX3ZhbGlkYXRlTGlzdENvbnRhaW5zAwkBC19sb2FkQXNzZXRzAAkBC19hc3NldFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkAh5kZXBvc2l0OiBpbnZhbGlkIHBheW1lbnQgYXNzZXQHCQEMX3ZhbGlkYXRlSW50BAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQAAQUHTUFYX0lOVAIfZGVwb3NpdDogaW52YWxpZCBwYXltZW50IGFtb3VudAcDCQAAAgUEZXJyMQUEZXJyMQQIYXNzZXRTdHIJAQtfYXNzZXRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQNYXNzZXREZWNpbWFscwkBDF9nZXREZWNpbWFscwEFCGFzc2V0U3RyBBBhbW91bnROb3JtYWxpemVkCQESX25vcm1hbGl6ZURlY2ltYWxzBAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFDWFzc2V0RGVjaW1hbHMFCmxwRGVjaW1hbHMFBERPV04EDSR0MDM4MzQyMzg0NzQJAQhfZGVwb3NpdAIFCGFzc2V0U3RyBRBhbW91bnROb3JtYWxpemVkBA5scFRva2Vuc1RvTWludAgFDSR0MDM4MzQyMzg0NzQCXzEEDWFzc2V0QmFsYW5jZXMIBQ0kdDAzODM0MjM4NDc0Al8yBA5yZXdhcmRCYWxhbmNlcwgFDSR0MDM4MzQyMzg0NzQCXzMEBWxwRmVlCAUNJHQwMzgzNDIzODQ3NAJfNAQLcHJvdG9jb2xGZWUIBQ0kdDAzODM0MjM4NDc0Al81BBRzaWdtYUZlZVBlckxwVXBkYXRlZAgFDSR0MDM4MzQyMzg0NzQCXzYEDmxwVG9rZW5zVG9TZW5kCQBlAgkAZQIFDmxwVG9rZW5zVG9NaW50BQVscEZlZQULcHJvdG9jb2xGZWUEBGVycjIJAQxfdmFsaWRhdGVJbnQEBQ5scFRva2Vuc1RvU2VuZAUMbWluTHBBbW91bnRfBQdNQVhfSU5UAhZkZXBvc2l0OiBsZXNzIHRoYW4gbWluAwkAAAIFBGVycjIFBGVycjIEDnN0b3JhZ2VVcGRhdGVkCQCcCgoIBQdzdG9yYWdlAl8xCAUHc3RvcmFnZQJfMgkAZAIIBQdzdG9yYWdlAl8zBQ5scFRva2Vuc1RvTWludAgFB3N0b3JhZ2UCXzQIBQdzdG9yYWdlAl81CAUHc3RvcmFnZQJfNggFB3N0b3JhZ2UCXzcIBQdzdG9yYWdlAl84CAUHc3RvcmFnZQJfOQgFB3N0b3JhZ2UDXzEwCQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAMwIAgkBB1JlaXNzdWUDBQlscEFzc2V0SWQFDmxwVG9rZW5zVG9NaW50BgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFDmxwVG9rZW5zVG9TZW5kBQlscEFzc2V0SWQFA25pbAkBDF9zYXZlU3RvcmFnZQEFDnN0b3JhZ2VVcGRhdGVkCQESX3NhdmVBc3NldEJhbGFuY2VzAQUNYXNzZXRCYWxhbmNlcwkBE19zYXZlUmV3YXJkQmFsYW5jZXMBBQ5yZXdhcmRCYWxhbmNlcwkBCl9zYXZlTHBGZWUCBQxscEFzc2V0SWRTdHIJAGQCBQVscEZlZQkBCl9sb2FkTHBGZWUBBQxscEFzc2V0SWRTdHIJARBfc2F2ZVByb3RvY29sRmVlAgUMbHBBc3NldElkU3RyCQBkAgULcHJvdG9jb2xGZWUJARBfbG9hZFByb3RvY29sRmVlAQUMbHBBc3NldElkU3RyCQESX3NhdmVTaWdtYUZlZVBlckxwAQUUc2lnbWFGZWVQZXJMcFVwZGF0ZWQFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQELd2l0aGRyYXdBbGwABAdzdG9yYWdlCQEMX2xvYWRTdG9yYWdlAAQJbHBBc3NldElkCAUHc3RvcmFnZQJfMQQMbHBBc3NldElkU3RyCQDYBAEFCWxwQXNzZXRJZAQKbHBEZWNpbWFscwkBDF9nZXREZWNpbWFscwEFDGxwQXNzZXRJZFN0cgQGYXNzZXRzCQELX2xvYWRBc3NldHMABANlcnIDAwMJARBfd2hlbkluaXRpYWxpemVkAAkBEl92YWxpZGF0ZUludEVxdWFscwMJAJADAQgFAWkIcGF5bWVudHMAAQIid2l0aGRyYXdBbGw6IGludmFsaWQgcGF5bWVudHMgc2l6ZQcJARRfdmFsaWRhdGVTdHJpbmdFcXVhbAMFDGxwQXNzZXRJZFN0cgkBC19hc3NldFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkAiJ3aXRoZHJhd0FsbDogaW52YWxpZCBwYXltZW50IGFzc2V0BwkBDF92YWxpZGF0ZUludAQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AAEFB01BWF9JTlQCI3dpdGhkcmF3QWxsOiBpbnZhbGlkIHBheW1lbnQgYW1vdW50BwMJAAACBQNlcnIFA2VycgQNJHQwMzk5ODI0MDA2OQkBDF93aXRoZHJhd0FsbAEICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BA5scFRva2Vuc1RvQnVybggFDSR0MDM5OTgyNDAwNjkCXzEEDWJhbGFuY2VzVG9QYXkIBQ0kdDAzOTk4MjQwMDY5Al8yBA1hc3NldEJhbGFuY2VzCAUNJHQwMzk5ODI0MDA2OQJfMwQOcGF5bWVudEFjdGlvbnMJARhfZ2V0UGF5bWVudHNGcm9tQmFsYW5jZXMEBQZhc3NldHMFDWJhbGFuY2VzVG9QYXkIBQFpBmNhbGxlcgUKbHBEZWNpbWFscwQOc3RvcmFnZVVwZGF0ZWQJAJwKCggFB3N0b3JhZ2UCXzEIBQdzdG9yYWdlAl8yCQBlAggFB3N0b3JhZ2UCXzMFDmxwVG9rZW5zVG9CdXJuCAUHc3RvcmFnZQJfNAgFB3N0b3JhZ2UCXzUIBQdzdG9yYWdlAl82CAUHc3RvcmFnZQJfNwgFB3N0b3JhZ2UCXzgIBQdzdG9yYWdlAl85CAUHc3RvcmFnZQNfMTAJAJQKAgkAzggCCQDOCAIJAM4IAgkAzAgCCQEEQnVybgIFCWxwQXNzZXRJZAUObHBUb2tlbnNUb0J1cm4FA25pbAUOcGF5bWVudEFjdGlvbnMJAQxfc2F2ZVN0b3JhZ2UBBQ5zdG9yYWdlVXBkYXRlZAkBEl9zYXZlQXNzZXRCYWxhbmNlcwEFDWFzc2V0QmFsYW5jZXMFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEId2l0aGRyYXcCCGFzc2V0SWRfCm1pbkFtb3VudF8EB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABAlscEFzc2V0SWQIBQdzdG9yYWdlAl8xBAxscEFzc2V0SWRTdHIJANgEAQUJbHBBc3NldElkBApscERlY2ltYWxzCQEMX2dldERlY2ltYWxzAQUMbHBBc3NldElkU3RyBAZhc3NldHMJAQtfbG9hZEFzc2V0cwAEA2VycgMDAwMDAwMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcJAQ5fY2hlY2tXYXRjaGRvZwAHCQESX3ZhbGlkYXRlSW50RXF1YWxzAwkAkAMBCAUBaQhwYXltZW50cwABAh93aXRoZHJhdzogaW52YWxpZCBwYXltZW50cyBzaXplBwkBFF92YWxpZGF0ZVN0cmluZ0VxdWFsAwUMbHBBc3NldElkU3RyCQELX2Fzc2V0VG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQCH3dpdGhkcmF3OiBpbnZhbGlkIHBheW1lbnQgYXNzZXQHCQEMX3ZhbGlkYXRlSW50BAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQAAQUHTUFYX0lOVAIgd2l0aGRyYXc6IGludmFsaWQgcGF5bWVudCBhbW91bnQHCQEVX3ZhbGlkYXRlTGlzdENvbnRhaW5zAwUGYXNzZXRzBQhhc3NldElkXwIZd2l0aGRyYXc6IGludmFsaWQgYXNzZXRJZAcJAQxfdmFsaWRhdGVJbnQEBQptaW5BbW91bnRfAAAFB01BWF9JTlQCG3dpdGhkcmF3OiBpbnZhbGlkIG1pbkFtb3VudAcDCQAAAgUDZXJyBQNlcnIEDSR0MDQxNDIzNDE1NzgJAQlfd2l0aGRyYXcCBQhhc3NldElkXwgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEFnRhcmdldEFtb3VudE5vcm1hbGl6ZWQIBQ0kdDA0MTQyMzQxNTc4Al8xBBJmaW5hbEFzc2V0QmFsYW5jZXMIBQ0kdDA0MTQyMzQxNTc4Al8yBBNmaW5hbFJld2FyZEJhbGFuY2VzCAUNJHQwNDE0MjM0MTU3OAJfMwQFbHBGZWUIBQ0kdDA0MTQyMzQxNTc4Al80BAtwcm90b2NvbEZlZQgFDSR0MDQxNDIzNDE1NzgCXzUEFHNpZ21hRmVlUGVyTHBVcGRhdGVkCAUNJHQwNDE0MjM0MTU3OAJfNgQVZmluYWxBbW91bnROb3JtYWxpemVkCQBlAgkAZQIFFnRhcmdldEFtb3VudE5vcm1hbGl6ZWQFBWxwRmVlBQtwcm90b2NvbEZlZQQOdGFyZ2V0RGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBBQhhc3NldElkXwQLZmluYWxBbW91bnQJARJfbm9ybWFsaXplRGVjaW1hbHMEBRVmaW5hbEFtb3VudE5vcm1hbGl6ZWQFCmxwRGVjaW1hbHMFDnRhcmdldERlY2ltYWxzBQRET1dOBARlcnIxCQEMX3ZhbGlkYXRlSW50BAULZmluYWxBbW91bnQFCm1pbkFtb3VudF8FB01BWF9JTlQCF3dpdGhkcmF3OiBsZXNzIHRoYW4gbWluAwkAAAIFBGVycjEFBGVycjEEDnN0b3JhZ2VVcGRhdGVkCQCcCgoIBQdzdG9yYWdlAl8xCAUHc3RvcmFnZQJfMgkAZQIIBQdzdG9yYWdlAl8zCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAgFB3N0b3JhZ2UCXzQIBQdzdG9yYWdlAl81CAUHc3RvcmFnZQJfNggFB3N0b3JhZ2UCXzcIBQdzdG9yYWdlAl84CAUHc3RvcmFnZQJfOQgFB3N0b3JhZ2UDXzEwCQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAMwIAgkBBEJ1cm4CBQlscEFzc2V0SWQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgULZmluYWxBbW91bnQJAQtfc3RyVG9Bc3NldAEFCGFzc2V0SWRfBQNuaWwJAQxfc2F2ZVN0b3JhZ2UBBQ5zdG9yYWdlVXBkYXRlZAkBEl9zYXZlQXNzZXRCYWxhbmNlcwEFEmZpbmFsQXNzZXRCYWxhbmNlcwkBE19zYXZlUmV3YXJkQmFsYW5jZXMBBRNmaW5hbFJld2FyZEJhbGFuY2VzCQEKX3NhdmVMcEZlZQIFCGFzc2V0SWRfCQBkAgUFbHBGZWUJAQpfbG9hZExwRmVlAQUIYXNzZXRJZF8JARBfc2F2ZVByb3RvY29sRmVlAgUIYXNzZXRJZF8JAGQCBQtwcm90b2NvbEZlZQkBEF9sb2FkUHJvdG9jb2xGZWUBBQhhc3NldElkXwkBEl9zYXZlU2lnbWFGZWVQZXJMcAEFFHNpZ21hRmVlUGVyTHBVcGRhdGVkBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBHN3YXACDnRhcmdldEFzc2V0SWRfCm1pbkFtb3VudF8EB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABAlscEFzc2V0SWQIBQdzdG9yYWdlAl8xBApscERlY2ltYWxzCQEMX2dldERlY2ltYWxzAQkA2AQBBQlscEFzc2V0SWQEBmFzc2V0cwkBC19sb2FkQXNzZXRzAAQOc291cmNlQXNzZXRTdHIJAQtfYXNzZXRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQWc291cmNlQW1vdW50Tm9ybWFsaXplZAkBEl9ub3JtYWxpemVEZWNpbWFscwQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQEMX2dldERlY2ltYWxzAQUOc291cmNlQXNzZXRTdHIFCmxwRGVjaW1hbHMFBERPV04EEHNvdXJjZUFzc2V0SW5kZXgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAzwgCBQZhc3NldHMFDnNvdXJjZUFzc2V0U3RyAhpzd2FwOiBpbnZhbGlkIHNvdXJjZSBhc3NldAMJAAACBRBzb3VyY2VBc3NldEluZGV4BRBzb3VyY2VBc3NldEluZGV4BBB0YXJnZXRBc3NldEluZGV4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAM8IAgUGYXNzZXRzBQ50YXJnZXRBc3NldElkXwIac3dhcDogaW52YWxpZCB0YXJnZXQgYXNzZXQDCQAAAgUQdGFyZ2V0QXNzZXRJbmRleAUQdGFyZ2V0QXNzZXRJbmRleAQDZXJyAwMDAwMDCQEQX3doZW5Jbml0aWFsaXplZAAJAQ5fd2hlbk5vdFBhdXNlZAAHCQEOX2NoZWNrV2F0Y2hkb2cABwkBDF92YWxpZGF0ZUludAQFCm1pbkFtb3VudF8AAAUHTUFYX0lOVAIfc3dhcDogaW52YWxpZCBtaW4gdGFyZ2V0IGFtb3VudAcJAQxfdmFsaWRhdGVJbnQEBRZzb3VyY2VBbW91bnROb3JtYWxpemVkAAEFB01BWF9JTlQCG3N3YXA6IGludmFsaWQgc291cmNlIGFtb3VudAcJARRfdmFsaWRhdGVTdHJpbmdOb3RFcQMFDnNvdXJjZUFzc2V0U3RyBQ50YXJnZXRBc3NldElkXwIRc3dhcDogc2FtZSBhc3NldHMHCQESX3ZhbGlkYXRlSW50RXF1YWxzAwkAkAMBCAUBaQhwYXltZW50cwABAhtzd2FwOiBpbnZhbGlkIHBheW1lbnRzIHNpemUHAwkAAAIFA2VycgUDZXJyBA0kdDA0Mzc0MzQzOTIyCQEFX3N3YXADBRBzb3VyY2VBc3NldEluZGV4BRB0YXJnZXRBc3NldEluZGV4BRZzb3VyY2VBbW91bnROb3JtYWxpemVkBBZ0YXJnZXRBbW91bnROb3JtYWxpemVkCAUNJHQwNDM3NDM0MzkyMgJfMQQSZmluYWxBc3NldEJhbGFuY2VzCAUNJHQwNDM3NDM0MzkyMgJfMgQTZmluYWxSZXdhcmRCYWxhbmNlcwgFDSR0MDQzNzQzNDM5MjICXzMEBWxwRmVlCAUNJHQwNDM3NDM0MzkyMgJfNAQLcHJvdG9jb2xGZWUIBQ0kdDA0Mzc0MzQzOTIyAl81BBRzaWdtYUZlZVBlckxwVXBkYXRlZAgFDSR0MDQzNzQzNDM5MjICXzYEFWZpbmFsQW1vdW50Tm9ybWFsaXplZAkAZQIJAGUCBRZ0YXJnZXRBbW91bnROb3JtYWxpemVkBQVscEZlZQULcHJvdG9jb2xGZWUEDnRhcmdldERlY2ltYWxzCQEMX2dldERlY2ltYWxzAQUOdGFyZ2V0QXNzZXRJZF8EC2ZpbmFsQW1vdW50CQESX25vcm1hbGl6ZURlY2ltYWxzBAUVZmluYWxBbW91bnROb3JtYWxpemVkBQpscERlY2ltYWxzBQ50YXJnZXREZWNpbWFscwUERE9XTgQEZXJyMQkBDF92YWxpZGF0ZUludAQFC2ZpbmFsQW1vdW50BQptaW5BbW91bnRfBQdNQVhfSU5UAhNzd2FwOiBsZXNzIHRoYW4gbWluAwkAAAIFBGVycjEFBGVycjEJAJQKAgkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQtmaW5hbEFtb3VudAkBC19zdHJUb0Fzc2V0AQUOdGFyZ2V0QXNzZXRJZF8FA25pbAkBEl9zYXZlQXNzZXRCYWxhbmNlcwEFEmZpbmFsQXNzZXRCYWxhbmNlcwkBE19zYXZlUmV3YXJkQmFsYW5jZXMBBRNmaW5hbFJld2FyZEJhbGFuY2VzCQEKX3NhdmVMcEZlZQIFDnRhcmdldEFzc2V0SWRfCQBkAgUFbHBGZWUJAQpfbG9hZExwRmVlAQUOdGFyZ2V0QXNzZXRJZF8JARBfc2F2ZVByb3RvY29sRmVlAgUOdGFyZ2V0QXNzZXRJZF8JAGQCBQtwcm90b2NvbEZlZQkBEF9sb2FkUHJvdG9jb2xGZWUBBQ50YXJnZXRBc3NldElkXwkBEl9zYXZlU2lnbWFGZWVQZXJMcAEFFHNpZ21hRmVlUGVyTHBVcGRhdGVkBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDWdldERlcG9zaXRBbGwBCWxwQW1vdW50XwQDZXJyCQEMX3ZhbGlkYXRlSW50BAUJbHBBbW91bnRfAAEFB01BWF9JTlQCHWdldERlcG9zaXRBbGw6IGludmFsaWQgYW1vdW50AwkAAAIFA2VycgUDZXJyBA0kdDA0NTA5NDQ1MTgxCQELX2RlcG9zaXRBbGwBBQlscEFtb3VudF8EDmxwVG9rZW5zVG9NaW50CAUNJHQwNDUwOTQ0NTE4MQJfMQQZcmVxdWlyZWRBbW91bnRzTm9ybWFsaXplZAgFDSR0MDQ1MDk0NDUxODECXzIEDWFzc2V0QmFsYW5jZXMIBQ0kdDA0NTA5NDQ1MTgxAl8zCQCUCgIFA25pbAkAlAoCBQ5scFRva2Vuc1RvTWludAUZcmVxdWlyZWRBbW91bnRzTm9ybWFsaXplZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpnZXREZXBvc2l0Aghhc3NldElkXwdhbW91bnRfBANlcnIDCQEVX3ZhbGlkYXRlTGlzdENvbnRhaW5zAwkBC19sb2FkQXNzZXRzAAUIYXNzZXRJZF8CGWdldERlcG9zaXQ6IGludmFsaWQgYXNzZXQJAQxfdmFsaWRhdGVJbnQEBQdhbW91bnRfAAEFB01BWF9JTlQCGmdldERlcG9zaXQ6IGludmFsaWQgYW1vdW50BwMJAAACBQNlcnIFA2VycgQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAECWxwQXNzZXRJZAgFB3N0b3JhZ2UCXzEECmxwRGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBCQDYBAEFCWxwQXNzZXRJZAQNYXNzZXREZWNpbWFscwkBDF9nZXREZWNpbWFscwEFCGFzc2V0SWRfBBBhbW91bnROb3JtYWxpemVkCQESX25vcm1hbGl6ZURlY2ltYWxzBAUHYW1vdW50XwUNYXNzZXREZWNpbWFscwUKbHBEZWNpbWFscwUERE9XTgQNJHQwNDU5NDA0NjA3MgkBCF9kZXBvc2l0AgUIYXNzZXRJZF8FEGFtb3VudE5vcm1hbGl6ZWQEDmxwVG9rZW5zVG9NaW50CAUNJHQwNDU5NDA0NjA3MgJfMQQNYXNzZXRCYWxhbmNlcwgFDSR0MDQ1OTQwNDYwNzICXzIEDnJld2FyZEJhbGFuY2VzCAUNJHQwNDU5NDA0NjA3MgJfMwQFbHBGZWUIBQ0kdDA0NTk0MDQ2MDcyAl80BAtwcm90b2NvbEZlZQgFDSR0MDQ1OTQwNDYwNzICXzUEFHNpZ21hRmVlUGVyTHBVcGRhdGVkCAUNJHQwNDU5NDA0NjA3MgJfNgQObHBUb2tlbnNUb1NlbmQJAGUCCQBlAgUObHBUb2tlbnNUb01pbnQFBWxwRmVlBQtwcm90b2NvbEZlZQkAlAoCBQNuaWwFDmxwVG9rZW5zVG9TZW5kCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmdldFdpdGhkcmF3QWxsAQlscEFtb3VudF8EA2VycgkBDF92YWxpZGF0ZUludAQFCWxwQW1vdW50XwAABQdNQVhfSU5UAh5nZXRXaXRoZHJhd0FsbDogaW52YWxpZCBhbW91bnQDCQAAAgUDZXJyBQNlcnIEDSR0MDQ2NTExNDY1ODcJAQxfd2l0aGRyYXdBbGwBBQlscEFtb3VudF8EDmxwVG9rZW5zVG9CdXJuCAUNJHQwNDY1MTE0NjU4NwJfMQQNYmFsYW5jZXNUb0dldAgFDSR0MDQ2NTExNDY1ODcCXzIEDWFzc2V0QmFsYW5jZXMIBQ0kdDA0NjUxMTQ2NTg3Al8zCQCUCgIFA25pbAUNYmFsYW5jZXNUb0dldAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQtnZXRXaXRoZHJhdwIIYXNzZXRJZF8HYW1vdW50XwQDZXJyAwkBFV92YWxpZGF0ZUxpc3RDb250YWlucwMJAQtfbG9hZEFzc2V0cwAFCGFzc2V0SWRfAhpnZXRXaXRoZHJhdzogaW52YWxpZCBhc3NldAkBDF92YWxpZGF0ZUludAQFB2Ftb3VudF8AAQUHTUFYX0lOVAIbZ2V0V2l0aGRyYXc6IGludmFsaWQgYW1vdW50BwMJAAACBQNlcnIFA2VycgQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAECWxwQXNzZXRJZAgFB3N0b3JhZ2UCXzEECmxwRGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBCQDYBAEFCWxwQXNzZXRJZAQNJHQwNDcyMzg0NzM3MAkBCV93aXRoZHJhdwIFCGFzc2V0SWRfBQdhbW91bnRfBBZ0YXJnZXRBbW91bnROb3JtYWxpemVkCAUNJHQwNDcyMzg0NzM3MAJfMQQNYXNzZXRCYWxhbmNlcwgFDSR0MDQ3MjM4NDczNzACXzIEDnJld2FyZEJhbGFuY2VzCAUNJHQwNDcyMzg0NzM3MAJfMwQFbHBGZWUIBQ0kdDA0NzIzODQ3MzcwAl80BAtwcm90b2NvbEZlZQgFDSR0MDQ3MjM4NDczNzACXzUEFHNpZ21hRmVlUGVyTHBVcGRhdGVkCAUNJHQwNDcyMzg0NzM3MAJfNgQVZmluYWxBbW91bnROb3JtYWxpemVkCQBlAgkAZQIFFnRhcmdldEFtb3VudE5vcm1hbGl6ZWQFBWxwRmVlBQtwcm90b2NvbEZlZQQOdGFyZ2V0RGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBBQhhc3NldElkXwQLZmluYWxBbW91bnQJARJfbm9ybWFsaXplRGVjaW1hbHMEBRVmaW5hbEFtb3VudE5vcm1hbGl6ZWQFCmxwRGVjaW1hbHMFDnRhcmdldERlY2ltYWxzBQRET1dOCQCUCgIFA25pbAULZmluYWxBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHZ2V0U3dhcAMOc291cmNlQXNzZXRJZF8OdGFyZ2V0QXNzZXRJZF8Nc291cmNlQW1vdW50XwQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAECWxwQXNzZXRJZAgFB3N0b3JhZ2UCXzEECmxwRGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBCQDYBAEFCWxwQXNzZXRJZAQGYXNzZXRzCQELX2xvYWRBc3NldHMABBBzb3VyY2VBc3NldEluZGV4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAM8IAgUGYXNzZXRzBQ5zb3VyY2VBc3NldElkXwIac3dhcDogaW52YWxpZCBzb3VyY2UgYXNzZXQDCQAAAgUQc291cmNlQXNzZXRJbmRleAUQc291cmNlQXNzZXRJbmRleAQQdGFyZ2V0QXNzZXRJbmRleAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDPCAIFBmFzc2V0cwUOdGFyZ2V0QXNzZXRJZF8CGnN3YXA6IGludmFsaWQgdGFyZ2V0IGFzc2V0AwkAAAIFEHRhcmdldEFzc2V0SW5kZXgFEHRhcmdldEFzc2V0SW5kZXgEFnNvdXJjZUFtb3VudE5vcm1hbGl6ZWQJARJfbm9ybWFsaXplRGVjaW1hbHMEBQ1zb3VyY2VBbW91bnRfCQEMX2dldERlY2ltYWxzAQUOc291cmNlQXNzZXRJZF8FCmxwRGVjaW1hbHMFBERPV04EA2VycgMJAQxfdmFsaWRhdGVJbnQEBRZzb3VyY2VBbW91bnROb3JtYWxpemVkAAEFB01BWF9JTlQCG3N3YXA6IGludmFsaWQgc291cmNlIGFtb3VudAkBFF92YWxpZGF0ZVN0cmluZ05vdEVxAwUOc291cmNlQXNzZXRJZF8FDnRhcmdldEFzc2V0SWRfAhFzd2FwOiBzYW1lIGFzc2V0cwcDCQAAAgUDZXJyBQNlcnIEDSR0MDQ4NzgwNDg5NTkJAQVfc3dhcAMFEHNvdXJjZUFzc2V0SW5kZXgFEHRhcmdldEFzc2V0SW5kZXgFFnNvdXJjZUFtb3VudE5vcm1hbGl6ZWQEFnRhcmdldEFtb3VudE5vcm1hbGl6ZWQIBQ0kdDA0ODc4MDQ4OTU5Al8xBBJmaW5hbEFzc2V0QmFsYW5jZXMIBQ0kdDA0ODc4MDQ4OTU5Al8yBBNmaW5hbFJld2FyZEJhbGFuY2VzCAUNJHQwNDg3ODA0ODk1OQJfMwQFbHBGZWUIBQ0kdDA0ODc4MDQ4OTU5Al80BAtwcm90b2NvbEZlZQgFDSR0MDQ4NzgwNDg5NTkCXzUEFHNpZ21hRmVlUGVyTHBVcGRhdGVkCAUNJHQwNDg3ODA0ODk1OQJfNgQVZmluYWxBbW91bnROb3JtYWxpemVkCQBlAgkAZQIFFnRhcmdldEFtb3VudE5vcm1hbGl6ZWQFBWxwRmVlBQtwcm90b2NvbEZlZQQOdGFyZ2V0RGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBBQ50YXJnZXRBc3NldElkXwQLZmluYWxBbW91bnQJARJfbm9ybWFsaXplRGVjaW1hbHMEBRVmaW5hbEFtb3VudE5vcm1hbGl6ZWQFCmxwRGVjaW1hbHMFDnRhcmdldERlY2ltYWxzBQRET1dOCQCUCgIFA25pbAULZmluYWxBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEIZ2V0Q2xhaW0BBXVzZXJfBAR1c2VyAwkAZgIJALECAQUFdXNlcl8AAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFBXVzZXJfAhZnZXRDbGFpbTogaW52YWxpZCB1c2VyCAUBaQZjYWxsZXIEDSR0MDQ5NjAxNDk2NTcJAQtfY2hlY2twb2ludAEFBHVzZXIEEWNoZWNrcG9pbnRBY3Rpb25zCAUNJHQwNDk2MDE0OTY1NwJfMQQLdXNlclByb2ZpdHMIBQ0kdDA0OTYwMTQ5NjU3Al8yCQCUCgIFA25pbAULdXNlclByb2ZpdHMBaQEKZ2V0QXNzZXRJZAAEB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABAlscEFzc2V0SWQIBQdzdG9yYWdlAl8xCQCUCgIFA25pbAkA2AQBBQlscEFzc2V0SWQBaQELZ2V0RGVjaW1hbHMABAdzdG9yYWdlCQEMX2xvYWRTdG9yYWdlAAQJbHBBc3NldElkCAUHc3RvcmFnZQJfMQQKbHBEZWNpbWFscwkBDF9nZXREZWNpbWFscwEJANgEAQUJbHBBc3NldElkCQCUCgIFA25pbAUKbHBEZWNpbWFscwFpAQpjaGVja3BvaW50AQV1c2VyXwQDZXJyAwkBEF93aGVuSW5pdGlhbGl6ZWQACQEOX3doZW5Ob3RQYXVzZWQABwMJAAACBQNlcnIFA2VycgQEdXNlcgMJAGYCCQCxAgEFBXVzZXJfAAAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQV1c2VyXwIYY2hlY2twb2ludDogaW52YWxpZCB1c2VyCAUBaQZjYWxsZXIJAQtfY2hlY2twb2ludAEFBHVzZXIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFc3Rha2UABANlcnIDCQEQX3doZW5Jbml0aWFsaXplZAAJAQ5fd2hlbk5vdFBhdXNlZAAHAwkAAAIFA2VycgUDZXJyBAdzdG9yYWdlCQEMX2xvYWRTdG9yYWdlAAQMbHBBc3NldElkU3RyCQELX2Fzc2V0VG9TdHIBCAUHc3RvcmFnZQJfMQQEZXJyMQMDCQESX3ZhbGlkYXRlSW50RXF1YWxzAwkAkAMBCAUBaQhwYXltZW50cwABAhxzdGFrZTogaW52YWxpZCBwYXltZW50cyBzaXplCQEUX3ZhbGlkYXRlU3RyaW5nRXF1YWwDBQxscEFzc2V0SWRTdHIJAQtfYXNzZXRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAIcc3Rha2U6IGludmFsaWQgcGF5bWVudCBhc3NldAcJAQxfdmFsaWRhdGVJbnQECAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAAABQdNQVhfSU5UAh1zdGFrZTogaW52YWxpZCBwYXltZW50IGFtb3VudAcDCQAAAgUEZXJyMQUEZXJyMQQNJHQwNTA4Njk1MDkyOQkBC19jaGVja3BvaW50AQgFAWkGY2FsbGVyBBFjaGVja3BvaW50QWN0aW9ucwgFDSR0MDUwODY5NTA5MjkCXzEEC3VzZXJQcm9maXRzCAUNJHQwNTA4Njk1MDkyOQJfMgkAlAoCCQDOCAIJAM4IAgURY2hlY2twb2ludEFjdGlvbnMJAQtfc2F2ZVVzZXJMcAIIBQFpBmNhbGxlcgkAZAIJAQtfbG9hZFVzZXJMcAEIBQFpBmNhbGxlcggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAQxfc2F2ZVRvdGFsTHABCQBkAgkBDF9sb2FkVG90YWxMcAAICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBB3Vuc3Rha2UBB2Ftb3VudF8EA2VycgMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcDCQAAAgUDZXJyBQNlcnIEB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABAlscEFzc2V0SWQIBQdzdG9yYWdlAl8xBAZ1c2VyTHAJAQtfbG9hZFVzZXJMcAEIBQFpBmNhbGxlcgQEZXJyMQkBDF92YWxpZGF0ZUludAQFB2Ftb3VudF8AAAUGdXNlckxwAhd1bnN0YWtlOiBpbnZhbGlkIGFtb3VudAMJAAACBQRlcnIxBQRlcnIxBA0kdDA1MTQ0MDUxNTAwCQELX2NoZWNrcG9pbnQBCAUBaQZjYWxsZXIEEWNoZWNrcG9pbnRBY3Rpb25zCAUNJHQwNTE0NDA1MTUwMAJfMQQLdXNlclByb2ZpdHMIBQ0kdDA1MTQ0MDUxNTAwAl8yCQCUCgIJAM4IAgkAzggCCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQdhbW91bnRfBQlscEFzc2V0SWQFA25pbAURY2hlY2twb2ludEFjdGlvbnMJAQtfc2F2ZVVzZXJMcAIIBQFpBmNhbGxlcgkAZQIFBnVzZXJMcAUHYW1vdW50XwkBDF9zYXZlVG90YWxMcAEJAGUCCQEMX2xvYWRUb3RhbExwAAUHYW1vdW50XwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQVjbGFpbQEFdXNlcl8EA2VycgMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcDCQAAAgUDZXJyBQNlcnIEBHVzZXIDCQBmAgkAsQIBBQV1c2VyXwAACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUFdXNlcl8CE2NsYWltOiBpbnZhbGlkIHVzZXIIBQFpBmNhbGxlcgQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAECWxwQXNzZXRJZAgFB3N0b3JhZ2UCXzEEDGxwQXNzZXRJZFN0cgkBC19hc3NldFRvU3RyAQUJbHBBc3NldElkBAZhc3NldHMJAMwIAgUMbHBBc3NldElkU3RyCQELX2xvYWRBc3NldHMABAhtYXhJbmRleAkAZQIJAJADAQUGYXNzZXRzAAEEDSR0MDUyMTg4NTIyNDQJAQtfY2hlY2twb2ludAEFBHVzZXIEEWNoZWNrcG9pbnRBY3Rpb25zCAUNJHQwNTIxODg1MjI0NAJfMQQLdXNlclByb2ZpdHMIBQ0kdDA1MjE4ODUyMjQ0Al8yCgEIZm9sZEZ1bmMCA2FjYwZwcm9maXQEBWluZGV4CAUDYWNjAl8xAwMJAGcCBQhtYXhJbmRleAUFaW5kZXgJAGYCBQZwcm9maXQAAAcEBWFzc2V0CQCRAwIFBmFzc2V0cwUFaW5kZXgJAJUKAwkAZAIFBWluZGV4AAEJAM0IAggFA2FjYwJfMgAACQDNCAIIBQNhY2MCXzMJAQ5TY3JpcHRUcmFuc2ZlcgMFBHVzZXIFBnByb2ZpdAkBC19zdHJUb0Fzc2V0AQUFYXNzZXQJAJUKAwkAZAIFBWluZGV4AAEJAM0IAggFA2FjYwJfMgUGcHJvZml0CAUDYWNjAl8zBA0kdDA1MjYyMjUyNzEzCgACJGwFC3VzZXJQcm9maXRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDAAAFA25pbAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTEJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALBANpZHgIBQ0kdDA1MjYyMjUyNzEzAl8xBBJ1c2VyUHJvZml0c1VwZGF0ZWQIBQ0kdDA1MjYyMjUyNzEzAl8yBA1wcm9maXRBY3Rpb25zCAUNJHQwNTI2MjI1MjcxMwJfMwkAlAoCCQDOCAIJAM4IAgUNcHJvZml0QWN0aW9ucwkA0QgCBRFjaGVja3BvaW50QWN0aW9ucwAACQEQX3NhdmVVc2VyUHJvZml0cwIFBHVzZXIFEnVzZXJQcm9maXRzVXBkYXRlZAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhjbGFpbUFsbAEFdXNlcl8EA2VycgMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcDCQAAAgUDZXJyBQNlcnIEBHVzZXIDCQBmAgkAsQIBBQV1c2VyXwAACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUFdXNlcl8CFmNsYWltQWxsOiBpbnZhbGlkIHVzZXIIBQFpBmNhbGxlcgQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAECWxwQXNzZXRJZAgFB3N0b3JhZ2UCXzEEDGxwQXNzZXRJZFN0cgkBC19hc3NldFRvU3RyAQUJbHBBc3NldElkBAZhc3NldHMJAMwIAgUMbHBBc3NldElkU3RyCQELX2xvYWRBc3NldHMABAhtYXhJbmRleAkAZQIJAJADAQUGYXNzZXRzAAEEDSR0MDUzMzQzNTM0MDMJARJfbG9hZEFzc2V0QmFsYW5jZXMABA1hc3NldEJhbGFuY2VzCAUNJHQwNTMzNDM1MzQwMwJfMQQQYXNzZXRUb3RhbFN1cHBseQgFDSR0MDUzMzQzNTM0MDMCXzIEDSR0MDUzNDA5NTM0NjUJAQtfY2hlY2twb2ludAEFBHVzZXIEEWNoZWNrcG9pbnRBY3Rpb25zCAUNJHQwNTM0MDk1MzQ2NQJfMQQLdXNlclByb2ZpdHMIBQ0kdDA1MzQwOTUzNDY1Al8yCgEIZm9sZEZ1bmMCA2FjYwZwcm9maXQEBWluZGV4CAUDYWNjAl8xAwkAAAIFBWluZGV4AAAJAJcKBQkAZAIFBWluZGV4AAEJAM0IAggFA2FjYwJfMgAACAUDYWNjAl8zCAUDYWNjAl80CQBkAggFA2FjYwJfNQUGcHJvZml0AwMJAGYCBQVpbmRleAAACQBnAgUIbWF4SW5kZXgFBWluZGV4BwQKYXNzZXRJbmRleAkAZQIFBWluZGV4AAEEB2JhbGFuY2UJAJEDAgUNYXNzZXRCYWxhbmNlcwUKYXNzZXRJbmRleAkAlwoFCQBkAgUFaW5kZXgAAQkAzQgCCAUDYWNjAl8yAAAJAM0IAggFA2FjYwJfMwkAZAIFB2JhbGFuY2UFBnByb2ZpdAkAZAIIBQNhY2MCXzQFBnByb2ZpdAgFA2FjYwJfNQkAlwoFCQBkAgUFaW5kZXgAAQkAzQgCCAUDYWNjAl8yAAAIBQNhY2MCXzMIBQNhY2MCXzQIBQNhY2MCXzUEDSR0MDU0MDAxNTQxMzcKAAIkbAULdXNlclByb2ZpdHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCXCgUAAAUDbmlsBQNuaWwAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTEJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALBANpZHgIBQ0kdDA1NDAwMTU0MTM3Al8xBBJ1c2VyUHJvZml0c1VwZGF0ZWQIBQ0kdDA1NDAwMTU0MTM3Al8yBBRhc3NldEJhbGFuY2VzVXBkYXRlZAgFDSR0MDU0MDAxNTQxMzcCXzMEDmxwVG9rZW5zVG9NaW50CAUNJHQwNTQwMDE1NDEzNwJfNAQObHBUb2tlbnNQcm9maXQIBQ0kdDA1NDAwMTU0MTM3Al81BA5zdG9yYWdlVXBkYXRlZAkAnAoKCAUHc3RvcmFnZQJfMQgFB3N0b3JhZ2UCXzIJAGQCCAUHc3RvcmFnZQJfMwUObHBUb2tlbnNUb01pbnQIBQdzdG9yYWdlAl80CAUHc3RvcmFnZQJfNQgFB3N0b3JhZ2UCXzYIBQdzdG9yYWdlAl83CAUHc3RvcmFnZQJfOAgFB3N0b3JhZ2UCXzkIBQdzdG9yYWdlA18xMAkAlAoCCQDOCAIJAM4IAgkAzggCCQDOCAIJAMwIAgkBB1JlaXNzdWUDBQlscEFzc2V0SWQFDmxwVG9rZW5zVG9NaW50BgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGQCBQ5scFRva2Vuc1RvTWludAUObHBUb2tlbnNQcm9maXQFCWxwQXNzZXRJZAUDbmlsCQEMX3NhdmVTdG9yYWdlAQUOc3RvcmFnZVVwZGF0ZWQJARJfc2F2ZUFzc2V0QmFsYW5jZXMBBRRhc3NldEJhbGFuY2VzVXBkYXRlZAkA0QgCBRFjaGVja3BvaW50QWN0aW9ucwAACQEQX3NhdmVVc2VyUHJvZml0cwIFBHVzZXIFEnVzZXJQcm9maXRzVXBkYXRlZAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ51cGRhdGVQb29sRmVlcwIKbHBGZWVSYXRlXxBwcm90b2NvbEZlZVJhdGVfBANlcnIDAwMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwkBDF92YWxpZGF0ZUludAQFCmxwRmVlUmF0ZV8AAAUHTUFYX0ZFRQIedXBkYXRlUG9vbEZlZXM6IGludmFsaWQgbHAgZmVlBwkBDF92YWxpZGF0ZUludAQFEHByb3RvY29sRmVlUmF0ZV8AAAUHTUFYX0ZFRQIkdXBkYXRlUG9vbEZlZXM6IGludmFsaWQgcHJvdG9jb2wgZmVlBwMJAAACBQNlcnIFA2VycgQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAEDnN0b3JhZ2VVcGRhdGVkCQCcCgoIBQdzdG9yYWdlAl8xCAUHc3RvcmFnZQJfMggFB3N0b3JhZ2UCXzMFCmxwRmVlUmF0ZV8FEHByb3RvY29sRmVlUmF0ZV8IBQdzdG9yYWdlAl82CAUHc3RvcmFnZQJfNwgFB3N0b3JhZ2UCXzgIBQdzdG9yYWdlAl85CAUHc3RvcmFnZQNfMTAJAJQKAgkBDF9zYXZlU3RvcmFnZQEFDnN0b3JhZ2VVcGRhdGVkBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEHVwZGF0ZVBvb2xQYXJhbXMEF21heEFsbG9jYXRpb25BbXBsaWZpZXJfEHdlaWdodEFtcGxpZmllcl8QZGlzYmFsYW5jZUNvZWZmXwtmZWVNYXhSYXRlXwQDZXJyAwMDAwMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwkBDF92YWxpZGF0ZUludAQFF21heEFsbG9jYXRpb25BbXBsaWZpZXJfAAAFDU1BWF9BTVBMSUZJRVICMHVwZGF0ZVBvb2xQYXJhbXM6IGludmFsaWQgbWF4QWxsb2NhdGlvbkFtcGxpZmllcgcJAQxfdmFsaWRhdGVJbnQEBRB3ZWlnaHRBbXBsaWZpZXJfAAAFF21heEFsbG9jYXRpb25BbXBsaWZpZXJfAil1cGRhdGVQb29sUGFyYW1zOiBpbnZhbGlkIHdlaWdodEFtcGxpZmllcgcJAQxfdmFsaWRhdGVJbnQEBRBkaXNiYWxhbmNlQ29lZmZfAAAFB01BWF9JTlQCKXVwZGF0ZVBvb2xQYXJhbXM6IGludmFsaWQgZGlzYmFsYW5jZUNvZWZmBwkBDF92YWxpZGF0ZUludAQFC2ZlZU1heFJhdGVfAAAFB01BWF9JTlQCJHVwZGF0ZVBvb2xQYXJhbXM6IGludmFsaWQgZmVlTWF4UmF0ZQcDCQAAAgUDZXJyBQNlcnIEB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABA5zdG9yYWdlVXBkYXRlZAkAnAoKCAUHc3RvcmFnZQJfMQgFB3N0b3JhZ2UCXzIIBQdzdG9yYWdlAl8zCAUHc3RvcmFnZQJfNAgFB3N0b3JhZ2UCXzUFF21heEFsbG9jYXRpb25BbXBsaWZpZXJfBRB3ZWlnaHRBbXBsaWZpZXJfBRBkaXNiYWxhbmNlQ29lZmZfBQtmZWVNYXhSYXRlXwgFB3N0b3JhZ2UDXzEwCQCUCgIJAQxfc2F2ZVN0b3JhZ2UBBQ5zdG9yYWdlVXBkYXRlZAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ9taWdyYXRlQmFsYW5jZXMABANlcnIDCQERX29ubHlUaGlzQ29udHJhY3QBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcDCQAAAgUDZXJyBQNlcnIEB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABA1scFRva2VuU3VwcGx5CAUHc3RvcmFnZQJfMwQNJHQwNTY2NzI1NjczMgkBEl9sb2FkQXNzZXRCYWxhbmNlcwAEDWFzc2V0QmFsYW5jZXMIBQ0kdDA1NjY3MjU2NzMyAl8xBBBhc3NldFRvdGFsU3VwcGx5CAUNJHQwNTY2NzI1NjczMgJfMgQMYmFsYW5jZXNEaWZmCQCWAwEJAMwIAgkAZQIFEGFzc2V0VG90YWxTdXBwbHkFDWxwVG9rZW5TdXBwbHkJAMwIAgAABQNuaWwEDnN0b3JhZ2VVcGRhdGVkCQCcCgoIBQdzdG9yYWdlAl8xCAUHc3RvcmFnZQJfMgkAZAIFDWxwVG9rZW5TdXBwbHkFDGJhbGFuY2VzRGlmZggFB3N0b3JhZ2UCXzQIBQdzdG9yYWdlAl81CAUHc3RvcmFnZQJfNggFB3N0b3JhZ2UCXzcIBQdzdG9yYWdlAl84CAUHc3RvcmFnZQJfOQgFB3N0b3JhZ2UDXzEwCQCUCgIJAQxfc2F2ZVN0b3JhZ2UBBQ5zdG9yYWdlVXBkYXRlZAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQVwYXVzZQAEA2VycgMDCQELX29ubHlQYXVzZXIBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcJAQ5fd2hlbk5vdFBhdXNlZAAHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQpfc2F2ZVBhdXNlAQYFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHdW5wYXVzZQAEA2VycgMDCQERX29ubHlUaGlzQ29udHJhY3QBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcJAQtfd2hlblBhdXNlZAAHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQpfc2F2ZVBhdXNlAQcFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMdXBkYXRlUGF1c2VyAQdwYXVzZXJfBANlcnIDAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQEQX3doZW5Jbml0aWFsaXplZAAHCQEQX3ZhbGlkYXRlQWRkcmVzcwIFB3BhdXNlcl8CHHVwZGF0ZVBhdXNlcjogaW52YWxpZCBwYXVzZXIHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQtfc2F2ZVBhdXNlcgEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB3BhdXNlcl8FBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOdXBkYXRlV2F0Y2hkb2cCCXdhdGNoZG9nXwdvZmZzZXRfBANlcnIDAwMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwkBEF92YWxpZGF0ZUFkZHJlc3MCBQl3YXRjaGRvZ18CIHVwZGF0ZVdhdGNoZG9nOiBpbnZhbGlkIHdhdGNoZG9nBwkBDF92YWxpZGF0ZUludAQFB29mZnNldF8AAAUHTUFYX0lOVAIedXBkYXRlV2F0Y2hkb2c6IGludmFsaWQgb2Zmc2V0BwMJAAACBQNlcnIFA2VycgkAlAoCCQDOCAIJAQ1fc2F2ZVdhdGNoZG9nAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUJd2F0Y2hkb2dfCQETX3NhdmVXYXRjaGRvZ09mZnNldAEFB29mZnNldF8FBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQELc2V0TXVsdGlzaWcBCW11bHRpc2lnXwQDZXJyAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQEQX3ZhbGlkYXRlQWRkcmVzcwIFCW11bHRpc2lnXwIdc2V0TXVsdGlzaWc6IGludmFsaWQgbXVsdGlzaWcHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQ1fc2F2ZU11bHRpc2lnAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUJbXVsdGlzaWdfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQHJG1hdGNoMAkAoggBBQxLRVlfTVVMVElTSUcDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAhtdWx0aXNpZwUHJG1hdGNoMAkBC3ZhbHVlT3JFbHNlAgkAmwgCCQERQGV4dHJOYXRpdmUoMTA2MikBBQhtdWx0aXNpZwkAuQkCCQDMCAIFCktFWV9TVEFUVVMJAMwIAgkApQgBBQR0aGlzCQDMCAIJANgEAQgFAnR4AmlkBQNuaWwFA1NFUAcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXmKSKyt", "height": 2904971, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FQLP2qeSZzuQDHhme3wgCd5fui21qYsyx7T1Ff2dTdCj Next: CCEsjEDyMYAr8p5aAZo8QmCwU1ZwPJ2qmaNDQHfAFARx Diff:
Old | New | Differences | |
---|---|---|---|
19 | 19 | ||
20 | 20 | let i = 1000000 | |
21 | 21 | ||
22 | - | let j = | |
23 | - | ||
24 | - | let k = toBigInt( | |
22 | + | let j = toBigInt(1000000000000000000) | |
23 | + | ||
24 | + | let k = toBigInt(1000000000000) | |
25 | 25 | ||
26 | 26 | let l = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | |
27 | 27 | ||
28 | 28 | let m = (l :+ 0) | |
29 | 29 | ||
30 | - | let n = toBigInt(0) | |
31 | - | ||
32 | - | let o = [n, n, n, n, n, n, n, n, n, n, n] | |
33 | - | ||
34 | - | let p = 8 | |
35 | - | ||
36 | - | let q = 18 | |
37 | - | ||
38 | - | let r = split_51C("0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0", "_") | |
39 | - | ||
40 | - | let s = "MULTISIG" | |
41 | - | ||
42 | - | let t = "STATUS" | |
43 | - | ||
44 | - | let u = "PAUSED" | |
45 | - | ||
46 | - | let v = "PAUSER" | |
47 | - | ||
48 | - | let w = "STORAGE" | |
49 | - | ||
50 | - | let x = "ASSETS" | |
51 | - | ||
52 | - | let y = "ASSET_BALANCES" | |
53 | - | ||
54 | - | let z = "ASSET_WEIGHTS" | |
55 | - | ||
56 | - | let A = "LP_FEE" | |
57 | - | ||
58 | - | let B = "PROTOCOL_FEE" | |
59 | - | ||
60 | - | let C = "PRECISION" | |
61 | - | ||
62 | - | let D = "SIGMA_FEE_PER_LP" | |
63 | - | ||
64 | - | let E = "USER_SIGMA_FEE_PER_LP" | |
65 | - | ||
66 | - | let F = "USER_LP" | |
67 | - | ||
68 | - | let G = "TOTAL_LP" | |
69 | - | ||
70 | - | let H = "USER_PROFITS" | |
71 | - | ||
72 | - | let I = "WATCHDOG" | |
73 | - | ||
74 | - | let J = "WATCHDOG_OFFSET" | |
75 | - | ||
76 | - | let K = "WATCHDOG_HEIGHT" | |
77 | - | ||
78 | - | func L (M,N) = { | |
79 | - | let O = addressFromString(M) | |
80 | - | if ($isInstanceOf(O, "Address")) | |
81 | - | then { | |
82 | - | let P = O | |
30 | + | let n = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] | |
31 | + | ||
32 | + | let o = toBigInt(0) | |
33 | + | ||
34 | + | let p = [o, o, o, o, o, o, o, o, o, o, o] | |
35 | + | ||
36 | + | let q = 8 | |
37 | + | ||
38 | + | let r = 18 | |
39 | + | ||
40 | + | let s = split_51C("0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0", "_") | |
41 | + | ||
42 | + | let t = "MULTISIG" | |
43 | + | ||
44 | + | let u = "STATUS" | |
45 | + | ||
46 | + | let v = "PAUSED" | |
47 | + | ||
48 | + | let w = "PAUSER" | |
49 | + | ||
50 | + | let x = "STORAGE" | |
51 | + | ||
52 | + | let y = "ASSETS" | |
53 | + | ||
54 | + | let z = "ASSET_BALANCES" | |
55 | + | ||
56 | + | let A = "REWARD_BALANCES" | |
57 | + | ||
58 | + | let B = "ASSET_WEIGHTS" | |
59 | + | ||
60 | + | let C = "LP_FEE" | |
61 | + | ||
62 | + | let D = "PROTOCOL_FEE" | |
63 | + | ||
64 | + | let E = "PRECISION" | |
65 | + | ||
66 | + | let F = "SIGMA_FEE_PER_LP" | |
67 | + | ||
68 | + | let G = "USER_SIGMA_FEE_PER_LP" | |
69 | + | ||
70 | + | let H = "USER_LP" | |
71 | + | ||
72 | + | let I = "TOTAL_LP" | |
73 | + | ||
74 | + | let J = "USER_PROFITS" | |
75 | + | ||
76 | + | let K = "WATCHDOG" | |
77 | + | ||
78 | + | let L = "WATCHDOG_OFFSET" | |
79 | + | ||
80 | + | let M = "WATCHDOG_HEIGHT" | |
81 | + | ||
82 | + | func N (O,P) = { | |
83 | + | let Q = addressFromString(O) | |
84 | + | if ($isInstanceOf(Q, "Address")) | |
85 | + | then { | |
86 | + | let R = Q | |
83 | 87 | true | |
84 | 88 | } | |
85 | - | else throw( | |
86 | - | } | |
87 | - | ||
88 | - | ||
89 | - | func | |
89 | + | else throw(P) | |
90 | + | } | |
91 | + | ||
92 | + | ||
93 | + | func S (T,P) = if ((T == b)) | |
90 | 94 | then true | |
91 | 95 | else { | |
92 | - | let | |
93 | - | if ($isInstanceOf( | |
96 | + | let Q = assetInfo(fromBase58String(T)) | |
97 | + | if ($isInstanceOf(Q, "Asset")) | |
94 | 98 | then { | |
95 | - | let | |
99 | + | let R = Q | |
96 | 100 | true | |
97 | 101 | } | |
98 | - | else throw( | |
99 | - | } | |
100 | - | ||
101 | - | ||
102 | - | func | |
102 | + | else throw(P) | |
103 | + | } | |
104 | + | ||
105 | + | ||
106 | + | func U (V,W,X,P) = if (if ((W > V)) | |
103 | 107 | then true | |
104 | - | else ( | |
105 | - | then throw( | |
108 | + | else (V > X)) | |
109 | + | then throw(P) | |
106 | 110 | else true | |
107 | 111 | ||
108 | 112 | ||
109 | - | func | |
110 | - | then throw( | |
113 | + | func Y (V,Z,P) = if ((V != Z)) | |
114 | + | then throw(P) | |
111 | 115 | else true | |
112 | 116 | ||
113 | 117 | ||
114 | - | func | |
115 | - | then throw( | |
118 | + | func aa (ab,ac,P) = if ((ab != ac)) | |
119 | + | then throw(P) | |
116 | 120 | else true | |
117 | 121 | ||
118 | 122 | ||
119 | - | func | |
120 | - | then throw( | |
123 | + | func ad (ab,ac,P) = if ((ab == ac)) | |
124 | + | then throw(P) | |
121 | 125 | else true | |
122 | 126 | ||
123 | 127 | ||
124 | - | func | |
125 | - | func | |
126 | - | let | |
127 | - | if ($isInstanceOf( | |
128 | + | func ae (V,W,X,P) = { | |
129 | + | func af (ag,ah) = { | |
130 | + | let Q = parseInt(ah) | |
131 | + | if ($isInstanceOf(Q, "Int")) | |
128 | 132 | then { | |
129 | - | let | |
130 | - | if ( | |
131 | - | then | |
133 | + | let R = Q | |
134 | + | if (ag) | |
135 | + | then U(R, W, X, P) | |
132 | 136 | else false | |
133 | 137 | } | |
134 | - | else throw( | |
135 | - | } | |
136 | - | ||
137 | - | let | |
138 | - | let | |
139 | - | let | |
140 | - | func | |
141 | - | then | |
142 | - | else | |
143 | - | ||
144 | - | func | |
145 | - | then | |
138 | + | else throw(P) | |
139 | + | } | |
140 | + | ||
141 | + | let ai = V | |
142 | + | let aj = size(ai) | |
143 | + | let ak = true | |
144 | + | func al (am,an) = if ((an >= aj)) | |
145 | + | then am | |
146 | + | else af(am, ai[an]) | |
147 | + | ||
148 | + | func ao (am,an) = if ((an >= aj)) | |
149 | + | then am | |
146 | 150 | else throw("List size exceeds 10") | |
147 | 151 | ||
148 | - | | |
149 | - | } | |
150 | - | ||
151 | - | ||
152 | - | func | |
153 | - | func | |
154 | - | then | |
152 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
153 | + | } | |
154 | + | ||
155 | + | ||
156 | + | func ap (aq,P) = { | |
157 | + | func af (ag,ah) = if (ag) | |
158 | + | then S(ah, P) | |
155 | 159 | else false | |
156 | 160 | ||
157 | - | let | |
158 | - | let | |
159 | - | let | |
160 | - | func | |
161 | - | then | |
162 | - | else | |
163 | - | ||
164 | - | func | |
165 | - | then | |
161 | + | let ai = aq | |
162 | + | let aj = size(ai) | |
163 | + | let ak = true | |
164 | + | func al (am,an) = if ((an >= aj)) | |
165 | + | then am | |
166 | + | else af(am, ai[an]) | |
167 | + | ||
168 | + | func ao (am,an) = if ((an >= aj)) | |
169 | + | then am | |
166 | 170 | else throw("List size exceeds 10") | |
167 | 171 | ||
168 | - | | |
169 | - | } | |
170 | - | ||
171 | - | ||
172 | - | func | |
173 | - | then throw( | |
172 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
173 | + | } | |
174 | + | ||
175 | + | ||
176 | + | func ar (ab,ac,P) = if ((ab != ac)) | |
177 | + | then throw(P) | |
174 | 178 | else true | |
175 | 179 | ||
176 | 180 | ||
177 | - | func | |
181 | + | func as (V,P) = if (if ((4 > size(V))) | |
178 | 182 | then true | |
179 | - | else (size( | |
180 | - | then throw( | |
183 | + | else (size(V) > 16)) | |
184 | + | then throw(P) | |
181 | 185 | else true | |
182 | 186 | ||
183 | 187 | ||
184 | - | func | |
185 | - | then throw( | |
188 | + | func at (V,P) = if ((size(V) > 1000)) | |
189 | + | then throw(P) | |
186 | 190 | else true | |
187 | 191 | ||
188 | 192 | ||
189 | - | func | |
193 | + | func au (V,P) = if (if ((0 > V)) | |
190 | 194 | then true | |
191 | - | else ( | |
192 | - | then throw( | |
195 | + | else (V > 8)) | |
196 | + | then throw(P) | |
193 | 197 | else true | |
194 | 198 | ||
195 | 199 | ||
196 | - | func | |
197 | - | let | |
198 | - | if ($isInstanceOf( | |
199 | - | then { | |
200 | - | let | |
201 | - | if (( | |
202 | - | then throw(( | |
203 | - | else if (( | |
204 | - | then throw(( | |
200 | + | func av (aw,T,ax,P) = { | |
201 | + | let Q = aw.assetId | |
202 | + | if ($isInstanceOf(Q, "ByteVector")) | |
203 | + | then { | |
204 | + | let R = Q | |
205 | + | if ((T != toBase58String(R))) | |
206 | + | then throw((P + ": asset")) | |
207 | + | else if ((ax > aw.amount)) | |
208 | + | then throw((P + ": amount")) | |
205 | 209 | else true | |
206 | 210 | } | |
207 | - | else throw(( | |
208 | - | } | |
209 | - | ||
210 | - | ||
211 | - | func | |
212 | - | then throw( | |
211 | + | else throw((P + ": asset")) | |
212 | + | } | |
213 | + | ||
214 | + | ||
215 | + | func ay (az,V,P) = if (!(containsElement(az, V))) | |
216 | + | then throw(P) | |
213 | 217 | else true | |
214 | 218 | ||
215 | 219 | ||
216 | - | func | |
217 | - | let | |
218 | - | if ($isInstanceOf( | |
219 | - | then { | |
220 | - | let | |
221 | - | toBase58String( | |
220 | + | func aA (aB) = { | |
221 | + | let Q = aB | |
222 | + | if ($isInstanceOf(Q, "ByteVector")) | |
223 | + | then { | |
224 | + | let R = Q | |
225 | + | toBase58String(R) | |
222 | 226 | } | |
223 | 227 | else b | |
224 | 228 | } | |
225 | 229 | ||
226 | 230 | ||
227 | - | func | |
231 | + | func aC (aB) = if (if ((aB == b)) | |
228 | 232 | then true | |
229 | - | else ( | |
233 | + | else (aB == "")) | |
230 | 234 | then unit | |
231 | - | else fromBase58String( | |
232 | - | ||
233 | - | ||
234 | - | func | |
235 | - | let | |
236 | - | if ($isInstanceOf( | |
237 | - | then { | |
238 | - | let | |
239 | - | | |
235 | + | else fromBase58String(aB) | |
236 | + | ||
237 | + | ||
238 | + | func aD () = { | |
239 | + | let Q = getBoolean(v) | |
240 | + | if ($isInstanceOf(Q, "Boolean")) | |
241 | + | then { | |
242 | + | let R = Q | |
243 | + | R | |
240 | 244 | } | |
241 | 245 | else false | |
242 | 246 | } | |
243 | 247 | ||
244 | 248 | ||
245 | - | func | |
246 | - | ||
247 | - | ||
248 | - | func | |
249 | - | let | |
250 | - | if ($isInstanceOf( | |
251 | - | then { | |
252 | - | let | |
253 | - | addressFromStringValue( | |
249 | + | func aE (aF) = [BooleanEntry(v, aF)] | |
250 | + | ||
251 | + | ||
252 | + | func aG () = { | |
253 | + | let Q = getString(w) | |
254 | + | if ($isInstanceOf(Q, "String")) | |
255 | + | then { | |
256 | + | let R = Q | |
257 | + | addressFromStringValue(R) | |
254 | 258 | } | |
255 | 259 | else Address(base58'') | |
256 | 260 | } | |
257 | 261 | ||
258 | 262 | ||
259 | - | func | |
260 | - | ||
261 | - | ||
262 | - | func | |
263 | - | let | |
264 | - | if ($isInstanceOf( | |
265 | - | then { | |
266 | - | let | |
267 | - | addressFromStringValue( | |
263 | + | func aH (aI) = [StringEntry(w, toString(aI))] | |
264 | + | ||
265 | + | ||
266 | + | func aJ () = { | |
267 | + | let Q = getString(t) | |
268 | + | if ($isInstanceOf(Q, "String")) | |
269 | + | then { | |
270 | + | let R = Q | |
271 | + | addressFromStringValue(R) | |
268 | 272 | } | |
269 | 273 | else Address(base58'') | |
270 | 274 | } | |
271 | 275 | ||
272 | 276 | ||
273 | - | func | |
274 | - | ||
275 | - | ||
276 | - | func | |
277 | - | let | |
278 | - | if ($isInstanceOf( | |
279 | - | then { | |
280 | - | let | |
281 | - | let | |
282 | - | $Tuple10(fromBase58String( | |
277 | + | func aK (aL) = [StringEntry(t, toString(aL))] | |
278 | + | ||
279 | + | ||
280 | + | func aM () = { | |
281 | + | let Q = getString(x) | |
282 | + | if ($isInstanceOf(Q, "String")) | |
283 | + | then { | |
284 | + | let R = Q | |
285 | + | let aN = split(R, a) | |
286 | + | $Tuple10(fromBase58String(aN[0]), (aN[1] == "1"), parseIntValue(aN[2]), parseIntValue(aN[3]), parseIntValue(aN[4]), parseIntValue(aN[5]), parseIntValue(aN[6]), parseIntValue(aN[7]), parseIntValue(aN[8]), addressFromStringValue(aN[9])) | |
283 | 287 | } | |
284 | 288 | else $Tuple10(base58'', false, 0, 0, 0, 0, 0, 0, 0, Address(base58'')) | |
285 | 289 | } | |
286 | 290 | ||
287 | 291 | ||
288 | - | func | |
292 | + | func aO (aP) = [StringEntry(x, makeString([toBase58String(aP._1), if (aP._2) | |
289 | 293 | then "1" | |
290 | - | else "0", toString( | |
291 | - | ||
292 | - | ||
293 | - | func | |
294 | - | let | |
295 | - | if ($isInstanceOf( | |
296 | - | then { | |
297 | - | let | |
298 | - | if ((size( | |
299 | - | then split_51C( | |
294 | + | else "0", toString(aP._3), toString(aP._4), toString(aP._5), toString(aP._6), toString(aP._7), toString(aP._8), toString(aP._9), toString(aP._10)], a))] | |
295 | + | ||
296 | + | ||
297 | + | func aQ () = { | |
298 | + | let Q = getString(y) | |
299 | + | if ($isInstanceOf(Q, "String")) | |
300 | + | then { | |
301 | + | let R = Q | |
302 | + | if ((size(R) > 0)) | |
303 | + | then split_51C(R, a) | |
300 | 304 | else nil | |
301 | 305 | } | |
302 | 306 | else nil | |
303 | 307 | } | |
304 | 308 | ||
305 | 309 | ||
306 | - | func | |
307 | - | ||
308 | - | ||
309 | - | func | |
310 | - | func | |
311 | - | let | |
312 | - | $Tuple2(( | |
313 | - | } | |
314 | - | ||
315 | - | let | |
316 | - | if ($isInstanceOf( | |
317 | - | then { | |
318 | - | let | |
319 | - | if ((size( | |
310 | + | func aR (aq) = [StringEntry(y, makeString_11C(aq, a))] | |
311 | + | ||
312 | + | ||
313 | + | func aS () = { | |
314 | + | func af (ag,ah) = { | |
315 | + | let aT = parseIntValue(ah) | |
316 | + | $Tuple2((ag._1 :+ aT), (ag._2 + aT)) | |
317 | + | } | |
318 | + | ||
319 | + | let Q = getString(z) | |
320 | + | if ($isInstanceOf(Q, "String")) | |
321 | + | then { | |
322 | + | let R = Q | |
323 | + | if ((size(R) > 0)) | |
320 | 324 | then { | |
321 | - | let | |
322 | - | let | |
323 | - | let | |
324 | - | func | |
325 | - | then | |
326 | - | else | |
327 | - | ||
328 | - | func | |
329 | - | then | |
325 | + | let ai = split_51C(R, a) | |
326 | + | let aj = size(ai) | |
327 | + | let ak = $Tuple2(nil, 0) | |
328 | + | func al (am,an) = if ((an >= aj)) | |
329 | + | then am | |
330 | + | else af(am, ai[an]) | |
331 | + | ||
332 | + | func ao (am,an) = if ((an >= aj)) | |
333 | + | then am | |
330 | 334 | else throw("List size exceeds 10") | |
331 | 335 | ||
332 | - | | |
336 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
333 | 337 | } | |
334 | 338 | else $Tuple2(l, 0) | |
335 | 339 | } | |
337 | 341 | } | |
338 | 342 | ||
339 | 343 | ||
340 | - | func | |
341 | - | func | |
342 | - | ||
343 | - | [StringEntry( | |
344 | - | let | |
345 | - | let | |
346 | - | let | |
347 | - | func | |
348 | - | then | |
349 | - | else | |
350 | - | ||
351 | - | func | |
352 | - | then | |
344 | + | func aU (aV) = { | |
345 | + | func af (ag,ah) = (ag :+ toString(ah)) | |
346 | + | ||
347 | + | [StringEntry(z, makeString_11C({ | |
348 | + | let ai = aV | |
349 | + | let aj = size(ai) | |
350 | + | let ak = nil | |
351 | + | func al (am,an) = if ((an >= aj)) | |
352 | + | then am | |
353 | + | else af(am, ai[an]) | |
354 | + | ||
355 | + | func ao (am,an) = if ((an >= aj)) | |
356 | + | then am | |
353 | 357 | else throw("List size exceeds 10") | |
354 | 358 | ||
355 | - | | |
359 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
356 | 360 | }, a))] | |
357 | 361 | } | |
358 | 362 | ||
359 | 363 | ||
360 | - | func | |
361 | - | func | |
362 | - | let | |
363 | - | | |
364 | - | } | |
365 | - | ||
366 | - | let | |
367 | - | if ($isInstanceOf( | |
368 | - | then { | |
369 | - | let | |
370 | - | if ((size( | |
364 | + | func aW () = { | |
365 | + | func af (ag,ah) = { | |
366 | + | let aT = parseIntValue(ah) | |
367 | + | (ag :+ aT) | |
368 | + | } | |
369 | + | ||
370 | + | let Q = getString(A) | |
371 | + | if ($isInstanceOf(Q, "String")) | |
372 | + | then { | |
373 | + | let R = Q | |
374 | + | if ((size(R) > 0)) | |
371 | 375 | then { | |
372 | - | let | |
373 | - | let | |
374 | - | let | |
375 | - | func | |
376 | - | then | |
377 | - | else | |
378 | - | ||
379 | - | func | |
380 | - | then | |
376 | + | let ai = split_51C(R, a) | |
377 | + | let aj = size(ai) | |
378 | + | let ak = nil | |
379 | + | func al (am,an) = if ((an >= aj)) | |
380 | + | then am | |
381 | + | else af(am, ai[an]) | |
382 | + | ||
383 | + | func ao (am,an) = if ((an >= aj)) | |
384 | + | then am | |
381 | 385 | else throw("List size exceeds 10") | |
382 | 386 | ||
383 | - | am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
387 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
388 | + | } | |
389 | + | else l | |
390 | + | } | |
391 | + | else l | |
392 | + | } | |
393 | + | ||
394 | + | ||
395 | + | func aX (aV) = { | |
396 | + | func af (ag,ah) = (ag :+ toString(ah)) | |
397 | + | ||
398 | + | [StringEntry(A, makeString_11C({ | |
399 | + | let ai = aV | |
400 | + | let aj = size(ai) | |
401 | + | let ak = nil | |
402 | + | func al (am,an) = if ((an >= aj)) | |
403 | + | then am | |
404 | + | else af(am, ai[an]) | |
405 | + | ||
406 | + | func ao (am,an) = if ((an >= aj)) | |
407 | + | then am | |
408 | + | else throw("List size exceeds 10") | |
409 | + | ||
410 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
411 | + | }, a))] | |
412 | + | } | |
413 | + | ||
414 | + | ||
415 | + | func aY () = { | |
416 | + | func af (ag,ah) = { | |
417 | + | let aZ = parseIntValue(ah) | |
418 | + | $Tuple2((ag._1 :+ aZ), (ag._2 + aZ)) | |
419 | + | } | |
420 | + | ||
421 | + | let Q = getString(B) | |
422 | + | if ($isInstanceOf(Q, "String")) | |
423 | + | then { | |
424 | + | let R = Q | |
425 | + | if ((size(R) > 0)) | |
426 | + | then { | |
427 | + | let ai = split_51C(R, a) | |
428 | + | let aj = size(ai) | |
429 | + | let ak = $Tuple2(nil, 0) | |
430 | + | func al (am,an) = if ((an >= aj)) | |
431 | + | then am | |
432 | + | else af(am, ai[an]) | |
433 | + | ||
434 | + | func ao (am,an) = if ((an >= aj)) | |
435 | + | then am | |
436 | + | else throw("List size exceeds 10") | |
437 | + | ||
438 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
384 | 439 | } | |
385 | 440 | else $Tuple2(l, 0) | |
386 | 441 | } | |
388 | 443 | } | |
389 | 444 | ||
390 | 445 | ||
391 | - | func | |
392 | - | func | |
393 | - | ||
394 | - | [StringEntry( | |
395 | - | let | |
396 | - | let | |
397 | - | let | |
398 | - | func | |
399 | - | then | |
400 | - | else | |
401 | - | ||
402 | - | func | |
403 | - | then | |
446 | + | func ba (bb) = { | |
447 | + | func af (ag,ah) = (ag :+ toString(ah)) | |
448 | + | ||
449 | + | [StringEntry(B, makeString_11C({ | |
450 | + | let ai = bb | |
451 | + | let aj = size(ai) | |
452 | + | let ak = nil | |
453 | + | func al (am,an) = if ((an >= aj)) | |
454 | + | then am | |
455 | + | else af(am, ai[an]) | |
456 | + | ||
457 | + | func ao (am,an) = if ((an >= aj)) | |
458 | + | then am | |
404 | 459 | else throw("List size exceeds 10") | |
405 | 460 | ||
406 | - | | |
461 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
407 | 462 | }, a))] | |
408 | 463 | } | |
409 | 464 | ||
410 | 465 | ||
411 | - | func | |
412 | - | let | |
413 | - | if ($isInstanceOf( | |
414 | - | then { | |
415 | - | let | |
416 | - | | |
466 | + | func bc (T) = { | |
467 | + | let Q = getInteger(makeString([C, T], a)) | |
468 | + | if ($isInstanceOf(Q, "Int")) | |
469 | + | then { | |
470 | + | let R = Q | |
471 | + | R | |
417 | 472 | } | |
418 | 473 | else 0 | |
419 | 474 | } | |
420 | 475 | ||
421 | 476 | ||
422 | - | func | |
423 | - | ||
424 | - | ||
425 | - | func | |
426 | - | let | |
427 | - | if ($isInstanceOf( | |
428 | - | then { | |
429 | - | let | |
430 | - | | |
477 | + | func bd (T,V) = [IntegerEntry(makeString([C, T], a), V)] | |
478 | + | ||
479 | + | ||
480 | + | func be (T) = { | |
481 | + | let Q = getInteger(makeString([D, T], a)) | |
482 | + | if ($isInstanceOf(Q, "Int")) | |
483 | + | then { | |
484 | + | let R = Q | |
485 | + | R | |
431 | 486 | } | |
432 | 487 | else 0 | |
433 | 488 | } | |
434 | 489 | ||
435 | 490 | ||
436 | - | func | |
437 | - | ||
438 | - | ||
439 | - | func | |
440 | - | let | |
441 | - | if ($isInstanceOf( | |
442 | - | then { | |
443 | - | let | |
444 | - | | |
491 | + | func bf (T,V) = [IntegerEntry(makeString([D, T], a), V)] | |
492 | + | ||
493 | + | ||
494 | + | func bg () = { | |
495 | + | let Q = getInteger(E) | |
496 | + | if ($isInstanceOf(Q, "Int")) | |
497 | + | then { | |
498 | + | let R = Q | |
499 | + | R | |
445 | 500 | } | |
446 | 501 | else 0 | |
447 | 502 | } | |
448 | 503 | ||
449 | 504 | ||
450 | - | func | |
451 | - | ||
452 | - | ||
453 | - | func | |
454 | - | func | |
455 | - | ||
456 | - | let | |
457 | - | if ($isInstanceOf( | |
458 | - | then { | |
459 | - | let | |
460 | - | if ((size( | |
505 | + | func bh (V) = [IntegerEntry(E, V)] | |
506 | + | ||
507 | + | ||
508 | + | func bi () = { | |
509 | + | func af (ag,ah) = (ag :+ parseBigIntValue(ah)) | |
510 | + | ||
511 | + | let Q = getString(F) | |
512 | + | if ($isInstanceOf(Q, "String")) | |
513 | + | then { | |
514 | + | let R = Q | |
515 | + | if ((size(R) > 0)) | |
461 | 516 | then { | |
462 | - | let | |
463 | - | let | |
464 | - | let | |
465 | - | func | |
466 | - | then | |
467 | - | else | |
468 | - | ||
469 | - | func | |
470 | - | then | |
517 | + | let ai = split_51C(R, a) | |
518 | + | let aj = size(ai) | |
519 | + | let ak = nil | |
520 | + | func al (am,an) = if ((an >= aj)) | |
521 | + | then am | |
522 | + | else af(am, ai[an]) | |
523 | + | ||
524 | + | func ao (am,an) = if ((an >= aj)) | |
525 | + | then am | |
471 | 526 | else throw("List size exceeds 11") | |
472 | 527 | ||
473 | - | | |
528 | + | ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
474 | 529 | } | |
475 | - | else | |
476 | - | } | |
477 | - | else | |
478 | - | } | |
479 | - | ||
480 | - | ||
481 | - | func | |
482 | - | func | |
483 | - | ||
484 | - | [StringEntry( | |
485 | - | let | |
486 | - | let | |
487 | - | let | |
488 | - | func | |
489 | - | then | |
490 | - | else | |
491 | - | ||
492 | - | func | |
493 | - | then | |
530 | + | else p | |
531 | + | } | |
532 | + | else p | |
533 | + | } | |
534 | + | ||
535 | + | ||
536 | + | func bj (V) = { | |
537 | + | func af (ag,ah) = (ag :+ toString(ah)) | |
538 | + | ||
539 | + | [StringEntry(F, makeString_11C({ | |
540 | + | let ai = V | |
541 | + | let aj = size(ai) | |
542 | + | let ak = nil | |
543 | + | func al (am,an) = if ((an >= aj)) | |
544 | + | then am | |
545 | + | else af(am, ai[an]) | |
546 | + | ||
547 | + | func ao (am,an) = if ((an >= aj)) | |
548 | + | then am | |
494 | 549 | else throw("List size exceeds 11") | |
495 | 550 | ||
496 | - | | |
551 | + | ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
497 | 552 | }, a))] | |
498 | 553 | } | |
499 | 554 | ||
500 | 555 | ||
501 | - | func | |
502 | - | func | |
503 | - | ||
504 | - | let | |
505 | - | if ($isInstanceOf( | |
506 | - | then { | |
507 | - | let | |
508 | - | if ((size( | |
556 | + | func bk (bl) = { | |
557 | + | func af (ag,ah) = (ag :+ parseBigIntValue(ah)) | |
558 | + | ||
559 | + | let Q = getString(makeString([G, toString(bl)], a)) | |
560 | + | if ($isInstanceOf(Q, "String")) | |
561 | + | then { | |
562 | + | let R = Q | |
563 | + | if ((size(R) > 0)) | |
509 | 564 | then { | |
510 | - | let | |
511 | - | let | |
512 | - | let | |
513 | - | func | |
514 | - | then | |
515 | - | else | |
516 | - | ||
517 | - | func | |
518 | - | then | |
565 | + | let ai = split_51C(R, a) | |
566 | + | let aj = size(ai) | |
567 | + | let ak = nil | |
568 | + | func al (am,an) = if ((an >= aj)) | |
569 | + | then am | |
570 | + | else af(am, ai[an]) | |
571 | + | ||
572 | + | func ao (am,an) = if ((an >= aj)) | |
573 | + | then am | |
519 | 574 | else throw("List size exceeds 11") | |
520 | 575 | ||
521 | - | | |
576 | + | ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
522 | 577 | } | |
523 | - | else | |
524 | - | } | |
525 | - | else | |
526 | - | } | |
527 | - | ||
528 | - | ||
529 | - | func | |
530 | - | func | |
531 | - | ||
532 | - | [StringEntry(makeString([ | |
533 | - | let | |
534 | - | let | |
535 | - | let | |
536 | - | func | |
537 | - | then | |
538 | - | else | |
539 | - | ||
540 | - | func | |
541 | - | then | |
578 | + | else p | |
579 | + | } | |
580 | + | else p | |
581 | + | } | |
582 | + | ||
583 | + | ||
584 | + | func bm (bl,V) = { | |
585 | + | func af (ag,ah) = (ag :+ toString(ah)) | |
586 | + | ||
587 | + | [StringEntry(makeString([G, toString(bl)], a), makeString_11C({ | |
588 | + | let ai = V | |
589 | + | let aj = size(ai) | |
590 | + | let ak = nil | |
591 | + | func al (am,an) = if ((an >= aj)) | |
592 | + | then am | |
593 | + | else af(am, ai[an]) | |
594 | + | ||
595 | + | func ao (am,an) = if ((an >= aj)) | |
596 | + | then am | |
542 | 597 | else throw("List size exceeds 11") | |
543 | 598 | ||
544 | - | | |
599 | + | ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
545 | 600 | }, a))] | |
546 | 601 | } | |
547 | 602 | ||
548 | 603 | ||
549 | - | func | |
550 | - | let | |
551 | - | if ($isInstanceOf( | |
552 | - | then { | |
553 | - | let | |
554 | - | | |
604 | + | func bn (O) = { | |
605 | + | let Q = getInteger(makeString([H, toString(O)], a)) | |
606 | + | if ($isInstanceOf(Q, "Int")) | |
607 | + | then { | |
608 | + | let R = Q | |
609 | + | R | |
555 | 610 | } | |
556 | 611 | else 0 | |
557 | 612 | } | |
558 | 613 | ||
559 | 614 | ||
560 | - | func | |
561 | - | ||
562 | - | ||
563 | - | func | |
564 | - | let | |
565 | - | if ($isInstanceOf( | |
566 | - | then { | |
567 | - | let | |
568 | - | | |
615 | + | func bo (O,V) = [IntegerEntry(makeString([H, toString(O)], a), V)] | |
616 | + | ||
617 | + | ||
618 | + | func bp () = { | |
619 | + | let Q = getInteger(I) | |
620 | + | if ($isInstanceOf(Q, "Int")) | |
621 | + | then { | |
622 | + | let R = Q | |
623 | + | R | |
569 | 624 | } | |
570 | 625 | else 0 | |
571 | 626 | } | |
572 | 627 | ||
573 | 628 | ||
574 | - | func | |
575 | - | ||
576 | - | ||
577 | - | func | |
578 | - | func | |
579 | - | ||
580 | - | let | |
581 | - | if ($isInstanceOf( | |
582 | - | then { | |
583 | - | let | |
584 | - | if ((size( | |
629 | + | func bq (V) = [IntegerEntry(I, V)] | |
630 | + | ||
631 | + | ||
632 | + | func br (bl) = { | |
633 | + | func af (ag,ah) = (ag :+ parseIntValue(ah)) | |
634 | + | ||
635 | + | let Q = getString(makeString([J, toString(bl)], a)) | |
636 | + | if ($isInstanceOf(Q, "String")) | |
637 | + | then { | |
638 | + | let R = Q | |
639 | + | if ((size(R) > 0)) | |
585 | 640 | then { | |
586 | - | let | |
587 | - | let | |
588 | - | let | |
589 | - | func | |
590 | - | then | |
591 | - | else | |
592 | - | ||
593 | - | func | |
594 | - | then | |
641 | + | let ai = split_51C(R, a) | |
642 | + | let aj = size(ai) | |
643 | + | let ak = nil | |
644 | + | func al (am,an) = if ((an >= aj)) | |
645 | + | then am | |
646 | + | else af(am, ai[an]) | |
647 | + | ||
648 | + | func ao (am,an) = if ((an >= aj)) | |
649 | + | then am | |
595 | 650 | else throw("List size exceeds 11") | |
596 | 651 | ||
597 | - | | |
652 | + | ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
598 | 653 | } | |
599 | 654 | else m | |
600 | 655 | } | |
602 | 657 | } | |
603 | 658 | ||
604 | 659 | ||
605 | - | func | |
606 | - | func | |
607 | - | ||
608 | - | [StringEntry(makeString([ | |
609 | - | let | |
610 | - | let | |
611 | - | let | |
612 | - | func | |
613 | - | then | |
614 | - | else | |
615 | - | ||
616 | - | func | |
617 | - | then | |
660 | + | func bs (bl,V) = { | |
661 | + | func af (ag,ah) = (ag :+ toString(ah)) | |
662 | + | ||
663 | + | [StringEntry(makeString([J, toString(bl)], a), makeString_11C({ | |
664 | + | let ai = V | |
665 | + | let aj = size(ai) | |
666 | + | let ak = nil | |
667 | + | func al (am,an) = if ((an >= aj)) | |
668 | + | then am | |
669 | + | else af(am, ai[an]) | |
670 | + | ||
671 | + | func ao (am,an) = if ((an >= aj)) | |
672 | + | then am | |
618 | 673 | else throw("List size exceeds 11") | |
619 | 674 | ||
620 | - | | |
675 | + | ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
621 | 676 | }, a))] | |
622 | 677 | } | |
623 | 678 | ||
624 | 679 | ||
625 | - | func | |
626 | - | let | |
627 | - | if ($isInstanceOf( | |
628 | - | then { | |
629 | - | let | |
630 | - | addressFromStringValue( | |
680 | + | func bt () = { | |
681 | + | let Q = getString(K) | |
682 | + | if ($isInstanceOf(Q, "String")) | |
683 | + | then { | |
684 | + | let R = Q | |
685 | + | addressFromStringValue(R) | |
631 | 686 | } | |
632 | 687 | else Address(base58'') | |
633 | 688 | } | |
634 | 689 | ||
635 | 690 | ||
636 | - | func | |
637 | - | ||
638 | - | ||
639 | - | func | |
640 | - | let | |
641 | - | if ($isInstanceOf( | |
642 | - | then { | |
643 | - | let | |
644 | - | | |
691 | + | func bu (bv) = [StringEntry(K, toString(bv))] | |
692 | + | ||
693 | + | ||
694 | + | func bw () = { | |
695 | + | let Q = getInteger(L) | |
696 | + | if ($isInstanceOf(Q, "Int")) | |
697 | + | then { | |
698 | + | let R = Q | |
699 | + | R | |
645 | 700 | } | |
646 | 701 | else 0 | |
647 | 702 | } | |
648 | 703 | ||
649 | 704 | ||
650 | - | func | |
651 | - | ||
652 | - | ||
653 | - | func | |
705 | + | func bx (by) = [IntegerEntry(L, by)] | |
706 | + | ||
707 | + | ||
708 | + | func bz (bA) = if ((bA != this)) | |
654 | 709 | then throw("_onlyThisContract: revert") | |
655 | 710 | else true | |
656 | 711 | ||
657 | 712 | ||
658 | - | func | |
713 | + | func bB () = if ((aJ() == Address(base58''))) | |
659 | 714 | then throw("_whenMultisigSet: revert") | |
660 | 715 | else true | |
661 | 716 | ||
662 | 717 | ||
663 | - | func | |
664 | - | let | |
665 | - | if (( | |
718 | + | func bC () = { | |
719 | + | let bD = aM() | |
720 | + | if ((bD._1 != base58'')) | |
666 | 721 | then throw("_whenNotInitialized: revert") | |
667 | 722 | else true | |
668 | 723 | } | |
669 | 724 | ||
670 | 725 | ||
671 | - | func | |
672 | - | let | |
673 | - | if (( | |
726 | + | func bE () = { | |
727 | + | let bD = aM() | |
728 | + | if ((bD._1 == base58'')) | |
674 | 729 | then throw("_whenInitialized: revert") | |
675 | 730 | else true | |
676 | 731 | } | |
677 | 732 | ||
678 | 733 | ||
679 | - | func | |
734 | + | func bF () = if (aD()) | |
680 | 735 | then throw("_whenNotPaused: revert") | |
681 | 736 | else true | |
682 | 737 | ||
683 | 738 | ||
684 | - | func | |
739 | + | func bG () = if (!(aD())) | |
685 | 740 | then throw("_whenPaused: revert") | |
686 | 741 | else true | |
687 | 742 | ||
688 | 743 | ||
689 | - | func | |
744 | + | func bH (bA) = if ((bA != aG())) | |
690 | 745 | then throw("_onlyPauser: revert") | |
691 | 746 | else true | |
692 | 747 | ||
693 | 748 | ||
694 | - | func | |
695 | - | let | |
696 | - | let | |
697 | - | if ($isInstanceOf( | |
749 | + | func bI () = { | |
750 | + | let bJ = { | |
751 | + | let Q = getInteger(bt(), M) | |
752 | + | if ($isInstanceOf(Q, "Int")) | |
698 | 753 | then { | |
699 | - | let | |
700 | - | ( | |
754 | + | let R = Q | |
755 | + | (R + bw()) | |
701 | 756 | } | |
702 | 757 | else 0 | |
703 | 758 | } | |
704 | - | if ((height > | |
759 | + | if ((height > bJ)) | |
705 | 760 | then throw("_checkWatchdog: revert") | |
706 | 761 | else true | |
707 | 762 | } | |
708 | 763 | ||
709 | 764 | ||
710 | - | func | |
711 | - | let | |
712 | - | if ($isInstanceOf( | |
713 | - | then { | |
714 | - | let | |
715 | - | | |
716 | - | } | |
717 | - | else throw(("_getDecimals: no asset=" + | |
718 | - | } | |
719 | - | ||
720 | - | ||
721 | - | func | |
722 | - | then fraction( | |
723 | - | else ( | |
724 | - | ||
725 | - | ||
726 | - | func | |
727 | - | func | |
728 | - | ||
729 | - | let | |
730 | - | let | |
731 | - | let | |
732 | - | func | |
733 | - | then | |
734 | - | else | |
735 | - | ||
736 | - | func | |
737 | - | then | |
765 | + | func bK (T) = { | |
766 | + | let Q = assetInfo(fromBase58String(T)) | |
767 | + | if ($isInstanceOf(Q, "Asset")) | |
768 | + | then { | |
769 | + | let R = Q | |
770 | + | R.decimals | |
771 | + | } | |
772 | + | else throw(("_getDecimals: no asset=" + T)) | |
773 | + | } | |
774 | + | ||
775 | + | ||
776 | + | func bL (bM,bN,bO,bP) = if ((bN >= bO)) | |
777 | + | then fraction(bM, 1, pow(10, 0, (bN - bO), 0, 0, DOWN), bP) | |
778 | + | else (bM * pow(10, 0, (bO - bN), 0, 0, DOWN)) | |
779 | + | ||
780 | + | ||
781 | + | func bQ (aq) = { | |
782 | + | func af (ag,ah) = (ag :+ 0) | |
783 | + | ||
784 | + | let ai = aq | |
785 | + | let aj = size(ai) | |
786 | + | let ak = nil | |
787 | + | func al (am,an) = if ((an >= aj)) | |
788 | + | then am | |
789 | + | else af(am, ai[an]) | |
790 | + | ||
791 | + | func ao (am,an) = if ((an >= aj)) | |
792 | + | then am | |
738 | 793 | else throw("List size exceeds 10") | |
739 | 794 | ||
740 | - | | |
741 | - | } | |
742 | - | ||
743 | - | ||
744 | - | func | |
745 | - | func | |
746 | - | let | |
747 | - | $Tuple2(( | |
748 | - | } | |
749 | - | ||
750 | - | let | |
751 | - | let | |
752 | - | let | |
753 | - | func | |
754 | - | then | |
755 | - | else | |
756 | - | ||
757 | - | func | |
758 | - | then | |
795 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
796 | + | } | |
797 | + | ||
798 | + | ||
799 | + | func bR (bS) = { | |
800 | + | func af (ag,ah) = { | |
801 | + | let aZ = parseIntValue(ah) | |
802 | + | $Tuple2((ag._1 :+ aZ), (ag._2 + aZ)) | |
803 | + | } | |
804 | + | ||
805 | + | let ai = bS | |
806 | + | let aj = size(ai) | |
807 | + | let ak = $Tuple2(nil, 0) | |
808 | + | func al (am,an) = if ((an >= aj)) | |
809 | + | then am | |
810 | + | else af(am, ai[an]) | |
811 | + | ||
812 | + | func ao (am,an) = if ((an >= aj)) | |
813 | + | then am | |
759 | 814 | else throw("List size exceeds 10") | |
760 | 815 | ||
761 | - | | |
762 | - | } | |
763 | - | ||
764 | - | ||
765 | - | func | |
766 | - | func | |
767 | - | let | |
768 | - | let | |
769 | - | $Tuple2(( | |
770 | - | } | |
771 | - | ||
772 | - | let | |
773 | - | let | |
774 | - | let | |
775 | - | func | |
776 | - | then | |
777 | - | else | |
778 | - | ||
779 | - | func | |
780 | - | then | |
816 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
817 | + | } | |
818 | + | ||
819 | + | ||
820 | + | func bT (aq,bU) = { | |
821 | + | func af (ag,ah) = { | |
822 | + | let bV = bK(ah) | |
823 | + | let aT = bL(assetBalance(this, fromBase58String(ah)), bV, bU, DOWN) | |
824 | + | $Tuple2((ag._1 :+ aT), (ag._2 + aT)) | |
825 | + | } | |
826 | + | ||
827 | + | let ai = aq | |
828 | + | let aj = size(ai) | |
829 | + | let ak = $Tuple2(nil, 0) | |
830 | + | func al (am,an) = if ((an >= aj)) | |
831 | + | then am | |
832 | + | else af(am, ai[an]) | |
833 | + | ||
834 | + | func ao (am,an) = if ((an >= aj)) | |
835 | + | then am | |
781 | 836 | else throw("List size exceeds 10") | |
782 | 837 | ||
783 | - | | |
784 | - | } | |
785 | - | ||
786 | - | ||
787 | - | func | |
788 | - | func | |
838 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
839 | + | } | |
840 | + | ||
841 | + | ||
842 | + | func bW (aq) = { | |
843 | + | func af (ag,ah) = (ag :+ toString(ah)) | |
789 | 844 | ||
790 | 845 | makeString({ | |
791 | - | let | |
792 | - | let | |
793 | - | let | |
794 | - | func | |
795 | - | then | |
796 | - | else | |
797 | - | ||
798 | - | func | |
799 | - | then | |
846 | + | let ai = aq | |
847 | + | let aj = size(ai) | |
848 | + | let ak = nil | |
849 | + | func al (am,an) = if ((an >= aj)) | |
850 | + | then am | |
851 | + | else af(am, ai[an]) | |
852 | + | ||
853 | + | func ao (am,an) = if ((an >= aj)) | |
854 | + | then am | |
800 | 855 | else throw("List size exceeds 11") | |
801 | 856 | ||
802 | - | | |
857 | + | ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
803 | 858 | }, a) | |
804 | 859 | } | |
805 | 860 | ||
806 | 861 | ||
807 | - | func | |
808 | - | func | |
862 | + | func bX (aq) = { | |
863 | + | func af (ag,ah) = (ag :+ toString(ah)) | |
809 | 864 | ||
810 | 865 | makeString({ | |
811 | - | let | |
812 | - | let | |
813 | - | let | |
814 | - | func | |
815 | - | then | |
816 | - | else | |
817 | - | ||
818 | - | func | |
819 | - | then | |
866 | + | let ai = aq | |
867 | + | let aj = size(ai) | |
868 | + | let ak = nil | |
869 | + | func al (am,an) = if ((an >= aj)) | |
870 | + | then am | |
871 | + | else af(am, ai[an]) | |
872 | + | ||
873 | + | func ao (am,an) = if ((an >= aj)) | |
874 | + | then am | |
820 | 875 | else throw("List size exceeds 11") | |
821 | 876 | ||
822 | - | | |
877 | + | ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
823 | 878 | }, a) | |
824 | 879 | } | |
825 | 880 | ||
826 | 881 | ||
827 | - | func | |
828 | - | func | |
829 | - | ||
830 | - | let | |
831 | - | let | |
832 | - | let | |
833 | - | func | |
834 | - | then | |
835 | - | else | |
836 | - | ||
837 | - | func | |
838 | - | then | |
882 | + | func bY (bZ,bb,ca) = { | |
883 | + | func af (ag,ah) = (ag :+ fraction(bZ, ah, ca)) | |
884 | + | ||
885 | + | let ai = bb | |
886 | + | let aj = size(ai) | |
887 | + | let ak = nil | |
888 | + | func al (am,an) = if ((an >= aj)) | |
889 | + | then am | |
890 | + | else af(am, ai[an]) | |
891 | + | ||
892 | + | func ao (am,an) = if ((an >= aj)) | |
893 | + | then am | |
839 | 894 | else throw("List size exceeds 10") | |
840 | 895 | ||
841 | - | | |
842 | - | } | |
843 | - | ||
844 | - | ||
845 | - | func | |
846 | - | func | |
847 | - | let | |
848 | - | let | |
849 | - | let | |
850 | - | $Tuple3(( | |
851 | - | } | |
852 | - | ||
853 | - | let | |
854 | - | let | |
855 | - | let | |
856 | - | let | |
857 | - | func | |
858 | - | then | |
859 | - | else | |
860 | - | ||
861 | - | func | |
862 | - | then | |
896 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
897 | + | } | |
898 | + | ||
899 | + | ||
900 | + | func cb (aV,cc) = { | |
901 | + | func af (ag,ah) = { | |
902 | + | let cd = ag._1 | |
903 | + | let ce = cc[cd] | |
904 | + | let cf = (ah + ce) | |
905 | + | $Tuple3((cd + 1), (ag._2 :+ cf), (ag._3 + cf)) | |
906 | + | } | |
907 | + | ||
908 | + | let cg = { | |
909 | + | let ai = aV | |
910 | + | let aj = size(ai) | |
911 | + | let ak = $Tuple3(0, nil, 0) | |
912 | + | func al (am,an) = if ((an >= aj)) | |
913 | + | then am | |
914 | + | else af(am, ai[an]) | |
915 | + | ||
916 | + | func ao (am,an) = if ((an >= aj)) | |
917 | + | then am | |
863 | 918 | else throw("List size exceeds 10") | |
864 | 919 | ||
865 | - | | |
866 | - | } | |
867 | - | $Tuple2( | |
868 | - | } | |
869 | - | ||
870 | - | ||
871 | - | func | |
872 | - | func | |
873 | - | let | |
874 | - | let | |
875 | - | let | |
876 | - | let | |
877 | - | then throw((( | |
920 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
921 | + | } | |
922 | + | $Tuple2(cg._2, cg._3) | |
923 | + | } | |
924 | + | ||
925 | + | ||
926 | + | func ch (aV,ci,aq,bU,P) = { | |
927 | + | func af (ag,ah) = { | |
928 | + | let cd = ag._1 | |
929 | + | let cj = ci[cd] | |
930 | + | let ck = aA(cj.assetId) | |
931 | + | let cl = if ((ck != aq[cd])) | |
932 | + | then throw(((P + ": index=") + toString(cd))) | |
878 | 933 | else unit | |
879 | - | if (( | |
934 | + | if ((cl == cl)) | |
880 | 935 | then { | |
881 | - | let | |
882 | - | let | |
883 | - | $Tuple3(( | |
936 | + | let bV = bK(ck) | |
937 | + | let cf = (ah + bL(ci[cd].amount, bV, bU, DOWN)) | |
938 | + | $Tuple3((cd + 1), (ag._2 :+ cf), (ag._3 + cf)) | |
884 | 939 | } | |
885 | 940 | else throw("Strict value is not equal to itself.") | |
886 | 941 | } | |
887 | 942 | ||
888 | - | let | |
889 | - | let | |
890 | - | let | |
891 | - | let | |
892 | - | func | |
893 | - | then | |
894 | - | else | |
895 | - | ||
896 | - | func | |
897 | - | then | |
943 | + | let cg = { | |
944 | + | let ai = aV | |
945 | + | let aj = size(ai) | |
946 | + | let ak = $Tuple3(0, nil, 0) | |
947 | + | func al (am,an) = if ((an >= aj)) | |
948 | + | then am | |
949 | + | else af(am, ai[an]) | |
950 | + | ||
951 | + | func ao (am,an) = if ((an >= aj)) | |
952 | + | then am | |
898 | 953 | else throw("List size exceeds 10") | |
899 | 954 | ||
900 | - | | |
901 | - | } | |
902 | - | $Tuple2( | |
903 | - | } | |
904 | - | ||
905 | - | ||
906 | - | func | |
907 | - | func | |
908 | - | let | |
909 | - | if (( | |
910 | - | then $Tuple2(( | |
911 | - | else $Tuple2(( | |
912 | - | } | |
913 | - | ||
914 | - | let | |
915 | - | let | |
916 | - | let | |
917 | - | let | |
918 | - | func | |
919 | - | then | |
920 | - | else | |
921 | - | ||
922 | - | func | |
923 | - | then | |
955 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
956 | + | } | |
957 | + | $Tuple2(cg._2, cg._3) | |
958 | + | } | |
959 | + | ||
960 | + | ||
961 | + | func cm (aV,cn,bM) = { | |
962 | + | func af (ag,ah) = { | |
963 | + | let cd = ag._1 | |
964 | + | if ((cd == cn)) | |
965 | + | then $Tuple2((cd + 1), (ag._2 :+ (ah + bM))) | |
966 | + | else $Tuple2((cd + 1), (ag._2 :+ ah)) | |
967 | + | } | |
968 | + | ||
969 | + | let cg = { | |
970 | + | let ai = aV | |
971 | + | let aj = size(ai) | |
972 | + | let ak = $Tuple2(0, nil) | |
973 | + | func al (am,an) = if ((an >= aj)) | |
974 | + | then am | |
975 | + | else af(am, ai[an]) | |
976 | + | ||
977 | + | func ao (am,an) = if ((an >= aj)) | |
978 | + | then am | |
924 | 979 | else throw("List size exceeds 10") | |
925 | 980 | ||
926 | - | | |
927 | - | } | |
928 | - | | |
929 | - | } | |
930 | - | ||
931 | - | ||
932 | - | func | |
933 | - | func | |
934 | - | let | |
935 | - | if (if (( | |
936 | - | then ( | |
981 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
982 | + | } | |
983 | + | cg._2 | |
984 | + | } | |
985 | + | ||
986 | + | ||
987 | + | func co (aV,cn,bM) = { | |
988 | + | func af (ag,ah) = { | |
989 | + | let cd = ag._1 | |
990 | + | if (if ((cd == cn)) | |
991 | + | then (bM > ah) | |
937 | 992 | else false) | |
938 | 993 | then throw("insufficient balance") | |
939 | - | else if (if (( | |
940 | - | then ( | |
994 | + | else if (if ((cd == cn)) | |
995 | + | then (ah >= bM) | |
941 | 996 | else false) | |
942 | - | then $Tuple2(( | |
943 | - | else $Tuple2(( | |
944 | - | } | |
945 | - | ||
946 | - | let | |
947 | - | let | |
948 | - | let | |
949 | - | let | |
950 | - | func | |
951 | - | then | |
952 | - | else | |
953 | - | ||
954 | - | func | |
955 | - | then | |
997 | + | then $Tuple2((cd + 1), (ag._2 :+ (ah - bM))) | |
998 | + | else $Tuple2((cd + 1), (ag._2 :+ ah)) | |
999 | + | } | |
1000 | + | ||
1001 | + | let cg = { | |
1002 | + | let ai = aV | |
1003 | + | let aj = size(ai) | |
1004 | + | let ak = $Tuple2(0, nil) | |
1005 | + | func al (am,an) = if ((an >= aj)) | |
1006 | + | then am | |
1007 | + | else af(am, ai[an]) | |
1008 | + | ||
1009 | + | func ao (am,an) = if ((an >= aj)) | |
1010 | + | then am | |
956 | 1011 | else throw("List size exceeds 10") | |
957 | 1012 | ||
958 | - | | |
959 | - | } | |
960 | - | | |
961 | - | } | |
962 | - | ||
963 | - | ||
964 | - | func | |
965 | - | let | |
966 | - | func | |
967 | - | let | |
968 | - | let | |
969 | - | if ((0 > | |
1013 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1014 | + | } | |
1015 | + | cg._2 | |
1016 | + | } | |
1017 | + | ||
1018 | + | ||
1019 | + | func cp (aV,bM,cq) = { | |
1020 | + | let cr = fraction((cq - bM), i, cq, CEILING) | |
1021 | + | func af (ag,ah) = { | |
1022 | + | let cf = fraction(ah, cr, i, CEILING) | |
1023 | + | let cs = (ah - cf) | |
1024 | + | if ((0 > cs)) | |
970 | 1025 | then throw("insufficient delta balance") | |
971 | - | else $Tuple3(( | |
972 | - | } | |
973 | - | ||
974 | - | let | |
975 | - | let | |
976 | - | let | |
977 | - | func | |
978 | - | then | |
979 | - | else | |
980 | - | ||
981 | - | func | |
982 | - | then | |
1026 | + | else $Tuple3((ag._1 :+ cf), (ag._2 + cf), (ag._3 :+ cs)) | |
1027 | + | } | |
1028 | + | ||
1029 | + | let ai = aV | |
1030 | + | let aj = size(ai) | |
1031 | + | let ak = $Tuple3(nil, 0, nil) | |
1032 | + | func al (am,an) = if ((an >= aj)) | |
1033 | + | then am | |
1034 | + | else af(am, ai[an]) | |
1035 | + | ||
1036 | + | func ao (am,an) = if ((an >= aj)) | |
1037 | + | then am | |
983 | 1038 | else throw("List size exceeds 10") | |
984 | 1039 | ||
985 | - | | |
986 | - | } | |
987 | - | ||
988 | - | ||
989 | - | func | |
990 | - | func | |
991 | - | let | |
992 | - | $Tuple2(( | |
993 | - | } | |
994 | - | ||
995 | - | let | |
996 | - | let | |
997 | - | let | |
998 | - | let | |
999 | - | func | |
1000 | - | then | |
1001 | - | else | |
1002 | - | ||
1003 | - | func | |
1004 | - | then | |
1040 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1041 | + | } | |
1042 | + | ||
1043 | + | ||
1044 | + | func ct (aq,aV,cu,bN) = { | |
1045 | + | func af (ag,ah) = { | |
1046 | + | let cd = ag._1 | |
1047 | + | $Tuple2((cd + 1), (ag._2 :+ ScriptTransfer(cu, bL(aV[cd], bN, bK(ah), DOWN), aC(ah)))) | |
1048 | + | } | |
1049 | + | ||
1050 | + | let cg = { | |
1051 | + | let ai = aq | |
1052 | + | let aj = size(ai) | |
1053 | + | let ak = $Tuple2(0, nil) | |
1054 | + | func al (am,an) = if ((an >= aj)) | |
1055 | + | then am | |
1056 | + | else af(am, ai[an]) | |
1057 | + | ||
1058 | + | func ao (am,an) = if ((an >= aj)) | |
1059 | + | then am | |
1005 | 1060 | else throw("List size exceeds 10") | |
1006 | 1061 | ||
1007 | - | am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1008 | - | } | |
1009 | - | cc._2 | |
1010 | - | } | |
1011 | - | ||
1012 | - | ||
1013 | - | func cr (cs,ct,cu,cv,cw) = if ((ct > cs)) | |
1014 | - | then { | |
1015 | - | let cx = fraction(ct, (f - cu), f) | |
1016 | - | if ((cx > cs)) | |
1017 | - | then { | |
1018 | - | let cy = (cx - cs) | |
1019 | - | let cz = fraction(fraction(cy, cv, h), i, ct) | |
1020 | - | if ((cz > cw)) | |
1021 | - | then fraction(cy, cw, i) | |
1022 | - | else fraction(cy, cz, i) | |
1062 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1063 | + | } | |
1064 | + | cg._2 | |
1065 | + | } | |
1066 | + | ||
1067 | + | ||
1068 | + | func cv (cw,cx,cy,cz,cA) = { | |
1069 | + | let cB = fraction(cx, (f - cz), f) | |
1070 | + | if ((cw > cB)) | |
1071 | + | then 0 | |
1072 | + | else toInt(fraction(fraction(toBigInt(cy), toBigInt(cA), k), toBigInt((cB - cw)), toBigInt(cB), CEILING)) | |
1073 | + | } | |
1074 | + | ||
1075 | + | ||
1076 | + | func cC (cD,cE,cx,cy,cz,cA) = if ((cE > cD)) | |
1077 | + | then 0 | |
1078 | + | else (cv(cE, cx, cy, cz, cA) - cv(cD, cx, cy, cz, cA)) | |
1079 | + | ||
1080 | + | ||
1081 | + | func cF (cw,cx,cG) = if ((cw > cx)) | |
1082 | + | then cG | |
1083 | + | else fraction(cG, cw, cx, FLOOR) | |
1084 | + | ||
1085 | + | ||
1086 | + | func cH (cD,cE,cx,cG) = if ((cD > cE)) | |
1087 | + | then 0 | |
1088 | + | else (cF(cE, cx, cG) - cF(cD, cx, cG)) | |
1089 | + | ||
1090 | + | ||
1091 | + | func cI (cJ,cK) = { | |
1092 | + | let cL = size(cJ) | |
1093 | + | func af (ag,cd) = if ((cd >= cL)) | |
1094 | + | then ag | |
1095 | + | else if ((0 > cJ[cd])) | |
1096 | + | then throw("_validateAllocation: negative assetBalances") | |
1097 | + | else if ((0 > cK[cd])) | |
1098 | + | then throw("_validateAllocation: negative rewardBalances") | |
1099 | + | else ag | |
1100 | + | ||
1101 | + | let ai = n | |
1102 | + | let aj = size(ai) | |
1103 | + | let ak = true | |
1104 | + | func al (am,an) = if ((an >= aj)) | |
1105 | + | then am | |
1106 | + | else af(am, ai[an]) | |
1107 | + | ||
1108 | + | func ao (am,an) = if ((an >= aj)) | |
1109 | + | then am | |
1110 | + | else throw("List size exceeds 10") | |
1111 | + | ||
1112 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1113 | + | } | |
1114 | + | ||
1115 | + | ||
1116 | + | func cM (bl) = { | |
1117 | + | let cN = bn(bl) | |
1118 | + | let cO = br(bl) | |
1119 | + | let cP = bi() | |
1120 | + | let cQ = bk(bl) | |
1121 | + | func af (ag,ah) = { | |
1122 | + | let cd = ag._1 | |
1123 | + | let cR = (cO[cd] + toInt(fraction(toBigInt(cN), (cP[cd] - cQ[cd]), j))) | |
1124 | + | $Tuple2((cd + 1), (ag._2 :+ cR)) | |
1125 | + | } | |
1126 | + | ||
1127 | + | let cS = { | |
1128 | + | let ai = m | |
1129 | + | let aj = size(ai) | |
1130 | + | let ak = $Tuple2(0, nil) | |
1131 | + | func al (am,an) = if ((an >= aj)) | |
1132 | + | then am | |
1133 | + | else af(am, ai[an]) | |
1134 | + | ||
1135 | + | func ao (am,an) = if ((an >= aj)) | |
1136 | + | then am | |
1137 | + | else throw("List size exceeds 11") | |
1138 | + | ||
1139 | + | ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
1140 | + | } | |
1141 | + | let cT = cS._1 | |
1142 | + | let cU = cS._2 | |
1143 | + | $Tuple2((bs(bl, cU) ++ bm(bl, cP)), cU) | |
1144 | + | } | |
1145 | + | ||
1146 | + | ||
1147 | + | func cV (cW,cX,cn,cY) = { | |
1148 | + | func af (ag,ah) = { | |
1149 | + | let cd = ag._1 | |
1150 | + | let cZ = if ((cn == cd)) | |
1151 | + | then (cW[cd] + fraction(toBigInt(cY), j, toBigInt(cX))) | |
1152 | + | else cW[cd] | |
1153 | + | $Tuple2((cd + 1), (ag._2 :+ cZ)) | |
1154 | + | } | |
1155 | + | ||
1156 | + | let da = { | |
1157 | + | let ai = m | |
1158 | + | let aj = size(ai) | |
1159 | + | let ak = $Tuple2(0, nil) | |
1160 | + | func al (am,an) = if ((an >= aj)) | |
1161 | + | then am | |
1162 | + | else af(am, ai[an]) | |
1163 | + | ||
1164 | + | func ao (am,an) = if ((an >= aj)) | |
1165 | + | then am | |
1166 | + | else throw("List size exceeds 11") | |
1167 | + | ||
1168 | + | ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
1169 | + | } | |
1170 | + | let cT = da._1 | |
1171 | + | let cZ = da._2 | |
1172 | + | cZ | |
1173 | + | } | |
1174 | + | ||
1175 | + | ||
1176 | + | func db (dc,bM,dd,de) = { | |
1177 | + | let cP = bi() | |
1178 | + | let df = bp() | |
1179 | + | let dg = if ((df == 0)) | |
1180 | + | then $Tuple2(0, fraction(bM, de, d)) | |
1181 | + | else $Tuple2(fraction(bM, dd, d), fraction(bM, de, d)) | |
1182 | + | let dh = dg._1 | |
1183 | + | let di = dg._2 | |
1184 | + | let cZ = if ((dh == 0)) | |
1185 | + | then cP | |
1186 | + | else cV(cP, df, dc, dh) | |
1187 | + | $Tuple3(dh, di, cZ) | |
1188 | + | } | |
1189 | + | ||
1190 | + | ||
1191 | + | func dj (bM) = { | |
1192 | + | let bD = aM() | |
1193 | + | let dk = bD._3 | |
1194 | + | let dl = aQ() | |
1195 | + | let dm = aY() | |
1196 | + | let dn = dm._1 | |
1197 | + | let do = dm._2 | |
1198 | + | let dp = aS() | |
1199 | + | let dq = dp._1 | |
1200 | + | let dr = dp._2 | |
1201 | + | let ds = if ((dr == 0)) | |
1202 | + | then { | |
1203 | + | func af (ag,ah) = { | |
1204 | + | let cd = ag._1 | |
1205 | + | let dt = fraction(dn[cd], bM, do) | |
1206 | + | $Tuple2((cd + 1), (ag._2 :+ dt)) | |
1023 | 1207 | } | |
1024 | - | else 0 | |
1025 | - | } | |
1026 | - | else { | |
1027 | - | let cx = fraction(ct, (f + cu), f) | |
1028 | - | if ((cs > cx)) | |
1029 | - | then { | |
1030 | - | let cy = (cs - cx) | |
1031 | - | let cz = fraction(fraction(cy, cv, h), i, ct) | |
1032 | - | if ((cz > cw)) | |
1033 | - | then fraction(cy, cw, i) | |
1034 | - | else fraction(cy, cz, i) | |
1208 | + | ||
1209 | + | let du = { | |
1210 | + | let ai = dl | |
1211 | + | let aj = size(ai) | |
1212 | + | let ak = $Tuple2(0, nil) | |
1213 | + | func al (am,an) = if ((an >= aj)) | |
1214 | + | then am | |
1215 | + | else af(am, ai[an]) | |
1216 | + | ||
1217 | + | func ao (am,an) = if ((an >= aj)) | |
1218 | + | then am | |
1219 | + | else throw("List size exceeds 10") | |
1220 | + | ||
1221 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1035 | 1222 | } | |
1036 | - | else 0 | |
1037 | - | } | |
1038 | - | ||
1039 | - | ||
1040 | - | func cA (aT,cB,aX,bW,cu,cv,cw) = 0 | |
1041 | - | ||
1042 | - | ||
1043 | - | func cC (cD,cE,cF,cG,cH,cm,bO,bW,cu,cv,cw) = if (if ((cH == 0)) | |
1044 | - | then true | |
1045 | - | else (cm == 0)) | |
1046 | - | then true | |
1047 | - | else { | |
1048 | - | let cI = fraction((cE - cA(cD, cE, bO, bW, cu, cv, cw)), j, cH) | |
1049 | - | let cJ = fraction((cG - cA(cF, cG, bO, bW, cu, cv, cw)), j, cm) | |
1050 | - | let cK = (cJ - cI) | |
1051 | - | if (if ((0 >= cK)) | |
1052 | - | then ((-1 * bc()) > cK) | |
1053 | - | else false) | |
1054 | - | then throw(("_validateLiquidityInvariant: revert: diff=" + toString(cK))) | |
1055 | - | else true | |
1056 | - | } | |
1057 | - | ||
1058 | - | ||
1059 | - | func cL (cD,cE,cF,cG,bO,bW,cu,cv,cw) = { | |
1060 | - | let cM = (cE - cA(cD, cE, bO, bW, cu, cv, cw)) | |
1061 | - | let cN = (cG - cA(cF, cG, bO, bW, cu, cv, cw)) | |
1062 | - | let cK = (cN - cM) | |
1063 | - | if (if ((0 >= cK)) | |
1064 | - | then ((-1 * bc()) > cK) | |
1065 | - | else false) | |
1066 | - | then throw(("_validateSwapInvariant: revert: diff=" + toString(cK))) | |
1067 | - | else true | |
1068 | - | } | |
1069 | - | ||
1070 | - | ||
1071 | - | func cO (cs,cG,cP,cE,cQ,bW,cR) = { | |
1072 | - | let cS = fraction(cG, cQ, bW) | |
1073 | - | let cT = if ((cs > cS)) | |
1074 | - | then (e + cR) | |
1075 | - | else (e - cR) | |
1076 | - | let cU = fraction(cS, cT, e) | |
1077 | - | let cV = fraction(fraction(cE, cQ, bW), cT, e) | |
1078 | - | if ((cs > cS)) | |
1079 | - | then if ((cs > cU)) | |
1080 | - | then if ((cV > cP)) | |
1081 | - | then throw("_validateAssetAllocation: new up") | |
1082 | - | else if (((cs - cU) > (cP - cV))) | |
1083 | - | then throw("_validateAssetAllocation: still up") | |
1084 | - | else true | |
1085 | - | else true | |
1086 | - | else if ((cU > cs)) | |
1087 | - | then if ((cP > cV)) | |
1088 | - | then throw("_validateAssetAllocation: new down") | |
1089 | - | else if (((cU - cs) > (cV - cP))) | |
1090 | - | then throw("_validateAssetAllocation: still down") | |
1091 | - | else true | |
1092 | - | else true | |
1093 | - | } | |
1094 | - | ||
1095 | - | ||
1096 | - | func cW (cF,cG,cD,cE,bO,bW,cR) = true | |
1097 | - | ||
1098 | - | ||
1099 | - | func cX (bh) = { | |
1100 | - | let cY = bj(bh) | |
1101 | - | let cZ = bn(bh) | |
1102 | - | let da = be() | |
1103 | - | let db = bg(bh) | |
1104 | - | func ad (ae,af) = { | |
1105 | - | let bZ = ae._1 | |
1106 | - | let dc = (cZ[bZ] + toInt(fraction(toBigInt(cY), (da[bZ] - db[bZ]), k))) | |
1107 | - | $Tuple2((bZ + 1), (ae._2 :+ dc)) | |
1108 | - | } | |
1109 | - | ||
1110 | - | let dd = { | |
1111 | - | let ag = m | |
1112 | - | let ah = size(ag) | |
1113 | - | let ai = $Tuple2(0, nil) | |
1114 | - | func aj (ak,al) = if ((al >= ah)) | |
1115 | - | then ak | |
1116 | - | else ad(ak, ag[al]) | |
1117 | - | ||
1118 | - | func am (ak,al) = if ((al >= ah)) | |
1119 | - | then ak | |
1120 | - | else throw("List size exceeds 11") | |
1121 | - | ||
1122 | - | am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
1123 | - | } | |
1124 | - | let de = dd._1 | |
1125 | - | let df = dd._2 | |
1126 | - | $Tuple2((bo(bh, df) ++ bi(bh, da)), df) | |
1127 | - | } | |
1128 | - | ||
1129 | - | ||
1130 | - | func dg (dh,di,cj,dj) = { | |
1131 | - | func ad (ae,af) = { | |
1132 | - | let bZ = ae._1 | |
1133 | - | let dk = if ((cj == bZ)) | |
1134 | - | then (dh[bZ] + fraction(toBigInt(dj), k, toBigInt(di))) | |
1135 | - | else dh[bZ] | |
1136 | - | $Tuple2((bZ + 1), (ae._2 :+ dk)) | |
1137 | - | } | |
1138 | - | ||
1139 | - | let dl = { | |
1140 | - | let ag = m | |
1141 | - | let ah = size(ag) | |
1142 | - | let ai = $Tuple2(0, nil) | |
1143 | - | func aj (ak,al) = if ((al >= ah)) | |
1144 | - | then ak | |
1145 | - | else ad(ak, ag[al]) | |
1146 | - | ||
1147 | - | func am (ak,al) = if ((al >= ah)) | |
1148 | - | then ak | |
1149 | - | else throw("List size exceeds 11") | |
1150 | - | ||
1151 | - | am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
1152 | - | } | |
1153 | - | let de = dl._1 | |
1154 | - | let dk = dl._2 | |
1155 | - | dk | |
1156 | - | } | |
1157 | - | ||
1158 | - | ||
1159 | - | func dm (dn,bI,do,dp) = { | |
1160 | - | let da = be() | |
1161 | - | let dq = bl() | |
1162 | - | let dr = if ((dq == 0)) | |
1163 | - | then $Tuple2(0, fraction(bI, dp, d)) | |
1164 | - | else $Tuple2(fraction(bI, do, d), fraction(bI, dp, d)) | |
1165 | - | let ds = dr._1 | |
1166 | - | let dt = dr._2 | |
1167 | - | let dk = if ((ds == 0)) | |
1168 | - | then da | |
1169 | - | else dg(da, dq, dn, ds) | |
1170 | - | $Tuple3(ds, dt, dk) | |
1171 | - | } | |
1172 | - | ||
1173 | - | ||
1174 | - | func du (bI) = { | |
1175 | - | let bz = aK() | |
1176 | - | let dv = bz._3 | |
1177 | - | let dw = bz._7 | |
1178 | - | let dx = bz._8 | |
1179 | - | let dy = bz._9 | |
1180 | - | let dz = aO() | |
1181 | - | let dA = aU() | |
1223 | + | let cT = du._1 | |
1224 | + | let dv = du._2 | |
1225 | + | $Tuple2(bM, dv) | |
1226 | + | } | |
1227 | + | else { | |
1228 | + | let dw = fraction(toBigInt(bM), j, toBigInt(dr)) | |
1229 | + | func dx (ag,ah) = { | |
1230 | + | let cd = ag._1 | |
1231 | + | let dt = toInt(fraction(dw, toBigInt(dq[cd]), j)) | |
1232 | + | $Tuple2((cd + 1), (ag._2 :+ dt)) | |
1233 | + | } | |
1234 | + | ||
1235 | + | let dy = { | |
1236 | + | let ai = dl | |
1237 | + | let aj = size(ai) | |
1238 | + | let ak = $Tuple2(0, nil) | |
1239 | + | func al (am,an) = if ((an >= aj)) | |
1240 | + | then am | |
1241 | + | else dx(am, ai[an]) | |
1242 | + | ||
1243 | + | func ao (am,an) = if ((an >= aj)) | |
1244 | + | then am | |
1245 | + | else throw("List size exceeds 10") | |
1246 | + | ||
1247 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1248 | + | } | |
1249 | + | let cT = dy._1 | |
1250 | + | let dv = dy._2 | |
1251 | + | $Tuple2(fraction(bM, dk, dr), dv) | |
1252 | + | } | |
1253 | + | let dz = ds._1 | |
1254 | + | let dv = ds._2 | |
1255 | + | let dA = cb(dq, dv) | |
1182 | 1256 | let dB = dA._1 | |
1183 | 1257 | let dC = dA._2 | |
1184 | - | let dD = aQ() | |
1185 | - | let dE = dD._1 | |
1186 | - | let dF = dD._2 | |
1187 | - | let dG = if ((dF == 0)) | |
1188 | - | then { | |
1189 | - | func ad (ae,af) = { | |
1190 | - | let bZ = ae._1 | |
1191 | - | let dH = fraction(dB[bZ], bI, dC) | |
1192 | - | $Tuple2((bZ + 1), (ae._2 :+ dH)) | |
1193 | - | } | |
1194 | - | ||
1195 | - | let dI = { | |
1196 | - | let ag = dz | |
1197 | - | let ah = size(ag) | |
1198 | - | let ai = $Tuple2(0, nil) | |
1199 | - | func aj (ak,al) = if ((al >= ah)) | |
1200 | - | then ak | |
1201 | - | else ad(ak, ag[al]) | |
1202 | - | ||
1203 | - | func am (ak,al) = if ((al >= ah)) | |
1204 | - | then ak | |
1205 | - | else throw("List size exceeds 10") | |
1206 | - | ||
1207 | - | am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1208 | - | } | |
1209 | - | let de = dI._1 | |
1210 | - | let dJ = dI._2 | |
1211 | - | $Tuple2(bI, dJ) | |
1212 | - | } | |
1213 | - | else { | |
1214 | - | let dK = fraction(toBigInt(bI), k, toBigInt(dF)) | |
1215 | - | func dL (ae,af) = { | |
1216 | - | let bZ = ae._1 | |
1217 | - | let dH = toInt(fraction(dK, toBigInt(dE[bZ]), k)) | |
1218 | - | $Tuple2((bZ + 1), (ae._2 :+ dH)) | |
1219 | - | } | |
1220 | - | ||
1221 | - | let dM = { | |
1222 | - | let ag = dz | |
1223 | - | let ah = size(ag) | |
1224 | - | let ai = $Tuple2(0, nil) | |
1225 | - | func aj (ak,al) = if ((al >= ah)) | |
1226 | - | then ak | |
1227 | - | else dL(ak, ag[al]) | |
1228 | - | ||
1229 | - | func am (ak,al) = if ((al >= ah)) | |
1230 | - | then ak | |
1231 | - | else throw("List size exceeds 10") | |
1232 | - | ||
1233 | - | am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1234 | - | } | |
1235 | - | let de = dM._1 | |
1236 | - | let dJ = dM._2 | |
1237 | - | $Tuple2(fraction(bI, dv, dF), dJ) | |
1238 | - | } | |
1239 | - | let dN = dG._1 | |
1240 | - | let dJ = dG._2 | |
1241 | - | let dO = bX(dE, dJ) | |
1242 | - | let dP = dO._1 | |
1243 | - | let dQ = dO._2 | |
1244 | - | let dR = cC(dE, dF, dP, dQ, dv, (dv + dN), dB, dC, dw, dx, dy) | |
1245 | - | if ((dR == dR)) | |
1246 | - | then $Tuple3(dN, dJ, dP) | |
1247 | - | else throw("Strict value is not equal to itself.") | |
1248 | - | } | |
1249 | - | ||
1250 | - | ||
1251 | - | func dS (R,bI) = { | |
1252 | - | let bz = aK() | |
1253 | - | let dv = bz._3 | |
1254 | - | let dT = bz._4 | |
1255 | - | let dU = bz._5 | |
1256 | - | let dV = bz._6 | |
1257 | - | let dw = bz._7 | |
1258 | - | let dx = bz._8 | |
1259 | - | let dy = bz._9 | |
1260 | - | let dz = aO() | |
1261 | - | let dW = aU() | |
1262 | - | let dB = dW._1 | |
1263 | - | let dC = dW._2 | |
1264 | - | let dX = aQ() | |
1265 | - | let dE = dX._1 | |
1266 | - | let dF = dX._2 | |
1267 | - | let dP = ci(dE, value(indexOf(dz, R)), bI) | |
1268 | - | let dQ = (dF + bI) | |
1269 | - | let dR = cW(dP, dQ, dE, dF, dB, dC, dV) | |
1270 | - | if ((dR == dR)) | |
1271 | - | then { | |
1272 | - | let dY = cA(dE, dF, dB, dC, dw, dx, dy) | |
1273 | - | let dZ = cA(dP, dQ, dB, dC, dw, dx, dy) | |
1274 | - | let dN = if ((dv == 0)) | |
1275 | - | then throw("_deposit: empty pool") | |
1276 | - | else { | |
1277 | - | let ea = (dQ - dF) | |
1278 | - | let eb = (dZ - dY) | |
1279 | - | let ec = fraction((ea - eb), j, (dF - dY)) | |
1280 | - | let ed = fraction(dv, ec, j) | |
1281 | - | let ee = cC(dE, dF, dP, dQ, dv, (dv + ed), dB, dC, dw, dx, dy) | |
1282 | - | if ((ee == ee)) | |
1283 | - | then ed | |
1284 | - | else throw("Strict value is not equal to itself.") | |
1258 | + | $Tuple3(dz, dv, dB) | |
1259 | + | } | |
1260 | + | ||
1261 | + | ||
1262 | + | func dD (T,bM) = { | |
1263 | + | let bD = aM() | |
1264 | + | let dk = bD._3 | |
1265 | + | let dE = bD._4 | |
1266 | + | let dF = bD._5 | |
1267 | + | let dG = bD._6 | |
1268 | + | let dH = bD._7 | |
1269 | + | let dl = aQ() | |
1270 | + | let dI = aY() | |
1271 | + | let dn = dI._1 | |
1272 | + | let do = dI._2 | |
1273 | + | let dJ = aS() | |
1274 | + | let dq = dJ._1 | |
1275 | + | let dr = dJ._2 | |
1276 | + | let dK = aW() | |
1277 | + | let cl = if (if ((dr == 0)) | |
1278 | + | then true | |
1279 | + | else (dk == 0)) | |
1280 | + | then throw("_deposit: empty pool") | |
1281 | + | else true | |
1282 | + | if ((cl == cl)) | |
1283 | + | then { | |
1284 | + | let dL = value(indexOf(dl, T)) | |
1285 | + | let dM = fraction(dr, dn[dL], do) | |
1286 | + | let dN = dq[dL] | |
1287 | + | let dO = dK[dL] | |
1288 | + | let dP = cH(dN, (dN + bM), dM, dO) | |
1289 | + | let dQ = co(dK, dL, dP) | |
1290 | + | let dR = cm(dq, dL, (bM + dP)) | |
1291 | + | let dz = (bM + dP) | |
1292 | + | let dS = cI(dR, dQ) | |
1293 | + | if ((dS == dS)) | |
1294 | + | then { | |
1295 | + | let dT = db(0, dz, (dE / 2), (dF / 2)) | |
1296 | + | let dh = dT._1 | |
1297 | + | let di = dT._2 | |
1298 | + | let cZ = dT._3 | |
1299 | + | $Tuple6(dz, dR, dQ, dh, di, cZ) | |
1285 | 1300 | } | |
1286 | - | let ef = dm(0, dN, (dT / 2), (dU / 2)) | |
1287 | - | let ds = ef._1 | |
1288 | - | let dt = ef._2 | |
1289 | - | let dk = ef._3 | |
1290 | - | $Tuple5(dN, dP, ds, dt, dk) | |
1291 | - | } | |
1292 | - | else throw("Strict value is not equal to itself.") | |
1293 | - | } | |
1294 | - | ||
1295 | - | ||
1296 | - | func eg (bI) = { | |
1297 | - | let bz = aK() | |
1298 | - | let dv = bz._3 | |
1299 | - | let dV = bz._6 | |
1300 | - | let dw = bz._7 | |
1301 | - | let dx = bz._8 | |
1302 | - | let dy = bz._9 | |
1303 | - | let eh = aQ() | |
1304 | - | let dE = eh._1 | |
1305 | - | let dF = eh._2 | |
1306 | - | let ei = aU() | |
1307 | - | let dB = ei._1 | |
1308 | - | let dC = ei._2 | |
1309 | - | let ej = bI | |
1310 | - | let ch = S(ej, 0, c, "_withdrawAll: lpTokensToBurn less than 0") | |
1311 | - | if ((ch == ch)) | |
1312 | - | then { | |
1313 | - | let ek = cl(dE, ej, dv) | |
1314 | - | let dP = ek._1 | |
1315 | - | let dQ = ek._2 | |
1316 | - | let el = ek._3 | |
1317 | - | let dR = cC(dE, dF, dP, dQ, dv, (dv - ej), dB, dC, dw, dx, dy) | |
1318 | - | if ((dR == dR)) | |
1319 | - | then $Tuple3(ej, el, dP) | |
1320 | 1301 | else throw("Strict value is not equal to itself.") | |
1321 | 1302 | } | |
1322 | 1303 | else throw("Strict value is not equal to itself.") | |
1323 | 1304 | } | |
1324 | 1305 | ||
1325 | 1306 | ||
1326 | - | func em (R,en) = { | |
1327 | - | let bz = aK() | |
1328 | - | let dv = bz._3 | |
1329 | - | let dT = bz._4 | |
1330 | - | let dU = bz._5 | |
1331 | - | let dV = bz._6 | |
1332 | - | let dw = bz._7 | |
1333 | - | let dx = bz._8 | |
1334 | - | let dy = bz._9 | |
1335 | - | let eo = bc() | |
1336 | - | let dz = aO() | |
1337 | - | let ep = aQ() | |
1338 | - | let dE = ep._1 | |
1339 | - | let dF = ep._2 | |
1340 | - | let eq = aU() | |
1341 | - | let dB = eq._1 | |
1342 | - | let dC = eq._2 | |
1343 | - | let er = value(indexOf(dz, R)) | |
1344 | - | let dY = cA(dE, dF, dB, dC, dw, dx, dy) | |
1345 | - | let es = (dF - dY) | |
1346 | - | let et = fraction(toBigInt((dv - en)), k, toBigInt(dv)) | |
1347 | - | let eu = toInt(fraction(toBigInt(es), et, k)) | |
1348 | - | let ev = fraction(toBigInt(es), k, toBigInt(dv), CEILING) | |
1349 | - | func ad (ae,af) = if (ae._1) | |
1350 | - | then ae | |
1351 | - | else { | |
1352 | - | let ew = ae._2 | |
1353 | - | let ex = ae._3 | |
1354 | - | let ey = ((ex + ew) / 2) | |
1355 | - | let ez = ck(dE, er, ey) | |
1356 | - | let eA = (dF - ey) | |
1357 | - | let eB = (eA - cA(ez, eA, dB, dC, dw, dx, dy)) | |
1358 | - | if (if (((eB - eu) > (-1 * eo))) | |
1359 | - | then (eo > (eB - eu)) | |
1360 | - | else false) | |
1361 | - | then $Tuple5(true, ew, ex, ey, (eB - eu)) | |
1362 | - | else if ((0 > (eB - eu))) | |
1363 | - | then $Tuple5(false, ew, ey, ey, (eB - eu)) | |
1364 | - | else $Tuple5(false, ey, ex, ey, (eB - eu)) | |
1365 | - | } | |
1366 | - | ||
1367 | - | let eC = { | |
1368 | - | let eD = toInt(fraction(toBigInt((en + dY)), ev, k, CEILING)) | |
1369 | - | let eE = { | |
1370 | - | let ag = r | |
1371 | - | let ah = size(ag) | |
1372 | - | let ai = $Tuple5(false, 0, eD, 0, 0) | |
1373 | - | func aj (ak,al) = if ((al >= ah)) | |
1374 | - | then ak | |
1375 | - | else ad(ak, ag[al]) | |
1376 | - | ||
1377 | - | func am (ak,al) = if ((al >= ah)) | |
1378 | - | then ak | |
1379 | - | else throw("List size exceeds 64") | |
1380 | - | ||
1381 | - | am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64) | |
1382 | - | } | |
1383 | - | let eF = eE._1 | |
1384 | - | let eG = eE._2 | |
1385 | - | let eH = eE._3 | |
1386 | - | let eI = eE._4 | |
1387 | - | let eJ = eE._5 | |
1388 | - | if (!(eF)) | |
1389 | - | then throw(((("_withdraw: can't calculate targetAmount=" + toString(eI)) + ",diff=") + toString(eJ))) | |
1390 | - | else eI | |
1391 | - | } | |
1392 | - | let eK = ck(dE, er, eC) | |
1393 | - | let eL = (dF - eC) | |
1394 | - | let eM = if (cW(eK, eL, dE, dF, dB, dC, dV)) | |
1395 | - | then cC(dE, dF, eK, eL, dv, (dv - en), dB, dC, dw, dx, dy) | |
1307 | + | func dU (bM) = { | |
1308 | + | let bD = aM() | |
1309 | + | let dk = bD._3 | |
1310 | + | let dV = aS() | |
1311 | + | let dq = dV._1 | |
1312 | + | let dr = dV._2 | |
1313 | + | let dW = aY() | |
1314 | + | let dn = dW._1 | |
1315 | + | let do = dW._2 | |
1316 | + | let dX = bM | |
1317 | + | let cl = U(dX, 0, dk, "_withdrawAll: invalid lpTokensToBurn") | |
1318 | + | if ((cl == cl)) | |
1319 | + | then { | |
1320 | + | let dY = cp(dq, dX, dk) | |
1321 | + | let dB = dY._1 | |
1322 | + | let dC = dY._2 | |
1323 | + | let dZ = dY._3 | |
1324 | + | $Tuple3(dX, dZ, dB) | |
1325 | + | } | |
1326 | + | else throw("Strict value is not equal to itself.") | |
1327 | + | } | |
1328 | + | ||
1329 | + | ||
1330 | + | func ea (T,cy) = { | |
1331 | + | let bD = aM() | |
1332 | + | let dk = bD._3 | |
1333 | + | let dE = bD._4 | |
1334 | + | let dF = bD._5 | |
1335 | + | let dG = bD._6 | |
1336 | + | let dH = bD._7 | |
1337 | + | let eb = bD._8 | |
1338 | + | let dl = aQ() | |
1339 | + | let ec = aS() | |
1340 | + | let dq = ec._1 | |
1341 | + | let dr = ec._2 | |
1342 | + | let ed = aY() | |
1343 | + | let dn = ed._1 | |
1344 | + | let do = ed._2 | |
1345 | + | let dK = aW() | |
1346 | + | let ee = value(indexOf(dl, T)) | |
1347 | + | let ef = dq[ee] | |
1348 | + | let eg = fraction(dr, dn[ee], do) | |
1349 | + | let eh = dK[ee] | |
1350 | + | let ei = cC(ef, (ef - cy), eg, dr, dH, eb) | |
1351 | + | let ej = cm(dK, ee, ei) | |
1352 | + | let dB = co(dq, ee, cy) | |
1353 | + | let ek = (cy - ei) | |
1354 | + | let cl = cI(dB, ej) | |
1355 | + | if ((cl == cl)) | |
1356 | + | then { | |
1357 | + | let el = db((ee + 1), ek, (dE / 2), (dF / 2)) | |
1358 | + | let dh = el._1 | |
1359 | + | let di = el._2 | |
1360 | + | let cZ = el._3 | |
1361 | + | $Tuple6(ek, dB, ej, dh, di, cZ) | |
1362 | + | } | |
1363 | + | else throw("Strict value is not equal to itself.") | |
1364 | + | } | |
1365 | + | ||
1366 | + | ||
1367 | + | func em (en,eo,ep) = { | |
1368 | + | let bD = aM() | |
1369 | + | let eq = bD._1 | |
1370 | + | let er = bK(toBase58String(eq)) | |
1371 | + | let dk = bD._3 | |
1372 | + | let dE = bD._4 | |
1373 | + | let dF = bD._5 | |
1374 | + | let dG = bD._6 | |
1375 | + | let dH = bD._7 | |
1376 | + | let eb = bD._8 | |
1377 | + | let es = aS() | |
1378 | + | let dq = es._1 | |
1379 | + | let dr = es._2 | |
1380 | + | let et = aY() | |
1381 | + | let dn = et._1 | |
1382 | + | let do = et._2 | |
1383 | + | let dK = aW() | |
1384 | + | let dM = fraction(dr, dn[en], do) | |
1385 | + | let dN = dq[en] | |
1386 | + | let dO = dK[en] | |
1387 | + | let dP = cH(dN, (dN + ep), dM, dO) | |
1388 | + | let ef = dq[eo] | |
1389 | + | let eg = fraction(dr, dn[eo], do) | |
1390 | + | let eh = dK[eo] | |
1391 | + | let ei = cC(ef, (ef - ep), eg, dr, dH, eb) | |
1392 | + | let eu = co(dK, en, dP) | |
1393 | + | let dQ = cm(eu, eo, ei) | |
1394 | + | let ev = cm(dq, en, (ep + dP)) | |
1395 | + | let dR = co(ev, eo, (ep + dP)) | |
1396 | + | let ek = ((ep + dP) - ei) | |
1397 | + | let cl = cI(dR, dQ) | |
1398 | + | if ((cl == cl)) | |
1399 | + | then { | |
1400 | + | let ew = db((eo + 1), ek, dE, dF) | |
1401 | + | let dh = ew._1 | |
1402 | + | let di = ew._2 | |
1403 | + | let cZ = ew._3 | |
1404 | + | $Tuple6(ek, dR, dQ, dh, di, cZ) | |
1405 | + | } | |
1406 | + | else throw("Strict value is not equal to itself.") | |
1407 | + | } | |
1408 | + | ||
1409 | + | ||
1410 | + | @Callable(ex) | |
1411 | + | func init (aq,bS,dd,de,ey,ez,eA,eB,cz,cA,eC,eD,eE,aI) = { | |
1412 | + | let cl = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (bz(ex.caller)) | |
1413 | + | then bC() | |
1414 | + | else false) | |
1415 | + | then bB() | |
1416 | + | else false) | |
1417 | + | then ap(aq, "init: invalid assets") | |
1418 | + | else false) | |
1419 | + | then ae(bS, 1, g, "init: invalid assetWeights") | |
1420 | + | else false) | |
1421 | + | then ar(size(aq), size(bS), "init: invalid assetWeights size") | |
1422 | + | else false) | |
1423 | + | then U(dd, 0, d, "init: invalid lp fee") | |
1424 | + | else false) | |
1425 | + | then U(de, 0, d, "init: invalid protocol fee") | |
1426 | + | else false) | |
1427 | + | then as(ey, "init: invalid name") | |
1428 | + | else false) | |
1429 | + | then at(ez, "init: invalid descr") | |
1430 | + | else false) | |
1431 | + | then au(eA, "init: invalid decimals") | |
1432 | + | else false) | |
1433 | + | then U(eB, 0, e, "init: invalid maxAllocationAmplifier") | |
1434 | + | else false) | |
1435 | + | then U(cz, 0, eB, "init: invalid weightAmplifier") | |
1436 | + | else false) | |
1437 | + | then U(cA, 0, c, "init: invalid disbalanceCoeff") | |
1438 | + | else false) | |
1439 | + | then U(eC, 0, c, "init: invalid feeMaxRate") | |
1440 | + | else false) | |
1441 | + | then N(eD, "init: invalid protocolFeeContract") | |
1442 | + | else false) | |
1443 | + | then U(eE, 1, c, "init: invalid precision") | |
1444 | + | else false) | |
1445 | + | then N(aI, "init: invalid pauser") | |
1396 | 1446 | else false | |
1397 | - | if ((eM == eM)) | |
1398 | - | then { | |
1399 | - | let eN = dm((er + 1), eC, (dT / 2), (dU / 2)) | |
1400 | - | let ds = eN._1 | |
1401 | - | let dt = eN._2 | |
1402 | - | let dk = eN._3 | |
1403 | - | $Tuple5(eC, eK, ds, dt, dk) | |
1404 | - | } | |
1405 | - | else throw("Strict value is not equal to itself.") | |
1406 | - | } | |
1407 | - | ||
1408 | - | ||
1409 | - | func eO (eP,eQ,eR) = { | |
1410 | - | let bz = aK() | |
1411 | - | let eS = bz._1 | |
1412 | - | let eT = bG(toBase58String(eS)) | |
1413 | - | let dv = bz._3 | |
1414 | - | let dT = bz._4 | |
1415 | - | let dU = bz._5 | |
1416 | - | let dV = bz._6 | |
1417 | - | let dw = bz._7 | |
1418 | - | let dx = bz._8 | |
1419 | - | let dy = bz._9 | |
1420 | - | let eo = bc() | |
1421 | - | let eU = aQ() | |
1422 | - | let dE = eU._1 | |
1423 | - | let dF = eU._2 | |
1424 | - | let eV = aU() | |
1425 | - | let dB = eV._1 | |
1426 | - | let dC = eV._2 | |
1427 | - | let dP = ci(dE, eP, eR) | |
1428 | - | let dQ = (dF + eR) | |
1429 | - | let dY = cA(dE, dF, dB, dC, dw, dx, dy) | |
1430 | - | let es = (dF - dY) | |
1431 | - | func ad (ae,af) = if (ae._1) | |
1432 | - | then ae | |
1433 | - | else { | |
1434 | - | let ew = ae._2 | |
1435 | - | let ex = ae._3 | |
1436 | - | let ey = ((ex + ew) / 2) | |
1437 | - | let ez = ck(dP, eQ, ey) | |
1438 | - | let eA = (dQ - ey) | |
1439 | - | let eB = (eA - cA(ez, eA, dB, dC, dw, dx, dy)) | |
1440 | - | if (if (((eB - es) > (-1 * eo))) | |
1441 | - | then (eo > (eB - es)) | |
1442 | - | else false) | |
1443 | - | then $Tuple5(true, ew, ex, ey, (eB - es)) | |
1444 | - | else if ((0 > (eB - es))) | |
1445 | - | then $Tuple5(false, ew, ey, ey, (eB - es)) | |
1446 | - | else $Tuple5(false, ey, ex, ey, (eB - es)) | |
1447 | - | } | |
1448 | - | ||
1449 | - | let eC = { | |
1450 | - | let eC = eR | |
1451 | - | let ez = ck(dP, eQ, eC) | |
1452 | - | let eA = (dQ - eC) | |
1453 | - | let dZ = cA(ez, eA, dB, dC, dw, dx, dy) | |
1454 | - | let eb = (dZ - dY) | |
1455 | - | if ((eb == 0)) | |
1456 | - | then eC | |
1457 | - | else { | |
1458 | - | let eW = { | |
1459 | - | let ag = r | |
1460 | - | let ah = size(ag) | |
1461 | - | let ai = $Tuple5(false, 0, (eR + dY), 0, 0) | |
1462 | - | func aj (ak,al) = if ((al >= ah)) | |
1463 | - | then ak | |
1464 | - | else ad(ak, ag[al]) | |
1465 | - | ||
1466 | - | func am (ak,al) = if ((al >= ah)) | |
1467 | - | then ak | |
1468 | - | else throw("List size exceeds 64") | |
1469 | - | ||
1470 | - | am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64) | |
1471 | - | } | |
1472 | - | let eF = eW._1 | |
1473 | - | let eG = eW._2 | |
1474 | - | let eH = eW._3 | |
1475 | - | let eI = eW._4 | |
1476 | - | let eJ = eW._5 | |
1477 | - | if (!(eF)) | |
1478 | - | then throw(((("_swap: can't calculate targetAmount=" + toString(eI)) + ",diff=") + toString(eJ))) | |
1479 | - | else eI | |
1480 | - | } | |
1481 | - | } | |
1482 | - | let eK = ck(dP, eQ, eC) | |
1483 | - | let eL = (dQ - eC) | |
1484 | - | let eM = if (cW(eK, eL, dE, dF, dB, dC, dV)) | |
1485 | - | then cL(dE, dF, eK, eL, dB, dC, dw, dx, dy) | |
1447 | + | if ((cl == cl)) | |
1448 | + | then { | |
1449 | + | let eF = bR(bS) | |
1450 | + | let dn = eF._1 | |
1451 | + | let do = eF._2 | |
1452 | + | let dB = bQ(aq) | |
1453 | + | let eG = Issue(ey, ez, 0, eA, true) | |
1454 | + | let eq = calculateAssetId(eG) | |
1455 | + | let eH = $Tuple10(eq, true, 0, dd, de, eB, cz, cA, eC, addressFromStringValue(eD)) | |
1456 | + | $Tuple2((((((((([eG] ++ aO(eH)) ++ aR(aq)) ++ aU(dB)) ++ aX(dB)) ++ ba(dn)) ++ bh(eE)) ++ bj(bi())) ++ aH(addressFromStringValue(aI))), unit) | |
1457 | + | } | |
1458 | + | else throw("Strict value is not equal to itself.") | |
1459 | + | } | |
1460 | + | ||
1461 | + | ||
1462 | + | ||
1463 | + | @Callable(ex) | |
1464 | + | func depositAll (bM) = { | |
1465 | + | let cl = if (if (bE()) | |
1466 | + | then bF() | |
1467 | + | else false) | |
1468 | + | then U(bM, 0, c, "depositAll: invalid amount") | |
1486 | 1469 | else false | |
1487 | - | if ((eM == eM)) | |
1488 | - | then { | |
1489 | - | let eX = dm((eQ + 1), eC, dT, dU) | |
1490 | - | let ds = eX._1 | |
1491 | - | let dt = eX._2 | |
1492 | - | let dk = eX._3 | |
1493 | - | $Tuple5(eC, eK, ds, dt, dk) | |
1494 | - | } | |
1495 | - | else throw("Strict value is not equal to itself.") | |
1496 | - | } | |
1497 | - | ||
1498 | - | ||
1499 | - | @Callable(eY) | |
1500 | - | func init (ao,bO,do,dp,eZ,fa,fb,fc,cu,cv,cw,fd,fe,aG) = { | |
1501 | - | let ch = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (bv(eY.caller)) | |
1502 | - | then by() | |
1503 | - | else false) | |
1504 | - | then bx() | |
1505 | - | else false) | |
1506 | - | then an(ao, "init: invalid assets") | |
1507 | - | else false) | |
1508 | - | then ac(bO, 1, g, "init: invalid assetWeights") | |
1509 | - | else false) | |
1510 | - | then ap(size(ao), size(bO), "init: invalid assetWeights size") | |
1511 | - | else false) | |
1512 | - | then S(do, 0, d, "init: invalid lp fee") | |
1513 | - | else false) | |
1514 | - | then S(dp, 0, d, "init: invalid protocol fee") | |
1515 | - | else false) | |
1516 | - | then aq(eZ, "init: invalid name") | |
1517 | - | else false) | |
1518 | - | then ar(fa, "init: invalid descr") | |
1519 | - | else false) | |
1520 | - | then as(fb, "init: invalid decimals") | |
1521 | - | else false) | |
1522 | - | then S(fc, 0, e, "init: invalid maxAllocationAmplifier") | |
1523 | - | else false) | |
1524 | - | then S(cu, 0, fc, "init: invalid weightAmplifier") | |
1525 | - | else false) | |
1526 | - | then S(cv, 0, c, "init: invalid slippageRate") | |
1527 | - | else false) | |
1528 | - | then S(cw, 0, c, "init: invalid feeMaxRate") | |
1529 | - | else false) | |
1530 | - | then L(fd, "init: invalid protocolFeeContract") | |
1531 | - | else false) | |
1532 | - | then S(fe, 1, c, "init: invalid precision") | |
1533 | - | else false) | |
1534 | - | then L(aG, "init: invalid pauser") | |
1535 | - | else false | |
1536 | - | if ((ch == ch)) | |
1537 | - | then { | |
1538 | - | let ff = bN(bO) | |
1539 | - | let dB = ff._1 | |
1540 | - | let dC = ff._2 | |
1541 | - | let dP = bM(ao) | |
1542 | - | let fg = Issue(eZ, fa, 0, fb, true) | |
1543 | - | let eS = calculateAssetId(fg) | |
1544 | - | let fh = $Tuple10(eS, true, 0, do, dp, fc, cu, cv, cw, addressFromStringValue(fd)) | |
1545 | - | $Tuple2(((((((([fg] ++ aM(fh)) ++ aP(ao)) ++ aS(dP)) ++ aW(dB)) ++ bd(fe)) ++ bf(be())) ++ aF(addressFromStringValue(aG))), unit) | |
1546 | - | } | |
1547 | - | else throw("Strict value is not equal to itself.") | |
1548 | - | } | |
1549 | - | ||
1550 | - | ||
1551 | - | ||
1552 | - | @Callable(eY) | |
1553 | - | func depositAll (bI) = { | |
1554 | - | let ch = if (if (bA()) | |
1555 | - | then bB() | |
1556 | - | else false) | |
1557 | - | then S(bI, 0, c, "depositAll: invalid amount") | |
1558 | - | else false | |
1559 | - | if ((ch == ch)) | |
1560 | - | then { | |
1561 | - | let bz = aK() | |
1562 | - | let eS = bz._1 | |
1563 | - | let eT = bG(toBase58String(eS)) | |
1564 | - | let dz = aO() | |
1565 | - | let fi = du(bI) | |
1566 | - | let dN = fi._1 | |
1567 | - | let dJ = fi._2 | |
1568 | - | let dP = fi._3 | |
1569 | - | func ad (ae,af) = { | |
1570 | - | let bZ = ae._1 | |
1571 | - | let cg = ay(eY.payments[bZ].assetId) | |
1572 | - | let fj = bG(cg) | |
1573 | - | let dH = dJ[bZ] | |
1574 | - | let fk = bH(dH, eT, fj, CEILING) | |
1575 | - | let eM = if ((cg != af)) | |
1576 | - | then throw(("depositAll: invalid payment: index=" + toString(bZ))) | |
1577 | - | else if ((0 >= fk)) | |
1470 | + | if ((cl == cl)) | |
1471 | + | then { | |
1472 | + | let bD = aM() | |
1473 | + | let eq = bD._1 | |
1474 | + | let er = bK(toBase58String(eq)) | |
1475 | + | let dl = aQ() | |
1476 | + | let eI = dj(bM) | |
1477 | + | let dz = eI._1 | |
1478 | + | let dv = eI._2 | |
1479 | + | let dB = eI._3 | |
1480 | + | func af (ag,ah) = { | |
1481 | + | let cd = ag._1 | |
1482 | + | let ck = aA(ex.payments[cd].assetId) | |
1483 | + | let eJ = bK(ck) | |
1484 | + | let dt = dv[cd] | |
1485 | + | let eK = bL(dt, er, eJ, CEILING) | |
1486 | + | let dS = if ((ck != ah)) | |
1487 | + | then throw(("depositAll: invalid payment: index=" + toString(cd))) | |
1488 | + | else if ((0 >= eK)) | |
1578 | 1489 | then throw("depositAll: too little amount required") | |
1579 | 1490 | else unit | |
1580 | - | if (( | |
1491 | + | if ((dS == dS)) | |
1581 | 1492 | then { | |
1582 | - | let | |
1583 | - | then [ScriptTransfer( | |
1584 | - | else if (( | |
1585 | - | then throw(((("depositAll: insufficient payment, index=" + toString( | |
1493 | + | let eL = if ((ex.payments[cd].amount > eK)) | |
1494 | + | then [ScriptTransfer(ex.caller, (ex.payments[cd].amount - eK), ex.payments[cd].assetId)] | |
1495 | + | else if ((eK > ex.payments[cd].amount)) | |
1496 | + | then throw(((("depositAll: insufficient payment, index=" + toString(cd)) + ", required=") + toString(eK))) | |
1586 | 1497 | else nil | |
1587 | - | $Tuple2(( | |
1498 | + | $Tuple2((cd + 1), (ag._2 ++ eL)) | |
1588 | 1499 | } | |
1589 | 1500 | else throw("Strict value is not equal to itself.") | |
1590 | 1501 | } | |
1591 | 1502 | ||
1592 | - | let | |
1593 | - | let | |
1594 | - | let | |
1595 | - | let | |
1596 | - | func | |
1597 | - | then | |
1598 | - | else | |
1599 | - | ||
1600 | - | func | |
1601 | - | then | |
1503 | + | let eM = { | |
1504 | + | let ai = dl | |
1505 | + | let aj = size(ai) | |
1506 | + | let ak = $Tuple2(0, nil) | |
1507 | + | func al (am,an) = if ((an >= aj)) | |
1508 | + | then am | |
1509 | + | else af(am, ai[an]) | |
1510 | + | ||
1511 | + | func ao (am,an) = if ((an >= aj)) | |
1512 | + | then am | |
1602 | 1513 | else throw("List size exceeds 10") | |
1603 | 1514 | ||
1604 | - | | |
1515 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1605 | 1516 | } | |
1606 | - | let | |
1607 | - | let | |
1608 | - | let | |
1609 | - | $Tuple2(((([Reissue( | |
1610 | - | } | |
1611 | - | else throw("Strict value is not equal to itself.") | |
1612 | - | } | |
1613 | - | ||
1614 | - | ||
1615 | - | ||
1616 | - | @Callable( | |
1617 | - | func deposit ( | |
1618 | - | let | |
1619 | - | if (( | |
1620 | - | then { | |
1621 | - | let | |
1622 | - | let | |
1623 | - | let | |
1624 | - | let | |
1625 | - | let | |
1626 | - | then | |
1517 | + | let cT = eM._1 | |
1518 | + | let eN = eM._2 | |
1519 | + | let eH = $Tuple10(bD._1, bD._2, (bD._3 + dz), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10) | |
1520 | + | $Tuple2(((([Reissue(eq, dz, true), ScriptTransfer(ex.caller, dz, eq)] ++ aO(eH)) ++ aU(dB)) ++ eN), unit) | |
1521 | + | } | |
1522 | + | else throw("Strict value is not equal to itself.") | |
1523 | + | } | |
1524 | + | ||
1525 | + | ||
1526 | + | ||
1527 | + | @Callable(ex) | |
1528 | + | func deposit (eO) = { | |
1529 | + | let cl = U(eO, 0, c, "deposit: invalid min lp amount") | |
1530 | + | if ((cl == cl)) | |
1531 | + | then { | |
1532 | + | let bD = aM() | |
1533 | + | let eq = bD._1 | |
1534 | + | let eP = aA(eq) | |
1535 | + | let er = bK(eP) | |
1536 | + | let dS = if (if (if (if (if (bE()) | |
1537 | + | then bF() | |
1627 | 1538 | else false) | |
1628 | - | then | |
1539 | + | then bI() | |
1629 | 1540 | else false) | |
1630 | - | then | |
1541 | + | then ar(size(ex.payments), 1, "deposit: invalid payments size") | |
1631 | 1542 | else false) | |
1632 | - | then | |
1543 | + | then ay(aQ(), aA(ex.payments[0].assetId), "deposit: invalid payment asset") | |
1633 | 1544 | else false) | |
1634 | - | then | |
1545 | + | then U(ex.payments[0].amount, 1, c, "deposit: invalid payment amount") | |
1635 | 1546 | else false | |
1636 | - | if (( | |
1547 | + | if ((dS == dS)) | |
1637 | 1548 | then { | |
1638 | - | let fq = ay(eY.payments[0].assetId) | |
1639 | - | let bR = bG(fq) | |
1640 | - | let fr = bH(eY.payments[0].amount, bR, eT, DOWN) | |
1641 | - | let fs = dS(fq, fr) | |
1642 | - | let dN = fs._1 | |
1643 | - | let dP = fs._2 | |
1644 | - | let ds = fs._3 | |
1645 | - | let dt = fs._4 | |
1646 | - | let dk = fs._5 | |
1647 | - | let ft = ((dN - ds) - dt) | |
1648 | - | let dR = S(ft, fo, c, "deposit: less than min") | |
1649 | - | if ((dR == dR)) | |
1549 | + | let eQ = aA(ex.payments[0].assetId) | |
1550 | + | let bV = bK(eQ) | |
1551 | + | let eR = bL(ex.payments[0].amount, bV, er, DOWN) | |
1552 | + | let eS = dD(eQ, eR) | |
1553 | + | let dz = eS._1 | |
1554 | + | let dB = eS._2 | |
1555 | + | let ej = eS._3 | |
1556 | + | let dh = eS._4 | |
1557 | + | let di = eS._5 | |
1558 | + | let cZ = eS._6 | |
1559 | + | let eT = ((dz - dh) - di) | |
1560 | + | let eU = U(eT, eO, c, "deposit: less than min") | |
1561 | + | if ((eU == eU)) | |
1650 | 1562 | then { | |
1651 | - | let | |
1652 | - | $Tuple2(((((([Reissue( | |
1563 | + | let eH = $Tuple10(bD._1, bD._2, (bD._3 + dz), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10) | |
1564 | + | $Tuple2((((((([Reissue(eq, dz, true), ScriptTransfer(ex.caller, eT, eq)] ++ aO(eH)) ++ aU(dB)) ++ aX(ej)) ++ bd(eP, (dh + bc(eP)))) ++ bf(eP, (di + be(eP)))) ++ bj(cZ)), unit) | |
1653 | 1565 | } | |
1654 | 1566 | else throw("Strict value is not equal to itself.") | |
1655 | 1567 | } | |
1660 | 1572 | ||
1661 | 1573 | ||
1662 | 1574 | ||
1663 | - | @Callable( | |
1575 | + | @Callable(ex) | |
1664 | 1576 | func withdrawAll () = { | |
1665 | - | let | |
1666 | - | let | |
1667 | - | let | |
1668 | - | let | |
1669 | - | let | |
1670 | - | let | |
1671 | - | then | |
1672 | - | else false) | |
1673 | - | then | |
1674 | - | else false) | |
1675 | - | then | |
1577 | + | let bD = aM() | |
1578 | + | let eq = bD._1 | |
1579 | + | let eP = toBase58String(eq) | |
1580 | + | let er = bK(eP) | |
1581 | + | let dl = aQ() | |
1582 | + | let cl = if (if (if (bE()) | |
1583 | + | then ar(size(ex.payments), 1, "withdrawAll: invalid payments size") | |
1584 | + | else false) | |
1585 | + | then aa(eP, aA(ex.payments[0].assetId), "withdrawAll: invalid payment asset") | |
1586 | + | else false) | |
1587 | + | then U(ex.payments[0].amount, 1, c, "withdrawAll: invalid payment amount") | |
1676 | 1588 | else false | |
1677 | - | if (( | |
1678 | - | then { | |
1679 | - | let | |
1680 | - | let | |
1681 | - | let | |
1682 | - | let | |
1683 | - | let | |
1684 | - | let | |
1685 | - | $Tuple2(((([Burn( | |
1686 | - | } | |
1687 | - | else throw("Strict value is not equal to itself.") | |
1688 | - | } | |
1689 | - | ||
1690 | - | ||
1691 | - | ||
1692 | - | @Callable( | |
1693 | - | func withdraw ( | |
1694 | - | let | |
1695 | - | let | |
1696 | - | let | |
1697 | - | let | |
1698 | - | let | |
1699 | - | let | |
1700 | - | then | |
1701 | - | else false) | |
1702 | - | then | |
1703 | - | else false) | |
1704 | - | then | |
1705 | - | else false) | |
1706 | - | then | |
1707 | - | else false) | |
1708 | - | then | |
1709 | - | else false) | |
1710 | - | then | |
1711 | - | else false) | |
1712 | - | then | |
1589 | + | if ((cl == cl)) | |
1590 | + | then { | |
1591 | + | let eV = dU(ex.payments[0].amount) | |
1592 | + | let dX = eV._1 | |
1593 | + | let dZ = eV._2 | |
1594 | + | let dB = eV._3 | |
1595 | + | let eW = ct(dl, dZ, ex.caller, er) | |
1596 | + | let eH = $Tuple10(bD._1, bD._2, (bD._3 - dX), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10) | |
1597 | + | $Tuple2(((([Burn(eq, dX)] ++ eW) ++ aO(eH)) ++ aU(dB)), unit) | |
1598 | + | } | |
1599 | + | else throw("Strict value is not equal to itself.") | |
1600 | + | } | |
1601 | + | ||
1602 | + | ||
1603 | + | ||
1604 | + | @Callable(ex) | |
1605 | + | func withdraw (T,eX) = { | |
1606 | + | let bD = aM() | |
1607 | + | let eq = bD._1 | |
1608 | + | let eP = toBase58String(eq) | |
1609 | + | let er = bK(eP) | |
1610 | + | let dl = aQ() | |
1611 | + | let cl = if (if (if (if (if (if (if (bE()) | |
1612 | + | then bF() | |
1613 | + | else false) | |
1614 | + | then bI() | |
1615 | + | else false) | |
1616 | + | then ar(size(ex.payments), 1, "withdraw: invalid payments size") | |
1617 | + | else false) | |
1618 | + | then aa(eP, aA(ex.payments[0].assetId), "withdraw: invalid payment asset") | |
1619 | + | else false) | |
1620 | + | then U(ex.payments[0].amount, 1, c, "withdraw: invalid payment amount") | |
1621 | + | else false) | |
1622 | + | then ay(dl, T, "withdraw: invalid assetId") | |
1623 | + | else false) | |
1624 | + | then U(eX, 0, c, "withdraw: invalid minAmount") | |
1713 | 1625 | else false | |
1714 | - | if ((ch == ch)) | |
1715 | - | then { | |
1716 | - | let fx = em(R, eY.payments[0].amount) | |
1717 | - | let fy = fx._1 | |
1718 | - | let eK = fx._2 | |
1719 | - | let ds = fx._3 | |
1720 | - | let dt = fx._4 | |
1721 | - | let dk = fx._5 | |
1722 | - | let fz = ((fy - ds) - dt) | |
1723 | - | let fA = bG(R) | |
1724 | - | let fB = bH(fz, eT, fA, DOWN) | |
1725 | - | let eM = S(fB, fw, c, "withdraw: less than min") | |
1726 | - | if ((eM == eM)) | |
1626 | + | if ((cl == cl)) | |
1627 | + | then { | |
1628 | + | let eY = ea(T, ex.payments[0].amount) | |
1629 | + | let eZ = eY._1 | |
1630 | + | let fa = eY._2 | |
1631 | + | let fb = eY._3 | |
1632 | + | let dh = eY._4 | |
1633 | + | let di = eY._5 | |
1634 | + | let cZ = eY._6 | |
1635 | + | let fc = ((eZ - dh) - di) | |
1636 | + | let fd = bK(T) | |
1637 | + | let fe = bL(fc, er, fd, DOWN) | |
1638 | + | let dS = U(fe, eX, c, "withdraw: less than min") | |
1639 | + | if ((dS == dS)) | |
1727 | 1640 | then { | |
1728 | - | let | |
1729 | - | $Tuple2(((((([Burn( | |
1641 | + | let eH = $Tuple10(bD._1, bD._2, (bD._3 - ex.payments[0].amount), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10) | |
1642 | + | $Tuple2((((((([Burn(eq, ex.payments[0].amount), ScriptTransfer(ex.caller, fe, aC(T))] ++ aO(eH)) ++ aU(fa)) ++ aX(fb)) ++ bd(T, (dh + bc(T)))) ++ bf(T, (di + be(T)))) ++ bj(cZ)), unit) | |
1730 | 1643 | } | |
1731 | 1644 | else throw("Strict value is not equal to itself.") | |
1732 | 1645 | } | |
1735 | 1648 | ||
1736 | 1649 | ||
1737 | 1650 | ||
1738 | - | @Callable( | |
1739 | - | func swap ( | |
1740 | - | let | |
1741 | - | let | |
1742 | - | let | |
1743 | - | let | |
1744 | - | let | |
1745 | - | let | |
1746 | - | let | |
1747 | - | if (( | |
1748 | - | then { | |
1749 | - | let | |
1750 | - | if (( | |
1651 | + | @Callable(ex) | |
1652 | + | func swap (ff,eX) = { | |
1653 | + | let bD = aM() | |
1654 | + | let eq = bD._1 | |
1655 | + | let er = bK(toBase58String(eq)) | |
1656 | + | let dl = aQ() | |
1657 | + | let fg = aA(ex.payments[0].assetId) | |
1658 | + | let fh = bL(ex.payments[0].amount, bK(fg), er, DOWN) | |
1659 | + | let dL = valueOrErrorMessage(indexOf(dl, fg), "swap: invalid source asset") | |
1660 | + | if ((dL == dL)) | |
1661 | + | then { | |
1662 | + | let ee = valueOrErrorMessage(indexOf(dl, ff), "swap: invalid target asset") | |
1663 | + | if ((ee == ee)) | |
1751 | 1664 | then { | |
1752 | - | let | |
1753 | - | then | |
1665 | + | let cl = if (if (if (if (if (if (bE()) | |
1666 | + | then bF() | |
1754 | 1667 | else false) | |
1755 | - | then | |
1668 | + | then bI() | |
1756 | 1669 | else false) | |
1757 | - | then | |
1670 | + | then U(eX, 0, c, "swap: invalid min target amount") | |
1758 | 1671 | else false) | |
1759 | - | then | |
1672 | + | then U(fh, 1, c, "swap: invalid source amount") | |
1760 | 1673 | else false) | |
1761 | - | then | |
1674 | + | then ad(fg, ff, "swap: same assets") | |
1762 | 1675 | else false) | |
1763 | - | then | |
1676 | + | then ar(size(ex.payments), 1, "swap: invalid payments size") | |
1764 | 1677 | else false | |
1765 | - | if (( | |
1678 | + | if ((cl == cl)) | |
1766 | 1679 | then { | |
1767 | - | let fG = eO(fF, er, fE) | |
1768 | - | let fy = fG._1 | |
1769 | - | let eK = fG._2 | |
1770 | - | let ds = fG._3 | |
1771 | - | let dt = fG._4 | |
1772 | - | let dk = fG._5 | |
1773 | - | let fz = ((fy - ds) - dt) | |
1774 | - | let fA = bG(fC) | |
1775 | - | let fB = bH(fz, eT, fA, DOWN) | |
1776 | - | let eM = S(fB, fw, c, "swap: less than min") | |
1777 | - | if ((eM == eM)) | |
1778 | - | then $Tuple2((((([ScriptTransfer(eY.caller, fB, aA(fC))] ++ aS(eK)) ++ aZ(fC, (ds + aY(fC)))) ++ bb(fC, (dt + ba(fC)))) ++ bf(dk)), unit) | |
1680 | + | let fi = em(dL, ee, fh) | |
1681 | + | let eZ = fi._1 | |
1682 | + | let fa = fi._2 | |
1683 | + | let fb = fi._3 | |
1684 | + | let dh = fi._4 | |
1685 | + | let di = fi._5 | |
1686 | + | let cZ = fi._6 | |
1687 | + | let fc = ((eZ - dh) - di) | |
1688 | + | let fd = bK(ff) | |
1689 | + | let fe = bL(fc, er, fd, DOWN) | |
1690 | + | let dS = U(fe, eX, c, "swap: less than min") | |
1691 | + | if ((dS == dS)) | |
1692 | + | then $Tuple2(((((([ScriptTransfer(ex.caller, fe, aC(ff))] ++ aU(fa)) ++ aX(fb)) ++ bd(ff, (dh + bc(ff)))) ++ bf(ff, (di + be(ff)))) ++ bj(cZ)), unit) | |
1779 | 1693 | else throw("Strict value is not equal to itself.") | |
1780 | 1694 | } | |
1781 | 1695 | else throw("Strict value is not equal to itself.") | |
1787 | 1701 | ||
1788 | 1702 | ||
1789 | 1703 | ||
1790 | - | @Callable( | |
1791 | - | func getDepositAll ( | |
1792 | - | let | |
1793 | - | if (( | |
1794 | - | then { | |
1795 | - | let | |
1796 | - | let | |
1797 | - | let | |
1798 | - | let | |
1799 | - | $Tuple2(nil, $Tuple2( | |
1800 | - | } | |
1801 | - | else throw("Strict value is not equal to itself.") | |
1802 | - | } | |
1803 | - | ||
1804 | - | ||
1805 | - | ||
1806 | - | @Callable( | |
1807 | - | func getDeposit ( | |
1808 | - | let | |
1809 | - | then | |
1704 | + | @Callable(ex) | |
1705 | + | func getDepositAll (cy) = { | |
1706 | + | let cl = U(cy, 1, c, "getDepositAll: invalid amount") | |
1707 | + | if ((cl == cl)) | |
1708 | + | then { | |
1709 | + | let fj = dj(cy) | |
1710 | + | let dz = fj._1 | |
1711 | + | let dv = fj._2 | |
1712 | + | let dB = fj._3 | |
1713 | + | $Tuple2(nil, $Tuple2(dz, dv)) | |
1714 | + | } | |
1715 | + | else throw("Strict value is not equal to itself.") | |
1716 | + | } | |
1717 | + | ||
1718 | + | ||
1719 | + | ||
1720 | + | @Callable(ex) | |
1721 | + | func getDeposit (T,bM) = { | |
1722 | + | let cl = if (ay(aQ(), T, "getDeposit: invalid asset")) | |
1723 | + | then U(bM, 1, c, "getDeposit: invalid amount") | |
1810 | 1724 | else false | |
1811 | - | if ((ch == ch)) | |
1812 | - | then { | |
1813 | - | let bz = aK() | |
1814 | - | let eS = bz._1 | |
1815 | - | let eT = bG(toBase58String(eS)) | |
1816 | - | let bR = bG(R) | |
1817 | - | let fr = bH(bI, bR, eT, DOWN) | |
1818 | - | let fI = dS(R, fr) | |
1819 | - | let dN = fI._1 | |
1820 | - | let dP = fI._2 | |
1821 | - | let ds = fI._3 | |
1822 | - | let dt = fI._4 | |
1823 | - | let dk = fI._5 | |
1824 | - | let ft = ((dN - ds) - dt) | |
1825 | - | $Tuple2(nil, ft) | |
1826 | - | } | |
1827 | - | else throw("Strict value is not equal to itself.") | |
1828 | - | } | |
1829 | - | ||
1830 | - | ||
1831 | - | ||
1832 | - | @Callable(eY) | |
1833 | - | func getWithdrawAll (en) = { | |
1834 | - | let ch = S(en, 0, c, "getWithdrawAll: invalid amount") | |
1835 | - | if ((ch == ch)) | |
1836 | - | then { | |
1837 | - | let fJ = eg(en) | |
1838 | - | let ej = fJ._1 | |
1839 | - | let fK = fJ._2 | |
1840 | - | let dP = fJ._3 | |
1841 | - | $Tuple2(nil, fK) | |
1842 | - | } | |
1843 | - | else throw("Strict value is not equal to itself.") | |
1844 | - | } | |
1845 | - | ||
1846 | - | ||
1847 | - | ||
1848 | - | @Callable(eY) | |
1849 | - | func getWithdraw (R,bI) = { | |
1850 | - | let ch = if (aw(aO(), R, "getWithdraw: invalid asset")) | |
1851 | - | then S(bI, 1, c, "getWithdraw: invalid amount") | |
1725 | + | if ((cl == cl)) | |
1726 | + | then { | |
1727 | + | let bD = aM() | |
1728 | + | let eq = bD._1 | |
1729 | + | let er = bK(toBase58String(eq)) | |
1730 | + | let bV = bK(T) | |
1731 | + | let eR = bL(bM, bV, er, DOWN) | |
1732 | + | let fk = dD(T, eR) | |
1733 | + | let dz = fk._1 | |
1734 | + | let dB = fk._2 | |
1735 | + | let ej = fk._3 | |
1736 | + | let dh = fk._4 | |
1737 | + | let di = fk._5 | |
1738 | + | let cZ = fk._6 | |
1739 | + | let eT = ((dz - dh) - di) | |
1740 | + | $Tuple2(nil, eT) | |
1741 | + | } | |
1742 | + | else throw("Strict value is not equal to itself.") | |
1743 | + | } | |
1744 | + | ||
1745 | + | ||
1746 | + | ||
1747 | + | @Callable(ex) | |
1748 | + | func getWithdrawAll (cy) = { | |
1749 | + | let cl = U(cy, 0, c, "getWithdrawAll: invalid amount") | |
1750 | + | if ((cl == cl)) | |
1751 | + | then { | |
1752 | + | let fl = dU(cy) | |
1753 | + | let dX = fl._1 | |
1754 | + | let fm = fl._2 | |
1755 | + | let dB = fl._3 | |
1756 | + | $Tuple2(nil, fm) | |
1757 | + | } | |
1758 | + | else throw("Strict value is not equal to itself.") | |
1759 | + | } | |
1760 | + | ||
1761 | + | ||
1762 | + | ||
1763 | + | @Callable(ex) | |
1764 | + | func getWithdraw (T,bM) = { | |
1765 | + | let cl = if (ay(aQ(), T, "getWithdraw: invalid asset")) | |
1766 | + | then U(bM, 1, c, "getWithdraw: invalid amount") | |
1852 | 1767 | else false | |
1853 | - | if ((ch == ch)) | |
1854 | - | then { | |
1855 | - | let bz = aK() | |
1856 | - | let eS = bz._1 | |
1857 | - | let eT = bG(toBase58String(eS)) | |
1858 | - | let fL = em(R, bI) | |
1859 | - | let fy = fL._1 | |
1860 | - | let dP = fL._2 | |
1861 | - | let ds = fL._3 | |
1862 | - | let dt = fL._4 | |
1863 | - | let dk = fL._5 | |
1864 | - | let fz = ((fy - ds) - dt) | |
1865 | - | let fA = bG(R) | |
1866 | - | let fB = bH(fz, eT, fA, DOWN) | |
1867 | - | $Tuple2(nil, fB) | |
1868 | - | } | |
1869 | - | else throw("Strict value is not equal to itself.") | |
1870 | - | } | |
1871 | - | ||
1872 | - | ||
1873 | - | ||
1874 | - | @Callable(eY) | |
1875 | - | func getSwap (fM,fC,eR) = { | |
1876 | - | let bz = aK() | |
1877 | - | let eS = bz._1 | |
1878 | - | let eT = bG(toBase58String(eS)) | |
1879 | - | let dz = aO() | |
1880 | - | let fF = valueOrErrorMessage(indexOf(dz, fM), "swap: invalid source asset") | |
1881 | - | if ((fF == fF)) | |
1882 | - | then { | |
1883 | - | let er = valueOrErrorMessage(indexOf(dz, fC), "swap: invalid target asset") | |
1884 | - | if ((er == er)) | |
1768 | + | if ((cl == cl)) | |
1769 | + | then { | |
1770 | + | let bD = aM() | |
1771 | + | let eq = bD._1 | |
1772 | + | let er = bK(toBase58String(eq)) | |
1773 | + | let fn = ea(T, bM) | |
1774 | + | let eZ = fn._1 | |
1775 | + | let dB = fn._2 | |
1776 | + | let ej = fn._3 | |
1777 | + | let dh = fn._4 | |
1778 | + | let di = fn._5 | |
1779 | + | let cZ = fn._6 | |
1780 | + | let fc = ((eZ - dh) - di) | |
1781 | + | let fd = bK(T) | |
1782 | + | let fe = bL(fc, er, fd, DOWN) | |
1783 | + | $Tuple2(nil, fe) | |
1784 | + | } | |
1785 | + | else throw("Strict value is not equal to itself.") | |
1786 | + | } | |
1787 | + | ||
1788 | + | ||
1789 | + | ||
1790 | + | @Callable(ex) | |
1791 | + | func getSwap (fo,ff,ep) = { | |
1792 | + | let bD = aM() | |
1793 | + | let eq = bD._1 | |
1794 | + | let er = bK(toBase58String(eq)) | |
1795 | + | let dl = aQ() | |
1796 | + | let dL = valueOrErrorMessage(indexOf(dl, fo), "swap: invalid source asset") | |
1797 | + | if ((dL == dL)) | |
1798 | + | then { | |
1799 | + | let ee = valueOrErrorMessage(indexOf(dl, ff), "swap: invalid target asset") | |
1800 | + | if ((ee == ee)) | |
1885 | 1801 | then { | |
1886 | - | let | |
1887 | - | let | |
1888 | - | then | |
1802 | + | let fh = bL(ep, bK(fo), er, DOWN) | |
1803 | + | let cl = if (U(fh, 1, c, "swap: invalid source amount")) | |
1804 | + | then ad(fo, ff, "swap: same assets") | |
1889 | 1805 | else false | |
1890 | - | if (( | |
1806 | + | if ((cl == cl)) | |
1891 | 1807 | then { | |
1892 | - | let fN = eO(fF, er, fE) | |
1893 | - | let fy = fN._1 | |
1894 | - | let eK = fN._2 | |
1895 | - | let ds = fN._3 | |
1896 | - | let dt = fN._4 | |
1897 | - | let dk = fN._5 | |
1898 | - | let fz = ((fy - ds) - dt) | |
1899 | - | let fA = bG(fC) | |
1900 | - | let fB = bH(fz, eT, fA, DOWN) | |
1901 | - | $Tuple2(nil, fB) | |
1808 | + | let fp = em(dL, ee, fh) | |
1809 | + | let eZ = fp._1 | |
1810 | + | let fa = fp._2 | |
1811 | + | let fb = fp._3 | |
1812 | + | let dh = fp._4 | |
1813 | + | let di = fp._5 | |
1814 | + | let cZ = fp._6 | |
1815 | + | let fc = ((eZ - dh) - di) | |
1816 | + | let fd = bK(ff) | |
1817 | + | let fe = bL(fc, er, fd, DOWN) | |
1818 | + | $Tuple2(nil, fe) | |
1902 | 1819 | } | |
1903 | 1820 | else throw("Strict value is not equal to itself.") | |
1904 | 1821 | } | |
1909 | 1826 | ||
1910 | 1827 | ||
1911 | 1828 | ||
1912 | - | @Callable(eY) | |
1913 | - | func getClaim (bh) = { | |
1914 | - | let fO = if ((size(bh) > 0)) | |
1915 | - | then valueOrErrorMessage(addressFromString(bh), "getClaim: invalid user") | |
1916 | - | else eY.caller | |
1917 | - | let fP = cX(fO) | |
1918 | - | let fQ = fP._1 | |
1919 | - | let cZ = fP._2 | |
1920 | - | $Tuple2(nil, cZ) | |
1921 | - | } | |
1922 | - | ||
1923 | - | ||
1924 | - | ||
1925 | - | @Callable(eY) | |
1926 | - | func getUtilFunc () = { | |
1927 | - | let bz = aK() | |
1928 | - | let dv = bz._3 | |
1929 | - | let dw = bz._7 | |
1930 | - | let dx = bz._8 | |
1931 | - | let dy = bz._9 | |
1932 | - | let fR = aQ() | |
1933 | - | let dP = fR._1 | |
1934 | - | let dQ = fR._2 | |
1935 | - | let fS = aU() | |
1936 | - | let dB = fS._1 | |
1937 | - | let dC = fS._2 | |
1938 | - | let dZ = cA(dP, dQ, dB, dC, dw, dx, dy) | |
1939 | - | let eB = (dQ - dZ) | |
1940 | - | $Tuple2(nil, $Tuple2(eB, dv)) | |
1941 | - | } | |
1942 | - | ||
1943 | - | ||
1944 | - | ||
1945 | - | @Callable(eY) | |
1946 | - | func getFeeFunc () = { | |
1947 | - | let bz = aK() | |
1948 | - | let dw = bz._7 | |
1949 | - | let dx = bz._8 | |
1950 | - | let dy = bz._9 | |
1951 | - | let fT = aQ() | |
1952 | - | let dP = fT._1 | |
1953 | - | let dQ = fT._2 | |
1954 | - | let fU = aU() | |
1955 | - | let dB = fU._1 | |
1956 | - | let dC = fU._2 | |
1957 | - | let dZ = cA(dP, dQ, dB, dC, dw, dx, dy) | |
1958 | - | $Tuple2(nil, dZ) | |
1959 | - | } | |
1960 | - | ||
1961 | - | ||
1962 | - | ||
1963 | - | @Callable(eY) | |
1964 | - | func checkpoint (bh) = { | |
1965 | - | let ch = if (bA()) | |
1966 | - | then bB() | |
1829 | + | @Callable(ex) | |
1830 | + | func getClaim (bl) = { | |
1831 | + | let fq = if ((size(bl) > 0)) | |
1832 | + | then valueOrErrorMessage(addressFromString(bl), "getClaim: invalid user") | |
1833 | + | else ex.caller | |
1834 | + | let fr = cM(fq) | |
1835 | + | let fs = fr._1 | |
1836 | + | let cO = fr._2 | |
1837 | + | $Tuple2(nil, cO) | |
1838 | + | } | |
1839 | + | ||
1840 | + | ||
1841 | + | ||
1842 | + | @Callable(ex) | |
1843 | + | func getAssetId () = { | |
1844 | + | let bD = aM() | |
1845 | + | let eq = bD._1 | |
1846 | + | $Tuple2(nil, toBase58String(eq)) | |
1847 | + | } | |
1848 | + | ||
1849 | + | ||
1850 | + | ||
1851 | + | @Callable(ex) | |
1852 | + | func getDecimals () = { | |
1853 | + | let bD = aM() | |
1854 | + | let eq = bD._1 | |
1855 | + | let er = bK(toBase58String(eq)) | |
1856 | + | $Tuple2(nil, er) | |
1857 | + | } | |
1858 | + | ||
1859 | + | ||
1860 | + | ||
1861 | + | @Callable(ex) | |
1862 | + | func checkpoint (bl) = { | |
1863 | + | let cl = if (bE()) | |
1864 | + | then bF() | |
1967 | 1865 | else false | |
1968 | - | if (( | |
1969 | - | then { | |
1970 | - | let | |
1971 | - | then valueOrErrorMessage(addressFromString( | |
1972 | - | else | |
1973 | - | | |
1974 | - | } | |
1975 | - | else throw("Strict value is not equal to itself.") | |
1976 | - | } | |
1977 | - | ||
1978 | - | ||
1979 | - | ||
1980 | - | @Callable( | |
1866 | + | if ((cl == cl)) | |
1867 | + | then { | |
1868 | + | let fq = if ((size(bl) > 0)) | |
1869 | + | then valueOrErrorMessage(addressFromString(bl), "checkpoint: invalid user") | |
1870 | + | else ex.caller | |
1871 | + | cM(fq) | |
1872 | + | } | |
1873 | + | else throw("Strict value is not equal to itself.") | |
1874 | + | } | |
1875 | + | ||
1876 | + | ||
1877 | + | ||
1878 | + | @Callable(ex) | |
1981 | 1879 | func stake () = { | |
1982 | - | let | |
1983 | - | then | |
1880 | + | let cl = if (bE()) | |
1881 | + | then bF() | |
1984 | 1882 | else false | |
1985 | - | if (( | |
1986 | - | then { | |
1987 | - | let | |
1988 | - | let | |
1989 | - | let | |
1990 | - | then | |
1883 | + | if ((cl == cl)) | |
1884 | + | then { | |
1885 | + | let bD = aM() | |
1886 | + | let eP = aA(bD._1) | |
1887 | + | let dS = if (if (ar(size(ex.payments), 1, "stake: invalid payments size")) | |
1888 | + | then aa(eP, aA(ex.payments[0].assetId), "stake: invalid payment asset") | |
1991 | 1889 | else false) | |
1992 | - | then | |
1890 | + | then U(ex.payments[0].amount, 0, c, "stake: invalid payment amount") | |
1993 | 1891 | else false | |
1994 | - | if (( | |
1892 | + | if ((dS == dS)) | |
1995 | 1893 | then { | |
1996 | - | let | |
1997 | - | let | |
1998 | - | let | |
1999 | - | $Tuple2((( | |
1894 | + | let ft = cM(ex.caller) | |
1895 | + | let fs = ft._1 | |
1896 | + | let cO = ft._2 | |
1897 | + | $Tuple2(((fs ++ bo(ex.caller, (bn(ex.caller) + ex.payments[0].amount))) ++ bq((bp() + ex.payments[0].amount))), unit) | |
2000 | 1898 | } | |
2001 | 1899 | else throw("Strict value is not equal to itself.") | |
2002 | 1900 | } | |
2005 | 1903 | ||
2006 | 1904 | ||
2007 | 1905 | ||
2008 | - | @Callable( | |
2009 | - | func unstake ( | |
2010 | - | let | |
2011 | - | then | |
1906 | + | @Callable(ex) | |
1907 | + | func unstake (bM) = { | |
1908 | + | let cl = if (bE()) | |
1909 | + | then bF() | |
2012 | 1910 | else false | |
2013 | - | if (( | |
2014 | - | then { | |
2015 | - | let | |
2016 | - | let | |
2017 | - | let | |
2018 | - | let | |
2019 | - | if (( | |
1911 | + | if ((cl == cl)) | |
1912 | + | then { | |
1913 | + | let bD = aM() | |
1914 | + | let eq = bD._1 | |
1915 | + | let cN = bn(ex.caller) | |
1916 | + | let dS = U(bM, 0, cN, "unstake: invalid amount") | |
1917 | + | if ((dS == dS)) | |
2020 | 1918 | then { | |
2021 | - | let | |
2022 | - | let | |
2023 | - | let | |
2024 | - | $Tuple2(((([ScriptTransfer( | |
1919 | + | let fu = cM(ex.caller) | |
1920 | + | let fs = fu._1 | |
1921 | + | let cO = fu._2 | |
1922 | + | $Tuple2(((([ScriptTransfer(ex.caller, bM, eq)] ++ fs) ++ bo(ex.caller, (cN - bM))) ++ bq((bp() - bM))), unit) | |
2025 | 1923 | } | |
2026 | 1924 | else throw("Strict value is not equal to itself.") | |
2027 | 1925 | } | |
2030 | 1928 | ||
2031 | 1929 | ||
2032 | 1930 | ||
2033 | - | @Callable( | |
2034 | - | func claim ( | |
2035 | - | let | |
2036 | - | then | |
1931 | + | @Callable(ex) | |
1932 | + | func claim (bl) = { | |
1933 | + | let cl = if (bE()) | |
1934 | + | then bF() | |
2037 | 1935 | else false | |
2038 | - | if ((ch == ch)) | |
2039 | - | then { | |
2040 | - | let fO = if ((size(bh) > 0)) | |
2041 | - | then valueOrErrorMessage(addressFromString(bh), "claim: invalid user") | |
2042 | - | else eY.caller | |
2043 | - | let bz = aK() | |
2044 | - | let eS = bz._1 | |
2045 | - | let fp = ay(eS) | |
2046 | - | let dz = [fp, aO()] | |
2047 | - | let fX = (size(dz) - 1) | |
2048 | - | let cY = bj(fO) | |
2049 | - | let fY = cX(fO) | |
2050 | - | let fQ = fY._1 | |
2051 | - | let cZ = fY._2 | |
2052 | - | func ad (ae,fZ) = { | |
2053 | - | let bZ = ae._1 | |
2054 | - | if (if ((fX >= bZ)) | |
2055 | - | then (fZ > 0) | |
1936 | + | if ((cl == cl)) | |
1937 | + | then { | |
1938 | + | let fq = if ((size(bl) > 0)) | |
1939 | + | then valueOrErrorMessage(addressFromString(bl), "claim: invalid user") | |
1940 | + | else ex.caller | |
1941 | + | let bD = aM() | |
1942 | + | let eq = bD._1 | |
1943 | + | let eP = aA(eq) | |
1944 | + | let dl = [eP, aQ()] | |
1945 | + | let cL = (size(dl) - 1) | |
1946 | + | let fv = cM(fq) | |
1947 | + | let fs = fv._1 | |
1948 | + | let cO = fv._2 | |
1949 | + | func af (ag,fw) = { | |
1950 | + | let cd = ag._1 | |
1951 | + | if (if ((cL >= cd)) | |
1952 | + | then (fw > 0) | |
2056 | 1953 | else false) | |
2057 | 1954 | then { | |
2058 | - | let | |
2059 | - | $Tuple3(( | |
1955 | + | let fx = dl[cd] | |
1956 | + | $Tuple3((cd + 1), (ag._2 :+ 0), (ag._3 :+ ScriptTransfer(fq, fw, aC(fx)))) | |
2060 | 1957 | } | |
2061 | - | else $Tuple3(( | |
1958 | + | else $Tuple3((cd + 1), (ag._2 :+ fw), ag._3) | |
2062 | 1959 | } | |
2063 | 1960 | ||
2064 | - | let | |
2065 | - | let | |
2066 | - | let | |
2067 | - | let | |
2068 | - | func | |
2069 | - | then | |
2070 | - | else | |
2071 | - | ||
2072 | - | func | |
2073 | - | then | |
1961 | + | let fy = { | |
1962 | + | let ai = cO | |
1963 | + | let aj = size(ai) | |
1964 | + | let ak = $Tuple3(0, nil, nil) | |
1965 | + | func al (am,an) = if ((an >= aj)) | |
1966 | + | then am | |
1967 | + | else af(am, ai[an]) | |
1968 | + | ||
1969 | + | func ao (am,an) = if ((an >= aj)) | |
1970 | + | then am | |
2074 | 1971 | else throw("List size exceeds 11") | |
2075 | 1972 | ||
2076 | - | | |
1973 | + | ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
2077 | 1974 | } | |
2078 | - | let de = gb._1 | |
2079 | - | let gc = gb._2 | |
2080 | - | let gd = gb._3 | |
2081 | - | $Tuple2(((gd ++ removeByIndex(fQ, 0)) ++ bo(fO, gc)), unit) | |
2082 | - | } | |
2083 | - | else throw("Strict value is not equal to itself.") | |
2084 | - | } | |
2085 | - | ||
2086 | - | ||
2087 | - | ||
2088 | - | @Callable(eY) | |
1975 | + | let cT = fy._1 | |
1976 | + | let fz = fy._2 | |
1977 | + | let fA = fy._3 | |
1978 | + | $Tuple2(((fA ++ removeByIndex(fs, 0)) ++ bs(fq, fz)), unit) | |
1979 | + | } | |
1980 | + | else throw("Strict value is not equal to itself.") | |
1981 | + | } | |
1982 | + | ||
1983 | + | ||
1984 | + | ||
1985 | + | @Callable(ex) | |
1986 | + | func claimAll (bl) = { | |
1987 | + | let cl = if (bE()) | |
1988 | + | then bF() | |
1989 | + | else false | |
1990 | + | if ((cl == cl)) | |
1991 | + | then { | |
1992 | + | let fq = if ((size(bl) > 0)) | |
1993 | + | then valueOrErrorMessage(addressFromString(bl), "claimAll: invalid user") | |
1994 | + | else ex.caller | |
1995 | + | let bD = aM() | |
1996 | + | let eq = bD._1 | |
1997 | + | let eP = aA(eq) | |
1998 | + | let dl = [eP, aQ()] | |
1999 | + | let cL = (size(dl) - 1) | |
2000 | + | let fB = aS() | |
2001 | + | let dB = fB._1 | |
2002 | + | let dC = fB._2 | |
2003 | + | let fC = cM(fq) | |
2004 | + | let fs = fC._1 | |
2005 | + | let cO = fC._2 | |
2006 | + | func af (ag,fw) = { | |
2007 | + | let cd = ag._1 | |
2008 | + | if ((cd == 0)) | |
2009 | + | then $Tuple5((cd + 1), (ag._2 :+ 0), ag._3, ag._4, (ag._5 + fw)) | |
2010 | + | else if (if ((cd > 0)) | |
2011 | + | then (cL >= cd) | |
2012 | + | else false) | |
2013 | + | then { | |
2014 | + | let fD = (cd - 1) | |
2015 | + | let aT = dB[fD] | |
2016 | + | $Tuple5((cd + 1), (ag._2 :+ 0), (ag._3 :+ (aT + fw)), (ag._4 + fw), ag._5) | |
2017 | + | } | |
2018 | + | else $Tuple5((cd + 1), (ag._2 :+ 0), ag._3, ag._4, ag._5) | |
2019 | + | } | |
2020 | + | ||
2021 | + | let fE = { | |
2022 | + | let ai = cO | |
2023 | + | let aj = size(ai) | |
2024 | + | let ak = $Tuple5(0, nil, nil, 0, 0) | |
2025 | + | func al (am,an) = if ((an >= aj)) | |
2026 | + | then am | |
2027 | + | else af(am, ai[an]) | |
2028 | + | ||
2029 | + | func ao (am,an) = if ((an >= aj)) | |
2030 | + | then am | |
2031 | + | else throw("List size exceeds 11") | |
2032 | + | ||
2033 | + | ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
2034 | + | } | |
2035 | + | let cT = fE._1 | |
2036 | + | let fz = fE._2 | |
2037 | + | let fF = fE._3 | |
2038 | + | let dz = fE._4 | |
2039 | + | let fG = fE._5 | |
2040 | + | let eH = $Tuple10(bD._1, bD._2, (bD._3 + dz), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10) | |
2041 | + | $Tuple2((((([Reissue(eq, dz, true), ScriptTransfer(ex.caller, (dz + fG), eq)] ++ aO(eH)) ++ aU(fF)) ++ removeByIndex(fs, 0)) ++ bs(fq, fz)), unit) | |
2042 | + | } | |
2043 | + | else throw("Strict value is not equal to itself.") | |
2044 | + | } | |
2045 | + | ||
2046 | + | ||
2047 | + | ||
2048 | + | @Callable(ex) | |
2049 | + | func updatePoolFees (dd,de) = { | |
2050 | + | let cl = if (if (if (bz(ex.caller)) | |
2051 | + | then bE() | |
2052 | + | else false) | |
2053 | + | then U(dd, 0, d, "updatePoolFees: invalid lp fee") | |
2054 | + | else false) | |
2055 | + | then U(de, 0, d, "updatePoolFees: invalid protocol fee") | |
2056 | + | else false | |
2057 | + | if ((cl == cl)) | |
2058 | + | then { | |
2059 | + | let bD = aM() | |
2060 | + | let eH = $Tuple10(bD._1, bD._2, bD._3, dd, de, bD._6, bD._7, bD._8, bD._9, bD._10) | |
2061 | + | $Tuple2(aO(eH), unit) | |
2062 | + | } | |
2063 | + | else throw("Strict value is not equal to itself.") | |
2064 | + | } | |
2065 | + | ||
2066 | + | ||
2067 | + | ||
2068 | + | @Callable(ex) | |
2069 | + | func updatePoolParams (eB,cz,cA,eC) = { | |
2070 | + | let cl = if (if (if (if (if (bz(ex.caller)) | |
2071 | + | then bE() | |
2072 | + | else false) | |
2073 | + | then U(eB, 0, e, "updatePoolParams: invalid maxAllocationAmplifier") | |
2074 | + | else false) | |
2075 | + | then U(cz, 0, eB, "updatePoolParams: invalid weightAmplifier") | |
2076 | + | else false) | |
2077 | + | then U(cA, 0, c, "updatePoolParams: invalid disbalanceCoeff") | |
2078 | + | else false) | |
2079 | + | then U(eC, 0, c, "updatePoolParams: invalid feeMaxRate") | |
2080 | + | else false | |
2081 | + | if ((cl == cl)) | |
2082 | + | then { | |
2083 | + | let bD = aM() | |
2084 | + | let eH = $Tuple10(bD._1, bD._2, bD._3, bD._4, bD._5, eB, cz, cA, eC, bD._10) | |
2085 | + | $Tuple2(aO(eH), unit) | |
2086 | + | } | |
2087 | + | else throw("Strict value is not equal to itself.") | |
2088 | + | } | |
2089 | + | ||
2090 | + | ||
2091 | + | ||
2092 | + | @Callable(ex) | |
2093 | + | func migrateBalances () = { | |
2094 | + | let cl = if (bz(ex.caller)) | |
2095 | + | then bE() | |
2096 | + | else false | |
2097 | + | if ((cl == cl)) | |
2098 | + | then { | |
2099 | + | let bD = aM() | |
2100 | + | let fH = bD._3 | |
2101 | + | let fI = aS() | |
2102 | + | let dB = fI._1 | |
2103 | + | let dC = fI._2 | |
2104 | + | let fJ = max([(dC - fH), 0]) | |
2105 | + | let eH = $Tuple10(bD._1, bD._2, (fH + fJ), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10) | |
2106 | + | $Tuple2(aO(eH), unit) | |
2107 | + | } | |
2108 | + | else throw("Strict value is not equal to itself.") | |
2109 | + | } | |
2110 | + | ||
2111 | + | ||
2112 | + | ||
2113 | + | @Callable(ex) | |
2089 | 2114 | func pause () = { | |
2090 | - | let | |
2091 | - | then | |
2092 | - | else false) | |
2093 | - | then | |
2115 | + | let cl = if (if (bH(ex.caller)) | |
2116 | + | then bE() | |
2117 | + | else false) | |
2118 | + | then bF() | |
2094 | 2119 | else false | |
2095 | - | if (( | |
2096 | - | then $Tuple2( | |
2097 | - | else throw("Strict value is not equal to itself.") | |
2098 | - | } | |
2099 | - | ||
2100 | - | ||
2101 | - | ||
2102 | - | @Callable( | |
2120 | + | if ((cl == cl)) | |
2121 | + | then $Tuple2(aE(true), unit) | |
2122 | + | else throw("Strict value is not equal to itself.") | |
2123 | + | } | |
2124 | + | ||
2125 | + | ||
2126 | + | ||
2127 | + | @Callable(ex) | |
2103 | 2128 | func unpause () = { | |
2104 | - | let | |
2105 | - | then | |
2106 | - | else false) | |
2107 | - | then | |
2129 | + | let cl = if (if (bz(ex.caller)) | |
2130 | + | then bE() | |
2131 | + | else false) | |
2132 | + | then bG() | |
2108 | 2133 | else false | |
2109 | - | if (( | |
2110 | - | then $Tuple2( | |
2111 | - | else throw("Strict value is not equal to itself.") | |
2112 | - | } | |
2113 | - | ||
2114 | - | ||
2115 | - | ||
2116 | - | @Callable( | |
2117 | - | func updatePauser ( | |
2118 | - | let | |
2119 | - | then | |
2120 | - | else false) | |
2121 | - | then | |
2134 | + | if ((cl == cl)) | |
2135 | + | then $Tuple2(aE(false), unit) | |
2136 | + | else throw("Strict value is not equal to itself.") | |
2137 | + | } | |
2138 | + | ||
2139 | + | ||
2140 | + | ||
2141 | + | @Callable(ex) | |
2142 | + | func updatePauser (aI) = { | |
2143 | + | let cl = if (if (bz(ex.caller)) | |
2144 | + | then bE() | |
2145 | + | else false) | |
2146 | + | then N(aI, "updatePauser: invalid pauser") | |
2122 | 2147 | else false | |
2123 | - | if (( | |
2124 | - | then $Tuple2( | |
2125 | - | else throw("Strict value is not equal to itself.") | |
2126 | - | } | |
2127 | - | ||
2128 | - | ||
2129 | - | ||
2130 | - | @Callable( | |
2131 | - | func updateWatchdog ( | |
2132 | - | let | |
2133 | - | then | |
2134 | - | else false) | |
2135 | - | then | |
2136 | - | else false) | |
2137 | - | then | |
2148 | + | if ((cl == cl)) | |
2149 | + | then $Tuple2(aH(addressFromStringValue(aI)), unit) | |
2150 | + | else throw("Strict value is not equal to itself.") | |
2151 | + | } | |
2152 | + | ||
2153 | + | ||
2154 | + | ||
2155 | + | @Callable(ex) | |
2156 | + | func updateWatchdog (bv,by) = { | |
2157 | + | let cl = if (if (if (bz(ex.caller)) | |
2158 | + | then bE() | |
2159 | + | else false) | |
2160 | + | then N(bv, "updateWatchdog: invalid watchdog") | |
2161 | + | else false) | |
2162 | + | then U(by, 0, c, "updateWatchdog: invalid offset") | |
2138 | 2163 | else false | |
2139 | - | if (( | |
2140 | - | then $Tuple2(( | |
2141 | - | else throw("Strict value is not equal to itself.") | |
2142 | - | } | |
2143 | - | ||
2144 | - | ||
2145 | - | ||
2146 | - | @Callable( | |
2147 | - | func setMultisig ( | |
2148 | - | let | |
2149 | - | then | |
2164 | + | if ((cl == cl)) | |
2165 | + | then $Tuple2((bu(addressFromStringValue(bv)) ++ bx(by)), unit) | |
2166 | + | else throw("Strict value is not equal to itself.") | |
2167 | + | } | |
2168 | + | ||
2169 | + | ||
2170 | + | ||
2171 | + | @Callable(ex) | |
2172 | + | func setMultisig (aL) = { | |
2173 | + | let cl = if (bz(ex.caller)) | |
2174 | + | then N(aL, "setMultisig: invalid multisig") | |
2150 | 2175 | else false | |
2151 | - | if (( | |
2152 | - | then $Tuple2( | |
2153 | - | else throw("Strict value is not equal to itself.") | |
2154 | - | } | |
2155 | - | ||
2156 | - | ||
2157 | - | @Verifier( | |
2158 | - | func | |
2159 | - | let | |
2160 | - | if ($isInstanceOf( | |
2161 | - | then { | |
2162 | - | let | |
2163 | - | valueOrElse(getBoolean(addressFromStringValue( | |
2164 | - | } | |
2165 | - | else sigVerify( | |
2176 | + | if ((cl == cl)) | |
2177 | + | then $Tuple2(aK(addressFromStringValue(aL)), unit) | |
2178 | + | else throw("Strict value is not equal to itself.") | |
2179 | + | } | |
2180 | + | ||
2181 | + | ||
2182 | + | @Verifier(fK) | |
2183 | + | func fL () = { | |
2184 | + | let Q = getString(t) | |
2185 | + | if ($isInstanceOf(Q, "String")) | |
2186 | + | then { | |
2187 | + | let fM = Q | |
2188 | + | valueOrElse(getBoolean(addressFromStringValue(fM), makeString([u, toString(this), toBase58String(fK.id)], a)), false) | |
2189 | + | } | |
2190 | + | else sigVerify(fK.bodyBytes, fK.proofs[0], fK.senderPublicKey) | |
2166 | 2191 | } | |
2167 | 2192 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "__" | |
5 | 5 | ||
6 | 6 | let b = "waves" | |
7 | 7 | ||
8 | 8 | let c = 9223372036854775807 | |
9 | 9 | ||
10 | 10 | let d = 1000000 | |
11 | 11 | ||
12 | 12 | let e = 1000000 | |
13 | 13 | ||
14 | 14 | let f = 1000000 | |
15 | 15 | ||
16 | 16 | let g = 1000000 | |
17 | 17 | ||
18 | 18 | let h = 1000000 | |
19 | 19 | ||
20 | 20 | let i = 1000000 | |
21 | 21 | ||
22 | - | let j = | |
23 | - | ||
24 | - | let k = toBigInt( | |
22 | + | let j = toBigInt(1000000000000000000) | |
23 | + | ||
24 | + | let k = toBigInt(1000000000000) | |
25 | 25 | ||
26 | 26 | let l = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | |
27 | 27 | ||
28 | 28 | let m = (l :+ 0) | |
29 | 29 | ||
30 | - | let n = toBigInt(0) | |
31 | - | ||
32 | - | let o = [n, n, n, n, n, n, n, n, n, n, n] | |
33 | - | ||
34 | - | let p = 8 | |
35 | - | ||
36 | - | let q = 18 | |
37 | - | ||
38 | - | let r = split_51C("0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0", "_") | |
39 | - | ||
40 | - | let s = "MULTISIG" | |
41 | - | ||
42 | - | let t = "STATUS" | |
43 | - | ||
44 | - | let u = "PAUSED" | |
45 | - | ||
46 | - | let v = "PAUSER" | |
47 | - | ||
48 | - | let w = "STORAGE" | |
49 | - | ||
50 | - | let x = "ASSETS" | |
51 | - | ||
52 | - | let y = "ASSET_BALANCES" | |
53 | - | ||
54 | - | let z = "ASSET_WEIGHTS" | |
55 | - | ||
56 | - | let A = "LP_FEE" | |
57 | - | ||
58 | - | let B = "PROTOCOL_FEE" | |
59 | - | ||
60 | - | let C = "PRECISION" | |
61 | - | ||
62 | - | let D = "SIGMA_FEE_PER_LP" | |
63 | - | ||
64 | - | let E = "USER_SIGMA_FEE_PER_LP" | |
65 | - | ||
66 | - | let F = "USER_LP" | |
67 | - | ||
68 | - | let G = "TOTAL_LP" | |
69 | - | ||
70 | - | let H = "USER_PROFITS" | |
71 | - | ||
72 | - | let I = "WATCHDOG" | |
73 | - | ||
74 | - | let J = "WATCHDOG_OFFSET" | |
75 | - | ||
76 | - | let K = "WATCHDOG_HEIGHT" | |
77 | - | ||
78 | - | func L (M,N) = { | |
79 | - | let O = addressFromString(M) | |
80 | - | if ($isInstanceOf(O, "Address")) | |
81 | - | then { | |
82 | - | let P = O | |
30 | + | let n = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] | |
31 | + | ||
32 | + | let o = toBigInt(0) | |
33 | + | ||
34 | + | let p = [o, o, o, o, o, o, o, o, o, o, o] | |
35 | + | ||
36 | + | let q = 8 | |
37 | + | ||
38 | + | let r = 18 | |
39 | + | ||
40 | + | let s = split_51C("0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0", "_") | |
41 | + | ||
42 | + | let t = "MULTISIG" | |
43 | + | ||
44 | + | let u = "STATUS" | |
45 | + | ||
46 | + | let v = "PAUSED" | |
47 | + | ||
48 | + | let w = "PAUSER" | |
49 | + | ||
50 | + | let x = "STORAGE" | |
51 | + | ||
52 | + | let y = "ASSETS" | |
53 | + | ||
54 | + | let z = "ASSET_BALANCES" | |
55 | + | ||
56 | + | let A = "REWARD_BALANCES" | |
57 | + | ||
58 | + | let B = "ASSET_WEIGHTS" | |
59 | + | ||
60 | + | let C = "LP_FEE" | |
61 | + | ||
62 | + | let D = "PROTOCOL_FEE" | |
63 | + | ||
64 | + | let E = "PRECISION" | |
65 | + | ||
66 | + | let F = "SIGMA_FEE_PER_LP" | |
67 | + | ||
68 | + | let G = "USER_SIGMA_FEE_PER_LP" | |
69 | + | ||
70 | + | let H = "USER_LP" | |
71 | + | ||
72 | + | let I = "TOTAL_LP" | |
73 | + | ||
74 | + | let J = "USER_PROFITS" | |
75 | + | ||
76 | + | let K = "WATCHDOG" | |
77 | + | ||
78 | + | let L = "WATCHDOG_OFFSET" | |
79 | + | ||
80 | + | let M = "WATCHDOG_HEIGHT" | |
81 | + | ||
82 | + | func N (O,P) = { | |
83 | + | let Q = addressFromString(O) | |
84 | + | if ($isInstanceOf(Q, "Address")) | |
85 | + | then { | |
86 | + | let R = Q | |
83 | 87 | true | |
84 | 88 | } | |
85 | - | else throw( | |
86 | - | } | |
87 | - | ||
88 | - | ||
89 | - | func | |
89 | + | else throw(P) | |
90 | + | } | |
91 | + | ||
92 | + | ||
93 | + | func S (T,P) = if ((T == b)) | |
90 | 94 | then true | |
91 | 95 | else { | |
92 | - | let | |
93 | - | if ($isInstanceOf( | |
96 | + | let Q = assetInfo(fromBase58String(T)) | |
97 | + | if ($isInstanceOf(Q, "Asset")) | |
94 | 98 | then { | |
95 | - | let | |
99 | + | let R = Q | |
96 | 100 | true | |
97 | 101 | } | |
98 | - | else throw( | |
99 | - | } | |
100 | - | ||
101 | - | ||
102 | - | func | |
102 | + | else throw(P) | |
103 | + | } | |
104 | + | ||
105 | + | ||
106 | + | func U (V,W,X,P) = if (if ((W > V)) | |
103 | 107 | then true | |
104 | - | else ( | |
105 | - | then throw( | |
108 | + | else (V > X)) | |
109 | + | then throw(P) | |
106 | 110 | else true | |
107 | 111 | ||
108 | 112 | ||
109 | - | func | |
110 | - | then throw( | |
113 | + | func Y (V,Z,P) = if ((V != Z)) | |
114 | + | then throw(P) | |
111 | 115 | else true | |
112 | 116 | ||
113 | 117 | ||
114 | - | func | |
115 | - | then throw( | |
118 | + | func aa (ab,ac,P) = if ((ab != ac)) | |
119 | + | then throw(P) | |
116 | 120 | else true | |
117 | 121 | ||
118 | 122 | ||
119 | - | func | |
120 | - | then throw( | |
123 | + | func ad (ab,ac,P) = if ((ab == ac)) | |
124 | + | then throw(P) | |
121 | 125 | else true | |
122 | 126 | ||
123 | 127 | ||
124 | - | func | |
125 | - | func | |
126 | - | let | |
127 | - | if ($isInstanceOf( | |
128 | + | func ae (V,W,X,P) = { | |
129 | + | func af (ag,ah) = { | |
130 | + | let Q = parseInt(ah) | |
131 | + | if ($isInstanceOf(Q, "Int")) | |
128 | 132 | then { | |
129 | - | let | |
130 | - | if ( | |
131 | - | then | |
133 | + | let R = Q | |
134 | + | if (ag) | |
135 | + | then U(R, W, X, P) | |
132 | 136 | else false | |
133 | 137 | } | |
134 | - | else throw( | |
135 | - | } | |
136 | - | ||
137 | - | let | |
138 | - | let | |
139 | - | let | |
140 | - | func | |
141 | - | then | |
142 | - | else | |
143 | - | ||
144 | - | func | |
145 | - | then | |
138 | + | else throw(P) | |
139 | + | } | |
140 | + | ||
141 | + | let ai = V | |
142 | + | let aj = size(ai) | |
143 | + | let ak = true | |
144 | + | func al (am,an) = if ((an >= aj)) | |
145 | + | then am | |
146 | + | else af(am, ai[an]) | |
147 | + | ||
148 | + | func ao (am,an) = if ((an >= aj)) | |
149 | + | then am | |
146 | 150 | else throw("List size exceeds 10") | |
147 | 151 | ||
148 | - | | |
149 | - | } | |
150 | - | ||
151 | - | ||
152 | - | func | |
153 | - | func | |
154 | - | then | |
152 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
153 | + | } | |
154 | + | ||
155 | + | ||
156 | + | func ap (aq,P) = { | |
157 | + | func af (ag,ah) = if (ag) | |
158 | + | then S(ah, P) | |
155 | 159 | else false | |
156 | 160 | ||
157 | - | let | |
158 | - | let | |
159 | - | let | |
160 | - | func | |
161 | - | then | |
162 | - | else | |
163 | - | ||
164 | - | func | |
165 | - | then | |
161 | + | let ai = aq | |
162 | + | let aj = size(ai) | |
163 | + | let ak = true | |
164 | + | func al (am,an) = if ((an >= aj)) | |
165 | + | then am | |
166 | + | else af(am, ai[an]) | |
167 | + | ||
168 | + | func ao (am,an) = if ((an >= aj)) | |
169 | + | then am | |
166 | 170 | else throw("List size exceeds 10") | |
167 | 171 | ||
168 | - | | |
169 | - | } | |
170 | - | ||
171 | - | ||
172 | - | func | |
173 | - | then throw( | |
172 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
173 | + | } | |
174 | + | ||
175 | + | ||
176 | + | func ar (ab,ac,P) = if ((ab != ac)) | |
177 | + | then throw(P) | |
174 | 178 | else true | |
175 | 179 | ||
176 | 180 | ||
177 | - | func | |
181 | + | func as (V,P) = if (if ((4 > size(V))) | |
178 | 182 | then true | |
179 | - | else (size( | |
180 | - | then throw( | |
183 | + | else (size(V) > 16)) | |
184 | + | then throw(P) | |
181 | 185 | else true | |
182 | 186 | ||
183 | 187 | ||
184 | - | func | |
185 | - | then throw( | |
188 | + | func at (V,P) = if ((size(V) > 1000)) | |
189 | + | then throw(P) | |
186 | 190 | else true | |
187 | 191 | ||
188 | 192 | ||
189 | - | func | |
193 | + | func au (V,P) = if (if ((0 > V)) | |
190 | 194 | then true | |
191 | - | else ( | |
192 | - | then throw( | |
195 | + | else (V > 8)) | |
196 | + | then throw(P) | |
193 | 197 | else true | |
194 | 198 | ||
195 | 199 | ||
196 | - | func | |
197 | - | let | |
198 | - | if ($isInstanceOf( | |
199 | - | then { | |
200 | - | let | |
201 | - | if (( | |
202 | - | then throw(( | |
203 | - | else if (( | |
204 | - | then throw(( | |
200 | + | func av (aw,T,ax,P) = { | |
201 | + | let Q = aw.assetId | |
202 | + | if ($isInstanceOf(Q, "ByteVector")) | |
203 | + | then { | |
204 | + | let R = Q | |
205 | + | if ((T != toBase58String(R))) | |
206 | + | then throw((P + ": asset")) | |
207 | + | else if ((ax > aw.amount)) | |
208 | + | then throw((P + ": amount")) | |
205 | 209 | else true | |
206 | 210 | } | |
207 | - | else throw(( | |
208 | - | } | |
209 | - | ||
210 | - | ||
211 | - | func | |
212 | - | then throw( | |
211 | + | else throw((P + ": asset")) | |
212 | + | } | |
213 | + | ||
214 | + | ||
215 | + | func ay (az,V,P) = if (!(containsElement(az, V))) | |
216 | + | then throw(P) | |
213 | 217 | else true | |
214 | 218 | ||
215 | 219 | ||
216 | - | func | |
217 | - | let | |
218 | - | if ($isInstanceOf( | |
219 | - | then { | |
220 | - | let | |
221 | - | toBase58String( | |
220 | + | func aA (aB) = { | |
221 | + | let Q = aB | |
222 | + | if ($isInstanceOf(Q, "ByteVector")) | |
223 | + | then { | |
224 | + | let R = Q | |
225 | + | toBase58String(R) | |
222 | 226 | } | |
223 | 227 | else b | |
224 | 228 | } | |
225 | 229 | ||
226 | 230 | ||
227 | - | func | |
231 | + | func aC (aB) = if (if ((aB == b)) | |
228 | 232 | then true | |
229 | - | else ( | |
233 | + | else (aB == "")) | |
230 | 234 | then unit | |
231 | - | else fromBase58String( | |
232 | - | ||
233 | - | ||
234 | - | func | |
235 | - | let | |
236 | - | if ($isInstanceOf( | |
237 | - | then { | |
238 | - | let | |
239 | - | | |
235 | + | else fromBase58String(aB) | |
236 | + | ||
237 | + | ||
238 | + | func aD () = { | |
239 | + | let Q = getBoolean(v) | |
240 | + | if ($isInstanceOf(Q, "Boolean")) | |
241 | + | then { | |
242 | + | let R = Q | |
243 | + | R | |
240 | 244 | } | |
241 | 245 | else false | |
242 | 246 | } | |
243 | 247 | ||
244 | 248 | ||
245 | - | func | |
246 | - | ||
247 | - | ||
248 | - | func | |
249 | - | let | |
250 | - | if ($isInstanceOf( | |
251 | - | then { | |
252 | - | let | |
253 | - | addressFromStringValue( | |
249 | + | func aE (aF) = [BooleanEntry(v, aF)] | |
250 | + | ||
251 | + | ||
252 | + | func aG () = { | |
253 | + | let Q = getString(w) | |
254 | + | if ($isInstanceOf(Q, "String")) | |
255 | + | then { | |
256 | + | let R = Q | |
257 | + | addressFromStringValue(R) | |
254 | 258 | } | |
255 | 259 | else Address(base58'') | |
256 | 260 | } | |
257 | 261 | ||
258 | 262 | ||
259 | - | func | |
260 | - | ||
261 | - | ||
262 | - | func | |
263 | - | let | |
264 | - | if ($isInstanceOf( | |
265 | - | then { | |
266 | - | let | |
267 | - | addressFromStringValue( | |
263 | + | func aH (aI) = [StringEntry(w, toString(aI))] | |
264 | + | ||
265 | + | ||
266 | + | func aJ () = { | |
267 | + | let Q = getString(t) | |
268 | + | if ($isInstanceOf(Q, "String")) | |
269 | + | then { | |
270 | + | let R = Q | |
271 | + | addressFromStringValue(R) | |
268 | 272 | } | |
269 | 273 | else Address(base58'') | |
270 | 274 | } | |
271 | 275 | ||
272 | 276 | ||
273 | - | func | |
274 | - | ||
275 | - | ||
276 | - | func | |
277 | - | let | |
278 | - | if ($isInstanceOf( | |
279 | - | then { | |
280 | - | let | |
281 | - | let | |
282 | - | $Tuple10(fromBase58String( | |
277 | + | func aK (aL) = [StringEntry(t, toString(aL))] | |
278 | + | ||
279 | + | ||
280 | + | func aM () = { | |
281 | + | let Q = getString(x) | |
282 | + | if ($isInstanceOf(Q, "String")) | |
283 | + | then { | |
284 | + | let R = Q | |
285 | + | let aN = split(R, a) | |
286 | + | $Tuple10(fromBase58String(aN[0]), (aN[1] == "1"), parseIntValue(aN[2]), parseIntValue(aN[3]), parseIntValue(aN[4]), parseIntValue(aN[5]), parseIntValue(aN[6]), parseIntValue(aN[7]), parseIntValue(aN[8]), addressFromStringValue(aN[9])) | |
283 | 287 | } | |
284 | 288 | else $Tuple10(base58'', false, 0, 0, 0, 0, 0, 0, 0, Address(base58'')) | |
285 | 289 | } | |
286 | 290 | ||
287 | 291 | ||
288 | - | func | |
292 | + | func aO (aP) = [StringEntry(x, makeString([toBase58String(aP._1), if (aP._2) | |
289 | 293 | then "1" | |
290 | - | else "0", toString( | |
291 | - | ||
292 | - | ||
293 | - | func | |
294 | - | let | |
295 | - | if ($isInstanceOf( | |
296 | - | then { | |
297 | - | let | |
298 | - | if ((size( | |
299 | - | then split_51C( | |
294 | + | else "0", toString(aP._3), toString(aP._4), toString(aP._5), toString(aP._6), toString(aP._7), toString(aP._8), toString(aP._9), toString(aP._10)], a))] | |
295 | + | ||
296 | + | ||
297 | + | func aQ () = { | |
298 | + | let Q = getString(y) | |
299 | + | if ($isInstanceOf(Q, "String")) | |
300 | + | then { | |
301 | + | let R = Q | |
302 | + | if ((size(R) > 0)) | |
303 | + | then split_51C(R, a) | |
300 | 304 | else nil | |
301 | 305 | } | |
302 | 306 | else nil | |
303 | 307 | } | |
304 | 308 | ||
305 | 309 | ||
306 | - | func | |
307 | - | ||
308 | - | ||
309 | - | func | |
310 | - | func | |
311 | - | let | |
312 | - | $Tuple2(( | |
313 | - | } | |
314 | - | ||
315 | - | let | |
316 | - | if ($isInstanceOf( | |
317 | - | then { | |
318 | - | let | |
319 | - | if ((size( | |
310 | + | func aR (aq) = [StringEntry(y, makeString_11C(aq, a))] | |
311 | + | ||
312 | + | ||
313 | + | func aS () = { | |
314 | + | func af (ag,ah) = { | |
315 | + | let aT = parseIntValue(ah) | |
316 | + | $Tuple2((ag._1 :+ aT), (ag._2 + aT)) | |
317 | + | } | |
318 | + | ||
319 | + | let Q = getString(z) | |
320 | + | if ($isInstanceOf(Q, "String")) | |
321 | + | then { | |
322 | + | let R = Q | |
323 | + | if ((size(R) > 0)) | |
320 | 324 | then { | |
321 | - | let | |
322 | - | let | |
323 | - | let | |
324 | - | func | |
325 | - | then | |
326 | - | else | |
327 | - | ||
328 | - | func | |
329 | - | then | |
325 | + | let ai = split_51C(R, a) | |
326 | + | let aj = size(ai) | |
327 | + | let ak = $Tuple2(nil, 0) | |
328 | + | func al (am,an) = if ((an >= aj)) | |
329 | + | then am | |
330 | + | else af(am, ai[an]) | |
331 | + | ||
332 | + | func ao (am,an) = if ((an >= aj)) | |
333 | + | then am | |
330 | 334 | else throw("List size exceeds 10") | |
331 | 335 | ||
332 | - | | |
336 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
333 | 337 | } | |
334 | 338 | else $Tuple2(l, 0) | |
335 | 339 | } | |
336 | 340 | else $Tuple2(l, 0) | |
337 | 341 | } | |
338 | 342 | ||
339 | 343 | ||
340 | - | func | |
341 | - | func | |
342 | - | ||
343 | - | [StringEntry( | |
344 | - | let | |
345 | - | let | |
346 | - | let | |
347 | - | func | |
348 | - | then | |
349 | - | else | |
350 | - | ||
351 | - | func | |
352 | - | then | |
344 | + | func aU (aV) = { | |
345 | + | func af (ag,ah) = (ag :+ toString(ah)) | |
346 | + | ||
347 | + | [StringEntry(z, makeString_11C({ | |
348 | + | let ai = aV | |
349 | + | let aj = size(ai) | |
350 | + | let ak = nil | |
351 | + | func al (am,an) = if ((an >= aj)) | |
352 | + | then am | |
353 | + | else af(am, ai[an]) | |
354 | + | ||
355 | + | func ao (am,an) = if ((an >= aj)) | |
356 | + | then am | |
353 | 357 | else throw("List size exceeds 10") | |
354 | 358 | ||
355 | - | | |
359 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
356 | 360 | }, a))] | |
357 | 361 | } | |
358 | 362 | ||
359 | 363 | ||
360 | - | func | |
361 | - | func | |
362 | - | let | |
363 | - | | |
364 | - | } | |
365 | - | ||
366 | - | let | |
367 | - | if ($isInstanceOf( | |
368 | - | then { | |
369 | - | let | |
370 | - | if ((size( | |
364 | + | func aW () = { | |
365 | + | func af (ag,ah) = { | |
366 | + | let aT = parseIntValue(ah) | |
367 | + | (ag :+ aT) | |
368 | + | } | |
369 | + | ||
370 | + | let Q = getString(A) | |
371 | + | if ($isInstanceOf(Q, "String")) | |
372 | + | then { | |
373 | + | let R = Q | |
374 | + | if ((size(R) > 0)) | |
371 | 375 | then { | |
372 | - | let | |
373 | - | let | |
374 | - | let | |
375 | - | func | |
376 | - | then | |
377 | - | else | |
378 | - | ||
379 | - | func | |
380 | - | then | |
376 | + | let ai = split_51C(R, a) | |
377 | + | let aj = size(ai) | |
378 | + | let ak = nil | |
379 | + | func al (am,an) = if ((an >= aj)) | |
380 | + | then am | |
381 | + | else af(am, ai[an]) | |
382 | + | ||
383 | + | func ao (am,an) = if ((an >= aj)) | |
384 | + | then am | |
381 | 385 | else throw("List size exceeds 10") | |
382 | 386 | ||
383 | - | am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
387 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
388 | + | } | |
389 | + | else l | |
390 | + | } | |
391 | + | else l | |
392 | + | } | |
393 | + | ||
394 | + | ||
395 | + | func aX (aV) = { | |
396 | + | func af (ag,ah) = (ag :+ toString(ah)) | |
397 | + | ||
398 | + | [StringEntry(A, makeString_11C({ | |
399 | + | let ai = aV | |
400 | + | let aj = size(ai) | |
401 | + | let ak = nil | |
402 | + | func al (am,an) = if ((an >= aj)) | |
403 | + | then am | |
404 | + | else af(am, ai[an]) | |
405 | + | ||
406 | + | func ao (am,an) = if ((an >= aj)) | |
407 | + | then am | |
408 | + | else throw("List size exceeds 10") | |
409 | + | ||
410 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
411 | + | }, a))] | |
412 | + | } | |
413 | + | ||
414 | + | ||
415 | + | func aY () = { | |
416 | + | func af (ag,ah) = { | |
417 | + | let aZ = parseIntValue(ah) | |
418 | + | $Tuple2((ag._1 :+ aZ), (ag._2 + aZ)) | |
419 | + | } | |
420 | + | ||
421 | + | let Q = getString(B) | |
422 | + | if ($isInstanceOf(Q, "String")) | |
423 | + | then { | |
424 | + | let R = Q | |
425 | + | if ((size(R) > 0)) | |
426 | + | then { | |
427 | + | let ai = split_51C(R, a) | |
428 | + | let aj = size(ai) | |
429 | + | let ak = $Tuple2(nil, 0) | |
430 | + | func al (am,an) = if ((an >= aj)) | |
431 | + | then am | |
432 | + | else af(am, ai[an]) | |
433 | + | ||
434 | + | func ao (am,an) = if ((an >= aj)) | |
435 | + | then am | |
436 | + | else throw("List size exceeds 10") | |
437 | + | ||
438 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
384 | 439 | } | |
385 | 440 | else $Tuple2(l, 0) | |
386 | 441 | } | |
387 | 442 | else $Tuple2(l, 0) | |
388 | 443 | } | |
389 | 444 | ||
390 | 445 | ||
391 | - | func | |
392 | - | func | |
393 | - | ||
394 | - | [StringEntry( | |
395 | - | let | |
396 | - | let | |
397 | - | let | |
398 | - | func | |
399 | - | then | |
400 | - | else | |
401 | - | ||
402 | - | func | |
403 | - | then | |
446 | + | func ba (bb) = { | |
447 | + | func af (ag,ah) = (ag :+ toString(ah)) | |
448 | + | ||
449 | + | [StringEntry(B, makeString_11C({ | |
450 | + | let ai = bb | |
451 | + | let aj = size(ai) | |
452 | + | let ak = nil | |
453 | + | func al (am,an) = if ((an >= aj)) | |
454 | + | then am | |
455 | + | else af(am, ai[an]) | |
456 | + | ||
457 | + | func ao (am,an) = if ((an >= aj)) | |
458 | + | then am | |
404 | 459 | else throw("List size exceeds 10") | |
405 | 460 | ||
406 | - | | |
461 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
407 | 462 | }, a))] | |
408 | 463 | } | |
409 | 464 | ||
410 | 465 | ||
411 | - | func | |
412 | - | let | |
413 | - | if ($isInstanceOf( | |
414 | - | then { | |
415 | - | let | |
416 | - | | |
466 | + | func bc (T) = { | |
467 | + | let Q = getInteger(makeString([C, T], a)) | |
468 | + | if ($isInstanceOf(Q, "Int")) | |
469 | + | then { | |
470 | + | let R = Q | |
471 | + | R | |
417 | 472 | } | |
418 | 473 | else 0 | |
419 | 474 | } | |
420 | 475 | ||
421 | 476 | ||
422 | - | func | |
423 | - | ||
424 | - | ||
425 | - | func | |
426 | - | let | |
427 | - | if ($isInstanceOf( | |
428 | - | then { | |
429 | - | let | |
430 | - | | |
477 | + | func bd (T,V) = [IntegerEntry(makeString([C, T], a), V)] | |
478 | + | ||
479 | + | ||
480 | + | func be (T) = { | |
481 | + | let Q = getInteger(makeString([D, T], a)) | |
482 | + | if ($isInstanceOf(Q, "Int")) | |
483 | + | then { | |
484 | + | let R = Q | |
485 | + | R | |
431 | 486 | } | |
432 | 487 | else 0 | |
433 | 488 | } | |
434 | 489 | ||
435 | 490 | ||
436 | - | func | |
437 | - | ||
438 | - | ||
439 | - | func | |
440 | - | let | |
441 | - | if ($isInstanceOf( | |
442 | - | then { | |
443 | - | let | |
444 | - | | |
491 | + | func bf (T,V) = [IntegerEntry(makeString([D, T], a), V)] | |
492 | + | ||
493 | + | ||
494 | + | func bg () = { | |
495 | + | let Q = getInteger(E) | |
496 | + | if ($isInstanceOf(Q, "Int")) | |
497 | + | then { | |
498 | + | let R = Q | |
499 | + | R | |
445 | 500 | } | |
446 | 501 | else 0 | |
447 | 502 | } | |
448 | 503 | ||
449 | 504 | ||
450 | - | func | |
451 | - | ||
452 | - | ||
453 | - | func | |
454 | - | func | |
455 | - | ||
456 | - | let | |
457 | - | if ($isInstanceOf( | |
458 | - | then { | |
459 | - | let | |
460 | - | if ((size( | |
505 | + | func bh (V) = [IntegerEntry(E, V)] | |
506 | + | ||
507 | + | ||
508 | + | func bi () = { | |
509 | + | func af (ag,ah) = (ag :+ parseBigIntValue(ah)) | |
510 | + | ||
511 | + | let Q = getString(F) | |
512 | + | if ($isInstanceOf(Q, "String")) | |
513 | + | then { | |
514 | + | let R = Q | |
515 | + | if ((size(R) > 0)) | |
461 | 516 | then { | |
462 | - | let | |
463 | - | let | |
464 | - | let | |
465 | - | func | |
466 | - | then | |
467 | - | else | |
468 | - | ||
469 | - | func | |
470 | - | then | |
517 | + | let ai = split_51C(R, a) | |
518 | + | let aj = size(ai) | |
519 | + | let ak = nil | |
520 | + | func al (am,an) = if ((an >= aj)) | |
521 | + | then am | |
522 | + | else af(am, ai[an]) | |
523 | + | ||
524 | + | func ao (am,an) = if ((an >= aj)) | |
525 | + | then am | |
471 | 526 | else throw("List size exceeds 11") | |
472 | 527 | ||
473 | - | | |
528 | + | ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
474 | 529 | } | |
475 | - | else | |
476 | - | } | |
477 | - | else | |
478 | - | } | |
479 | - | ||
480 | - | ||
481 | - | func | |
482 | - | func | |
483 | - | ||
484 | - | [StringEntry( | |
485 | - | let | |
486 | - | let | |
487 | - | let | |
488 | - | func | |
489 | - | then | |
490 | - | else | |
491 | - | ||
492 | - | func | |
493 | - | then | |
530 | + | else p | |
531 | + | } | |
532 | + | else p | |
533 | + | } | |
534 | + | ||
535 | + | ||
536 | + | func bj (V) = { | |
537 | + | func af (ag,ah) = (ag :+ toString(ah)) | |
538 | + | ||
539 | + | [StringEntry(F, makeString_11C({ | |
540 | + | let ai = V | |
541 | + | let aj = size(ai) | |
542 | + | let ak = nil | |
543 | + | func al (am,an) = if ((an >= aj)) | |
544 | + | then am | |
545 | + | else af(am, ai[an]) | |
546 | + | ||
547 | + | func ao (am,an) = if ((an >= aj)) | |
548 | + | then am | |
494 | 549 | else throw("List size exceeds 11") | |
495 | 550 | ||
496 | - | | |
551 | + | ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
497 | 552 | }, a))] | |
498 | 553 | } | |
499 | 554 | ||
500 | 555 | ||
501 | - | func | |
502 | - | func | |
503 | - | ||
504 | - | let | |
505 | - | if ($isInstanceOf( | |
506 | - | then { | |
507 | - | let | |
508 | - | if ((size( | |
556 | + | func bk (bl) = { | |
557 | + | func af (ag,ah) = (ag :+ parseBigIntValue(ah)) | |
558 | + | ||
559 | + | let Q = getString(makeString([G, toString(bl)], a)) | |
560 | + | if ($isInstanceOf(Q, "String")) | |
561 | + | then { | |
562 | + | let R = Q | |
563 | + | if ((size(R) > 0)) | |
509 | 564 | then { | |
510 | - | let | |
511 | - | let | |
512 | - | let | |
513 | - | func | |
514 | - | then | |
515 | - | else | |
516 | - | ||
517 | - | func | |
518 | - | then | |
565 | + | let ai = split_51C(R, a) | |
566 | + | let aj = size(ai) | |
567 | + | let ak = nil | |
568 | + | func al (am,an) = if ((an >= aj)) | |
569 | + | then am | |
570 | + | else af(am, ai[an]) | |
571 | + | ||
572 | + | func ao (am,an) = if ((an >= aj)) | |
573 | + | then am | |
519 | 574 | else throw("List size exceeds 11") | |
520 | 575 | ||
521 | - | | |
576 | + | ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
522 | 577 | } | |
523 | - | else | |
524 | - | } | |
525 | - | else | |
526 | - | } | |
527 | - | ||
528 | - | ||
529 | - | func | |
530 | - | func | |
531 | - | ||
532 | - | [StringEntry(makeString([ | |
533 | - | let | |
534 | - | let | |
535 | - | let | |
536 | - | func | |
537 | - | then | |
538 | - | else | |
539 | - | ||
540 | - | func | |
541 | - | then | |
578 | + | else p | |
579 | + | } | |
580 | + | else p | |
581 | + | } | |
582 | + | ||
583 | + | ||
584 | + | func bm (bl,V) = { | |
585 | + | func af (ag,ah) = (ag :+ toString(ah)) | |
586 | + | ||
587 | + | [StringEntry(makeString([G, toString(bl)], a), makeString_11C({ | |
588 | + | let ai = V | |
589 | + | let aj = size(ai) | |
590 | + | let ak = nil | |
591 | + | func al (am,an) = if ((an >= aj)) | |
592 | + | then am | |
593 | + | else af(am, ai[an]) | |
594 | + | ||
595 | + | func ao (am,an) = if ((an >= aj)) | |
596 | + | then am | |
542 | 597 | else throw("List size exceeds 11") | |
543 | 598 | ||
544 | - | | |
599 | + | ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
545 | 600 | }, a))] | |
546 | 601 | } | |
547 | 602 | ||
548 | 603 | ||
549 | - | func | |
550 | - | let | |
551 | - | if ($isInstanceOf( | |
552 | - | then { | |
553 | - | let | |
554 | - | | |
604 | + | func bn (O) = { | |
605 | + | let Q = getInteger(makeString([H, toString(O)], a)) | |
606 | + | if ($isInstanceOf(Q, "Int")) | |
607 | + | then { | |
608 | + | let R = Q | |
609 | + | R | |
555 | 610 | } | |
556 | 611 | else 0 | |
557 | 612 | } | |
558 | 613 | ||
559 | 614 | ||
560 | - | func | |
561 | - | ||
562 | - | ||
563 | - | func | |
564 | - | let | |
565 | - | if ($isInstanceOf( | |
566 | - | then { | |
567 | - | let | |
568 | - | | |
615 | + | func bo (O,V) = [IntegerEntry(makeString([H, toString(O)], a), V)] | |
616 | + | ||
617 | + | ||
618 | + | func bp () = { | |
619 | + | let Q = getInteger(I) | |
620 | + | if ($isInstanceOf(Q, "Int")) | |
621 | + | then { | |
622 | + | let R = Q | |
623 | + | R | |
569 | 624 | } | |
570 | 625 | else 0 | |
571 | 626 | } | |
572 | 627 | ||
573 | 628 | ||
574 | - | func | |
575 | - | ||
576 | - | ||
577 | - | func | |
578 | - | func | |
579 | - | ||
580 | - | let | |
581 | - | if ($isInstanceOf( | |
582 | - | then { | |
583 | - | let | |
584 | - | if ((size( | |
629 | + | func bq (V) = [IntegerEntry(I, V)] | |
630 | + | ||
631 | + | ||
632 | + | func br (bl) = { | |
633 | + | func af (ag,ah) = (ag :+ parseIntValue(ah)) | |
634 | + | ||
635 | + | let Q = getString(makeString([J, toString(bl)], a)) | |
636 | + | if ($isInstanceOf(Q, "String")) | |
637 | + | then { | |
638 | + | let R = Q | |
639 | + | if ((size(R) > 0)) | |
585 | 640 | then { | |
586 | - | let | |
587 | - | let | |
588 | - | let | |
589 | - | func | |
590 | - | then | |
591 | - | else | |
592 | - | ||
593 | - | func | |
594 | - | then | |
641 | + | let ai = split_51C(R, a) | |
642 | + | let aj = size(ai) | |
643 | + | let ak = nil | |
644 | + | func al (am,an) = if ((an >= aj)) | |
645 | + | then am | |
646 | + | else af(am, ai[an]) | |
647 | + | ||
648 | + | func ao (am,an) = if ((an >= aj)) | |
649 | + | then am | |
595 | 650 | else throw("List size exceeds 11") | |
596 | 651 | ||
597 | - | | |
652 | + | ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
598 | 653 | } | |
599 | 654 | else m | |
600 | 655 | } | |
601 | 656 | else m | |
602 | 657 | } | |
603 | 658 | ||
604 | 659 | ||
605 | - | func | |
606 | - | func | |
607 | - | ||
608 | - | [StringEntry(makeString([ | |
609 | - | let | |
610 | - | let | |
611 | - | let | |
612 | - | func | |
613 | - | then | |
614 | - | else | |
615 | - | ||
616 | - | func | |
617 | - | then | |
660 | + | func bs (bl,V) = { | |
661 | + | func af (ag,ah) = (ag :+ toString(ah)) | |
662 | + | ||
663 | + | [StringEntry(makeString([J, toString(bl)], a), makeString_11C({ | |
664 | + | let ai = V | |
665 | + | let aj = size(ai) | |
666 | + | let ak = nil | |
667 | + | func al (am,an) = if ((an >= aj)) | |
668 | + | then am | |
669 | + | else af(am, ai[an]) | |
670 | + | ||
671 | + | func ao (am,an) = if ((an >= aj)) | |
672 | + | then am | |
618 | 673 | else throw("List size exceeds 11") | |
619 | 674 | ||
620 | - | | |
675 | + | ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
621 | 676 | }, a))] | |
622 | 677 | } | |
623 | 678 | ||
624 | 679 | ||
625 | - | func | |
626 | - | let | |
627 | - | if ($isInstanceOf( | |
628 | - | then { | |
629 | - | let | |
630 | - | addressFromStringValue( | |
680 | + | func bt () = { | |
681 | + | let Q = getString(K) | |
682 | + | if ($isInstanceOf(Q, "String")) | |
683 | + | then { | |
684 | + | let R = Q | |
685 | + | addressFromStringValue(R) | |
631 | 686 | } | |
632 | 687 | else Address(base58'') | |
633 | 688 | } | |
634 | 689 | ||
635 | 690 | ||
636 | - | func | |
637 | - | ||
638 | - | ||
639 | - | func | |
640 | - | let | |
641 | - | if ($isInstanceOf( | |
642 | - | then { | |
643 | - | let | |
644 | - | | |
691 | + | func bu (bv) = [StringEntry(K, toString(bv))] | |
692 | + | ||
693 | + | ||
694 | + | func bw () = { | |
695 | + | let Q = getInteger(L) | |
696 | + | if ($isInstanceOf(Q, "Int")) | |
697 | + | then { | |
698 | + | let R = Q | |
699 | + | R | |
645 | 700 | } | |
646 | 701 | else 0 | |
647 | 702 | } | |
648 | 703 | ||
649 | 704 | ||
650 | - | func | |
651 | - | ||
652 | - | ||
653 | - | func | |
705 | + | func bx (by) = [IntegerEntry(L, by)] | |
706 | + | ||
707 | + | ||
708 | + | func bz (bA) = if ((bA != this)) | |
654 | 709 | then throw("_onlyThisContract: revert") | |
655 | 710 | else true | |
656 | 711 | ||
657 | 712 | ||
658 | - | func | |
713 | + | func bB () = if ((aJ() == Address(base58''))) | |
659 | 714 | then throw("_whenMultisigSet: revert") | |
660 | 715 | else true | |
661 | 716 | ||
662 | 717 | ||
663 | - | func | |
664 | - | let | |
665 | - | if (( | |
718 | + | func bC () = { | |
719 | + | let bD = aM() | |
720 | + | if ((bD._1 != base58'')) | |
666 | 721 | then throw("_whenNotInitialized: revert") | |
667 | 722 | else true | |
668 | 723 | } | |
669 | 724 | ||
670 | 725 | ||
671 | - | func | |
672 | - | let | |
673 | - | if (( | |
726 | + | func bE () = { | |
727 | + | let bD = aM() | |
728 | + | if ((bD._1 == base58'')) | |
674 | 729 | then throw("_whenInitialized: revert") | |
675 | 730 | else true | |
676 | 731 | } | |
677 | 732 | ||
678 | 733 | ||
679 | - | func | |
734 | + | func bF () = if (aD()) | |
680 | 735 | then throw("_whenNotPaused: revert") | |
681 | 736 | else true | |
682 | 737 | ||
683 | 738 | ||
684 | - | func | |
739 | + | func bG () = if (!(aD())) | |
685 | 740 | then throw("_whenPaused: revert") | |
686 | 741 | else true | |
687 | 742 | ||
688 | 743 | ||
689 | - | func | |
744 | + | func bH (bA) = if ((bA != aG())) | |
690 | 745 | then throw("_onlyPauser: revert") | |
691 | 746 | else true | |
692 | 747 | ||
693 | 748 | ||
694 | - | func | |
695 | - | let | |
696 | - | let | |
697 | - | if ($isInstanceOf( | |
749 | + | func bI () = { | |
750 | + | let bJ = { | |
751 | + | let Q = getInteger(bt(), M) | |
752 | + | if ($isInstanceOf(Q, "Int")) | |
698 | 753 | then { | |
699 | - | let | |
700 | - | ( | |
754 | + | let R = Q | |
755 | + | (R + bw()) | |
701 | 756 | } | |
702 | 757 | else 0 | |
703 | 758 | } | |
704 | - | if ((height > | |
759 | + | if ((height > bJ)) | |
705 | 760 | then throw("_checkWatchdog: revert") | |
706 | 761 | else true | |
707 | 762 | } | |
708 | 763 | ||
709 | 764 | ||
710 | - | func | |
711 | - | let | |
712 | - | if ($isInstanceOf( | |
713 | - | then { | |
714 | - | let | |
715 | - | | |
716 | - | } | |
717 | - | else throw(("_getDecimals: no asset=" + | |
718 | - | } | |
719 | - | ||
720 | - | ||
721 | - | func | |
722 | - | then fraction( | |
723 | - | else ( | |
724 | - | ||
725 | - | ||
726 | - | func | |
727 | - | func | |
728 | - | ||
729 | - | let | |
730 | - | let | |
731 | - | let | |
732 | - | func | |
733 | - | then | |
734 | - | else | |
735 | - | ||
736 | - | func | |
737 | - | then | |
765 | + | func bK (T) = { | |
766 | + | let Q = assetInfo(fromBase58String(T)) | |
767 | + | if ($isInstanceOf(Q, "Asset")) | |
768 | + | then { | |
769 | + | let R = Q | |
770 | + | R.decimals | |
771 | + | } | |
772 | + | else throw(("_getDecimals: no asset=" + T)) | |
773 | + | } | |
774 | + | ||
775 | + | ||
776 | + | func bL (bM,bN,bO,bP) = if ((bN >= bO)) | |
777 | + | then fraction(bM, 1, pow(10, 0, (bN - bO), 0, 0, DOWN), bP) | |
778 | + | else (bM * pow(10, 0, (bO - bN), 0, 0, DOWN)) | |
779 | + | ||
780 | + | ||
781 | + | func bQ (aq) = { | |
782 | + | func af (ag,ah) = (ag :+ 0) | |
783 | + | ||
784 | + | let ai = aq | |
785 | + | let aj = size(ai) | |
786 | + | let ak = nil | |
787 | + | func al (am,an) = if ((an >= aj)) | |
788 | + | then am | |
789 | + | else af(am, ai[an]) | |
790 | + | ||
791 | + | func ao (am,an) = if ((an >= aj)) | |
792 | + | then am | |
738 | 793 | else throw("List size exceeds 10") | |
739 | 794 | ||
740 | - | | |
741 | - | } | |
742 | - | ||
743 | - | ||
744 | - | func | |
745 | - | func | |
746 | - | let | |
747 | - | $Tuple2(( | |
748 | - | } | |
749 | - | ||
750 | - | let | |
751 | - | let | |
752 | - | let | |
753 | - | func | |
754 | - | then | |
755 | - | else | |
756 | - | ||
757 | - | func | |
758 | - | then | |
795 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
796 | + | } | |
797 | + | ||
798 | + | ||
799 | + | func bR (bS) = { | |
800 | + | func af (ag,ah) = { | |
801 | + | let aZ = parseIntValue(ah) | |
802 | + | $Tuple2((ag._1 :+ aZ), (ag._2 + aZ)) | |
803 | + | } | |
804 | + | ||
805 | + | let ai = bS | |
806 | + | let aj = size(ai) | |
807 | + | let ak = $Tuple2(nil, 0) | |
808 | + | func al (am,an) = if ((an >= aj)) | |
809 | + | then am | |
810 | + | else af(am, ai[an]) | |
811 | + | ||
812 | + | func ao (am,an) = if ((an >= aj)) | |
813 | + | then am | |
759 | 814 | else throw("List size exceeds 10") | |
760 | 815 | ||
761 | - | | |
762 | - | } | |
763 | - | ||
764 | - | ||
765 | - | func | |
766 | - | func | |
767 | - | let | |
768 | - | let | |
769 | - | $Tuple2(( | |
770 | - | } | |
771 | - | ||
772 | - | let | |
773 | - | let | |
774 | - | let | |
775 | - | func | |
776 | - | then | |
777 | - | else | |
778 | - | ||
779 | - | func | |
780 | - | then | |
816 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
817 | + | } | |
818 | + | ||
819 | + | ||
820 | + | func bT (aq,bU) = { | |
821 | + | func af (ag,ah) = { | |
822 | + | let bV = bK(ah) | |
823 | + | let aT = bL(assetBalance(this, fromBase58String(ah)), bV, bU, DOWN) | |
824 | + | $Tuple2((ag._1 :+ aT), (ag._2 + aT)) | |
825 | + | } | |
826 | + | ||
827 | + | let ai = aq | |
828 | + | let aj = size(ai) | |
829 | + | let ak = $Tuple2(nil, 0) | |
830 | + | func al (am,an) = if ((an >= aj)) | |
831 | + | then am | |
832 | + | else af(am, ai[an]) | |
833 | + | ||
834 | + | func ao (am,an) = if ((an >= aj)) | |
835 | + | then am | |
781 | 836 | else throw("List size exceeds 10") | |
782 | 837 | ||
783 | - | | |
784 | - | } | |
785 | - | ||
786 | - | ||
787 | - | func | |
788 | - | func | |
838 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
839 | + | } | |
840 | + | ||
841 | + | ||
842 | + | func bW (aq) = { | |
843 | + | func af (ag,ah) = (ag :+ toString(ah)) | |
789 | 844 | ||
790 | 845 | makeString({ | |
791 | - | let | |
792 | - | let | |
793 | - | let | |
794 | - | func | |
795 | - | then | |
796 | - | else | |
797 | - | ||
798 | - | func | |
799 | - | then | |
846 | + | let ai = aq | |
847 | + | let aj = size(ai) | |
848 | + | let ak = nil | |
849 | + | func al (am,an) = if ((an >= aj)) | |
850 | + | then am | |
851 | + | else af(am, ai[an]) | |
852 | + | ||
853 | + | func ao (am,an) = if ((an >= aj)) | |
854 | + | then am | |
800 | 855 | else throw("List size exceeds 11") | |
801 | 856 | ||
802 | - | | |
857 | + | ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
803 | 858 | }, a) | |
804 | 859 | } | |
805 | 860 | ||
806 | 861 | ||
807 | - | func | |
808 | - | func | |
862 | + | func bX (aq) = { | |
863 | + | func af (ag,ah) = (ag :+ toString(ah)) | |
809 | 864 | ||
810 | 865 | makeString({ | |
811 | - | let | |
812 | - | let | |
813 | - | let | |
814 | - | func | |
815 | - | then | |
816 | - | else | |
817 | - | ||
818 | - | func | |
819 | - | then | |
866 | + | let ai = aq | |
867 | + | let aj = size(ai) | |
868 | + | let ak = nil | |
869 | + | func al (am,an) = if ((an >= aj)) | |
870 | + | then am | |
871 | + | else af(am, ai[an]) | |
872 | + | ||
873 | + | func ao (am,an) = if ((an >= aj)) | |
874 | + | then am | |
820 | 875 | else throw("List size exceeds 11") | |
821 | 876 | ||
822 | - | | |
877 | + | ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
823 | 878 | }, a) | |
824 | 879 | } | |
825 | 880 | ||
826 | 881 | ||
827 | - | func | |
828 | - | func | |
829 | - | ||
830 | - | let | |
831 | - | let | |
832 | - | let | |
833 | - | func | |
834 | - | then | |
835 | - | else | |
836 | - | ||
837 | - | func | |
838 | - | then | |
882 | + | func bY (bZ,bb,ca) = { | |
883 | + | func af (ag,ah) = (ag :+ fraction(bZ, ah, ca)) | |
884 | + | ||
885 | + | let ai = bb | |
886 | + | let aj = size(ai) | |
887 | + | let ak = nil | |
888 | + | func al (am,an) = if ((an >= aj)) | |
889 | + | then am | |
890 | + | else af(am, ai[an]) | |
891 | + | ||
892 | + | func ao (am,an) = if ((an >= aj)) | |
893 | + | then am | |
839 | 894 | else throw("List size exceeds 10") | |
840 | 895 | ||
841 | - | | |
842 | - | } | |
843 | - | ||
844 | - | ||
845 | - | func | |
846 | - | func | |
847 | - | let | |
848 | - | let | |
849 | - | let | |
850 | - | $Tuple3(( | |
851 | - | } | |
852 | - | ||
853 | - | let | |
854 | - | let | |
855 | - | let | |
856 | - | let | |
857 | - | func | |
858 | - | then | |
859 | - | else | |
860 | - | ||
861 | - | func | |
862 | - | then | |
896 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
897 | + | } | |
898 | + | ||
899 | + | ||
900 | + | func cb (aV,cc) = { | |
901 | + | func af (ag,ah) = { | |
902 | + | let cd = ag._1 | |
903 | + | let ce = cc[cd] | |
904 | + | let cf = (ah + ce) | |
905 | + | $Tuple3((cd + 1), (ag._2 :+ cf), (ag._3 + cf)) | |
906 | + | } | |
907 | + | ||
908 | + | let cg = { | |
909 | + | let ai = aV | |
910 | + | let aj = size(ai) | |
911 | + | let ak = $Tuple3(0, nil, 0) | |
912 | + | func al (am,an) = if ((an >= aj)) | |
913 | + | then am | |
914 | + | else af(am, ai[an]) | |
915 | + | ||
916 | + | func ao (am,an) = if ((an >= aj)) | |
917 | + | then am | |
863 | 918 | else throw("List size exceeds 10") | |
864 | 919 | ||
865 | - | | |
866 | - | } | |
867 | - | $Tuple2( | |
868 | - | } | |
869 | - | ||
870 | - | ||
871 | - | func | |
872 | - | func | |
873 | - | let | |
874 | - | let | |
875 | - | let | |
876 | - | let | |
877 | - | then throw((( | |
920 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
921 | + | } | |
922 | + | $Tuple2(cg._2, cg._3) | |
923 | + | } | |
924 | + | ||
925 | + | ||
926 | + | func ch (aV,ci,aq,bU,P) = { | |
927 | + | func af (ag,ah) = { | |
928 | + | let cd = ag._1 | |
929 | + | let cj = ci[cd] | |
930 | + | let ck = aA(cj.assetId) | |
931 | + | let cl = if ((ck != aq[cd])) | |
932 | + | then throw(((P + ": index=") + toString(cd))) | |
878 | 933 | else unit | |
879 | - | if (( | |
934 | + | if ((cl == cl)) | |
880 | 935 | then { | |
881 | - | let | |
882 | - | let | |
883 | - | $Tuple3(( | |
936 | + | let bV = bK(ck) | |
937 | + | let cf = (ah + bL(ci[cd].amount, bV, bU, DOWN)) | |
938 | + | $Tuple3((cd + 1), (ag._2 :+ cf), (ag._3 + cf)) | |
884 | 939 | } | |
885 | 940 | else throw("Strict value is not equal to itself.") | |
886 | 941 | } | |
887 | 942 | ||
888 | - | let | |
889 | - | let | |
890 | - | let | |
891 | - | let | |
892 | - | func | |
893 | - | then | |
894 | - | else | |
895 | - | ||
896 | - | func | |
897 | - | then | |
943 | + | let cg = { | |
944 | + | let ai = aV | |
945 | + | let aj = size(ai) | |
946 | + | let ak = $Tuple3(0, nil, 0) | |
947 | + | func al (am,an) = if ((an >= aj)) | |
948 | + | then am | |
949 | + | else af(am, ai[an]) | |
950 | + | ||
951 | + | func ao (am,an) = if ((an >= aj)) | |
952 | + | then am | |
898 | 953 | else throw("List size exceeds 10") | |
899 | 954 | ||
900 | - | | |
901 | - | } | |
902 | - | $Tuple2( | |
903 | - | } | |
904 | - | ||
905 | - | ||
906 | - | func | |
907 | - | func | |
908 | - | let | |
909 | - | if (( | |
910 | - | then $Tuple2(( | |
911 | - | else $Tuple2(( | |
912 | - | } | |
913 | - | ||
914 | - | let | |
915 | - | let | |
916 | - | let | |
917 | - | let | |
918 | - | func | |
919 | - | then | |
920 | - | else | |
921 | - | ||
922 | - | func | |
923 | - | then | |
955 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
956 | + | } | |
957 | + | $Tuple2(cg._2, cg._3) | |
958 | + | } | |
959 | + | ||
960 | + | ||
961 | + | func cm (aV,cn,bM) = { | |
962 | + | func af (ag,ah) = { | |
963 | + | let cd = ag._1 | |
964 | + | if ((cd == cn)) | |
965 | + | then $Tuple2((cd + 1), (ag._2 :+ (ah + bM))) | |
966 | + | else $Tuple2((cd + 1), (ag._2 :+ ah)) | |
967 | + | } | |
968 | + | ||
969 | + | let cg = { | |
970 | + | let ai = aV | |
971 | + | let aj = size(ai) | |
972 | + | let ak = $Tuple2(0, nil) | |
973 | + | func al (am,an) = if ((an >= aj)) | |
974 | + | then am | |
975 | + | else af(am, ai[an]) | |
976 | + | ||
977 | + | func ao (am,an) = if ((an >= aj)) | |
978 | + | then am | |
924 | 979 | else throw("List size exceeds 10") | |
925 | 980 | ||
926 | - | | |
927 | - | } | |
928 | - | | |
929 | - | } | |
930 | - | ||
931 | - | ||
932 | - | func | |
933 | - | func | |
934 | - | let | |
935 | - | if (if (( | |
936 | - | then ( | |
981 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
982 | + | } | |
983 | + | cg._2 | |
984 | + | } | |
985 | + | ||
986 | + | ||
987 | + | func co (aV,cn,bM) = { | |
988 | + | func af (ag,ah) = { | |
989 | + | let cd = ag._1 | |
990 | + | if (if ((cd == cn)) | |
991 | + | then (bM > ah) | |
937 | 992 | else false) | |
938 | 993 | then throw("insufficient balance") | |
939 | - | else if (if (( | |
940 | - | then ( | |
994 | + | else if (if ((cd == cn)) | |
995 | + | then (ah >= bM) | |
941 | 996 | else false) | |
942 | - | then $Tuple2(( | |
943 | - | else $Tuple2(( | |
944 | - | } | |
945 | - | ||
946 | - | let | |
947 | - | let | |
948 | - | let | |
949 | - | let | |
950 | - | func | |
951 | - | then | |
952 | - | else | |
953 | - | ||
954 | - | func | |
955 | - | then | |
997 | + | then $Tuple2((cd + 1), (ag._2 :+ (ah - bM))) | |
998 | + | else $Tuple2((cd + 1), (ag._2 :+ ah)) | |
999 | + | } | |
1000 | + | ||
1001 | + | let cg = { | |
1002 | + | let ai = aV | |
1003 | + | let aj = size(ai) | |
1004 | + | let ak = $Tuple2(0, nil) | |
1005 | + | func al (am,an) = if ((an >= aj)) | |
1006 | + | then am | |
1007 | + | else af(am, ai[an]) | |
1008 | + | ||
1009 | + | func ao (am,an) = if ((an >= aj)) | |
1010 | + | then am | |
956 | 1011 | else throw("List size exceeds 10") | |
957 | 1012 | ||
958 | - | | |
959 | - | } | |
960 | - | | |
961 | - | } | |
962 | - | ||
963 | - | ||
964 | - | func | |
965 | - | let | |
966 | - | func | |
967 | - | let | |
968 | - | let | |
969 | - | if ((0 > | |
1013 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1014 | + | } | |
1015 | + | cg._2 | |
1016 | + | } | |
1017 | + | ||
1018 | + | ||
1019 | + | func cp (aV,bM,cq) = { | |
1020 | + | let cr = fraction((cq - bM), i, cq, CEILING) | |
1021 | + | func af (ag,ah) = { | |
1022 | + | let cf = fraction(ah, cr, i, CEILING) | |
1023 | + | let cs = (ah - cf) | |
1024 | + | if ((0 > cs)) | |
970 | 1025 | then throw("insufficient delta balance") | |
971 | - | else $Tuple3(( | |
972 | - | } | |
973 | - | ||
974 | - | let | |
975 | - | let | |
976 | - | let | |
977 | - | func | |
978 | - | then | |
979 | - | else | |
980 | - | ||
981 | - | func | |
982 | - | then | |
1026 | + | else $Tuple3((ag._1 :+ cf), (ag._2 + cf), (ag._3 :+ cs)) | |
1027 | + | } | |
1028 | + | ||
1029 | + | let ai = aV | |
1030 | + | let aj = size(ai) | |
1031 | + | let ak = $Tuple3(nil, 0, nil) | |
1032 | + | func al (am,an) = if ((an >= aj)) | |
1033 | + | then am | |
1034 | + | else af(am, ai[an]) | |
1035 | + | ||
1036 | + | func ao (am,an) = if ((an >= aj)) | |
1037 | + | then am | |
983 | 1038 | else throw("List size exceeds 10") | |
984 | 1039 | ||
985 | - | | |
986 | - | } | |
987 | - | ||
988 | - | ||
989 | - | func | |
990 | - | func | |
991 | - | let | |
992 | - | $Tuple2(( | |
993 | - | } | |
994 | - | ||
995 | - | let | |
996 | - | let | |
997 | - | let | |
998 | - | let | |
999 | - | func | |
1000 | - | then | |
1001 | - | else | |
1002 | - | ||
1003 | - | func | |
1004 | - | then | |
1040 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1041 | + | } | |
1042 | + | ||
1043 | + | ||
1044 | + | func ct (aq,aV,cu,bN) = { | |
1045 | + | func af (ag,ah) = { | |
1046 | + | let cd = ag._1 | |
1047 | + | $Tuple2((cd + 1), (ag._2 :+ ScriptTransfer(cu, bL(aV[cd], bN, bK(ah), DOWN), aC(ah)))) | |
1048 | + | } | |
1049 | + | ||
1050 | + | let cg = { | |
1051 | + | let ai = aq | |
1052 | + | let aj = size(ai) | |
1053 | + | let ak = $Tuple2(0, nil) | |
1054 | + | func al (am,an) = if ((an >= aj)) | |
1055 | + | then am | |
1056 | + | else af(am, ai[an]) | |
1057 | + | ||
1058 | + | func ao (am,an) = if ((an >= aj)) | |
1059 | + | then am | |
1005 | 1060 | else throw("List size exceeds 10") | |
1006 | 1061 | ||
1007 | - | am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1008 | - | } | |
1009 | - | cc._2 | |
1010 | - | } | |
1011 | - | ||
1012 | - | ||
1013 | - | func cr (cs,ct,cu,cv,cw) = if ((ct > cs)) | |
1014 | - | then { | |
1015 | - | let cx = fraction(ct, (f - cu), f) | |
1016 | - | if ((cx > cs)) | |
1017 | - | then { | |
1018 | - | let cy = (cx - cs) | |
1019 | - | let cz = fraction(fraction(cy, cv, h), i, ct) | |
1020 | - | if ((cz > cw)) | |
1021 | - | then fraction(cy, cw, i) | |
1022 | - | else fraction(cy, cz, i) | |
1062 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1063 | + | } | |
1064 | + | cg._2 | |
1065 | + | } | |
1066 | + | ||
1067 | + | ||
1068 | + | func cv (cw,cx,cy,cz,cA) = { | |
1069 | + | let cB = fraction(cx, (f - cz), f) | |
1070 | + | if ((cw > cB)) | |
1071 | + | then 0 | |
1072 | + | else toInt(fraction(fraction(toBigInt(cy), toBigInt(cA), k), toBigInt((cB - cw)), toBigInt(cB), CEILING)) | |
1073 | + | } | |
1074 | + | ||
1075 | + | ||
1076 | + | func cC (cD,cE,cx,cy,cz,cA) = if ((cE > cD)) | |
1077 | + | then 0 | |
1078 | + | else (cv(cE, cx, cy, cz, cA) - cv(cD, cx, cy, cz, cA)) | |
1079 | + | ||
1080 | + | ||
1081 | + | func cF (cw,cx,cG) = if ((cw > cx)) | |
1082 | + | then cG | |
1083 | + | else fraction(cG, cw, cx, FLOOR) | |
1084 | + | ||
1085 | + | ||
1086 | + | func cH (cD,cE,cx,cG) = if ((cD > cE)) | |
1087 | + | then 0 | |
1088 | + | else (cF(cE, cx, cG) - cF(cD, cx, cG)) | |
1089 | + | ||
1090 | + | ||
1091 | + | func cI (cJ,cK) = { | |
1092 | + | let cL = size(cJ) | |
1093 | + | func af (ag,cd) = if ((cd >= cL)) | |
1094 | + | then ag | |
1095 | + | else if ((0 > cJ[cd])) | |
1096 | + | then throw("_validateAllocation: negative assetBalances") | |
1097 | + | else if ((0 > cK[cd])) | |
1098 | + | then throw("_validateAllocation: negative rewardBalances") | |
1099 | + | else ag | |
1100 | + | ||
1101 | + | let ai = n | |
1102 | + | let aj = size(ai) | |
1103 | + | let ak = true | |
1104 | + | func al (am,an) = if ((an >= aj)) | |
1105 | + | then am | |
1106 | + | else af(am, ai[an]) | |
1107 | + | ||
1108 | + | func ao (am,an) = if ((an >= aj)) | |
1109 | + | then am | |
1110 | + | else throw("List size exceeds 10") | |
1111 | + | ||
1112 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1113 | + | } | |
1114 | + | ||
1115 | + | ||
1116 | + | func cM (bl) = { | |
1117 | + | let cN = bn(bl) | |
1118 | + | let cO = br(bl) | |
1119 | + | let cP = bi() | |
1120 | + | let cQ = bk(bl) | |
1121 | + | func af (ag,ah) = { | |
1122 | + | let cd = ag._1 | |
1123 | + | let cR = (cO[cd] + toInt(fraction(toBigInt(cN), (cP[cd] - cQ[cd]), j))) | |
1124 | + | $Tuple2((cd + 1), (ag._2 :+ cR)) | |
1125 | + | } | |
1126 | + | ||
1127 | + | let cS = { | |
1128 | + | let ai = m | |
1129 | + | let aj = size(ai) | |
1130 | + | let ak = $Tuple2(0, nil) | |
1131 | + | func al (am,an) = if ((an >= aj)) | |
1132 | + | then am | |
1133 | + | else af(am, ai[an]) | |
1134 | + | ||
1135 | + | func ao (am,an) = if ((an >= aj)) | |
1136 | + | then am | |
1137 | + | else throw("List size exceeds 11") | |
1138 | + | ||
1139 | + | ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
1140 | + | } | |
1141 | + | let cT = cS._1 | |
1142 | + | let cU = cS._2 | |
1143 | + | $Tuple2((bs(bl, cU) ++ bm(bl, cP)), cU) | |
1144 | + | } | |
1145 | + | ||
1146 | + | ||
1147 | + | func cV (cW,cX,cn,cY) = { | |
1148 | + | func af (ag,ah) = { | |
1149 | + | let cd = ag._1 | |
1150 | + | let cZ = if ((cn == cd)) | |
1151 | + | then (cW[cd] + fraction(toBigInt(cY), j, toBigInt(cX))) | |
1152 | + | else cW[cd] | |
1153 | + | $Tuple2((cd + 1), (ag._2 :+ cZ)) | |
1154 | + | } | |
1155 | + | ||
1156 | + | let da = { | |
1157 | + | let ai = m | |
1158 | + | let aj = size(ai) | |
1159 | + | let ak = $Tuple2(0, nil) | |
1160 | + | func al (am,an) = if ((an >= aj)) | |
1161 | + | then am | |
1162 | + | else af(am, ai[an]) | |
1163 | + | ||
1164 | + | func ao (am,an) = if ((an >= aj)) | |
1165 | + | then am | |
1166 | + | else throw("List size exceeds 11") | |
1167 | + | ||
1168 | + | ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
1169 | + | } | |
1170 | + | let cT = da._1 | |
1171 | + | let cZ = da._2 | |
1172 | + | cZ | |
1173 | + | } | |
1174 | + | ||
1175 | + | ||
1176 | + | func db (dc,bM,dd,de) = { | |
1177 | + | let cP = bi() | |
1178 | + | let df = bp() | |
1179 | + | let dg = if ((df == 0)) | |
1180 | + | then $Tuple2(0, fraction(bM, de, d)) | |
1181 | + | else $Tuple2(fraction(bM, dd, d), fraction(bM, de, d)) | |
1182 | + | let dh = dg._1 | |
1183 | + | let di = dg._2 | |
1184 | + | let cZ = if ((dh == 0)) | |
1185 | + | then cP | |
1186 | + | else cV(cP, df, dc, dh) | |
1187 | + | $Tuple3(dh, di, cZ) | |
1188 | + | } | |
1189 | + | ||
1190 | + | ||
1191 | + | func dj (bM) = { | |
1192 | + | let bD = aM() | |
1193 | + | let dk = bD._3 | |
1194 | + | let dl = aQ() | |
1195 | + | let dm = aY() | |
1196 | + | let dn = dm._1 | |
1197 | + | let do = dm._2 | |
1198 | + | let dp = aS() | |
1199 | + | let dq = dp._1 | |
1200 | + | let dr = dp._2 | |
1201 | + | let ds = if ((dr == 0)) | |
1202 | + | then { | |
1203 | + | func af (ag,ah) = { | |
1204 | + | let cd = ag._1 | |
1205 | + | let dt = fraction(dn[cd], bM, do) | |
1206 | + | $Tuple2((cd + 1), (ag._2 :+ dt)) | |
1023 | 1207 | } | |
1024 | - | else 0 | |
1025 | - | } | |
1026 | - | else { | |
1027 | - | let cx = fraction(ct, (f + cu), f) | |
1028 | - | if ((cs > cx)) | |
1029 | - | then { | |
1030 | - | let cy = (cs - cx) | |
1031 | - | let cz = fraction(fraction(cy, cv, h), i, ct) | |
1032 | - | if ((cz > cw)) | |
1033 | - | then fraction(cy, cw, i) | |
1034 | - | else fraction(cy, cz, i) | |
1208 | + | ||
1209 | + | let du = { | |
1210 | + | let ai = dl | |
1211 | + | let aj = size(ai) | |
1212 | + | let ak = $Tuple2(0, nil) | |
1213 | + | func al (am,an) = if ((an >= aj)) | |
1214 | + | then am | |
1215 | + | else af(am, ai[an]) | |
1216 | + | ||
1217 | + | func ao (am,an) = if ((an >= aj)) | |
1218 | + | then am | |
1219 | + | else throw("List size exceeds 10") | |
1220 | + | ||
1221 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1035 | 1222 | } | |
1036 | - | else 0 | |
1037 | - | } | |
1038 | - | ||
1039 | - | ||
1040 | - | func cA (aT,cB,aX,bW,cu,cv,cw) = 0 | |
1041 | - | ||
1042 | - | ||
1043 | - | func cC (cD,cE,cF,cG,cH,cm,bO,bW,cu,cv,cw) = if (if ((cH == 0)) | |
1044 | - | then true | |
1045 | - | else (cm == 0)) | |
1046 | - | then true | |
1047 | - | else { | |
1048 | - | let cI = fraction((cE - cA(cD, cE, bO, bW, cu, cv, cw)), j, cH) | |
1049 | - | let cJ = fraction((cG - cA(cF, cG, bO, bW, cu, cv, cw)), j, cm) | |
1050 | - | let cK = (cJ - cI) | |
1051 | - | if (if ((0 >= cK)) | |
1052 | - | then ((-1 * bc()) > cK) | |
1053 | - | else false) | |
1054 | - | then throw(("_validateLiquidityInvariant: revert: diff=" + toString(cK))) | |
1055 | - | else true | |
1056 | - | } | |
1057 | - | ||
1058 | - | ||
1059 | - | func cL (cD,cE,cF,cG,bO,bW,cu,cv,cw) = { | |
1060 | - | let cM = (cE - cA(cD, cE, bO, bW, cu, cv, cw)) | |
1061 | - | let cN = (cG - cA(cF, cG, bO, bW, cu, cv, cw)) | |
1062 | - | let cK = (cN - cM) | |
1063 | - | if (if ((0 >= cK)) | |
1064 | - | then ((-1 * bc()) > cK) | |
1065 | - | else false) | |
1066 | - | then throw(("_validateSwapInvariant: revert: diff=" + toString(cK))) | |
1067 | - | else true | |
1068 | - | } | |
1069 | - | ||
1070 | - | ||
1071 | - | func cO (cs,cG,cP,cE,cQ,bW,cR) = { | |
1072 | - | let cS = fraction(cG, cQ, bW) | |
1073 | - | let cT = if ((cs > cS)) | |
1074 | - | then (e + cR) | |
1075 | - | else (e - cR) | |
1076 | - | let cU = fraction(cS, cT, e) | |
1077 | - | let cV = fraction(fraction(cE, cQ, bW), cT, e) | |
1078 | - | if ((cs > cS)) | |
1079 | - | then if ((cs > cU)) | |
1080 | - | then if ((cV > cP)) | |
1081 | - | then throw("_validateAssetAllocation: new up") | |
1082 | - | else if (((cs - cU) > (cP - cV))) | |
1083 | - | then throw("_validateAssetAllocation: still up") | |
1084 | - | else true | |
1085 | - | else true | |
1086 | - | else if ((cU > cs)) | |
1087 | - | then if ((cP > cV)) | |
1088 | - | then throw("_validateAssetAllocation: new down") | |
1089 | - | else if (((cU - cs) > (cV - cP))) | |
1090 | - | then throw("_validateAssetAllocation: still down") | |
1091 | - | else true | |
1092 | - | else true | |
1093 | - | } | |
1094 | - | ||
1095 | - | ||
1096 | - | func cW (cF,cG,cD,cE,bO,bW,cR) = true | |
1097 | - | ||
1098 | - | ||
1099 | - | func cX (bh) = { | |
1100 | - | let cY = bj(bh) | |
1101 | - | let cZ = bn(bh) | |
1102 | - | let da = be() | |
1103 | - | let db = bg(bh) | |
1104 | - | func ad (ae,af) = { | |
1105 | - | let bZ = ae._1 | |
1106 | - | let dc = (cZ[bZ] + toInt(fraction(toBigInt(cY), (da[bZ] - db[bZ]), k))) | |
1107 | - | $Tuple2((bZ + 1), (ae._2 :+ dc)) | |
1108 | - | } | |
1109 | - | ||
1110 | - | let dd = { | |
1111 | - | let ag = m | |
1112 | - | let ah = size(ag) | |
1113 | - | let ai = $Tuple2(0, nil) | |
1114 | - | func aj (ak,al) = if ((al >= ah)) | |
1115 | - | then ak | |
1116 | - | else ad(ak, ag[al]) | |
1117 | - | ||
1118 | - | func am (ak,al) = if ((al >= ah)) | |
1119 | - | then ak | |
1120 | - | else throw("List size exceeds 11") | |
1121 | - | ||
1122 | - | am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
1123 | - | } | |
1124 | - | let de = dd._1 | |
1125 | - | let df = dd._2 | |
1126 | - | $Tuple2((bo(bh, df) ++ bi(bh, da)), df) | |
1127 | - | } | |
1128 | - | ||
1129 | - | ||
1130 | - | func dg (dh,di,cj,dj) = { | |
1131 | - | func ad (ae,af) = { | |
1132 | - | let bZ = ae._1 | |
1133 | - | let dk = if ((cj == bZ)) | |
1134 | - | then (dh[bZ] + fraction(toBigInt(dj), k, toBigInt(di))) | |
1135 | - | else dh[bZ] | |
1136 | - | $Tuple2((bZ + 1), (ae._2 :+ dk)) | |
1137 | - | } | |
1138 | - | ||
1139 | - | let dl = { | |
1140 | - | let ag = m | |
1141 | - | let ah = size(ag) | |
1142 | - | let ai = $Tuple2(0, nil) | |
1143 | - | func aj (ak,al) = if ((al >= ah)) | |
1144 | - | then ak | |
1145 | - | else ad(ak, ag[al]) | |
1146 | - | ||
1147 | - | func am (ak,al) = if ((al >= ah)) | |
1148 | - | then ak | |
1149 | - | else throw("List size exceeds 11") | |
1150 | - | ||
1151 | - | am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
1152 | - | } | |
1153 | - | let de = dl._1 | |
1154 | - | let dk = dl._2 | |
1155 | - | dk | |
1156 | - | } | |
1157 | - | ||
1158 | - | ||
1159 | - | func dm (dn,bI,do,dp) = { | |
1160 | - | let da = be() | |
1161 | - | let dq = bl() | |
1162 | - | let dr = if ((dq == 0)) | |
1163 | - | then $Tuple2(0, fraction(bI, dp, d)) | |
1164 | - | else $Tuple2(fraction(bI, do, d), fraction(bI, dp, d)) | |
1165 | - | let ds = dr._1 | |
1166 | - | let dt = dr._2 | |
1167 | - | let dk = if ((ds == 0)) | |
1168 | - | then da | |
1169 | - | else dg(da, dq, dn, ds) | |
1170 | - | $Tuple3(ds, dt, dk) | |
1171 | - | } | |
1172 | - | ||
1173 | - | ||
1174 | - | func du (bI) = { | |
1175 | - | let bz = aK() | |
1176 | - | let dv = bz._3 | |
1177 | - | let dw = bz._7 | |
1178 | - | let dx = bz._8 | |
1179 | - | let dy = bz._9 | |
1180 | - | let dz = aO() | |
1181 | - | let dA = aU() | |
1223 | + | let cT = du._1 | |
1224 | + | let dv = du._2 | |
1225 | + | $Tuple2(bM, dv) | |
1226 | + | } | |
1227 | + | else { | |
1228 | + | let dw = fraction(toBigInt(bM), j, toBigInt(dr)) | |
1229 | + | func dx (ag,ah) = { | |
1230 | + | let cd = ag._1 | |
1231 | + | let dt = toInt(fraction(dw, toBigInt(dq[cd]), j)) | |
1232 | + | $Tuple2((cd + 1), (ag._2 :+ dt)) | |
1233 | + | } | |
1234 | + | ||
1235 | + | let dy = { | |
1236 | + | let ai = dl | |
1237 | + | let aj = size(ai) | |
1238 | + | let ak = $Tuple2(0, nil) | |
1239 | + | func al (am,an) = if ((an >= aj)) | |
1240 | + | then am | |
1241 | + | else dx(am, ai[an]) | |
1242 | + | ||
1243 | + | func ao (am,an) = if ((an >= aj)) | |
1244 | + | then am | |
1245 | + | else throw("List size exceeds 10") | |
1246 | + | ||
1247 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1248 | + | } | |
1249 | + | let cT = dy._1 | |
1250 | + | let dv = dy._2 | |
1251 | + | $Tuple2(fraction(bM, dk, dr), dv) | |
1252 | + | } | |
1253 | + | let dz = ds._1 | |
1254 | + | let dv = ds._2 | |
1255 | + | let dA = cb(dq, dv) | |
1182 | 1256 | let dB = dA._1 | |
1183 | 1257 | let dC = dA._2 | |
1184 | - | let dD = aQ() | |
1185 | - | let dE = dD._1 | |
1186 | - | let dF = dD._2 | |
1187 | - | let dG = if ((dF == 0)) | |
1188 | - | then { | |
1189 | - | func ad (ae,af) = { | |
1190 | - | let bZ = ae._1 | |
1191 | - | let dH = fraction(dB[bZ], bI, dC) | |
1192 | - | $Tuple2((bZ + 1), (ae._2 :+ dH)) | |
1193 | - | } | |
1194 | - | ||
1195 | - | let dI = { | |
1196 | - | let ag = dz | |
1197 | - | let ah = size(ag) | |
1198 | - | let ai = $Tuple2(0, nil) | |
1199 | - | func aj (ak,al) = if ((al >= ah)) | |
1200 | - | then ak | |
1201 | - | else ad(ak, ag[al]) | |
1202 | - | ||
1203 | - | func am (ak,al) = if ((al >= ah)) | |
1204 | - | then ak | |
1205 | - | else throw("List size exceeds 10") | |
1206 | - | ||
1207 | - | am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1208 | - | } | |
1209 | - | let de = dI._1 | |
1210 | - | let dJ = dI._2 | |
1211 | - | $Tuple2(bI, dJ) | |
1212 | - | } | |
1213 | - | else { | |
1214 | - | let dK = fraction(toBigInt(bI), k, toBigInt(dF)) | |
1215 | - | func dL (ae,af) = { | |
1216 | - | let bZ = ae._1 | |
1217 | - | let dH = toInt(fraction(dK, toBigInt(dE[bZ]), k)) | |
1218 | - | $Tuple2((bZ + 1), (ae._2 :+ dH)) | |
1219 | - | } | |
1220 | - | ||
1221 | - | let dM = { | |
1222 | - | let ag = dz | |
1223 | - | let ah = size(ag) | |
1224 | - | let ai = $Tuple2(0, nil) | |
1225 | - | func aj (ak,al) = if ((al >= ah)) | |
1226 | - | then ak | |
1227 | - | else dL(ak, ag[al]) | |
1228 | - | ||
1229 | - | func am (ak,al) = if ((al >= ah)) | |
1230 | - | then ak | |
1231 | - | else throw("List size exceeds 10") | |
1232 | - | ||
1233 | - | am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1234 | - | } | |
1235 | - | let de = dM._1 | |
1236 | - | let dJ = dM._2 | |
1237 | - | $Tuple2(fraction(bI, dv, dF), dJ) | |
1238 | - | } | |
1239 | - | let dN = dG._1 | |
1240 | - | let dJ = dG._2 | |
1241 | - | let dO = bX(dE, dJ) | |
1242 | - | let dP = dO._1 | |
1243 | - | let dQ = dO._2 | |
1244 | - | let dR = cC(dE, dF, dP, dQ, dv, (dv + dN), dB, dC, dw, dx, dy) | |
1245 | - | if ((dR == dR)) | |
1246 | - | then $Tuple3(dN, dJ, dP) | |
1247 | - | else throw("Strict value is not equal to itself.") | |
1248 | - | } | |
1249 | - | ||
1250 | - | ||
1251 | - | func dS (R,bI) = { | |
1252 | - | let bz = aK() | |
1253 | - | let dv = bz._3 | |
1254 | - | let dT = bz._4 | |
1255 | - | let dU = bz._5 | |
1256 | - | let dV = bz._6 | |
1257 | - | let dw = bz._7 | |
1258 | - | let dx = bz._8 | |
1259 | - | let dy = bz._9 | |
1260 | - | let dz = aO() | |
1261 | - | let dW = aU() | |
1262 | - | let dB = dW._1 | |
1263 | - | let dC = dW._2 | |
1264 | - | let dX = aQ() | |
1265 | - | let dE = dX._1 | |
1266 | - | let dF = dX._2 | |
1267 | - | let dP = ci(dE, value(indexOf(dz, R)), bI) | |
1268 | - | let dQ = (dF + bI) | |
1269 | - | let dR = cW(dP, dQ, dE, dF, dB, dC, dV) | |
1270 | - | if ((dR == dR)) | |
1271 | - | then { | |
1272 | - | let dY = cA(dE, dF, dB, dC, dw, dx, dy) | |
1273 | - | let dZ = cA(dP, dQ, dB, dC, dw, dx, dy) | |
1274 | - | let dN = if ((dv == 0)) | |
1275 | - | then throw("_deposit: empty pool") | |
1276 | - | else { | |
1277 | - | let ea = (dQ - dF) | |
1278 | - | let eb = (dZ - dY) | |
1279 | - | let ec = fraction((ea - eb), j, (dF - dY)) | |
1280 | - | let ed = fraction(dv, ec, j) | |
1281 | - | let ee = cC(dE, dF, dP, dQ, dv, (dv + ed), dB, dC, dw, dx, dy) | |
1282 | - | if ((ee == ee)) | |
1283 | - | then ed | |
1284 | - | else throw("Strict value is not equal to itself.") | |
1258 | + | $Tuple3(dz, dv, dB) | |
1259 | + | } | |
1260 | + | ||
1261 | + | ||
1262 | + | func dD (T,bM) = { | |
1263 | + | let bD = aM() | |
1264 | + | let dk = bD._3 | |
1265 | + | let dE = bD._4 | |
1266 | + | let dF = bD._5 | |
1267 | + | let dG = bD._6 | |
1268 | + | let dH = bD._7 | |
1269 | + | let dl = aQ() | |
1270 | + | let dI = aY() | |
1271 | + | let dn = dI._1 | |
1272 | + | let do = dI._2 | |
1273 | + | let dJ = aS() | |
1274 | + | let dq = dJ._1 | |
1275 | + | let dr = dJ._2 | |
1276 | + | let dK = aW() | |
1277 | + | let cl = if (if ((dr == 0)) | |
1278 | + | then true | |
1279 | + | else (dk == 0)) | |
1280 | + | then throw("_deposit: empty pool") | |
1281 | + | else true | |
1282 | + | if ((cl == cl)) | |
1283 | + | then { | |
1284 | + | let dL = value(indexOf(dl, T)) | |
1285 | + | let dM = fraction(dr, dn[dL], do) | |
1286 | + | let dN = dq[dL] | |
1287 | + | let dO = dK[dL] | |
1288 | + | let dP = cH(dN, (dN + bM), dM, dO) | |
1289 | + | let dQ = co(dK, dL, dP) | |
1290 | + | let dR = cm(dq, dL, (bM + dP)) | |
1291 | + | let dz = (bM + dP) | |
1292 | + | let dS = cI(dR, dQ) | |
1293 | + | if ((dS == dS)) | |
1294 | + | then { | |
1295 | + | let dT = db(0, dz, (dE / 2), (dF / 2)) | |
1296 | + | let dh = dT._1 | |
1297 | + | let di = dT._2 | |
1298 | + | let cZ = dT._3 | |
1299 | + | $Tuple6(dz, dR, dQ, dh, di, cZ) | |
1285 | 1300 | } | |
1286 | - | let ef = dm(0, dN, (dT / 2), (dU / 2)) | |
1287 | - | let ds = ef._1 | |
1288 | - | let dt = ef._2 | |
1289 | - | let dk = ef._3 | |
1290 | - | $Tuple5(dN, dP, ds, dt, dk) | |
1291 | - | } | |
1292 | - | else throw("Strict value is not equal to itself.") | |
1293 | - | } | |
1294 | - | ||
1295 | - | ||
1296 | - | func eg (bI) = { | |
1297 | - | let bz = aK() | |
1298 | - | let dv = bz._3 | |
1299 | - | let dV = bz._6 | |
1300 | - | let dw = bz._7 | |
1301 | - | let dx = bz._8 | |
1302 | - | let dy = bz._9 | |
1303 | - | let eh = aQ() | |
1304 | - | let dE = eh._1 | |
1305 | - | let dF = eh._2 | |
1306 | - | let ei = aU() | |
1307 | - | let dB = ei._1 | |
1308 | - | let dC = ei._2 | |
1309 | - | let ej = bI | |
1310 | - | let ch = S(ej, 0, c, "_withdrawAll: lpTokensToBurn less than 0") | |
1311 | - | if ((ch == ch)) | |
1312 | - | then { | |
1313 | - | let ek = cl(dE, ej, dv) | |
1314 | - | let dP = ek._1 | |
1315 | - | let dQ = ek._2 | |
1316 | - | let el = ek._3 | |
1317 | - | let dR = cC(dE, dF, dP, dQ, dv, (dv - ej), dB, dC, dw, dx, dy) | |
1318 | - | if ((dR == dR)) | |
1319 | - | then $Tuple3(ej, el, dP) | |
1320 | 1301 | else throw("Strict value is not equal to itself.") | |
1321 | 1302 | } | |
1322 | 1303 | else throw("Strict value is not equal to itself.") | |
1323 | 1304 | } | |
1324 | 1305 | ||
1325 | 1306 | ||
1326 | - | func em (R,en) = { | |
1327 | - | let bz = aK() | |
1328 | - | let dv = bz._3 | |
1329 | - | let dT = bz._4 | |
1330 | - | let dU = bz._5 | |
1331 | - | let dV = bz._6 | |
1332 | - | let dw = bz._7 | |
1333 | - | let dx = bz._8 | |
1334 | - | let dy = bz._9 | |
1335 | - | let eo = bc() | |
1336 | - | let dz = aO() | |
1337 | - | let ep = aQ() | |
1338 | - | let dE = ep._1 | |
1339 | - | let dF = ep._2 | |
1340 | - | let eq = aU() | |
1341 | - | let dB = eq._1 | |
1342 | - | let dC = eq._2 | |
1343 | - | let er = value(indexOf(dz, R)) | |
1344 | - | let dY = cA(dE, dF, dB, dC, dw, dx, dy) | |
1345 | - | let es = (dF - dY) | |
1346 | - | let et = fraction(toBigInt((dv - en)), k, toBigInt(dv)) | |
1347 | - | let eu = toInt(fraction(toBigInt(es), et, k)) | |
1348 | - | let ev = fraction(toBigInt(es), k, toBigInt(dv), CEILING) | |
1349 | - | func ad (ae,af) = if (ae._1) | |
1350 | - | then ae | |
1351 | - | else { | |
1352 | - | let ew = ae._2 | |
1353 | - | let ex = ae._3 | |
1354 | - | let ey = ((ex + ew) / 2) | |
1355 | - | let ez = ck(dE, er, ey) | |
1356 | - | let eA = (dF - ey) | |
1357 | - | let eB = (eA - cA(ez, eA, dB, dC, dw, dx, dy)) | |
1358 | - | if (if (((eB - eu) > (-1 * eo))) | |
1359 | - | then (eo > (eB - eu)) | |
1360 | - | else false) | |
1361 | - | then $Tuple5(true, ew, ex, ey, (eB - eu)) | |
1362 | - | else if ((0 > (eB - eu))) | |
1363 | - | then $Tuple5(false, ew, ey, ey, (eB - eu)) | |
1364 | - | else $Tuple5(false, ey, ex, ey, (eB - eu)) | |
1365 | - | } | |
1366 | - | ||
1367 | - | let eC = { | |
1368 | - | let eD = toInt(fraction(toBigInt((en + dY)), ev, k, CEILING)) | |
1369 | - | let eE = { | |
1370 | - | let ag = r | |
1371 | - | let ah = size(ag) | |
1372 | - | let ai = $Tuple5(false, 0, eD, 0, 0) | |
1373 | - | func aj (ak,al) = if ((al >= ah)) | |
1374 | - | then ak | |
1375 | - | else ad(ak, ag[al]) | |
1376 | - | ||
1377 | - | func am (ak,al) = if ((al >= ah)) | |
1378 | - | then ak | |
1379 | - | else throw("List size exceeds 64") | |
1380 | - | ||
1381 | - | am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64) | |
1382 | - | } | |
1383 | - | let eF = eE._1 | |
1384 | - | let eG = eE._2 | |
1385 | - | let eH = eE._3 | |
1386 | - | let eI = eE._4 | |
1387 | - | let eJ = eE._5 | |
1388 | - | if (!(eF)) | |
1389 | - | then throw(((("_withdraw: can't calculate targetAmount=" + toString(eI)) + ",diff=") + toString(eJ))) | |
1390 | - | else eI | |
1391 | - | } | |
1392 | - | let eK = ck(dE, er, eC) | |
1393 | - | let eL = (dF - eC) | |
1394 | - | let eM = if (cW(eK, eL, dE, dF, dB, dC, dV)) | |
1395 | - | then cC(dE, dF, eK, eL, dv, (dv - en), dB, dC, dw, dx, dy) | |
1307 | + | func dU (bM) = { | |
1308 | + | let bD = aM() | |
1309 | + | let dk = bD._3 | |
1310 | + | let dV = aS() | |
1311 | + | let dq = dV._1 | |
1312 | + | let dr = dV._2 | |
1313 | + | let dW = aY() | |
1314 | + | let dn = dW._1 | |
1315 | + | let do = dW._2 | |
1316 | + | let dX = bM | |
1317 | + | let cl = U(dX, 0, dk, "_withdrawAll: invalid lpTokensToBurn") | |
1318 | + | if ((cl == cl)) | |
1319 | + | then { | |
1320 | + | let dY = cp(dq, dX, dk) | |
1321 | + | let dB = dY._1 | |
1322 | + | let dC = dY._2 | |
1323 | + | let dZ = dY._3 | |
1324 | + | $Tuple3(dX, dZ, dB) | |
1325 | + | } | |
1326 | + | else throw("Strict value is not equal to itself.") | |
1327 | + | } | |
1328 | + | ||
1329 | + | ||
1330 | + | func ea (T,cy) = { | |
1331 | + | let bD = aM() | |
1332 | + | let dk = bD._3 | |
1333 | + | let dE = bD._4 | |
1334 | + | let dF = bD._5 | |
1335 | + | let dG = bD._6 | |
1336 | + | let dH = bD._7 | |
1337 | + | let eb = bD._8 | |
1338 | + | let dl = aQ() | |
1339 | + | let ec = aS() | |
1340 | + | let dq = ec._1 | |
1341 | + | let dr = ec._2 | |
1342 | + | let ed = aY() | |
1343 | + | let dn = ed._1 | |
1344 | + | let do = ed._2 | |
1345 | + | let dK = aW() | |
1346 | + | let ee = value(indexOf(dl, T)) | |
1347 | + | let ef = dq[ee] | |
1348 | + | let eg = fraction(dr, dn[ee], do) | |
1349 | + | let eh = dK[ee] | |
1350 | + | let ei = cC(ef, (ef - cy), eg, dr, dH, eb) | |
1351 | + | let ej = cm(dK, ee, ei) | |
1352 | + | let dB = co(dq, ee, cy) | |
1353 | + | let ek = (cy - ei) | |
1354 | + | let cl = cI(dB, ej) | |
1355 | + | if ((cl == cl)) | |
1356 | + | then { | |
1357 | + | let el = db((ee + 1), ek, (dE / 2), (dF / 2)) | |
1358 | + | let dh = el._1 | |
1359 | + | let di = el._2 | |
1360 | + | let cZ = el._3 | |
1361 | + | $Tuple6(ek, dB, ej, dh, di, cZ) | |
1362 | + | } | |
1363 | + | else throw("Strict value is not equal to itself.") | |
1364 | + | } | |
1365 | + | ||
1366 | + | ||
1367 | + | func em (en,eo,ep) = { | |
1368 | + | let bD = aM() | |
1369 | + | let eq = bD._1 | |
1370 | + | let er = bK(toBase58String(eq)) | |
1371 | + | let dk = bD._3 | |
1372 | + | let dE = bD._4 | |
1373 | + | let dF = bD._5 | |
1374 | + | let dG = bD._6 | |
1375 | + | let dH = bD._7 | |
1376 | + | let eb = bD._8 | |
1377 | + | let es = aS() | |
1378 | + | let dq = es._1 | |
1379 | + | let dr = es._2 | |
1380 | + | let et = aY() | |
1381 | + | let dn = et._1 | |
1382 | + | let do = et._2 | |
1383 | + | let dK = aW() | |
1384 | + | let dM = fraction(dr, dn[en], do) | |
1385 | + | let dN = dq[en] | |
1386 | + | let dO = dK[en] | |
1387 | + | let dP = cH(dN, (dN + ep), dM, dO) | |
1388 | + | let ef = dq[eo] | |
1389 | + | let eg = fraction(dr, dn[eo], do) | |
1390 | + | let eh = dK[eo] | |
1391 | + | let ei = cC(ef, (ef - ep), eg, dr, dH, eb) | |
1392 | + | let eu = co(dK, en, dP) | |
1393 | + | let dQ = cm(eu, eo, ei) | |
1394 | + | let ev = cm(dq, en, (ep + dP)) | |
1395 | + | let dR = co(ev, eo, (ep + dP)) | |
1396 | + | let ek = ((ep + dP) - ei) | |
1397 | + | let cl = cI(dR, dQ) | |
1398 | + | if ((cl == cl)) | |
1399 | + | then { | |
1400 | + | let ew = db((eo + 1), ek, dE, dF) | |
1401 | + | let dh = ew._1 | |
1402 | + | let di = ew._2 | |
1403 | + | let cZ = ew._3 | |
1404 | + | $Tuple6(ek, dR, dQ, dh, di, cZ) | |
1405 | + | } | |
1406 | + | else throw("Strict value is not equal to itself.") | |
1407 | + | } | |
1408 | + | ||
1409 | + | ||
1410 | + | @Callable(ex) | |
1411 | + | func init (aq,bS,dd,de,ey,ez,eA,eB,cz,cA,eC,eD,eE,aI) = { | |
1412 | + | let cl = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (bz(ex.caller)) | |
1413 | + | then bC() | |
1414 | + | else false) | |
1415 | + | then bB() | |
1416 | + | else false) | |
1417 | + | then ap(aq, "init: invalid assets") | |
1418 | + | else false) | |
1419 | + | then ae(bS, 1, g, "init: invalid assetWeights") | |
1420 | + | else false) | |
1421 | + | then ar(size(aq), size(bS), "init: invalid assetWeights size") | |
1422 | + | else false) | |
1423 | + | then U(dd, 0, d, "init: invalid lp fee") | |
1424 | + | else false) | |
1425 | + | then U(de, 0, d, "init: invalid protocol fee") | |
1426 | + | else false) | |
1427 | + | then as(ey, "init: invalid name") | |
1428 | + | else false) | |
1429 | + | then at(ez, "init: invalid descr") | |
1430 | + | else false) | |
1431 | + | then au(eA, "init: invalid decimals") | |
1432 | + | else false) | |
1433 | + | then U(eB, 0, e, "init: invalid maxAllocationAmplifier") | |
1434 | + | else false) | |
1435 | + | then U(cz, 0, eB, "init: invalid weightAmplifier") | |
1436 | + | else false) | |
1437 | + | then U(cA, 0, c, "init: invalid disbalanceCoeff") | |
1438 | + | else false) | |
1439 | + | then U(eC, 0, c, "init: invalid feeMaxRate") | |
1440 | + | else false) | |
1441 | + | then N(eD, "init: invalid protocolFeeContract") | |
1442 | + | else false) | |
1443 | + | then U(eE, 1, c, "init: invalid precision") | |
1444 | + | else false) | |
1445 | + | then N(aI, "init: invalid pauser") | |
1396 | 1446 | else false | |
1397 | - | if ((eM == eM)) | |
1398 | - | then { | |
1399 | - | let eN = dm((er + 1), eC, (dT / 2), (dU / 2)) | |
1400 | - | let ds = eN._1 | |
1401 | - | let dt = eN._2 | |
1402 | - | let dk = eN._3 | |
1403 | - | $Tuple5(eC, eK, ds, dt, dk) | |
1404 | - | } | |
1405 | - | else throw("Strict value is not equal to itself.") | |
1406 | - | } | |
1407 | - | ||
1408 | - | ||
1409 | - | func eO (eP,eQ,eR) = { | |
1410 | - | let bz = aK() | |
1411 | - | let eS = bz._1 | |
1412 | - | let eT = bG(toBase58String(eS)) | |
1413 | - | let dv = bz._3 | |
1414 | - | let dT = bz._4 | |
1415 | - | let dU = bz._5 | |
1416 | - | let dV = bz._6 | |
1417 | - | let dw = bz._7 | |
1418 | - | let dx = bz._8 | |
1419 | - | let dy = bz._9 | |
1420 | - | let eo = bc() | |
1421 | - | let eU = aQ() | |
1422 | - | let dE = eU._1 | |
1423 | - | let dF = eU._2 | |
1424 | - | let eV = aU() | |
1425 | - | let dB = eV._1 | |
1426 | - | let dC = eV._2 | |
1427 | - | let dP = ci(dE, eP, eR) | |
1428 | - | let dQ = (dF + eR) | |
1429 | - | let dY = cA(dE, dF, dB, dC, dw, dx, dy) | |
1430 | - | let es = (dF - dY) | |
1431 | - | func ad (ae,af) = if (ae._1) | |
1432 | - | then ae | |
1433 | - | else { | |
1434 | - | let ew = ae._2 | |
1435 | - | let ex = ae._3 | |
1436 | - | let ey = ((ex + ew) / 2) | |
1437 | - | let ez = ck(dP, eQ, ey) | |
1438 | - | let eA = (dQ - ey) | |
1439 | - | let eB = (eA - cA(ez, eA, dB, dC, dw, dx, dy)) | |
1440 | - | if (if (((eB - es) > (-1 * eo))) | |
1441 | - | then (eo > (eB - es)) | |
1442 | - | else false) | |
1443 | - | then $Tuple5(true, ew, ex, ey, (eB - es)) | |
1444 | - | else if ((0 > (eB - es))) | |
1445 | - | then $Tuple5(false, ew, ey, ey, (eB - es)) | |
1446 | - | else $Tuple5(false, ey, ex, ey, (eB - es)) | |
1447 | - | } | |
1448 | - | ||
1449 | - | let eC = { | |
1450 | - | let eC = eR | |
1451 | - | let ez = ck(dP, eQ, eC) | |
1452 | - | let eA = (dQ - eC) | |
1453 | - | let dZ = cA(ez, eA, dB, dC, dw, dx, dy) | |
1454 | - | let eb = (dZ - dY) | |
1455 | - | if ((eb == 0)) | |
1456 | - | then eC | |
1457 | - | else { | |
1458 | - | let eW = { | |
1459 | - | let ag = r | |
1460 | - | let ah = size(ag) | |
1461 | - | let ai = $Tuple5(false, 0, (eR + dY), 0, 0) | |
1462 | - | func aj (ak,al) = if ((al >= ah)) | |
1463 | - | then ak | |
1464 | - | else ad(ak, ag[al]) | |
1465 | - | ||
1466 | - | func am (ak,al) = if ((al >= ah)) | |
1467 | - | then ak | |
1468 | - | else throw("List size exceeds 64") | |
1469 | - | ||
1470 | - | am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64) | |
1471 | - | } | |
1472 | - | let eF = eW._1 | |
1473 | - | let eG = eW._2 | |
1474 | - | let eH = eW._3 | |
1475 | - | let eI = eW._4 | |
1476 | - | let eJ = eW._5 | |
1477 | - | if (!(eF)) | |
1478 | - | then throw(((("_swap: can't calculate targetAmount=" + toString(eI)) + ",diff=") + toString(eJ))) | |
1479 | - | else eI | |
1480 | - | } | |
1481 | - | } | |
1482 | - | let eK = ck(dP, eQ, eC) | |
1483 | - | let eL = (dQ - eC) | |
1484 | - | let eM = if (cW(eK, eL, dE, dF, dB, dC, dV)) | |
1485 | - | then cL(dE, dF, eK, eL, dB, dC, dw, dx, dy) | |
1447 | + | if ((cl == cl)) | |
1448 | + | then { | |
1449 | + | let eF = bR(bS) | |
1450 | + | let dn = eF._1 | |
1451 | + | let do = eF._2 | |
1452 | + | let dB = bQ(aq) | |
1453 | + | let eG = Issue(ey, ez, 0, eA, true) | |
1454 | + | let eq = calculateAssetId(eG) | |
1455 | + | let eH = $Tuple10(eq, true, 0, dd, de, eB, cz, cA, eC, addressFromStringValue(eD)) | |
1456 | + | $Tuple2((((((((([eG] ++ aO(eH)) ++ aR(aq)) ++ aU(dB)) ++ aX(dB)) ++ ba(dn)) ++ bh(eE)) ++ bj(bi())) ++ aH(addressFromStringValue(aI))), unit) | |
1457 | + | } | |
1458 | + | else throw("Strict value is not equal to itself.") | |
1459 | + | } | |
1460 | + | ||
1461 | + | ||
1462 | + | ||
1463 | + | @Callable(ex) | |
1464 | + | func depositAll (bM) = { | |
1465 | + | let cl = if (if (bE()) | |
1466 | + | then bF() | |
1467 | + | else false) | |
1468 | + | then U(bM, 0, c, "depositAll: invalid amount") | |
1486 | 1469 | else false | |
1487 | - | if ((eM == eM)) | |
1488 | - | then { | |
1489 | - | let eX = dm((eQ + 1), eC, dT, dU) | |
1490 | - | let ds = eX._1 | |
1491 | - | let dt = eX._2 | |
1492 | - | let dk = eX._3 | |
1493 | - | $Tuple5(eC, eK, ds, dt, dk) | |
1494 | - | } | |
1495 | - | else throw("Strict value is not equal to itself.") | |
1496 | - | } | |
1497 | - | ||
1498 | - | ||
1499 | - | @Callable(eY) | |
1500 | - | func init (ao,bO,do,dp,eZ,fa,fb,fc,cu,cv,cw,fd,fe,aG) = { | |
1501 | - | let ch = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (bv(eY.caller)) | |
1502 | - | then by() | |
1503 | - | else false) | |
1504 | - | then bx() | |
1505 | - | else false) | |
1506 | - | then an(ao, "init: invalid assets") | |
1507 | - | else false) | |
1508 | - | then ac(bO, 1, g, "init: invalid assetWeights") | |
1509 | - | else false) | |
1510 | - | then ap(size(ao), size(bO), "init: invalid assetWeights size") | |
1511 | - | else false) | |
1512 | - | then S(do, 0, d, "init: invalid lp fee") | |
1513 | - | else false) | |
1514 | - | then S(dp, 0, d, "init: invalid protocol fee") | |
1515 | - | else false) | |
1516 | - | then aq(eZ, "init: invalid name") | |
1517 | - | else false) | |
1518 | - | then ar(fa, "init: invalid descr") | |
1519 | - | else false) | |
1520 | - | then as(fb, "init: invalid decimals") | |
1521 | - | else false) | |
1522 | - | then S(fc, 0, e, "init: invalid maxAllocationAmplifier") | |
1523 | - | else false) | |
1524 | - | then S(cu, 0, fc, "init: invalid weightAmplifier") | |
1525 | - | else false) | |
1526 | - | then S(cv, 0, c, "init: invalid slippageRate") | |
1527 | - | else false) | |
1528 | - | then S(cw, 0, c, "init: invalid feeMaxRate") | |
1529 | - | else false) | |
1530 | - | then L(fd, "init: invalid protocolFeeContract") | |
1531 | - | else false) | |
1532 | - | then S(fe, 1, c, "init: invalid precision") | |
1533 | - | else false) | |
1534 | - | then L(aG, "init: invalid pauser") | |
1535 | - | else false | |
1536 | - | if ((ch == ch)) | |
1537 | - | then { | |
1538 | - | let ff = bN(bO) | |
1539 | - | let dB = ff._1 | |
1540 | - | let dC = ff._2 | |
1541 | - | let dP = bM(ao) | |
1542 | - | let fg = Issue(eZ, fa, 0, fb, true) | |
1543 | - | let eS = calculateAssetId(fg) | |
1544 | - | let fh = $Tuple10(eS, true, 0, do, dp, fc, cu, cv, cw, addressFromStringValue(fd)) | |
1545 | - | $Tuple2(((((((([fg] ++ aM(fh)) ++ aP(ao)) ++ aS(dP)) ++ aW(dB)) ++ bd(fe)) ++ bf(be())) ++ aF(addressFromStringValue(aG))), unit) | |
1546 | - | } | |
1547 | - | else throw("Strict value is not equal to itself.") | |
1548 | - | } | |
1549 | - | ||
1550 | - | ||
1551 | - | ||
1552 | - | @Callable(eY) | |
1553 | - | func depositAll (bI) = { | |
1554 | - | let ch = if (if (bA()) | |
1555 | - | then bB() | |
1556 | - | else false) | |
1557 | - | then S(bI, 0, c, "depositAll: invalid amount") | |
1558 | - | else false | |
1559 | - | if ((ch == ch)) | |
1560 | - | then { | |
1561 | - | let bz = aK() | |
1562 | - | let eS = bz._1 | |
1563 | - | let eT = bG(toBase58String(eS)) | |
1564 | - | let dz = aO() | |
1565 | - | let fi = du(bI) | |
1566 | - | let dN = fi._1 | |
1567 | - | let dJ = fi._2 | |
1568 | - | let dP = fi._3 | |
1569 | - | func ad (ae,af) = { | |
1570 | - | let bZ = ae._1 | |
1571 | - | let cg = ay(eY.payments[bZ].assetId) | |
1572 | - | let fj = bG(cg) | |
1573 | - | let dH = dJ[bZ] | |
1574 | - | let fk = bH(dH, eT, fj, CEILING) | |
1575 | - | let eM = if ((cg != af)) | |
1576 | - | then throw(("depositAll: invalid payment: index=" + toString(bZ))) | |
1577 | - | else if ((0 >= fk)) | |
1470 | + | if ((cl == cl)) | |
1471 | + | then { | |
1472 | + | let bD = aM() | |
1473 | + | let eq = bD._1 | |
1474 | + | let er = bK(toBase58String(eq)) | |
1475 | + | let dl = aQ() | |
1476 | + | let eI = dj(bM) | |
1477 | + | let dz = eI._1 | |
1478 | + | let dv = eI._2 | |
1479 | + | let dB = eI._3 | |
1480 | + | func af (ag,ah) = { | |
1481 | + | let cd = ag._1 | |
1482 | + | let ck = aA(ex.payments[cd].assetId) | |
1483 | + | let eJ = bK(ck) | |
1484 | + | let dt = dv[cd] | |
1485 | + | let eK = bL(dt, er, eJ, CEILING) | |
1486 | + | let dS = if ((ck != ah)) | |
1487 | + | then throw(("depositAll: invalid payment: index=" + toString(cd))) | |
1488 | + | else if ((0 >= eK)) | |
1578 | 1489 | then throw("depositAll: too little amount required") | |
1579 | 1490 | else unit | |
1580 | - | if (( | |
1491 | + | if ((dS == dS)) | |
1581 | 1492 | then { | |
1582 | - | let | |
1583 | - | then [ScriptTransfer( | |
1584 | - | else if (( | |
1585 | - | then throw(((("depositAll: insufficient payment, index=" + toString( | |
1493 | + | let eL = if ((ex.payments[cd].amount > eK)) | |
1494 | + | then [ScriptTransfer(ex.caller, (ex.payments[cd].amount - eK), ex.payments[cd].assetId)] | |
1495 | + | else if ((eK > ex.payments[cd].amount)) | |
1496 | + | then throw(((("depositAll: insufficient payment, index=" + toString(cd)) + ", required=") + toString(eK))) | |
1586 | 1497 | else nil | |
1587 | - | $Tuple2(( | |
1498 | + | $Tuple2((cd + 1), (ag._2 ++ eL)) | |
1588 | 1499 | } | |
1589 | 1500 | else throw("Strict value is not equal to itself.") | |
1590 | 1501 | } | |
1591 | 1502 | ||
1592 | - | let | |
1593 | - | let | |
1594 | - | let | |
1595 | - | let | |
1596 | - | func | |
1597 | - | then | |
1598 | - | else | |
1599 | - | ||
1600 | - | func | |
1601 | - | then | |
1503 | + | let eM = { | |
1504 | + | let ai = dl | |
1505 | + | let aj = size(ai) | |
1506 | + | let ak = $Tuple2(0, nil) | |
1507 | + | func al (am,an) = if ((an >= aj)) | |
1508 | + | then am | |
1509 | + | else af(am, ai[an]) | |
1510 | + | ||
1511 | + | func ao (am,an) = if ((an >= aj)) | |
1512 | + | then am | |
1602 | 1513 | else throw("List size exceeds 10") | |
1603 | 1514 | ||
1604 | - | | |
1515 | + | ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1605 | 1516 | } | |
1606 | - | let | |
1607 | - | let | |
1608 | - | let | |
1609 | - | $Tuple2(((([Reissue( | |
1610 | - | } | |
1611 | - | else throw("Strict value is not equal to itself.") | |
1612 | - | } | |
1613 | - | ||
1614 | - | ||
1615 | - | ||
1616 | - | @Callable( | |
1617 | - | func deposit ( | |
1618 | - | let | |
1619 | - | if (( | |
1620 | - | then { | |
1621 | - | let | |
1622 | - | let | |
1623 | - | let | |
1624 | - | let | |
1625 | - | let | |
1626 | - | then | |
1517 | + | let cT = eM._1 | |
1518 | + | let eN = eM._2 | |
1519 | + | let eH = $Tuple10(bD._1, bD._2, (bD._3 + dz), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10) | |
1520 | + | $Tuple2(((([Reissue(eq, dz, true), ScriptTransfer(ex.caller, dz, eq)] ++ aO(eH)) ++ aU(dB)) ++ eN), unit) | |
1521 | + | } | |
1522 | + | else throw("Strict value is not equal to itself.") | |
1523 | + | } | |
1524 | + | ||
1525 | + | ||
1526 | + | ||
1527 | + | @Callable(ex) | |
1528 | + | func deposit (eO) = { | |
1529 | + | let cl = U(eO, 0, c, "deposit: invalid min lp amount") | |
1530 | + | if ((cl == cl)) | |
1531 | + | then { | |
1532 | + | let bD = aM() | |
1533 | + | let eq = bD._1 | |
1534 | + | let eP = aA(eq) | |
1535 | + | let er = bK(eP) | |
1536 | + | let dS = if (if (if (if (if (bE()) | |
1537 | + | then bF() | |
1627 | 1538 | else false) | |
1628 | - | then | |
1539 | + | then bI() | |
1629 | 1540 | else false) | |
1630 | - | then | |
1541 | + | then ar(size(ex.payments), 1, "deposit: invalid payments size") | |
1631 | 1542 | else false) | |
1632 | - | then | |
1543 | + | then ay(aQ(), aA(ex.payments[0].assetId), "deposit: invalid payment asset") | |
1633 | 1544 | else false) | |
1634 | - | then | |
1545 | + | then U(ex.payments[0].amount, 1, c, "deposit: invalid payment amount") | |
1635 | 1546 | else false | |
1636 | - | if (( | |
1547 | + | if ((dS == dS)) | |
1637 | 1548 | then { | |
1638 | - | let fq = ay(eY.payments[0].assetId) | |
1639 | - | let bR = bG(fq) | |
1640 | - | let fr = bH(eY.payments[0].amount, bR, eT, DOWN) | |
1641 | - | let fs = dS(fq, fr) | |
1642 | - | let dN = fs._1 | |
1643 | - | let dP = fs._2 | |
1644 | - | let ds = fs._3 | |
1645 | - | let dt = fs._4 | |
1646 | - | let dk = fs._5 | |
1647 | - | let ft = ((dN - ds) - dt) | |
1648 | - | let dR = S(ft, fo, c, "deposit: less than min") | |
1649 | - | if ((dR == dR)) | |
1549 | + | let eQ = aA(ex.payments[0].assetId) | |
1550 | + | let bV = bK(eQ) | |
1551 | + | let eR = bL(ex.payments[0].amount, bV, er, DOWN) | |
1552 | + | let eS = dD(eQ, eR) | |
1553 | + | let dz = eS._1 | |
1554 | + | let dB = eS._2 | |
1555 | + | let ej = eS._3 | |
1556 | + | let dh = eS._4 | |
1557 | + | let di = eS._5 | |
1558 | + | let cZ = eS._6 | |
1559 | + | let eT = ((dz - dh) - di) | |
1560 | + | let eU = U(eT, eO, c, "deposit: less than min") | |
1561 | + | if ((eU == eU)) | |
1650 | 1562 | then { | |
1651 | - | let | |
1652 | - | $Tuple2(((((([Reissue( | |
1563 | + | let eH = $Tuple10(bD._1, bD._2, (bD._3 + dz), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10) | |
1564 | + | $Tuple2((((((([Reissue(eq, dz, true), ScriptTransfer(ex.caller, eT, eq)] ++ aO(eH)) ++ aU(dB)) ++ aX(ej)) ++ bd(eP, (dh + bc(eP)))) ++ bf(eP, (di + be(eP)))) ++ bj(cZ)), unit) | |
1653 | 1565 | } | |
1654 | 1566 | else throw("Strict value is not equal to itself.") | |
1655 | 1567 | } | |
1656 | 1568 | else throw("Strict value is not equal to itself.") | |
1657 | 1569 | } | |
1658 | 1570 | else throw("Strict value is not equal to itself.") | |
1659 | 1571 | } | |
1660 | 1572 | ||
1661 | 1573 | ||
1662 | 1574 | ||
1663 | - | @Callable( | |
1575 | + | @Callable(ex) | |
1664 | 1576 | func withdrawAll () = { | |
1665 | - | let | |
1666 | - | let | |
1667 | - | let | |
1668 | - | let | |
1669 | - | let | |
1670 | - | let | |
1671 | - | then | |
1672 | - | else false) | |
1673 | - | then | |
1674 | - | else false) | |
1675 | - | then | |
1577 | + | let bD = aM() | |
1578 | + | let eq = bD._1 | |
1579 | + | let eP = toBase58String(eq) | |
1580 | + | let er = bK(eP) | |
1581 | + | let dl = aQ() | |
1582 | + | let cl = if (if (if (bE()) | |
1583 | + | then ar(size(ex.payments), 1, "withdrawAll: invalid payments size") | |
1584 | + | else false) | |
1585 | + | then aa(eP, aA(ex.payments[0].assetId), "withdrawAll: invalid payment asset") | |
1586 | + | else false) | |
1587 | + | then U(ex.payments[0].amount, 1, c, "withdrawAll: invalid payment amount") | |
1676 | 1588 | else false | |
1677 | - | if (( | |
1678 | - | then { | |
1679 | - | let | |
1680 | - | let | |
1681 | - | let | |
1682 | - | let | |
1683 | - | let | |
1684 | - | let | |
1685 | - | $Tuple2(((([Burn( | |
1686 | - | } | |
1687 | - | else throw("Strict value is not equal to itself.") | |
1688 | - | } | |
1689 | - | ||
1690 | - | ||
1691 | - | ||
1692 | - | @Callable( | |
1693 | - | func withdraw ( | |
1694 | - | let | |
1695 | - | let | |
1696 | - | let | |
1697 | - | let | |
1698 | - | let | |
1699 | - | let | |
1700 | - | then | |
1701 | - | else false) | |
1702 | - | then | |
1703 | - | else false) | |
1704 | - | then | |
1705 | - | else false) | |
1706 | - | then | |
1707 | - | else false) | |
1708 | - | then | |
1709 | - | else false) | |
1710 | - | then | |
1711 | - | else false) | |
1712 | - | then | |
1589 | + | if ((cl == cl)) | |
1590 | + | then { | |
1591 | + | let eV = dU(ex.payments[0].amount) | |
1592 | + | let dX = eV._1 | |
1593 | + | let dZ = eV._2 | |
1594 | + | let dB = eV._3 | |
1595 | + | let eW = ct(dl, dZ, ex.caller, er) | |
1596 | + | let eH = $Tuple10(bD._1, bD._2, (bD._3 - dX), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10) | |
1597 | + | $Tuple2(((([Burn(eq, dX)] ++ eW) ++ aO(eH)) ++ aU(dB)), unit) | |
1598 | + | } | |
1599 | + | else throw("Strict value is not equal to itself.") | |
1600 | + | } | |
1601 | + | ||
1602 | + | ||
1603 | + | ||
1604 | + | @Callable(ex) | |
1605 | + | func withdraw (T,eX) = { | |
1606 | + | let bD = aM() | |
1607 | + | let eq = bD._1 | |
1608 | + | let eP = toBase58String(eq) | |
1609 | + | let er = bK(eP) | |
1610 | + | let dl = aQ() | |
1611 | + | let cl = if (if (if (if (if (if (if (bE()) | |
1612 | + | then bF() | |
1613 | + | else false) | |
1614 | + | then bI() | |
1615 | + | else false) | |
1616 | + | then ar(size(ex.payments), 1, "withdraw: invalid payments size") | |
1617 | + | else false) | |
1618 | + | then aa(eP, aA(ex.payments[0].assetId), "withdraw: invalid payment asset") | |
1619 | + | else false) | |
1620 | + | then U(ex.payments[0].amount, 1, c, "withdraw: invalid payment amount") | |
1621 | + | else false) | |
1622 | + | then ay(dl, T, "withdraw: invalid assetId") | |
1623 | + | else false) | |
1624 | + | then U(eX, 0, c, "withdraw: invalid minAmount") | |
1713 | 1625 | else false | |
1714 | - | if ((ch == ch)) | |
1715 | - | then { | |
1716 | - | let fx = em(R, eY.payments[0].amount) | |
1717 | - | let fy = fx._1 | |
1718 | - | let eK = fx._2 | |
1719 | - | let ds = fx._3 | |
1720 | - | let dt = fx._4 | |
1721 | - | let dk = fx._5 | |
1722 | - | let fz = ((fy - ds) - dt) | |
1723 | - | let fA = bG(R) | |
1724 | - | let fB = bH(fz, eT, fA, DOWN) | |
1725 | - | let eM = S(fB, fw, c, "withdraw: less than min") | |
1726 | - | if ((eM == eM)) | |
1626 | + | if ((cl == cl)) | |
1627 | + | then { | |
1628 | + | let eY = ea(T, ex.payments[0].amount) | |
1629 | + | let eZ = eY._1 | |
1630 | + | let fa = eY._2 | |
1631 | + | let fb = eY._3 | |
1632 | + | let dh = eY._4 | |
1633 | + | let di = eY._5 | |
1634 | + | let cZ = eY._6 | |
1635 | + | let fc = ((eZ - dh) - di) | |
1636 | + | let fd = bK(T) | |
1637 | + | let fe = bL(fc, er, fd, DOWN) | |
1638 | + | let dS = U(fe, eX, c, "withdraw: less than min") | |
1639 | + | if ((dS == dS)) | |
1727 | 1640 | then { | |
1728 | - | let | |
1729 | - | $Tuple2(((((([Burn( | |
1641 | + | let eH = $Tuple10(bD._1, bD._2, (bD._3 - ex.payments[0].amount), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10) | |
1642 | + | $Tuple2((((((([Burn(eq, ex.payments[0].amount), ScriptTransfer(ex.caller, fe, aC(T))] ++ aO(eH)) ++ aU(fa)) ++ aX(fb)) ++ bd(T, (dh + bc(T)))) ++ bf(T, (di + be(T)))) ++ bj(cZ)), unit) | |
1730 | 1643 | } | |
1731 | 1644 | else throw("Strict value is not equal to itself.") | |
1732 | 1645 | } | |
1733 | 1646 | else throw("Strict value is not equal to itself.") | |
1734 | 1647 | } | |
1735 | 1648 | ||
1736 | 1649 | ||
1737 | 1650 | ||
1738 | - | @Callable( | |
1739 | - | func swap ( | |
1740 | - | let | |
1741 | - | let | |
1742 | - | let | |
1743 | - | let | |
1744 | - | let | |
1745 | - | let | |
1746 | - | let | |
1747 | - | if (( | |
1748 | - | then { | |
1749 | - | let | |
1750 | - | if (( | |
1651 | + | @Callable(ex) | |
1652 | + | func swap (ff,eX) = { | |
1653 | + | let bD = aM() | |
1654 | + | let eq = bD._1 | |
1655 | + | let er = bK(toBase58String(eq)) | |
1656 | + | let dl = aQ() | |
1657 | + | let fg = aA(ex.payments[0].assetId) | |
1658 | + | let fh = bL(ex.payments[0].amount, bK(fg), er, DOWN) | |
1659 | + | let dL = valueOrErrorMessage(indexOf(dl, fg), "swap: invalid source asset") | |
1660 | + | if ((dL == dL)) | |
1661 | + | then { | |
1662 | + | let ee = valueOrErrorMessage(indexOf(dl, ff), "swap: invalid target asset") | |
1663 | + | if ((ee == ee)) | |
1751 | 1664 | then { | |
1752 | - | let | |
1753 | - | then | |
1665 | + | let cl = if (if (if (if (if (if (bE()) | |
1666 | + | then bF() | |
1754 | 1667 | else false) | |
1755 | - | then | |
1668 | + | then bI() | |
1756 | 1669 | else false) | |
1757 | - | then | |
1670 | + | then U(eX, 0, c, "swap: invalid min target amount") | |
1758 | 1671 | else false) | |
1759 | - | then | |
1672 | + | then U(fh, 1, c, "swap: invalid source amount") | |
1760 | 1673 | else false) | |
1761 | - | then | |
1674 | + | then ad(fg, ff, "swap: same assets") | |
1762 | 1675 | else false) | |
1763 | - | then | |
1676 | + | then ar(size(ex.payments), 1, "swap: invalid payments size") | |
1764 | 1677 | else false | |
1765 | - | if (( | |
1678 | + | if ((cl == cl)) | |
1766 | 1679 | then { | |
1767 | - | let fG = eO(fF, er, fE) | |
1768 | - | let fy = fG._1 | |
1769 | - | let eK = fG._2 | |
1770 | - | let ds = fG._3 | |
1771 | - | let dt = fG._4 | |
1772 | - | let dk = fG._5 | |
1773 | - | let fz = ((fy - ds) - dt) | |
1774 | - | let fA = bG(fC) | |
1775 | - | let fB = bH(fz, eT, fA, DOWN) | |
1776 | - | let eM = S(fB, fw, c, "swap: less than min") | |
1777 | - | if ((eM == eM)) | |
1778 | - | then $Tuple2((((([ScriptTransfer(eY.caller, fB, aA(fC))] ++ aS(eK)) ++ aZ(fC, (ds + aY(fC)))) ++ bb(fC, (dt + ba(fC)))) ++ bf(dk)), unit) | |
1680 | + | let fi = em(dL, ee, fh) | |
1681 | + | let eZ = fi._1 | |
1682 | + | let fa = fi._2 | |
1683 | + | let fb = fi._3 | |
1684 | + | let dh = fi._4 | |
1685 | + | let di = fi._5 | |
1686 | + | let cZ = fi._6 | |
1687 | + | let fc = ((eZ - dh) - di) | |
1688 | + | let fd = bK(ff) | |
1689 | + | let fe = bL(fc, er, fd, DOWN) | |
1690 | + | let dS = U(fe, eX, c, "swap: less than min") | |
1691 | + | if ((dS == dS)) | |
1692 | + | then $Tuple2(((((([ScriptTransfer(ex.caller, fe, aC(ff))] ++ aU(fa)) ++ aX(fb)) ++ bd(ff, (dh + bc(ff)))) ++ bf(ff, (di + be(ff)))) ++ bj(cZ)), unit) | |
1779 | 1693 | else throw("Strict value is not equal to itself.") | |
1780 | 1694 | } | |
1781 | 1695 | else throw("Strict value is not equal to itself.") | |
1782 | 1696 | } | |
1783 | 1697 | else throw("Strict value is not equal to itself.") | |
1784 | 1698 | } | |
1785 | 1699 | else throw("Strict value is not equal to itself.") | |
1786 | 1700 | } | |
1787 | 1701 | ||
1788 | 1702 | ||
1789 | 1703 | ||
1790 | - | @Callable( | |
1791 | - | func getDepositAll ( | |
1792 | - | let | |
1793 | - | if (( | |
1794 | - | then { | |
1795 | - | let | |
1796 | - | let | |
1797 | - | let | |
1798 | - | let | |
1799 | - | $Tuple2(nil, $Tuple2( | |
1800 | - | } | |
1801 | - | else throw("Strict value is not equal to itself.") | |
1802 | - | } | |
1803 | - | ||
1804 | - | ||
1805 | - | ||
1806 | - | @Callable( | |
1807 | - | func getDeposit ( | |
1808 | - | let | |
1809 | - | then | |
1704 | + | @Callable(ex) | |
1705 | + | func getDepositAll (cy) = { | |
1706 | + | let cl = U(cy, 1, c, "getDepositAll: invalid amount") | |
1707 | + | if ((cl == cl)) | |
1708 | + | then { | |
1709 | + | let fj = dj(cy) | |
1710 | + | let dz = fj._1 | |
1711 | + | let dv = fj._2 | |
1712 | + | let dB = fj._3 | |
1713 | + | $Tuple2(nil, $Tuple2(dz, dv)) | |
1714 | + | } | |
1715 | + | else throw("Strict value is not equal to itself.") | |
1716 | + | } | |
1717 | + | ||
1718 | + | ||
1719 | + | ||
1720 | + | @Callable(ex) | |
1721 | + | func getDeposit (T,bM) = { | |
1722 | + | let cl = if (ay(aQ(), T, "getDeposit: invalid asset")) | |
1723 | + | then U(bM, 1, c, "getDeposit: invalid amount") | |
1810 | 1724 | else false | |
1811 | - | if ((ch == ch)) | |
1812 | - | then { | |
1813 | - | let bz = aK() | |
1814 | - | let eS = bz._1 | |
1815 | - | let eT = bG(toBase58String(eS)) | |
1816 | - | let bR = bG(R) | |
1817 | - | let fr = bH(bI, bR, eT, DOWN) | |
1818 | - | let fI = dS(R, fr) | |
1819 | - | let dN = fI._1 | |
1820 | - | let dP = fI._2 | |
1821 | - | let ds = fI._3 | |
1822 | - | let dt = fI._4 | |
1823 | - | let dk = fI._5 | |
1824 | - | let ft = ((dN - ds) - dt) | |
1825 | - | $Tuple2(nil, ft) | |
1826 | - | } | |
1827 | - | else throw("Strict value is not equal to itself.") | |
1828 | - | } | |
1829 | - | ||
1830 | - | ||
1831 | - | ||
1832 | - | @Callable(eY) | |
1833 | - | func getWithdrawAll (en) = { | |
1834 | - | let ch = S(en, 0, c, "getWithdrawAll: invalid amount") | |
1835 | - | if ((ch == ch)) | |
1836 | - | then { | |
1837 | - | let fJ = eg(en) | |
1838 | - | let ej = fJ._1 | |
1839 | - | let fK = fJ._2 | |
1840 | - | let dP = fJ._3 | |
1841 | - | $Tuple2(nil, fK) | |
1842 | - | } | |
1843 | - | else throw("Strict value is not equal to itself.") | |
1844 | - | } | |
1845 | - | ||
1846 | - | ||
1847 | - | ||
1848 | - | @Callable(eY) | |
1849 | - | func getWithdraw (R,bI) = { | |
1850 | - | let ch = if (aw(aO(), R, "getWithdraw: invalid asset")) | |
1851 | - | then S(bI, 1, c, "getWithdraw: invalid amount") | |
1725 | + | if ((cl == cl)) | |
1726 | + | then { | |
1727 | + | let bD = aM() | |
1728 | + | let eq = bD._1 | |
1729 | + | let er = bK(toBase58String(eq)) | |
1730 | + | let bV = bK(T) | |
1731 | + | let eR = bL(bM, bV, er, DOWN) | |
1732 | + | let fk = dD(T, eR) | |
1733 | + | let dz = fk._1 | |
1734 | + | let dB = fk._2 | |
1735 | + | let ej = fk._3 | |
1736 | + | let dh = fk._4 | |
1737 | + | let di = fk._5 | |
1738 | + | let cZ = fk._6 | |
1739 | + | let eT = ((dz - dh) - di) | |
1740 | + | $Tuple2(nil, eT) | |
1741 | + | } | |
1742 | + | else throw("Strict value is not equal to itself.") | |
1743 | + | } | |
1744 | + | ||
1745 | + | ||
1746 | + | ||
1747 | + | @Callable(ex) | |
1748 | + | func getWithdrawAll (cy) = { | |
1749 | + | let cl = U(cy, 0, c, "getWithdrawAll: invalid amount") | |
1750 | + | if ((cl == cl)) | |
1751 | + | then { | |
1752 | + | let fl = dU(cy) | |
1753 | + | let dX = fl._1 | |
1754 | + | let fm = fl._2 | |
1755 | + | let dB = fl._3 | |
1756 | + | $Tuple2(nil, fm) | |
1757 | + | } | |
1758 | + | else throw("Strict value is not equal to itself.") | |
1759 | + | } | |
1760 | + | ||
1761 | + | ||
1762 | + | ||
1763 | + | @Callable(ex) | |
1764 | + | func getWithdraw (T,bM) = { | |
1765 | + | let cl = if (ay(aQ(), T, "getWithdraw: invalid asset")) | |
1766 | + | then U(bM, 1, c, "getWithdraw: invalid amount") | |
1852 | 1767 | else false | |
1853 | - | if ((ch == ch)) | |
1854 | - | then { | |
1855 | - | let bz = aK() | |
1856 | - | let eS = bz._1 | |
1857 | - | let eT = bG(toBase58String(eS)) | |
1858 | - | let fL = em(R, bI) | |
1859 | - | let fy = fL._1 | |
1860 | - | let dP = fL._2 | |
1861 | - | let ds = fL._3 | |
1862 | - | let dt = fL._4 | |
1863 | - | let dk = fL._5 | |
1864 | - | let fz = ((fy - ds) - dt) | |
1865 | - | let fA = bG(R) | |
1866 | - | let fB = bH(fz, eT, fA, DOWN) | |
1867 | - | $Tuple2(nil, fB) | |
1868 | - | } | |
1869 | - | else throw("Strict value is not equal to itself.") | |
1870 | - | } | |
1871 | - | ||
1872 | - | ||
1873 | - | ||
1874 | - | @Callable(eY) | |
1875 | - | func getSwap (fM,fC,eR) = { | |
1876 | - | let bz = aK() | |
1877 | - | let eS = bz._1 | |
1878 | - | let eT = bG(toBase58String(eS)) | |
1879 | - | let dz = aO() | |
1880 | - | let fF = valueOrErrorMessage(indexOf(dz, fM), "swap: invalid source asset") | |
1881 | - | if ((fF == fF)) | |
1882 | - | then { | |
1883 | - | let er = valueOrErrorMessage(indexOf(dz, fC), "swap: invalid target asset") | |
1884 | - | if ((er == er)) | |
1768 | + | if ((cl == cl)) | |
1769 | + | then { | |
1770 | + | let bD = aM() | |
1771 | + | let eq = bD._1 | |
1772 | + | let er = bK(toBase58String(eq)) | |
1773 | + | let fn = ea(T, bM) | |
1774 | + | let eZ = fn._1 | |
1775 | + | let dB = fn._2 | |
1776 | + | let ej = fn._3 | |
1777 | + | let dh = fn._4 | |
1778 | + | let di = fn._5 | |
1779 | + | let cZ = fn._6 | |
1780 | + | let fc = ((eZ - dh) - di) | |
1781 | + | let fd = bK(T) | |
1782 | + | let fe = bL(fc, er, fd, DOWN) | |
1783 | + | $Tuple2(nil, fe) | |
1784 | + | } | |
1785 | + | else throw("Strict value is not equal to itself.") | |
1786 | + | } | |
1787 | + | ||
1788 | + | ||
1789 | + | ||
1790 | + | @Callable(ex) | |
1791 | + | func getSwap (fo,ff,ep) = { | |
1792 | + | let bD = aM() | |
1793 | + | let eq = bD._1 | |
1794 | + | let er = bK(toBase58String(eq)) | |
1795 | + | let dl = aQ() | |
1796 | + | let dL = valueOrErrorMessage(indexOf(dl, fo), "swap: invalid source asset") | |
1797 | + | if ((dL == dL)) | |
1798 | + | then { | |
1799 | + | let ee = valueOrErrorMessage(indexOf(dl, ff), "swap: invalid target asset") | |
1800 | + | if ((ee == ee)) | |
1885 | 1801 | then { | |
1886 | - | let | |
1887 | - | let | |
1888 | - | then | |
1802 | + | let fh = bL(ep, bK(fo), er, DOWN) | |
1803 | + | let cl = if (U(fh, 1, c, "swap: invalid source amount")) | |
1804 | + | then ad(fo, ff, "swap: same assets") | |
1889 | 1805 | else false | |
1890 | - | if (( | |
1806 | + | if ((cl == cl)) | |
1891 | 1807 | then { | |
1892 | - | let fN = eO(fF, er, fE) | |
1893 | - | let fy = fN._1 | |
1894 | - | let eK = fN._2 | |
1895 | - | let ds = fN._3 | |
1896 | - | let dt = fN._4 | |
1897 | - | let dk = fN._5 | |
1898 | - | let fz = ((fy - ds) - dt) | |
1899 | - | let fA = bG(fC) | |
1900 | - | let fB = bH(fz, eT, fA, DOWN) | |
1901 | - | $Tuple2(nil, fB) | |
1808 | + | let fp = em(dL, ee, fh) | |
1809 | + | let eZ = fp._1 | |
1810 | + | let fa = fp._2 | |
1811 | + | let fb = fp._3 | |
1812 | + | let dh = fp._4 | |
1813 | + | let di = fp._5 | |
1814 | + | let cZ = fp._6 | |
1815 | + | let fc = ((eZ - dh) - di) | |
1816 | + | let fd = bK(ff) | |
1817 | + | let fe = bL(fc, er, fd, DOWN) | |
1818 | + | $Tuple2(nil, fe) | |
1902 | 1819 | } | |
1903 | 1820 | else throw("Strict value is not equal to itself.") | |
1904 | 1821 | } | |
1905 | 1822 | else throw("Strict value is not equal to itself.") | |
1906 | 1823 | } | |
1907 | 1824 | else throw("Strict value is not equal to itself.") | |
1908 | 1825 | } | |
1909 | 1826 | ||
1910 | 1827 | ||
1911 | 1828 | ||
1912 | - | @Callable(eY) | |
1913 | - | func getClaim (bh) = { | |
1914 | - | let fO = if ((size(bh) > 0)) | |
1915 | - | then valueOrErrorMessage(addressFromString(bh), "getClaim: invalid user") | |
1916 | - | else eY.caller | |
1917 | - | let fP = cX(fO) | |
1918 | - | let fQ = fP._1 | |
1919 | - | let cZ = fP._2 | |
1920 | - | $Tuple2(nil, cZ) | |
1921 | - | } | |
1922 | - | ||
1923 | - | ||
1924 | - | ||
1925 | - | @Callable(eY) | |
1926 | - | func getUtilFunc () = { | |
1927 | - | let bz = aK() | |
1928 | - | let dv = bz._3 | |
1929 | - | let dw = bz._7 | |
1930 | - | let dx = bz._8 | |
1931 | - | let dy = bz._9 | |
1932 | - | let fR = aQ() | |
1933 | - | let dP = fR._1 | |
1934 | - | let dQ = fR._2 | |
1935 | - | let fS = aU() | |
1936 | - | let dB = fS._1 | |
1937 | - | let dC = fS._2 | |
1938 | - | let dZ = cA(dP, dQ, dB, dC, dw, dx, dy) | |
1939 | - | let eB = (dQ - dZ) | |
1940 | - | $Tuple2(nil, $Tuple2(eB, dv)) | |
1941 | - | } | |
1942 | - | ||
1943 | - | ||
1944 | - | ||
1945 | - | @Callable(eY) | |
1946 | - | func getFeeFunc () = { | |
1947 | - | let bz = aK() | |
1948 | - | let dw = bz._7 | |
1949 | - | let dx = bz._8 | |
1950 | - | let dy = bz._9 | |
1951 | - | let fT = aQ() | |
1952 | - | let dP = fT._1 | |
1953 | - | let dQ = fT._2 | |
1954 | - | let fU = aU() | |
1955 | - | let dB = fU._1 | |
1956 | - | let dC = fU._2 | |
1957 | - | let dZ = cA(dP, dQ, dB, dC, dw, dx, dy) | |
1958 | - | $Tuple2(nil, dZ) | |
1959 | - | } | |
1960 | - | ||
1961 | - | ||
1962 | - | ||
1963 | - | @Callable(eY) | |
1964 | - | func checkpoint (bh) = { | |
1965 | - | let ch = if (bA()) | |
1966 | - | then bB() | |
1829 | + | @Callable(ex) | |
1830 | + | func getClaim (bl) = { | |
1831 | + | let fq = if ((size(bl) > 0)) | |
1832 | + | then valueOrErrorMessage(addressFromString(bl), "getClaim: invalid user") | |
1833 | + | else ex.caller | |
1834 | + | let fr = cM(fq) | |
1835 | + | let fs = fr._1 | |
1836 | + | let cO = fr._2 | |
1837 | + | $Tuple2(nil, cO) | |
1838 | + | } | |
1839 | + | ||
1840 | + | ||
1841 | + | ||
1842 | + | @Callable(ex) | |
1843 | + | func getAssetId () = { | |
1844 | + | let bD = aM() | |
1845 | + | let eq = bD._1 | |
1846 | + | $Tuple2(nil, toBase58String(eq)) | |
1847 | + | } | |
1848 | + | ||
1849 | + | ||
1850 | + | ||
1851 | + | @Callable(ex) | |
1852 | + | func getDecimals () = { | |
1853 | + | let bD = aM() | |
1854 | + | let eq = bD._1 | |
1855 | + | let er = bK(toBase58String(eq)) | |
1856 | + | $Tuple2(nil, er) | |
1857 | + | } | |
1858 | + | ||
1859 | + | ||
1860 | + | ||
1861 | + | @Callable(ex) | |
1862 | + | func checkpoint (bl) = { | |
1863 | + | let cl = if (bE()) | |
1864 | + | then bF() | |
1967 | 1865 | else false | |
1968 | - | if (( | |
1969 | - | then { | |
1970 | - | let | |
1971 | - | then valueOrErrorMessage(addressFromString( | |
1972 | - | else | |
1973 | - | | |
1974 | - | } | |
1975 | - | else throw("Strict value is not equal to itself.") | |
1976 | - | } | |
1977 | - | ||
1978 | - | ||
1979 | - | ||
1980 | - | @Callable( | |
1866 | + | if ((cl == cl)) | |
1867 | + | then { | |
1868 | + | let fq = if ((size(bl) > 0)) | |
1869 | + | then valueOrErrorMessage(addressFromString(bl), "checkpoint: invalid user") | |
1870 | + | else ex.caller | |
1871 | + | cM(fq) | |
1872 | + | } | |
1873 | + | else throw("Strict value is not equal to itself.") | |
1874 | + | } | |
1875 | + | ||
1876 | + | ||
1877 | + | ||
1878 | + | @Callable(ex) | |
1981 | 1879 | func stake () = { | |
1982 | - | let | |
1983 | - | then | |
1880 | + | let cl = if (bE()) | |
1881 | + | then bF() | |
1984 | 1882 | else false | |
1985 | - | if (( | |
1986 | - | then { | |
1987 | - | let | |
1988 | - | let | |
1989 | - | let | |
1990 | - | then | |
1883 | + | if ((cl == cl)) | |
1884 | + | then { | |
1885 | + | let bD = aM() | |
1886 | + | let eP = aA(bD._1) | |
1887 | + | let dS = if (if (ar(size(ex.payments), 1, "stake: invalid payments size")) | |
1888 | + | then aa(eP, aA(ex.payments[0].assetId), "stake: invalid payment asset") | |
1991 | 1889 | else false) | |
1992 | - | then | |
1890 | + | then U(ex.payments[0].amount, 0, c, "stake: invalid payment amount") | |
1993 | 1891 | else false | |
1994 | - | if (( | |
1892 | + | if ((dS == dS)) | |
1995 | 1893 | then { | |
1996 | - | let | |
1997 | - | let | |
1998 | - | let | |
1999 | - | $Tuple2((( | |
1894 | + | let ft = cM(ex.caller) | |
1895 | + | let fs = ft._1 | |
1896 | + | let cO = ft._2 | |
1897 | + | $Tuple2(((fs ++ bo(ex.caller, (bn(ex.caller) + ex.payments[0].amount))) ++ bq((bp() + ex.payments[0].amount))), unit) | |
2000 | 1898 | } | |
2001 | 1899 | else throw("Strict value is not equal to itself.") | |
2002 | 1900 | } | |
2003 | 1901 | else throw("Strict value is not equal to itself.") | |
2004 | 1902 | } | |
2005 | 1903 | ||
2006 | 1904 | ||
2007 | 1905 | ||
2008 | - | @Callable( | |
2009 | - | func unstake ( | |
2010 | - | let | |
2011 | - | then | |
1906 | + | @Callable(ex) | |
1907 | + | func unstake (bM) = { | |
1908 | + | let cl = if (bE()) | |
1909 | + | then bF() | |
2012 | 1910 | else false | |
2013 | - | if (( | |
2014 | - | then { | |
2015 | - | let | |
2016 | - | let | |
2017 | - | let | |
2018 | - | let | |
2019 | - | if (( | |
1911 | + | if ((cl == cl)) | |
1912 | + | then { | |
1913 | + | let bD = aM() | |
1914 | + | let eq = bD._1 | |
1915 | + | let cN = bn(ex.caller) | |
1916 | + | let dS = U(bM, 0, cN, "unstake: invalid amount") | |
1917 | + | if ((dS == dS)) | |
2020 | 1918 | then { | |
2021 | - | let | |
2022 | - | let | |
2023 | - | let | |
2024 | - | $Tuple2(((([ScriptTransfer( | |
1919 | + | let fu = cM(ex.caller) | |
1920 | + | let fs = fu._1 | |
1921 | + | let cO = fu._2 | |
1922 | + | $Tuple2(((([ScriptTransfer(ex.caller, bM, eq)] ++ fs) ++ bo(ex.caller, (cN - bM))) ++ bq((bp() - bM))), unit) | |
2025 | 1923 | } | |
2026 | 1924 | else throw("Strict value is not equal to itself.") | |
2027 | 1925 | } | |
2028 | 1926 | else throw("Strict value is not equal to itself.") | |
2029 | 1927 | } | |
2030 | 1928 | ||
2031 | 1929 | ||
2032 | 1930 | ||
2033 | - | @Callable( | |
2034 | - | func claim ( | |
2035 | - | let | |
2036 | - | then | |
1931 | + | @Callable(ex) | |
1932 | + | func claim (bl) = { | |
1933 | + | let cl = if (bE()) | |
1934 | + | then bF() | |
2037 | 1935 | else false | |
2038 | - | if ((ch == ch)) | |
2039 | - | then { | |
2040 | - | let fO = if ((size(bh) > 0)) | |
2041 | - | then valueOrErrorMessage(addressFromString(bh), "claim: invalid user") | |
2042 | - | else eY.caller | |
2043 | - | let bz = aK() | |
2044 | - | let eS = bz._1 | |
2045 | - | let fp = ay(eS) | |
2046 | - | let dz = [fp, aO()] | |
2047 | - | let fX = (size(dz) - 1) | |
2048 | - | let cY = bj(fO) | |
2049 | - | let fY = cX(fO) | |
2050 | - | let fQ = fY._1 | |
2051 | - | let cZ = fY._2 | |
2052 | - | func ad (ae,fZ) = { | |
2053 | - | let bZ = ae._1 | |
2054 | - | if (if ((fX >= bZ)) | |
2055 | - | then (fZ > 0) | |
1936 | + | if ((cl == cl)) | |
1937 | + | then { | |
1938 | + | let fq = if ((size(bl) > 0)) | |
1939 | + | then valueOrErrorMessage(addressFromString(bl), "claim: invalid user") | |
1940 | + | else ex.caller | |
1941 | + | let bD = aM() | |
1942 | + | let eq = bD._1 | |
1943 | + | let eP = aA(eq) | |
1944 | + | let dl = [eP, aQ()] | |
1945 | + | let cL = (size(dl) - 1) | |
1946 | + | let fv = cM(fq) | |
1947 | + | let fs = fv._1 | |
1948 | + | let cO = fv._2 | |
1949 | + | func af (ag,fw) = { | |
1950 | + | let cd = ag._1 | |
1951 | + | if (if ((cL >= cd)) | |
1952 | + | then (fw > 0) | |
2056 | 1953 | else false) | |
2057 | 1954 | then { | |
2058 | - | let | |
2059 | - | $Tuple3(( | |
1955 | + | let fx = dl[cd] | |
1956 | + | $Tuple3((cd + 1), (ag._2 :+ 0), (ag._3 :+ ScriptTransfer(fq, fw, aC(fx)))) | |
2060 | 1957 | } | |
2061 | - | else $Tuple3(( | |
1958 | + | else $Tuple3((cd + 1), (ag._2 :+ fw), ag._3) | |
2062 | 1959 | } | |
2063 | 1960 | ||
2064 | - | let | |
2065 | - | let | |
2066 | - | let | |
2067 | - | let | |
2068 | - | func | |
2069 | - | then | |
2070 | - | else | |
2071 | - | ||
2072 | - | func | |
2073 | - | then | |
1961 | + | let fy = { | |
1962 | + | let ai = cO | |
1963 | + | let aj = size(ai) | |
1964 | + | let ak = $Tuple3(0, nil, nil) | |
1965 | + | func al (am,an) = if ((an >= aj)) | |
1966 | + | then am | |
1967 | + | else af(am, ai[an]) | |
1968 | + | ||
1969 | + | func ao (am,an) = if ((an >= aj)) | |
1970 | + | then am | |
2074 | 1971 | else throw("List size exceeds 11") | |
2075 | 1972 | ||
2076 | - | | |
1973 | + | ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
2077 | 1974 | } | |
2078 | - | let de = gb._1 | |
2079 | - | let gc = gb._2 | |
2080 | - | let gd = gb._3 | |
2081 | - | $Tuple2(((gd ++ removeByIndex(fQ, 0)) ++ bo(fO, gc)), unit) | |
2082 | - | } | |
2083 | - | else throw("Strict value is not equal to itself.") | |
2084 | - | } | |
2085 | - | ||
2086 | - | ||
2087 | - | ||
2088 | - | @Callable(eY) | |
1975 | + | let cT = fy._1 | |
1976 | + | let fz = fy._2 | |
1977 | + | let fA = fy._3 | |
1978 | + | $Tuple2(((fA ++ removeByIndex(fs, 0)) ++ bs(fq, fz)), unit) | |
1979 | + | } | |
1980 | + | else throw("Strict value is not equal to itself.") | |
1981 | + | } | |
1982 | + | ||
1983 | + | ||
1984 | + | ||
1985 | + | @Callable(ex) | |
1986 | + | func claimAll (bl) = { | |
1987 | + | let cl = if (bE()) | |
1988 | + | then bF() | |
1989 | + | else false | |
1990 | + | if ((cl == cl)) | |
1991 | + | then { | |
1992 | + | let fq = if ((size(bl) > 0)) | |
1993 | + | then valueOrErrorMessage(addressFromString(bl), "claimAll: invalid user") | |
1994 | + | else ex.caller | |
1995 | + | let bD = aM() | |
1996 | + | let eq = bD._1 | |
1997 | + | let eP = aA(eq) | |
1998 | + | let dl = [eP, aQ()] | |
1999 | + | let cL = (size(dl) - 1) | |
2000 | + | let fB = aS() | |
2001 | + | let dB = fB._1 | |
2002 | + | let dC = fB._2 | |
2003 | + | let fC = cM(fq) | |
2004 | + | let fs = fC._1 | |
2005 | + | let cO = fC._2 | |
2006 | + | func af (ag,fw) = { | |
2007 | + | let cd = ag._1 | |
2008 | + | if ((cd == 0)) | |
2009 | + | then $Tuple5((cd + 1), (ag._2 :+ 0), ag._3, ag._4, (ag._5 + fw)) | |
2010 | + | else if (if ((cd > 0)) | |
2011 | + | then (cL >= cd) | |
2012 | + | else false) | |
2013 | + | then { | |
2014 | + | let fD = (cd - 1) | |
2015 | + | let aT = dB[fD] | |
2016 | + | $Tuple5((cd + 1), (ag._2 :+ 0), (ag._3 :+ (aT + fw)), (ag._4 + fw), ag._5) | |
2017 | + | } | |
2018 | + | else $Tuple5((cd + 1), (ag._2 :+ 0), ag._3, ag._4, ag._5) | |
2019 | + | } | |
2020 | + | ||
2021 | + | let fE = { | |
2022 | + | let ai = cO | |
2023 | + | let aj = size(ai) | |
2024 | + | let ak = $Tuple5(0, nil, nil, 0, 0) | |
2025 | + | func al (am,an) = if ((an >= aj)) | |
2026 | + | then am | |
2027 | + | else af(am, ai[an]) | |
2028 | + | ||
2029 | + | func ao (am,an) = if ((an >= aj)) | |
2030 | + | then am | |
2031 | + | else throw("List size exceeds 11") | |
2032 | + | ||
2033 | + | ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
2034 | + | } | |
2035 | + | let cT = fE._1 | |
2036 | + | let fz = fE._2 | |
2037 | + | let fF = fE._3 | |
2038 | + | let dz = fE._4 | |
2039 | + | let fG = fE._5 | |
2040 | + | let eH = $Tuple10(bD._1, bD._2, (bD._3 + dz), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10) | |
2041 | + | $Tuple2((((([Reissue(eq, dz, true), ScriptTransfer(ex.caller, (dz + fG), eq)] ++ aO(eH)) ++ aU(fF)) ++ removeByIndex(fs, 0)) ++ bs(fq, fz)), unit) | |
2042 | + | } | |
2043 | + | else throw("Strict value is not equal to itself.") | |
2044 | + | } | |
2045 | + | ||
2046 | + | ||
2047 | + | ||
2048 | + | @Callable(ex) | |
2049 | + | func updatePoolFees (dd,de) = { | |
2050 | + | let cl = if (if (if (bz(ex.caller)) | |
2051 | + | then bE() | |
2052 | + | else false) | |
2053 | + | then U(dd, 0, d, "updatePoolFees: invalid lp fee") | |
2054 | + | else false) | |
2055 | + | then U(de, 0, d, "updatePoolFees: invalid protocol fee") | |
2056 | + | else false | |
2057 | + | if ((cl == cl)) | |
2058 | + | then { | |
2059 | + | let bD = aM() | |
2060 | + | let eH = $Tuple10(bD._1, bD._2, bD._3, dd, de, bD._6, bD._7, bD._8, bD._9, bD._10) | |
2061 | + | $Tuple2(aO(eH), unit) | |
2062 | + | } | |
2063 | + | else throw("Strict value is not equal to itself.") | |
2064 | + | } | |
2065 | + | ||
2066 | + | ||
2067 | + | ||
2068 | + | @Callable(ex) | |
2069 | + | func updatePoolParams (eB,cz,cA,eC) = { | |
2070 | + | let cl = if (if (if (if (if (bz(ex.caller)) | |
2071 | + | then bE() | |
2072 | + | else false) | |
2073 | + | then U(eB, 0, e, "updatePoolParams: invalid maxAllocationAmplifier") | |
2074 | + | else false) | |
2075 | + | then U(cz, 0, eB, "updatePoolParams: invalid weightAmplifier") | |
2076 | + | else false) | |
2077 | + | then U(cA, 0, c, "updatePoolParams: invalid disbalanceCoeff") | |
2078 | + | else false) | |
2079 | + | then U(eC, 0, c, "updatePoolParams: invalid feeMaxRate") | |
2080 | + | else false | |
2081 | + | if ((cl == cl)) | |
2082 | + | then { | |
2083 | + | let bD = aM() | |
2084 | + | let eH = $Tuple10(bD._1, bD._2, bD._3, bD._4, bD._5, eB, cz, cA, eC, bD._10) | |
2085 | + | $Tuple2(aO(eH), unit) | |
2086 | + | } | |
2087 | + | else throw("Strict value is not equal to itself.") | |
2088 | + | } | |
2089 | + | ||
2090 | + | ||
2091 | + | ||
2092 | + | @Callable(ex) | |
2093 | + | func migrateBalances () = { | |
2094 | + | let cl = if (bz(ex.caller)) | |
2095 | + | then bE() | |
2096 | + | else false | |
2097 | + | if ((cl == cl)) | |
2098 | + | then { | |
2099 | + | let bD = aM() | |
2100 | + | let fH = bD._3 | |
2101 | + | let fI = aS() | |
2102 | + | let dB = fI._1 | |
2103 | + | let dC = fI._2 | |
2104 | + | let fJ = max([(dC - fH), 0]) | |
2105 | + | let eH = $Tuple10(bD._1, bD._2, (fH + fJ), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10) | |
2106 | + | $Tuple2(aO(eH), unit) | |
2107 | + | } | |
2108 | + | else throw("Strict value is not equal to itself.") | |
2109 | + | } | |
2110 | + | ||
2111 | + | ||
2112 | + | ||
2113 | + | @Callable(ex) | |
2089 | 2114 | func pause () = { | |
2090 | - | let | |
2091 | - | then | |
2092 | - | else false) | |
2093 | - | then | |
2115 | + | let cl = if (if (bH(ex.caller)) | |
2116 | + | then bE() | |
2117 | + | else false) | |
2118 | + | then bF() | |
2094 | 2119 | else false | |
2095 | - | if (( | |
2096 | - | then $Tuple2( | |
2097 | - | else throw("Strict value is not equal to itself.") | |
2098 | - | } | |
2099 | - | ||
2100 | - | ||
2101 | - | ||
2102 | - | @Callable( | |
2120 | + | if ((cl == cl)) | |
2121 | + | then $Tuple2(aE(true), unit) | |
2122 | + | else throw("Strict value is not equal to itself.") | |
2123 | + | } | |
2124 | + | ||
2125 | + | ||
2126 | + | ||
2127 | + | @Callable(ex) | |
2103 | 2128 | func unpause () = { | |
2104 | - | let | |
2105 | - | then | |
2106 | - | else false) | |
2107 | - | then | |
2129 | + | let cl = if (if (bz(ex.caller)) | |
2130 | + | then bE() | |
2131 | + | else false) | |
2132 | + | then bG() | |
2108 | 2133 | else false | |
2109 | - | if (( | |
2110 | - | then $Tuple2( | |
2111 | - | else throw("Strict value is not equal to itself.") | |
2112 | - | } | |
2113 | - | ||
2114 | - | ||
2115 | - | ||
2116 | - | @Callable( | |
2117 | - | func updatePauser ( | |
2118 | - | let | |
2119 | - | then | |
2120 | - | else false) | |
2121 | - | then | |
2134 | + | if ((cl == cl)) | |
2135 | + | then $Tuple2(aE(false), unit) | |
2136 | + | else throw("Strict value is not equal to itself.") | |
2137 | + | } | |
2138 | + | ||
2139 | + | ||
2140 | + | ||
2141 | + | @Callable(ex) | |
2142 | + | func updatePauser (aI) = { | |
2143 | + | let cl = if (if (bz(ex.caller)) | |
2144 | + | then bE() | |
2145 | + | else false) | |
2146 | + | then N(aI, "updatePauser: invalid pauser") | |
2122 | 2147 | else false | |
2123 | - | if (( | |
2124 | - | then $Tuple2( | |
2125 | - | else throw("Strict value is not equal to itself.") | |
2126 | - | } | |
2127 | - | ||
2128 | - | ||
2129 | - | ||
2130 | - | @Callable( | |
2131 | - | func updateWatchdog ( | |
2132 | - | let | |
2133 | - | then | |
2134 | - | else false) | |
2135 | - | then | |
2136 | - | else false) | |
2137 | - | then | |
2148 | + | if ((cl == cl)) | |
2149 | + | then $Tuple2(aH(addressFromStringValue(aI)), unit) | |
2150 | + | else throw("Strict value is not equal to itself.") | |
2151 | + | } | |
2152 | + | ||
2153 | + | ||
2154 | + | ||
2155 | + | @Callable(ex) | |
2156 | + | func updateWatchdog (bv,by) = { | |
2157 | + | let cl = if (if (if (bz(ex.caller)) | |
2158 | + | then bE() | |
2159 | + | else false) | |
2160 | + | then N(bv, "updateWatchdog: invalid watchdog") | |
2161 | + | else false) | |
2162 | + | then U(by, 0, c, "updateWatchdog: invalid offset") | |
2138 | 2163 | else false | |
2139 | - | if (( | |
2140 | - | then $Tuple2(( | |
2141 | - | else throw("Strict value is not equal to itself.") | |
2142 | - | } | |
2143 | - | ||
2144 | - | ||
2145 | - | ||
2146 | - | @Callable( | |
2147 | - | func setMultisig ( | |
2148 | - | let | |
2149 | - | then | |
2164 | + | if ((cl == cl)) | |
2165 | + | then $Tuple2((bu(addressFromStringValue(bv)) ++ bx(by)), unit) | |
2166 | + | else throw("Strict value is not equal to itself.") | |
2167 | + | } | |
2168 | + | ||
2169 | + | ||
2170 | + | ||
2171 | + | @Callable(ex) | |
2172 | + | func setMultisig (aL) = { | |
2173 | + | let cl = if (bz(ex.caller)) | |
2174 | + | then N(aL, "setMultisig: invalid multisig") | |
2150 | 2175 | else false | |
2151 | - | if (( | |
2152 | - | then $Tuple2( | |
2153 | - | else throw("Strict value is not equal to itself.") | |
2154 | - | } | |
2155 | - | ||
2156 | - | ||
2157 | - | @Verifier( | |
2158 | - | func | |
2159 | - | let | |
2160 | - | if ($isInstanceOf( | |
2161 | - | then { | |
2162 | - | let | |
2163 | - | valueOrElse(getBoolean(addressFromStringValue( | |
2164 | - | } | |
2165 | - | else sigVerify( | |
2176 | + | if ((cl == cl)) | |
2177 | + | then $Tuple2(aK(addressFromStringValue(aL)), unit) | |
2178 | + | else throw("Strict value is not equal to itself.") | |
2179 | + | } | |
2180 | + | ||
2181 | + | ||
2182 | + | @Verifier(fK) | |
2183 | + | func fL () = { | |
2184 | + | let Q = getString(t) | |
2185 | + | if ($isInstanceOf(Q, "String")) | |
2186 | + | then { | |
2187 | + | let fM = Q | |
2188 | + | valueOrElse(getBoolean(addressFromStringValue(fM), makeString([u, toString(this), toBase58String(fK.id)], a)), false) | |
2189 | + | } | |
2190 | + | else sigVerify(fK.bodyBytes, fK.proofs[0], fK.senderPublicKey) | |
2166 | 2191 | } | |
2167 | 2192 |
github/deemru/w8io/026f985 477.25 ms ◑