tx · A7YETDhSCzJGMoQUktAxZAMXJLmVrnG4dmGnquGdajnc

3N3c8hF3E1qiSZ27uH3XZvtWSso9QFckZUb:  -0.03300000 Waves

2024.09.17 11:07 [3287404] smart account 3N3c8hF3E1qiSZ27uH3XZvtWSso9QFckZUb > SELF 0.00000000 Waves

{ "type": 13, "id": "A7YETDhSCzJGMoQUktAxZAMXJLmVrnG4dmGnquGdajnc", "fee": 3300000, "feeAssetId": null, "timestamp": 1726560418229, "version": 2, "chainId": 84, "sender": "3N3c8hF3E1qiSZ27uH3XZvtWSso9QFckZUb", "senderPublicKey": "9Dkh2UiuYRqFTQrAXgJJbJuG3Q6VDPhiYHrsdfQx42Zx", "proofs": [ "66q6hZrY5vMy683MSsreoJpCYV2PKNNVw7MJZPfWLX8Gqy3vnqUQg1vtKCRFzwsUFLHATDFzSt6aXpVsDKLDZ3Rj" ], "script": "base64:BwJnCAISAwoBCBIECgICGBIECgICGBIECgICGBIECgICGBIECgICGBIECgICGBIECgICGBIECgICGBIECgICGBIECgICGBIECgICGBIECgICGBIECgICGBIECgICGBIECgICGBIECgICGF4ACXNlcGFyYXRvcgICX18AB2NoYWluSWQJAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEACGNoYWluSWRXAQFXABBjb250cmFjdEZpbGVuYW1lAhdmdXR1cmVzX2NhbGN1bGF0b3IucmlkZQAFbXVsdDgAgMLXLwAMbXVsdDE4QmlnSW50CQC2AgEAgICQu7rWrfANAA13YXZlc0RlY2ltYWxzAAgADHVzZHREZWNpbWFscwAGAAt3YXZlc1N0cmluZwIFV0FWRVMADXF1ZXVlSXRlbVNpemUAIAAEYmlnMAkAtgIBAAAACklOREVYX0xJU1QJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4JAMwIAgAPCQDMCAIAEAkAzAgCABEJAMwIAgASCQDMCAIAEwUDbmlsAAlrTXVsdGlzaWcCDCVzX19tdWx0aXNpZwEHa1N0YXR1cwIEZGFwcAR0eElkCQC5CQIJAMwIAgIKJXNfX3N0YXR1cwkAzAgCBQRkYXBwCQDMCAIFBHR4SWQFA25pbAUJc2VwYXJhdG9yAAlrU2h1dGRvd24CDCVzX19zaHV0ZG93bgALa1B1YmxpY0tleXMCDiVzX19wdWJsaWNLZXlzABFrTWF0Y2hlclB1YmxpY0tleQIUJXNfX21hdGNoZXJQdWJsaWNLZXkBBXRvWDE4AgdvcmlnVmFsDW9yaWdTY2FsZU11bHQJALwCAwkAtgIBBQdvcmlnVmFsBQxtdWx0MThCaWdJbnQJALYCAQUNb3JpZ1NjYWxlTXVsdAEHZnJvbVgxOAIDdmFsD3Jlc3VsdFNjYWxlTXVsdAkAoAMBCQC8AgMFA3ZhbAkAtgIBBQ9yZXN1bHRTY2FsZU11bHQFDG11bHQxOEJpZ0ludAEPdmFsaWRhdGVBZGRyZXNzAQdhZGRyZXNzCQEJaXNEZWZpbmVkAQkApggBBQdhZGRyZXNzAQd3cmFwRXJyAQFzCQCsAgIJAKwCAgUQY29udHJhY3RGaWxlbmFtZQICOiAFAXMBCHRocm93RXJyAQFzCQACAQkBB3dyYXBFcnIBBQFzAQ5lbnN1cmVQb3NpdGl2ZQIBdgFzAwkAZwIFAXYAAAUBdgkBCHRocm93RXJyAQkArAICBQFzAhkgdmFsdWUgc2hvdWxkIGJlIHBvc2l0aXZlAQxwYXJzZUFzc2V0SWQBBWlucHV0AwkAAAIFBWlucHV0BQt3YXZlc1N0cmluZwUEdW5pdAkA2QQBBQVpbnB1dAEPYXNzZXRJZFRvU3RyaW5nAQVpbnB1dAMJAAACBQVpbnB1dAUEdW5pdAULd2F2ZXNTdHJpbmcJANgEAQkBBXZhbHVlAQUFaW5wdXQBEmdldEFzc2V0SW5mb09yRmFpbAEHYXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFB2Fzc2V0SWQJAQd3cmFwRXJyAQISaW52YWxpZCBhc3NldCBpbmZvARZnZXRBc3NldERlY2ltYWxzT3JGYWlsAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACBFVuaXQFDXdhdmVzRGVjaW1hbHMDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQHYXNzZXRJZAUHJG1hdGNoMAgJARJnZXRBc3NldEluZm9PckZhaWwBBQdhc3NldElkCGRlY2ltYWxzCQACAQILTWF0Y2ggZXJyb3IBD2dldEFzc2V0QmFsYW5jZQIHYXNzZXRJZAdhZGRyZXNzBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACBFVuaXQICQDvBwEFB2FkZHJlc3MJYXZhaWxhYmxlAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEB2Fzc2V0SWQFByRtYXRjaDAJAPAHAgUHYWRkcmVzcwUHYXNzZXRJZAkAAgECC01hdGNoIGVycm9yAQVwb3cxMAEBbgkAbAYACgAABQFuAAAAAAUERE9XTgENcG93MTBEZWNpbWFscwEHYXNzZXRJZAkBBXBvdzEwAQkBFmdldEFzc2V0RGVjaW1hbHNPckZhaWwBBQdhc3NldElkAA9rRmFjdG9yeUFkZHJlc3MCEiVzX19mYWN0b3J5QWRkcmVzcwAUZmFjdG9yeUFkZHJlc3NPcHRpb24EByRtYXRjaDAJAJ0IAgUEdGhpcwUPa0ZhY3RvcnlBZGRyZXNzAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkApggBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgAOZmFjdG9yeUFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUUZmFjdG9yeUFkZHJlc3NPcHRpb24JAQd3cmFwRXJyAQIXaW52YWxpZCBmYWN0b3J5IGFkZHJlc3MADGtVc2R0QXNzZXRJZAIPJXNfX3VzZHRBc3NldElkABF1c2R0QXNzZXRJZE9wdGlvbgQHJG1hdGNoMAkAnQgCBQ5mYWN0b3J5QWRkcmVzcwUMa1VzZHRBc3NldElkAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkBDHBhcnNlQXNzZXRJZAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAt1c2R0QXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBRF1c2R0QXNzZXRJZE9wdGlvbgkBB3dyYXBFcnIBAhVpbnZhbGlkIHVzZHQgYXNzZXQgaWQADmtQcmljZXNBZGRyZXNzAhUlc19fY2FsY3VsYXRvckFkZHJlc3MACHNodXRkb3duCQELdmFsdWVPckVsc2UCCQCbCAIFDmZhY3RvcnlBZGRyZXNzBQlrU2h1dGRvd24HAQttdXN0QWRkcmVzcwIGY2FsbGVyB2FkZHJlc3MDCQAAAgUGY2FsbGVyBQdhZGRyZXNzBgkBCHRocm93RXJyAQIRcGVybWlzc2lvbiBkZW5pZWQBCG11c3RUaGlzAQZjYWxsZXIJAQttdXN0QWRkcmVzcwIFBmNhbGxlcgUEdGhpcwELbXVzdEZhY3RvcnkBBmNhbGxlcgkBC211c3RBZGRyZXNzAgUGY2FsbGVyBQ5mYWN0b3J5QWRkcmVzcwEJbXVzdEFkbWluAQ9jYWxsZXJQdWJsaWNLZXkEFW11bHRpc2lnQWRkcmVzc1N0cmluZwkAnQgCBQ5mYWN0b3J5QWRkcmVzcwUJa011bHRpc2lnBAdpc0FkbWluBAckbWF0Y2gwBRVtdWx0aXNpZ0FkZHJlc3NTdHJpbmcDCQABAgUHJG1hdGNoMAIGU3RyaW5nBA1hZGRyZXNzU3RyaW5nBQckbWF0Y2gwBAhtdWx0aXNpZwkBEUBleHRyTmF0aXZlKDEwNjIpAQUNYWRkcmVzc1N0cmluZwQOcHVibGljS2V5c0xpc3QJALUJAgkBEUBleHRyTmF0aXZlKDEwNTMpAgUIbXVsdGlzaWcFC2tQdWJsaWNLZXlzBQlzZXBhcmF0b3IJAQ9jb250YWluc0VsZW1lbnQCBQ5wdWJsaWNLZXlzTGlzdAkA2AQBBQ9jYWxsZXJQdWJsaWNLZXkJAAACCQCnCAEFD2NhbGxlclB1YmxpY0tleQUOZmFjdG9yeUFkZHJlc3MDBQdpc0FkbWluBgkBCHRocm93RXJyAQILbm90IGFsbG93ZWQADmtBY2NvdW50U2NyaXB0AhElc19fYWNjb3VudFNjcmlwdAENYWNjb3VudFNjcmlwdAAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQ5mYWN0b3J5QWRkcmVzcwUOa0FjY291bnRTY3JpcHQJAQd3cmFwRXJyAQIZYWNjb3VudCBzY3JpcHQgaXMgbm90IHNldAANa1Jld2FyZEFtb3VudAIQJXNfX3Jld2FyZEFtb3VudAEMcmV3YXJkQW1vdW50AAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFDmZhY3RvcnlBZGRyZXNzBQ1rUmV3YXJkQW1vdW50CQEHd3JhcEVycgECGHJld2FyZCBhbW91bnQgaXMgbm90IHNldAAOa0FjY291bnRzTGltaXQCESVzX19hY2NvdW50c0xpbWl0ABRhY2NvdW50c0xpbWl0RGVmYXVsdAAUAQ1hY2NvdW50c0xpbWl0AAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5mYWN0b3J5QWRkcmVzcwUOa0FjY291bnRzTGltaXQFFGFjY291bnRzTGltaXREZWZhdWx0AQprRGVwb3NpdGVkAQ5hY2NvdW50QWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIJZGVwb3NpdGVkCQDMCAIJAKUIAQUOYWNjb3VudEFkZHJlc3MFA25pbAUJc2VwYXJhdG9yAQ9kZXBvc2l0ZWRPcHRpb24BDmFjY291bnRBZGRyZXNzCQCaCAIFDmZhY3RvcnlBZGRyZXNzCQEKa0RlcG9zaXRlZAEFDmFjY291bnRBZGRyZXNzAQdrQ3JlZGl0Ag5hY2NvdW50QWRkcmVzcwdhc3NldElkCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICBmNyZWRpdAkAzAgCCQClCAEFDmFjY291bnRBZGRyZXNzCQDMCAIJAQ9hc3NldElkVG9TdHJpbmcBBQdhc3NldElkBQNuaWwFCXNlcGFyYXRvcgEMY3JlZGl0T3B0aW9uAg5hY2NvdW50QWRkcmVzcwdhc3NldElkCQCaCAIFDmZhY3RvcnlBZGRyZXNzCQEHa0NyZWRpdAIFDmFjY291bnRBZGRyZXNzBQdhc3NldElkAQlrTGV2ZXJhZ2UBDmFjY291bnRBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAghsZXZlcmFnZQkAzAgCCQClCAEFDmFjY291bnRBZGRyZXNzBQNuaWwFCXNlcGFyYXRvcgEQa1JlcXVlc3RMZXZlcmFnZQEJcmVxdWVzdElkCQC5CQIJAMwIAgIEJXMlcwkAzAgCAg9yZXF1ZXN0TGV2ZXJhZ2UJAMwIAgkA2AQBBQlyZXF1ZXN0SWQFA25pbAUJc2VwYXJhdG9yARFrU3ludGhldGljQXNzZXRJZAELYmFzZUFzc2V0SWQJALkJAgkAzAgCAgQlcyVzCQDMCAICEHN5bnRoZXRpY0Fzc2V0SWQJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFC2Jhc2VBc3NldElkBQNuaWwFCXNlcGFyYXRvcgEMa0Jhc2VBc3NldElkARBzeW50aGV0aWNBc3NldElkCQC5CQIJAMwIAgIEJXMlcwkAzAgCAgtiYXNlQXNzZXRJZAkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQUQc3ludGhldGljQXNzZXRJZAUDbmlsBQlzZXBhcmF0b3IAFFJFUVVFU1RfU1RBVFVTX0VNUFRZAAAAFFJFUVVFU1RfU1RBVFVTX1JFQURZAAEBDmtSZXF1ZXN0U3RhdHVzAQlyZXF1ZXN0SWQJALkJAgkAzAgCAgQlcyVzCQDMCAIJANgEAQUJcmVxdWVzdElkCQDMCAICBnN0YXR1cwUDbmlsBQlzZXBhcmF0b3IBGGtBY2NvdW50Q3JlYXRvclB1YmxpY0tleQEOYWNjb3VudEFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAIJAKUIAQUOYWNjb3VudEFkZHJlc3MJAMwIAgIQY3JlYXRvclB1YmxpY0tleQUDbmlsBQlzZXBhcmF0b3IBFmtSZXF1ZXN0T3duZXJQdWJsaWNLZXkBCXJlcXVlc3RJZAkAuQkCCQDMCAICBCVzJXMJAMwIAgkA2AQBBQlyZXF1ZXN0SWQJAMwIAgIOb3duZXJQdWJsaWNLZXkFA25pbAUJc2VwYXJhdG9yARVrUmVxdWVzdEFtb3VudEFzc2V0SWQBCXJlcXVlc3RJZAkAuQkCCQDMCAICBCVzJXMJAMwIAgkA2AQBBQlyZXF1ZXN0SWQJAMwIAgINYW1vdW50QXNzZXRJZAUDbmlsBQlzZXBhcmF0b3IBFGtSZXF1ZXN0UHJpY2VBc3NldElkAQlyZXF1ZXN0SWQJALkJAgkAzAgCAgQlcyVzCQDMCAIJANgEAQUJcmVxdWVzdElkCQDMCAICDHByaWNlQXNzZXRJZAUDbmlsBQlzZXBhcmF0b3IBHGtSZXF1ZXN0SWRUb0FjY291bnRQdWJsaWNLZXkBCXJlcXVlc3RJZAkAuQkCCQDMCAICBCVzJXMJAMwIAgkA2AQBBQlyZXF1ZXN0SWQJAMwIAgIbcmVxdWVzdElkVG9BY2NvdW50UHVibGljS2V5BQNuaWwFCXNlcGFyYXRvcgEaa0FjY291bnRBZGRyZXNzVG9SZXF1ZXN0SWQBDmFjY291bnRBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCCQClCAEFDmFjY291bnRBZGRyZXNzCQDMCAICGWFjY291bnRBZGRyZXNzVG9SZXF1ZXN0SWQFA25pbAUJc2VwYXJhdG9yAQ5rUmVxdWVzdHNRdWV1ZQAJALkJAgkAzAgCAgIlcwkAzAgCAg1yZXF1ZXN0c1F1ZXVlBQNuaWwFCXNlcGFyYXRvcgENcmVxdWVzdHNRdWV1ZQAJAQt2YWx1ZU9yRWxzZQIJAJwIAgUOZmFjdG9yeUFkZHJlc3MJAQ5rUmVxdWVzdHNRdWV1ZQABAAEQa1JlcXVlc3RzQnlPd25lcgEMb3duZXJBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAghyZXF1ZXN0cwkAzAgCCQClCAEFDG93bmVyQWRkcmVzcwUDbmlsBQlzZXBhcmF0b3IBD3JlcXVlc3RzQnlPd25lcgEMb3duZXJBZGRyZXNzCQELdmFsdWVPckVsc2UCCQCcCAIFDmZhY3RvcnlBZGRyZXNzCQEQa1JlcXVlc3RzQnlPd25lcgEFDG93bmVyQWRkcmVzcwEAAQxrUGFpckFsbG93ZWQCDWFtb3VudEFzc2V0SWQMcHJpY2VBc3NldElkCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIJAQ9hc3NldElkVG9TdHJpbmcBBQ1hbW91bnRBc3NldElkCQDMCAIJAQ9hc3NldElkVG9TdHJpbmcBBQxwcmljZUFzc2V0SWQJAMwIAgILcGFpckFsbG93ZWQFA25pbAUJc2VwYXJhdG9yAQtwYWlyQWxsb3dlZAINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAJsIAgUOZmFjdG9yeUFkZHJlc3MJAQxrUGFpckFsbG93ZWQCBQ1hbW91bnRBc3NldElkBQxwcmljZUFzc2V0SWQHAQZrUHJpY2UBB2Fzc2V0SWQJALkJAgkAzAgCAgIlcwkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQUHYXNzZXRJZAUDbmlsBQlzZXBhcmF0b3IBEmtQYWlyUHJpY2VzTGlzdEtleQINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFDWFtb3VudEFzc2V0SWQJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFDHByaWNlQXNzZXRJZAkAzAgCAhFwYWlyU2V0dGluZ1ByaWNlcwUDbmlsBQlzZXBhcmF0b3IBEWdldFBhaXJQcmljZXNMaXN0Ag1hbW91bnRBc3NldElkDHByaWNlQXNzZXRJZAQHJG1hdGNoMAkAnQgCBQ5mYWN0b3J5QWRkcmVzcwkBEmtQYWlyUHJpY2VzTGlzdEtleQIFDWFtb3VudEFzc2V0SWQFDHByaWNlQXNzZXRJZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJALUJAgUBcwUJc2VwYXJhdG9yBQNuaWwBEGtQYWlyU2V0dGluZ3NLZXkDDWFtb3VudEFzc2V0SWQMcHJpY2VBc3NldElkC3ByaWNlU3RyaW5nCQC5CQIJAMwIAgIIJXMlcyVkJXMJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFDWFtb3VudEFzc2V0SWQJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFDHByaWNlQXNzZXRJZAkAzAgCBQtwcmljZVN0cmluZwkAzAgCAghzZXR0aW5ncwUDbmlsBQlzZXBhcmF0b3IBD2dldEN1cnJlbnRQcmljZQEHYXNzZXRJZAQQbWF0Y2hlclB1YmxpY0tleQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUOZmFjdG9yeUFkZHJlc3MFEWtNYXRjaGVyUHVibGljS2V5CQEHd3JhcEVycgECGmludmFsaWQgbWF0Y2hlciBwdWJsaWMga2V5BA5tYXRjaGVyQWRkcmVzcwkApwgBBRBtYXRjaGVyUHVibGljS2V5BAVwcmljZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFDm1hdGNoZXJBZGRyZXNzCQEGa1ByaWNlAQUHYXNzZXRJZAkBB3dyYXBFcnIBCQCsAgICGWludmFsaWQgcHJpY2UsIGFzc2V0SWQgPSAJAQ9hc3NldElkVG9TdHJpbmcBBQdhc3NldElkBQVwcmljZQEPY2FsY1RvdGFsQ3JlZGl0AwdjcmVkaXRBB2NyZWRpdEIMY3VycmVudFByaWNlCQC3AgIJALwCAwUHY3JlZGl0QQUMY3VycmVudFByaWNlBQxtdWx0MThCaWdJbnQFB2NyZWRpdEIBEGNhbGNUb3RhbEJhbGFuY2UDCGJhbGFuY2VBCGJhbGFuY2VCDGN1cnJlbnRQcmljZQkAtwICCQC8AgMFCGJhbGFuY2VBBQxjdXJyZW50UHJpY2UFDG11bHQxOEJpZ0ludAUIYmFsYW5jZUIBB2NhbGNQbmwCDHRvdGFsQmFsYW5jZQt0b3RhbENyZWRpdAkAuAICBQx0b3RhbEJhbGFuY2UFC3RvdGFsQ3JlZGl0ARNjYWxjQ3JlZGl0QXZhaWxhYmxlAwdkZXBvc2l0CGxldmVyYWdlC3RvdGFsQ3JlZGl0CQC4AgIJALwCAwUHZGVwb3NpdAUIbGV2ZXJhZ2UFDG11bHQxOEJpZ0ludAULdG90YWxDcmVkaXQBEGNhbGNSZWFsSW5DcmVkaXQCBmNyZWRpdAdiYWxhbmNlAwkAvwICBQZjcmVkaXQFBGJpZzAJALgCAgUGY3JlZGl0BQdiYWxhbmNlBQRiaWcwAQhjYWxjRnJlZQIGY3JlZGl0B2JhbGFuY2UDCQC/AgIFBmNyZWRpdAUEYmlnMAkAuAICBQdiYWxhbmNlBQZjcmVkaXQFBGJpZzABDmNhbGNTaG9ydFByaWNlAgRmcmVlDHJlYWxJbkNyZWRpdAMJAL8CAgUMcmVhbEluQ3JlZGl0BQRiaWcwCQCYAwEJAMwIAgUEYmlnMAkAzAgCCQC8AgMFBGZyZWUFDG11bHQxOEJpZ0ludAUMcmVhbEluQ3JlZGl0BQNuaWwFBGJpZzABDWNhbGNMb25nUHJpY2UCBGZyZWUMcmVhbEluQ3JlZGl0AwkAvwICBQxyZWFsSW5DcmVkaXQFBGJpZzAJAJgDAQkAzAgCBQRiaWcwCQDMCAIJALwCAwUMcmVhbEluQ3JlZGl0BQxtdWx0MThCaWdJbnQFBGZyZWUFA25pbAUEYmlnMAEPY2FsY1N0YXJ0TWFyZ2luBA1yZWFsSW5DcmVkaXRBDXJlYWxJbkNyZWRpdEIMY3VycmVudFByaWNlDnNldHRpbmdzTWFyZ2luCQC8AgMJALcCAgkAvAIDBQ1yZWFsSW5DcmVkaXRBBQxjdXJyZW50UHJpY2UFDG11bHQxOEJpZ0ludAUNcmVhbEluQ3JlZGl0QgUOc2V0dGluZ3NNYXJnaW4FDG11bHQxOEJpZ0ludAEQY2FsY01hcmdpblN1cHBseQMUc2V0dGluZ3NNYXJnaW5TdXBwbHkOc2V0dGluZ3NNYXJnaW4Lc3RhcnRNYXJnaW4JALwCAwUUc2V0dGluZ3NNYXJnaW5TdXBwbHkFC3N0YXJ0TWFyZ2luBQ5zZXR0aW5nc01hcmdpbgEUY2FsY0xpcXVpZGF0aW9uUHJpY2UGB2RlcG9zaXQMbWFyZ2luU3VwcGx5DXJlYWxJbkNyZWRpdEENcmVhbEluQ3JlZGl0QgpzaG9ydFByaWNlCWxvbmdQcmljZQQRbGlxdWlkYXRpb25QcmljZUEDCQC/AgIFDXJlYWxJbkNyZWRpdEEFBGJpZzAJALcCAgkAugICCQC4AgIFB2RlcG9zaXQFDG1hcmdpblN1cHBseQUNcmVhbEluQ3JlZGl0QQUKc2hvcnRQcmljZQUEYmlnMAQRbGlxdWlkYXRpb25QcmljZUIDCQC/AgIFDXJlYWxJbkNyZWRpdEIFBGJpZzAJALgCAgUJbG9uZ1ByaWNlCQC6AgIJALgCAgUHZGVwb3NpdAUMbWFyZ2luU3VwcGx5CQC6AgIFDXJlYWxJbkNyZWRpdEEFCWxvbmdQcmljZQUEYmlnMAkAtwICBRFsaXF1aWRhdGlvblByaWNlQQURbGlxdWlkYXRpb25QcmljZUIBDGdldFJlcXVlc3RJZAEOYWNjb3VudEFkZHJlc3MECXJlcXVlc3RJZAkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUOZmFjdG9yeUFkZHJlc3MJARprQWNjb3VudEFkZHJlc3NUb1JlcXVlc3RJZAEFDmFjY291bnRBZGRyZXNzCQEHd3JhcEVycgECMGludmFsaWQgYWNjb3VudCBhZGRyZXNzOiByZXF1ZXN0IGlkIGlzIHVuZGVmaW5lZAUJcmVxdWVzdElkARBnZXRBY2NvdW50QXNzZXRzAQ5hY2NvdW50QWRkcmVzcwQJcmVxdWVzdElkCQEMZ2V0UmVxdWVzdElkAQUOYWNjb3VudEFkZHJlc3MEDWFtb3VudEFzc2V0SWQJAQxwYXJzZUFzc2V0SWQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUOZmFjdG9yeUFkZHJlc3MJARVrUmVxdWVzdEFtb3VudEFzc2V0SWQBBQlyZXF1ZXN0SWQJAQd3cmFwRXJyAQIXaW52YWxpZCBhbW91bnQgYXNzZXQgaWQEDHByaWNlQXNzZXRJZAkBDHBhcnNlQXNzZXRJZAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ5mYWN0b3J5QWRkcmVzcwkBFGtSZXF1ZXN0UHJpY2VBc3NldElkAQUJcmVxdWVzdElkCQEHd3JhcEVycgECF2ludmFsaWQgYW1vdW50IHByaWNlIGlkCQCUCgIFDWFtb3VudEFzc2V0SWQFDHByaWNlQXNzZXRJZAEYZ2V0QWNjb3VudE93bmVyUHVibGljS2V5AQ5hY2NvdW50QWRkcmVzcwQJcmVxdWVzdElkCQEMZ2V0UmVxdWVzdElkAQUOYWNjb3VudEFkZHJlc3MEFXJlcXVlc3RPd25lclB1YmxpY0tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFDmZhY3RvcnlBZGRyZXNzCQEWa1JlcXVlc3RPd25lclB1YmxpY0tleQEFCXJlcXVlc3RJZAkBB3dyYXBFcnIBAhdpbnZhbGlkIGFtb3VudCBhc3NldCBpZAUVcmVxdWVzdE93bmVyUHVibGljS2V5ARZnZXRBY2NvdW50SW5mb0ludGVybmFsAQ5hY2NvdW50QWRkcmVzcwQNJHQwMTEyNTUxMTMyMwkBEGdldEFjY291bnRBc3NldHMBBQ5hY2NvdW50QWRkcmVzcwQNYW1vdW50QXNzZXRJZAgFDSR0MDExMjU1MTEzMjMCXzEEDHByaWNlQXNzZXRJZAgFDSR0MDExMjU1MTEzMjMCXzIECGxldmVyYWdlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUOZmFjdG9yeUFkZHJlc3MJAQlrTGV2ZXJhZ2UBBQ5hY2NvdW50QWRkcmVzcwkBB3dyYXBFcnIBAhpsZXZlcmFnZSBzaG91bGQgYmUgZGVmaW5lZAQJcmVxdWVzdElkCQEMZ2V0UmVxdWVzdElkAQUOYWNjb3VudEFkZHJlc3MEEGFjY291bnRQdWJsaWNLZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQ5mYWN0b3J5QWRkcmVzcwkBHGtSZXF1ZXN0SWRUb0FjY291bnRQdWJsaWNLZXkBBQlyZXF1ZXN0SWQCJmtSZXF1ZXN0SWRUb0FjY291bnRQdWJsaWNLZXkgbm90IGZvdW5kBAlkZXBvc2l0ZWQJAQt2YWx1ZU9yRWxzZQIJAQ9kZXBvc2l0ZWRPcHRpb24BBQ5hY2NvdW50QWRkcmVzcwAABAxjdXJyZW50UHJpY2UJAQV0b1gxOAIJAQ9nZXRDdXJyZW50UHJpY2UBBQ1hbW91bnRBc3NldElkCQENcG93MTBEZWNpbWFscwEFDHByaWNlQXNzZXRJZAQHY3JlZGl0QQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5mYWN0b3J5QWRkcmVzcwkBB2tDcmVkaXQCBQ5hY2NvdW50QWRkcmVzcwUNYW1vdW50QXNzZXRJZAAABAdjcmVkaXRCCQELdmFsdWVPckVsc2UCCQCaCAIFDmZhY3RvcnlBZGRyZXNzCQEHa0NyZWRpdAIFDmFjY291bnRBZGRyZXNzBQxwcmljZUFzc2V0SWQAAAQGc3RhdHVzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUOZmFjdG9yeUFkZHJlc3MJAQ5rUmVxdWVzdFN0YXR1cwEFCXJlcXVlc3RJZAkArAICAh5zdGF0dXMgbm90IGZvdW5kLiBSZXF1ZXN0SWQgPSAJANgEAQUJcmVxdWVzdElkBBJzeW50aEFtb3VudEFzc2V0SWQJAJ0IAgUOZmFjdG9yeUFkZHJlc3MJARFrU3ludGhldGljQXNzZXRJZAEFDWFtb3VudEFzc2V0SWQEF3N5bnRoQW1vdW50QXNzZXRCYWxhbmNlBAckbWF0Y2gwBRJzeW50aEFtb3VudEFzc2V0SWQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQEPZ2V0QXNzZXRCYWxhbmNlAgkBDHBhcnNlQXNzZXRJZAEFAXMFDmFjY291bnRBZGRyZXNzAAAEEXN5bnRoUHJpY2VBc3NldElkCQCdCAIFDmZhY3RvcnlBZGRyZXNzCQERa1N5bnRoZXRpY0Fzc2V0SWQBBQxwcmljZUFzc2V0SWQEFnN5bnRoUHJpY2VBc3NldEJhbGFuY2UEByRtYXRjaDAFEXN5bnRoUHJpY2VBc3NldElkAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkBD2dldEFzc2V0QmFsYW5jZQIJAQxwYXJzZUFzc2V0SWQBBQFzBQ5hY2NvdW50QWRkcmVzcwAACQCeCgwJAQ9hc3NldElkVG9TdHJpbmcBBQ1hbW91bnRBc3NldElkCQEPYXNzZXRJZFRvU3RyaW5nAQUMcHJpY2VBc3NldElkCQClCAEFDmFjY291bnRBZGRyZXNzCQDYBAEFEGFjY291bnRQdWJsaWNLZXkFCGxldmVyYWdlCQDYBAEFCXJlcXVlc3RJZAUJZGVwb3NpdGVkBQdjcmVkaXRBBQdjcmVkaXRCBRdzeW50aEFtb3VudEFzc2V0QmFsYW5jZQUWc3ludGhQcmljZUFzc2V0QmFsYW5jZQUGc3RhdHVzAQ9kZXBvc2l0SU5URVJOQUwDD2NhbGxlclB1YmxpY0tleQRhcmdzAWkEB3BheW1lbnQJAJEDAggFAWkIcGF5bWVudHMAAAQOYWNjb3VudEFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFBGFyZ3MAAAkBB3dyYXBFcnIBAhdpbnZhbGlkIGFjY291bnQgYWRkcmVzcwQGY2tlY2tzCQDMCAIDCQEBIQEFCHNodXRkb3duBgkBCHRocm93RXJyAQILbm90IGFsbG93ZWQJAMwIAgkBC211c3RGYWN0b3J5AQgFAWkGY2FsbGVyCQDMCAIDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABBgkBCHRocm93RXJyAQIVMSBwYXltZW50IGlzIHJlcXVpcmVkCQDMCAIDCQAAAggFB3BheW1lbnQHYXNzZXRJZAULdXNkdEFzc2V0SWQGCQEIdGhyb3dFcnIBAg1pbnZhbGlkIGFzc2V0CQDMCAIDCQAAAgkAmggCBQ5mYWN0b3J5QWRkcmVzcwkBDmtSZXF1ZXN0U3RhdHVzAQkBDGdldFJlcXVlc3RJZAEFDmFjY291bnRBZGRyZXNzBRRSRVFVRVNUX1NUQVRVU19SRUFEWQYJAQh0aHJvd0VycgECFGFjY291bnQgaXMgbm90IHJlYWR5BQNuaWwDCQAAAgUGY2tlY2tzBQZja2Vja3MEB2FjdGlvbnMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUOYWNjb3VudEFkZHJlc3MIBQdwYXltZW50BmFtb3VudAgFB3BheW1lbnQHYXNzZXRJZAUDbmlsBA5mYWN0b3J5QWN0aW9ucwkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgxpbnRlZ2VyRW50cnkJAMwIAgkBCmtEZXBvc2l0ZWQBBQ5hY2NvdW50QWRkcmVzcwkAzAgCCQBkAgkBC3ZhbHVlT3JFbHNlAgkBD2RlcG9zaXRlZE9wdGlvbgEFDmFjY291bnRBZGRyZXNzAAAIBQdwYXltZW50BmFtb3VudAUDbmlsBQNuaWwFA25pbAkAlAoCBQdhY3Rpb25zBQ5mYWN0b3J5QWN0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEOYm9ycm93SU5URVJOQUwDD2NhbGxlclB1YmxpY0tleQRhcmdzAWkEDmFjY291bnRBZGRyZXNzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQRhcmdzAAAJAQd3cmFwRXJyAQIXaW52YWxpZCBhY2NvdW50IGFkZHJlc3MEEGFzc2V0SWRSZXF1ZXN0ZWQJAQxwYXJzZUFzc2V0SWQBCQCRAwIFBGFyZ3MAAQQPYW1vdW50UmVxdWVzdGVkCQEOZW5zdXJlUG9zaXRpdmUCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQRhcmdzAAIJAQd3cmFwRXJyAQIYaW52YWxpZCByZXF1ZXN0ZWQgYW1vdW50AhByZXF1ZXN0ZWQgYW1vdW50BBVhY2NvdW50T3duZXJQdWJsaWNLZXkJARhnZXRBY2NvdW50T3duZXJQdWJsaWNLZXkBBQ5hY2NvdW50QWRkcmVzcwQLdXNlckFkZHJlc3MJAKcIAQUPY2FsbGVyUHVibGljS2V5BAZja2Vja3MJAMwIAgMJAQEhAQUIc2h1dGRvd24GCQEIdGhyb3dFcnIBAgtub3QgYWxsb3dlZAkAzAgCCQELbXVzdEZhY3RvcnkBCAUBaQZjYWxsZXIJAMwIAgMJAAACBQ9jYWxsZXJQdWJsaWNLZXkFFWFjY291bnRPd25lclB1YmxpY0tleQYJAQh0aHJvd0VycgECI2NhbiBiZSBjYWxsZWQgYnkgYWNjb3VudCBvd25lciBvbmx5BQNuaWwDCQAAAgUGY2tlY2tzBQZja2Vja3MEDWFtb3VudEFzc2V0SWQICQEQZ2V0QWNjb3VudEFzc2V0cwEFDmFjY291bnRBZGRyZXNzAl8xBAlkZXBvc2l0ZWQJAQV0b1gxOAIJAQt2YWx1ZU9yRWxzZQIJAQ9kZXBvc2l0ZWRPcHRpb24BBQ5hY2NvdW50QWRkcmVzcwAACQENcG93MTBEZWNpbWFscwEFC3VzZHRBc3NldElkBAxjdXJyZW50UHJpY2UJAQV0b1gxOAIJAQ9nZXRDdXJyZW50UHJpY2UBBQ1hbW91bnRBc3NldElkCQENcG93MTBEZWNpbWFscwEFC3VzZHRBc3NldElkBAdjcmVkaXRBCQEFdG9YMTgCCQELdmFsdWVPckVsc2UCCQCaCAIFDmZhY3RvcnlBZGRyZXNzCQEHa0NyZWRpdAIFDmFjY291bnRBZGRyZXNzBQ1hbW91bnRBc3NldElkAAAJAQ1wb3cxMERlY2ltYWxzAQUNYW1vdW50QXNzZXRJZAQHY3JlZGl0QgkBBXRvWDE4AgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5mYWN0b3J5QWRkcmVzcwkBB2tDcmVkaXQCBQ5hY2NvdW50QWRkcmVzcwULdXNkdEFzc2V0SWQAAAkBDXBvdzEwRGVjaW1hbHMBBQt1c2R0QXNzZXRJZAQLdG90YWxDcmVkaXQJAQ9jYWxjVG90YWxDcmVkaXQDBQdjcmVkaXRBBQdjcmVkaXRCBQxjdXJyZW50UHJpY2UECGxldmVyYWdlCQEFdG9YMTgCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUOZmFjdG9yeUFkZHJlc3MJAQlrTGV2ZXJhZ2UBBQ5hY2NvdW50QWRkcmVzcwkBB3dyYXBFcnIBAhpsZXZlcmFnZSBzaG91bGQgYmUgZGVmaW5lZAABBBNjcmVkaXRBdmFpbGFibGVVc2R0CQETY2FsY0NyZWRpdEF2YWlsYWJsZQMFCWRlcG9zaXRlZAUIbGV2ZXJhZ2UFC3RvdGFsQ3JlZGl0BA9jcmVkaXRBdmFpbGFibGUDCQAAAgUQYXNzZXRJZFJlcXVlc3RlZAUNYW1vdW50QXNzZXRJZAkBB2Zyb21YMTgCCQC8AgMFE2NyZWRpdEF2YWlsYWJsZVVzZHQFDG11bHQxOEJpZ0ludAUMY3VycmVudFByaWNlCQENcG93MTBEZWNpbWFscwEFDWFtb3VudEFzc2V0SWQDCQAAAgUQYXNzZXRJZFJlcXVlc3RlZAULdXNkdEFzc2V0SWQJAQdmcm9tWDE4AgUTY3JlZGl0QXZhaWxhYmxlVXNkdAkBDXBvdzEwRGVjaW1hbHMBBQt1c2R0QXNzZXRJZAkBCHRocm93RXJyAQIaaW52YWxpZCByZXF1ZXN0ZWQgYXNzZXQgaWQEEHN5bnRoZXRpY0Fzc2V0SWQJAQxwYXJzZUFzc2V0SWQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUOZmFjdG9yeUFkZHJlc3MJARFrU3ludGhldGljQXNzZXRJZAEFEGFzc2V0SWRSZXF1ZXN0ZWQJAQd3cmFwRXJyAQIwc3ludGhldGljIGFzc2V0IGZvciByZXF1ZXN0ZWQgYXNzZXQgaXMgdW5kZWZpbmVkBAxhbW91bnRUb1NlbmQDCQBnAgUPY3JlZGl0QXZhaWxhYmxlBQ9hbW91bnRSZXF1ZXN0ZWQFD2Ftb3VudFJlcXVlc3RlZAkBCHRocm93RXJyAQkArAICAhNjcmVkaXQgYXZhaWxhYmxlID0gCQCkAwEFD2NyZWRpdEF2YWlsYWJsZQQOZmFjdG9yeUFjdGlvbnMJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwIMaW50ZWdlckVudHJ5CQDMCAIJAQdrQ3JlZGl0AgUOYWNjb3VudEFkZHJlc3MFEGFzc2V0SWRSZXF1ZXN0ZWQJAMwIAgkAZAIJAQt2YWx1ZU9yRWxzZQIJAQxjcmVkaXRPcHRpb24CBQ5hY2NvdW50QWRkcmVzcwUQYXNzZXRJZFJlcXVlc3RlZAAABQxhbW91bnRUb1NlbmQFA25pbAUDbmlsCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCDXRyYW5zZmVyQXNzZXQJAMwIAggFDmFjY291bnRBZGRyZXNzBWJ5dGVzCQDMCAIFDGFtb3VudFRvU2VuZAkAzAgCBRBzeW50aGV0aWNBc3NldElkBQNuaWwFA25pbAUDbmlsCQCUCgIFA25pbAkAzAgCBQ5mYWN0b3J5QWN0aW9ucwkAzAgCBQ9jcmVkaXRBdmFpbGFibGUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLhEBaQEEaW5pdAERZmFjdG9yeUFkZHJlc3NTdHIEC2NoZWNrQ2FsbGVyCQEIbXVzdFRoaXMBCAUBaQZjYWxsZXIDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUPa0ZhY3RvcnlBZGRyZXNzBRFmYWN0b3J5QWRkcmVzc1N0cgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDnJlcXVlc3RBY2NvdW50Ag9jYWxsZXJQdWJsaWNLZXkEYXJncwQGY2tlY2tzCQDMCAIDCQEBIQEFCHNodXRkb3duBgkBCHRocm93RXJyAQILbm90IGFsbG93ZWQJAMwIAgkBC211c3RGYWN0b3J5AQgFAWkGY2FsbGVyBQNuaWwDCQAAAgUGY2tlY2tzBQZja2Vja3MEEGFtb3VudEFzc2V0SWRTdHIJAJEDAgUEYXJncwAABA9wcmljZUFzc2V0SWRTdHIJAJEDAgUEYXJncwABBAhsZXZlcmFnZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEJAJEDAgUEYXJncwACCQEHd3JhcEVycgECEGludmFsaWQgbGV2ZXJhZ2UEC3VzZXJBZGRyZXNzCQCnCAEFD2NhbGxlclB1YmxpY0tleQQJcmVxdWVzdElkCQD3AwEIBQFpDXRyYW5zYWN0aW9uSWQEDWFtb3VudEFzc2V0SWQJAQxwYXJzZUFzc2V0SWQBBRBhbW91bnRBc3NldElkU3RyBAxwcmljZUFzc2V0SWQJAQxwYXJzZUFzc2V0SWQBBQ9wcmljZUFzc2V0SWRTdHIEEnVzZXJSZXF1ZXN0c051bWJlcgkAaQIJALECAQkBEGtSZXF1ZXN0c0J5T3duZXIBBQt1c2VyQWRkcmVzcwUNcXVldWVJdGVtU2l6ZQQGY2hlY2tzCQDMCAIDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABBgkBCHRocm93RXJyAQIVMSBwYXltZW50IGlzIHJlcXVpcmVkCQDMCAIDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQR1bml0BgkBCHRocm93RXJyAQINaW52YWxpZCBhc3NldAkAzAgCAwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQEMcmV3YXJkQW1vdW50AAYJAQh0aHJvd0VycgECDmludmFsaWQgYW1vdW50CQDMCAIDCQELcGFpckFsbG93ZWQCBQ1hbW91bnRBc3NldElkBQxwcmljZUFzc2V0SWQGCQEIdGhyb3dFcnIBAhNwYWlyIGlzIG5vdCBhbGxvd2VkCQDMCAIDCQAAAgUIbGV2ZXJhZ2UAAgYJAQh0aHJvd0VycgECF2xldmVyYWdlIGlzIG5vdCBhbGxvd2VkCQDMCAIDCQAAAgkAmggCBQ5mYWN0b3J5QWRkcmVzcwkBDmtSZXF1ZXN0U3RhdHVzAQUJcmVxdWVzdElkBQR1bml0BgkBCHRocm93RXJyAQIZYWNjb3VudCBpcyBhbHJlYWR5IGV4aXN0cwkAzAgCAwkAZgIJAQ1hY2NvdW50c0xpbWl0AAUSdXNlclJlcXVlc3RzTnVtYmVyBgkBCHRocm93RXJyAQkArAICAhJhY2NvdW50cyBsaW1pdCBpcyAJAKQDAQkBDWFjY291bnRzTGltaXQABQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEB2FjdGlvbnMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUOZmFjdG9yeUFkZHJlc3MJAQxyZXdhcmRBbW91bnQABQR1bml0BQNuaWwJAJQKAgUHYWN0aW9ucwkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgxpbnRlZ2VyRW50cnkJAMwIAgkBDmtSZXF1ZXN0U3RhdHVzAQUJcmVxdWVzdElkCQDMCAIFFFJFUVVFU1RfU1RBVFVTX0VNUFRZBQNuaWwFA25pbAkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgtiaW5hcnlFbnRyeQkAzAgCCQEOa1JlcXVlc3RzUXVldWUACQDMCAIJAMsBAgkBDXJlcXVlc3RzUXVldWUABQlyZXF1ZXN0SWQFA25pbAUDbmlsCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCC2JpbmFyeUVudHJ5CQDMCAIJARBrUmVxdWVzdHNCeU93bmVyAQULdXNlckFkZHJlc3MJAMwIAgkAywECCQEPcmVxdWVzdHNCeU93bmVyAQULdXNlckFkZHJlc3MFCXJlcXVlc3RJZAUDbmlsBQNuaWwJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwILYmluYXJ5RW50cnkJAMwIAgkBFmtSZXF1ZXN0T3duZXJQdWJsaWNLZXkBBQlyZXF1ZXN0SWQJAMwIAgUPY2FsbGVyUHVibGljS2V5BQNuaWwFA25pbAkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgtzdHJpbmdFbnRyeQkAzAgCCQEVa1JlcXVlc3RBbW91bnRBc3NldElkAQUJcmVxdWVzdElkCQDMCAIFEGFtb3VudEFzc2V0SWRTdHIFA25pbAUDbmlsCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCC3N0cmluZ0VudHJ5CQDMCAIJARRrUmVxdWVzdFByaWNlQXNzZXRJZAEFCXJlcXVlc3RJZAkAzAgCBQ9wcmljZUFzc2V0SWRTdHIFA25pbAUDbmlsCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCDGludGVnZXJFbnRyeQkAzAgCCQEQa1JlcXVlc3RMZXZlcmFnZQEFCXJlcXVlc3RJZAkAzAgCBQhsZXZlcmFnZQUDbmlsBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQtlZGl0QWNjb3VudAIPY2FsbGVyUHVibGljS2V5BGFyZ3MEDmFjY291bnRBZGRyZXNzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQRhcmdzAAAJAQd3cmFwRXJyAQIXaW52YWxpZCBhY2NvdW50IGFkZHJlc3MEEGFtb3VudEFzc2V0SWRTdHIJAJEDAgUEYXJncwABBA9wcmljZUFzc2V0SWRTdHIJAJEDAgUEYXJncwACBAhsZXZlcmFnZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEJAJEDAgUEYXJncwADCQEHd3JhcEVycgECEGludmFsaWQgbGV2ZXJhZ2UECXJlcXVlc3RJZAkBDGdldFJlcXVlc3RJZAEFDmFjY291bnRBZGRyZXNzBA5vd25lclB1YmxpY0tleQkBGGdldEFjY291bnRPd25lclB1YmxpY0tleQEFDmFjY291bnRBZGRyZXNzBA1hbW91bnRBc3NldElkCQEMcGFyc2VBc3NldElkAQUQYW1vdW50QXNzZXRJZFN0cgQMcHJpY2VBc3NldElkCQEMcGFyc2VBc3NldElkAQUPcHJpY2VBc3NldElkU3RyBAZjaGVja3MJAMwIAgMJAQEhAQUIc2h1dGRvd24GCQEIdGhyb3dFcnIBAgtub3QgYWxsb3dlZAkAzAgCCQELbXVzdEZhY3RvcnkBCAUBaQZjYWxsZXIJAMwIAgMJAAACBQ9jYWxsZXJQdWJsaWNLZXkFDm93bmVyUHVibGljS2V5BgkBCHRocm93RXJyAQIeY2FsbGVyIGlzIG5vdCBhbiBhY2NvdW50IG93bmVyCQDMCAIDCQELcGFpckFsbG93ZWQCBQ1hbW91bnRBc3NldElkBQxwcmljZUFzc2V0SWQGCQEIdGhyb3dFcnIBAhNwYWlyIGlzIG5vdCBhbGxvd2VkCQDMCAIDCQAAAgUIbGV2ZXJhZ2UAAgYJAQh0aHJvd0VycgECF2xldmVyYWdlIGlzIG5vdCBhbGxvd2VkCQDMCAIDCQAAAgkAmggCBQ5mYWN0b3J5QWRkcmVzcwkBDmtSZXF1ZXN0U3RhdHVzAQUJcmVxdWVzdElkBRRSRVFVRVNUX1NUQVRVU19SRUFEWQYJAQh0aHJvd0VycgECFGFjY291bnQgaXMgbm90IHJlYWR5BQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MJAJQKAgUDbmlsCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCC3N0cmluZ0VudHJ5CQDMCAIJARVrUmVxdWVzdEFtb3VudEFzc2V0SWQBBQlyZXF1ZXN0SWQJAMwIAgUQYW1vdW50QXNzZXRJZFN0cgUDbmlsBQNuaWwJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwILc3RyaW5nRW50cnkJAMwIAgkBFGtSZXF1ZXN0UHJpY2VBc3NldElkAQUJcmVxdWVzdElkCQDMCAIFD3ByaWNlQXNzZXRJZFN0cgUDbmlsBQNuaWwJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwIMaW50ZWdlckVudHJ5CQDMCAIJARBrUmVxdWVzdExldmVyYWdlAQUJcmVxdWVzdElkCQDMCAIFCGxldmVyYWdlBQNuaWwFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCmFkZEFjY291bnQCD2NhbGxlclB1YmxpY0tleQRhcmdzBAZja2Vja3MJAMwIAgMJAQEhAQUIc2h1dGRvd24GCQEIdGhyb3dFcnIBAgtub3QgYWxsb3dlZAkAzAgCCQELbXVzdEZhY3RvcnkBCAUBaQZjYWxsZXIFA25pbAMJAAACBQZja2Vja3MFBmNrZWNrcwQQY3JlYXRvclB1YmxpY0tleQkA2QQBCQCRAwIFBGFyZ3MAAAQQYWNjb3VudFB1YmxpY0tleQUPY2FsbGVyUHVibGljS2V5BA5hY2NvdW50QWRkcmVzcwkApwgBBQ9jYWxsZXJQdWJsaWNLZXkEDmNyZWF0b3JBZGRyZXNzCQCnCAEFEGNyZWF0b3JQdWJsaWNLZXkEBmNoZWNrcwkAzAgCAwkAAAIJAJwIAgUOZmFjdG9yeUFkZHJlc3MJARhrQWNjb3VudENyZWF0b3JQdWJsaWNLZXkBBQ5hY2NvdW50QWRkcmVzcwUEdW5pdAYJAQh0aHJvd0VycgECGWFjY291bnQgaXMgYWxyZWFkeSBleGlzdHMJAMwIAgMEByRtYXRjaDAJAPEHAQUOYWNjb3VudEFkZHJlc3MDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkAAAIFAWIJAPEVAQkBDWFjY291bnRTY3JpcHQABwYJAQh0aHJvd0VycgECDmludmFsaWQgc2NyaXB0BQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEDSR0MDIxMjY0MjI0MDkDCQAAAgkAyAEBCQENcmVxdWVzdHNRdWV1ZQAAAAkAlAoCCQEIdGhyb3dFcnIBAhdyZXF1ZXN0cyBxdWV1ZSBpcyBlbXB0eQUDbmlsBAlyZXF1ZXN0SWQJAMkBAgkBDXJlcXVlc3RzUXVldWUABQ1xdWV1ZUl0ZW1TaXplBAhsZXZlcmFnZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFDmZhY3RvcnlBZGRyZXNzCQEQa1JlcXVlc3RMZXZlcmFnZQEFCXJlcXVlc3RJZAkBB3dyYXBFcnIBAh9yZXF1ZXN0J3MgbGV2ZXJhZ2UgaXMgdW5kZWZpbmVkCQCUCgIFA25pbAkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgxpbnRlZ2VyRW50cnkJAMwIAgkBDmtSZXF1ZXN0U3RhdHVzAQUJcmVxdWVzdElkCQDMCAIFFFJFUVVFU1RfU1RBVFVTX1JFQURZBQNuaWwFA25pbAkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgtiaW5hcnlFbnRyeQkAzAgCCQEca1JlcXVlc3RJZFRvQWNjb3VudFB1YmxpY0tleQEFCXJlcXVlc3RJZAkAzAgCBRBhY2NvdW50UHVibGljS2V5BQNuaWwFA25pbAkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgtiaW5hcnlFbnRyeQkAzAgCCQEOa1JlcXVlc3RzUXVldWUACQDMCAIJAMoBAgkBDXJlcXVlc3RzUXVldWUABQ1xdWV1ZUl0ZW1TaXplBQNuaWwFA25pbAkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgtzdHJpbmdFbnRyeQkAzAgCCQEaa0FjY291bnRBZGRyZXNzVG9SZXF1ZXN0SWQBBQ5hY2NvdW50QWRkcmVzcwkAzAgCCQDYBAEFCXJlcXVlc3RJZAUDbmlsBQNuaWwJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwINdHJhbnNmZXJXYXZlcwkAzAgCCAUOY3JlYXRvckFkZHJlc3MFYnl0ZXMJAMwIAgkBDHJld2FyZEFtb3VudAAFA25pbAUDbmlsCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCDGludGVnZXJFbnRyeQkAzAgCCQEJa0xldmVyYWdlAQUOYWNjb3VudEFkZHJlc3MJAMwIAgUIbGV2ZXJhZ2UFA25pbAUDbmlsBQNuaWwEB2FjdGlvbnMIBQ0kdDAyMTI2NDIyNDA5Al8xBA5mYWN0b3J5QWN0aW9ucwgFDSR0MDIxMjY0MjI0MDkCXzIJAJQKAgUHYWN0aW9ucwkAzggCBQ5mYWN0b3J5QWN0aW9ucwkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgtiaW5hcnlFbnRyeQkAzAgCCQEYa0FjY291bnRDcmVhdG9yUHVibGljS2V5AQUOYWNjb3VudEFkZHJlc3MJAMwIAgUQY3JlYXRvclB1YmxpY0tleQUDbmlsBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQh3aXRoZHJhdwIPY2FsbGVyUHVibGljS2V5BGFyZ3MEBmNoZWNrcwkAzAgCAwkBASEBBQhzaHV0ZG93bgYJAQh0aHJvd0VycgECC25vdCBhbGxvd2VkCQDMCAIJAQttdXN0RmFjdG9yeQEIBQFpBmNhbGxlcgUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAt1c2VyQWRkcmVzcwkApwgBBQ9jYWxsZXJQdWJsaWNLZXkEDmFjY291bnRBZGRyZXNzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQRhcmdzAAAJAQd3cmFwRXJyAQIXaW52YWxpZCBhY2NvdW50IGFkZHJlc3MEBmFtb3VudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEJAJEDAgUEYXJncwABCQEHd3JhcEVycgECDmludmFsaWQgYW1vdW50BAdhc3NldElkCQEMcGFyc2VBc3NldElkAQkAkQMCBQRhcmdzAAIEC2ludm9jYXRpb25zCQDMCAIJAPwHBAUOYWNjb3VudEFkZHJlc3MCDXRyYW5zZmVyQXNzZXQJAMwIAggFC3VzZXJBZGRyZXNzBWJ5dGVzCQDMCAIFBmFtb3VudAkAzAgCBQdhc3NldElkBQNuaWwFA25pbAUDbmlsCQCUCgIFA25pbAULaW52b2NhdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHZGVwb3NpdAIPY2FsbGVyUHVibGljS2V5BGFyZ3MEDSR0MDIzNDMwMjM1MDMJAQ9kZXBvc2l0SU5URVJOQUwDBQ9jYWxsZXJQdWJsaWNLZXkFBGFyZ3MFAWkEB2FjdGlvbnMIBQ0kdDAyMzQzMDIzNTAzAl8xBA5mYWN0b3J5QWN0aW9ucwgFDSR0MDIzNDMwMjM1MDMCXzIJAJQKAgUHYWN0aW9ucwUOZmFjdG9yeUFjdGlvbnMBaQEGYm9ycm93Ag9jYWxsZXJQdWJsaWNLZXkEYXJncwQNJHQwMjM2NTgyMzczMAkBDmJvcnJvd0lOVEVSTkFMAwUPY2FsbGVyUHVibGljS2V5BQRhcmdzBQFpBAdhY3Rpb25zCAUNJHQwMjM2NTgyMzczMAJfMQQOZmFjdG9yeUFjdGlvbnMIBQ0kdDAyMzY1ODIzNzMwAl8yCQCUCgIFB2FjdGlvbnMFDmZhY3RvcnlBY3Rpb25zAWkBEGRlcG9zaXRBbmRCb3Jyb3cCD2NhbGxlclB1YmxpY0tleQRhcmdzBA5hY2NvdW50QWRkcmVzcwkAkQMCBQRhcmdzAAAEDSR0MDIzOTI2MjQwMjUJAQ9kZXBvc2l0SU5URVJOQUwDBQ9jYWxsZXJQdWJsaWNLZXkJAMwIAgUOYWNjb3VudEFkZHJlc3MFA25pbAUBaQQOZGVwb3NpdEFjdGlvbnMIBQ0kdDAyMzkyNjI0MDI1Al8xBBVkZXBvc2l0RmFjdG9yeUFjdGlvbnMIBQ0kdDAyMzkyNjI0MDI1Al8yBA0kdDAyNDAyODI0MTEyCQEOYm9ycm93SU5URVJOQUwDBQ9jYWxsZXJQdWJsaWNLZXkFBGFyZ3MFAWkEDWJvcnJvd0FjdGlvbnMIBQ0kdDAyNDAyODI0MTEyAl8xBBRib3Jyb3dGYWN0b3J5QWN0aW9ucwgFDSR0MDI0MDI4MjQxMTICXzIJAJQKAgkAzggCBQ5kZXBvc2l0QWN0aW9ucwUNYm9ycm93QWN0aW9ucwkAzggCBRVkZXBvc2l0RmFjdG9yeUFjdGlvbnMFFGJvcnJvd0ZhY3RvcnlBY3Rpb25zAWkBBXJlcGF5Ag9jYWxsZXJQdWJsaWNLZXkEYXJncwQGY2tlY2tzCQDMCAIDCQEBIQEFCHNodXRkb3duBgkBCHRocm93RXJyAQILbm90IGFsbG93ZWQJAMwIAgkBC211c3RGYWN0b3J5AQgFAWkGY2FsbGVyBQNuaWwDCQAAAgUGY2tlY2tzBQZja2Vja3MJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEHNldFBhaXJBbGxvd2FuY2UCD2NhbGxlclB1YmxpY0tleQRhcmdzBAZja2Vja3MJAMwIAgMJAQEhAQUIc2h1dGRvd24GCQEIdGhyb3dFcnIBAgtub3QgYWxsb3dlZAkAzAgCCQELbXVzdEZhY3RvcnkBCAUBaQZjYWxsZXIJAMwIAgkBCW11c3RBZG1pbgEFD2NhbGxlclB1YmxpY0tleQUDbmlsAwkAAAIFBmNrZWNrcwUGY2tlY2tzBBBhbW91bnRBc3NldElkU3RyCQCRAwIFBGFyZ3MAAAQPcHJpY2VBc3NldElkU3RyCQCRAwIFBGFyZ3MAAQQIYWxsb3dTdHIJAJEDAgUEYXJncwACBA1hbW91bnRBc3NldElkCQEMcGFyc2VBc3NldElkAQUQYW1vdW50QXNzZXRJZFN0cgQMcHJpY2VBc3NldElkCQEMcGFyc2VBc3NldElkAQUPcHJpY2VBc3NldElkU3RyBAVhbGxvdwkAAAIFCGFsbG93U3RyAgR0cnVlBAtpbnZvY2F0aW9ucwkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgxib29sZWFuRW50cnkJAMwIAgkBDGtQYWlyQWxsb3dlZAIFDWFtb3VudEFzc2V0SWQFDHByaWNlQXNzZXRJZAkAzAgCBQVhbGxvdwUDbmlsBQNuaWwFA25pbAkAlAoCBQNuaWwFC2ludm9jYXRpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEWFkZFN5bnRoZXRpY0Fzc2V0Ag9jYWxsZXJQdWJsaWNLZXkEYXJncwQLYmFzZUFzc2V0SWQJAQxwYXJzZUFzc2V0SWQBCQCRAwIFBGFyZ3MAAAQQc3ludGhldGljQXNzZXRJZAkBDHBhcnNlQXNzZXRJZAEJAJEDAgUEYXJncwABBAZja2Vja3MJAMwIAgMJAQEhAQUIc2h1dGRvd24GCQEIdGhyb3dFcnIBAgtub3QgYWxsb3dlZAkAzAgCCQELbXVzdEZhY3RvcnkBCAUBaQZjYWxsZXIJAMwIAgkBCW11c3RBZG1pbgEFD2NhbGxlclB1YmxpY0tleQkAzAgCAwkAAAIJAJ0IAgUOZmFjdG9yeUFkZHJlc3MJARFrU3ludGhldGljQXNzZXRJZAEFC2Jhc2VBc3NldElkBQR1bml0BgkBCHRocm93RXJyAQISaW52YWxpZCBiYXNlIGFzc2V0CQDMCAIDCQAAAgkAnQgCBQ5mYWN0b3J5QWRkcmVzcwkBDGtCYXNlQXNzZXRJZAEFEHN5bnRoZXRpY0Fzc2V0SWQFBHVuaXQGCQEIdGhyb3dFcnIBAhdpbnZhbGlkIHN5bnRoZXRpYyBhc3NldAUDbmlsAwkAAAIFBmNrZWNrcwUGY2tlY2tzBAtpbnZvY2F0aW9ucwkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgtzdHJpbmdFbnRyeQkAzAgCCQERa1N5bnRoZXRpY0Fzc2V0SWQBBQtiYXNlQXNzZXRJZAkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQUQc3ludGhldGljQXNzZXRJZAUDbmlsBQNuaWwJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwILc3RyaW5nRW50cnkJAMwIAgkBDGtCYXNlQXNzZXRJZAEFEHN5bnRoZXRpY0Fzc2V0SWQJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFC2Jhc2VBc3NldElkBQNuaWwFA25pbAUDbmlsCQCUCgIFA25pbAULaW52b2NhdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKZG9TaHV0ZG93bgIPY2FsbGVyUHVibGljS2V5BGFyZ3MEBmNoZWNrcwkAzAgCCQELbXVzdEZhY3RvcnkBCAUBaQZjYWxsZXIJAMwIAgkBCW11c3RBZG1pbgEFD2NhbGxlclB1YmxpY0tleQUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAtpbnZvY2F0aW9ucwkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgxib29sZWFuRW50cnkJAMwIAgUJa1NodXRkb3duCQDMCAIGBQNuaWwFA25pbAUDbmlsCQCUCgIFA25pbAULaW52b2NhdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEWZ2V0QWNjb3VudEluZm9SRUFET05MWQIPY2FsbGVyUHVibGljS2V5BGFyZ3MEBmNoZWNrcwkAzAgCCQELbXVzdEZhY3RvcnkBCAUBaQZjYWxsZXIFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQOYWNjb3VudEFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFBGFyZ3MAAAkBB3dyYXBFcnIBAhdpbnZhbGlkIGFjY291bnQgYWRkcmVzcwQEZGF0YQkBFmdldEFjY291bnRJbmZvSW50ZXJuYWwBBQ5hY2NvdW50QWRkcmVzcwkAlAoCBQNuaWwFBGRhdGEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQETZ2V0VXNlckluZm9SRUFET05MWQIPY2FsbGVyUHVibGljS2V5BGFyZ3MEBmNoZWNrcwkAzAgCCQELbXVzdEZhY3RvcnkBCAUBaQZjYWxsZXIFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQLdXNlckFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFBGFyZ3MAAAkBB3dyYXBFcnIBAhRpbnZhbGlkIHVzZXIgYWRkcmVzcwQMdXNlclJlcXVlc3RzCQELdmFsdWVPckVsc2UCCQCcCAIFDmZhY3RvcnlBZGRyZXNzCQEQa1JlcXVlc3RzQnlPd25lcgEFC3VzZXJBZGRyZXNzAQAEEnVzZXJSZXF1ZXN0c051bWJlcgkAaQIJAMgBAQUMdXNlclJlcXVlc3RzBQ1xdWV1ZUl0ZW1TaXplCgEPZ2V0QWNjb3VudHNEYXRhAgNhY2MFY291bnQEDSR0MDI3MDQ1MjcwODcFA2FjYwQLYWNjRGF0YUxpc3QIBQ0kdDAyNzA0NTI3MDg3Al8xBAhyYXdCeXRlcwgFDSR0MDI3MDQ1MjcwODcCXzIEB21heFNpemUIBQ0kdDAyNzA0NTI3MDg3Al8zAwkAZgIFB21heFNpemUFBWNvdW50BAlyZXF1ZXN0SWQJAMkBAgUIcmF3Qnl0ZXMFDXF1ZXVlSXRlbVNpemUEC25ld1Jhd0J5dGVzCQDKAQIFCHJhd0J5dGVzBQ1xdWV1ZUl0ZW1TaXplBBBhY2NvdW50UHVibGljS2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgUOZmFjdG9yeUFkZHJlc3MJARxrUmVxdWVzdElkVG9BY2NvdW50UHVibGljS2V5AQUJcmVxdWVzdElkAiZrUmVxdWVzdElkVG9BY2NvdW50UHVibGljS2V5IG5vdCBmb3VuZAQOYWNjb3VudEFkZHJlc3MJAKcIAQUQYWNjb3VudFB1YmxpY0tleQQEZGF0YQkBFmdldEFjY291bnRJbmZvSW50ZXJuYWwBBQ5hY2NvdW50QWRkcmVzcwkAlQoDCQDNCAIFC2FjY0RhdGFMaXN0BQRkYXRhBQtuZXdSYXdCeXRlcwUHbWF4U2l6ZQUDYWNjBA0kdDAyNzU5MTI3Njk2CgACJGwFCklOREVYX0xJU1QKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCVCgMFA25pbAUMdXNlclJlcXVlc3RzBRJ1c2VyUmVxdWVzdHNOdW1iZXIKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBD2dldEFjY291bnRzRGF0YQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUBAthY2NEYXRhTGlzdAgFDSR0MDI3NTkxMjc2OTYCXzEEAl9hCAUNJHQwMjc1OTEyNzY5NgJfMgQCX2IIBQ0kdDAyNzU5MTI3Njk2Al8zCQCUCgIFA25pbAULYWNjRGF0YUxpc3QJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEbZ2V0UGFpclNldHRpbmdzSW5mb1JFQURPTkxZAg9jYWxsZXJQdWJsaWNLZXkEYXJncwQLYW1vdW50QXNzZXQJAQxwYXJzZUFzc2V0SWQBCQCRAwIFBGFyZ3MAAAQKcHJpY2VBc3NldAkBDHBhcnNlQXNzZXRJZAEJAJEDAgUEYXJncwABBApwcmljZXNMaXN0CQERZ2V0UGFpclByaWNlc0xpc3QCBQthbW91bnRBc3NldAUKcHJpY2VBc3NldAoBD2dldFBhaXJTZXR0aW5ncwIDYWNjDHByaWNlc1N0cmluZwQLc2V0dGluZ3NLZXkJARBrUGFpclNldHRpbmdzS2V5AwULYW1vdW50QXNzZXQFCnByaWNlQXNzZXQFDHByaWNlc1N0cmluZwQTc2V0dGluZ3NTdHJpbmdWYWx1ZQkBEUBleHRyTmF0aXZlKDEwNTMpAgUOZmFjdG9yeUFkZHJlc3MFC3NldHRpbmdzS2V5BAVzTGlzdAkAtQkCBRNzZXR0aW5nc1N0cmluZ1ZhbHVlBQlzZXBhcmF0b3IEBXByaWNlCQC2CQEFDHByaWNlc1N0cmluZwQLbWF4TGV2ZXJhZ2UJALYJAQkAkQMCBQVzTGlzdAABBA1pbml0aWFsTWFyZ2luCQC2CQEJAJEDAgUFc0xpc3QAAgQRbWFpbnRlbmFuY2VNYXJnaW4JALYJAQkAkQMCBQVzTGlzdAADCQDNCAIFA2FjYwkAlgoEBQVwcmljZQULbWF4TGV2ZXJhZ2UFDWluaXRpYWxNYXJnaW4FEW1haW50ZW5hbmNlTWFyZ2luBARkYXRhCgACJGwFCnByaWNlc0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBD2dldFBhaXJTZXR0aW5ncwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUCQCUCgIFA25pbAUEZGF0YQFpARBlZGl0UGFpclNldHRpbmdzAg9jYWxsZXJQdWJsaWNLZXkEYXJncwQGY2hlY2tzCQDMCAIJAQttdXN0RmFjdG9yeQEIBQFpBmNhbGxlcgkAzAgCCQEJbXVzdEFkbWluAQUPY2FsbGVyUHVibGljS2V5BQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEC2Ftb3VudEFzc2V0CQEMcGFyc2VBc3NldElkAQkAkQMCBQRhcmdzAAAECnByaWNlQXNzZXQJAQxwYXJzZUFzc2V0SWQBCQCRAwIFBGFyZ3MAAQQFcHJpY2UJAJEDAgUEYXJncwACBAttYXhMZXZlcmFnZQkAkQMCBQRhcmdzAAMEDWluaXRpYWxNYXJnaW4JAJEDAgUEYXJncwAEBBFtYWludGVuYW5jZU1hcmdpbgkAkQMCBQRhcmdzAAUEEXBhaXJQcmljZXNMaXN0S2V5CQESa1BhaXJQcmljZXNMaXN0S2V5AgULYW1vdW50QXNzZXQFCnByaWNlQXNzZXQEC3NldHRpbmdzS2V5CQEQa1BhaXJTZXR0aW5nc0tleQMFC2Ftb3VudEFzc2V0BQpwcmljZUFzc2V0BQVwcmljZQQKcHJpY2VzTGlzdAkBEWdldFBhaXJQcmljZXNMaXN0AgULYW1vdW50QXNzZXQFCnByaWNlQXNzZXQEB25ld0xpc3QEByRtYXRjaDAJAM8IAgUKcHJpY2VzTGlzdAUFcHJpY2UDCQABAgUHJG1hdGNoMAIDSW50BANpbmQFByRtYXRjaDAFCnByaWNlc0xpc3QJAM0IAgUKcHJpY2VzTGlzdAUFcHJpY2UEBmNoZWNrMgkAzAgCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQUFcHJpY2UJAQd3cmFwRXJyAQIZcHJpY2UgdmFsdWUgaXMgbm90IGFuIEludAkAzAgCCQETdmFsdWVPckVycm9yTWVzc2FnZQIFC21heExldmVyYWdlCQEHd3JhcEVycgECH21heExldmVyYWdlIHZhbHVlIGlzIG5vdCBhbiBJbnQJAMwIAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBQ1pbml0aWFsTWFyZ2luCQEHd3JhcEVycgECIWluaXRpYWxNYXJnaW4gdmFsdWUgaXMgbm90IGFuIEludAkAzAgCCQETdmFsdWVPckVycm9yTWVzc2FnZQIFEW1haW50ZW5hbmNlTWFyZ2luCQEHd3JhcEVycgECJW1haW50ZW5hbmNlTWFyZ2luIHZhbHVlIGlzIG5vdCBhbiBJbnQJAMwIAgMJAGcCABQJAJADAQUHbmV3TGlzdAYJAQh0aHJvd0VycgECImV4Y2VlZGVkIG1heCBwcmljZXMgbGlzdCBzaXplICgyMCkFA25pbAMJAAACBQZjaGVjazIFBmNoZWNrMgQQcGFpclNldHRpbmdWYWx1ZQkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQttYXhMZXZlcmFnZQkAzAgCBQ1pbml0aWFsTWFyZ2luCQDMCAIFEW1haW50ZW5hbmNlTWFyZ2luBQNuaWwFCXNlcGFyYXRvcgQLaW52b2NhdGlvbnMJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwILc3RyaW5nRW50cnkJAMwIAgkBEmtQYWlyUHJpY2VzTGlzdEtleQIFC2Ftb3VudEFzc2V0BQpwcmljZUFzc2V0CQDMCAIJALkJAgUHbmV3TGlzdAUJc2VwYXJhdG9yBQNuaWwFA25pbAkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgtzdHJpbmdFbnRyeQkAzAgCCQEQa1BhaXJTZXR0aW5nc0tleQMFC2Ftb3VudEFzc2V0BQpwcmljZUFzc2V0BQVwcmljZQkAzAgCBRBwYWlyU2V0dGluZ1ZhbHVlBQNuaWwFA25pbAUDbmlsCQCUCgIFA25pbAULaW52b2NhdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQESZGVsZXRlUGFpclNldHRpbmdzAg9jYWxsZXJQdWJsaWNLZXkEYXJncwQGY2hlY2tzCQDMCAIJAQttdXN0RmFjdG9yeQEIBQFpBmNhbGxlcgkAzAgCCQEJbXVzdEFkbWluAQUPY2FsbGVyUHVibGljS2V5BQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEC2Ftb3VudEFzc2V0CQEMcGFyc2VBc3NldElkAQkAkQMCBQRhcmdzAAAECnByaWNlQXNzZXQJAQxwYXJzZUFzc2V0SWQBCQCRAwIFBGFyZ3MAAQQFcHJpY2UJAJEDAgUEYXJncwACBAtzZXR0aW5nc0tleQkBEGtQYWlyU2V0dGluZ3NLZXkDBQthbW91bnRBc3NldAUKcHJpY2VBc3NldAUFcHJpY2UEEXBhaXJQcmljZXNMaXN0S2V5CQESa1BhaXJQcmljZXNMaXN0S2V5AgULYW1vdW50QXNzZXQFCnByaWNlQXNzZXQECnByaWNlc0xpc3QJARFnZXRQYWlyUHJpY2VzTGlzdAIFC2Ftb3VudEFzc2V0BQpwcmljZUFzc2V0BAduZXdMaXN0BAckbWF0Y2gwCQDPCAIFCnByaWNlc0xpc3QFBXByaWNlAwkAAQIFByRtYXRjaDACA0ludAQDaW5kBQckbWF0Y2gwCQDRCAIFCnByaWNlc0xpc3QFA2luZAUKcHJpY2VzTGlzdAQLaW52b2NhdGlvbnMJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwILZGVsZXRlRW50cnkJAMwIAgULc2V0dGluZ3NLZXkFA25pbAUDbmlsCQDMCAIDCQAAAgkAkAMBBQduZXdMaXN0AAAJAPwHBAUOZmFjdG9yeUFkZHJlc3MCC2RlbGV0ZUVudHJ5CQDMCAIJARJrUGFpclByaWNlc0xpc3RLZXkCBQthbW91bnRBc3NldAUKcHJpY2VBc3NldAUDbmlsBQNuaWwJAPwHBAUOZmFjdG9yeUFkZHJlc3MCC3N0cmluZ0VudHJ5CQDMCAIJARJrUGFpclByaWNlc0xpc3RLZXkCBQthbW91bnRBc3NldAUKcHJpY2VBc3NldAkAzAgCCQC5CQIFB25ld0xpc3QFCXNlcGFyYXRvcgUDbmlsBQNuaWwFA25pbAkAlAoCBQNuaWwFC2ludm9jYXRpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAMDCQEJaXNEZWZpbmVkAQUUZmFjdG9yeUFkZHJlc3NPcHRpb24JAQlpc0RlZmluZWQBCQCdCAIFDmZhY3RvcnlBZGRyZXNzBQlrTXVsdGlzaWcHBAckbWF0Y2gwCQCdCAIFDmZhY3RvcnlBZGRyZXNzBQlrTXVsdGlzaWcDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAhtdWx0aXNpZwUHJG1hdGNoMAQJc3RhdHVzS2V5CQEHa1N0YXR1cwIJAKUIAQUEdGhpcwkA2AQBCAUCdHgCaWQEBnN0YXR1cwkBC3ZhbHVlT3JFbHNlAgkAmwgCCQERQGV4dHJOYXRpdmUoMTA2MikBBQhtdWx0aXNpZwUJc3RhdHVzS2V5BwUGc3RhdHVzBwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleZWY+XU=", "height": 3287404, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4JnZHetswEK2vsWqraSxe7r7vnkPPqWEAfEXWdgZV7kj Next: none Diff:
OldNewDifferences
239239 func aN () = valueOrElse(getBinary(T, aM()), base58'')
240240
241241
242-func aO () = makeString(["%s", "accountsQueue"], a)
242+func aO (aP) = makeString(["%s%s", "requests", toString(aP)], a)
243243
244244
245-func aP () = valueOrElse(getBinary(T, aO()), base58'')
245+func aQ (aP) = valueOrElse(getBinary(T, aO(aP)), base58'')
246246
247247
248-func aQ (aR) = makeString(["%s%s", "requests", toString(aR)], a)
248+func aR (aS,aT) = makeString(["%s%s%s", I(aS), I(aT), "pairAllowed"], a)
249249
250250
251-func aS (aR) = valueOrElse(getBinary(T, aQ(aR)), base58'')
251+func aU (aS,aT) = valueOrElse(getBoolean(T, aR(aS, aT)), false)
252252
253253
254-func aT (aU,aV) = makeString(["%s%s%s", I(aU), I(aV), "pairAllowed"], a)
254+func aV (K) = makeString(["%s", I(K)], a)
255255
256256
257-func aW (aU,aV) = valueOrElse(getBoolean(T, aT(aU, aV)), false)
257+func aW (aS,aT) = makeString(["%s%s%s", I(aS), I(aT), "pairSettingPrices"], a)
258258
259259
260-func aX (K) = makeString(["%s", I(K)], a)
261-
262-
263-func aY (aU,aV) = makeString(["%s%s%s", I(aU), I(aV), "pairSettingPrices"], a)
264-
265-
266-func aZ (aU,aV) = {
267- let M = getString(T, aY(aU, aV))
260+func aX (aS,aT) = {
261+ let M = getString(T, aW(aS, aT))
268262 if ($isInstanceOf(M, "String"))
269263 then {
270264 let C = M
274268 }
275269
276270
277-func ba (aU,aV,bb) = makeString(["%s%s%d%s", I(aU), I(aV), bb, "settings"], a)
271+func aY (aS,aT,aZ) = makeString(["%s%s%d%s", I(aS), I(aT), aZ, "settings"], a)
278272
279273
280-func bc (K) = {
281- let bd = fromBase58String(valueOrErrorMessage(getString(T, s), B("invalid matcher public key")))
282- let be = addressFromPublicKey(bd)
283- let bf = valueOrErrorMessage(getInteger(be, aX(K)), B(("invalid price, assetId = " + I(K))))
284- bf
274+func ba (K) = {
275+ let bb = fromBase58String(valueOrErrorMessage(getString(T, s), B("invalid matcher public key")))
276+ let bc = addressFromPublicKey(bb)
277+ let bd = valueOrErrorMessage(getInteger(bc, aV(K)), B(("invalid price, assetId = " + I(K))))
278+ bd
285279 }
286280
287281
288-func bg (bh,bi,bj) = (fraction(bh, bj, f) + bi)
282+func be (bf,bg,bh) = (fraction(bf, bh, f) + bg)
289283
290284
291-func bk (bl,bm,bj) = (fraction(bl, bj, f) + bm)
285+func bi (bj,bk,bh) = (fraction(bj, bh, f) + bk)
292286
293287
294-func bn (bo,bp) = (bo - bp)
288+func bl (bm,bn) = (bm - bn)
295289
296290
297-func bq (br,bs,bp) = (fraction(br, bs, f) - bp)
291+func bo (bp,bq,bn) = (fraction(bp, bq, f) - bn)
298292
299293
300-func bt (bu,bv) = if ((bu > k))
301- then (bu - bv)
294+func br (bs,bt) = if ((bs > k))
295+ then (bs - bt)
302296 else k
303297
304298
305-func bw (bu,bv) = if ((bu > k))
306- then (bv - bu)
299+func bu (bs,bt) = if ((bs > k))
300+ then (bt - bs)
307301 else k
308302
309303
310-func bx (by,bz) = if ((bz > k))
311- then max([k, fraction(by, f, bz)])
304+func bv (bw,bx) = if ((bx > k))
305+ then max([k, fraction(bw, f, bx)])
312306 else k
313307
314308
315-func bA (by,bz) = if ((bz > k))
316- then max([k, fraction(bz, f, by)])
309+func by (bw,bx) = if ((bx > k))
310+ then max([k, fraction(bx, f, bw)])
317311 else k
318312
319313
320-func bB (bC,bD,bj,bE) = fraction((fraction(bC, bj, f) + bD), bE, f)
314+func bz (bA,bB,bh,bC) = fraction((fraction(bA, bh, f) + bB), bC, f)
321315
322316
323-func bF (bG,bE,bH) = fraction(bG, bH, bE)
317+func bD (bE,bC,bF) = fraction(bE, bF, bC)
324318
325319
326-func bI (br,bJ,bC,bD,bK,bL) = {
327- let bM = if ((bC > k))
328- then (((br - bJ) / bC) + bK)
320+func bG (bp,bH,bA,bB,bI,bJ) = {
321+ let bK = if ((bA > k))
322+ then (((bp - bH) / bA) + bI)
329323 else k
330- let bN = if ((bD > k))
331- then (bL - ((br - bJ) / (bC / bL)))
324+ let bL = if ((bB > k))
325+ then (bJ - ((bp - bH) / (bA / bJ)))
332326 else k
333- (bM + bN)
327+ (bK + bL)
334328 }
335329
336330
337-func bO (as) = {
331+func bM (as) = {
338332 let ay = fromBase58String(valueOrErrorMessage(getString(T, aL(as)), B("invalid account address: request id is undefined")))
339333 ay
340334 }
341335
342336
343-func bP (as) = {
344- let ay = bO(as)
345- let aU = G(valueOrErrorMessage(getString(T, aI(ay)), B("invalid amount asset id")))
346- let aV = G(valueOrErrorMessage(getString(T, aJ(ay)), B("invalid amount price id")))
347- $Tuple2(aU, aV)
337+func bN (as) = {
338+ let ay = bM(as)
339+ let aS = G(valueOrErrorMessage(getString(T, aI(ay)), B("invalid amount asset id")))
340+ let aT = G(valueOrErrorMessage(getString(T, aJ(ay)), B("invalid amount price id")))
341+ $Tuple2(aS, aT)
342+ }
343+
344+
345+func bO (as) = {
346+ let ay = bM(as)
347+ let bP = valueOrErrorMessage(getBinary(T, aH(ay)), B("invalid amount asset id"))
348+ bP
348349 }
349350
350351
351352 func bQ (as) = {
352- let ay = bO(as)
353- let bR = valueOrErrorMessage(getBinary(T, aH(ay)), B("invalid amount asset id"))
354- bR
355- }
356-
357-
358-func bS (as) = {
359- let bT = bP(as)
360- let aU = bT._1
361- let aV = bT._2
362- let bs = valueOrErrorMessage(getInteger(T, aw(as)), B("leverage should be defined"))
363- let ay = bO(as)
364- let bU = valueOrErrorMessage(getBinary(T, aK(ay)), "kRequestIdToAccountPublicKey not found")
365- let bV = valueOrElse(at(as), 0)
366- let bj = t(bc(aU), Q(aV))
367- let bh = valueOrElse(getInteger(T, au(as, aU)), 0)
368- let bi = valueOrElse(getInteger(T, au(as, aV)), 0)
369- let bW = valueOrErrorMessage(getInteger(T, aF(ay)), ("status not found. RequestId = " + toBase58String(ay)))
370- let bX = getString(T, az(aU))
353+ let bR = bN(as)
354+ let aS = bR._1
355+ let aT = bR._2
356+ let bq = valueOrErrorMessage(getInteger(T, aw(as)), B("leverage should be defined"))
357+ let ay = bM(as)
358+ let bS = valueOrErrorMessage(getBinary(T, aK(ay)), "kRequestIdToAccountPublicKey not found")
359+ let bT = valueOrElse(at(as), 0)
360+ let bh = t(ba(aS), Q(aT))
361+ let bf = valueOrElse(getInteger(T, au(as, aS)), 0)
362+ let bg = valueOrElse(getInteger(T, au(as, aT)), 0)
363+ let bU = valueOrErrorMessage(getInteger(T, aF(ay)), ("status not found. RequestId = " + toBase58String(ay)))
364+ let bV = getString(T, az(aS))
365+ let bW = {
366+ let M = bV
367+ if ($isInstanceOf(M, "String"))
368+ then {
369+ let C = M
370+ N(G(C), as)
371+ }
372+ else 0
373+ }
374+ let bX = getString(T, az(aT))
371375 let bY = {
372376 let M = bX
373377 if ($isInstanceOf(M, "String"))
377381 }
378382 else 0
379383 }
380- let bZ = getString(T, az(aV))
381- let ca = {
382- let M = bZ
383- if ($isInstanceOf(M, "String"))
384- then {
385- let C = M
386- N(G(C), as)
387- }
388- else 0
389- }
390- $Tuple12(I(aU), I(aV), toString(as), toBase58String(bU), bs, toBase58String(ay), bV, bh, bi, bY, ca, bW)
384+ $Tuple12(I(aS), I(aT), toString(as), toBase58String(bS), bq, toBase58String(ay), bT, bf, bg, bW, bY, bU)
391385 }
392386
393387
394-func cb (ae,cc,cd) = {
395- let ce = cd.payments[0]
396- let as = valueOrErrorMessage(addressFromString(cc[0]), B("invalid account address"))
397- let cf = [if (!(Y))
388+func bZ (ae,ca,cb) = {
389+ let cc = cb.payments[0]
390+ let as = valueOrErrorMessage(addressFromString(ca[0]), B("invalid account address"))
391+ let cd = [if (!(Y))
398392 then true
399- else D("not allowed"), ac(cd.caller), if ((size(cd.payments) == 1))
393+ else D("not allowed"), ac(cb.caller), if ((size(cb.payments) == 1))
400394 then true
401- else D("1 payment is required"), if ((ce.assetId == W))
395+ else D("1 payment is required"), if ((cc.assetId == W))
402396 then true
403- else D("invalid asset"), if ((getInteger(T, aF(bO(as))) == aE))
397+ else D("invalid asset"), if ((getInteger(T, aF(bM(as))) == aE))
404398 then true
405399 else D("account is not ready")]
406- if ((cf == cf))
400+ if ((cd == cd))
407401 then {
408- let cg = [ScriptTransfer(as, ce.amount, ce.assetId)]
409- let ch = [invoke(T, "integerEntry", [ar(as), (valueOrElse(at(as), 0) + ce.amount)], nil)]
410- $Tuple2(cg, ch)
402+ let ce = [ScriptTransfer(as, cc.amount, cc.assetId)]
403+ let cf = [invoke(T, "integerEntry", [ar(as), (valueOrElse(at(as), 0) + cc.amount)], nil)]
404+ $Tuple2(ce, cf)
411405 }
412406 else throw("Strict value is not equal to itself.")
413407 }
414408
415409
416-func ci (ae,cc,cd) = {
417- let as = valueOrErrorMessage(addressFromString(cc[0]), B("invalid account address"))
418- let cj = G(cc[1])
419- let ck = E(valueOrErrorMessage(parseInt(cc[2]), B("invalid requested amount")), "requested amount")
420- let cl = bQ(as)
421- let cm = addressFromPublicKey(ae)
422- let cf = [if (!(Y))
410+func cg (ae,ca,cb) = {
411+ let as = valueOrErrorMessage(addressFromString(ca[0]), B("invalid account address"))
412+ let ch = G(ca[1])
413+ let ci = E(valueOrErrorMessage(parseInt(ca[2]), B("invalid requested amount")), "requested amount")
414+ let cj = bO(as)
415+ let ck = addressFromPublicKey(ae)
416+ let cd = [if (!(Y))
423417 then true
424- else D("not allowed"), ac(cd.caller), if ((ae == cl))
418+ else D("not allowed"), ac(cb.caller), if ((ae == cj))
425419 then true
426420 else D("can be called by account owner only")]
427- if ((cf == cf))
421+ if ((cd == cd))
428422 then {
429- let aU = bP(as)._1
430- let bV = t(valueOrElse(at(as), 0), Q(W))
431- let bj = t(bc(aU), Q(W))
432- let bh = t(valueOrElse(getInteger(T, au(as, aU)), 0), Q(aU))
433- let bi = t(valueOrElse(getInteger(T, au(as, W)), 0), Q(W))
434- let bp = bg(bh, bi, bj)
435- let bs = t(valueOrErrorMessage(getInteger(T, aw(as)), B("leverage should be defined")), 1)
436- let cn = bq(bV, bs, bp)
437- let co = if ((cj == aU))
438- then w(fraction(cn, f, bj), Q(aU))
439- else if ((cj == W))
440- then w(cn, Q(W))
423+ let aS = bN(as)._1
424+ let bT = t(valueOrElse(at(as), 0), Q(W))
425+ let bh = t(ba(aS), Q(W))
426+ let bf = t(valueOrElse(getInteger(T, au(as, aS)), 0), Q(aS))
427+ let bg = t(valueOrElse(getInteger(T, au(as, W)), 0), Q(W))
428+ let bn = be(bf, bg, bh)
429+ let bq = t(valueOrErrorMessage(getInteger(T, aw(as)), B("leverage should be defined")), 1)
430+ let cl = bo(bT, bq, bn)
431+ let cm = if ((ch == aS))
432+ then w(fraction(cl, f, bh), Q(aS))
433+ else if ((ch == W))
434+ then w(cl, Q(W))
441435 else D("invalid requested asset id")
442- let aC = G(valueOrErrorMessage(getString(T, az(cj)), B("synthetic asset for requested asset is undefined")))
443- let cp = if ((co >= ck))
444- then ck
445- else D(("credit available = " + toString(co)))
446- let ch = [invoke(T, "integerEntry", [au(as, cj), (valueOrElse(av(as, cj), 0) + cp)], nil), invoke(T, "transferAsset", [as.bytes, cp, aC], nil)]
447- $Tuple2(nil, [ch, co])
436+ let aC = G(valueOrErrorMessage(getString(T, az(ch)), B("synthetic asset for requested asset is undefined")))
437+ let cn = if ((cm >= ci))
438+ then ci
439+ else D(("credit available = " + toString(cm)))
440+ let cf = [invoke(T, "integerEntry", [au(as, ch), (valueOrElse(av(as, ch), 0) + cn)], nil), invoke(T, "transferAsset", [as.bytes, cn, aC], nil)]
441+ $Tuple2(nil, [cf, cm])
448442 }
449443 else throw("Strict value is not equal to itself.")
450444 }
451445
452446
453-@Callable(cd)
454-func init (cq) = {
455- let cr = ab(cd.caller)
456- if ((cr == cr))
457- then $Tuple2([StringEntry(R, cq)], unit)
447+@Callable(cb)
448+func init (co) = {
449+ let cp = ab(cb.caller)
450+ if ((cp == cp))
451+ then $Tuple2([StringEntry(R, co)], unit)
458452 else throw("Strict value is not equal to itself.")
459453 }
460454
461455
462456
463-@Callable(cd)
464-func requestAccount (ae,cc) = {
465- let cf = [if (!(Y))
457+@Callable(cb)
458+func requestAccount (ae,ca) = {
459+ let cd = [if (!(Y))
466460 then true
467- else D("not allowed"), ac(cd.caller)]
468- if ((cf == cf))
461+ else D("not allowed"), ac(cb.caller)]
462+ if ((cd == cd))
469463 then {
470- let cs = cc[0]
471- let ct = cc[1]
472- let bs = valueOrErrorMessage(parseInt(cc[2]), B("invalid leverage"))
473- let cm = addressFromPublicKey(ae)
474- let ay = sha256(((cm.bytes + fromBase58String(cs)) + fromBase58String(ct)))
475- let aU = G(cs)
476- let aV = G(ct)
477- let cu = (size(aQ(cm)) / j)
478- let cv = [if ((size(cd.payments) == 1))
464+ let cq = ca[0]
465+ let cr = ca[1]
466+ let bq = valueOrErrorMessage(parseInt(ca[2]), B("invalid leverage"))
467+ let ck = addressFromPublicKey(ae)
468+ let ay = sha256(cb.transactionId)
469+ let aS = G(cq)
470+ let aT = G(cr)
471+ let cs = (size(aO(ck)) / j)
472+ let ct = [if ((size(cb.payments) == 1))
479473 then true
480- else D("1 payment is required"), if ((cd.payments[0].assetId == unit))
474+ else D("1 payment is required"), if ((cb.payments[0].assetId == unit))
481475 then true
482- else D("invalid asset"), if ((cd.payments[0].amount == an()))
476+ else D("invalid asset"), if ((cb.payments[0].amount == an()))
483477 then true
484- else D("invalid amount"), if (aW(aU, aV))
478+ else D("invalid amount"), if (aU(aS, aT))
485479 then true
486- else D("pair is not allowed"), if ((getInteger(T, aF(ay)) == unit))
480+ else D("pair is not allowed"), if ((bq == 2))
487481 then true
488- else D("account is already exists"), if ((aq() > cu))
482+ else D("leverage is not allowed"), if ((getInteger(T, aF(ay)) == unit))
483+ then true
484+ else D("account is already exists"), if ((aq() > cs))
489485 then true
490486 else D(("accounts limit is " + toString(aq())))]
491- if ((cv == cv))
487+ if ((ct == ct))
492488 then {
493- let cw = $Tuple2([ScriptTransfer(T, an(), unit)], [invoke(T, "integerEntry", [aF(ay), aD], nil), invoke(T, "binaryEntry", [aM(), (aN() + ay)], nil), invoke(T, "integerEntry", [ax(ay), bs], nil)])
494- let cg = cw._1
495- let ch = cw._2
496- $Tuple2(cg, (ch ++ [invoke(T, "binaryEntry", [aH(ay), ae], nil), invoke(T, "binaryEntry", [aQ(cm), (aS(cm) + ay)], nil), invoke(T, "stringEntry", [aI(ay), cs], nil), invoke(T, "stringEntry", [aJ(ay), ct], nil)]))
489+ let ce = [ScriptTransfer(T, an(), unit)]
490+ $Tuple2(ce, [invoke(T, "integerEntry", [aF(ay), aD], nil), invoke(T, "binaryEntry", [aM(), (aN() + ay)], nil), invoke(T, "binaryEntry", [aO(ck), (aQ(ck) + ay)], nil), invoke(T, "binaryEntry", [aH(ay), ae], nil), invoke(T, "stringEntry", [aI(ay), cq], nil), invoke(T, "stringEntry", [aJ(ay), cr], nil), invoke(T, "integerEntry", [ax(ay), bq], nil)])
497491 }
498492 else throw("Strict value is not equal to itself.")
499493 }
502496
503497
504498
505-@Callable(cd)
506-func addAccount (ae,cc) = {
507- let cf = [if (!(Y))
499+@Callable(cb)
500+func editAccount (ae,ca) = {
501+ let as = valueOrErrorMessage(addressFromString(ca[0]), B("invalid account address"))
502+ let cq = ca[1]
503+ let cr = ca[2]
504+ let bq = valueOrErrorMessage(parseInt(ca[3]), B("invalid leverage"))
505+ let ay = bM(as)
506+ let cu = bO(as)
507+ let aS = G(cq)
508+ let aT = G(cr)
509+ let ct = [if (!(Y))
508510 then true
509- else D("not allowed"), ac(cd.caller)]
510- if ((cf == cf))
511+ else D("not allowed"), ac(cb.caller), if ((ae == cu))
512+ then true
513+ else D("caller is not an account owner"), if (aU(aS, aT))
514+ then true
515+ else D("pair is not allowed"), if ((bq == 2))
516+ then true
517+ else D("leverage is not allowed"), if ((getInteger(T, aF(ay)) == aE))
518+ then true
519+ else D("account is not ready")]
520+ if ((ct == ct))
521+ then $Tuple2(nil, [invoke(T, "stringEntry", [aI(ay), cq], nil), invoke(T, "stringEntry", [aJ(ay), cr], nil), invoke(T, "integerEntry", [ax(ay), bq], nil)])
522+ else throw("Strict value is not equal to itself.")
523+ }
524+
525+
526+
527+@Callable(cb)
528+func addAccount (ae,ca) = {
529+ let cd = [if (!(Y))
530+ then true
531+ else D("not allowed"), ac(cb.caller)]
532+ if ((cd == cd))
511533 then {
512- let cx = fromBase58String(cc[0])
513- let bU = ae
534+ let cv = fromBase58String(ca[0])
535+ let bS = ae
514536 let as = addressFromPublicKey(ae)
515- let cy = addressFromPublicKey(cx)
516- let cv = [if ((getBinary(T, aG(as)) == unit))
537+ let cw = addressFromPublicKey(cv)
538+ let ct = [if ((getBinary(T, aG(as)) == unit))
517539 then true
518540 else D("account is already exists"), if ({
519541 let M = scriptHash(as)
520542 if ($isInstanceOf(M, "ByteVector"))
521543 then {
522- let cz = M
523- (cz == blake2b256_32Kb(al()))
544+ let cx = M
545+ (cx == blake2b256_32Kb(al()))
524546 }
525547 else false
526548 })
527549 then true
528550 else D("invalid script")]
529- if ((cv == cv))
551+ if ((ct == ct))
530552 then {
531- let cA = if ((size(aN()) == 0))
532- then $Tuple2(nil, nil)
553+ let cy = if ((size(aN()) == 0))
554+ then $Tuple2(D("requests queue is empty"), nil)
533555 else {
534556 let ay = take(aN(), j)
535- let bs = valueOrErrorMessage(getInteger(T, ax(ay)), B("request's leverage is undefined"))
536- $Tuple2(nil, [invoke(T, "integerEntry", [aF(ay), aE], nil), invoke(T, "binaryEntry", [aK(ay), bU], nil), invoke(T, "binaryEntry", [aM(), drop(aN(), j)], nil), invoke(T, "stringEntry", [aL(as), toBase58String(ay)], nil), invoke(T, "transferWaves", [cy.bytes, an()], nil), invoke(T, "integerEntry", [aw(as), bs], nil)])
557+ let bq = valueOrErrorMessage(getInteger(T, ax(ay)), B("request's leverage is undefined"))
558+ $Tuple2(nil, [invoke(T, "integerEntry", [aF(ay), aE], nil), invoke(T, "binaryEntry", [aK(ay), bS], nil), invoke(T, "binaryEntry", [aM(), drop(aN(), j)], nil), invoke(T, "stringEntry", [aL(as), toBase58String(ay)], nil), invoke(T, "transferWaves", [cw.bytes, an()], nil), invoke(T, "integerEntry", [aw(as), bq], nil)])
537559 }
538- let cg = cA._1
539- let ch = cA._2
540- $Tuple2(cg, (ch ++ [invoke(T, "binaryEntry", [aG(as), cx], nil)]))
560+ let ce = cy._1
561+ let cf = cy._2
562+ $Tuple2(ce, (cf ++ [invoke(T, "binaryEntry", [aG(as), cv], nil)]))
541563 }
542564 else throw("Strict value is not equal to itself.")
543565 }
546568
547569
548570
549-@Callable(cd)
550-func withdraw (ae,cc) = {
551- let cv = [if (!(Y))
571+@Callable(cb)
572+func withdraw (ae,ca) = {
573+ let ct = [if (!(Y))
552574 then true
553- else D("not allowed"), ac(cd.caller)]
554- if ((cv == cv))
575+ else D("not allowed"), ac(cb.caller)]
576+ if ((ct == ct))
555577 then {
556- let cm = addressFromPublicKey(ae)
557- let as = valueOrErrorMessage(addressFromString(cc[0]), B("invalid account address"))
558- let cB = valueOrErrorMessage(parseInt(cc[1]), B("invalid amount"))
559- let K = G(cc[2])
560- let cC = [invoke(as, "transferAsset", [cm.bytes, cB, K], nil)]
561- $Tuple2(nil, cC)
578+ let ck = addressFromPublicKey(ae)
579+ let as = valueOrErrorMessage(addressFromString(ca[0]), B("invalid account address"))
580+ let cz = valueOrErrorMessage(parseInt(ca[1]), B("invalid amount"))
581+ let K = G(ca[2])
582+ let cA = [invoke(as, "transferAsset", [ck.bytes, cz, K], nil)]
583+ $Tuple2(nil, cA)
562584 }
563585 else throw("Strict value is not equal to itself.")
564586 }
565587
566588
567589
568-@Callable(cd)
569-func deposit (ae,cc) = {
570- let cD = cb(ae, cc, cd)
571- let cg = cD._1
572- let ch = cD._2
573- $Tuple2(cg, ch)
590+@Callable(cb)
591+func deposit (ae,ca) = {
592+ let cB = bZ(ae, ca, cb)
593+ let ce = cB._1
594+ let cf = cB._2
595+ $Tuple2(ce, cf)
574596 }
575597
576598
577599
578-@Callable(cd)
579-func borrow (ae,cc) = {
580- let cE = ci(ae, cc, cd)
581- let cg = cE._1
582- let ch = cE._2
583- $Tuple2(cg, ch)
600+@Callable(cb)
601+func borrow (ae,ca) = {
602+ let cC = cg(ae, ca, cb)
603+ let ce = cC._1
604+ let cf = cC._2
605+ $Tuple2(ce, cf)
584606 }
585607
586608
587609
588-@Callable(cd)
589-func depositAndBorrow (ae,cc) = {
590- let as = cc[0]
591- let cF = cb(ae, [as], cd)
592- let cG = cF._1
593- let cH = cF._2
594- let cI = ci(ae, cc, cd)
595- let cJ = cI._1
596- let cK = cI._2
597- $Tuple2((cG ++ cJ), (cH ++ cK))
610+@Callable(cb)
611+func depositAndBorrow (ae,ca) = {
612+ let as = ca[0]
613+ let cD = bZ(ae, [as], cb)
614+ let cE = cD._1
615+ let cF = cD._2
616+ let cG = cg(ae, ca, cb)
617+ let cH = cG._1
618+ let cI = cG._2
619+ $Tuple2((cE ++ cH), (cF ++ cI))
598620 }
599621
600622
601623
602-@Callable(cd)
603-func repay (ae,cc) = {
604- let cf = [if (!(Y))
624+@Callable(cb)
625+func repay (ae,ca) = {
626+ let cd = [if (!(Y))
605627 then true
606- else D("not allowed"), ac(cd.caller)]
607- if ((cf == cf))
628+ else D("not allowed"), ac(cb.caller)]
629+ if ((cd == cd))
608630 then $Tuple2(nil, unit)
609631 else throw("Strict value is not equal to itself.")
610632 }
611633
612634
613635
614-@Callable(cd)
615-func setPairAllowance (ae,cc) = {
616- let cf = [if (!(Y))
636+@Callable(cb)
637+func setPairAllowance (ae,ca) = {
638+ let cd = [if (!(Y))
617639 then true
618- else D("not allowed"), ac(cd.caller), ad(ae)]
619- if ((cf == cf))
640+ else D("not allowed"), ac(cb.caller), ad(ae)]
641+ if ((cd == cd))
620642 then {
621- let cs = cc[0]
622- let ct = cc[1]
623- let cL = cc[2]
624- let aU = G(cs)
625- let aV = G(ct)
626- let cM = (cL == "true")
627- let cC = [invoke(T, "booleanEntry", [aT(aU, aV), cM], nil)]
628- $Tuple2(nil, cC)
643+ let cq = ca[0]
644+ let cr = ca[1]
645+ let cJ = ca[2]
646+ let aS = G(cq)
647+ let aT = G(cr)
648+ let cK = (cJ == "true")
649+ let cA = [invoke(T, "booleanEntry", [aR(aS, aT), cK], nil)]
650+ $Tuple2(nil, cA)
629651 }
630652 else throw("Strict value is not equal to itself.")
631653 }
632654
633655
634656
635-@Callable(cd)
636-func addSyntheticAsset (ae,cc) = {
637- let aA = G(cc[0])
638- let aC = G(cc[1])
639- let cf = [if (!(Y))
657+@Callable(cb)
658+func addSyntheticAsset (ae,ca) = {
659+ let aA = G(ca[0])
660+ let aC = G(ca[1])
661+ let cd = [if (!(Y))
640662 then true
641- else D("not allowed"), ac(cd.caller), ad(ae), if ((getString(T, az(aA)) == unit))
663+ else D("not allowed"), ac(cb.caller), ad(ae), if ((getString(T, az(aA)) == unit))
642664 then true
643665 else D("invalid base asset"), if ((getString(T, aB(aC)) == unit))
644666 then true
645667 else D("invalid synthetic asset")]
646- if ((cf == cf))
668+ if ((cd == cd))
647669 then {
648- let cC = [invoke(T, "stringEntry", [az(aA), I(aC)], nil), invoke(T, "stringEntry", [aB(aC), I(aA)], nil)]
649- $Tuple2(nil, cC)
670+ let cA = [invoke(T, "stringEntry", [az(aA), I(aC)], nil), invoke(T, "stringEntry", [aB(aC), I(aA)], nil)]
671+ $Tuple2(nil, cA)
650672 }
651673 else throw("Strict value is not equal to itself.")
652674 }
653675
654676
655677
656-@Callable(cd)
657-func doShutdown (ae,cc) = {
658- let cv = [ac(cd.caller), ad(ae)]
659- if ((cv == cv))
678+@Callable(cb)
679+func doShutdown (ae,ca) = {
680+ let ct = [ac(cb.caller), ad(ae)]
681+ if ((ct == ct))
660682 then {
661- let cC = [invoke(T, "booleanEntry", [q, true], nil)]
662- $Tuple2(nil, cC)
683+ let cA = [invoke(T, "booleanEntry", [q, true], nil)]
684+ $Tuple2(nil, cA)
663685 }
664686 else throw("Strict value is not equal to itself.")
665687 }
666688
667689
668690
669-@Callable(cd)
670-func getAccountInfoREADONLY (ae,cc) = {
671- let cv = [ac(cd.caller)]
672- if ((cv == cv))
691+@Callable(cb)
692+func getAccountInfoREADONLY (ae,ca) = {
693+ let ct = [ac(cb.caller)]
694+ if ((ct == ct))
673695 then {
674- let as = valueOrErrorMessage(addressFromString(cc[0]), B("invalid account address"))
675- let cN = bS(as)
676- $Tuple2(nil, cN)
696+ let as = valueOrErrorMessage(addressFromString(ca[0]), B("invalid account address"))
697+ let cL = bQ(as)
698+ $Tuple2(nil, cL)
677699 }
678700 else throw("Strict value is not equal to itself.")
679701 }
680702
681703
682704
683-@Callable(cd)
684-func getUserInfoREADONLY (ae,cc) = {
685- let cv = [ac(cd.caller)]
686- if ((cv == cv))
705+@Callable(cb)
706+func getUserInfoREADONLY (ae,ca) = {
707+ let ct = [ac(cb.caller)]
708+ if ((ct == ct))
687709 then {
688- let cm = valueOrErrorMessage(addressFromString(cc[0]), B("invalid user address"))
689- let cO = valueOrElse(getBinary(T, aQ(cm)), base58'')
690- let cu = (size(cO) / j)
691- func cP (cQ,cR) = {
692- let cS = cQ
693- let cT = cS._1
694- let cU = cS._2
695- let cV = cS._3
696- if ((cV > cR))
710+ let ck = valueOrErrorMessage(addressFromString(ca[0]), B("invalid user address"))
711+ let cM = valueOrElse(getBinary(T, aO(ck)), base58'')
712+ let cs = (size(cM) / j)
713+ func cN (cO,cP) = {
714+ let cQ = cO
715+ let cR = cQ._1
716+ let cS = cQ._2
717+ let cT = cQ._3
718+ if ((cT > cP))
697719 then {
698- let ay = take(cU, j)
699- let cW = drop(cU, j)
700- let bU = valueOrErrorMessage(getBinary(T, aK(ay)), "kRequestIdToAccountPublicKey not found")
701- let as = addressFromPublicKey(bU)
702- let cN = bS(as)
703- $Tuple3((cT :+ cN), cW, cV)
720+ let ay = take(cS, j)
721+ let cU = drop(cS, j)
722+ let bS = valueOrErrorMessage(getBinary(T, aK(ay)), "kRequestIdToAccountPublicKey not found")
723+ let as = addressFromPublicKey(bS)
724+ let cL = bQ(as)
725+ $Tuple3((cR :+ cL), cU, cT)
704726 }
705- else cQ
727+ else cO
706728 }
707729
708- let cX = {
709- let cY = l
710- let cZ = size(cY)
711- let da = $Tuple3(nil, cO, cu)
712- func db (dc,dd) = if ((dd >= cZ))
713- then dc
714- else cP(dc, cY[dd])
730+ let cV = {
731+ let cW = l
732+ let cX = size(cW)
733+ let cY = $Tuple3(nil, cM, cs)
734+ func cZ (da,db) = if ((db >= cX))
735+ then da
736+ else cN(da, cW[db])
715737
716- func de (dc,dd) = if ((dd >= cZ))
717- then dc
738+ func dc (da,db) = if ((db >= cX))
739+ then da
718740 else throw("List size exceeds 20")
719741
720- de(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(da, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
742+ dc(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
721743 }
722- let cT = cX._1
723- let df = cX._2
724- let dg = cX._3
725- $Tuple2(nil, cT)
744+ let cR = cV._1
745+ let dd = cV._2
746+ let de = cV._3
747+ $Tuple2(nil, cR)
726748 }
727749 else throw("Strict value is not equal to itself.")
728750 }
729751
730752
731753
732-@Callable(cd)
733-func getPairSettingsInfoREADONLY (ae,cc) = {
734- let dh = G(cc[0])
735- let di = G(cc[1])
736- let dj = aZ(dh, di)
737- func dk (cQ,dl) = {
738- let dm = ba(dh, di, dl)
739- let dn = getStringValue(T, dm)
740- let do = split(dn, a)
741- let bf = parseInt(dl)
742- let dp = parseInt(do[1])
743- let dq = parseInt(do[2])
744- let dr = parseInt(do[3])
745- (cQ :+ $Tuple4(bf, dp, dq, dr))
754+@Callable(cb)
755+func getPairSettingsInfoREADONLY (ae,ca) = {
756+ let df = G(ca[0])
757+ let dg = G(ca[1])
758+ let dh = aX(df, dg)
759+ func di (cO,dj) = {
760+ let dk = aY(df, dg, dj)
761+ let dl = getStringValue(T, dk)
762+ let dm = split(dl, a)
763+ let bd = parseInt(dj)
764+ let dn = parseInt(dm[1])
765+ let do = parseInt(dm[2])
766+ let dp = parseInt(dm[3])
767+ (cO :+ $Tuple4(bd, dn, do, dp))
746768 }
747769
748- let cN = {
749- let cY = dj
750- let cZ = size(cY)
751- let da = nil
752- func db (dc,dd) = if ((dd >= cZ))
753- then dc
754- else dk(dc, cY[dd])
770+ let cL = {
771+ let cW = dh
772+ let cX = size(cW)
773+ let cY = nil
774+ func cZ (da,db) = if ((db >= cX))
775+ then da
776+ else di(da, cW[db])
755777
756- func de (dc,dd) = if ((dd >= cZ))
757- then dc
778+ func dc (da,db) = if ((db >= cX))
779+ then da
758780 else throw("List size exceeds 20")
759781
760- de(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(da, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
782+ dc(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
761783 }
762- $Tuple2(nil, cN)
784+ $Tuple2(nil, cL)
763785 }
764786
765787
766788
767-@Callable(cd)
768-func editPairSettings (ae,cc) = {
769- let cv = [ac(cd.caller), ad(ae)]
770- if ((cv == cv))
789+@Callable(cb)
790+func editPairSettings (ae,ca) = {
791+ let ct = [ac(cb.caller), ad(ae)]
792+ if ((ct == ct))
771793 then {
772- let dh = G(cc[0])
773- let di = G(cc[1])
774- let bf = cc[2]
775- let dp = cc[3]
776- let dq = cc[4]
777- let dr = cc[5]
778- let ds = aY(dh, di)
779- let dm = ba(dh, di, bf)
780- let dj = aZ(dh, di)
781- let dt = {
782- let M = indexOf(dj, bf)
794+ let df = G(ca[0])
795+ let dg = G(ca[1])
796+ let bd = ca[2]
797+ let dn = ca[3]
798+ let do = ca[4]
799+ let dp = ca[5]
800+ let dq = aW(df, dg)
801+ let dk = aY(df, dg, bd)
802+ let dh = aX(df, dg)
803+ let dr = {
804+ let M = indexOf(dh, bd)
783805 if ($isInstanceOf(M, "Int"))
784806 then {
785- let du = M
786- dj
807+ let ds = M
808+ dh
787809 }
788- else (dj :+ bf)
810+ else (dh :+ bd)
789811 }
790- let dv = [valueOrErrorMessage(parseInt(bf), B("price value is not an Int")), valueOrErrorMessage(dp, B("maxLeverage value is not an Int")), valueOrErrorMessage(dq, B("initialMargin value is not an Int")), valueOrErrorMessage(dr, B("maintenanceMargin value is not an Int")), if ((20 >= size(dt)))
812+ let dt = [valueOrErrorMessage(parseInt(bd), B("price value is not an Int")), valueOrErrorMessage(dn, B("maxLeverage value is not an Int")), valueOrErrorMessage(do, B("initialMargin value is not an Int")), valueOrErrorMessage(dp, B("maintenanceMargin value is not an Int")), if ((20 >= size(dr)))
791813 then true
792814 else D("exceeded max prices list size (20)")]
793- if ((dv == dv))
815+ if ((dt == dt))
794816 then {
795- let dw = makeString(["%s%s%s", dp, dq, dr], a)
796- let cC = [invoke(T, "stringEntry", [aY(dh, di), makeString(dt, a)], nil), invoke(T, "stringEntry", [ba(dh, di, bf), dw], nil)]
797- $Tuple2(nil, cC)
817+ let du = makeString(["%s%s%s", dn, do, dp], a)
818+ let cA = [invoke(T, "stringEntry", [aW(df, dg), makeString(dr, a)], nil), invoke(T, "stringEntry", [aY(df, dg, bd), du], nil)]
819+ $Tuple2(nil, cA)
798820 }
799821 else throw("Strict value is not equal to itself.")
800822 }
803825
804826
805827
806-@Callable(cd)
807-func deletePairSettings (ae,cc) = {
808- let cv = [ac(cd.caller), ad(ae)]
809- if ((cv == cv))
828+@Callable(cb)
829+func deletePairSettings (ae,ca) = {
830+ let ct = [ac(cb.caller), ad(ae)]
831+ if ((ct == ct))
810832 then {
811- let dh = G(cc[0])
812- let di = G(cc[1])
813- let bf = cc[2]
814- let dm = ba(dh, di, bf)
815- let ds = aY(dh, di)
816- let dj = aZ(dh, di)
817- let dt = {
818- let M = indexOf(dj, bf)
833+ let df = G(ca[0])
834+ let dg = G(ca[1])
835+ let bd = ca[2]
836+ let dk = aY(df, dg, bd)
837+ let dq = aW(df, dg)
838+ let dh = aX(df, dg)
839+ let dr = {
840+ let M = indexOf(dh, bd)
819841 if ($isInstanceOf(M, "Int"))
820842 then {
821- let du = M
822- removeByIndex(dj, du)
843+ let ds = M
844+ removeByIndex(dh, ds)
823845 }
824- else dj
846+ else dh
825847 }
826- let cC = [invoke(T, "deleteEntry", [dm], nil), if ((size(dt) == 0))
827- then invoke(T, "deleteEntry", [aY(dh, di)], nil)
828- else invoke(T, "stringEntry", [aY(dh, di), makeString(dt, a)], nil)]
829- $Tuple2(nil, cC)
848+ let cA = [invoke(T, "deleteEntry", [dk], nil), if ((size(dr) == 0))
849+ then invoke(T, "deleteEntry", [aW(df, dg)], nil)
850+ else invoke(T, "stringEntry", [aW(df, dg), makeString(dr, a)], nil)]
851+ $Tuple2(nil, cA)
830852 }
831853 else throw("Strict value is not equal to itself.")
832854 }
833855
834856
835-@Verifier(dx)
836-func dy () = if (if (isDefined(S))
857+@Verifier(dv)
858+func dw () = if (if (isDefined(S))
837859 then isDefined(getString(T, m))
838860 else false)
839861 then {
841863 if ($isInstanceOf(M, "String"))
842864 then {
843865 let ai = M
844- let dz = n(toString(this), toBase58String(dx.id))
845- let bW = valueOrElse(getBoolean(addressFromStringValue(ai), dz), false)
846- bW
866+ let dx = n(toString(this), toBase58String(dv.id))
867+ let bU = valueOrElse(getBoolean(addressFromStringValue(ai), dx), false)
868+ bU
847869 }
848870 else false
849871 }
850- else sigVerify(dx.bodyBytes, dx.proofs[0], dx.senderPublicKey)
872+ else sigVerify(dv.bodyBytes, dv.proofs[0], dv.senderPublicKey)
851873
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 7 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = take(drop(this.bytes, 1), 1)
77
88 let c = base58'2W'
99
1010 let d = "futures_calculator.ride"
1111
1212 let e = 100000000
1313
1414 let f = toBigInt(1000000000000000000)
1515
1616 let g = 8
1717
1818 let h = 6
1919
2020 let i = "WAVES"
2121
2222 let j = 32
2323
2424 let k = toBigInt(0)
2525
2626 let l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
2727
2828 let m = "%s__multisig"
2929
3030 func n (o,p) = makeString(["%s__status", o, p], a)
3131
3232
3333 let q = "%s__shutdown"
3434
3535 let r = "%s__publicKeys"
3636
3737 let s = "%s__matcherPublicKey"
3838
3939 func t (u,v) = fraction(toBigInt(u), f, toBigInt(v))
4040
4141
4242 func w (x,y) = toInt(fraction(x, toBigInt(y), f))
4343
4444
4545 func z (A) = isDefined(addressFromString(A))
4646
4747
4848 func B (C) = ((d + ": ") + C)
4949
5050
5151 func D (C) = throw(B(C))
5252
5353
5454 func E (F,C) = if ((F >= 0))
5555 then F
5656 else D((C + " value should be positive"))
5757
5858
5959 func G (H) = if ((H == i))
6060 then unit
6161 else fromBase58String(H)
6262
6363
6464 func I (H) = if ((H == unit))
6565 then i
6666 else toBase58String(value(H))
6767
6868
6969 func J (K) = valueOrErrorMessage(assetInfo(K), B("invalid asset info"))
7070
7171
7272 func L (K) = {
7373 let M = K
7474 if ($isInstanceOf(M, "Unit"))
7575 then g
7676 else if ($isInstanceOf(M, "ByteVector"))
7777 then {
7878 let K = M
7979 J(K).decimals
8080 }
8181 else throw("Match error")
8282 }
8383
8484
8585 func N (K,A) = {
8686 let M = K
8787 if ($isInstanceOf(M, "Unit"))
8888 then wavesBalance(A).available
8989 else if ($isInstanceOf(M, "ByteVector"))
9090 then {
9191 let K = M
9292 assetBalance(A, K)
9393 }
9494 else throw("Match error")
9595 }
9696
9797
9898 func O (P) = pow(10, 0, P, 0, 0, DOWN)
9999
100100
101101 func Q (K) = O(L(K))
102102
103103
104104 let R = "%s__factoryAddress"
105105
106106 let S = {
107107 let M = getString(this, R)
108108 if ($isInstanceOf(M, "String"))
109109 then {
110110 let C = M
111111 addressFromString(C)
112112 }
113113 else if ($isInstanceOf(M, "Unit"))
114114 then unit
115115 else throw("Match error")
116116 }
117117
118118 let T = valueOrErrorMessage(S, B("invalid factory address"))
119119
120120 let U = "%s__usdtAssetId"
121121
122122 let V = {
123123 let M = getString(T, U)
124124 if ($isInstanceOf(M, "String"))
125125 then {
126126 let C = M
127127 G(C)
128128 }
129129 else if ($isInstanceOf(M, "Unit"))
130130 then unit
131131 else throw("Match error")
132132 }
133133
134134 let W = valueOrErrorMessage(V, B("invalid usdt asset id"))
135135
136136 let X = "%s__calculatorAddress"
137137
138138 let Y = valueOrElse(getBoolean(T, q), false)
139139
140140 func Z (aa,A) = if ((aa == A))
141141 then true
142142 else D("permission denied")
143143
144144
145145 func ab (aa) = Z(aa, this)
146146
147147
148148 func ac (aa) = Z(aa, T)
149149
150150
151151 func ad (ae) = {
152152 let af = getString(T, m)
153153 let ag = {
154154 let M = af
155155 if ($isInstanceOf(M, "String"))
156156 then {
157157 let ah = M
158158 let ai = addressFromStringValue(ah)
159159 let aj = split(getStringValue(ai, r), a)
160160 containsElement(aj, toBase58String(ae))
161161 }
162162 else (addressFromPublicKey(ae) == T)
163163 }
164164 if (ag)
165165 then true
166166 else D("not allowed")
167167 }
168168
169169
170170 let ak = "%s__accountScript"
171171
172172 func al () = valueOrErrorMessage(getBinary(T, ak), B("account script is not set"))
173173
174174
175175 let am = "%s__rewardAmount"
176176
177177 func an () = valueOrErrorMessage(getInteger(T, am), B("reward amount is not set"))
178178
179179
180180 let ao = "%s__accountsLimit"
181181
182182 let ap = 20
183183
184184 func aq () = valueOrElse(getInteger(T, ao), ap)
185185
186186
187187 func ar (as) = makeString(["%s%s", "deposited", toString(as)], a)
188188
189189
190190 func at (as) = getInteger(T, ar(as))
191191
192192
193193 func au (as,K) = makeString(["%s%s%s", "credit", toString(as), I(K)], a)
194194
195195
196196 func av (as,K) = getInteger(T, au(as, K))
197197
198198
199199 func aw (as) = makeString(["%s%s", "leverage", toString(as)], a)
200200
201201
202202 func ax (ay) = makeString(["%s%s", "requestLeverage", toBase58String(ay)], a)
203203
204204
205205 func az (aA) = makeString(["%s%s", "syntheticAssetId", I(aA)], a)
206206
207207
208208 func aB (aC) = makeString(["%s%s", "baseAssetId", I(aC)], a)
209209
210210
211211 let aD = 0
212212
213213 let aE = 1
214214
215215 func aF (ay) = makeString(["%s%s", toBase58String(ay), "status"], a)
216216
217217
218218 func aG (as) = makeString(["%s%s", toString(as), "creatorPublicKey"], a)
219219
220220
221221 func aH (ay) = makeString(["%s%s", toBase58String(ay), "ownerPublicKey"], a)
222222
223223
224224 func aI (ay) = makeString(["%s%s", toBase58String(ay), "amountAssetId"], a)
225225
226226
227227 func aJ (ay) = makeString(["%s%s", toBase58String(ay), "priceAssetId"], a)
228228
229229
230230 func aK (ay) = makeString(["%s%s", toBase58String(ay), "requestIdToAccountPublicKey"], a)
231231
232232
233233 func aL (as) = makeString(["%s%s", toString(as), "accountAddressToRequestId"], a)
234234
235235
236236 func aM () = makeString(["%s", "requestsQueue"], a)
237237
238238
239239 func aN () = valueOrElse(getBinary(T, aM()), base58'')
240240
241241
242-func aO () = makeString(["%s", "accountsQueue"], a)
242+func aO (aP) = makeString(["%s%s", "requests", toString(aP)], a)
243243
244244
245-func aP () = valueOrElse(getBinary(T, aO()), base58'')
245+func aQ (aP) = valueOrElse(getBinary(T, aO(aP)), base58'')
246246
247247
248-func aQ (aR) = makeString(["%s%s", "requests", toString(aR)], a)
248+func aR (aS,aT) = makeString(["%s%s%s", I(aS), I(aT), "pairAllowed"], a)
249249
250250
251-func aS (aR) = valueOrElse(getBinary(T, aQ(aR)), base58'')
251+func aU (aS,aT) = valueOrElse(getBoolean(T, aR(aS, aT)), false)
252252
253253
254-func aT (aU,aV) = makeString(["%s%s%s", I(aU), I(aV), "pairAllowed"], a)
254+func aV (K) = makeString(["%s", I(K)], a)
255255
256256
257-func aW (aU,aV) = valueOrElse(getBoolean(T, aT(aU, aV)), false)
257+func aW (aS,aT) = makeString(["%s%s%s", I(aS), I(aT), "pairSettingPrices"], a)
258258
259259
260-func aX (K) = makeString(["%s", I(K)], a)
261-
262-
263-func aY (aU,aV) = makeString(["%s%s%s", I(aU), I(aV), "pairSettingPrices"], a)
264-
265-
266-func aZ (aU,aV) = {
267- let M = getString(T, aY(aU, aV))
260+func aX (aS,aT) = {
261+ let M = getString(T, aW(aS, aT))
268262 if ($isInstanceOf(M, "String"))
269263 then {
270264 let C = M
271265 split(C, a)
272266 }
273267 else nil
274268 }
275269
276270
277-func ba (aU,aV,bb) = makeString(["%s%s%d%s", I(aU), I(aV), bb, "settings"], a)
271+func aY (aS,aT,aZ) = makeString(["%s%s%d%s", I(aS), I(aT), aZ, "settings"], a)
278272
279273
280-func bc (K) = {
281- let bd = fromBase58String(valueOrErrorMessage(getString(T, s), B("invalid matcher public key")))
282- let be = addressFromPublicKey(bd)
283- let bf = valueOrErrorMessage(getInteger(be, aX(K)), B(("invalid price, assetId = " + I(K))))
284- bf
274+func ba (K) = {
275+ let bb = fromBase58String(valueOrErrorMessage(getString(T, s), B("invalid matcher public key")))
276+ let bc = addressFromPublicKey(bb)
277+ let bd = valueOrErrorMessage(getInteger(bc, aV(K)), B(("invalid price, assetId = " + I(K))))
278+ bd
285279 }
286280
287281
288-func bg (bh,bi,bj) = (fraction(bh, bj, f) + bi)
282+func be (bf,bg,bh) = (fraction(bf, bh, f) + bg)
289283
290284
291-func bk (bl,bm,bj) = (fraction(bl, bj, f) + bm)
285+func bi (bj,bk,bh) = (fraction(bj, bh, f) + bk)
292286
293287
294-func bn (bo,bp) = (bo - bp)
288+func bl (bm,bn) = (bm - bn)
295289
296290
297-func bq (br,bs,bp) = (fraction(br, bs, f) - bp)
291+func bo (bp,bq,bn) = (fraction(bp, bq, f) - bn)
298292
299293
300-func bt (bu,bv) = if ((bu > k))
301- then (bu - bv)
294+func br (bs,bt) = if ((bs > k))
295+ then (bs - bt)
302296 else k
303297
304298
305-func bw (bu,bv) = if ((bu > k))
306- then (bv - bu)
299+func bu (bs,bt) = if ((bs > k))
300+ then (bt - bs)
307301 else k
308302
309303
310-func bx (by,bz) = if ((bz > k))
311- then max([k, fraction(by, f, bz)])
304+func bv (bw,bx) = if ((bx > k))
305+ then max([k, fraction(bw, f, bx)])
312306 else k
313307
314308
315-func bA (by,bz) = if ((bz > k))
316- then max([k, fraction(bz, f, by)])
309+func by (bw,bx) = if ((bx > k))
310+ then max([k, fraction(bx, f, bw)])
317311 else k
318312
319313
320-func bB (bC,bD,bj,bE) = fraction((fraction(bC, bj, f) + bD), bE, f)
314+func bz (bA,bB,bh,bC) = fraction((fraction(bA, bh, f) + bB), bC, f)
321315
322316
323-func bF (bG,bE,bH) = fraction(bG, bH, bE)
317+func bD (bE,bC,bF) = fraction(bE, bF, bC)
324318
325319
326-func bI (br,bJ,bC,bD,bK,bL) = {
327- let bM = if ((bC > k))
328- then (((br - bJ) / bC) + bK)
320+func bG (bp,bH,bA,bB,bI,bJ) = {
321+ let bK = if ((bA > k))
322+ then (((bp - bH) / bA) + bI)
329323 else k
330- let bN = if ((bD > k))
331- then (bL - ((br - bJ) / (bC / bL)))
324+ let bL = if ((bB > k))
325+ then (bJ - ((bp - bH) / (bA / bJ)))
332326 else k
333- (bM + bN)
327+ (bK + bL)
334328 }
335329
336330
337-func bO (as) = {
331+func bM (as) = {
338332 let ay = fromBase58String(valueOrErrorMessage(getString(T, aL(as)), B("invalid account address: request id is undefined")))
339333 ay
340334 }
341335
342336
343-func bP (as) = {
344- let ay = bO(as)
345- let aU = G(valueOrErrorMessage(getString(T, aI(ay)), B("invalid amount asset id")))
346- let aV = G(valueOrErrorMessage(getString(T, aJ(ay)), B("invalid amount price id")))
347- $Tuple2(aU, aV)
337+func bN (as) = {
338+ let ay = bM(as)
339+ let aS = G(valueOrErrorMessage(getString(T, aI(ay)), B("invalid amount asset id")))
340+ let aT = G(valueOrErrorMessage(getString(T, aJ(ay)), B("invalid amount price id")))
341+ $Tuple2(aS, aT)
342+ }
343+
344+
345+func bO (as) = {
346+ let ay = bM(as)
347+ let bP = valueOrErrorMessage(getBinary(T, aH(ay)), B("invalid amount asset id"))
348+ bP
348349 }
349350
350351
351352 func bQ (as) = {
352- let ay = bO(as)
353- let bR = valueOrErrorMessage(getBinary(T, aH(ay)), B("invalid amount asset id"))
354- bR
355- }
356-
357-
358-func bS (as) = {
359- let bT = bP(as)
360- let aU = bT._1
361- let aV = bT._2
362- let bs = valueOrErrorMessage(getInteger(T, aw(as)), B("leverage should be defined"))
363- let ay = bO(as)
364- let bU = valueOrErrorMessage(getBinary(T, aK(ay)), "kRequestIdToAccountPublicKey not found")
365- let bV = valueOrElse(at(as), 0)
366- let bj = t(bc(aU), Q(aV))
367- let bh = valueOrElse(getInteger(T, au(as, aU)), 0)
368- let bi = valueOrElse(getInteger(T, au(as, aV)), 0)
369- let bW = valueOrErrorMessage(getInteger(T, aF(ay)), ("status not found. RequestId = " + toBase58String(ay)))
370- let bX = getString(T, az(aU))
353+ let bR = bN(as)
354+ let aS = bR._1
355+ let aT = bR._2
356+ let bq = valueOrErrorMessage(getInteger(T, aw(as)), B("leverage should be defined"))
357+ let ay = bM(as)
358+ let bS = valueOrErrorMessage(getBinary(T, aK(ay)), "kRequestIdToAccountPublicKey not found")
359+ let bT = valueOrElse(at(as), 0)
360+ let bh = t(ba(aS), Q(aT))
361+ let bf = valueOrElse(getInteger(T, au(as, aS)), 0)
362+ let bg = valueOrElse(getInteger(T, au(as, aT)), 0)
363+ let bU = valueOrErrorMessage(getInteger(T, aF(ay)), ("status not found. RequestId = " + toBase58String(ay)))
364+ let bV = getString(T, az(aS))
365+ let bW = {
366+ let M = bV
367+ if ($isInstanceOf(M, "String"))
368+ then {
369+ let C = M
370+ N(G(C), as)
371+ }
372+ else 0
373+ }
374+ let bX = getString(T, az(aT))
371375 let bY = {
372376 let M = bX
373377 if ($isInstanceOf(M, "String"))
374378 then {
375379 let C = M
376380 N(G(C), as)
377381 }
378382 else 0
379383 }
380- let bZ = getString(T, az(aV))
381- let ca = {
382- let M = bZ
383- if ($isInstanceOf(M, "String"))
384- then {
385- let C = M
386- N(G(C), as)
387- }
388- else 0
389- }
390- $Tuple12(I(aU), I(aV), toString(as), toBase58String(bU), bs, toBase58String(ay), bV, bh, bi, bY, ca, bW)
384+ $Tuple12(I(aS), I(aT), toString(as), toBase58String(bS), bq, toBase58String(ay), bT, bf, bg, bW, bY, bU)
391385 }
392386
393387
394-func cb (ae,cc,cd) = {
395- let ce = cd.payments[0]
396- let as = valueOrErrorMessage(addressFromString(cc[0]), B("invalid account address"))
397- let cf = [if (!(Y))
388+func bZ (ae,ca,cb) = {
389+ let cc = cb.payments[0]
390+ let as = valueOrErrorMessage(addressFromString(ca[0]), B("invalid account address"))
391+ let cd = [if (!(Y))
398392 then true
399- else D("not allowed"), ac(cd.caller), if ((size(cd.payments) == 1))
393+ else D("not allowed"), ac(cb.caller), if ((size(cb.payments) == 1))
400394 then true
401- else D("1 payment is required"), if ((ce.assetId == W))
395+ else D("1 payment is required"), if ((cc.assetId == W))
402396 then true
403- else D("invalid asset"), if ((getInteger(T, aF(bO(as))) == aE))
397+ else D("invalid asset"), if ((getInteger(T, aF(bM(as))) == aE))
404398 then true
405399 else D("account is not ready")]
406- if ((cf == cf))
400+ if ((cd == cd))
407401 then {
408- let cg = [ScriptTransfer(as, ce.amount, ce.assetId)]
409- let ch = [invoke(T, "integerEntry", [ar(as), (valueOrElse(at(as), 0) + ce.amount)], nil)]
410- $Tuple2(cg, ch)
402+ let ce = [ScriptTransfer(as, cc.amount, cc.assetId)]
403+ let cf = [invoke(T, "integerEntry", [ar(as), (valueOrElse(at(as), 0) + cc.amount)], nil)]
404+ $Tuple2(ce, cf)
411405 }
412406 else throw("Strict value is not equal to itself.")
413407 }
414408
415409
416-func ci (ae,cc,cd) = {
417- let as = valueOrErrorMessage(addressFromString(cc[0]), B("invalid account address"))
418- let cj = G(cc[1])
419- let ck = E(valueOrErrorMessage(parseInt(cc[2]), B("invalid requested amount")), "requested amount")
420- let cl = bQ(as)
421- let cm = addressFromPublicKey(ae)
422- let cf = [if (!(Y))
410+func cg (ae,ca,cb) = {
411+ let as = valueOrErrorMessage(addressFromString(ca[0]), B("invalid account address"))
412+ let ch = G(ca[1])
413+ let ci = E(valueOrErrorMessage(parseInt(ca[2]), B("invalid requested amount")), "requested amount")
414+ let cj = bO(as)
415+ let ck = addressFromPublicKey(ae)
416+ let cd = [if (!(Y))
423417 then true
424- else D("not allowed"), ac(cd.caller), if ((ae == cl))
418+ else D("not allowed"), ac(cb.caller), if ((ae == cj))
425419 then true
426420 else D("can be called by account owner only")]
427- if ((cf == cf))
421+ if ((cd == cd))
428422 then {
429- let aU = bP(as)._1
430- let bV = t(valueOrElse(at(as), 0), Q(W))
431- let bj = t(bc(aU), Q(W))
432- let bh = t(valueOrElse(getInteger(T, au(as, aU)), 0), Q(aU))
433- let bi = t(valueOrElse(getInteger(T, au(as, W)), 0), Q(W))
434- let bp = bg(bh, bi, bj)
435- let bs = t(valueOrErrorMessage(getInteger(T, aw(as)), B("leverage should be defined")), 1)
436- let cn = bq(bV, bs, bp)
437- let co = if ((cj == aU))
438- then w(fraction(cn, f, bj), Q(aU))
439- else if ((cj == W))
440- then w(cn, Q(W))
423+ let aS = bN(as)._1
424+ let bT = t(valueOrElse(at(as), 0), Q(W))
425+ let bh = t(ba(aS), Q(W))
426+ let bf = t(valueOrElse(getInteger(T, au(as, aS)), 0), Q(aS))
427+ let bg = t(valueOrElse(getInteger(T, au(as, W)), 0), Q(W))
428+ let bn = be(bf, bg, bh)
429+ let bq = t(valueOrErrorMessage(getInteger(T, aw(as)), B("leverage should be defined")), 1)
430+ let cl = bo(bT, bq, bn)
431+ let cm = if ((ch == aS))
432+ then w(fraction(cl, f, bh), Q(aS))
433+ else if ((ch == W))
434+ then w(cl, Q(W))
441435 else D("invalid requested asset id")
442- let aC = G(valueOrErrorMessage(getString(T, az(cj)), B("synthetic asset for requested asset is undefined")))
443- let cp = if ((co >= ck))
444- then ck
445- else D(("credit available = " + toString(co)))
446- let ch = [invoke(T, "integerEntry", [au(as, cj), (valueOrElse(av(as, cj), 0) + cp)], nil), invoke(T, "transferAsset", [as.bytes, cp, aC], nil)]
447- $Tuple2(nil, [ch, co])
436+ let aC = G(valueOrErrorMessage(getString(T, az(ch)), B("synthetic asset for requested asset is undefined")))
437+ let cn = if ((cm >= ci))
438+ then ci
439+ else D(("credit available = " + toString(cm)))
440+ let cf = [invoke(T, "integerEntry", [au(as, ch), (valueOrElse(av(as, ch), 0) + cn)], nil), invoke(T, "transferAsset", [as.bytes, cn, aC], nil)]
441+ $Tuple2(nil, [cf, cm])
448442 }
449443 else throw("Strict value is not equal to itself.")
450444 }
451445
452446
453-@Callable(cd)
454-func init (cq) = {
455- let cr = ab(cd.caller)
456- if ((cr == cr))
457- then $Tuple2([StringEntry(R, cq)], unit)
447+@Callable(cb)
448+func init (co) = {
449+ let cp = ab(cb.caller)
450+ if ((cp == cp))
451+ then $Tuple2([StringEntry(R, co)], unit)
458452 else throw("Strict value is not equal to itself.")
459453 }
460454
461455
462456
463-@Callable(cd)
464-func requestAccount (ae,cc) = {
465- let cf = [if (!(Y))
457+@Callable(cb)
458+func requestAccount (ae,ca) = {
459+ let cd = [if (!(Y))
466460 then true
467- else D("not allowed"), ac(cd.caller)]
468- if ((cf == cf))
461+ else D("not allowed"), ac(cb.caller)]
462+ if ((cd == cd))
469463 then {
470- let cs = cc[0]
471- let ct = cc[1]
472- let bs = valueOrErrorMessage(parseInt(cc[2]), B("invalid leverage"))
473- let cm = addressFromPublicKey(ae)
474- let ay = sha256(((cm.bytes + fromBase58String(cs)) + fromBase58String(ct)))
475- let aU = G(cs)
476- let aV = G(ct)
477- let cu = (size(aQ(cm)) / j)
478- let cv = [if ((size(cd.payments) == 1))
464+ let cq = ca[0]
465+ let cr = ca[1]
466+ let bq = valueOrErrorMessage(parseInt(ca[2]), B("invalid leverage"))
467+ let ck = addressFromPublicKey(ae)
468+ let ay = sha256(cb.transactionId)
469+ let aS = G(cq)
470+ let aT = G(cr)
471+ let cs = (size(aO(ck)) / j)
472+ let ct = [if ((size(cb.payments) == 1))
479473 then true
480- else D("1 payment is required"), if ((cd.payments[0].assetId == unit))
474+ else D("1 payment is required"), if ((cb.payments[0].assetId == unit))
481475 then true
482- else D("invalid asset"), if ((cd.payments[0].amount == an()))
476+ else D("invalid asset"), if ((cb.payments[0].amount == an()))
483477 then true
484- else D("invalid amount"), if (aW(aU, aV))
478+ else D("invalid amount"), if (aU(aS, aT))
485479 then true
486- else D("pair is not allowed"), if ((getInteger(T, aF(ay)) == unit))
480+ else D("pair is not allowed"), if ((bq == 2))
487481 then true
488- else D("account is already exists"), if ((aq() > cu))
482+ else D("leverage is not allowed"), if ((getInteger(T, aF(ay)) == unit))
483+ then true
484+ else D("account is already exists"), if ((aq() > cs))
489485 then true
490486 else D(("accounts limit is " + toString(aq())))]
491- if ((cv == cv))
487+ if ((ct == ct))
492488 then {
493- let cw = $Tuple2([ScriptTransfer(T, an(), unit)], [invoke(T, "integerEntry", [aF(ay), aD], nil), invoke(T, "binaryEntry", [aM(), (aN() + ay)], nil), invoke(T, "integerEntry", [ax(ay), bs], nil)])
494- let cg = cw._1
495- let ch = cw._2
496- $Tuple2(cg, (ch ++ [invoke(T, "binaryEntry", [aH(ay), ae], nil), invoke(T, "binaryEntry", [aQ(cm), (aS(cm) + ay)], nil), invoke(T, "stringEntry", [aI(ay), cs], nil), invoke(T, "stringEntry", [aJ(ay), ct], nil)]))
489+ let ce = [ScriptTransfer(T, an(), unit)]
490+ $Tuple2(ce, [invoke(T, "integerEntry", [aF(ay), aD], nil), invoke(T, "binaryEntry", [aM(), (aN() + ay)], nil), invoke(T, "binaryEntry", [aO(ck), (aQ(ck) + ay)], nil), invoke(T, "binaryEntry", [aH(ay), ae], nil), invoke(T, "stringEntry", [aI(ay), cq], nil), invoke(T, "stringEntry", [aJ(ay), cr], nil), invoke(T, "integerEntry", [ax(ay), bq], nil)])
497491 }
498492 else throw("Strict value is not equal to itself.")
499493 }
500494 else throw("Strict value is not equal to itself.")
501495 }
502496
503497
504498
505-@Callable(cd)
506-func addAccount (ae,cc) = {
507- let cf = [if (!(Y))
499+@Callable(cb)
500+func editAccount (ae,ca) = {
501+ let as = valueOrErrorMessage(addressFromString(ca[0]), B("invalid account address"))
502+ let cq = ca[1]
503+ let cr = ca[2]
504+ let bq = valueOrErrorMessage(parseInt(ca[3]), B("invalid leverage"))
505+ let ay = bM(as)
506+ let cu = bO(as)
507+ let aS = G(cq)
508+ let aT = G(cr)
509+ let ct = [if (!(Y))
508510 then true
509- else D("not allowed"), ac(cd.caller)]
510- if ((cf == cf))
511+ else D("not allowed"), ac(cb.caller), if ((ae == cu))
512+ then true
513+ else D("caller is not an account owner"), if (aU(aS, aT))
514+ then true
515+ else D("pair is not allowed"), if ((bq == 2))
516+ then true
517+ else D("leverage is not allowed"), if ((getInteger(T, aF(ay)) == aE))
518+ then true
519+ else D("account is not ready")]
520+ if ((ct == ct))
521+ then $Tuple2(nil, [invoke(T, "stringEntry", [aI(ay), cq], nil), invoke(T, "stringEntry", [aJ(ay), cr], nil), invoke(T, "integerEntry", [ax(ay), bq], nil)])
522+ else throw("Strict value is not equal to itself.")
523+ }
524+
525+
526+
527+@Callable(cb)
528+func addAccount (ae,ca) = {
529+ let cd = [if (!(Y))
530+ then true
531+ else D("not allowed"), ac(cb.caller)]
532+ if ((cd == cd))
511533 then {
512- let cx = fromBase58String(cc[0])
513- let bU = ae
534+ let cv = fromBase58String(ca[0])
535+ let bS = ae
514536 let as = addressFromPublicKey(ae)
515- let cy = addressFromPublicKey(cx)
516- let cv = [if ((getBinary(T, aG(as)) == unit))
537+ let cw = addressFromPublicKey(cv)
538+ let ct = [if ((getBinary(T, aG(as)) == unit))
517539 then true
518540 else D("account is already exists"), if ({
519541 let M = scriptHash(as)
520542 if ($isInstanceOf(M, "ByteVector"))
521543 then {
522- let cz = M
523- (cz == blake2b256_32Kb(al()))
544+ let cx = M
545+ (cx == blake2b256_32Kb(al()))
524546 }
525547 else false
526548 })
527549 then true
528550 else D("invalid script")]
529- if ((cv == cv))
551+ if ((ct == ct))
530552 then {
531- let cA = if ((size(aN()) == 0))
532- then $Tuple2(nil, nil)
553+ let cy = if ((size(aN()) == 0))
554+ then $Tuple2(D("requests queue is empty"), nil)
533555 else {
534556 let ay = take(aN(), j)
535- let bs = valueOrErrorMessage(getInteger(T, ax(ay)), B("request's leverage is undefined"))
536- $Tuple2(nil, [invoke(T, "integerEntry", [aF(ay), aE], nil), invoke(T, "binaryEntry", [aK(ay), bU], nil), invoke(T, "binaryEntry", [aM(), drop(aN(), j)], nil), invoke(T, "stringEntry", [aL(as), toBase58String(ay)], nil), invoke(T, "transferWaves", [cy.bytes, an()], nil), invoke(T, "integerEntry", [aw(as), bs], nil)])
557+ let bq = valueOrErrorMessage(getInteger(T, ax(ay)), B("request's leverage is undefined"))
558+ $Tuple2(nil, [invoke(T, "integerEntry", [aF(ay), aE], nil), invoke(T, "binaryEntry", [aK(ay), bS], nil), invoke(T, "binaryEntry", [aM(), drop(aN(), j)], nil), invoke(T, "stringEntry", [aL(as), toBase58String(ay)], nil), invoke(T, "transferWaves", [cw.bytes, an()], nil), invoke(T, "integerEntry", [aw(as), bq], nil)])
537559 }
538- let cg = cA._1
539- let ch = cA._2
540- $Tuple2(cg, (ch ++ [invoke(T, "binaryEntry", [aG(as), cx], nil)]))
560+ let ce = cy._1
561+ let cf = cy._2
562+ $Tuple2(ce, (cf ++ [invoke(T, "binaryEntry", [aG(as), cv], nil)]))
541563 }
542564 else throw("Strict value is not equal to itself.")
543565 }
544566 else throw("Strict value is not equal to itself.")
545567 }
546568
547569
548570
549-@Callable(cd)
550-func withdraw (ae,cc) = {
551- let cv = [if (!(Y))
571+@Callable(cb)
572+func withdraw (ae,ca) = {
573+ let ct = [if (!(Y))
552574 then true
553- else D("not allowed"), ac(cd.caller)]
554- if ((cv == cv))
575+ else D("not allowed"), ac(cb.caller)]
576+ if ((ct == ct))
555577 then {
556- let cm = addressFromPublicKey(ae)
557- let as = valueOrErrorMessage(addressFromString(cc[0]), B("invalid account address"))
558- let cB = valueOrErrorMessage(parseInt(cc[1]), B("invalid amount"))
559- let K = G(cc[2])
560- let cC = [invoke(as, "transferAsset", [cm.bytes, cB, K], nil)]
561- $Tuple2(nil, cC)
578+ let ck = addressFromPublicKey(ae)
579+ let as = valueOrErrorMessage(addressFromString(ca[0]), B("invalid account address"))
580+ let cz = valueOrErrorMessage(parseInt(ca[1]), B("invalid amount"))
581+ let K = G(ca[2])
582+ let cA = [invoke(as, "transferAsset", [ck.bytes, cz, K], nil)]
583+ $Tuple2(nil, cA)
562584 }
563585 else throw("Strict value is not equal to itself.")
564586 }
565587
566588
567589
568-@Callable(cd)
569-func deposit (ae,cc) = {
570- let cD = cb(ae, cc, cd)
571- let cg = cD._1
572- let ch = cD._2
573- $Tuple2(cg, ch)
590+@Callable(cb)
591+func deposit (ae,ca) = {
592+ let cB = bZ(ae, ca, cb)
593+ let ce = cB._1
594+ let cf = cB._2
595+ $Tuple2(ce, cf)
574596 }
575597
576598
577599
578-@Callable(cd)
579-func borrow (ae,cc) = {
580- let cE = ci(ae, cc, cd)
581- let cg = cE._1
582- let ch = cE._2
583- $Tuple2(cg, ch)
600+@Callable(cb)
601+func borrow (ae,ca) = {
602+ let cC = cg(ae, ca, cb)
603+ let ce = cC._1
604+ let cf = cC._2
605+ $Tuple2(ce, cf)
584606 }
585607
586608
587609
588-@Callable(cd)
589-func depositAndBorrow (ae,cc) = {
590- let as = cc[0]
591- let cF = cb(ae, [as], cd)
592- let cG = cF._1
593- let cH = cF._2
594- let cI = ci(ae, cc, cd)
595- let cJ = cI._1
596- let cK = cI._2
597- $Tuple2((cG ++ cJ), (cH ++ cK))
610+@Callable(cb)
611+func depositAndBorrow (ae,ca) = {
612+ let as = ca[0]
613+ let cD = bZ(ae, [as], cb)
614+ let cE = cD._1
615+ let cF = cD._2
616+ let cG = cg(ae, ca, cb)
617+ let cH = cG._1
618+ let cI = cG._2
619+ $Tuple2((cE ++ cH), (cF ++ cI))
598620 }
599621
600622
601623
602-@Callable(cd)
603-func repay (ae,cc) = {
604- let cf = [if (!(Y))
624+@Callable(cb)
625+func repay (ae,ca) = {
626+ let cd = [if (!(Y))
605627 then true
606- else D("not allowed"), ac(cd.caller)]
607- if ((cf == cf))
628+ else D("not allowed"), ac(cb.caller)]
629+ if ((cd == cd))
608630 then $Tuple2(nil, unit)
609631 else throw("Strict value is not equal to itself.")
610632 }
611633
612634
613635
614-@Callable(cd)
615-func setPairAllowance (ae,cc) = {
616- let cf = [if (!(Y))
636+@Callable(cb)
637+func setPairAllowance (ae,ca) = {
638+ let cd = [if (!(Y))
617639 then true
618- else D("not allowed"), ac(cd.caller), ad(ae)]
619- if ((cf == cf))
640+ else D("not allowed"), ac(cb.caller), ad(ae)]
641+ if ((cd == cd))
620642 then {
621- let cs = cc[0]
622- let ct = cc[1]
623- let cL = cc[2]
624- let aU = G(cs)
625- let aV = G(ct)
626- let cM = (cL == "true")
627- let cC = [invoke(T, "booleanEntry", [aT(aU, aV), cM], nil)]
628- $Tuple2(nil, cC)
643+ let cq = ca[0]
644+ let cr = ca[1]
645+ let cJ = ca[2]
646+ let aS = G(cq)
647+ let aT = G(cr)
648+ let cK = (cJ == "true")
649+ let cA = [invoke(T, "booleanEntry", [aR(aS, aT), cK], nil)]
650+ $Tuple2(nil, cA)
629651 }
630652 else throw("Strict value is not equal to itself.")
631653 }
632654
633655
634656
635-@Callable(cd)
636-func addSyntheticAsset (ae,cc) = {
637- let aA = G(cc[0])
638- let aC = G(cc[1])
639- let cf = [if (!(Y))
657+@Callable(cb)
658+func addSyntheticAsset (ae,ca) = {
659+ let aA = G(ca[0])
660+ let aC = G(ca[1])
661+ let cd = [if (!(Y))
640662 then true
641- else D("not allowed"), ac(cd.caller), ad(ae), if ((getString(T, az(aA)) == unit))
663+ else D("not allowed"), ac(cb.caller), ad(ae), if ((getString(T, az(aA)) == unit))
642664 then true
643665 else D("invalid base asset"), if ((getString(T, aB(aC)) == unit))
644666 then true
645667 else D("invalid synthetic asset")]
646- if ((cf == cf))
668+ if ((cd == cd))
647669 then {
648- let cC = [invoke(T, "stringEntry", [az(aA), I(aC)], nil), invoke(T, "stringEntry", [aB(aC), I(aA)], nil)]
649- $Tuple2(nil, cC)
670+ let cA = [invoke(T, "stringEntry", [az(aA), I(aC)], nil), invoke(T, "stringEntry", [aB(aC), I(aA)], nil)]
671+ $Tuple2(nil, cA)
650672 }
651673 else throw("Strict value is not equal to itself.")
652674 }
653675
654676
655677
656-@Callable(cd)
657-func doShutdown (ae,cc) = {
658- let cv = [ac(cd.caller), ad(ae)]
659- if ((cv == cv))
678+@Callable(cb)
679+func doShutdown (ae,ca) = {
680+ let ct = [ac(cb.caller), ad(ae)]
681+ if ((ct == ct))
660682 then {
661- let cC = [invoke(T, "booleanEntry", [q, true], nil)]
662- $Tuple2(nil, cC)
683+ let cA = [invoke(T, "booleanEntry", [q, true], nil)]
684+ $Tuple2(nil, cA)
663685 }
664686 else throw("Strict value is not equal to itself.")
665687 }
666688
667689
668690
669-@Callable(cd)
670-func getAccountInfoREADONLY (ae,cc) = {
671- let cv = [ac(cd.caller)]
672- if ((cv == cv))
691+@Callable(cb)
692+func getAccountInfoREADONLY (ae,ca) = {
693+ let ct = [ac(cb.caller)]
694+ if ((ct == ct))
673695 then {
674- let as = valueOrErrorMessage(addressFromString(cc[0]), B("invalid account address"))
675- let cN = bS(as)
676- $Tuple2(nil, cN)
696+ let as = valueOrErrorMessage(addressFromString(ca[0]), B("invalid account address"))
697+ let cL = bQ(as)
698+ $Tuple2(nil, cL)
677699 }
678700 else throw("Strict value is not equal to itself.")
679701 }
680702
681703
682704
683-@Callable(cd)
684-func getUserInfoREADONLY (ae,cc) = {
685- let cv = [ac(cd.caller)]
686- if ((cv == cv))
705+@Callable(cb)
706+func getUserInfoREADONLY (ae,ca) = {
707+ let ct = [ac(cb.caller)]
708+ if ((ct == ct))
687709 then {
688- let cm = valueOrErrorMessage(addressFromString(cc[0]), B("invalid user address"))
689- let cO = valueOrElse(getBinary(T, aQ(cm)), base58'')
690- let cu = (size(cO) / j)
691- func cP (cQ,cR) = {
692- let cS = cQ
693- let cT = cS._1
694- let cU = cS._2
695- let cV = cS._3
696- if ((cV > cR))
710+ let ck = valueOrErrorMessage(addressFromString(ca[0]), B("invalid user address"))
711+ let cM = valueOrElse(getBinary(T, aO(ck)), base58'')
712+ let cs = (size(cM) / j)
713+ func cN (cO,cP) = {
714+ let cQ = cO
715+ let cR = cQ._1
716+ let cS = cQ._2
717+ let cT = cQ._3
718+ if ((cT > cP))
697719 then {
698- let ay = take(cU, j)
699- let cW = drop(cU, j)
700- let bU = valueOrErrorMessage(getBinary(T, aK(ay)), "kRequestIdToAccountPublicKey not found")
701- let as = addressFromPublicKey(bU)
702- let cN = bS(as)
703- $Tuple3((cT :+ cN), cW, cV)
720+ let ay = take(cS, j)
721+ let cU = drop(cS, j)
722+ let bS = valueOrErrorMessage(getBinary(T, aK(ay)), "kRequestIdToAccountPublicKey not found")
723+ let as = addressFromPublicKey(bS)
724+ let cL = bQ(as)
725+ $Tuple3((cR :+ cL), cU, cT)
704726 }
705- else cQ
727+ else cO
706728 }
707729
708- let cX = {
709- let cY = l
710- let cZ = size(cY)
711- let da = $Tuple3(nil, cO, cu)
712- func db (dc,dd) = if ((dd >= cZ))
713- then dc
714- else cP(dc, cY[dd])
730+ let cV = {
731+ let cW = l
732+ let cX = size(cW)
733+ let cY = $Tuple3(nil, cM, cs)
734+ func cZ (da,db) = if ((db >= cX))
735+ then da
736+ else cN(da, cW[db])
715737
716- func de (dc,dd) = if ((dd >= cZ))
717- then dc
738+ func dc (da,db) = if ((db >= cX))
739+ then da
718740 else throw("List size exceeds 20")
719741
720- de(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(da, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
742+ dc(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
721743 }
722- let cT = cX._1
723- let df = cX._2
724- let dg = cX._3
725- $Tuple2(nil, cT)
744+ let cR = cV._1
745+ let dd = cV._2
746+ let de = cV._3
747+ $Tuple2(nil, cR)
726748 }
727749 else throw("Strict value is not equal to itself.")
728750 }
729751
730752
731753
732-@Callable(cd)
733-func getPairSettingsInfoREADONLY (ae,cc) = {
734- let dh = G(cc[0])
735- let di = G(cc[1])
736- let dj = aZ(dh, di)
737- func dk (cQ,dl) = {
738- let dm = ba(dh, di, dl)
739- let dn = getStringValue(T, dm)
740- let do = split(dn, a)
741- let bf = parseInt(dl)
742- let dp = parseInt(do[1])
743- let dq = parseInt(do[2])
744- let dr = parseInt(do[3])
745- (cQ :+ $Tuple4(bf, dp, dq, dr))
754+@Callable(cb)
755+func getPairSettingsInfoREADONLY (ae,ca) = {
756+ let df = G(ca[0])
757+ let dg = G(ca[1])
758+ let dh = aX(df, dg)
759+ func di (cO,dj) = {
760+ let dk = aY(df, dg, dj)
761+ let dl = getStringValue(T, dk)
762+ let dm = split(dl, a)
763+ let bd = parseInt(dj)
764+ let dn = parseInt(dm[1])
765+ let do = parseInt(dm[2])
766+ let dp = parseInt(dm[3])
767+ (cO :+ $Tuple4(bd, dn, do, dp))
746768 }
747769
748- let cN = {
749- let cY = dj
750- let cZ = size(cY)
751- let da = nil
752- func db (dc,dd) = if ((dd >= cZ))
753- then dc
754- else dk(dc, cY[dd])
770+ let cL = {
771+ let cW = dh
772+ let cX = size(cW)
773+ let cY = nil
774+ func cZ (da,db) = if ((db >= cX))
775+ then da
776+ else di(da, cW[db])
755777
756- func de (dc,dd) = if ((dd >= cZ))
757- then dc
778+ func dc (da,db) = if ((db >= cX))
779+ then da
758780 else throw("List size exceeds 20")
759781
760- de(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(da, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
782+ dc(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
761783 }
762- $Tuple2(nil, cN)
784+ $Tuple2(nil, cL)
763785 }
764786
765787
766788
767-@Callable(cd)
768-func editPairSettings (ae,cc) = {
769- let cv = [ac(cd.caller), ad(ae)]
770- if ((cv == cv))
789+@Callable(cb)
790+func editPairSettings (ae,ca) = {
791+ let ct = [ac(cb.caller), ad(ae)]
792+ if ((ct == ct))
771793 then {
772- let dh = G(cc[0])
773- let di = G(cc[1])
774- let bf = cc[2]
775- let dp = cc[3]
776- let dq = cc[4]
777- let dr = cc[5]
778- let ds = aY(dh, di)
779- let dm = ba(dh, di, bf)
780- let dj = aZ(dh, di)
781- let dt = {
782- let M = indexOf(dj, bf)
794+ let df = G(ca[0])
795+ let dg = G(ca[1])
796+ let bd = ca[2]
797+ let dn = ca[3]
798+ let do = ca[4]
799+ let dp = ca[5]
800+ let dq = aW(df, dg)
801+ let dk = aY(df, dg, bd)
802+ let dh = aX(df, dg)
803+ let dr = {
804+ let M = indexOf(dh, bd)
783805 if ($isInstanceOf(M, "Int"))
784806 then {
785- let du = M
786- dj
807+ let ds = M
808+ dh
787809 }
788- else (dj :+ bf)
810+ else (dh :+ bd)
789811 }
790- let dv = [valueOrErrorMessage(parseInt(bf), B("price value is not an Int")), valueOrErrorMessage(dp, B("maxLeverage value is not an Int")), valueOrErrorMessage(dq, B("initialMargin value is not an Int")), valueOrErrorMessage(dr, B("maintenanceMargin value is not an Int")), if ((20 >= size(dt)))
812+ let dt = [valueOrErrorMessage(parseInt(bd), B("price value is not an Int")), valueOrErrorMessage(dn, B("maxLeverage value is not an Int")), valueOrErrorMessage(do, B("initialMargin value is not an Int")), valueOrErrorMessage(dp, B("maintenanceMargin value is not an Int")), if ((20 >= size(dr)))
791813 then true
792814 else D("exceeded max prices list size (20)")]
793- if ((dv == dv))
815+ if ((dt == dt))
794816 then {
795- let dw = makeString(["%s%s%s", dp, dq, dr], a)
796- let cC = [invoke(T, "stringEntry", [aY(dh, di), makeString(dt, a)], nil), invoke(T, "stringEntry", [ba(dh, di, bf), dw], nil)]
797- $Tuple2(nil, cC)
817+ let du = makeString(["%s%s%s", dn, do, dp], a)
818+ let cA = [invoke(T, "stringEntry", [aW(df, dg), makeString(dr, a)], nil), invoke(T, "stringEntry", [aY(df, dg, bd), du], nil)]
819+ $Tuple2(nil, cA)
798820 }
799821 else throw("Strict value is not equal to itself.")
800822 }
801823 else throw("Strict value is not equal to itself.")
802824 }
803825
804826
805827
806-@Callable(cd)
807-func deletePairSettings (ae,cc) = {
808- let cv = [ac(cd.caller), ad(ae)]
809- if ((cv == cv))
828+@Callable(cb)
829+func deletePairSettings (ae,ca) = {
830+ let ct = [ac(cb.caller), ad(ae)]
831+ if ((ct == ct))
810832 then {
811- let dh = G(cc[0])
812- let di = G(cc[1])
813- let bf = cc[2]
814- let dm = ba(dh, di, bf)
815- let ds = aY(dh, di)
816- let dj = aZ(dh, di)
817- let dt = {
818- let M = indexOf(dj, bf)
833+ let df = G(ca[0])
834+ let dg = G(ca[1])
835+ let bd = ca[2]
836+ let dk = aY(df, dg, bd)
837+ let dq = aW(df, dg)
838+ let dh = aX(df, dg)
839+ let dr = {
840+ let M = indexOf(dh, bd)
819841 if ($isInstanceOf(M, "Int"))
820842 then {
821- let du = M
822- removeByIndex(dj, du)
843+ let ds = M
844+ removeByIndex(dh, ds)
823845 }
824- else dj
846+ else dh
825847 }
826- let cC = [invoke(T, "deleteEntry", [dm], nil), if ((size(dt) == 0))
827- then invoke(T, "deleteEntry", [aY(dh, di)], nil)
828- else invoke(T, "stringEntry", [aY(dh, di), makeString(dt, a)], nil)]
829- $Tuple2(nil, cC)
848+ let cA = [invoke(T, "deleteEntry", [dk], nil), if ((size(dr) == 0))
849+ then invoke(T, "deleteEntry", [aW(df, dg)], nil)
850+ else invoke(T, "stringEntry", [aW(df, dg), makeString(dr, a)], nil)]
851+ $Tuple2(nil, cA)
830852 }
831853 else throw("Strict value is not equal to itself.")
832854 }
833855
834856
835-@Verifier(dx)
836-func dy () = if (if (isDefined(S))
857+@Verifier(dv)
858+func dw () = if (if (isDefined(S))
837859 then isDefined(getString(T, m))
838860 else false)
839861 then {
840862 let M = getString(T, m)
841863 if ($isInstanceOf(M, "String"))
842864 then {
843865 let ai = M
844- let dz = n(toString(this), toBase58String(dx.id))
845- let bW = valueOrElse(getBoolean(addressFromStringValue(ai), dz), false)
846- bW
866+ let dx = n(toString(this), toBase58String(dv.id))
867+ let bU = valueOrElse(getBoolean(addressFromStringValue(ai), dx), false)
868+ bU
847869 }
848870 else false
849871 }
850- else sigVerify(dx.bodyBytes, dx.proofs[0], dx.senderPublicKey)
872+ else sigVerify(dv.bodyBytes, dv.proofs[0], dv.senderPublicKey)
851873

github/deemru/w8io/026f985 
205.95 ms