tx · GSbHCrzVY6tWBPaXrBXNQrabgcSjpN1ybctUzZbshfHv

3N5BTH4bjnXn7AAKoj4sswxytsPGmdXUuTx:  -0.02500000 Waves

2023.04.19 08:37 [2541033] smart account 3N5BTH4bjnXn7AAKoj4sswxytsPGmdXUuTx > SELF 0.00000000 Waves

{ "type": 13, "id": "GSbHCrzVY6tWBPaXrBXNQrabgcSjpN1ybctUzZbshfHv", "fee": 2500000, "feeAssetId": null, "timestamp": 1681882777268, "version": 2, "chainId": 84, "sender": "3N5BTH4bjnXn7AAKoj4sswxytsPGmdXUuTx", "senderPublicKey": "DyeDJ3fgwVVux2WRkxpLU9BbVjTM96AyV58b7bRFzCBx", "proofs": [ "DUbf6ZCbeu5Faayy41CXjRY5BXDtntN6uU3FykGEt9FabB4BckRrwXyYH8NAWAEHBAmgFgrJty9skebSkpV6UvM" ], "script": "base64:BgJaCAISDAoKCAgICAgBCAgICBIECgIICBIGCgQICAgIEgMKAQgSBwoFCAgIAQgSBwoFCAgICAISCAoGCAgICAgIEgMKAQgSBAoCCAgSAwoBCBIECgIICBIDCgEYDAAJc2VwYXJhdG9yAgFfAARrQnV5AgNidXkABmtQcmljZQIFcHJpY2UABWtTZWxsAgRzZWxsABJtYXhBdWN0aW9uRHVyYXRpb24AHgAFdGVhbXMBIIVjlaPziI6w3gwXjghOv5o/krsm2zrodo4W3BQiKkh+AAVXQVZFUwEAAARrQmlkAgNiaWQABnBhdXNlZAYADHN0YXR1c0Zvck5GVAkAlgoEAgRPUEVOAgZDTE9TRUQCCFJFV0FSREVEAghDQU5DRUxFRAALZEFwcEFkZHJlc3MBGgFUSrhPbN7C2pPt9I7pSjb41U9/ldVVW12gAQVpc05mdAEHYXNzZXRJZAQHJG1hdGNoMAkA7AcBBQdhc3NldElkAwkAAQIFByRtYXRjaDACBUFzc2V0BAV0b2tlbgUHJG1hdGNoMAMDCQAAAggFBXRva2VuCGRlY2ltYWxzAAAJAAACCAUFdG9rZW4IcXVhbnRpdHkAAQcJAAACCAUFdG9rZW4KcmVpc3N1YWJsZQcHBwwBaQEJY3JlYXRlTmZ0CghuZnRfbmFtZQluZnRfb3duZXIPbmZ0X2RBcHBBZGRyZXNzCG5mdF90eXBlCG5mdF90YWdzEW5mdF9zZWxsaW5nX3ByaWNlEXJveWFsdHlQZXJjZW50YWdlD25mdF9kZXNjcmlwdGlvbgpuZnRfb25TZWxsCG5mdF9kYXRhBAhuZXdUb2tlbgkAwggFBQhuZnRfbmFtZQUPbmZ0X2Rlc2NyaXB0aW9uAAEAAAcEB2lzc3VlSWQJALgIAQUIbmV3VG9rZW4EBHR4SWQIBQFpDXRyYW5zYWN0aW9uSWQJAMwIAgUIbmV3VG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEFB2lzc3VlSWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAgVPd25lcgkApQgBCAUBaQZjYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAghuZnRfdHlwZQUIbmZ0X3R5cGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAghuZnRfdGFncwUIbmZ0X3RhZ3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAg9uZnRfZEFwcEFkZHJlc3MFD25mdF9kQXBwQWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkA2AQBBQR0eElkBQlzZXBhcmF0b3ICEXJveWFsdHlQZXJjZW50YWdlBRFyb3lhbHR5UGVyY2VudGFnZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAhFuZnRfc2VsbGluZ19wcmljZQURbmZ0X3NlbGxpbmdfcHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAgpuZnRfb25TZWxsBQpuZnRfb25TZWxsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQDYBAEFB2lzc3VlSWQFCXNlcGFyYXRvcgIIbmZ0X2RhdGEFCG5mdF9kYXRhCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQDYBAEFBHR4SWQFCXNlcGFyYXRvcgIJaXNzdWVfbmZ0CQDYBAEFB2lzc3VlSWQFA25pbAFpAQdzZWxsTkZUAgVwcmljZRBwYXltZW50X2N1cnJlbmN5BAR0eElkCAUBaQ10cmFuc2FjdGlvbklkBAZzZWxsZXIICAUBaQZjYWxsZXIFYnl0ZXMECyR0MDI0OTkyNTg0CQCUCgIJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEBnRva2VuMAgFCyR0MDI0OTkyNTg0Al8xBAdhbW91bnQwCAULJHQwMjQ5OTI1ODQCXzIDCQEBIQEJAQVpc05mdAEFBnRva2VuMAkAAgECEFRva2VuIGlzIG5vdCBORlQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIFBmtQcmljZQUJc2VwYXJhdG9yCQDYBAEJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUFcHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyBQlzZXBhcmF0b3IFBWtTZWxsCQCsAgIJAKwCAgkArAICCQDYBAEFBnRva2VuMAUJc2VwYXJhdG9yCQCkAwEFB2Ftb3VudDAFEHBheW1lbnRfY3VycmVuY3kFA25pbAFpAQZidXlORlQEBW5mdElEEWN1cnJlbnRfbmZ0X293bmVyB2NyZWF0b3IRcm95YWx0eVBlcmNlbnRhZ2UEB2Fzc2V0SWQJANkEAQUFbmZ0SUQEEGNoZWNrT3duZXJJc1NhbWUEByRtYXRjaDAJAJ0IAgUEdGhpcwkArAICCQCsAgICBG5mdF8FEWN1cnJlbnRfbmZ0X293bmVyAgZfb3duZXIDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhBwQFcHJpY2UJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkArAICCQCsAgIJAKwCAgUGa1ByaWNlBQlzZXBhcmF0b3IFBW5mdElEAgFfBRFjdXJyZW50X25mdF9vd25lcgQGYW1vdW50CQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQMc2VsbGVyQW1vdW50CQBlAgUGYW1vdW50CQBoAgkAaQIFBmFtb3VudADoBwAZBAxwbGF0Zm9ybV9mZWUJAGUCBQZhbW91bnQFDHNlbGxlckFtb3VudAQOcm95YWxpdHlBbW91bnQJAGgCCQBpAgUGYW1vdW50AGQJAQ1wYXJzZUludFZhbHVlAQURcm95YWx0eVBlcmNlbnRhZ2UECnNlbGxlckNvc3QJAGUCBQZhbW91bnQJAGQCBQ5yb3lhbGl0eUFtb3VudAUMcGxhdGZvcm1fZmVlAwkAAAIFEWN1cnJlbnRfbmZ0X293bmVyCQClCAEIBQFpBmNhbGxlcgkAAgECKWN1cnJlbnQgT3duZXIgb2YgTkZUIG5vdCBhYmxlIHRvIHB1cmNoYXNlAwMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFBXRlYW1zCQECIT0CBQdjcmVhdG9yBRFjdXJyZW50X25mdF9vd25lcgcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEFB2Fzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFEWN1cnJlbnRfbmZ0X293bmVyBQpzZWxsZXJDb3N0BQV0ZWFtcwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUHY3JlYXRvcgUOcm95YWxpdHlBbW91bnQFBXRlYW1zCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgIEbmZ0XwUFbmZ0SUQCDHBsYXRmb3JtX2ZlZQUMcGxhdGZvcm1fZmVlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgUJc2VwYXJhdG9yBQRrQnV5CQCsAgIJAKwCAgUFbmZ0SUQFCXNlcGFyYXRvcgkApAMBBQZhbW91bnQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgICBG5mdF8FEWN1cnJlbnRfbmZ0X293bmVyAgZfb3duZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgICBG5mdF8FEWN1cnJlbnRfbmZ0X293bmVyAgZfb3duZXIJAKUIAQgFAWkGY2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQVuZnRJRAUJc2VwYXJhdG9yAgZfb3duZXIJAKUIAQgFAWkGY2FsbGVyBQNuaWwDAwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUFdGVhbXMJAAACBQdjcmVhdG9yBRFjdXJyZW50X25mdF9vd25lcgcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEFB2Fzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFEWN1cnJlbnRfbmZ0X293bmVyBQxzZWxsZXJBbW91bnQFBXRlYW1zCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICAgRuZnRfBQVuZnRJRAIMcGxhdGZvcm1fZmVlCQCkAwEFDHBsYXRmb3JtX2ZlZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXIFCXNlcGFyYXRvcgUEa0J1eQkArAICCQCsAgIFBW5mdElEBQlzZXBhcmF0b3IJAKQDAQUGYW1vdW50CQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICAgRuZnRfBRFjdXJyZW50X25mdF9vd25lcgIGX293bmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICAgRuZnRfBRFjdXJyZW50X25mdF9vd25lcgIGX293bmVyCQClCAEIBQFpBmNhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgUFbmZ0SUQFCXNlcGFyYXRvcgIGX293bmVyCQClCAEIBQFpBmNhbGxlcgUDbmlsAwMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFBHVuaXQJAQIhPQIFB2NyZWF0b3IFEWN1cnJlbnRfbmZ0X293bmVyBwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQURY3VycmVudF9uZnRfb3duZXIFCnNlbGxlckNvc3QFBHVuaXQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFB2NyZWF0b3IFDnJveWFsaXR5QW1vdW50BQR1bml0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICAgRuZnRfBQVuZnRJRAIMcGxhdGZvcm1fZmVlCQCkAwEFDHBsYXRmb3JtX2ZlZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXIFCXNlcGFyYXRvcgUEa0J1eQkArAICCQCsAgIFBW5mdElEBQlzZXBhcmF0b3IJAKQDAQUGYW1vdW50CQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICAgRuZnRfBRFjdXJyZW50X25mdF9vd25lcgIGX293bmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICAgRuZnRfBRFjdXJyZW50X25mdF9vd25lcgIGX293bmVyCQClCAEIBQFpBmNhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgUFbmZ0SUQFCXNlcGFyYXRvcgIGX293bmVyCQClCAEIBQFpBmNhbGxlcgUDbmlsAwMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFBHVuaXQJAAACBQdjcmVhdG9yBRFjdXJyZW50X25mdF9vd25lcgcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEFB2Fzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFEWN1cnJlbnRfbmZ0X293bmVyBQxzZWxsZXJBbW91bnQFBHVuaXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgICBG5mdF8FBW5mdElEAgxwbGF0Zm9ybV9mZWUJAKQDAQUMcGxhdGZvcm1fZmVlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgUJc2VwYXJhdG9yBQRrQnV5CQCsAgIJAKwCAgUFbmZ0SUQFCXNlcGFyYXRvcgkApAMBBQZhbW91bnQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgICBG5mdF8FEWN1cnJlbnRfbmZ0X293bmVyAgZfb3duZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgICBG5mdF8FEWN1cnJlbnRfbmZ0X293bmVyAgZfb3duZXIJAKUIAQgFAWkGY2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQVuZnRJRAUJc2VwYXJhdG9yAgZfb3duZXIJAKUIAQgFAWkGY2FsbGVyBQNuaWwFA25pbAFpAQpjYW5jZWxTZWxsAQVuZnRJZAQEdHhJZAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBAZzZWxsZXIICAUBaQZjYWxsZXIFYnl0ZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIFBHR4SWQFBW5mdElkAgtfbmZ0X3N0YXR1cwIIQ0FOQ0VMRUQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQZzZWxsZXIAAQkA2QQBBQVuZnRJZAUDbmlsAWkBCmFkZEF1Y3Rpb24FBXN0YXJ0A2VuZApzdGFydFByaWNlCGR1cmF0aW9uEHBheW1lbnRfY3VycmVuY3kEBHR4SWQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAQFbmZ0SWQJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQFcHJpY2UJAQV2YWx1ZQEFCnN0YXJ0UHJpY2UECWVuZEhlaWdodAkAZAIIBQlsYXN0QmxvY2sGaGVpZ2h0BQhkdXJhdGlvbgQGY2FsbGVyCAgFAWkGY2FsbGVyBWJ5dGVzBBFjaGVja05mdEF1Y3Rpb25lZAQHJG1hdGNoMAkAnQgCBQR0aGlzCQCsAgIJAKwCAgkArAICCQDYBAEFBW5mdElkBQlzZXBhcmF0b3ICC25mdF9zdGF0dXNfCQDYBAEFBmNhbGxlcgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAGBwMJAAACBRFjaGVja05mdEF1Y3Rpb25lZAYJAAIBAhdBbHJlYWR5IGluIGF1Y3Rpb24gbGlzdAMJAGYCBQhkdXJhdGlvbgUSbWF4QXVjdGlvbkR1cmF0aW9uCQACAQkArAICAjdEdXJhdGlvbiBpcyB0b28gbG9uZy4gTXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMzAgCQCkAwEFEm1heEF1Y3Rpb25EdXJhdGlvbgMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFBHVuaXQJAAIBAhBORlQgbm90IGF0dGFjaGVkAwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUFdGVhbXMJAAIBAhBORlQgbm90IGF0dGFjaGVkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQR0eElkAhZuZnRfc3RhcnRfYXVjdGlvbl9kYXRlCQDYBAEFBmNhbGxlcgUFc3RhcnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIFBHR4SWQCFG5mdF9lbmRfYXVjdGlvbl9kYXRlCQDYBAEFBmNhbGxlcgUDZW5kCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIQX25mdF9zdGFydF9wcmljZQUKc3RhcnRQcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCCl9uZnRfb3duZXIJAKUIAQgFAWkGY2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIPX25mdF9vbl9hdWN0aW9uCQDYBAEFBW5mdElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIQX3ByZXZpb3VzX2JpZGRlcgIEbm9uZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCDF9oaWdoZXN0X2JpZAIBMAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCDl93aW5uZXJfb2ZfbmZ0AgEwCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAINX2JpZGRlcl9jb3VudAIBMAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCC19uZnRfc3RhdHVzAgRPUEVOBQNuaWwBaQEIcGxhY2VCaWQFCWF1Y3Rpb25JZAVuZnRJZAluZnRfb3duZXIJYmlkX3ByaWNlEGN1cnJlbnRfY3VycmVuY3kEBHR4SWQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAQGY2FsbGVyCAgFAWkGY2FsbGVyBWJ5dGVzBAdhc3NldElkCQDZBAEFBW5mdElkBAl0b2tlblR5cGUICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQPY3VycmVudEJpZFByaWNlCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQVZ2V0TGFzdFdpbm5lckJpZFByaWNlCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFCWF1Y3Rpb25JZAIMX2hpZ2hlc3RfYmlkBBhnZXRQcmV2aW91c0JpZGRlckFkZHJlc3MJAJ0IAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCEF9wcmV2aW91c19iaWRkZXIED2N1cnJlbnRCaWRDb3VudAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCDV9iaWRkZXJfY291bnQEFGdldExhc3RXaW5uZXJBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFCWF1Y3Rpb25JZAIOX3dpbm5lcl9vZl9uZnQEEWNoZWNrTmZ0QXVjdGlvbmVkCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFCWF1Y3Rpb25JZAILX25mdF9zdGF0dXMDCQECIT0CBRFjaGVja05mdEF1Y3Rpb25lZAIET1BFTgkAAgECFE5vdCBvcGVuIGZvciBhdWN0aW9uAwkAZwIJAQ1wYXJzZUludFZhbHVlAQUVZ2V0TGFzdFdpbm5lckJpZFByaWNlBQ9jdXJyZW50QmlkUHJpY2UJAAIBAiVCaWQgaXMgbGVzcyB0aGVuIHN0YXJ0aW5nL2hpZ2hlc3QgQmlkAwkAAAIFFWdldExhc3RXaW5uZXJCaWRQcmljZQIBMAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIMX2hpZ2hlc3RfYmlkCQCkAwEFD2N1cnJlbnRCaWRQcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIOX3dpbm5lcl9vZl9uZnQJANgEAQgIBQFpBmNhbGxlcgVieXRlcwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAINX2JpZGRlcl9jb3VudAkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBBQ9jdXJyZW50QmlkQ291bnQAAQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIHX25mdF9pZAkA2AQBBQdhc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAgpfbmZ0X293bmVyBQluZnRfb3duZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUEdHhJZAIBXwUJYXVjdGlvbklkAgxfaGlnaGVzdF9iaWQJAKQDAQUPY3VycmVudEJpZFByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFBHR4SWQCAV8FCWF1Y3Rpb25JZAIHX3dpbm5lcgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFBHR4SWQCAV8FCWF1Y3Rpb25JZAINX2JpZGRlcl9jb3VudAkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBBQ9jdXJyZW50QmlkQ291bnQAAQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQR0eElkAgFfBQlhdWN0aW9uSWQCB19uZnRfaWQJANgEAQUHYXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQR0eElkAgFfBQlhdWN0aW9uSWQCCl9uZnRfb3duZXIFCW5mdF9vd25lcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCD19iaWRfZm9yX25mdF9ieQkA2AQBBQZjYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAhBfYmlkX3ByaWNlX3BsYWNlBQliaWRfcHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAiZfcHJldmlvdXNfYmlkX2Ftb3VudF9yZWZ1bmRfdG9fYWRkcmVzcwUUZ2V0TGFzdFdpbm5lckFkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAhtfcHJldm9pdXNfYmlkX2Ftb3VudF9yZWZ1bmQFFWdldExhc3RXaW5uZXJCaWRQcmljZQUDbmlsAwkBAiE9AgUVZ2V0TGFzdFdpbm5lckJpZFByaWNlAgEwCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBRRnZXRMYXN0V2lubmVyQWRkcmVzcwkBDXBhcnNlSW50VmFsdWUBBRVnZXRMYXN0V2lubmVyQmlkUHJpY2UFCXRva2VuVHlwZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCJl9wcmV2aW91c19iaWRfYW1vdW50X3JlZnVuZF90b19hZGRyZXNzBRRnZXRMYXN0V2lubmVyQWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCG19wcmV2b2l1c19iaWRfYW1vdW50X3JlZnVuZAUVZ2V0TGFzdFdpbm5lckJpZFByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAg1fYmlkZGVyX2NvdW50CQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEFD2N1cnJlbnRCaWRDb3VudAABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAgxfaGlnaGVzdF9iaWQJAKQDAQUPY3VycmVudEJpZFByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAg5fd2lubmVyX29mX25mdAkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAgdfbmZ0X2lkCQDYBAEFB2Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCCl9uZnRfb3duZXIFCW5mdF9vd25lcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQR0eElkAgFfBQlhdWN0aW9uSWQCDF9oaWdoZXN0X2JpZAkApAMBBQ9jdXJyZW50QmlkUHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUEdHhJZAIBXwUJYXVjdGlvbklkAgdfd2lubmVyCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUEdHhJZAIBXwUJYXVjdGlvbklkAg1fYmlkZGVyX2NvdW50CQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEFD2N1cnJlbnRCaWRDb3VudAABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFBHR4SWQCAV8FCWF1Y3Rpb25JZAIHX25mdF9pZAkA2AQBBQdhc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFBHR4SWQCAV8FCWF1Y3Rpb25JZAIKX25mdF9vd25lcgUJbmZ0X293bmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIPX2JpZF9mb3JfbmZ0X2J5CQDYBAEFBmNhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCEF9iaWRfcHJpY2VfcGxhY2UFCWJpZF9wcmljZQUDbmlsBQNuaWwBaQEOYWNjZXB0QmlkT2ZmZXIGCWF1Y3Rpb25JZAVuZnRJZBRiaWRfYW1vdW50X2Zyb21fdXNlcgdjcmVhdG9yEXJveWFsdHlQZXJjZW50YWdlEGN1cnJlbnRfY3VycmVuY3kEC2FzaW1pU3RyaW5nAiw5eWhKRGZXalBwdjZ0RmpXUkQxQUp5QlF3YXVzSmYyWmR4ekxuODZVa25ucQQEdHhJZAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBAphbW91bnRVbml0CQDZBAEFEGN1cnJlbnRfY3VycmVuY3kEBmNhbGxlcggIBQFpBmNhbGxlcgVieXRlcwQHYXNzZXRJZAkA2QQBBQVuZnRJZAQSZ2V0TmZ0V2lubmluZ1ByaWNlCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFCWF1Y3Rpb25JZAIMX2hpZ2hlc3RfYmlkBBNnZXROZnRXaW5uaW5nYW1vdW50CQBoAgkAaQIJAQ1wYXJzZUludFZhbHVlAQUSZ2V0TmZ0V2lubmluZ1ByaWNlAOgHAM8HBAxwbGF0Zm9ybV9mZWUJAGgCCQBpAgkBDXBhcnNlSW50VmFsdWUBBRJnZXROZnRXaW5uaW5nUHJpY2UA6AcAGQQOcm95YWxpdHlBbW91bnQJAGgCCQBpAgkBDXBhcnNlSW50VmFsdWUBBRJnZXROZnRXaW5uaW5nUHJpY2UAZAkBDXBhcnNlSW50VmFsdWUBBRFyb3lhbHR5UGVyY2VudGFnZQQNYXVjdGlvbmVyQ29zdAkAZQIJAQ1wYXJzZUludFZhbHVlAQUSZ2V0TmZ0V2lubmluZ1ByaWNlCQBkAgUOcm95YWxpdHlBbW91bnQFDHBsYXRmb3JtX2ZlZQQQZ2V0QXVjdGlvbldpbm5lcgkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCDl93aW5uZXJfb2ZfbmZ0AwMJAAACBRBjdXJyZW50X2N1cnJlbmN5BQthc2ltaVN0cmluZwkAAAIJALAJAQUGY2FsbGVyBQdjcmVhdG9yBwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFBmNhbGxlcgUTZ2V0TmZ0V2lubmluZ2Ftb3VudAUKYW1vdW50VW5pdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUQZ2V0QXVjdGlvbldpbm5lcgABBQdhc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIVX2Ftb3VudF9wYWlkX3RvX293bmVyBRJnZXROZnRXaW5uaW5nUHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAhBfbmZ0X3RyYW5zZmVyX3RvBRBnZXRBdWN0aW9uV2lubmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAILX25mdF9zdGF0dXMCCFJFV0FSREVECQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAhVfYW1vdW50X3BhaWRfdG9fb3duZXIFEmdldE5mdFdpbm5pbmdQcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIQX25mdF90cmFuc2Zlcl90bwUQZ2V0QXVjdGlvbldpbm5lcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAILX25mdF9zdGF0dXMCCFJFV0FSREVEBQNuaWwDAwkAAAIFEGN1cnJlbnRfY3VycmVuY3kFC2FzaW1pU3RyaW5nCQECIT0CCQCwCQEFBmNhbGxlcgUHY3JlYXRvcgcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQZjYWxsZXIFE2dldE5mdFdpbm5pbmdhbW91bnQFCmFtb3VudFVuaXQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFEGdldEF1Y3Rpb25XaW5uZXIAAQUHYXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUHY3JlYXRvcgUNYXVjdGlvbmVyQ29zdAUKYW1vdW50VW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCFV9hbW91bnRfcGFpZF90b19vd25lcgUSZ2V0TmZ0V2lubmluZ1ByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIQX25mdF90cmFuc2Zlcl90bwUQZ2V0QXVjdGlvbldpbm5lcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCC19uZnRfc3RhdHVzAghSRVdBUkRFRAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIVX2Ftb3VudF9wYWlkX3RvX293bmVyBRJnZXROZnRXaW5uaW5nUHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCEF9uZnRfdHJhbnNmZXJfdG8FEGdldEF1Y3Rpb25XaW5uZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCC19uZnRfc3RhdHVzAghSRVdBUkRFRAUDbmlsAwMJAAACBRBjdXJyZW50X2N1cnJlbmN5AgVXQVZFUwkAAAIJALAJAQUGY2FsbGVyBQdjcmVhdG9yBwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFBmNhbGxlcgUTZ2V0TmZ0V2lubmluZ2Ftb3VudAUEdW5pdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUQZ2V0QXVjdGlvbldpbm5lcgABBQdhc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIVX2Ftb3VudF9wYWlkX3RvX293bmVyBRJnZXROZnRXaW5uaW5nUHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAhBfbmZ0X3RyYW5zZmVyX3RvBRBnZXRBdWN0aW9uV2lubmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAILX25mdF9zdGF0dXMCCFJFV0FSREVECQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAhVfYW1vdW50X3BhaWRfdG9fb3duZXIFEmdldE5mdFdpbm5pbmdQcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIQX25mdF90cmFuc2Zlcl90bwUQZ2V0QXVjdGlvbldpbm5lcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAILX25mdF9zdGF0dXMCCFJFV0FSREVEBQNuaWwDAwkAAAIFEGN1cnJlbnRfY3VycmVuY3kCBVdBVkVTCQECIT0CCQCwCQEFBmNhbGxlcgUHY3JlYXRvcgcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQZjYWxsZXIFE2dldE5mdFdpbm5pbmdhbW91bnQFBHVuaXQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFEGdldEF1Y3Rpb25XaW5uZXIAAQUHYXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUHY3JlYXRvcgUNYXVjdGlvbmVyQ29zdAUEdW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCFV9hbW91bnRfcGFpZF90b19vd25lcgUSZ2V0TmZ0V2lubmluZ1ByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIQX25mdF90cmFuc2Zlcl90bwUQZ2V0QXVjdGlvbldpbm5lcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCC19uZnRfc3RhdHVzAghSRVdBUkRFRAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIVX2Ftb3VudF9wYWlkX3RvX293bmVyBRJnZXROZnRXaW5uaW5nUHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCEF9uZnRfdHJhbnNmZXJfdG8FEGdldEF1Y3Rpb25XaW5uZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCC19uZnRfc3RhdHVzAghSRVdBUkRFRAUDbmlsBQNuaWwBaQENY2FuY2VsQXVjdGlvbgEJYXVjdGlvbklkBAR0eElkCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQEBmNhbGxlcggIBQFpBmNhbGxlcgVieXRlcwQNYXVjdGlvblN0YXR1cwkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCC19uZnRfc3RhdHVzBA1iaWRkaW5nV2lubmVyCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFCWF1Y3Rpb25JZAIOX3dpbm5lcl9vZl9uZnQECG5mdE93bmVyCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFCWF1Y3Rpb25JZAIKX25mdF9vd25lcgQFbmZ0SWQJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUJYXVjdGlvbklkAg9fbmZ0X29uX2F1Y3Rpb24EDGJpZGRpbmdQcmljZQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCDF9oaWdoZXN0X2JpZAMJAAACBQ1iaWRkaW5nV2lubmVyAgEwCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQR0eElkBQlhdWN0aW9uSWQCC19uZnRfc3RhdHVzAghDQU5DRUxFRAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUIbmZ0T3duZXIAAQkA2QQBBQVuZnRJZAUDbmlsAwkBAiE9AgUNYmlkZGluZ1dpbm5lcgIBMAkAAgECQ3Nvb3J5IHlvdSBjYW4ndCBjYW5jZWwgaXQgYmVjYXVzZSBhbHJlYWR5IGF1Y3Rpb24gcGxhY2VkIGJ5IHNvbWVvbmUFA25pbAFpARJtYW51YWxGdW5kVHJhbnNmZXICDXJlY2VwaWVudEFkZHIHbWVzc2FnZQQGc2VuZGVyCAgFAWkGY2FsbGVyBWJ5dGVzBAdyZWNpdmVyCQDZBAEFDXJlY2VwaWVudEFkZHIEBmFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEDHBsYXRmb3JtX2ZlZQkAaAIJAGkCBQZhbW91bnQA6AcAGQQRcmVjZXBpZW50X3BheW1lbnQJAGUCBQZhbW91bnQFDHBsYXRmb3JtX2ZlZQMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFBHVuaXQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkA2AQBBQZzZW5kZXICCV90cmFuc2ZlcgUGYW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQICDHBsYXRmb3JtX2ZlZQkApAMBBQxwbGF0Zm9ybV9mZWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQDYBAEFBnNlbmRlcgIMX3RyYW5zZmVyX3RvBQ1yZWNlcGllbnRBZGRyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUHcmVjaXZlcgURcmVjZXBpZW50X3BheW1lbnQFBHVuaXQFA25pbAMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFBXRlYW1zCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJANgEAQUGc2VuZGVyAglfdHJhbnNmZXIFBmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgIMcGxhdGZvcm1fZmVlBQxwbGF0Zm9ybV9mZWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQDYBAEFBnNlbmRlcgIMX3RyYW5zZmVyX3RvBQ1yZWNlcGllbnRBZGRyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUHcmVjaXZlcgURcmVjZXBpZW50X3BheW1lbnQFBXRlYW1zBQNuaWwFA25pbAFpAQduZnRiYWNrAQlhdWN0aW9uSWQEBmNhbGxlcggIBQFpBmNhbGxlcgVieXRlcwQFbmZ0SWQJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUJYXVjdGlvbklkAg9fbmZ0X29uX2F1Y3Rpb24ECG5mdE93bmVyCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFCWF1Y3Rpb25JZAIKX25mdF9vd25lcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAILX25mdF9zdGF0dXMCEUF1Y3Rpb25fdGltZSBvdmVyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQhuZnRPd25lcgABCQDZBAEFBW5mdElkBQNuaWwBaQENd2l0aGRyYXdNb25leQIJYXVjdGlvbklkEGN1cnJlbnRfY3VycmVuY3kEBmNhbGxlcggIBQFpBmNhbGxlcgVieXRlcwQLYXNpbWlTdHJpbmcCLDl5aEpEZldqUHB2NnRGaldSRDFBSnlCUXdhdXNKZjJaZHh6TG44NlVrbm5xBAR0eElkCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQECmFtb3VudFVuaXQJANkEAQUQY3VycmVudF9jdXJyZW5jeQQIYmlkUHJpY2UJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUJYXVjdGlvbklkAgxfaGlnaGVzdF9iaWQECGFzQmlkZGVyCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFCWF1Y3Rpb25JZAIHX3dpbm5lcgQJYmlkRm9yTkZUCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFCWF1Y3Rpb25JZAIHX25mdF9pZAMJAAACBRBjdXJyZW50X2N1cnJlbmN5BQthc2ltaVN0cmluZwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIIX25mdF9iaWQCCFdJVEhEUkFXCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAgdfbmZ0X2lkBQliaWRGb3JORlQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCHF9iaWRkaW5nX3ByaWNlX3JlZnVuZF9hbW91bnQFCGJpZFByaWNlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkBDXBhcnNlSW50VmFsdWUBBQhiaWRQcmljZQUKYW1vdW50VW5pdAUDbmlsAwkAAAIFEGN1cnJlbnRfY3VycmVuY3kCBVdBVkVTCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAghfbmZ0X2JpZAIIV0lUSERSQVcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCB19uZnRfaWQFCWJpZEZvck5GVAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIcX2JpZGRpbmdfcHJpY2VfcmVmdW5kX2Ftb3VudAUIYmlkUHJpY2UJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQENcGFyc2VJbnRWYWx1ZQEFCGJpZFByaWNlBQR1bml0BQNuaWwFA25pbAFpARRidXlBbGxQcm9kdWN0c19hc2ltaQEHbmZ0SW5mbwQFYnV5ZXIIBQFpBmNhbGxlcgQMYnV5ZXJCYWxhbmNlCQDwBwIFBWJ1eWVyASCFY5Wj84iOsN4MF44ITr+aP5K7Jts66HaOFtwUIipIfgQEbmZUMQkAtQkCCQCRAwIFB25mdEluZm8AAAIBXwQEbmZUMgkAtQkCCQCRAwIFB25mdEluZm8AAQIBXwQEbmZUMwkAtQkCCQCRAwIFB25mdEluZm8AAgIBXwQEbmZUNAkAtQkCCQCRAwIFB25mdEluZm8AAwIBXwQEbmZUNQkAtQkCCQCRAwIFB25mdEluZm8ABAIBXwQGYW1vdW50CQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQIcmVhbGNvc3QJAGUCBQZhbW91bnQJAGgCCQBpAgUGYW1vdW50AOgHABkEC3BsYXRmb3JtZmVlCQBlAgUGYW1vdW50BQhyZWFsY29zdAQOcm95YWxpdHlBbW91bnQJAGgCCQBpAgUGYW1vdW50AGQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRuZlQxAAMECGxhc3RDb3N0CQBlAgUGYW1vdW50CQBkAgUOcm95YWxpdHlBbW91bnQFC3BsYXRmb3JtZmVlBAdhbW91bnQxCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwABBmFtb3VudAQJcmVhbGNvc3QxCQBlAgUHYW1vdW50MQkAaAIJAGkCBQdhbW91bnQxAOgHABkEDHBsYXRmb3JtZmVlMQkAZQIFBmFtb3VudAUJcmVhbGNvc3QxBA9yb3lhbGl0eUFtb3VudDEJAGgCCQBpAgUGYW1vdW50AGQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRuZlQyAAMECWxhc3RDb3N0MQkAZQIFBmFtb3VudAkAZAIFDnJveWFsaXR5QW1vdW50BQtwbGF0Zm9ybWZlZQQHYW1vdW50MgkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAgZhbW91bnQECXJlYWxjb3N0MgkAZQIFB2Ftb3VudDIJAGgCCQBpAgUHYW1vdW50MgDoBwAZBAxwbGF0Zm9ybWZlZTIJAGUCBQZhbW91bnQFCXJlYWxjb3N0MgQPcm95YWxpdHlBbW91bnQyCQBoAgkAaQIFBmFtb3VudABkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbmZUMwADBAlsYXN0Q29zdDIJAGUCBQZhbW91bnQJAGQCBQ5yb3lhbGl0eUFtb3VudAULcGxhdGZvcm1mZWUEB2Ftb3VudDMJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAMGYW1vdW50BAlyZWFsY29zdDMJAGUCBQdhbW91bnQzCQBoAgkAaQIFB2Ftb3VudDMA6AcAGQQMcGxhdGZvcm1mZWUzCQBlAgUGYW1vdW50BQlyZWFsY29zdDMED3JveWFsaXR5QW1vdW50MwkAaAIJAGkCBQZhbW91bnQAZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBG5mVDQAAwQJbGFzdENvc3QzCQBlAgUGYW1vdW50CQBkAgUOcm95YWxpdHlBbW91bnQFC3BsYXRmb3JtZmVlBAdhbW91bnQ0CQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAEBmFtb3VudAQJcmVhbGNvc3Q0CQBlAgUHYW1vdW50NAkAaAIJAGkCBQdhbW91bnQ0AOgHABkEDHBsYXRmb3JtZmVlNAkAZQIFBmFtb3VudAUJcmVhbGNvc3Q0BA9yb3lhbGl0eUFtb3VudDQJAGgCCQBpAgUGYW1vdW50AGQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRuZlQ1AAMECWxhc3RDb3N0NAkAZQIFBmFtb3VudAkAZAIFDnJveWFsaXR5QW1vdW50BQtwbGF0Zm9ybWZlZQMJAGYCBQZhbW91bnQFDGJ1eWVyQmFsYW5jZQkAAgECOkJ1eWVyIGRvZXMgbm90IGhhdmUgZW5vdWdoIGZ1bmRzIHRvIGNvbXBsZXRlIHRoZSBwdXJjaGFzZS4DAwkAAAIJAJADAQUHbmZ0SW5mbwABCQAAAgkAkQMCBQRuZlQxAAEJAJEDAgUEbmZUMQAEBwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgIPZmlyc3RfbmZ0X0luZm89AgVuZnRJZAkAkQMCBQRuZlQxAAAJAKwCAgIFYnV5ZXIJAKUIAQUFYnV5ZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgICD2ZpcnN0X25mdF9JbmZvPQIOc2VsbGVyX2FkZHJlc3MJAJEDAgUEbmZUMQABCQCsAgICBXByaWNlCQCRAwIFBG5mVDEAAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQVidXllcgABCQDZBAEJAJEDAgUEbmZUMQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBCQCRAwIFBG5mVDEAAQUIcmVhbGNvc3QBIIVjlaPziI6w3gwXjghOv5o/krsm2zrodo4W3BQiKkh+BQNuaWwDAwkAAAIJAJADAQUHbmZ0SW5mbwABCQECIT0CCQCRAwIFBG5mVDEAAQkAkQMCBQRuZlQxAAQHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICAg9maXJzdF9uZnRfSW5mbz0CBW5mdElkCQCRAwIFBG5mVDEAAAkArAICAgVidXllcgkApQgBBQVidXllcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgIPZmlyc3RfbmZ0X0luZm89Ag5zZWxsZXJfYWRkcmVzcwkAkQMCBQRuZlQxAAEJAKwCAgIFcHJpY2UJAJEDAgUEbmZUMQACCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBWJ1eWVyAAEJANkEAQkAkQMCBQRuZlQxAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEJAJEDAgUEbmZUMQABBQhsYXN0Q29zdAEghWOVo/OIjrDeDBeOCE6/mj+SuybbOuh2jhbcFCIqSH4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEJAJEDAgUEbmZUMQAEBQ5yb3lhbGl0eUFtb3VudAEghWOVo/OIjrDeDBeOCE6/mj+SuybbOuh2jhbcFCIqSH4FA25pbAMJAAACCQCQAwEFB25mdEluZm8AAgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg9maXJzdF9uZnRfSW5mbz0CBW5mdElkCQCRAwIFBG5mVDEAAAIOc2VsbGVyX2FkZHJlc3MJAJEDAgUEbmZUMQABAgVwcmljZQkAkQMCBQRuZlQxAAIJAKwCAgIFYnV5ZXIJAKUIAQUFYnV5ZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIQc2Vjb25kX25mdF9JbmZvPQIFbmZ0SWQJAJEDAgUEbmZUMgAAAg5zZWxsZXJfYWRkcmVzcwkAkQMCBQRuZlQyAAECBXByaWNlCQCRAwIFBG5mVDIAAgkArAICAgVidXllcgkApQgBBQVidXllcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQVidXllcgABCQDZBAEJAJEDAgUEbmZUMQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBWJ1eWVyAAEJANkEAQkAkQMCBQRuZlQyAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEJAJEDAgUEbmZUMQABBQhsYXN0Q29zdAEghWOVo/OIjrDeDBeOCE6/mj+SuybbOuh2jhbcFCIqSH4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEJAJEDAgUEbmZUMQAEBQ5yb3lhbGl0eUFtb3VudAEghWOVo/OIjrDeDBeOCE6/mj+SuybbOuh2jhbcFCIqSH4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEJAJEDAgUEbmZUMgABBQlsYXN0Q29zdDEBIIVjlaPziI6w3gwXjghOv5o/krsm2zrodo4W3BQiKkh+CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBCQCRAwIFBG5mVDIABAUPcm95YWxpdHlBbW91bnQxASCFY5Wj84iOsN4MF44ITr+aP5K7Jts66HaOFtwUIipIfgUDbmlsAwkAAAIJAJADAQUHbmZ0SW5mbwADCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICD2ZpcnN0X25mdF9JbmZvPQIFbmZ0SWQJAJEDAgUEbmZUMQAAAg5zZWxsZXJfYWRkcmVzcwkAkQMCBQRuZlQxAAECBXByaWNlCQCRAwIFBG5mVDEAAgkArAICAgVidXllcgkApQgBBQVidXllcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhBzZWNvbmRfbmZ0X0luZm89AgVuZnRJZAkAkQMCBQRuZlQyAAACDnNlbGxlcl9hZGRyZXNzCQCRAwIFBG5mVDIAAQIFcHJpY2UJAJEDAgUEbmZUMgACCQCsAgICBWJ1eWVyCQClCAEFBWJ1eWVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICD3RoaXJkX25mdF9JbmZvPQIFbmZ0SWQJAJEDAgUEbmZUMwAAAg5zZWxsZXJfYWRkcmVzcwkAkQMCBQRuZlQzAAECBXByaWNlCQCRAwIFBG5mVDMAAgkArAICAgVidXllcgkApQgBBQVidXllcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQVidXllcgABCQDZBAEJAJEDAgUEbmZUMQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBWJ1eWVyAAEJANkEAQkAkQMCBQRuZlQyAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUFYnV5ZXIAAQkA2QQBCQCRAwIFBG5mVDMAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQkAkQMCBQRuZlQxAAEFCGxhc3RDb3N0ASCFY5Wj84iOsN4MF44ITr+aP5K7Jts66HaOFtwUIipIfgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQkAkQMCBQRuZlQxAAQFDnJveWFsaXR5QW1vdW50ASCFY5Wj84iOsN4MF44ITr+aP5K7Jts66HaOFtwUIipIfgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQkAkQMCBQRuZlQyAAEFCWxhc3RDb3N0MQEghWOVo/OIjrDeDBeOCE6/mj+SuybbOuh2jhbcFCIqSH4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEJAJEDAgUEbmZUMgAEBQ9yb3lhbGl0eUFtb3VudDEBIIVjlaPziI6w3gwXjghOv5o/krsm2zrodo4W3BQiKkh+CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBCQCRAwIFBG5mVDMAAQUJbGFzdENvc3QyASCFY5Wj84iOsN4MF44ITr+aP5K7Jts66HaOFtwUIipIfgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQkAkQMCBQRuZlQzAAQFD3JveWFsaXR5QW1vdW50MgEghWOVo/OIjrDeDBeOCE6/mj+SuybbOuh2jhbcFCIqSH4FA25pbAMJAAACCQCQAwEFB25mdEluZm8ABAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg9maXJzdF9uZnRfSW5mbz0CBW5mdElkCQCRAwIFBG5mVDEAAAIOc2VsbGVyX2FkZHJlc3MJAJEDAgUEbmZUMQABAgVwcmljZQkAkQMCBQRuZlQxAAIJAKwCAgIFYnV5ZXIJAKUIAQUFYnV5ZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIQc2Vjb25kX25mdF9JbmZvPQIFbmZ0SWQJAJEDAgUEbmZUMgAAAg5zZWxsZXJfYWRkcmVzcwkAkQMCBQRuZlQyAAECBXByaWNlCQCRAwIFBG5mVDIAAgkArAICAgVidXllcgkApQgBBQVidXllcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg90aGlyZF9uZnRfSW5mbz0CBW5mdElkCQCRAwIFBG5mVDMAAAIOc2VsbGVyX2FkZHJlc3MJAJEDAgUEbmZUMwABAgVwcmljZQkAkQMCBQRuZlQzAAIJAKwCAgIFYnV5ZXIJAKUIAQUFYnV5ZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIQZm91cnRoX25mdF9JbmZvPQIFbmZ0SWQJAJEDAgUEbmZUNAAAAg5zZWxsZXJfYWRkcmVzcwkAkQMCBQRuZlQ0AAECBXByaWNlCQCRAwIFBG5mVDQAAgkArAICAgVidXllcgkApQgBBQVidXllcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQVidXllcgABCQDZBAEJAJEDAgUEbmZUMQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBWJ1eWVyAAEJANkEAQkAkQMCBQRuZlQyAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUFYnV5ZXIAAQkA2QQBCQCRAwIFBG5mVDMAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQVidXllcgABCQDZBAEJAJEDAgUEbmZUNAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBCQCRAwIFBG5mVDEAAQUIcmVhbGNvc3QBIIVjlaPziI6w3gwXjghOv5o/krsm2zrodo4W3BQiKkh+CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBCQCRAwIFBG5mVDEABAUOcm95YWxpdHlBbW91bnQBIIVjlaPziI6w3gwXjghOv5o/krsm2zrodo4W3BQiKkh+CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBCQCRAwIFBG5mVDIAAQUJcmVhbGNvc3QxASCFY5Wj84iOsN4MF44ITr+aP5K7Jts66HaOFtwUIipIfgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQkAkQMCBQRuZlQyAAQFD3JveWFsaXR5QW1vdW50MQEghWOVo/OIjrDeDBeOCE6/mj+SuybbOuh2jhbcFCIqSH4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEJAJEDAgUEbmZUMwABBQlyZWFsY29zdDIBIIVjlaPziI6w3gwXjghOv5o/krsm2zrodo4W3BQiKkh+CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBCQCRAwIFBG5mVDMABAUPcm95YWxpdHlBbW91bnQyASCFY5Wj84iOsN4MF44ITr+aP5K7Jts66HaOFtwUIipIfgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQkAkQMCBQRuZlQ0AAEFCXJlYWxjb3N0MwEghWOVo/OIjrDeDBeOCE6/mj+SuybbOuh2jhbcFCIqSH4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEJAJEDAgUEbmZUNAAEBQ9yb3lhbGl0eUFtb3VudDMBIIVjlaPziI6w3gwXjghOv5o/krsm2zrodo4W3BQiKkh+BQNuaWwDCQAAAgkAkAMBBQduZnRJbmZvAAUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIPZmlyc3RfbmZ0X0luZm89AgVuZnRJZAkAkQMCBQRuZlQxAAACDnNlbGxlcl9hZGRyZXNzCQCRAwIFBG5mVDEAAQIFcHJpY2UJAJEDAgUEbmZUMQACCQCsAgICBWJ1eWVyCQClCAEFBWJ1eWVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEHNlY29uZF9uZnRfSW5mbz0CBW5mdElkCQCRAwIFBG5mVDIAAAIOc2VsbGVyX2FkZHJlc3MJAJEDAgUEbmZUMgABAgVwcmljZQkAkQMCBQRuZlQyAAIJAKwCAgIFYnV5ZXIJAKUIAQUFYnV5ZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIPdGhpcmRfbmZ0X0luZm89AgVuZnRJZAkAkQMCBQRuZlQzAAACDnNlbGxlcl9hZGRyZXNzCQCRAwIFBG5mVDMAAQIFcHJpY2UJAJEDAgUEbmZUMwACCQCsAgICBWJ1eWVyCQClCAEFBWJ1eWVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEGZvdXJ0aF9uZnRfSW5mbz0CBW5mdElkCQCRAwIFBG5mVDQAAAIOc2VsbGVyX2FkZHJlc3MJAJEDAgUEbmZUNAABAgVwcmljZQkAkQMCBQRuZlQ0AAIJAKwCAgIFYnV5ZXIJAKUIAQUFYnV5ZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIPZmlmdGhfbmZ0X0luZm89AgVuZnRJZAkAkQMCBQRuZlQ1AAACDnNlbGxlcl9hZGRyZXNzCQCRAwIFBG5mVDUAAQIFcHJpY2UJAJEDAgUEbmZUNQACCQCsAgICBWJ1eWVyCQClCAEFBWJ1eWVyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBWJ1eWVyAAEJANkEAQkAkQMCBQRuZlQxAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUFYnV5ZXIAAQkA2QQBCQCRAwIFBG5mVDIAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQVidXllcgABCQDZBAEJAJEDAgUEbmZUMwAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBWJ1eWVyAAEJANkEAQkAkQMCBQRuZlQ0AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUFYnV5ZXIAAQkA2QQBCQCRAwIFBG5mVDUAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQkAkQMCBQRuZlQxAAEFCHJlYWxjb3N0ASCFY5Wj84iOsN4MF44ITr+aP5K7Jts66HaOFtwUIipIfgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQkAkQMCBQRuZlQxAAQFDnJveWFsaXR5QW1vdW50ASCFY5Wj84iOsN4MF44ITr+aP5K7Jts66HaOFtwUIipIfgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQkAkQMCBQRuZlQyAAEFCXJlYWxjb3N0MQEghWOVo/OIjrDeDBeOCE6/mj+SuybbOuh2jhbcFCIqSH4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEJAJEDAgUEbmZUMgAEBQ9yb3lhbGl0eUFtb3VudDEBIIVjlaPziI6w3gwXjghOv5o/krsm2zrodo4W3BQiKkh+CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBCQCRAwIFBG5mVDMAAQUJcmVhbGNvc3QyASCFY5Wj84iOsN4MF44ITr+aP5K7Jts66HaOFtwUIipIfgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQkAkQMCBQRuZlQzAAQFD3JveWFsaXR5QW1vdW50MgEghWOVo/OIjrDeDBeOCE6/mj+SuybbOuh2jhbcFCIqSH4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEJAJEDAgUEbmZUNAABBQlyZWFsY29zdDMBIIVjlaPziI6w3gwXjghOv5o/krsm2zrodo4W3BQiKkh+CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBCQCRAwIFBG5mVDQABAUPcm95YWxpdHlBbW91bnQzASCFY5Wj84iOsN4MF44ITr+aP5K7Jts66HaOFtwUIipIfgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQkAkQMCBQRuZlQ1AAEFCXJlYWxjb3N0NAEghWOVo/OIjrDeDBeOCE6/mj+SuybbOuh2jhbcFCIqSH4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEJAJEDAgUEbmZUNQAEBQ9yb3lhbGl0eUFtb3VudDQBIIVjlaPziI6w3gwXjghOv5o/krsm2zrodo4W3BQiKkh+BQNuaWwDCQBmAgkAkAMBBQduZnRJbmZvAAUJAAIBAi1zb3JyeSEgbWF4aW11bSBsaW1pdCBvZiB5b3VyICBjYXJ0IGlzIDUgaXRlbXMFA25pbAAhdK9i", "height": 2541033, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AwcWvyrtUTPruQdRCMJpa25Gb462FWkSKTcxqdABZDSV Next: FaSJwbWyTDDRYmswtqyTaUDbQKiF9DCYZT8oL1Nh7rMF Diff:
OldNewDifferences
3939
4040
4141 @Callable(p)
42-func createNft (q,r,s,t,u,v,w,x,y) = {
43- let z = Issue(q, w, 1, 0, false)
44- let A = calculateAssetId(z)
45- let B = p.transactionId
46-[z, ScriptTransfer(p.caller, 1, A), StringEntry(((toBase58String(A) + a) + "Owner"), toString(p.caller)), StringEntry(((toBase58String(A) + a) + "nft_type"), t), StringEntry(((toBase58String(A) + a) + "nft_tags"), u), StringEntry(((toBase58String(A) + a) + "nft_dAppAddress"), s), IntegerEntry(((toBase58String(A) + a) + "nft_selling_price"), v), StringEntry(((toBase58String(A) + a) + "nft_onSell"), x), StringEntry(((toBase58String(A) + a) + "nft_data"), y), StringEntry(((toBase58String(B) + a) + "issue_nft"), toBase58String(A))]
42+func createNft (q,r,s,t,u,v,w,x,y,z) = {
43+ let A = Issue(q, x, 1, 0, false)
44+ let B = calculateAssetId(A)
45+ let C = p.transactionId
46+[A, ScriptTransfer(p.caller, 1, B), StringEntry(((toBase58String(B) + a) + "Owner"), toString(p.caller)), StringEntry(((toBase58String(B) + a) + "nft_type"), t), StringEntry(((toBase58String(B) + a) + "nft_tags"), u), StringEntry(((toBase58String(B) + a) + "nft_dAppAddress"), s), StringEntry(((toBase58String(C) + a) + "royaltyPercentage"), w), IntegerEntry(((toBase58String(B) + a) + "nft_selling_price"), v), StringEntry(((toBase58String(B) + a) + "nft_onSell"), y), StringEntry(((toBase58String(B) + a) + "nft_data"), z), StringEntry(((toBase58String(C) + a) + "issue_nft"), toBase58String(B))]
4747 }
4848
4949
5050
5151 @Callable(p)
52-func sellNFT (C,D) = {
53- let B = p.transactionId
54- let E = p.caller.bytes
55- let F = $Tuple2(value(p.payments[0].assetId), value(p.payments[0].amount))
56- let G = F._1
57- let H = F._2
58- if (!(l(G)))
52+func sellNFT (D,E) = {
53+ let C = p.transactionId
54+ let F = p.caller.bytes
55+ let G = $Tuple2(value(p.payments[0].assetId), value(p.payments[0].amount))
56+ let H = G._1
57+ let I = G._2
58+ if (!(l(H)))
5959 then throw("Token is not NFT")
60- else [StringEntry(((c + a) + toBase58String(value(p.payments[0].assetId))), C), StringEntry(((toString(p.caller) + a) + d), (((toBase58String(G) + a) + toString(H)) + D))]
60+ else [StringEntry(((c + a) + toBase58String(value(p.payments[0].assetId))), D), StringEntry(((toString(p.caller) + a) + d), (((toBase58String(H) + a) + toString(I)) + E))]
6161 }
6262
6363
6464
6565 @Callable(p)
66-func buyNFT (I,J) = {
67- let m = fromBase58String(I)
68- let K = {
69- let n = getString(this, (("nft_" + J) + "_owner"))
66+func buyNFT (J,K,L,w) = {
67+ let m = fromBase58String(J)
68+ let M = {
69+ let n = getString(this, (("nft_" + K) + "_owner"))
7070 if ($isInstanceOf(n, "String"))
7171 then {
72- let L = n
73- L
72+ let N = n
73+ N
7474 }
7575 else false
7676 }
77- let C = getStringValue(((((c + a) + I) + "_") + J))
78- let M = value(p.payments[0].amount)
79- let N = (M - ((M / 1000) * 25))
80- let O = (M - N)
81- if ((J == toString(p.caller)))
77+ let D = getStringValue(((((c + a) + J) + "_") + K))
78+ let O = value(p.payments[0].amount)
79+ let P = (O - ((O / 1000) * 25))
80+ let Q = (O - P)
81+ let R = ((O / 100) * parseIntValue(w))
82+ let S = (O - (R + Q))
83+ if ((K == toString(p.caller)))
8284 then throw("current Owner of NFT not able to purchase")
83- else if ((p.payments[0].assetId == f))
84- then [ScriptTransfer(p.caller, 1, m), ScriptTransfer(Address(fromBase58String(J)), N, f), StringEntry((("nft_" + I) + "platform_fee"), toString(O)), StringEntry(((toString(p.caller) + a) + b), ((I + a) + toString(M))), DeleteEntry((("nft_" + J) + "_owner")), StringEntry((("nft_" + J) + "_owner"), toString(p.caller)), StringEntry(((I + a) + "_owner"), toString(p.caller))]
85- else if ((p.payments[0].assetId == unit))
86- then [ScriptTransfer(p.caller, 1, m), ScriptTransfer(Address(fromBase58String(J)), N, unit), StringEntry((("nft_" + I) + "platform_fee"), toString(O)), StringEntry(((toString(p.caller) + a) + b), ((I + a) + toString(M))), DeleteEntry((("nft_" + J) + "_owner")), StringEntry((("nft_" + J) + "_owner"), toString(p.caller)), StringEntry(((I + a) + "_owner"), toString(p.caller))]
87- else nil
85+ else if (if ((p.payments[0].assetId == f))
86+ then (L != K)
87+ else false)
88+ then [ScriptTransfer(p.caller, 1, m), ScriptTransfer(Address(fromBase58String(K)), S, f), ScriptTransfer(Address(fromBase58String(L)), R, f), IntegerEntry((("nft_" + J) + "platform_fee"), Q), StringEntry(((toString(p.caller) + a) + b), ((J + a) + toString(O))), DeleteEntry((("nft_" + K) + "_owner")), StringEntry((("nft_" + K) + "_owner"), toString(p.caller)), StringEntry(((J + a) + "_owner"), toString(p.caller))]
89+ else if (if ((p.payments[0].assetId == f))
90+ then (L == K)
91+ else false)
92+ then [ScriptTransfer(p.caller, 1, m), ScriptTransfer(Address(fromBase58String(K)), P, f), StringEntry((("nft_" + J) + "platform_fee"), toString(Q)), StringEntry(((toString(p.caller) + a) + b), ((J + a) + toString(O))), DeleteEntry((("nft_" + K) + "_owner")), StringEntry((("nft_" + K) + "_owner"), toString(p.caller)), StringEntry(((J + a) + "_owner"), toString(p.caller))]
93+ else if (if ((p.payments[0].assetId == unit))
94+ then (L != K)
95+ else false)
96+ then [ScriptTransfer(p.caller, 1, m), ScriptTransfer(Address(fromBase58String(K)), S, unit), ScriptTransfer(Address(fromBase58String(L)), R, unit), StringEntry((("nft_" + J) + "platform_fee"), toString(Q)), StringEntry(((toString(p.caller) + a) + b), ((J + a) + toString(O))), DeleteEntry((("nft_" + K) + "_owner")), StringEntry((("nft_" + K) + "_owner"), toString(p.caller)), StringEntry(((J + a) + "_owner"), toString(p.caller))]
97+ else if (if ((p.payments[0].assetId == unit))
98+ then (L == K)
99+ else false)
100+ then [ScriptTransfer(p.caller, 1, m), ScriptTransfer(Address(fromBase58String(K)), P, unit), StringEntry((("nft_" + J) + "platform_fee"), toString(Q)), StringEntry(((toString(p.caller) + a) + b), ((J + a) + toString(O))), DeleteEntry((("nft_" + K) + "_owner")), StringEntry((("nft_" + K) + "_owner"), toString(p.caller)), StringEntry(((J + a) + "_owner"), toString(p.caller))]
101+ else nil
88102 }
89103
90104
91105
92106 @Callable(p)
93-func cancelSell (P) = {
94- let B = toBase58String(p.transactionId)
95- let E = p.caller.bytes
96-[StringEntry(((B + P) + "_nft_status"), "CANCELED"), ScriptTransfer(Address(E), 1, fromBase58String(P))]
107+func cancelSell (T) = {
108+ let C = toBase58String(p.transactionId)
109+ let F = p.caller.bytes
110+[StringEntry(((C + T) + "_nft_status"), "CANCELED"), ScriptTransfer(Address(F), 1, fromBase58String(T))]
97111 }
98112
99113
100114
101115 @Callable(p)
102-func addAuction (Q,R,S,T,D) = {
103- let B = toBase58String(p.transactionId)
104- let P = value(p.payments[0].assetId)
105- let C = value(S)
106- let U = (lastBlock.height + T)
107- let V = p.caller.bytes
108- let W = {
109- let n = getString(this, (((toBase58String(P) + a) + "nft_status_") + toBase58String(V)))
116+func addAuction (U,V,W,X,E) = {
117+ let C = toBase58String(p.transactionId)
118+ let T = value(p.payments[0].assetId)
119+ let D = value(W)
120+ let Y = (lastBlock.height + X)
121+ let Z = p.caller.bytes
122+ let aa = {
123+ let n = getString(this, (((toBase58String(T) + a) + "nft_status_") + toBase58String(Z)))
110124 if ($isInstanceOf(n, "String"))
111125 then {
112- let L = n
126+ let N = n
113127 true
114128 }
115129 else false
116130 }
117- if ((W == true))
131+ if ((aa == true))
118132 then throw("Already in auction list")
119- else if ((T > e))
133+ else if ((X > e))
120134 then throw(("Duration is too long. Must be less than or equal to 30 " + toString(e)))
121135 else if ((p.payments[0].assetId == unit))
122136 then throw("NFT not attached")
123137 else if ((p.payments[0].assetId == f))
124138 then throw("NFT not attached")
125- else [StringEntry(((B + "nft_start_auction_date") + toBase58String(V)), Q), StringEntry(((B + "nft_end_auction_date") + toBase58String(V)), R), StringEntry((B + "_nft_start_price"), S), StringEntry((B + "_nft_owner"), toString(p.caller)), StringEntry((B + "_nft_on_auction"), toBase58String(P)), StringEntry((B + "_previous_bidder"), "none"), StringEntry((B + "_highest_bid"), "0"), StringEntry((B + "_winner_of_nft"), "0"), StringEntry((B + "_bidder_count"), "0"), StringEntry((B + "_nft_status"), "OPEN")]
139+ else [StringEntry(((C + "nft_start_auction_date") + toBase58String(Z)), U), StringEntry(((C + "nft_end_auction_date") + toBase58String(Z)), V), StringEntry((C + "_nft_start_price"), W), StringEntry((C + "_nft_owner"), toString(p.caller)), StringEntry((C + "_nft_on_auction"), toBase58String(T)), StringEntry((C + "_previous_bidder"), "none"), StringEntry((C + "_highest_bid"), "0"), StringEntry((C + "_winner_of_nft"), "0"), StringEntry((C + "_bidder_count"), "0"), StringEntry((C + "_nft_status"), "OPEN")]
126140 }
127141
128142
129143
130144 @Callable(p)
131-func placeBid (X,P,r,Y,Z) = {
132- let B = toBase58String(p.transactionId)
133- let V = p.caller.bytes
134- let m = fromBase58String(P)
135- let aa = p.payments[0].assetId
136- let ab = p.payments[0].amount
137- let ac = getStringValue(this, (X + "_highest_bid"))
138- let ad = getString(this, (X + "_previous_bidder"))
139- let ae = getStringValue(this, (X + "_bidder_count"))
140- let af = getStringValue(this, (X + "_winner_of_nft"))
141- let W = getStringValue(this, (X + "_nft_status"))
142- if ((W != "OPEN"))
145+func placeBid (ab,T,r,ac,ad) = {
146+ let C = toBase58String(p.transactionId)
147+ let Z = p.caller.bytes
148+ let m = fromBase58String(T)
149+ let ae = p.payments[0].assetId
150+ let af = p.payments[0].amount
151+ let ag = getStringValue(this, (ab + "_highest_bid"))
152+ let ah = getString(this, (ab + "_previous_bidder"))
153+ let ai = getStringValue(this, (ab + "_bidder_count"))
154+ let aj = getStringValue(this, (ab + "_winner_of_nft"))
155+ let aa = getStringValue(this, (ab + "_nft_status"))
156+ if ((aa != "OPEN"))
143157 then throw("Not open for auction")
144- else if ((parseIntValue(ac) >= ab))
158+ else if ((parseIntValue(ag) >= af))
145159 then throw("Bid is less then starting/highest Bid")
146- else if ((ac == "0"))
147- then [StringEntry((X + "_highest_bid"), toString(ab)), StringEntry((X + "_winner_of_nft"), toBase58String(p.caller.bytes)), StringEntry((X + "_bidder_count"), toString((parseIntValue(ae) + 1))), StringEntry((X + "_nft_id"), toBase58String(m)), StringEntry((X + "_nft_owner"), r), StringEntry((((B + "_") + X) + "_highest_bid"), toString(ab)), StringEntry((((B + "_") + X) + "_winner"), toBase58String(p.caller.bytes)), StringEntry((((B + "_") + X) + "_bidder_count"), toString((parseIntValue(ae) + 1))), StringEntry((((B + "_") + X) + "_nft_id"), toBase58String(m)), StringEntry((((B + "_") + X) + "_nft_owner"), r), StringEntry((B + "_bid_for_nft_by"), toBase58String(V)), StringEntry((B + "_bid_price_place"), Y), StringEntry((B + "_previous_bid_amount_refund_to_address"), af), StringEntry((B + "_prevoius_bid_amount_refund"), ac)]
148- else if ((ac != "0"))
149- then [ScriptTransfer(Address(fromBase58String(af)), parseIntValue(ac), aa), StringEntry((B + "_previous_bid_amount_refund_to_address"), af), StringEntry((B + "_prevoius_bid_amount_refund"), ac), StringEntry((X + "_bidder_count"), toString((parseIntValue(ae) + 1))), StringEntry((X + "_highest_bid"), toString(ab)), StringEntry((X + "_winner_of_nft"), toBase58String(p.caller.bytes)), StringEntry((X + "_nft_id"), toBase58String(m)), StringEntry((X + "_nft_owner"), r), StringEntry((((B + "_") + X) + "_highest_bid"), toString(ab)), StringEntry((((B + "_") + X) + "_winner"), toBase58String(p.caller.bytes)), StringEntry((((B + "_") + X) + "_bidder_count"), toString((parseIntValue(ae) + 1))), StringEntry((((B + "_") + X) + "_nft_id"), toBase58String(m)), StringEntry((((B + "_") + X) + "_nft_owner"), r), StringEntry((B + "_bid_for_nft_by"), toBase58String(V)), StringEntry((B + "_bid_price_place"), Y)]
160+ else if ((ag == "0"))
161+ then [StringEntry((ab + "_highest_bid"), toString(af)), StringEntry((ab + "_winner_of_nft"), toBase58String(p.caller.bytes)), StringEntry((ab + "_bidder_count"), toString((parseIntValue(ai) + 1))), StringEntry((ab + "_nft_id"), toBase58String(m)), StringEntry((ab + "_nft_owner"), r), StringEntry((((C + "_") + ab) + "_highest_bid"), toString(af)), StringEntry((((C + "_") + ab) + "_winner"), toBase58String(p.caller.bytes)), StringEntry((((C + "_") + ab) + "_bidder_count"), toString((parseIntValue(ai) + 1))), StringEntry((((C + "_") + ab) + "_nft_id"), toBase58String(m)), StringEntry((((C + "_") + ab) + "_nft_owner"), r), StringEntry((C + "_bid_for_nft_by"), toBase58String(Z)), StringEntry((C + "_bid_price_place"), ac), StringEntry((C + "_previous_bid_amount_refund_to_address"), aj), StringEntry((C + "_prevoius_bid_amount_refund"), ag)]
162+ else if ((ag != "0"))
163+ then [ScriptTransfer(Address(fromBase58String(aj)), parseIntValue(ag), ae), StringEntry((C + "_previous_bid_amount_refund_to_address"), aj), StringEntry((C + "_prevoius_bid_amount_refund"), ag), StringEntry((ab + "_bidder_count"), toString((parseIntValue(ai) + 1))), StringEntry((ab + "_highest_bid"), toString(af)), StringEntry((ab + "_winner_of_nft"), toBase58String(p.caller.bytes)), StringEntry((ab + "_nft_id"), toBase58String(m)), StringEntry((ab + "_nft_owner"), r), StringEntry((((C + "_") + ab) + "_highest_bid"), toString(af)), StringEntry((((C + "_") + ab) + "_winner"), toBase58String(p.caller.bytes)), StringEntry((((C + "_") + ab) + "_bidder_count"), toString((parseIntValue(ai) + 1))), StringEntry((((C + "_") + ab) + "_nft_id"), toBase58String(m)), StringEntry((((C + "_") + ab) + "_nft_owner"), r), StringEntry((C + "_bid_for_nft_by"), toBase58String(Z)), StringEntry((C + "_bid_price_place"), ac)]
150164 else nil
151165 }
152166
153167
154168
155169 @Callable(p)
156-func acceptBidOffer (X,P,ag,Z) = {
157- let ah = "9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq"
158- let B = toBase58String(p.transactionId)
159- let ai = fromBase58String(Z)
160- let V = p.caller.bytes
161- let m = fromBase58String(P)
162- let aj = getStringValue(this, (X + "_highest_bid"))
163- let ak = ((parseIntValue(aj) / 1000) * 975)
164- let O = ((parseIntValue(aj) / 1000) * 25)
165- let al = getStringValue(this, (X + "_winner_of_nft"))
166- if ((Z == ah))
167- then [ScriptTransfer(Address(V), ak, ai), ScriptTransfer(Address(fromBase58String(al)), 1, m), StringEntry((B + "_amount_paid_to_owner"), aj), StringEntry((B + "_nft_transfer_to"), al), StringEntry((B + "_nft_status"), "REWARDED"), StringEntry((X + "_amount_paid_to_owner"), aj), StringEntry((X + "_nft_transfer_to"), al), StringEntry((X + "_nft_status"), "REWARDED")]
168- else if ((Z == "WAVES"))
169- then [ScriptTransfer(Address(V), ak, unit), ScriptTransfer(Address(fromBase58String(al)), 1, m), StringEntry((B + "_amount_paid_to_owner"), aj), StringEntry((B + "_nft_transfer_to"), al), StringEntry((B + "_nft_status"), "REWARDED"), StringEntry((X + "_amount_paid_to_owner"), aj), StringEntry((X + "_nft_transfer_to"), al), StringEntry((X + "_nft_status"), "REWARDED")]
170- else nil
170+func acceptBidOffer (ab,T,ak,L,w,ad) = {
171+ let al = "9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq"
172+ let C = toBase58String(p.transactionId)
173+ let am = fromBase58String(ad)
174+ let Z = p.caller.bytes
175+ let m = fromBase58String(T)
176+ let an = getStringValue(this, (ab + "_highest_bid"))
177+ let ao = ((parseIntValue(an) / 1000) * 975)
178+ let Q = ((parseIntValue(an) / 1000) * 25)
179+ let R = ((parseIntValue(an) / 100) * parseIntValue(w))
180+ let ap = (parseIntValue(an) - (R + Q))
181+ let aq = getStringValue(this, (ab + "_winner_of_nft"))
182+ if (if ((ad == al))
183+ then (toUtf8String(Z) == L)
184+ else false)
185+ then [ScriptTransfer(Address(Z), ao, am), ScriptTransfer(Address(fromBase58String(aq)), 1, m), StringEntry((C + "_amount_paid_to_owner"), an), StringEntry((C + "_nft_transfer_to"), aq), StringEntry((C + "_nft_status"), "REWARDED"), StringEntry((ab + "_amount_paid_to_owner"), an), StringEntry((ab + "_nft_transfer_to"), aq), StringEntry((ab + "_nft_status"), "REWARDED")]
186+ else if (if ((ad == al))
187+ then (toUtf8String(Z) != L)
188+ else false)
189+ then [ScriptTransfer(Address(Z), ao, am), ScriptTransfer(Address(fromBase58String(aq)), 1, m), ScriptTransfer(Address(fromBase58String(L)), ap, am), StringEntry((C + "_amount_paid_to_owner"), an), StringEntry((C + "_nft_transfer_to"), aq), StringEntry((C + "_nft_status"), "REWARDED"), StringEntry((ab + "_amount_paid_to_owner"), an), StringEntry((ab + "_nft_transfer_to"), aq), StringEntry((ab + "_nft_status"), "REWARDED")]
190+ else if (if ((ad == "WAVES"))
191+ then (toUtf8String(Z) == L)
192+ else false)
193+ then [ScriptTransfer(Address(Z), ao, unit), ScriptTransfer(Address(fromBase58String(aq)), 1, m), StringEntry((C + "_amount_paid_to_owner"), an), StringEntry((C + "_nft_transfer_to"), aq), StringEntry((C + "_nft_status"), "REWARDED"), StringEntry((ab + "_amount_paid_to_owner"), an), StringEntry((ab + "_nft_transfer_to"), aq), StringEntry((ab + "_nft_status"), "REWARDED")]
194+ else if (if ((ad == "WAVES"))
195+ then (toUtf8String(Z) != L)
196+ else false)
197+ then [ScriptTransfer(Address(Z), ao, unit), ScriptTransfer(Address(fromBase58String(aq)), 1, m), ScriptTransfer(Address(fromBase58String(L)), ap, unit), StringEntry((C + "_amount_paid_to_owner"), an), StringEntry((C + "_nft_transfer_to"), aq), StringEntry((C + "_nft_status"), "REWARDED"), StringEntry((ab + "_amount_paid_to_owner"), an), StringEntry((ab + "_nft_transfer_to"), aq), StringEntry((ab + "_nft_status"), "REWARDED")]
198+ else nil
171199 }
172200
173201
174202
175203 @Callable(p)
176-func cancelAuction (X) = {
177- let B = toBase58String(p.transactionId)
178- let V = p.caller.bytes
179- let am = getStringValue(this, (X + "_nft_status"))
180- let an = getStringValue(this, (X + "_winner_of_nft"))
181- let ao = getStringValue(this, (X + "_nft_owner"))
182- let P = getStringValue(this, (X + "_nft_on_auction"))
183- let ap = getStringValue(this, (X + "_highest_bid"))
184- if ((an == "0"))
185- then [StringEntry(((B + X) + "_nft_status"), "CANCELED"), ScriptTransfer(Address(fromBase58String(ao)), 1, fromBase58String(P))]
186- else if ((an != "0"))
204+func cancelAuction (ab) = {
205+ let C = toBase58String(p.transactionId)
206+ let Z = p.caller.bytes
207+ let ar = getStringValue(this, (ab + "_nft_status"))
208+ let as = getStringValue(this, (ab + "_winner_of_nft"))
209+ let at = getStringValue(this, (ab + "_nft_owner"))
210+ let T = getStringValue(this, (ab + "_nft_on_auction"))
211+ let au = getStringValue(this, (ab + "_highest_bid"))
212+ if ((as == "0"))
213+ then [StringEntry(((C + ab) + "_nft_status"), "CANCELED"), ScriptTransfer(Address(fromBase58String(at)), 1, fromBase58String(T))]
214+ else if ((as != "0"))
187215 then throw("soory you can't cancel it because already auction placed by someone")
188216 else nil
189217 }
191219
192220
193221 @Callable(p)
194-func manualFundTransfer (aq,ar) = {
195- let as = p.caller.bytes
196- let at = fromBase58String(aq)
197- let M = p.payments[0].amount
198- let O = ((M / 1000) * 25)
199- let au = (M - O)
222+func manualFundTransfer (av,aw) = {
223+ let ax = p.caller.bytes
224+ let ay = fromBase58String(av)
225+ let O = p.payments[0].amount
226+ let Q = ((O / 1000) * 25)
227+ let az = (O - Q)
200228 if ((p.payments[0].assetId == unit))
201- then [IntegerEntry((toBase58String(as) + "_transfer"), M), StringEntry("platform_fee", toString(O)), StringEntry((toBase58String(as) + "_transfer_to"), aq), ScriptTransfer(Address(at), au, unit)]
229+ then [IntegerEntry((toBase58String(ax) + "_transfer"), O), StringEntry("platform_fee", toString(Q)), StringEntry((toBase58String(ax) + "_transfer_to"), av), ScriptTransfer(Address(ay), az, unit)]
202230 else if ((p.payments[0].assetId == f))
203- then [IntegerEntry((toBase58String(as) + "_transfer"), M), IntegerEntry("platform_fee", O), StringEntry((toBase58String(as) + "_transfer_to"), aq), ScriptTransfer(Address(at), au, f)]
231+ then [IntegerEntry((toBase58String(ax) + "_transfer"), O), IntegerEntry("platform_fee", Q), StringEntry((toBase58String(ax) + "_transfer_to"), av), ScriptTransfer(Address(ay), az, f)]
204232 else nil
205233 }
206234
207235
208236
209237 @Callable(p)
210-func nftback (X) = {
211- let V = p.caller.bytes
212- let P = getStringValue(this, (X + "_nft_on_auction"))
213- let ao = getStringValue(this, (X + "_nft_owner"))
214-[StringEntry((X + "_nft_status"), "Auction_time over"), ScriptTransfer(Address(fromBase58String(ao)), 1, fromBase58String(P))]
238+func nftback (ab) = {
239+ let Z = p.caller.bytes
240+ let T = getStringValue(this, (ab + "_nft_on_auction"))
241+ let at = getStringValue(this, (ab + "_nft_owner"))
242+[StringEntry((ab + "_nft_status"), "Auction_time over"), ScriptTransfer(Address(fromBase58String(at)), 1, fromBase58String(T))]
215243 }
216244
217245
218246
219247 @Callable(p)
220-func withdrawMoney (X,Z) = {
221- let V = p.caller.bytes
222- let ah = "9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq"
223- let B = toBase58String(p.transactionId)
224- let ai = fromBase58String(Z)
225- let av = getStringValue(this, (X + "_highest_bid"))
226- let aw = getStringValue(this, (X + "_winner"))
227- let ax = getStringValue(this, (X + "_nft_id"))
228- if ((Z == ah))
229- then [StringEntry((X + "_nft_bid"), "WITHDRAW"), StringEntry((X + "_nft_id"), ax), StringEntry((X + "_bidding_price_refund_amount"), av), ScriptTransfer(p.caller, parseIntValue(av), ai)]
230- else if ((Z == "WAVES"))
231- then [StringEntry((X + "_nft_bid"), "WITHDRAW"), StringEntry((X + "_nft_id"), ax), StringEntry((X + "_bidding_price_refund_amount"), av), ScriptTransfer(p.caller, parseIntValue(av), unit)]
248+func withdrawMoney (ab,ad) = {
249+ let Z = p.caller.bytes
250+ let al = "9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq"
251+ let C = toBase58String(p.transactionId)
252+ let am = fromBase58String(ad)
253+ let aA = getStringValue(this, (ab + "_highest_bid"))
254+ let aB = getStringValue(this, (ab + "_winner"))
255+ let aC = getStringValue(this, (ab + "_nft_id"))
256+ if ((ad == al))
257+ then [StringEntry((ab + "_nft_bid"), "WITHDRAW"), StringEntry((ab + "_nft_id"), aC), StringEntry((ab + "_bidding_price_refund_amount"), aA), ScriptTransfer(p.caller, parseIntValue(aA), am)]
258+ else if ((ad == "WAVES"))
259+ then [StringEntry((ab + "_nft_bid"), "WITHDRAW"), StringEntry((ab + "_nft_id"), aC), StringEntry((ab + "_bidding_price_refund_amount"), aA), ScriptTransfer(p.caller, parseIntValue(aA), unit)]
232260 else nil
233261 }
234262
235263
236264
237265 @Callable(p)
238-func buyAllProducts_asimi (ay) = {
239- let az = p.caller
240- let aA = assetBalance(az, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')
241- let M = value(p.payments[0].amount)
242- let aB = (M - ((M / 1000) * 25))
243- let aC = (M - aB)
244- let aD = value(p.payments[1].amount)
245- let aE = (aD - ((aD / 1000) * 25))
246- let aF = (M - aB)
247- let aG = value(p.payments[2].amount)
248- let aH = (aG - ((aG / 1000) * 25))
249- let aI = (M - aB)
250- let aJ = value(p.payments[3].amount)
251- let aK = (aJ - ((aJ / 1000) * 25))
252- let aL = (M - aB)
253- let aM = value(p.payments[4].amount)
254- let aN = (aM - ((aM / 1000) * 25))
255- let aO = (M - aB)
256- let aP = split(ay[0], "_")
257- let aQ = split(ay[1], "_")
258- let aR = split(ay[2], "_")
259- let aS = split(ay[3], "_")
260- let aT = split(ay[4], "_")
261- if ((M > aA))
266+func buyAllProducts_asimi (aD) = {
267+ let aE = p.caller
268+ let aF = assetBalance(aE, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')
269+ let aG = split(aD[0], "_")
270+ let aH = split(aD[1], "_")
271+ let aI = split(aD[2], "_")
272+ let aJ = split(aD[3], "_")
273+ let aK = split(aD[4], "_")
274+ let O = value(p.payments[0].amount)
275+ let aL = (O - ((O / 1000) * 25))
276+ let aM = (O - aL)
277+ let R = ((O / 100) * parseIntValue(aG[3]))
278+ let aN = (O - (R + aM))
279+ let aO = value(p.payments[1].amount)
280+ let aP = (aO - ((aO / 1000) * 25))
281+ let aQ = (O - aP)
282+ let aR = ((O / 100) * parseIntValue(aH[3]))
283+ let aS = (O - (R + aM))
284+ let aT = value(p.payments[2].amount)
285+ let aU = (aT - ((aT / 1000) * 25))
286+ let aV = (O - aU)
287+ let aW = ((O / 100) * parseIntValue(aI[3]))
288+ let aX = (O - (R + aM))
289+ let aY = value(p.payments[3].amount)
290+ let aZ = (aY - ((aY / 1000) * 25))
291+ let ba = (O - aZ)
292+ let bb = ((O / 100) * parseIntValue(aJ[3]))
293+ let bc = (O - (R + aM))
294+ let bd = value(p.payments[4].amount)
295+ let be = (bd - ((bd / 1000) * 25))
296+ let bf = (O - be)
297+ let bg = ((O / 100) * parseIntValue(aK[3]))
298+ let bh = (O - (R + aM))
299+ if ((O > aF))
262300 then throw("Buyer does not have enough funds to complete the purchase.")
263- else if ((size(ay) == 1))
264- then [StringEntry((("first_nft_Info=" + "nftId") + aP[0]), ("buyer" + toString(az))), StringEntry((("first_nft_Info=" + "seller_address") + aP[1]), ("price" + aP[2])), ScriptTransfer(az, 1, fromBase58String(aP[0])), ScriptTransfer(Address(fromBase58String(aP[1])), aB, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')]
265- else if ((size(ay) == 2))
266- then [StringEntry((((((("first_nft_Info=" + "nftId") + aP[0]) + "seller_address") + aP[1]) + "price") + aP[2]), ("buyer" + toString(az))), StringEntry((((((("second_nft_Info=" + "nftId") + aQ[0]) + "seller_address") + aQ[1]) + "price") + aQ[2]), ("buyer" + toString(az))), ScriptTransfer(az, 1, fromBase58String(aP[0])), ScriptTransfer(az, 1, fromBase58String(aQ[0])), ScriptTransfer(Address(fromBase58String(aP[1])), aB, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aQ[1])), aE, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')]
267- else if ((size(ay) == 3))
268- then [StringEntry((((((("first_nft_Info=" + "nftId") + aP[0]) + "seller_address") + aP[1]) + "price") + aP[2]), ("buyer" + toString(az))), StringEntry((((((("second_nft_Info=" + "nftId") + aQ[0]) + "seller_address") + aQ[1]) + "price") + aQ[2]), ("buyer" + toString(az))), StringEntry((((((("third_nft_Info=" + "nftId") + aR[0]) + "seller_address") + aR[1]) + "price") + aR[2]), ("buyer" + toString(az))), ScriptTransfer(az, 1, fromBase58String(aP[0])), ScriptTransfer(az, 1, fromBase58String(aQ[0])), ScriptTransfer(az, 1, fromBase58String(aR[0])), ScriptTransfer(Address(fromBase58String(aP[1])), aB, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aQ[1])), aE, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aR[1])), aH, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')]
269- else if ((size(ay) == 4))
270- then [StringEntry((((((("first_nft_Info=" + "nftId") + aP[0]) + "seller_address") + aP[1]) + "price") + aP[2]), ("buyer" + toString(az))), StringEntry((((((("second_nft_Info=" + "nftId") + aQ[0]) + "seller_address") + aQ[1]) + "price") + aQ[2]), ("buyer" + toString(az))), StringEntry((((((("third_nft_Info=" + "nftId") + aR[0]) + "seller_address") + aR[1]) + "price") + aR[2]), ("buyer" + toString(az))), StringEntry((((((("fourth_nft_Info=" + "nftId") + aS[0]) + "seller_address") + aS[1]) + "price") + aS[2]), ("buyer" + toString(az))), ScriptTransfer(az, 1, fromBase58String(aP[0])), ScriptTransfer(az, 1, fromBase58String(aQ[0])), ScriptTransfer(az, 1, fromBase58String(aR[0])), ScriptTransfer(az, 1, fromBase58String(aS[0])), ScriptTransfer(Address(fromBase58String(aP[1])), aB, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aQ[1])), aE, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aR[1])), aH, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aS[1])), aK, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')]
271- else if ((size(ay) == 5))
272- then [StringEntry((((((("first_nft_Info=" + "nftId") + aP[0]) + "seller_address") + aP[1]) + "price") + aP[2]), ("buyer" + toString(az))), StringEntry((((((("second_nft_Info=" + "nftId") + aQ[0]) + "seller_address") + aQ[1]) + "price") + aQ[2]), ("buyer" + toString(az))), StringEntry((((((("third_nft_Info=" + "nftId") + aR[0]) + "seller_address") + aR[1]) + "price") + aR[2]), ("buyer" + toString(az))), StringEntry((((((("fourth_nft_Info=" + "nftId") + aS[0]) + "seller_address") + aS[1]) + "price") + aS[2]), ("buyer" + toString(az))), StringEntry((((((("fifth_nft_Info=" + "nftId") + aT[0]) + "seller_address") + aT[1]) + "price") + aT[2]), ("buyer" + toString(az))), ScriptTransfer(az, 1, fromBase58String(aP[0])), ScriptTransfer(az, 1, fromBase58String(aQ[0])), ScriptTransfer(az, 1, fromBase58String(aR[0])), ScriptTransfer(az, 1, fromBase58String(aS[0])), ScriptTransfer(az, 1, fromBase58String(aT[0])), ScriptTransfer(Address(fromBase58String(aP[1])), aB, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aQ[1])), aE, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aR[1])), aH, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aS[1])), aK, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aT[1])), aN, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')]
273- else if ((size(ay) > 5))
274- then throw("sorry! maximum limit of your cart is 5 items")
275- else nil
276- }
277-
278-
279-
280-@Callable(p)
281-func buyAllProducts_waves (ay) = {
282- let az = p.caller
283- let aA = assetBalance(az, g)
284- let M = value(p.payments[0].amount)
285- let aB = (M - ((M / 1000) * 25))
286- let aC = (M - aB)
287- let aD = value(p.payments[1].amount)
288- let aE = (aD - ((aD / 1000) * 25))
289- let aF = (M - aB)
290- let aG = value(p.payments[2].amount)
291- let aH = (aG - ((aG / 1000) * 25))
292- let aI = (M - aB)
293- let aJ = value(p.payments[3].amount)
294- let aK = (aJ - ((aJ / 1000) * 25))
295- let aL = (M - aB)
296- let aM = value(p.payments[4].amount)
297- let aN = (aM - ((aM / 1000) * 25))
298- let aO = (M - aB)
299- let aP = split(ay[0], "_")
300- let aQ = split(ay[1], "_")
301- let aR = split(ay[2], "_")
302- let aS = split(ay[3], "_")
303- let aT = split(ay[4], "_")
304- if ((size(ay) == 1))
305- then [StringEntry((((((("first_nft_Info=" + "nftId") + aP[0]) + "seller_address") + aP[1]) + "price") + aP[2]), ("buyer" + toString(az))), ScriptTransfer(az, 1, fromBase58String(aP[0])), ScriptTransfer(Address(fromBase58String(aP[1])), aB, unit)]
306- else if ((size(ay) == 2))
307- then [StringEntry((((((("first_nft_Info=" + "nftId") + aP[0]) + "seller_address") + aP[1]) + "price") + aP[2]), ("buyer" + toString(az))), StringEntry((((((("second_nft_Info=" + "nftId") + aQ[0]) + "seller_address") + aQ[1]) + "price") + aQ[2]), ("buyer" + toString(az))), ScriptTransfer(az, 1, fromBase58String(aP[0])), ScriptTransfer(az, 1, fromBase58String(aQ[0])), ScriptTransfer(Address(fromBase58String(aP[1])), aB, unit), ScriptTransfer(Address(fromBase58String(aQ[1])), aE, unit)]
308- else if ((size(ay) == 3))
309- then [StringEntry((((((("first_nft_Info=" + "nftId") + aP[0]) + "seller_address") + aP[1]) + "price") + aP[2]), ("buyer" + toString(az))), StringEntry((((((("second_nft_Info=" + "nftId") + aQ[0]) + "seller_address") + aQ[1]) + "price") + aQ[2]), ("buyer" + toString(az))), StringEntry((((((("third_nft_Info=" + "nftId") + aR[0]) + "seller_address") + aR[1]) + "price") + aR[2]), ("buyer" + toString(az))), ScriptTransfer(az, 1, fromBase58String(aP[0])), ScriptTransfer(az, 1, fromBase58String(aQ[0])), ScriptTransfer(az, 1, fromBase58String(aR[0])), ScriptTransfer(Address(fromBase58String(aP[1])), aB, unit), ScriptTransfer(Address(fromBase58String(aQ[1])), aE, unit), ScriptTransfer(Address(fromBase58String(aR[1])), aH, unit)]
310- else if ((size(ay) == 4))
311- then [StringEntry((((((("first_nft_Info=" + "nftId") + aP[0]) + "seller_address") + aP[1]) + "price") + aP[2]), ("buyer" + toString(az))), StringEntry((((((("second_nft_Info=" + "nftId") + aQ[0]) + "seller_address") + aQ[1]) + "price") + aQ[2]), ("buyer" + toString(az))), StringEntry((((((("third_nft_Info=" + "nftId") + aR[0]) + "seller_address") + aR[1]) + "price") + aR[2]), ("buyer" + toString(az))), StringEntry((((((("fourth_nft_Info=" + "nftId") + aS[0]) + "seller_address") + aS[1]) + "price") + aS[2]), ("buyer" + toString(az))), ScriptTransfer(az, 1, fromBase58String(aP[0])), ScriptTransfer(az, 1, fromBase58String(aQ[0])), ScriptTransfer(az, 1, fromBase58String(aR[0])), ScriptTransfer(az, 1, fromBase58String(aS[0])), ScriptTransfer(Address(fromBase58String(aP[1])), aB, unit), ScriptTransfer(Address(fromBase58String(aQ[1])), aE, unit), ScriptTransfer(Address(fromBase58String(aR[1])), aH, unit), ScriptTransfer(Address(fromBase58String(aS[1])), aK, unit)]
312- else if ((size(ay) == 5))
313- then [StringEntry((((((("first_nft_Info=" + "nftId") + aP[0]) + "seller_address") + aP[1]) + "price") + aP[2]), ("buyer" + toString(az))), StringEntry((((((("second_nft_Info=" + "nftId") + aQ[0]) + "seller_address") + aQ[1]) + "price") + aQ[2]), ("buyer" + toString(az))), StringEntry((((((("third_nft_Info=" + "nftId") + aR[0]) + "seller_address") + aR[1]) + "price") + aR[2]), ("buyer" + toString(az))), StringEntry((((((("fourth_nft_Info=" + "nftId") + aS[0]) + "seller_address") + aS[1]) + "price") + aS[2]), ("buyer" + toString(az))), StringEntry((((((("fifth_nft_Info=" + "nftId") + aT[0]) + "seller_address") + aT[1]) + "price") + aT[2]), ("buyer" + toString(az))), ScriptTransfer(az, 1, fromBase58String(aP[0])), ScriptTransfer(az, 1, fromBase58String(aQ[0])), ScriptTransfer(az, 1, fromBase58String(aR[0])), ScriptTransfer(az, 1, fromBase58String(aS[0])), ScriptTransfer(az, 1, fromBase58String(aT[0])), ScriptTransfer(Address(fromBase58String(aP[1])), aB, unit), ScriptTransfer(Address(fromBase58String(aQ[1])), aE, unit), ScriptTransfer(Address(fromBase58String(aR[1])), aH, unit), ScriptTransfer(Address(fromBase58String(aS[1])), aK, unit), ScriptTransfer(Address(fromBase58String(aT[1])), aN, unit)]
314- else if ((size(ay) > 5))
315- then throw("sorry! maximum limit of your cart is 5 items")
316- else nil
301+ else if (if ((size(aD) == 1))
302+ then (aG[1] == aG[4])
303+ else false)
304+ then [StringEntry((("first_nft_Info=" + "nftId") + aG[0]), ("buyer" + toString(aE))), StringEntry((("first_nft_Info=" + "seller_address") + aG[1]), ("price" + aG[2])), ScriptTransfer(aE, 1, fromBase58String(aG[0])), ScriptTransfer(Address(fromBase58String(aG[1])), aL, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')]
305+ else if (if ((size(aD) == 1))
306+ then (aG[1] != aG[4])
307+ else false)
308+ then [StringEntry((("first_nft_Info=" + "nftId") + aG[0]), ("buyer" + toString(aE))), StringEntry((("first_nft_Info=" + "seller_address") + aG[1]), ("price" + aG[2])), ScriptTransfer(aE, 1, fromBase58String(aG[0])), ScriptTransfer(Address(fromBase58String(aG[1])), aN, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aG[4])), R, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')]
309+ else if ((size(aD) == 2))
310+ then [StringEntry((((((("first_nft_Info=" + "nftId") + aG[0]) + "seller_address") + aG[1]) + "price") + aG[2]), ("buyer" + toString(aE))), StringEntry((((((("second_nft_Info=" + "nftId") + aH[0]) + "seller_address") + aH[1]) + "price") + aH[2]), ("buyer" + toString(aE))), ScriptTransfer(aE, 1, fromBase58String(aG[0])), ScriptTransfer(aE, 1, fromBase58String(aH[0])), ScriptTransfer(Address(fromBase58String(aG[1])), aN, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aG[4])), R, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aH[1])), aS, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aH[4])), aR, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')]
311+ else if ((size(aD) == 3))
312+ then [StringEntry((((((("first_nft_Info=" + "nftId") + aG[0]) + "seller_address") + aG[1]) + "price") + aG[2]), ("buyer" + toString(aE))), StringEntry((((((("second_nft_Info=" + "nftId") + aH[0]) + "seller_address") + aH[1]) + "price") + aH[2]), ("buyer" + toString(aE))), StringEntry((((((("third_nft_Info=" + "nftId") + aI[0]) + "seller_address") + aI[1]) + "price") + aI[2]), ("buyer" + toString(aE))), ScriptTransfer(aE, 1, fromBase58String(aG[0])), ScriptTransfer(aE, 1, fromBase58String(aH[0])), ScriptTransfer(aE, 1, fromBase58String(aI[0])), ScriptTransfer(Address(fromBase58String(aG[1])), aN, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aG[4])), R, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aH[1])), aS, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aH[4])), aR, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aI[1])), aX, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aI[4])), aW, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')]
313+ else if ((size(aD) == 4))
314+ then [StringEntry((((((("first_nft_Info=" + "nftId") + aG[0]) + "seller_address") + aG[1]) + "price") + aG[2]), ("buyer" + toString(aE))), StringEntry((((((("second_nft_Info=" + "nftId") + aH[0]) + "seller_address") + aH[1]) + "price") + aH[2]), ("buyer" + toString(aE))), StringEntry((((((("third_nft_Info=" + "nftId") + aI[0]) + "seller_address") + aI[1]) + "price") + aI[2]), ("buyer" + toString(aE))), StringEntry((((((("fourth_nft_Info=" + "nftId") + aJ[0]) + "seller_address") + aJ[1]) + "price") + aJ[2]), ("buyer" + toString(aE))), ScriptTransfer(aE, 1, fromBase58String(aG[0])), ScriptTransfer(aE, 1, fromBase58String(aH[0])), ScriptTransfer(aE, 1, fromBase58String(aI[0])), ScriptTransfer(aE, 1, fromBase58String(aJ[0])), ScriptTransfer(Address(fromBase58String(aG[1])), aL, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aG[4])), R, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aH[1])), aP, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aH[4])), aR, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aI[1])), aU, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aI[4])), aW, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aJ[1])), aZ, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aJ[4])), bb, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')]
315+ else if ((size(aD) == 5))
316+ then [StringEntry((((((("first_nft_Info=" + "nftId") + aG[0]) + "seller_address") + aG[1]) + "price") + aG[2]), ("buyer" + toString(aE))), StringEntry((((((("second_nft_Info=" + "nftId") + aH[0]) + "seller_address") + aH[1]) + "price") + aH[2]), ("buyer" + toString(aE))), StringEntry((((((("third_nft_Info=" + "nftId") + aI[0]) + "seller_address") + aI[1]) + "price") + aI[2]), ("buyer" + toString(aE))), StringEntry((((((("fourth_nft_Info=" + "nftId") + aJ[0]) + "seller_address") + aJ[1]) + "price") + aJ[2]), ("buyer" + toString(aE))), StringEntry((((((("fifth_nft_Info=" + "nftId") + aK[0]) + "seller_address") + aK[1]) + "price") + aK[2]), ("buyer" + toString(aE))), ScriptTransfer(aE, 1, fromBase58String(aG[0])), ScriptTransfer(aE, 1, fromBase58String(aH[0])), ScriptTransfer(aE, 1, fromBase58String(aI[0])), ScriptTransfer(aE, 1, fromBase58String(aJ[0])), ScriptTransfer(aE, 1, fromBase58String(aK[0])), ScriptTransfer(Address(fromBase58String(aG[1])), aL, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aG[4])), R, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aH[1])), aP, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aH[4])), aR, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aI[1])), aU, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aI[4])), aW, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aJ[1])), aZ, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aJ[4])), bb, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aK[1])), be, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aK[4])), bg, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')]
317+ else if ((size(aD) > 5))
318+ then throw("sorry! maximum limit of your cart is 5 items")
319+ else nil
317320 }
318321
319322
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "_"
55
66 let b = "buy"
77
88 let c = "price"
99
1010 let d = "sell"
1111
1212 let e = 30
1313
1414 let f = base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'
1515
1616 let g = base58''
1717
1818 let h = "bid"
1919
2020 let i = true
2121
2222 let j = $Tuple4("OPEN", "CLOSED", "REWARDED", "CANCELED")
2323
2424 let k = base58'3MvjAaDYHpS4A5K4CV3kZMMEH9m9JdBSvbq'
2525
2626 func l (m) = {
2727 let n = assetInfo(m)
2828 if ($isInstanceOf(n, "Asset"))
2929 then {
3030 let o = n
3131 if (if ((o.decimals == 0))
3232 then (o.quantity == 1)
3333 else false)
3434 then (o.reissuable == false)
3535 else false
3636 }
3737 else false
3838 }
3939
4040
4141 @Callable(p)
42-func createNft (q,r,s,t,u,v,w,x,y) = {
43- let z = Issue(q, w, 1, 0, false)
44- let A = calculateAssetId(z)
45- let B = p.transactionId
46-[z, ScriptTransfer(p.caller, 1, A), StringEntry(((toBase58String(A) + a) + "Owner"), toString(p.caller)), StringEntry(((toBase58String(A) + a) + "nft_type"), t), StringEntry(((toBase58String(A) + a) + "nft_tags"), u), StringEntry(((toBase58String(A) + a) + "nft_dAppAddress"), s), IntegerEntry(((toBase58String(A) + a) + "nft_selling_price"), v), StringEntry(((toBase58String(A) + a) + "nft_onSell"), x), StringEntry(((toBase58String(A) + a) + "nft_data"), y), StringEntry(((toBase58String(B) + a) + "issue_nft"), toBase58String(A))]
42+func createNft (q,r,s,t,u,v,w,x,y,z) = {
43+ let A = Issue(q, x, 1, 0, false)
44+ let B = calculateAssetId(A)
45+ let C = p.transactionId
46+[A, ScriptTransfer(p.caller, 1, B), StringEntry(((toBase58String(B) + a) + "Owner"), toString(p.caller)), StringEntry(((toBase58String(B) + a) + "nft_type"), t), StringEntry(((toBase58String(B) + a) + "nft_tags"), u), StringEntry(((toBase58String(B) + a) + "nft_dAppAddress"), s), StringEntry(((toBase58String(C) + a) + "royaltyPercentage"), w), IntegerEntry(((toBase58String(B) + a) + "nft_selling_price"), v), StringEntry(((toBase58String(B) + a) + "nft_onSell"), y), StringEntry(((toBase58String(B) + a) + "nft_data"), z), StringEntry(((toBase58String(C) + a) + "issue_nft"), toBase58String(B))]
4747 }
4848
4949
5050
5151 @Callable(p)
52-func sellNFT (C,D) = {
53- let B = p.transactionId
54- let E = p.caller.bytes
55- let F = $Tuple2(value(p.payments[0].assetId), value(p.payments[0].amount))
56- let G = F._1
57- let H = F._2
58- if (!(l(G)))
52+func sellNFT (D,E) = {
53+ let C = p.transactionId
54+ let F = p.caller.bytes
55+ let G = $Tuple2(value(p.payments[0].assetId), value(p.payments[0].amount))
56+ let H = G._1
57+ let I = G._2
58+ if (!(l(H)))
5959 then throw("Token is not NFT")
60- else [StringEntry(((c + a) + toBase58String(value(p.payments[0].assetId))), C), StringEntry(((toString(p.caller) + a) + d), (((toBase58String(G) + a) + toString(H)) + D))]
60+ else [StringEntry(((c + a) + toBase58String(value(p.payments[0].assetId))), D), StringEntry(((toString(p.caller) + a) + d), (((toBase58String(H) + a) + toString(I)) + E))]
6161 }
6262
6363
6464
6565 @Callable(p)
66-func buyNFT (I,J) = {
67- let m = fromBase58String(I)
68- let K = {
69- let n = getString(this, (("nft_" + J) + "_owner"))
66+func buyNFT (J,K,L,w) = {
67+ let m = fromBase58String(J)
68+ let M = {
69+ let n = getString(this, (("nft_" + K) + "_owner"))
7070 if ($isInstanceOf(n, "String"))
7171 then {
72- let L = n
73- L
72+ let N = n
73+ N
7474 }
7575 else false
7676 }
77- let C = getStringValue(((((c + a) + I) + "_") + J))
78- let M = value(p.payments[0].amount)
79- let N = (M - ((M / 1000) * 25))
80- let O = (M - N)
81- if ((J == toString(p.caller)))
77+ let D = getStringValue(((((c + a) + J) + "_") + K))
78+ let O = value(p.payments[0].amount)
79+ let P = (O - ((O / 1000) * 25))
80+ let Q = (O - P)
81+ let R = ((O / 100) * parseIntValue(w))
82+ let S = (O - (R + Q))
83+ if ((K == toString(p.caller)))
8284 then throw("current Owner of NFT not able to purchase")
83- else if ((p.payments[0].assetId == f))
84- then [ScriptTransfer(p.caller, 1, m), ScriptTransfer(Address(fromBase58String(J)), N, f), StringEntry((("nft_" + I) + "platform_fee"), toString(O)), StringEntry(((toString(p.caller) + a) + b), ((I + a) + toString(M))), DeleteEntry((("nft_" + J) + "_owner")), StringEntry((("nft_" + J) + "_owner"), toString(p.caller)), StringEntry(((I + a) + "_owner"), toString(p.caller))]
85- else if ((p.payments[0].assetId == unit))
86- then [ScriptTransfer(p.caller, 1, m), ScriptTransfer(Address(fromBase58String(J)), N, unit), StringEntry((("nft_" + I) + "platform_fee"), toString(O)), StringEntry(((toString(p.caller) + a) + b), ((I + a) + toString(M))), DeleteEntry((("nft_" + J) + "_owner")), StringEntry((("nft_" + J) + "_owner"), toString(p.caller)), StringEntry(((I + a) + "_owner"), toString(p.caller))]
87- else nil
85+ else if (if ((p.payments[0].assetId == f))
86+ then (L != K)
87+ else false)
88+ then [ScriptTransfer(p.caller, 1, m), ScriptTransfer(Address(fromBase58String(K)), S, f), ScriptTransfer(Address(fromBase58String(L)), R, f), IntegerEntry((("nft_" + J) + "platform_fee"), Q), StringEntry(((toString(p.caller) + a) + b), ((J + a) + toString(O))), DeleteEntry((("nft_" + K) + "_owner")), StringEntry((("nft_" + K) + "_owner"), toString(p.caller)), StringEntry(((J + a) + "_owner"), toString(p.caller))]
89+ else if (if ((p.payments[0].assetId == f))
90+ then (L == K)
91+ else false)
92+ then [ScriptTransfer(p.caller, 1, m), ScriptTransfer(Address(fromBase58String(K)), P, f), StringEntry((("nft_" + J) + "platform_fee"), toString(Q)), StringEntry(((toString(p.caller) + a) + b), ((J + a) + toString(O))), DeleteEntry((("nft_" + K) + "_owner")), StringEntry((("nft_" + K) + "_owner"), toString(p.caller)), StringEntry(((J + a) + "_owner"), toString(p.caller))]
93+ else if (if ((p.payments[0].assetId == unit))
94+ then (L != K)
95+ else false)
96+ then [ScriptTransfer(p.caller, 1, m), ScriptTransfer(Address(fromBase58String(K)), S, unit), ScriptTransfer(Address(fromBase58String(L)), R, unit), StringEntry((("nft_" + J) + "platform_fee"), toString(Q)), StringEntry(((toString(p.caller) + a) + b), ((J + a) + toString(O))), DeleteEntry((("nft_" + K) + "_owner")), StringEntry((("nft_" + K) + "_owner"), toString(p.caller)), StringEntry(((J + a) + "_owner"), toString(p.caller))]
97+ else if (if ((p.payments[0].assetId == unit))
98+ then (L == K)
99+ else false)
100+ then [ScriptTransfer(p.caller, 1, m), ScriptTransfer(Address(fromBase58String(K)), P, unit), StringEntry((("nft_" + J) + "platform_fee"), toString(Q)), StringEntry(((toString(p.caller) + a) + b), ((J + a) + toString(O))), DeleteEntry((("nft_" + K) + "_owner")), StringEntry((("nft_" + K) + "_owner"), toString(p.caller)), StringEntry(((J + a) + "_owner"), toString(p.caller))]
101+ else nil
88102 }
89103
90104
91105
92106 @Callable(p)
93-func cancelSell (P) = {
94- let B = toBase58String(p.transactionId)
95- let E = p.caller.bytes
96-[StringEntry(((B + P) + "_nft_status"), "CANCELED"), ScriptTransfer(Address(E), 1, fromBase58String(P))]
107+func cancelSell (T) = {
108+ let C = toBase58String(p.transactionId)
109+ let F = p.caller.bytes
110+[StringEntry(((C + T) + "_nft_status"), "CANCELED"), ScriptTransfer(Address(F), 1, fromBase58String(T))]
97111 }
98112
99113
100114
101115 @Callable(p)
102-func addAuction (Q,R,S,T,D) = {
103- let B = toBase58String(p.transactionId)
104- let P = value(p.payments[0].assetId)
105- let C = value(S)
106- let U = (lastBlock.height + T)
107- let V = p.caller.bytes
108- let W = {
109- let n = getString(this, (((toBase58String(P) + a) + "nft_status_") + toBase58String(V)))
116+func addAuction (U,V,W,X,E) = {
117+ let C = toBase58String(p.transactionId)
118+ let T = value(p.payments[0].assetId)
119+ let D = value(W)
120+ let Y = (lastBlock.height + X)
121+ let Z = p.caller.bytes
122+ let aa = {
123+ let n = getString(this, (((toBase58String(T) + a) + "nft_status_") + toBase58String(Z)))
110124 if ($isInstanceOf(n, "String"))
111125 then {
112- let L = n
126+ let N = n
113127 true
114128 }
115129 else false
116130 }
117- if ((W == true))
131+ if ((aa == true))
118132 then throw("Already in auction list")
119- else if ((T > e))
133+ else if ((X > e))
120134 then throw(("Duration is too long. Must be less than or equal to 30 " + toString(e)))
121135 else if ((p.payments[0].assetId == unit))
122136 then throw("NFT not attached")
123137 else if ((p.payments[0].assetId == f))
124138 then throw("NFT not attached")
125- else [StringEntry(((B + "nft_start_auction_date") + toBase58String(V)), Q), StringEntry(((B + "nft_end_auction_date") + toBase58String(V)), R), StringEntry((B + "_nft_start_price"), S), StringEntry((B + "_nft_owner"), toString(p.caller)), StringEntry((B + "_nft_on_auction"), toBase58String(P)), StringEntry((B + "_previous_bidder"), "none"), StringEntry((B + "_highest_bid"), "0"), StringEntry((B + "_winner_of_nft"), "0"), StringEntry((B + "_bidder_count"), "0"), StringEntry((B + "_nft_status"), "OPEN")]
139+ else [StringEntry(((C + "nft_start_auction_date") + toBase58String(Z)), U), StringEntry(((C + "nft_end_auction_date") + toBase58String(Z)), V), StringEntry((C + "_nft_start_price"), W), StringEntry((C + "_nft_owner"), toString(p.caller)), StringEntry((C + "_nft_on_auction"), toBase58String(T)), StringEntry((C + "_previous_bidder"), "none"), StringEntry((C + "_highest_bid"), "0"), StringEntry((C + "_winner_of_nft"), "0"), StringEntry((C + "_bidder_count"), "0"), StringEntry((C + "_nft_status"), "OPEN")]
126140 }
127141
128142
129143
130144 @Callable(p)
131-func placeBid (X,P,r,Y,Z) = {
132- let B = toBase58String(p.transactionId)
133- let V = p.caller.bytes
134- let m = fromBase58String(P)
135- let aa = p.payments[0].assetId
136- let ab = p.payments[0].amount
137- let ac = getStringValue(this, (X + "_highest_bid"))
138- let ad = getString(this, (X + "_previous_bidder"))
139- let ae = getStringValue(this, (X + "_bidder_count"))
140- let af = getStringValue(this, (X + "_winner_of_nft"))
141- let W = getStringValue(this, (X + "_nft_status"))
142- if ((W != "OPEN"))
145+func placeBid (ab,T,r,ac,ad) = {
146+ let C = toBase58String(p.transactionId)
147+ let Z = p.caller.bytes
148+ let m = fromBase58String(T)
149+ let ae = p.payments[0].assetId
150+ let af = p.payments[0].amount
151+ let ag = getStringValue(this, (ab + "_highest_bid"))
152+ let ah = getString(this, (ab + "_previous_bidder"))
153+ let ai = getStringValue(this, (ab + "_bidder_count"))
154+ let aj = getStringValue(this, (ab + "_winner_of_nft"))
155+ let aa = getStringValue(this, (ab + "_nft_status"))
156+ if ((aa != "OPEN"))
143157 then throw("Not open for auction")
144- else if ((parseIntValue(ac) >= ab))
158+ else if ((parseIntValue(ag) >= af))
145159 then throw("Bid is less then starting/highest Bid")
146- else if ((ac == "0"))
147- then [StringEntry((X + "_highest_bid"), toString(ab)), StringEntry((X + "_winner_of_nft"), toBase58String(p.caller.bytes)), StringEntry((X + "_bidder_count"), toString((parseIntValue(ae) + 1))), StringEntry((X + "_nft_id"), toBase58String(m)), StringEntry((X + "_nft_owner"), r), StringEntry((((B + "_") + X) + "_highest_bid"), toString(ab)), StringEntry((((B + "_") + X) + "_winner"), toBase58String(p.caller.bytes)), StringEntry((((B + "_") + X) + "_bidder_count"), toString((parseIntValue(ae) + 1))), StringEntry((((B + "_") + X) + "_nft_id"), toBase58String(m)), StringEntry((((B + "_") + X) + "_nft_owner"), r), StringEntry((B + "_bid_for_nft_by"), toBase58String(V)), StringEntry((B + "_bid_price_place"), Y), StringEntry((B + "_previous_bid_amount_refund_to_address"), af), StringEntry((B + "_prevoius_bid_amount_refund"), ac)]
148- else if ((ac != "0"))
149- then [ScriptTransfer(Address(fromBase58String(af)), parseIntValue(ac), aa), StringEntry((B + "_previous_bid_amount_refund_to_address"), af), StringEntry((B + "_prevoius_bid_amount_refund"), ac), StringEntry((X + "_bidder_count"), toString((parseIntValue(ae) + 1))), StringEntry((X + "_highest_bid"), toString(ab)), StringEntry((X + "_winner_of_nft"), toBase58String(p.caller.bytes)), StringEntry((X + "_nft_id"), toBase58String(m)), StringEntry((X + "_nft_owner"), r), StringEntry((((B + "_") + X) + "_highest_bid"), toString(ab)), StringEntry((((B + "_") + X) + "_winner"), toBase58String(p.caller.bytes)), StringEntry((((B + "_") + X) + "_bidder_count"), toString((parseIntValue(ae) + 1))), StringEntry((((B + "_") + X) + "_nft_id"), toBase58String(m)), StringEntry((((B + "_") + X) + "_nft_owner"), r), StringEntry((B + "_bid_for_nft_by"), toBase58String(V)), StringEntry((B + "_bid_price_place"), Y)]
160+ else if ((ag == "0"))
161+ then [StringEntry((ab + "_highest_bid"), toString(af)), StringEntry((ab + "_winner_of_nft"), toBase58String(p.caller.bytes)), StringEntry((ab + "_bidder_count"), toString((parseIntValue(ai) + 1))), StringEntry((ab + "_nft_id"), toBase58String(m)), StringEntry((ab + "_nft_owner"), r), StringEntry((((C + "_") + ab) + "_highest_bid"), toString(af)), StringEntry((((C + "_") + ab) + "_winner"), toBase58String(p.caller.bytes)), StringEntry((((C + "_") + ab) + "_bidder_count"), toString((parseIntValue(ai) + 1))), StringEntry((((C + "_") + ab) + "_nft_id"), toBase58String(m)), StringEntry((((C + "_") + ab) + "_nft_owner"), r), StringEntry((C + "_bid_for_nft_by"), toBase58String(Z)), StringEntry((C + "_bid_price_place"), ac), StringEntry((C + "_previous_bid_amount_refund_to_address"), aj), StringEntry((C + "_prevoius_bid_amount_refund"), ag)]
162+ else if ((ag != "0"))
163+ then [ScriptTransfer(Address(fromBase58String(aj)), parseIntValue(ag), ae), StringEntry((C + "_previous_bid_amount_refund_to_address"), aj), StringEntry((C + "_prevoius_bid_amount_refund"), ag), StringEntry((ab + "_bidder_count"), toString((parseIntValue(ai) + 1))), StringEntry((ab + "_highest_bid"), toString(af)), StringEntry((ab + "_winner_of_nft"), toBase58String(p.caller.bytes)), StringEntry((ab + "_nft_id"), toBase58String(m)), StringEntry((ab + "_nft_owner"), r), StringEntry((((C + "_") + ab) + "_highest_bid"), toString(af)), StringEntry((((C + "_") + ab) + "_winner"), toBase58String(p.caller.bytes)), StringEntry((((C + "_") + ab) + "_bidder_count"), toString((parseIntValue(ai) + 1))), StringEntry((((C + "_") + ab) + "_nft_id"), toBase58String(m)), StringEntry((((C + "_") + ab) + "_nft_owner"), r), StringEntry((C + "_bid_for_nft_by"), toBase58String(Z)), StringEntry((C + "_bid_price_place"), ac)]
150164 else nil
151165 }
152166
153167
154168
155169 @Callable(p)
156-func acceptBidOffer (X,P,ag,Z) = {
157- let ah = "9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq"
158- let B = toBase58String(p.transactionId)
159- let ai = fromBase58String(Z)
160- let V = p.caller.bytes
161- let m = fromBase58String(P)
162- let aj = getStringValue(this, (X + "_highest_bid"))
163- let ak = ((parseIntValue(aj) / 1000) * 975)
164- let O = ((parseIntValue(aj) / 1000) * 25)
165- let al = getStringValue(this, (X + "_winner_of_nft"))
166- if ((Z == ah))
167- then [ScriptTransfer(Address(V), ak, ai), ScriptTransfer(Address(fromBase58String(al)), 1, m), StringEntry((B + "_amount_paid_to_owner"), aj), StringEntry((B + "_nft_transfer_to"), al), StringEntry((B + "_nft_status"), "REWARDED"), StringEntry((X + "_amount_paid_to_owner"), aj), StringEntry((X + "_nft_transfer_to"), al), StringEntry((X + "_nft_status"), "REWARDED")]
168- else if ((Z == "WAVES"))
169- then [ScriptTransfer(Address(V), ak, unit), ScriptTransfer(Address(fromBase58String(al)), 1, m), StringEntry((B + "_amount_paid_to_owner"), aj), StringEntry((B + "_nft_transfer_to"), al), StringEntry((B + "_nft_status"), "REWARDED"), StringEntry((X + "_amount_paid_to_owner"), aj), StringEntry((X + "_nft_transfer_to"), al), StringEntry((X + "_nft_status"), "REWARDED")]
170- else nil
170+func acceptBidOffer (ab,T,ak,L,w,ad) = {
171+ let al = "9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq"
172+ let C = toBase58String(p.transactionId)
173+ let am = fromBase58String(ad)
174+ let Z = p.caller.bytes
175+ let m = fromBase58String(T)
176+ let an = getStringValue(this, (ab + "_highest_bid"))
177+ let ao = ((parseIntValue(an) / 1000) * 975)
178+ let Q = ((parseIntValue(an) / 1000) * 25)
179+ let R = ((parseIntValue(an) / 100) * parseIntValue(w))
180+ let ap = (parseIntValue(an) - (R + Q))
181+ let aq = getStringValue(this, (ab + "_winner_of_nft"))
182+ if (if ((ad == al))
183+ then (toUtf8String(Z) == L)
184+ else false)
185+ then [ScriptTransfer(Address(Z), ao, am), ScriptTransfer(Address(fromBase58String(aq)), 1, m), StringEntry((C + "_amount_paid_to_owner"), an), StringEntry((C + "_nft_transfer_to"), aq), StringEntry((C + "_nft_status"), "REWARDED"), StringEntry((ab + "_amount_paid_to_owner"), an), StringEntry((ab + "_nft_transfer_to"), aq), StringEntry((ab + "_nft_status"), "REWARDED")]
186+ else if (if ((ad == al))
187+ then (toUtf8String(Z) != L)
188+ else false)
189+ then [ScriptTransfer(Address(Z), ao, am), ScriptTransfer(Address(fromBase58String(aq)), 1, m), ScriptTransfer(Address(fromBase58String(L)), ap, am), StringEntry((C + "_amount_paid_to_owner"), an), StringEntry((C + "_nft_transfer_to"), aq), StringEntry((C + "_nft_status"), "REWARDED"), StringEntry((ab + "_amount_paid_to_owner"), an), StringEntry((ab + "_nft_transfer_to"), aq), StringEntry((ab + "_nft_status"), "REWARDED")]
190+ else if (if ((ad == "WAVES"))
191+ then (toUtf8String(Z) == L)
192+ else false)
193+ then [ScriptTransfer(Address(Z), ao, unit), ScriptTransfer(Address(fromBase58String(aq)), 1, m), StringEntry((C + "_amount_paid_to_owner"), an), StringEntry((C + "_nft_transfer_to"), aq), StringEntry((C + "_nft_status"), "REWARDED"), StringEntry((ab + "_amount_paid_to_owner"), an), StringEntry((ab + "_nft_transfer_to"), aq), StringEntry((ab + "_nft_status"), "REWARDED")]
194+ else if (if ((ad == "WAVES"))
195+ then (toUtf8String(Z) != L)
196+ else false)
197+ then [ScriptTransfer(Address(Z), ao, unit), ScriptTransfer(Address(fromBase58String(aq)), 1, m), ScriptTransfer(Address(fromBase58String(L)), ap, unit), StringEntry((C + "_amount_paid_to_owner"), an), StringEntry((C + "_nft_transfer_to"), aq), StringEntry((C + "_nft_status"), "REWARDED"), StringEntry((ab + "_amount_paid_to_owner"), an), StringEntry((ab + "_nft_transfer_to"), aq), StringEntry((ab + "_nft_status"), "REWARDED")]
198+ else nil
171199 }
172200
173201
174202
175203 @Callable(p)
176-func cancelAuction (X) = {
177- let B = toBase58String(p.transactionId)
178- let V = p.caller.bytes
179- let am = getStringValue(this, (X + "_nft_status"))
180- let an = getStringValue(this, (X + "_winner_of_nft"))
181- let ao = getStringValue(this, (X + "_nft_owner"))
182- let P = getStringValue(this, (X + "_nft_on_auction"))
183- let ap = getStringValue(this, (X + "_highest_bid"))
184- if ((an == "0"))
185- then [StringEntry(((B + X) + "_nft_status"), "CANCELED"), ScriptTransfer(Address(fromBase58String(ao)), 1, fromBase58String(P))]
186- else if ((an != "0"))
204+func cancelAuction (ab) = {
205+ let C = toBase58String(p.transactionId)
206+ let Z = p.caller.bytes
207+ let ar = getStringValue(this, (ab + "_nft_status"))
208+ let as = getStringValue(this, (ab + "_winner_of_nft"))
209+ let at = getStringValue(this, (ab + "_nft_owner"))
210+ let T = getStringValue(this, (ab + "_nft_on_auction"))
211+ let au = getStringValue(this, (ab + "_highest_bid"))
212+ if ((as == "0"))
213+ then [StringEntry(((C + ab) + "_nft_status"), "CANCELED"), ScriptTransfer(Address(fromBase58String(at)), 1, fromBase58String(T))]
214+ else if ((as != "0"))
187215 then throw("soory you can't cancel it because already auction placed by someone")
188216 else nil
189217 }
190218
191219
192220
193221 @Callable(p)
194-func manualFundTransfer (aq,ar) = {
195- let as = p.caller.bytes
196- let at = fromBase58String(aq)
197- let M = p.payments[0].amount
198- let O = ((M / 1000) * 25)
199- let au = (M - O)
222+func manualFundTransfer (av,aw) = {
223+ let ax = p.caller.bytes
224+ let ay = fromBase58String(av)
225+ let O = p.payments[0].amount
226+ let Q = ((O / 1000) * 25)
227+ let az = (O - Q)
200228 if ((p.payments[0].assetId == unit))
201- then [IntegerEntry((toBase58String(as) + "_transfer"), M), StringEntry("platform_fee", toString(O)), StringEntry((toBase58String(as) + "_transfer_to"), aq), ScriptTransfer(Address(at), au, unit)]
229+ then [IntegerEntry((toBase58String(ax) + "_transfer"), O), StringEntry("platform_fee", toString(Q)), StringEntry((toBase58String(ax) + "_transfer_to"), av), ScriptTransfer(Address(ay), az, unit)]
202230 else if ((p.payments[0].assetId == f))
203- then [IntegerEntry((toBase58String(as) + "_transfer"), M), IntegerEntry("platform_fee", O), StringEntry((toBase58String(as) + "_transfer_to"), aq), ScriptTransfer(Address(at), au, f)]
231+ then [IntegerEntry((toBase58String(ax) + "_transfer"), O), IntegerEntry("platform_fee", Q), StringEntry((toBase58String(ax) + "_transfer_to"), av), ScriptTransfer(Address(ay), az, f)]
204232 else nil
205233 }
206234
207235
208236
209237 @Callable(p)
210-func nftback (X) = {
211- let V = p.caller.bytes
212- let P = getStringValue(this, (X + "_nft_on_auction"))
213- let ao = getStringValue(this, (X + "_nft_owner"))
214-[StringEntry((X + "_nft_status"), "Auction_time over"), ScriptTransfer(Address(fromBase58String(ao)), 1, fromBase58String(P))]
238+func nftback (ab) = {
239+ let Z = p.caller.bytes
240+ let T = getStringValue(this, (ab + "_nft_on_auction"))
241+ let at = getStringValue(this, (ab + "_nft_owner"))
242+[StringEntry((ab + "_nft_status"), "Auction_time over"), ScriptTransfer(Address(fromBase58String(at)), 1, fromBase58String(T))]
215243 }
216244
217245
218246
219247 @Callable(p)
220-func withdrawMoney (X,Z) = {
221- let V = p.caller.bytes
222- let ah = "9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq"
223- let B = toBase58String(p.transactionId)
224- let ai = fromBase58String(Z)
225- let av = getStringValue(this, (X + "_highest_bid"))
226- let aw = getStringValue(this, (X + "_winner"))
227- let ax = getStringValue(this, (X + "_nft_id"))
228- if ((Z == ah))
229- then [StringEntry((X + "_nft_bid"), "WITHDRAW"), StringEntry((X + "_nft_id"), ax), StringEntry((X + "_bidding_price_refund_amount"), av), ScriptTransfer(p.caller, parseIntValue(av), ai)]
230- else if ((Z == "WAVES"))
231- then [StringEntry((X + "_nft_bid"), "WITHDRAW"), StringEntry((X + "_nft_id"), ax), StringEntry((X + "_bidding_price_refund_amount"), av), ScriptTransfer(p.caller, parseIntValue(av), unit)]
248+func withdrawMoney (ab,ad) = {
249+ let Z = p.caller.bytes
250+ let al = "9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq"
251+ let C = toBase58String(p.transactionId)
252+ let am = fromBase58String(ad)
253+ let aA = getStringValue(this, (ab + "_highest_bid"))
254+ let aB = getStringValue(this, (ab + "_winner"))
255+ let aC = getStringValue(this, (ab + "_nft_id"))
256+ if ((ad == al))
257+ then [StringEntry((ab + "_nft_bid"), "WITHDRAW"), StringEntry((ab + "_nft_id"), aC), StringEntry((ab + "_bidding_price_refund_amount"), aA), ScriptTransfer(p.caller, parseIntValue(aA), am)]
258+ else if ((ad == "WAVES"))
259+ then [StringEntry((ab + "_nft_bid"), "WITHDRAW"), StringEntry((ab + "_nft_id"), aC), StringEntry((ab + "_bidding_price_refund_amount"), aA), ScriptTransfer(p.caller, parseIntValue(aA), unit)]
232260 else nil
233261 }
234262
235263
236264
237265 @Callable(p)
238-func buyAllProducts_asimi (ay) = {
239- let az = p.caller
240- let aA = assetBalance(az, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')
241- let M = value(p.payments[0].amount)
242- let aB = (M - ((M / 1000) * 25))
243- let aC = (M - aB)
244- let aD = value(p.payments[1].amount)
245- let aE = (aD - ((aD / 1000) * 25))
246- let aF = (M - aB)
247- let aG = value(p.payments[2].amount)
248- let aH = (aG - ((aG / 1000) * 25))
249- let aI = (M - aB)
250- let aJ = value(p.payments[3].amount)
251- let aK = (aJ - ((aJ / 1000) * 25))
252- let aL = (M - aB)
253- let aM = value(p.payments[4].amount)
254- let aN = (aM - ((aM / 1000) * 25))
255- let aO = (M - aB)
256- let aP = split(ay[0], "_")
257- let aQ = split(ay[1], "_")
258- let aR = split(ay[2], "_")
259- let aS = split(ay[3], "_")
260- let aT = split(ay[4], "_")
261- if ((M > aA))
266+func buyAllProducts_asimi (aD) = {
267+ let aE = p.caller
268+ let aF = assetBalance(aE, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')
269+ let aG = split(aD[0], "_")
270+ let aH = split(aD[1], "_")
271+ let aI = split(aD[2], "_")
272+ let aJ = split(aD[3], "_")
273+ let aK = split(aD[4], "_")
274+ let O = value(p.payments[0].amount)
275+ let aL = (O - ((O / 1000) * 25))
276+ let aM = (O - aL)
277+ let R = ((O / 100) * parseIntValue(aG[3]))
278+ let aN = (O - (R + aM))
279+ let aO = value(p.payments[1].amount)
280+ let aP = (aO - ((aO / 1000) * 25))
281+ let aQ = (O - aP)
282+ let aR = ((O / 100) * parseIntValue(aH[3]))
283+ let aS = (O - (R + aM))
284+ let aT = value(p.payments[2].amount)
285+ let aU = (aT - ((aT / 1000) * 25))
286+ let aV = (O - aU)
287+ let aW = ((O / 100) * parseIntValue(aI[3]))
288+ let aX = (O - (R + aM))
289+ let aY = value(p.payments[3].amount)
290+ let aZ = (aY - ((aY / 1000) * 25))
291+ let ba = (O - aZ)
292+ let bb = ((O / 100) * parseIntValue(aJ[3]))
293+ let bc = (O - (R + aM))
294+ let bd = value(p.payments[4].amount)
295+ let be = (bd - ((bd / 1000) * 25))
296+ let bf = (O - be)
297+ let bg = ((O / 100) * parseIntValue(aK[3]))
298+ let bh = (O - (R + aM))
299+ if ((O > aF))
262300 then throw("Buyer does not have enough funds to complete the purchase.")
263- else if ((size(ay) == 1))
264- then [StringEntry((("first_nft_Info=" + "nftId") + aP[0]), ("buyer" + toString(az))), StringEntry((("first_nft_Info=" + "seller_address") + aP[1]), ("price" + aP[2])), ScriptTransfer(az, 1, fromBase58String(aP[0])), ScriptTransfer(Address(fromBase58String(aP[1])), aB, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')]
265- else if ((size(ay) == 2))
266- then [StringEntry((((((("first_nft_Info=" + "nftId") + aP[0]) + "seller_address") + aP[1]) + "price") + aP[2]), ("buyer" + toString(az))), StringEntry((((((("second_nft_Info=" + "nftId") + aQ[0]) + "seller_address") + aQ[1]) + "price") + aQ[2]), ("buyer" + toString(az))), ScriptTransfer(az, 1, fromBase58String(aP[0])), ScriptTransfer(az, 1, fromBase58String(aQ[0])), ScriptTransfer(Address(fromBase58String(aP[1])), aB, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aQ[1])), aE, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')]
267- else if ((size(ay) == 3))
268- then [StringEntry((((((("first_nft_Info=" + "nftId") + aP[0]) + "seller_address") + aP[1]) + "price") + aP[2]), ("buyer" + toString(az))), StringEntry((((((("second_nft_Info=" + "nftId") + aQ[0]) + "seller_address") + aQ[1]) + "price") + aQ[2]), ("buyer" + toString(az))), StringEntry((((((("third_nft_Info=" + "nftId") + aR[0]) + "seller_address") + aR[1]) + "price") + aR[2]), ("buyer" + toString(az))), ScriptTransfer(az, 1, fromBase58String(aP[0])), ScriptTransfer(az, 1, fromBase58String(aQ[0])), ScriptTransfer(az, 1, fromBase58String(aR[0])), ScriptTransfer(Address(fromBase58String(aP[1])), aB, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aQ[1])), aE, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aR[1])), aH, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')]
269- else if ((size(ay) == 4))
270- then [StringEntry((((((("first_nft_Info=" + "nftId") + aP[0]) + "seller_address") + aP[1]) + "price") + aP[2]), ("buyer" + toString(az))), StringEntry((((((("second_nft_Info=" + "nftId") + aQ[0]) + "seller_address") + aQ[1]) + "price") + aQ[2]), ("buyer" + toString(az))), StringEntry((((((("third_nft_Info=" + "nftId") + aR[0]) + "seller_address") + aR[1]) + "price") + aR[2]), ("buyer" + toString(az))), StringEntry((((((("fourth_nft_Info=" + "nftId") + aS[0]) + "seller_address") + aS[1]) + "price") + aS[2]), ("buyer" + toString(az))), ScriptTransfer(az, 1, fromBase58String(aP[0])), ScriptTransfer(az, 1, fromBase58String(aQ[0])), ScriptTransfer(az, 1, fromBase58String(aR[0])), ScriptTransfer(az, 1, fromBase58String(aS[0])), ScriptTransfer(Address(fromBase58String(aP[1])), aB, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aQ[1])), aE, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aR[1])), aH, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aS[1])), aK, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')]
271- else if ((size(ay) == 5))
272- then [StringEntry((((((("first_nft_Info=" + "nftId") + aP[0]) + "seller_address") + aP[1]) + "price") + aP[2]), ("buyer" + toString(az))), StringEntry((((((("second_nft_Info=" + "nftId") + aQ[0]) + "seller_address") + aQ[1]) + "price") + aQ[2]), ("buyer" + toString(az))), StringEntry((((((("third_nft_Info=" + "nftId") + aR[0]) + "seller_address") + aR[1]) + "price") + aR[2]), ("buyer" + toString(az))), StringEntry((((((("fourth_nft_Info=" + "nftId") + aS[0]) + "seller_address") + aS[1]) + "price") + aS[2]), ("buyer" + toString(az))), StringEntry((((((("fifth_nft_Info=" + "nftId") + aT[0]) + "seller_address") + aT[1]) + "price") + aT[2]), ("buyer" + toString(az))), ScriptTransfer(az, 1, fromBase58String(aP[0])), ScriptTransfer(az, 1, fromBase58String(aQ[0])), ScriptTransfer(az, 1, fromBase58String(aR[0])), ScriptTransfer(az, 1, fromBase58String(aS[0])), ScriptTransfer(az, 1, fromBase58String(aT[0])), ScriptTransfer(Address(fromBase58String(aP[1])), aB, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aQ[1])), aE, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aR[1])), aH, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aS[1])), aK, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aT[1])), aN, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')]
273- else if ((size(ay) > 5))
274- then throw("sorry! maximum limit of your cart is 5 items")
275- else nil
276- }
277-
278-
279-
280-@Callable(p)
281-func buyAllProducts_waves (ay) = {
282- let az = p.caller
283- let aA = assetBalance(az, g)
284- let M = value(p.payments[0].amount)
285- let aB = (M - ((M / 1000) * 25))
286- let aC = (M - aB)
287- let aD = value(p.payments[1].amount)
288- let aE = (aD - ((aD / 1000) * 25))
289- let aF = (M - aB)
290- let aG = value(p.payments[2].amount)
291- let aH = (aG - ((aG / 1000) * 25))
292- let aI = (M - aB)
293- let aJ = value(p.payments[3].amount)
294- let aK = (aJ - ((aJ / 1000) * 25))
295- let aL = (M - aB)
296- let aM = value(p.payments[4].amount)
297- let aN = (aM - ((aM / 1000) * 25))
298- let aO = (M - aB)
299- let aP = split(ay[0], "_")
300- let aQ = split(ay[1], "_")
301- let aR = split(ay[2], "_")
302- let aS = split(ay[3], "_")
303- let aT = split(ay[4], "_")
304- if ((size(ay) == 1))
305- then [StringEntry((((((("first_nft_Info=" + "nftId") + aP[0]) + "seller_address") + aP[1]) + "price") + aP[2]), ("buyer" + toString(az))), ScriptTransfer(az, 1, fromBase58String(aP[0])), ScriptTransfer(Address(fromBase58String(aP[1])), aB, unit)]
306- else if ((size(ay) == 2))
307- then [StringEntry((((((("first_nft_Info=" + "nftId") + aP[0]) + "seller_address") + aP[1]) + "price") + aP[2]), ("buyer" + toString(az))), StringEntry((((((("second_nft_Info=" + "nftId") + aQ[0]) + "seller_address") + aQ[1]) + "price") + aQ[2]), ("buyer" + toString(az))), ScriptTransfer(az, 1, fromBase58String(aP[0])), ScriptTransfer(az, 1, fromBase58String(aQ[0])), ScriptTransfer(Address(fromBase58String(aP[1])), aB, unit), ScriptTransfer(Address(fromBase58String(aQ[1])), aE, unit)]
308- else if ((size(ay) == 3))
309- then [StringEntry((((((("first_nft_Info=" + "nftId") + aP[0]) + "seller_address") + aP[1]) + "price") + aP[2]), ("buyer" + toString(az))), StringEntry((((((("second_nft_Info=" + "nftId") + aQ[0]) + "seller_address") + aQ[1]) + "price") + aQ[2]), ("buyer" + toString(az))), StringEntry((((((("third_nft_Info=" + "nftId") + aR[0]) + "seller_address") + aR[1]) + "price") + aR[2]), ("buyer" + toString(az))), ScriptTransfer(az, 1, fromBase58String(aP[0])), ScriptTransfer(az, 1, fromBase58String(aQ[0])), ScriptTransfer(az, 1, fromBase58String(aR[0])), ScriptTransfer(Address(fromBase58String(aP[1])), aB, unit), ScriptTransfer(Address(fromBase58String(aQ[1])), aE, unit), ScriptTransfer(Address(fromBase58String(aR[1])), aH, unit)]
310- else if ((size(ay) == 4))
311- then [StringEntry((((((("first_nft_Info=" + "nftId") + aP[0]) + "seller_address") + aP[1]) + "price") + aP[2]), ("buyer" + toString(az))), StringEntry((((((("second_nft_Info=" + "nftId") + aQ[0]) + "seller_address") + aQ[1]) + "price") + aQ[2]), ("buyer" + toString(az))), StringEntry((((((("third_nft_Info=" + "nftId") + aR[0]) + "seller_address") + aR[1]) + "price") + aR[2]), ("buyer" + toString(az))), StringEntry((((((("fourth_nft_Info=" + "nftId") + aS[0]) + "seller_address") + aS[1]) + "price") + aS[2]), ("buyer" + toString(az))), ScriptTransfer(az, 1, fromBase58String(aP[0])), ScriptTransfer(az, 1, fromBase58String(aQ[0])), ScriptTransfer(az, 1, fromBase58String(aR[0])), ScriptTransfer(az, 1, fromBase58String(aS[0])), ScriptTransfer(Address(fromBase58String(aP[1])), aB, unit), ScriptTransfer(Address(fromBase58String(aQ[1])), aE, unit), ScriptTransfer(Address(fromBase58String(aR[1])), aH, unit), ScriptTransfer(Address(fromBase58String(aS[1])), aK, unit)]
312- else if ((size(ay) == 5))
313- then [StringEntry((((((("first_nft_Info=" + "nftId") + aP[0]) + "seller_address") + aP[1]) + "price") + aP[2]), ("buyer" + toString(az))), StringEntry((((((("second_nft_Info=" + "nftId") + aQ[0]) + "seller_address") + aQ[1]) + "price") + aQ[2]), ("buyer" + toString(az))), StringEntry((((((("third_nft_Info=" + "nftId") + aR[0]) + "seller_address") + aR[1]) + "price") + aR[2]), ("buyer" + toString(az))), StringEntry((((((("fourth_nft_Info=" + "nftId") + aS[0]) + "seller_address") + aS[1]) + "price") + aS[2]), ("buyer" + toString(az))), StringEntry((((((("fifth_nft_Info=" + "nftId") + aT[0]) + "seller_address") + aT[1]) + "price") + aT[2]), ("buyer" + toString(az))), ScriptTransfer(az, 1, fromBase58String(aP[0])), ScriptTransfer(az, 1, fromBase58String(aQ[0])), ScriptTransfer(az, 1, fromBase58String(aR[0])), ScriptTransfer(az, 1, fromBase58String(aS[0])), ScriptTransfer(az, 1, fromBase58String(aT[0])), ScriptTransfer(Address(fromBase58String(aP[1])), aB, unit), ScriptTransfer(Address(fromBase58String(aQ[1])), aE, unit), ScriptTransfer(Address(fromBase58String(aR[1])), aH, unit), ScriptTransfer(Address(fromBase58String(aS[1])), aK, unit), ScriptTransfer(Address(fromBase58String(aT[1])), aN, unit)]
314- else if ((size(ay) > 5))
315- then throw("sorry! maximum limit of your cart is 5 items")
316- else nil
301+ else if (if ((size(aD) == 1))
302+ then (aG[1] == aG[4])
303+ else false)
304+ then [StringEntry((("first_nft_Info=" + "nftId") + aG[0]), ("buyer" + toString(aE))), StringEntry((("first_nft_Info=" + "seller_address") + aG[1]), ("price" + aG[2])), ScriptTransfer(aE, 1, fromBase58String(aG[0])), ScriptTransfer(Address(fromBase58String(aG[1])), aL, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')]
305+ else if (if ((size(aD) == 1))
306+ then (aG[1] != aG[4])
307+ else false)
308+ then [StringEntry((("first_nft_Info=" + "nftId") + aG[0]), ("buyer" + toString(aE))), StringEntry((("first_nft_Info=" + "seller_address") + aG[1]), ("price" + aG[2])), ScriptTransfer(aE, 1, fromBase58String(aG[0])), ScriptTransfer(Address(fromBase58String(aG[1])), aN, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aG[4])), R, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')]
309+ else if ((size(aD) == 2))
310+ then [StringEntry((((((("first_nft_Info=" + "nftId") + aG[0]) + "seller_address") + aG[1]) + "price") + aG[2]), ("buyer" + toString(aE))), StringEntry((((((("second_nft_Info=" + "nftId") + aH[0]) + "seller_address") + aH[1]) + "price") + aH[2]), ("buyer" + toString(aE))), ScriptTransfer(aE, 1, fromBase58String(aG[0])), ScriptTransfer(aE, 1, fromBase58String(aH[0])), ScriptTransfer(Address(fromBase58String(aG[1])), aN, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aG[4])), R, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aH[1])), aS, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aH[4])), aR, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')]
311+ else if ((size(aD) == 3))
312+ then [StringEntry((((((("first_nft_Info=" + "nftId") + aG[0]) + "seller_address") + aG[1]) + "price") + aG[2]), ("buyer" + toString(aE))), StringEntry((((((("second_nft_Info=" + "nftId") + aH[0]) + "seller_address") + aH[1]) + "price") + aH[2]), ("buyer" + toString(aE))), StringEntry((((((("third_nft_Info=" + "nftId") + aI[0]) + "seller_address") + aI[1]) + "price") + aI[2]), ("buyer" + toString(aE))), ScriptTransfer(aE, 1, fromBase58String(aG[0])), ScriptTransfer(aE, 1, fromBase58String(aH[0])), ScriptTransfer(aE, 1, fromBase58String(aI[0])), ScriptTransfer(Address(fromBase58String(aG[1])), aN, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aG[4])), R, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aH[1])), aS, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aH[4])), aR, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aI[1])), aX, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aI[4])), aW, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')]
313+ else if ((size(aD) == 4))
314+ then [StringEntry((((((("first_nft_Info=" + "nftId") + aG[0]) + "seller_address") + aG[1]) + "price") + aG[2]), ("buyer" + toString(aE))), StringEntry((((((("second_nft_Info=" + "nftId") + aH[0]) + "seller_address") + aH[1]) + "price") + aH[2]), ("buyer" + toString(aE))), StringEntry((((((("third_nft_Info=" + "nftId") + aI[0]) + "seller_address") + aI[1]) + "price") + aI[2]), ("buyer" + toString(aE))), StringEntry((((((("fourth_nft_Info=" + "nftId") + aJ[0]) + "seller_address") + aJ[1]) + "price") + aJ[2]), ("buyer" + toString(aE))), ScriptTransfer(aE, 1, fromBase58String(aG[0])), ScriptTransfer(aE, 1, fromBase58String(aH[0])), ScriptTransfer(aE, 1, fromBase58String(aI[0])), ScriptTransfer(aE, 1, fromBase58String(aJ[0])), ScriptTransfer(Address(fromBase58String(aG[1])), aL, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aG[4])), R, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aH[1])), aP, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aH[4])), aR, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aI[1])), aU, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aI[4])), aW, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aJ[1])), aZ, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aJ[4])), bb, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')]
315+ else if ((size(aD) == 5))
316+ then [StringEntry((((((("first_nft_Info=" + "nftId") + aG[0]) + "seller_address") + aG[1]) + "price") + aG[2]), ("buyer" + toString(aE))), StringEntry((((((("second_nft_Info=" + "nftId") + aH[0]) + "seller_address") + aH[1]) + "price") + aH[2]), ("buyer" + toString(aE))), StringEntry((((((("third_nft_Info=" + "nftId") + aI[0]) + "seller_address") + aI[1]) + "price") + aI[2]), ("buyer" + toString(aE))), StringEntry((((((("fourth_nft_Info=" + "nftId") + aJ[0]) + "seller_address") + aJ[1]) + "price") + aJ[2]), ("buyer" + toString(aE))), StringEntry((((((("fifth_nft_Info=" + "nftId") + aK[0]) + "seller_address") + aK[1]) + "price") + aK[2]), ("buyer" + toString(aE))), ScriptTransfer(aE, 1, fromBase58String(aG[0])), ScriptTransfer(aE, 1, fromBase58String(aH[0])), ScriptTransfer(aE, 1, fromBase58String(aI[0])), ScriptTransfer(aE, 1, fromBase58String(aJ[0])), ScriptTransfer(aE, 1, fromBase58String(aK[0])), ScriptTransfer(Address(fromBase58String(aG[1])), aL, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aG[4])), R, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aH[1])), aP, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aH[4])), aR, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aI[1])), aU, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aI[4])), aW, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aJ[1])), aZ, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aJ[4])), bb, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aK[1])), be, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'), ScriptTransfer(Address(fromBase58String(aK[4])), bg, base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq')]
317+ else if ((size(aD) > 5))
318+ then throw("sorry! maximum limit of your cart is 5 items")
319+ else nil
317320 }
318321
319322

github/deemru/w8io/169f3d6 
149.45 ms