tx · 2XTB7r1MhS6zeWgN9qFa8Nc5Zj4o2XmVNHeYGJa2hq47 3PJXxPS9FxZsSLyP9gA47dSLwMinoFyfYFC: -0.04000000 Waves 2024.01.19 10:14 [4003835] smart account 3PJXxPS9FxZsSLyP9gA47dSLwMinoFyfYFC > SELF 0.00000000 Waves
{ "type": 13, "id": "2XTB7r1MhS6zeWgN9qFa8Nc5Zj4o2XmVNHeYGJa2hq47", "fee": 4000000, "feeAssetId": null, "timestamp": 1705648489195, "version": 2, "chainId": 87, "sender": "3PJXxPS9FxZsSLyP9gA47dSLwMinoFyfYFC", "senderPublicKey": "B3uLVcDr7gdvWSB4wQcukWjHbPgahoQp3PtkECBkj7yb", "proofs": [ "3MzzXXFJtWkiGNdadtcigwAZjey3uP7oTbCp9PUnayzTR8HwHcFRQeehTDc2GyJxZbwKqwLtmrJPej3R4yLzYj2S" ], "script": "base64:BgI/CAISABIAEgASABIAEgASABIAEgASABIAEgASAwoBCBIAEgASABIAEgMKAQgSABIAEgASABIDCgEIEgQKAgEIMAENdHJ5R2V0SW50ZWdlcgIHYWRkcmVzcwNrZXkEByRtYXRjaDAJAJoIAgUHYWRkcmVzcwUDa2V5AwkAAQIFByRtYXRjaDACA0ludAQBYgUHJG1hdGNoMAUBYgAAAQx0cnlHZXRTdHJpbmcCB2FkZHJlc3MDa2V5BAckbWF0Y2gwCQCdCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWIFByRtYXRjaDAFAWICAAACZDYAwIQ9AAJkOACAwtcvAA9taW5pbXVtSW5jcmVhc2UFAmQ4AAZwb29sSWQBGgFXhZ0sMNX8Az5hxa3ekr/FKpHzma4aQUAKAAdtYXRjaGVyCQEHQWRkcmVzcwEBGgFXjGf/mV44VecDCk0khCwXA38b9yOaAHEmAAl3aGlybHBvb2wBIFnjjdzCtSO6ShTcxNCvFAnmZOYEviUGCyZO5VBtl1nHAAN4dG4BILYmKcME9c5TkaQOS3UkL2SMUbH6369UKb1I0h0qsqrRAAdidXJueHRuASAkT3V5an4zObj7DP+EqXFcXsot3jOgxF1p+epEEexMVAANYnVybnh0blN0cmluZwkA2AQBBQdidXJueHRuAAJ3eAEgkwEcq6nHbiVXzmaecba9qmv4POhYCyru2aBOuzzcFLEABndlc3RJZAEgMYOEb0Wf3bcdWh4X/UF+RNg32QeT1+Tle4pnJF/jwPkAB3ZpcmVzSWQBILja4jcBYnBfmqhbshkMvQ/DZa91BrZYLd0Hk1ap3amXAAVlZ2dJZAEgo59/TyNyUdEs4iGSYohNDAvz6iJugdWv/AuTF85tsckABnN1cmZJZAEgktH0SuIRASv0fureIY49xfvJ8n3Oh7LtUhnwOk4kWPUABm5zYnRJZAEgVe7DvqoL8FDoccgbqm5wnqSxyP5KLrnB8czFaw94l0sABHd4SWQBIJMBHKupx24lV85mnnG2vapr+DzoWAsq7tmgTrs83BSxAAZzd29wSWQBIMuWPoXm9ZNWT495gxEUeE8mfozeVJJ81uGtwFxoqK7sABZrZXlBZGRyZXNzZXNSZWdpc3RlcmVkAhRBZGRyZXNzZXMgcmVnaXN0ZXJlZAAJYWRkcmVzc2VzCQCzAgIJAQx0cnlHZXRTdHJpbmcCBQR0aGlzBRZrZXlBZGRyZXNzZXNSZWdpc3RlcmVkAAEAE2tleUFtb3VudFJlZ2lzdGVyZWQCEUFtb3VudCBSZWdpc3RlcmVkAA9rZXlQYXJ0aWNpcGFudHMCGHBhcnRpY2lwYW50cyBsaXN0IHN0cmluZwAUa2V5VG90YWxCYWxhbmNlQ291bnQCE3RvdGFsIGJhbGFuY2UgY291bnQAG2tleVRvdGFsQmFsYW5jZUphY2twb3RDb3VudAIbdG90YWwgYmFsYW5jZSBqYWNrcG90IGNvdW50AA9rZXlUb3RhbFNwb25zb3ICDXRvdGFsIHNwb25zb3IAG2tleVRvdGFsQmFsYW5jZVNwb25zb3JDb3VudAIbdG90YWwgYmFsYW5jZSBzcG9uc29yIGNvdW50AANORlQJAQdBZGRyZXNzAQEaAVeL4FU4i35FoET1yjNt6Hc1BMWcAFWOzBMAB1dGU2xpc3QJAMwIAgIsR25weTVuVmFqUFAzWFFRVnhySGJvTUFzWHRqbnlXQXh5Yk1EZEtyYnI4c0QJAMwIAgIsQlQ5UTRtUWRRUW1laTJyNVlOTUJNYXNaQlFqN215TmFpejZRSGJhNWNQWFMJAMwIAgIsQk12a3lGdFBWbUZhdHBGUjlRVkZLUjVNWVRjWlZUWTJWVXdGWjI1dnJBQWMJAMwIAgIsNzdScXU4VExqQmRNdER1WGQ5bzVmVVNHbzY0elFlNUZDY2FvNUw4SHQ5ajgJAMwIAgkBDHRyeUdldFN0cmluZwIFA05GVAIBNQkAzAgCCQEMdHJ5R2V0U3RyaW5nAgUDTkZUAgE2CQDMCAIJAQx0cnlHZXRTdHJpbmcCBQNORlQCATcJAMwIAgkBDHRyeUdldFN0cmluZwIFA05GVAIBOAkAzAgCCQEMdHJ5R2V0U3RyaW5nAgUDTkZUAgE5CQDMCAIJAQx0cnlHZXRTdHJpbmcCBQNORlQCAjEwBQNuaWwAB0JCQmxpc3QJAMwIAgIsOXBDeG9HdEQxOEdlSDlnQ2VtenFyakhNTWpmeUJRRGZzclJBdXhTUmFnTWMJAMwIAgIsN0RnRmdDa0JqVkRjNVA5Wmd3c1ZMOVNpVGk3a1hKdVM0YVJWZ2I3WkhXM2sJAMwIAgIsNzZiVHZFOHR0SHZzdU4xRnVINEtjOFFVVzRrTDRtOGMxY2pmc1h5MkdmYlYJAMwIAgIsNFpyZjRINXRpRmNRTDhlUW1uQTJ3SjFYV1BFQkg2aDFHMk1lZlpEWW1jQ0IJAMwIAgIsMkR0QzRuRm54ejVVTTZtYmpQd01WWnBRV1pGVXF4czUyb1pyQmVOUms5QW8JAMwIAgIsRGpaR01BRmZvUVdrTVczUzVGVHNRTjNqb25jWnQ2QnNtaG5FSzNnZ0x4bU4JAMwIAgIsQm5lYVpYRDZvdkRKY1Y1cmdmcjhoc0haYU1Rc0pROERINmE1Z1RuR0NwQmMJAMwIAgIsNEVLZmd6RmtkNVVHS3JqbmFKVjN3N2FyZ1cxWW1GNGhxNTR4V1FGekFYYjkJAMwIAgIsOGhHRGtXS2l1MmlnRHBXVDNIcHI0bWNoREQ2eHdKOWhHbTJoMmpuVXZUcXoJAMwIAgIsRTNablNlanBYTDFYcjZWRzRRb0xoOHhvZDlOTWdwUGU0NzNyOVFrMkhpYkwFA25pbAEEcmFuZAEBaQkAywECCQDLAQIJAMsBAgkAywECCQDLAQIJAMsBAgkAywECCAUBaQ10cmFuc2FjdGlvbklkCAUBaQ9jYWxsZXJQdWJsaWNLZXkIBQlsYXN0QmxvY2sTZ2VuZXJhdGlvblNpZ25hdHVyZQkAmgMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAmgMBBQZoZWlnaHQJAJoDAQkA8AcCBQR0aGlzBQdidXJueHRuCQCaAwEICQDvBwEFB21hdGNoZXIJYXZhaWxhYmxlCQCaAwEJAPAHAgUEdGhpcwUCd3gAA1BaMQEaAVeFnSww1fwDPmHFrd6Sv8UqkfOZrhpBQAoAA1BaMgEaAVf1RmgngA1o304mdXq0odMoMeAJv/V5eTcAA1BaMwEaAVdrUh3hZ11iM5xE9ppvCu7VVcjaIPzs5scAA1BaNAEaAVd8ufIkLHkd+cILYV2n5Ut+Pmb4MdnkIOIAA1BaNQEaAVdzM1uLVnknLEeNcZD2LCCz+T9Cl/2cRdIAA1BaNgEaAVdHHWb6sJRhaJYHMq62QOOh/3POTybYR7oAB1dYc3Rha2UBGgFX6zvnfm4FGMKRpJgWF+Fm10UnIO4lSVaoAANXWDEBGgFXK+KucXt9yTC1IHnnFsVrbVdAgaU4Fj0+AANMUDECLEd5aUhkY041OXNaNDZiYUZ2ajY4cnVMbmdyVFBFdldEdHNkNmpIbTRvNDZuAANXWDIBGgFXwRfLSELOBVNDikdciGeU9BfVx8LU1MNSAANMUDICLDNNUEhNSlZ3WUd5ZUJMUnNIMVJzWWhyVG1lbXY3NTJBRUJ3dUZGVjdnNDlaAARQWncxARoBVwlIVKiYtf/MSkbbEv1LyZMZRjdDmIfXzQEFUFpiYWwDC1Bvb2xhZGRyZXNzB2FkZHJlc3MFYXNzZXQEC2J1cm54dG5JblBaCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQULUG9vbGFkZHJlc3MJAKwCAgkArAICAgdnbG9iYWxfCQDYBAEFBWFzc2V0AghfYmFsYW5jZQQOYWRkcmVzc1N0YWtlUFoJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBQtQb29sYWRkcmVzcwkArAICCQClCAEFB2FkZHJlc3MCDF9pbmRleFN0YWtlZAQMdG90YWxTdGFrZVBaCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQULUG9vbGFkZHJlc3MCF2dsb2JhbF9wb29sVG9rZW5fYW1vdW50CQBrAwULYnVybnh0bkluUFoFDmFkZHJlc3NTdGFrZVBaBQx0b3RhbFN0YWtlUFoBBVdYYmFsAwtQb29sYWRkcmVzcwdhZGRyZXNzBUxQc3RyBAtidXJueHRuSW5XWAkA8AcCCQEHQWRkcmVzcwEFC1Bvb2xhZGRyZXNzBQdidXJueHRuBA5hZGRyZXNzU3Rha2VXWAkBDXRyeUdldEludGVnZXICCQEHQWRkcmVzcwEFB1dYc3Rha2UJAKwCAgkArAICCQCsAgICECVzJXMlc19fc3Rha2VkX18JAKUIAQUHYWRkcmVzcwICX18FBUxQc3RyBAx0b3RhbFN0YWtlV1gJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBQdXWHN0YWtlCQCsAgICFyVzJXMlc19fc3Rha2VkX190b3RhbF9fBQVMUHN0cgkAawMFC2J1cm54dG5JbldYBQ5hZGRyZXNzU3Rha2VXWAUMdG90YWxTdGFrZVdYAQ5idXJueHRuQmFsYW5jZQEBaQkA8AcCCAUBaQZjYWxsZXIFB2J1cm54dG4BDHRvdGFsQmFsYW5jZQEHYWRkcmVzcwQPYnVybnh0bkJhbGFuY2UyCQDwBwIFB2FkZHJlc3MFB2J1cm54dG4EClBaMWJhbGFuY2UJAQVQWmJhbAMFA1BaMQUHYWRkcmVzcwUHYnVybnh0bgQKUFoyYmFsYW5jZQkBBVBaYmFsAwUDUFoyBQdhZGRyZXNzBQdidXJueHRuBApQWjNiYWxhbmNlCQEFUFpiYWwDBQNQWjMFB2FkZHJlc3MFB2J1cm54dG4EClBaNGJhbGFuY2UJAQVQWmJhbAMFA1BaNAUHYWRkcmVzcwUHYnVybnh0bgQKUFo1YmFsYW5jZQkBBVBaYmFsAwUDUFo1BQdhZGRyZXNzBQdidXJueHRuBApQWjZiYWxhbmNlCQEFUFpiYWwDBQNQWjYFB2FkZHJlc3MFB2J1cm54dG4ECldYMWJhbGFuY2UJAQVXWGJhbAMFA1dYMQUHYWRkcmVzcwUDTFAxBApXWDJiYWxhbmNlCQEFV1hiYWwDBQNXWDIFB2FkZHJlc3MFA0xQMgkAZAIJAGQCCQBkAgkAZAIJAGQCCQBkAgkAZAIJAGQCBQ9idXJueHRuQmFsYW5jZTIFClBaMWJhbGFuY2UFClBaMmJhbGFuY2UFClBaM2JhbGFuY2UFClBaNGJhbGFuY2UFClBaNWJhbGFuY2UFClBaNmJhbGFuY2UFCldYMWJhbGFuY2UFCldYMmJhbGFuY2UBFXRvdGFsV2hpcmxwb29sQmFsYW5jZQEHYWRkcmVzcwQQd2hpcmxwb29sQmFsYW5jZQkA8AcCBQdhZGRyZXNzBQl3aGlybHBvb2wEC1BadzFiYWxhbmNlCQEFUFpiYWwDBQRQWncxBQdhZGRyZXNzBQl3aGlybHBvb2wJAGQCBRB3aGlybHBvb2xCYWxhbmNlBQtQWncxYmFsYW5jZRgBaQEIcmVnaXN0ZXIAAwkBCGNvbnRhaW5zAgkBDHRyeUdldFN0cmluZwIFBHRoaXMFFmtleUFkZHJlc3Nlc1JlZ2lzdGVyZWQJAKUIAQgFAWkGY2FsbGVyCQACAQISYWxyZWFkeSByZWdpc3RlcmVkAwkAZwIJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUTa2V5QW1vdW50UmVnaXN0ZXJlZABaCQACAQIUbWF4IHJlZ2lzdGVyZWQgdXNlcnMJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tleUFtb3VudFJlZ2lzdGVyZWQJAGQCCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFE2tleUFtb3VudFJlZ2lzdGVyZWQAAQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgICElJlZ2lzdGVyIGFkZHJlc3M6IAkApAMBCQBkAgkBDXRyeUdldEludGVnZXICBQR0aGlzBRNrZXlBbW91bnRSZWdpc3RlcmVkAAEJAKUIAQgFAWkGY2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIFFmtleUFkZHJlc3Nlc1JlZ2lzdGVyZWQJAKwCAgkArAICCQEMdHJ5R2V0U3RyaW5nAgUEdGhpcwUWa2V5QWRkcmVzc2VzUmVnaXN0ZXJlZAkApQgBCAUBaQZjYWxsZXICASwJAMwIAgkBDEludGVnZXJFbnRyeQIJAKUIAQgFAWkGY2FsbGVyCQEOYnVybnh0bkJhbGFuY2UBBQFpBQNuaWwBaQEMY2hlY2tNeUVudHJ5AAMJAAACCQEIY29udGFpbnMCCQEMdHJ5R2V0U3RyaW5nAgUEdGhpcwUWa2V5QWRkcmVzc2VzUmVnaXN0ZXJlZAkApQgBCAUBaQZjYWxsZXIHCQACAQISbm90IHlldCByZWdpc3RlcmVkCQDMCAIJAQxCb29sZWFuRW50cnkCAgZIT0RMKzEJAGcCCQDwBwIIBQFpBmNhbGxlcgUHYnVybnh0bgkAZAIJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwkApQgBCAUBaQZjYWxsZXIFD21pbmltdW1JbmNyZWFzZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIsaGlnaGVzdCByZWNvcmRlZCBCVVJOLVhUTiBiYWxhbmNlIGJ5IGxvdHRlcnkJAGkCCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMJAKUIAQgFAWkGY2FsbGVyBQJkOAkAzAgCCQEMSW50ZWdlckVudHJ5AgIYY3VycmVudCBCVVJOLVhUTiBiYWxhbmNlCQBpAgkBDmJ1cm54dG5CYWxhbmNlAQUBaQUCZDgJAMwIAgkBDEludGVnZXJFbnRyeQICGXJlcXVpcmVkIEJVUk4tWFROIGJhbGFuY2UJAGkCCQBkAgkBDXRyeUdldEludGVnZXICBQR0aGlzCQClCAEIBQFpBmNhbGxlcgUPbWluaW11bUluY3JlYXNlBQJkOAkAzAgCCQEMSW50ZWdlckVudHJ5AgI1ZW50cmllcyA9IHRvdGFsIEJVUk4tWFROIGJhbGFuY2UgaW5jbCBsaXF1aWRpdHkgcG9vbHMJAGkCCQEMdG90YWxCYWxhbmNlAQgFAWkGY2FsbGVyBQJkOAUDbmlsAWkBBnN0ZXBfMQADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyBAFyCQD8BwQFBHRoaXMCBXJlc2V0BQNuaWwFA25pbAMJAAACBQFyBQFyBAFwCQD8BwQFBHRoaXMCDHBhcnRpY2lwYW50cwUDbmlsBQNuaWwDCQAAAgUBcAUBcAQBdQkA/AcEBQR0aGlzAhJ1cGRhdGVCYWxhbmNlRW50cnkFA25pbAUDbmlsAwkAAAIFAXUFAXUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQZzdGVwXzIAAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgQDdGJhCQD8BwQFBHRoaXMCD3RvdGFsQmFsYW5jZUFsbAUDbmlsBQNuaWwDCQAAAgUDdGJhBQN0YmEEBHRid2EJAPwHBAUEdGhpcwIYdG90YWxCYWxhbmNlV2hpcmxwb29sQWxsBQNuaWwFA25pbAMJAAACBQR0YndhBQR0YndhBAF3CQD8BwQFBHRoaXMCBndpbm5lcgUDbmlsBQNuaWwDCQAAAgUBdwUBdwQCaW4JAPwHBAUEdGhpcwIHaW52b2tlcgUDbmlsBQNuaWwDCQAAAgUCaW4FAmluBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEGc3RlcF8zAAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIEAXAJAPwHBAUEdGhpcwIJcGF5V2lubmVyBQNuaWwFA25pbAMJAAACBQFwBQFwBAFqCQD8BwQFBHRoaXMCB2phY2twb3QFA25pbAUDbmlsAwkAAAIFAWoFAWoDCQAAAgkBEUBleHRyTmF0aXZlKDEwNTYpAQIHamFja3BvdAcFA25pbAQBdwkA/AcEBQR0aGlzAg13aW5uZXJKYWNrcG90BQNuaWwFA25pbAMJAAACBQF3BQF3BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEGc3RlcF80AAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIEAmppCQD8BwQFBHRoaXMCDmphY2twb3RJbnZva2VyBQNuaWwFA25pbAMJAAACBQJqaQUCamkEAnBqCQD8BwQFBHRoaXMCCnBheUphY2twb3QFA25pbAUDbmlsAwkAAAIFAnBqBQJwagUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDHBhcnRpY2lwYW50cwADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyAwkAAAIJARFAZXh0ck5hdGl2ZSgxMDUxKQIFBHRoaXMCBXJlc2V0BwkAAgECC3Jlc2V0IGZpcnN0BARsaXN0CQC8CQIFCWFkZHJlc3NlcwIBLAoBAXACBWFjY3VtB2FkZHJlc3MDCQBmAgkAZAIJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUHYWRkcmVzcwUPbWluaW11bUluY3JlYXNlCQDwBwIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB2FkZHJlc3MFB2J1cm54dG4FBWFjY3VtCQDNCAIFBWFjY3VtBQdhZGRyZXNzBBBwYXJ0aWNpcGFudHNMaXN0CgACJGwFBGxpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBAXACBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFkxpc3Qgc2l6ZSBleGNlZWRzIDEwMDAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJ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AQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZAkAzAgCCQEMSW50ZWdlckVudHJ5AgIRdG90YWwgYmFsYW5jZSBhbGwFFGVudGVyVG90YWxCYWxhbmNlQWxsBQNuaWwBaQEYdG90YWxCYWxhbmNlV2hpcmxwb29sQWxsAAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIDCQAAAgkBEUBleHRyTmF0aXZlKDEwNTEpAgUEdGhpcwIFcmVzZXQHCQACAQILcmVzZXQgZmlyc3QEBGxpc3QJALwJAgkBDHRyeUdldFN0cmluZwIFBHRoaXMFD2tleVBhcnRpY2lwYW50cwIBLAoBAmJhAgVhY2N1bQdhZGRyZXNzCQBkAgUFYWNjdW0JARV0b3RhbFdoaXJscG9vbEJhbGFuY2UBCQERQGV4dHJOYXRpdmUoMTA2MikBBQdhZGRyZXNzBBRlbnRlclRvdGFsQmFsYW5jZUFsbAoAAiRsBQRsaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQJiYQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIVTGlzdCBzaXplIGV4Y2VlZHMgMTAwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQJAMwIAgkBDEludGVnZXJFbnRyeQICG3RvdGFsIGJhbGFuY2UgV2hpcmxwb29sIGFsbAUUZW50ZXJUb3RhbEJhbGFuY2VBbGwFA25pbAFpAQZ3aW5uZXIAAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgMJAAACCQERQGV4dHJOYXRpdmUoMTA1MSkCBQR0aGlzAgVyZXNldAcJAAIBAgtyZXNldCBmaXJzdAQIY2xhaW1JbnYJAPwHBAkBB0FkZHJlc3MBARoBV4WdLDDV/AM+YcWt3pK/xSqR85muGkFACgIRY2xhaW1JbmRleFJld2FyZHMFA25pbAUDbmlsAwkAAAIFCGNsYWltSW52BQhjbGFpbUludgQIcmFuZEhhc2gJAPcDAQkBBHJhbmQBBQFpBAtyYW5kSGFzaEludAkAsQkBBQhyYW5kSGFzaAQGcmVzdWx0AwkAZgIAAAULcmFuZEhhc2hJbnQJAGgCAP///////////wEFC3JhbmRIYXNoSW50BQtyYW5kSGFzaEludAkAzAgCCQELQmluYXJ5RW50cnkCAgtyYW5kIHdpbm5lcgkBBHJhbmQBBQFpCQDMCAIJAQtCaW5hcnlFbnRyeQICD3JhbmRoYXNoIHdpbm5lcgUIcmFuZEhhc2gJAMwIAgkBDEludGVnZXJFbnRyeQICE3JhbmRoYXNoIGludCB3aW5uZXIFBnJlc3VsdAkAzAgCCQEMSW50ZWdlckVudHJ5AgIXcmVzdWx0IHJlbWFpbmRlciB3aW5uZXIJAGQCCQBqAgUGcmVzdWx0CQERQGV4dHJOYXRpdmUoMTA1NSkBAhF0b3RhbCBiYWxhbmNlIGFsbAABBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHaW52b2tlcgADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyBARsaXN0CQC8CQIJAQx0cnlHZXRTdHJpbmcCBQR0aGlzBQ9rZXlQYXJ0aWNpcGFudHMCASwKAQFyAgVhY2N1bQdh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CQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFFGtleVRvdGFsQmFsYW5jZUNvdW50BQVjb3VudAkAzAgCCQELU3RyaW5nRW50cnkCAg53aW5uZXIgYWRkcmVzcwUHYWRkcmVzcwUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRrZXlUb3RhbEJhbGFuY2VDb3VudAkAZAIJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUUa2V5VG90YWxCYWxhbmNlQ291bnQFBWNvdW50BQNuaWwBaQEJcGF5V2lubmVyAAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIEFGJ1cm54dG5CYWxhbmNlQmVmb3JlCQDwBwIFBHRoaXMFB2J1cm54dG4DCQAAAgUUYnVybnh0bkJhbGFuY2VCZWZvcmUFFGJ1cm54dG5CYWxhbmNlQmVmb3JlBAVzd2VzdAkA/AcECQEHQWRkcmVzcwEFBnBvb2xJZAIEc3dhcAkAzAgCBQ1idXJueHRuU3RyaW5nCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQZ3ZXN0SWQJAPAHAgUEdGhpcwUGd2VzdElkBQNuaWwDCQAAAgUFc3dlc3QFBXN3ZXN0BAZzdmlyZXMJAPwHBAkBB0FkZHJlc3MBBQZwb29sSWQCBHN3YXAJAMwIAgUNYnVybnh0blN0cmluZwkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHdmlyZXNJZAkA8AcCBQR0aGlzBQd2aXJlc0lkBQNuaWwDCQAAAgUGc3ZpcmVzBQZzdmlyZXMEBHNlZ2cJAPwHBAkBB0FkZHJlc3MBBQZwb29sSWQCBHN3YXAJAMwIAgUNYnVybnh0blN0cmluZwkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUFZWdnSWQJAPAHAgUEdGhpcwUFZWdnSWQFA25pbAMJAAACBQRzZWdnBQRzZWdnBAVzc3VyZgkA/AcECQEHQWRkcmVzcwEFBnBvb2xJZAIEc3dhcAkAzAgCBQ1idXJueHRuU3RyaW5nCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQZzdXJmSWQDCQBmAgkAZQIJAPAHAgUEdGhpcwUGc3VyZklkBQJkNgAACQBlAgkA8AcCBQR0aGlzBQZzdXJmSWQFAmQ2AAAFA25pbAMJAAACBQVzc3VyZgUFc3N1cmYEBXNuc2J0CQD8BwQJAQdBZGRyZXNzAQUGcG9vbElkAgRzd2FwCQDMCAIFDWJ1cm54dG5TdHJpbmcJAMwIAgAABQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBm5zYnRJZAkA8AcCBQR0aGlzBQZuc2J0SWQFA25pbAMJAAACBQVzbnNidAUFc25zYnQEA3N3eAkA/AcECQEHQWRkcmVzcwEFBnBvb2xJZAIEc3dhcAkAzAgCBQ1idXJueHRuU3RyaW5nCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR3eElkCQDwBwIFBHRoaXMFBHd4SWQFA25pbAMJAAACBQNzd3gFA3N3eAQFc3N3b3AJAPwHBAkBB0FkZHJlc3MBBQZwb29sSWQCBHN3YXAJAMwIAgUNYnVybnh0blN0cmluZwkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUGc3dvcElkCQDwBwIFBHRoaXMFBnN3b3BJZAUDbmlsAwkAAAIFBXNzd29wBQVzc3dvcAQEc3h0bgkA/AcECQEHQWRkcmVzcwEFBnBvb2xJZAIEc3dhcAkAzAgCBQ1idXJueHRuU3RyaW5nCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQN4dG4JAPAHAgUEdGhpcwUDeHRuBQNuaWwDCQAAAgUEc3h0bgUEc3h0bgQJc3dhcHdhdmVzCQD8BwQJAQdBZGRyZXNzAQUGcG9vbElkAgRzd2FwCQDMCAIFDWJ1cm54dG5TdHJpbmcJAMwIAgAABQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQDCQBmAgkAZQIICQDvBwEFBHRoaXMJYXZhaWxhYmxlBQJkOAAACQBlAggJAO8HAQUEdGhpcwlhdmFpbGFibGUFAmQ4AAAFA25pbAMJAAACBQlzd2Fwd2F2ZXMFCXN3YXB3YXZlcwQTYnVybnh0bkJhbGFuY2VBZnRlcgkA8AcCBQR0aGlzBQdidXJueHRuBAtwcml6ZUFtb3VudAkAawMJAGUCBRNidXJueHRuQmFsYW5jZUFmdGVyBRRidXJueHRuQmFsYW5jZUJlZm9yZQBQAGQDCQAAAgULcHJpemVBbW91bnQFC3ByaXplQW1vdW50BA13aW5uZXJBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzAg53aW5uZXIgYWRkcmVzcwQFYm9udXMJAGsDCQBlAgUTYnVybnh0bkJhbGFuY2VBZnRlcgUUYnVybnh0bkJhbGFuY2VCZWZvcmUACgBkBAtib251c0Ftb3VudAkAawMFBWJvbnVzCQEVdG90YWxXaGlybHBvb2xCYWxhbmNlAQUNd2lubmVyQWRkcmVzcwkBDXRyeUdldEludGVnZXICBQR0aGlzAht0b3RhbCBiYWxhbmNlIFdoaXJscG9vbCBhbGwDCQAAAgULYm9udXNBbW91bnQFC2JvbnVzQW1vdW50BA5zdXJmQnVybkFtb3VudAMJAGYCBQJkNgkA8AcCBQR0aGlzBQZzdXJmSWQJAPAHAgUEdGhpcwUGc3VyZklkBQJkNgQIc3VyZkJ1cm4JAQRCdXJuAgUGc3VyZklkBQ5zdXJmQnVybkFtb3VudAoBCGZvbGRGdW5jAgNhY2MDV0ZTCQBkAgUDYWNjCQDwBwIFDXdpbm5lckFkZHJlc3MJANkEAQUDV0ZTBAhzaGFyZVdGUwoAAiRsBQdXRlNsaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQIV0ZTYm9udXMJAGsDBQtwcml6ZUFtb3VudAB9AJBOCgEJZm9sZEZ1bmNCAgNhY2MDQkJCCQBkAgUDYWNjCQDwBwIFDXdpbm5lckFkZHJlc3MJANkEAQUDQkJCBAhzaGFyZUJCQgoAAiRsBQdCQkJsaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYxXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlmb2xkRnVuY0ICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjFfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoECEJCQmJvbnVzCQBrAwULcHJpemVBbW91bnQJAGgCAH0ACQDoBwkAzAgCCQEMQm9vbGVhbkVudHJ5AgIFcmVzZXQHCQDMCAIFCHN1cmZCdXJuCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhFTVVJGIHRvdGFsIGJ1cm5lZAkAZAIJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwIRU1VSRiB0b3RhbCBidXJuZWQFDnN1cmZCdXJuQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCAhBndWFyYW50ZWVkIHByaXplBQtwcml6ZUFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ13aW5uZXJBZGRyZXNzBQtwcml6ZUFtb3VudAUHYnVybnh0bgkAzAgCCQEMSW50ZWdlckVudHJ5AgIVV2hpcmxwb29sIGJvbnVzIHByaXplBQtib251c0Ftb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ13aW5uZXJBZGRyZXNzBQtib251c0Ftb3VudAUHYnVybnh0bgkAzAgCCQEMSW50ZWdlckVudHJ5AgITV0ZTIDEuMjUlIE5GVCBib251cwMJAGYCBQhzaGFyZVdGUwAABQhXRlNib251cwAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDXdpbm5lckFkZHJlc3MDCQBmAgUIc2hhcmVXRlMAAAUIV0ZTYm9udXMAAAUHYnVybnh0bgkAzAgCCQEMSW50ZWdlckVudHJ5AgIUQkJCIDExLjI1JSBORlQgYm9udXMDCQBmAgUIc2hhcmVCQkIAAAUIQkJCYm9udXMAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ13aW5uZXJBZGRyZXNzAwkAZgIFCHNoYXJlQkJCAAAFCEJCQmJvbnVzAAAFB2J1cm54dG4FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQdqYWNrcG90AAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIECHJhbmRIYXNoCQD3AwEJAMsBAgkBBHJhbmQBBQFpCQERQGV4dHJOYXRpdmUoMTA1NykBAg9yYW5kaGFzaCB3aW5uZXIEC3JhbmRIYXNoSW50CQCxCQEFCHJhbmRIYXNoBAZyZXN1bHQDCQBmAgAABQtyYW5kSGFzaEludAkAaAIA////////////AQULcmFuZEhhc2hJbnQFC3JhbmRIYXNoSW50CQDMCAIJAQtCaW5hcnlFbnRyeQICDHJhbmQgamFja3BvdAkBBHJhbmQBBQFpCQDMCAIJAQtCaW5hcnlFbnRyeQICEHJhbmRoYXNoIGphY2twb3QFCHJhbmRIYXNoCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhRyYW5kaGFzaCBpbnQgamFja3BvdAUGcmVzdWx0CQDMCAIJAQxJbnRlZ2VyRW50cnkCAhhyZXN1bHQgcmVtYWluZGVyIGphY2twb3QJAGoCBQZyZXN1bHQANAkAzAgCAwkAAAIJAGoCBQZyZXN1bHQANAAACQEMQm9vbGVhbkVudHJ5AgIHamFja3BvdAYJAQxCb29sZWFuRW50cnkCAgdqYWNrcG90BwUDbmlsAWkBDXdpbm5lckphY2twb3QAAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgQIcmFuZEhhc2gJAPcDAQkAywECCQEEcmFuZAEFAWkJARFAZXh0ck5hdGl2ZSgxMDU3KQECEHJhbmRoYXNoIGphY2twb3QEC3JhbmRIYXNoSW50CQCxCQEFCHJhbmRIYXNoBAZyZXN1bHQDCQBmAgAABQtyYW5kSGFzaEludAkAaAIA////////////AQULcmFuZEhhc2hJbnQFC3JhbmRIYXNoSW50CQDMCAIJAQtCaW5hcnlFbnRyeQICC3JhbmQgd2lubmVyCQEEcmFuZAEFAWkJAMwIAgkBC0JpbmFyeUVudHJ5AgIPcmFuZGhhc2ggd2lubmVyBQhyYW5kSGFzaAkAzAgCCQEMSW50ZWdlckVudHJ5AgITcmFuZGhhc2ggaW50IHdpbm5lcgUGcmVzdWx0CQDMCAIJAQxJbnRlZ2VyRW50cnkCAhdyZXN1bHQgcmVtYWluZGVyIHdpbm5lcgkAZAIJAGoCBQZyZXN1bHQJARFAZXh0ck5hdGl2ZSgxMDU1KQECEXRvdGFsIGJhbGFuY2UgYWxsAAEFA25pbAFpAQ5qYWNrcG90SW52b2tlcgADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyBARsaXN0CQC8CQIJAQx0cnlHZXRTdHJpbmcCBQR0aGlzBQ9rZXlQYXJ0aWNpcGFudHMCASwKAQFyAgVh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eVRvdGFsQmFsYW5jZUphY2twb3RDb3VudAkAZAIJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUba2V5VG90YWxCYWxhbmNlSmFja3BvdENvdW50BQVjb3VudAkAzAgCCQELU3RyaW5nRW50cnkCAg9qYWNrcG90IGFkZHJlc3MFB2FkZHJlc3MFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUba2V5VG90YWxCYWxhbmNlSmFja3BvdENvdW50CQBkAgkBDXRyeUdldEludGVnZXICBQR0aGlzBRtrZXlUb3RhbEJhbGFuY2VKYWNrcG90Q291bnQFBWNvdW50BQNuaWwBaQEKcGF5SmFja3BvdAADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyAwkAAAIJARFAZXh0ck5hdGl2ZSgxMDU2KQECB2phY2twb3QHCQACAQIKbm8gamFja3BvdAQLcHJpemVBbW91bnQJAGsDCQDwBwIFBHRoaXMFB2J1cm54dG4AKABkAwkAAAIFC3ByaXplQW1vdW50BQtwcml6ZUFtb3VudAQFYm9udXMJAGsDCQDwBwIFBHRoaXMFB2J1cm54dG4ABQBkBAtib251c0Ftb3VudAkAawMFBWJvbnVzCQEVdG90YWxXaGlybHBvb2xCYWxhbmNlAQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwIPamFja3BvdCBhZGRyZXNzCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMCG3RvdGFsIGJhbGFuY2UgV2hpcmxwb29sIGFsbAMJAAACBQtib251c0Ftb3VudAULYm9udXNBbW91bnQEDXdpbm5lckFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMCD2phY2twb3QgYWRkcmVzcwoBCGZvbGRGdW5jAgNhY2MDV0ZTCQBkAgUDYWNjCQDwBwIFDXdpbm5lckFkZHJlc3MJANkEAQUDV0ZTBAhzaGFyZVdGUwoAAiRsBQdXRlNsaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQIV0ZTYm9udXMJAGsDBQtwcml6ZUFtb3VudAB9AJBOCgEJZm9sZEZ1bmNCAgNhY2MDQkJCCQBkAgUDYWNjCQDwBwIFDXdpbm5lckFkZHJlc3MJANkEAQUDQkJCBAhzaGFyZUJCQgoAAiRsBQdCQkJsaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYxXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlmb2xkRnVuY0ICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjFfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoECEJCQmJvbnVzCQBrAwULcHJpemVBbW91bnQJAGgCAH0ACQCQTgkAzAgCCQEMSW50ZWdlckVudHJ5AgINamFja3BvdCBwcml6ZQULcHJpemVBbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUNd2lubmVyQWRkcmVzcwULcHJpemVBbW91bnQFB2J1cm54dG4JAMwIAgkBDEludGVnZXJFbnRyeQICFVdoaXJscG9vbCBib251cyBwcml6ZQULYm9udXNBbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUNd2lubmVyQWRkcmVzcwULYm9udXNBbW91bnQFB2J1cm54dG4JAMwIAgkBDEludGVnZXJFbnRyeQICE1dGUyAxLjI1JSBORlQgYm9udXMDCQBmAgUIc2hhcmVXRlMAAAUIV0ZTYm9udXMAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ13aW5uZXJBZGRyZXNzAwkAZgIFCHNoYXJlV0ZTAAAFCFdGU2JvbnVzAAAFB2J1cm54dG4JAMwIAgkBDEludGVnZXJFbnRyeQICFEJCQiAxMS4yNSUgTkZUIGJvbnVzAwkAZgIFCHNoYXJlQkJCAAAFCEJCQmJvbnVzAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUNd2lubmVyQWRkcmVzcwMJAGYCBQhzaGFyZUJCQgAABQhCQkJib251cwAABQdidXJueHRuBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFcmVzZXQAAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgkAzAgCCQEMSW50ZWdlckVudHJ5AgUUa2V5VG90YWxCYWxhbmNlQ291bnQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUba2V5VG90YWxCYWxhbmNlSmFja3BvdENvdW50AAAJAMwIAgkBDEJvb2xlYW5FbnRyeQICB2phY2twb3QHCQDMCAIJAQxCb29sZWFuRW50cnkCAgVyZXNldAYFA25pbAFpAQ1zcG9uc29yV2lubmVyAAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIECHJhbmRIYXNoCQD3AwEJAMsBAgkBBHJhbmQBBQFpCQERQGV4dHJOYXRpdmUoMTA1NykBAhByYW5kaGFzaCBqYWNrcG90BAtyYW5kSGFzaEludAkAsQkBBQhyYW5kSGFzaAQGcmVzdWx0AwkAZgIAAAULcmFuZEhhc2hJbnQJAGgCAP///////////wEFC3JhbmRIYXNoSW50BQtyYW5kSGFzaEludAQMdG90YWxTcG9uc29yCQBlAgkAZQIJARFAZXh0ck5hdGl2ZSgxMDU1KQECEXRvdGFsIGJhbGFuY2UgYWxsCQEMdG90YWxCYWxhbmNlAQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBDHRyeUdldFN0cmluZwIFBHRoaXMCDndpbm5lciBhZGRyZXNzAwkAAAIJAQx0cnlHZXRTdHJpbmcCBQR0aGlzAg9qYWNrcG90IGFkZHJlc3MCAAAACQEMdG90YWxCYWxhbmNlAQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBDHRyeUdldFN0cmluZwIFBHRoaXMCD2phY2twb3QgYWRkcmVzcwkAzAgCCQELQmluYXJ5RW50cnkCAgtyYW5kIHdpbm5lcgkBBHJhbmQBBQFpCQDMCAIJAQtCaW5hcnlFbnRyeQICD3JhbmRoYXNoIHdpbm5lcgUIcmFuZEhhc2gJAMwIAgkBDEludGVnZXJFbnRyeQICE3JhbmRoYXNoIGludCB3aW5uZXIFBnJlc3VsdAkAzAgCCQEMSW50ZWdlckVudHJ5AgIXcmVzdWx0IHJlbWFpbmRlciB3aW5uZXIJAGQCCQBqAgUGcmVzdWx0BQx0b3RhbFNwb25zb3IAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgUPa2V5VG90YWxTcG9uc29yBQx0b3RhbFNwb25zb3IFA25pbAFpAQ5zcG9uc29ySW52b2tlcgADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyBARsaXN0CQC8CQIJAQx0cnlHZXRTdHJpbmcCBQR0aGlzBQ9rZXlQYXJ0aWNpcGFudHMCASwEC3dpbm5lckluZGV4CQEFdmFsdWUBCQDPCAIFBGxpc3QJAQx0cnlHZXRTdHJpbmcCBQR0aGlzAg53aW5uZXIgYWRkcmVzcwQPbGlzdE1pbnVzV2lubmVyCQDRCAIFBGxpc3QFC3dpbm5lckluZGV4CgEBcgIFYWNjdW0HYWRkcmVzcwkA/AcEBQR0aGlzAhRzcG9uc29yV2lubmVyQWRkcmVzcwkAzAgCBQdhZGRyZXNzBQNuaWwFA25pbAQHaW52b2tlcgoAAiRsBQ9saXN0TWludXNXaW5uZXIKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBAXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkAwkAAAIFB2ludm9rZXIFB2ludm9rZXIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARRzcG9uc29yV2lubmVyQWRkcmVzcwEHYWRkcmVzcwMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIDCQBnAgkBDXRyeUdldEludGVnZXICBQR0aGlzBRtrZXlUb3RhbEJhbGFuY2VTcG9uc29yQ291bnQJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwIXcmVzdWx0IHJlbWFpbmRlciB3aW5uZXIFA25pbAQFY291bnQJAQx0b3RhbEJhbGFuY2UBCQERQGV4dHJOYXRpdmUoMTA2MikBBQdhZGRyZXNzAwkAZwIJAGQCCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFG2tleVRvdGFsQmFsYW5jZVNwb25zb3JDb3VudAUFY291bnQJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwIXcmVzdWx0IHJlbWFpbmRlciB3aW5uZXIJAMwIAgkBDEludGVnZXJFbnRyeQIFG2tleVRvdGFsQmFsYW5jZVNwb25zb3JDb3VudAkAZAIJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUba2V5VG90YWxCYWxhbmNlU3BvbnNvckNvdW50BQVjb3VudAkAzAgCCQELU3RyaW5nRW50cnkCAhZzcG9uc29yIHdpbm5lciBhZGRyZXNzBQdhZGRyZXNzBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIFG2tleVRvdGFsQmFsYW5jZVNwb25zb3JDb3VudAkAZAIJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUba2V5VG90YWxCYWxhbmNlU3BvbnNvckNvdW50BQVjb3VudAUDbmlsAWkBEHBheVNwb25zb3JXaW5uZXICBmFtb3VudAdhc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgQNd2lubmVyQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwIWc3BvbnNvciB3aW5uZXIgYWRkcmVzcwQIZGVjaW1hbHMEByRtYXRjaDAJAOwHAQkA2QQBBQdhc3NldElkAwkAAQIFByRtYXRjaDACBUFzc2V0BAVhc3NldAUHJG1hdGNoMAgFBWFzc2V0CGRlY2ltYWxzCQACAQIQQ2FuJ3QgZmluZCBhc3NldAQLcHJpemVBbW91bnQFBmFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ13aW5uZXJBZGRyZXNzBQtwcml6ZUFtb3VudAkA2QQBBQdhc3NldElkBQNuaWwASoAPPA==", "height": 4003835, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GidTfBhhDdxVmc7jvC5vZBq2wA1uZwM9dmN1bHHeyxL9 Next: 73ma4hnuDxZWHSqquJX3AFrNuzQY3558tKfy5AQHoWan Diff:
Old | New | Differences | |
---|---|---|---|
717 | 717 | func r (accum,address) = invoke(this, "sponsorWinnerAddress", [address], nil) | |
718 | 718 | ||
719 | 719 | let invoker = { | |
720 | - | let $l = | |
720 | + | let $l = listMinusWinner | |
721 | 721 | let $s = size($l) | |
722 | 722 | let $acc0 = nil | |
723 | 723 | func $f0_1 ($a,$i) = if (($i >= $s)) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func tryGetInteger (address,key) = match getInteger(address, key) { | |
5 | 5 | case b: Int => | |
6 | 6 | b | |
7 | 7 | case _ => | |
8 | 8 | 0 | |
9 | 9 | } | |
10 | 10 | ||
11 | 11 | ||
12 | 12 | func tryGetString (address,key) = match getString(address, key) { | |
13 | 13 | case b: String => | |
14 | 14 | b | |
15 | 15 | case _ => | |
16 | 16 | "" | |
17 | 17 | } | |
18 | 18 | ||
19 | 19 | ||
20 | 20 | let d6 = 1000000 | |
21 | 21 | ||
22 | 22 | let d8 = 100000000 | |
23 | 23 | ||
24 | 24 | let minimumIncrease = d8 | |
25 | 25 | ||
26 | 26 | let poolId = base58'3PE7NtJdmVq4yo47LKDqurQ8RLDCouvJCPB' | |
27 | 27 | ||
28 | 28 | let matcher = Address(base58'3PEjHv3JGjcWNpYEEkif2w8NXV4kbhnoGgu') | |
29 | 29 | ||
30 | 30 | let whirlpool = base58'73tY3E6Gd5AWYmsuq8m8Kek7KnJNAYyS3GoveTbc6jCi' | |
31 | 31 | ||
32 | 32 | let xtn = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p' | |
33 | 33 | ||
34 | 34 | let burnxtn = base58'3SjxA2YLdfF9fTRbzLm9xFn27C6MW34W1YsdJ6Axefns' | |
35 | 35 | ||
36 | 36 | let burnxtnString = toBase58String(burnxtn) | |
37 | 37 | ||
38 | 38 | let wx = base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on' | |
39 | 39 | ||
40 | 40 | let westId = base58'4LHHvYGNKJUg5hj65aGD5vgScvCBmLpdRFtjokvCjSL8' | |
41 | 41 | ||
42 | 42 | let viresId = base58'DSbbhLsSTeDg5Lsiufk2Aneh3DjVqJuPr2M9uU1gwy5p' | |
43 | 43 | ||
44 | 44 | let eggId = base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS' | |
45 | 45 | ||
46 | 46 | let surfId = base58'At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL' | |
47 | 47 | ||
48 | 48 | let nsbtId = base58'6nSpVyNH7yM69eg446wrQR94ipbbcmZMU1ENPwanC97g' | |
49 | 49 | ||
50 | 50 | let wxId = base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on' | |
51 | 51 | ||
52 | 52 | let swopId = base58'Ehie5xYpeN8op1Cctc6aGUrqx8jq3jtf1DSjXDbfm7aT' | |
53 | 53 | ||
54 | 54 | let keyAddressesRegistered = "Addresses registered" | |
55 | 55 | ||
56 | 56 | let addresses = dropRight(tryGetString(this, keyAddressesRegistered), 1) | |
57 | 57 | ||
58 | 58 | let keyAmountRegistered = "Amount Registered" | |
59 | 59 | ||
60 | 60 | let keyParticipants = "participants list string" | |
61 | 61 | ||
62 | 62 | let keyTotalBalanceCount = "total balance count" | |
63 | 63 | ||
64 | 64 | let keyTotalBalanceJackpotCount = "total balance jackpot count" | |
65 | 65 | ||
66 | 66 | let keyTotalSponsor = "total sponsor" | |
67 | 67 | ||
68 | 68 | let keyTotalBalanceSponsorCount = "total balance sponsor count" | |
69 | 69 | ||
70 | 70 | let NFT = Address(base58'3PEgVPqJ3NYWbRn1CLELUpuY9KCmragc7sY') | |
71 | 71 | ||
72 | 72 | let WFSlist = ["Gnpy5nVajPP3XQQVxrHboMAsXtjnyWAxybMDdKrbr8sD", "BT9Q4mQdQQmei2r5YNMBMasZBQj7myNaiz6QHba5cPXS", "BMvkyFtPVmFatpFR9QVFKR5MYTcZVTY2VUwFZ25vrAAc", "77Rqu8TLjBdMtDuXd9o5fUSGo64zQe5FCcao5L8Ht9j8", tryGetString(NFT, "5"), tryGetString(NFT, "6"), tryGetString(NFT, "7"), tryGetString(NFT, "8"), tryGetString(NFT, "9"), tryGetString(NFT, "10")] | |
73 | 73 | ||
74 | 74 | let BBBlist = ["9pCxoGtD18GeH9gCemzqrjHMMjfyBQDfsrRAuxSRagMc", "7DgFgCkBjVDc5P9ZgwsVL9SiTi7kXJuS4aRVgb7ZHW3k", "76bTvE8ttHvsuN1FuH4Kc8QUW4kL4m8c1cjfsXy2GfbV", "4Zrf4H5tiFcQL8eQmnA2wJ1XWPEBH6h1G2MefZDYmcCB", "2DtC4nFnxz5UM6mbjPwMVZpQWZFUqxs52oZrBeNRk9Ao", "DjZGMAFfoQWkMW3S5FTsQN3joncZt6BsmhnEK3ggLxmN", "BneaZXD6ovDJcV5rgfr8hsHZaMQsJQ8DH6a5gTnGCpBc", "4EKfgzFkd5UGKrjnaJV3w7argW1YmF4hq54xWQFzAXb9", "8hGDkWKiu2igDpWT3Hpr4mchDD6xwJ9hGm2h2jnUvTqz", "E3ZnSejpXL1Xr6VG4QoLh8xod9NMgpPe473r9Qk2HibL"] | |
75 | 75 | ||
76 | 76 | func rand (i) = (((((((i.transactionId + i.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(height)) + toBytes(assetBalance(this, burnxtn))) + toBytes(wavesBalance(matcher).available)) + toBytes(assetBalance(this, wx))) | |
77 | 77 | ||
78 | 78 | ||
79 | 79 | let PZ1 = base58'3PE7NtJdmVq4yo47LKDqurQ8RLDCouvJCPB' | |
80 | 80 | ||
81 | 81 | let PZ2 = base58'3PQHndCUVrv3wBuQjbvVP9SnGmfbfitGxfx' | |
82 | 82 | ||
83 | 83 | let PZ3 = base58'3PBiMQLnX8wd4bssXCgF8KuUqHv1H4zWHGi' | |
84 | 84 | ||
85 | 85 | let PZ4 = base58'3PDJPGn6vBEBqWN4E3fNcxoKBoDXbsmoaM7' | |
86 | 86 | ||
87 | 87 | let PZ5 = base58'3PCS1xhGQi2eM5mYcCBhUSHvB31Kk5gZoCm' | |
88 | 88 | ||
89 | 89 | let PZ6 = base58'3P8Quvmgt3VEWAjBR3bsfgCqzUh7zTmTC4q' | |
90 | 90 | ||
91 | 91 | let WXstake = base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV' | |
92 | 92 | ||
93 | 93 | let WX1 = base58'3P5vwLbXddLWpsRspftMxLuzfsjk3dLT3n5' | |
94 | 94 | ||
95 | 95 | let LP1 = "GyiHdcN59sZ46baFvj68ruLngrTPEvWDtsd6jHm4o46n" | |
96 | 96 | ||
97 | 97 | let WX2 = base58'3PKXseWa31VUSWUvm2YiRKxW2VM9RsVk3ry' | |
98 | 98 | ||
99 | 99 | let LP2 = "3MPHMJVwYGyeBLRsH1RsYhrTmemv752AEBwuFFV7g49Z" | |
100 | 100 | ||
101 | 101 | let PZw1 = base58'3P2myTbd5zpEHcYmNpdWTp5gXS5B8tL1RCY' | |
102 | 102 | ||
103 | 103 | func PZbal (Pooladdress,address,asset) = { | |
104 | 104 | let burnxtnInPZ = tryGetInteger(Address(Pooladdress), (("global_" + toBase58String(asset)) + "_balance")) | |
105 | 105 | let addressStakePZ = tryGetInteger(Address(Pooladdress), (toString(address) + "_indexStaked")) | |
106 | 106 | let totalStakePZ = tryGetInteger(Address(Pooladdress), "global_poolToken_amount") | |
107 | 107 | fraction(burnxtnInPZ, addressStakePZ, totalStakePZ) | |
108 | 108 | } | |
109 | 109 | ||
110 | 110 | ||
111 | 111 | func WXbal (Pooladdress,address,LPstr) = { | |
112 | 112 | let burnxtnInWX = assetBalance(Address(Pooladdress), burnxtn) | |
113 | 113 | let addressStakeWX = tryGetInteger(Address(WXstake), ((("%s%s%s__staked__" + toString(address)) + "__") + LPstr)) | |
114 | 114 | let totalStakeWX = tryGetInteger(Address(WXstake), ("%s%s%s__staked__total__" + LPstr)) | |
115 | 115 | fraction(burnxtnInWX, addressStakeWX, totalStakeWX) | |
116 | 116 | } | |
117 | 117 | ||
118 | 118 | ||
119 | 119 | func burnxtnBalance (i) = assetBalance(i.caller, burnxtn) | |
120 | 120 | ||
121 | 121 | ||
122 | 122 | func totalBalance (address) = { | |
123 | 123 | let burnxtnBalance2 = assetBalance(address, burnxtn) | |
124 | 124 | let PZ1balance = PZbal(PZ1, address, burnxtn) | |
125 | 125 | let PZ2balance = PZbal(PZ2, address, burnxtn) | |
126 | 126 | let PZ3balance = PZbal(PZ3, address, burnxtn) | |
127 | 127 | let PZ4balance = PZbal(PZ4, address, burnxtn) | |
128 | 128 | let PZ5balance = PZbal(PZ5, address, burnxtn) | |
129 | 129 | let PZ6balance = PZbal(PZ6, address, burnxtn) | |
130 | 130 | let WX1balance = WXbal(WX1, address, LP1) | |
131 | 131 | let WX2balance = WXbal(WX2, address, LP2) | |
132 | 132 | ((((((((burnxtnBalance2 + PZ1balance) + PZ2balance) + PZ3balance) + PZ4balance) + PZ5balance) + PZ6balance) + WX1balance) + WX2balance) | |
133 | 133 | } | |
134 | 134 | ||
135 | 135 | ||
136 | 136 | func totalWhirlpoolBalance (address) = { | |
137 | 137 | let whirlpoolBalance = assetBalance(address, whirlpool) | |
138 | 138 | let PZw1balance = PZbal(PZw1, address, whirlpool) | |
139 | 139 | (whirlpoolBalance + PZw1balance) | |
140 | 140 | } | |
141 | 141 | ||
142 | 142 | ||
143 | 143 | @Callable(i) | |
144 | 144 | func register () = if (contains(tryGetString(this, keyAddressesRegistered), toString(i.caller))) | |
145 | 145 | then throw("already registered") | |
146 | 146 | else if ((tryGetInteger(this, keyAmountRegistered) >= 90)) | |
147 | 147 | then throw("max registered users") | |
148 | 148 | else [IntegerEntry(keyAmountRegistered, (tryGetInteger(this, keyAmountRegistered) + 1)), StringEntry(("Register address: " + toString((tryGetInteger(this, keyAmountRegistered) + 1))), toString(i.caller)), StringEntry(keyAddressesRegistered, ((tryGetString(this, keyAddressesRegistered) + toString(i.caller)) + ",")), IntegerEntry(toString(i.caller), burnxtnBalance(i))] | |
149 | 149 | ||
150 | 150 | ||
151 | 151 | ||
152 | 152 | @Callable(i) | |
153 | 153 | func checkMyEntry () = if ((contains(tryGetString(this, keyAddressesRegistered), toString(i.caller)) == false)) | |
154 | 154 | then throw("not yet registered") | |
155 | 155 | else [BooleanEntry("HODL+1", (assetBalance(i.caller, burnxtn) >= (tryGetInteger(this, toString(i.caller)) + minimumIncrease))), IntegerEntry("highest recorded BURN-XTN balance by lottery", (tryGetInteger(this, toString(i.caller)) / d8)), IntegerEntry("current BURN-XTN balance", (burnxtnBalance(i) / d8)), IntegerEntry("required BURN-XTN balance", ((tryGetInteger(this, toString(i.caller)) + minimumIncrease) / d8)), IntegerEntry("entries = total BURN-XTN balance incl liquidity pools", (totalBalance(i.caller) / d8))] | |
156 | 156 | ||
157 | 157 | ||
158 | 158 | ||
159 | 159 | @Callable(i) | |
160 | 160 | func step_1 () = if ((i.caller != this)) | |
161 | 161 | then throw("access only by project owner") | |
162 | 162 | else { | |
163 | 163 | let r = invoke(this, "reset", nil, nil) | |
164 | 164 | if ((r == r)) | |
165 | 165 | then { | |
166 | 166 | let p = invoke(this, "participants", nil, nil) | |
167 | 167 | if ((p == p)) | |
168 | 168 | then { | |
169 | 169 | let u = invoke(this, "updateBalanceEntry", nil, nil) | |
170 | 170 | if ((u == u)) | |
171 | 171 | then nil | |
172 | 172 | else throw("Strict value is not equal to itself.") | |
173 | 173 | } | |
174 | 174 | else throw("Strict value is not equal to itself.") | |
175 | 175 | } | |
176 | 176 | else throw("Strict value is not equal to itself.") | |
177 | 177 | } | |
178 | 178 | ||
179 | 179 | ||
180 | 180 | ||
181 | 181 | @Callable(i) | |
182 | 182 | func step_2 () = if ((i.caller != this)) | |
183 | 183 | then throw("access only by project owner") | |
184 | 184 | else { | |
185 | 185 | let tba = invoke(this, "totalBalanceAll", nil, nil) | |
186 | 186 | if ((tba == tba)) | |
187 | 187 | then { | |
188 | 188 | let tbwa = invoke(this, "totalBalanceWhirlpoolAll", nil, nil) | |
189 | 189 | if ((tbwa == tbwa)) | |
190 | 190 | then { | |
191 | 191 | let w = invoke(this, "winner", nil, nil) | |
192 | 192 | if ((w == w)) | |
193 | 193 | then { | |
194 | 194 | let in = invoke(this, "invoker", nil, nil) | |
195 | 195 | if ((in == in)) | |
196 | 196 | then nil | |
197 | 197 | else throw("Strict value is not equal to itself.") | |
198 | 198 | } | |
199 | 199 | else throw("Strict value is not equal to itself.") | |
200 | 200 | } | |
201 | 201 | else throw("Strict value is not equal to itself.") | |
202 | 202 | } | |
203 | 203 | else throw("Strict value is not equal to itself.") | |
204 | 204 | } | |
205 | 205 | ||
206 | 206 | ||
207 | 207 | ||
208 | 208 | @Callable(i) | |
209 | 209 | func step_3 () = if ((i.caller != this)) | |
210 | 210 | then throw("access only by project owner") | |
211 | 211 | else { | |
212 | 212 | let p = invoke(this, "payWinner", nil, nil) | |
213 | 213 | if ((p == p)) | |
214 | 214 | then { | |
215 | 215 | let j = invoke(this, "jackpot", nil, nil) | |
216 | 216 | if ((j == j)) | |
217 | 217 | then if ((getBooleanValue("jackpot") == false)) | |
218 | 218 | then nil | |
219 | 219 | else { | |
220 | 220 | let w = invoke(this, "winnerJackpot", nil, nil) | |
221 | 221 | if ((w == w)) | |
222 | 222 | then nil | |
223 | 223 | else throw("Strict value is not equal to itself.") | |
224 | 224 | } | |
225 | 225 | else throw("Strict value is not equal to itself.") | |
226 | 226 | } | |
227 | 227 | else throw("Strict value is not equal to itself.") | |
228 | 228 | } | |
229 | 229 | ||
230 | 230 | ||
231 | 231 | ||
232 | 232 | @Callable(i) | |
233 | 233 | func step_4 () = if ((i.caller != this)) | |
234 | 234 | then throw("access only by project owner") | |
235 | 235 | else { | |
236 | 236 | let ji = invoke(this, "jackpotInvoker", nil, nil) | |
237 | 237 | if ((ji == ji)) | |
238 | 238 | then { | |
239 | 239 | let pj = invoke(this, "payJackpot", nil, nil) | |
240 | 240 | if ((pj == pj)) | |
241 | 241 | then nil | |
242 | 242 | else throw("Strict value is not equal to itself.") | |
243 | 243 | } | |
244 | 244 | else throw("Strict value is not equal to itself.") | |
245 | 245 | } | |
246 | 246 | ||
247 | 247 | ||
248 | 248 | ||
249 | 249 | @Callable(i) | |
250 | 250 | func participants () = if ((i.caller != this)) | |
251 | 251 | then throw("access only by project owner") | |
252 | 252 | else if ((getBooleanValue(this, "reset") == false)) | |
253 | 253 | then throw("reset first") | |
254 | 254 | else { | |
255 | 255 | let list = split_4C(addresses, ",") | |
256 | 256 | func p (accum,address) = if (((tryGetInteger(this, address) + minimumIncrease) > assetBalance(addressFromStringValue(address), burnxtn))) | |
257 | 257 | then accum | |
258 | 258 | else (accum :+ address) | |
259 | 259 | ||
260 | 260 | let participantsList = { | |
261 | 261 | let $l = list | |
262 | 262 | let $s = size($l) | |
263 | 263 | let $acc0 = nil | |
264 | 264 | func $f0_1 ($a,$i) = if (($i >= $s)) | |
265 | 265 | then $a | |
266 | 266 | else p($a, $l[$i]) | |
267 | 267 | ||
268 | 268 | func $f0_2 ($a,$i) = if (($i >= $s)) | |
269 | 269 | then $a | |
270 | 270 | else throw("List size exceeds 1000") | |
271 | 271 | ||
272 | 272 | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100), 101), 102), 103), 104), 105), 106), 107), 108), 109), 110), 111), 112), 113), 114), 115), 116), 117), 118), 119), 120), 121), 122), 123), 124), 125), 126), 127), 128), 129), 130), 131), 132), 133), 134), 135), 136), 137), 138), 139), 140), 141), 142), 143), 144), 145), 146), 147), 148), 149), 150), 151), 152), 153), 154), 155), 156), 157), 158), 159), 160), 161), 162), 163), 164), 165), 166), 167), 168), 169), 170), 171), 172), 173), 174), 175), 176), 177), 178), 179), 180), 181), 182), 183), 184), 185), 186), 187), 188), 189), 190), 191), 192), 193), 194), 195), 196), 197), 198), 199), 200), 201), 202), 203), 204), 205), 206), 207), 208), 209), 210), 211), 212), 213), 214), 215), 216), 217), 218), 219), 220), 221), 222), 223), 224), 225), 226), 227), 228), 229), 230), 231), 232), 233), 234), 235), 236), 237), 238), 239), 240), 241), 242), 243), 244), 245), 246), 247), 248), 249), 250), 251), 252), 253), 254), 255), 256), 257), 258), 259), 260), 261), 262), 263), 264), 265), 266), 267), 268), 269), 270), 271), 272), 273), 274), 275), 276), 277), 278), 279), 280), 281), 282), 283), 284), 285), 286), 287), 288), 289), 290), 291), 292), 293), 294), 295), 296), 297), 298), 299), 300), 301), 302), 303), 304), 305), 306), 307), 308), 309), 310), 311), 312), 313), 314), 315), 316), 317), 318), 319), 320), 321), 322), 323), 324), 325), 326), 327), 328), 329), 330), 331), 332), 333), 334), 335), 336), 337), 338), 339), 340), 341), 342), 343), 344), 345), 346), 347), 348), 349), 350), 351), 352), 353), 354), 355), 356), 357), 358), 359), 360), 361), 362), 363), 364), 365), 366), 367), 368), 369), 370), 371), 372), 373), 374), 375), 376), 377), 378), 379), 380), 381), 382), 383), 384), 385), 386), 387), 388), 389), 390), 391), 392), 393), 394), 395), 396), 397), 398), 399), 400), 401), 402), 403), 404), 405), 406), 407), 408), 409), 410), 411), 412), 413), 414), 415), 416), 417), 418), 419), 420), 421), 422), 423), 424), 425), 426), 427), 428), 429), 430), 431), 432), 433), 434), 435), 436), 437), 438), 439), 440), 441), 442), 443), 444), 445), 446), 447), 448), 449), 450), 451), 452), 453), 454), 455), 456), 457), 458), 459), 460), 461), 462), 463), 464), 465), 466), 467), 468), 469), 470), 471), 472), 473), 474), 475), 476), 477), 478), 479), 480), 481), 482), 483), 484), 485), 486), 487), 488), 489), 490), 491), 492), 493), 494), 495), 496), 497), 498), 499), 500), 501), 502), 503), 504), 505), 506), 507), 508), 509), 510), 511), 512), 513), 514), 515), 516), 517), 518), 519), 520), 521), 522), 523), 524), 525), 526), 527), 528), 529), 530), 531), 532), 533), 534), 535), 536), 537), 538), 539), 540), 541), 542), 543), 544), 545), 546), 547), 548), 549), 550), 551), 552), 553), 554), 555), 556), 557), 558), 559), 560), 561), 562), 563), 564), 565), 566), 567), 568), 569), 570), 571), 572), 573), 574), 575), 576), 577), 578), 579), 580), 581), 582), 583), 584), 585), 586), 587), 588), 589), 590), 591), 592), 593), 594), 595), 596), 597), 598), 599), 600), 601), 602), 603), 604), 605), 606), 607), 608), 609), 610), 611), 612), 613), 614), 615), 616), 617), 618), 619), 620), 621), 622), 623), 624), 625), 626), 627), 628), 629), 630), 631), 632), 633), 634), 635), 636), 637), 638), 639), 640), 641), 642), 643), 644), 645), 646), 647), 648), 649), 650), 651), 652), 653), 654), 655), 656), 657), 658), 659), 660), 661), 662), 663), 664), 665), 666), 667), 668), 669), 670), 671), 672), 673), 674), 675), 676), 677), 678), 679), 680), 681), 682), 683), 684), 685), 686), 687), 688), 689), 690), 691), 692), 693), 694), 695), 696), 697), 698), 699), 700), 701), 702), 703), 704), 705), 706), 707), 708), 709), 710), 711), 712), 713), 714), 715), 716), 717), 718), 719), 720), 721), 722), 723), 724), 725), 726), 727), 728), 729), 730), 731), 732), 733), 734), 735), 736), 737), 738), 739), 740), 741), 742), 743), 744), 745), 746), 747), 748), 749), 750), 751), 752), 753), 754), 755), 756), 757), 758), 759), 760), 761), 762), 763), 764), 765), 766), 767), 768), 769), 770), 771), 772), 773), 774), 775), 776), 777), 778), 779), 780), 781), 782), 783), 784), 785), 786), 787), 788), 789), 790), 791), 792), 793), 794), 795), 796), 797), 798), 799), 800), 801), 802), 803), 804), 805), 806), 807), 808), 809), 810), 811), 812), 813), 814), 815), 816), 817), 818), 819), 820), 821), 822), 823), 824), 825), 826), 827), 828), 829), 830), 831), 832), 833), 834), 835), 836), 837), 838), 839), 840), 841), 842), 843), 844), 845), 846), 847), 848), 849), 850), 851), 852), 853), 854), 855), 856), 857), 858), 859), 860), 861), 862), 863), 864), 865), 866), 867), 868), 869), 870), 871), 872), 873), 874), 875), 876), 877), 878), 879), 880), 881), 882), 883), 884), 885), 886), 887), 888), 889), 890), 891), 892), 893), 894), 895), 896), 897), 898), 899), 900), 901), 902), 903), 904), 905), 906), 907), 908), 909), 910), 911), 912), 913), 914), 915), 916), 917), 918), 919), 920), 921), 922), 923), 924), 925), 926), 927), 928), 929), 930), 931), 932), 933), 934), 935), 936), 937), 938), 939), 940), 941), 942), 943), 944), 945), 946), 947), 948), 949), 950), 951), 952), 953), 954), 955), 956), 957), 958), 959), 960), 961), 962), 963), 964), 965), 966), 967), 968), 969), 970), 971), 972), 973), 974), 975), 976), 977), 978), 979), 980), 981), 982), 983), 984), 985), 986), 987), 988), 989), 990), 991), 992), 993), 994), 995), 996), 997), 998), 999), 1000) | |
273 | 273 | } | |
274 | 274 | let participantsListString = makeString(participantsList, ",") | |
275 | 275 | [StringEntry(keyParticipants, participantsListString), IntegerEntry("list size", size(participantsList))] | |
276 | 276 | } | |
277 | 277 | ||
278 | 278 | ||
279 | 279 | ||
280 | 280 | @Callable(i) | |
281 | 281 | func updateBalanceEntry () = if ((i.caller != this)) | |
282 | 282 | then throw("access only by project owner") | |
283 | 283 | else if ((getBooleanValue(this, "reset") == false)) | |
284 | 284 | then throw("reset first") | |
285 | 285 | else { | |
286 | 286 | let list = split_4C(tryGetString(this, keyParticipants), ",") | |
287 | 287 | func bal (accum,address) = (accum ++ [IntegerEntry(address, assetBalance(addressFromStringValue(address), burnxtn))]) | |
288 | 288 | ||
289 | 289 | let updateBalance = { | |
290 | 290 | let $l = list | |
291 | 291 | let $s = size($l) | |
292 | 292 | let $acc0 = nil | |
293 | 293 | func $f0_1 ($a,$i) = if (($i >= $s)) | |
294 | 294 | then $a | |
295 | 295 | else bal($a, $l[$i]) | |
296 | 296 | ||
297 | 297 | func $f0_2 ($a,$i) = if (($i >= $s)) | |
298 | 298 | then $a | |
299 | 299 | else throw("List size exceeds 100") | |
300 | 300 | ||
301 | 301 | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100) | |
302 | 302 | } | |
303 | 303 | (nil ++ updateBalance) | |
304 | 304 | } | |
305 | 305 | ||
306 | 306 | ||
307 | 307 | ||
308 | 308 | @Callable(i) | |
309 | 309 | func totalBalanceAll () = if ((i.caller != this)) | |
310 | 310 | then throw("access only by project owner") | |
311 | 311 | else if ((getBooleanValue(this, "reset") == false)) | |
312 | 312 | then throw("reset first") | |
313 | 313 | else { | |
314 | 314 | let list = split_4C(tryGetString(this, keyParticipants), ",") | |
315 | 315 | func ba (accum,address) = (accum + totalBalance(addressFromStringValue(address))) | |
316 | 316 | ||
317 | 317 | let enterTotalBalanceAll = { | |
318 | 318 | let $l = list | |
319 | 319 | let $s = size($l) | |
320 | 320 | let $acc0 = 0 | |
321 | 321 | func $f0_1 ($a,$i) = if (($i >= $s)) | |
322 | 322 | then $a | |
323 | 323 | else ba($a, $l[$i]) | |
324 | 324 | ||
325 | 325 | func $f0_2 ($a,$i) = if (($i >= $s)) | |
326 | 326 | then $a | |
327 | 327 | else throw("List size exceeds 100") | |
328 | 328 | ||
329 | 329 | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100) | |
330 | 330 | } | |
331 | 331 | [IntegerEntry("total balance all", enterTotalBalanceAll)] | |
332 | 332 | } | |
333 | 333 | ||
334 | 334 | ||
335 | 335 | ||
336 | 336 | @Callable(i) | |
337 | 337 | func totalBalanceWhirlpoolAll () = if ((i.caller != this)) | |
338 | 338 | then throw("access only by project owner") | |
339 | 339 | else if ((getBooleanValue(this, "reset") == false)) | |
340 | 340 | then throw("reset first") | |
341 | 341 | else { | |
342 | 342 | let list = split_4C(tryGetString(this, keyParticipants), ",") | |
343 | 343 | func ba (accum,address) = (accum + totalWhirlpoolBalance(addressFromStringValue(address))) | |
344 | 344 | ||
345 | 345 | let enterTotalBalanceAll = { | |
346 | 346 | let $l = list | |
347 | 347 | let $s = size($l) | |
348 | 348 | let $acc0 = 0 | |
349 | 349 | func $f0_1 ($a,$i) = if (($i >= $s)) | |
350 | 350 | then $a | |
351 | 351 | else ba($a, $l[$i]) | |
352 | 352 | ||
353 | 353 | func $f0_2 ($a,$i) = if (($i >= $s)) | |
354 | 354 | then $a | |
355 | 355 | else throw("List size exceeds 100") | |
356 | 356 | ||
357 | 357 | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100) | |
358 | 358 | } | |
359 | 359 | [IntegerEntry("total balance Whirlpool all", enterTotalBalanceAll)] | |
360 | 360 | } | |
361 | 361 | ||
362 | 362 | ||
363 | 363 | ||
364 | 364 | @Callable(i) | |
365 | 365 | func winner () = if ((i.caller != this)) | |
366 | 366 | then throw("access only by project owner") | |
367 | 367 | else if ((getBooleanValue(this, "reset") == false)) | |
368 | 368 | then throw("reset first") | |
369 | 369 | else { | |
370 | 370 | let claimInv = invoke(Address(base58'3PE7NtJdmVq4yo47LKDqurQ8RLDCouvJCPB'), "claimIndexRewards", nil, nil) | |
371 | 371 | if ((claimInv == claimInv)) | |
372 | 372 | then { | |
373 | 373 | let randHash = sha256(rand(i)) | |
374 | 374 | let randHashInt = toInt(randHash) | |
375 | 375 | let result = if ((0 > randHashInt)) | |
376 | 376 | then (-1 * randHashInt) | |
377 | 377 | else randHashInt | |
378 | 378 | [BinaryEntry("rand winner", rand(i)), BinaryEntry("randhash winner", randHash), IntegerEntry("randhash int winner", result), IntegerEntry("result remainder winner", ((result % getIntegerValue("total balance all")) + 1))] | |
379 | 379 | } | |
380 | 380 | else throw("Strict value is not equal to itself.") | |
381 | 381 | } | |
382 | 382 | ||
383 | 383 | ||
384 | 384 | ||
385 | 385 | @Callable(i) | |
386 | 386 | func invoker () = if ((i.caller != this)) | |
387 | 387 | then throw("access only by project owner") | |
388 | 388 | else { | |
389 | 389 | let list = split_4C(tryGetString(this, keyParticipants), ",") | |
390 | 390 | func r (accum,address) = invoke(this, "winnerAddress", [address], nil) | |
391 | 391 | ||
392 | 392 | let invoker = { | |
393 | 393 | let $l = list | |
394 | 394 | let $s = size($l) | |
395 | 395 | let $acc0 = nil | |
396 | 396 | func $f0_1 ($a,$i) = if (($i >= $s)) | |
397 | 397 | then $a | |
398 | 398 | else r($a, $l[$i]) | |
399 | 399 | ||
400 | 400 | func $f0_2 ($a,$i) = if (($i >= $s)) | |
401 | 401 | then $a | |
402 | 402 | else throw("List size exceeds 100") | |
403 | 403 | ||
404 | 404 | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100) | |
405 | 405 | } | |
406 | 406 | if ((invoker == invoker)) | |
407 | 407 | then nil | |
408 | 408 | else throw("Strict value is not equal to itself.") | |
409 | 409 | } | |
410 | 410 | ||
411 | 411 | ||
412 | 412 | ||
413 | 413 | @Callable(i) | |
414 | 414 | func winnerAddress (address) = if ((i.caller != this)) | |
415 | 415 | then throw("access only by project owner") | |
416 | 416 | else if ((tryGetInteger(this, keyTotalBalanceCount) >= tryGetInteger(this, "result remainder winner"))) | |
417 | 417 | then nil | |
418 | 418 | else { | |
419 | 419 | let count = totalBalance(addressFromStringValue(address)) | |
420 | 420 | if (((tryGetInteger(this, keyTotalBalanceCount) + count) >= tryGetInteger(this, "result remainder winner"))) | |
421 | 421 | then [IntegerEntry(keyTotalBalanceCount, (tryGetInteger(this, keyTotalBalanceCount) + count)), StringEntry("winner address", address)] | |
422 | 422 | else [IntegerEntry(keyTotalBalanceCount, (tryGetInteger(this, keyTotalBalanceCount) + count))] | |
423 | 423 | } | |
424 | 424 | ||
425 | 425 | ||
426 | 426 | ||
427 | 427 | @Callable(i) | |
428 | 428 | func payWinner () = if ((i.caller != this)) | |
429 | 429 | then throw("access only by project owner") | |
430 | 430 | else { | |
431 | 431 | let burnxtnBalanceBefore = assetBalance(this, burnxtn) | |
432 | 432 | if ((burnxtnBalanceBefore == burnxtnBalanceBefore)) | |
433 | 433 | then { | |
434 | 434 | let swest = invoke(Address(poolId), "swap", [burnxtnString, 0], [AttachedPayment(westId, assetBalance(this, westId))]) | |
435 | 435 | if ((swest == swest)) | |
436 | 436 | then { | |
437 | 437 | let svires = invoke(Address(poolId), "swap", [burnxtnString, 0], [AttachedPayment(viresId, assetBalance(this, viresId))]) | |
438 | 438 | if ((svires == svires)) | |
439 | 439 | then { | |
440 | 440 | let segg = invoke(Address(poolId), "swap", [burnxtnString, 0], [AttachedPayment(eggId, assetBalance(this, eggId))]) | |
441 | 441 | if ((segg == segg)) | |
442 | 442 | then { | |
443 | 443 | let ssurf = invoke(Address(poolId), "swap", [burnxtnString, 0], [AttachedPayment(surfId, if (((assetBalance(this, surfId) - d6) > 0)) | |
444 | 444 | then (assetBalance(this, surfId) - d6) | |
445 | 445 | else 0)]) | |
446 | 446 | if ((ssurf == ssurf)) | |
447 | 447 | then { | |
448 | 448 | let snsbt = invoke(Address(poolId), "swap", [burnxtnString, 0], [AttachedPayment(nsbtId, assetBalance(this, nsbtId))]) | |
449 | 449 | if ((snsbt == snsbt)) | |
450 | 450 | then { | |
451 | 451 | let swx = invoke(Address(poolId), "swap", [burnxtnString, 0], [AttachedPayment(wxId, assetBalance(this, wxId))]) | |
452 | 452 | if ((swx == swx)) | |
453 | 453 | then { | |
454 | 454 | let sswop = invoke(Address(poolId), "swap", [burnxtnString, 0], [AttachedPayment(swopId, assetBalance(this, swopId))]) | |
455 | 455 | if ((sswop == sswop)) | |
456 | 456 | then { | |
457 | 457 | let sxtn = invoke(Address(poolId), "swap", [burnxtnString, 0], [AttachedPayment(xtn, assetBalance(this, xtn))]) | |
458 | 458 | if ((sxtn == sxtn)) | |
459 | 459 | then { | |
460 | 460 | let swapwaves = invoke(Address(poolId), "swap", [burnxtnString, 0], [AttachedPayment(unit, if (((wavesBalance(this).available - d8) > 0)) | |
461 | 461 | then (wavesBalance(this).available - d8) | |
462 | 462 | else 0)]) | |
463 | 463 | if ((swapwaves == swapwaves)) | |
464 | 464 | then { | |
465 | 465 | let burnxtnBalanceAfter = assetBalance(this, burnxtn) | |
466 | 466 | let prizeAmount = fraction((burnxtnBalanceAfter - burnxtnBalanceBefore), 80, 100) | |
467 | 467 | if ((prizeAmount == prizeAmount)) | |
468 | 468 | then { | |
469 | 469 | let winnerAddress = addressFromStringValue(getStringValue(this, "winner address")) | |
470 | 470 | let bonus = fraction((burnxtnBalanceAfter - burnxtnBalanceBefore), 10, 100) | |
471 | 471 | let bonusAmount = fraction(bonus, totalWhirlpoolBalance(winnerAddress), tryGetInteger(this, "total balance Whirlpool all")) | |
472 | 472 | if ((bonusAmount == bonusAmount)) | |
473 | 473 | then { | |
474 | 474 | let surfBurnAmount = if ((d6 > assetBalance(this, surfId))) | |
475 | 475 | then assetBalance(this, surfId) | |
476 | 476 | else d6 | |
477 | 477 | let surfBurn = Burn(surfId, surfBurnAmount) | |
478 | 478 | func foldFunc (acc,WFS) = (acc + assetBalance(winnerAddress, fromBase58String(WFS))) | |
479 | 479 | ||
480 | 480 | let shareWFS = { | |
481 | 481 | let $l = WFSlist | |
482 | 482 | let $s = size($l) | |
483 | 483 | let $acc0 = 0 | |
484 | 484 | func $f0_1 ($a,$i) = if (($i >= $s)) | |
485 | 485 | then $a | |
486 | 486 | else foldFunc($a, $l[$i]) | |
487 | 487 | ||
488 | 488 | func $f0_2 ($a,$i) = if (($i >= $s)) | |
489 | 489 | then $a | |
490 | 490 | else throw("List size exceeds 10") | |
491 | 491 | ||
492 | 492 | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
493 | 493 | } | |
494 | 494 | let WFSbonus = fraction(prizeAmount, 125, 10000) | |
495 | 495 | func foldFuncB (acc,BBB) = (acc + assetBalance(winnerAddress, fromBase58String(BBB))) | |
496 | 496 | ||
497 | 497 | let shareBBB = { | |
498 | 498 | let $l = BBBlist | |
499 | 499 | let $s = size($l) | |
500 | 500 | let $acc0 = 0 | |
501 | 501 | func $f1_1 ($a,$i) = if (($i >= $s)) | |
502 | 502 | then $a | |
503 | 503 | else foldFuncB($a, $l[$i]) | |
504 | 504 | ||
505 | 505 | func $f1_2 ($a,$i) = if (($i >= $s)) | |
506 | 506 | then $a | |
507 | 507 | else throw("List size exceeds 10") | |
508 | 508 | ||
509 | 509 | $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
510 | 510 | } | |
511 | 511 | let BBBbonus = fraction(prizeAmount, (125 * 9), 1000) | |
512 | 512 | [BooleanEntry("reset", false), surfBurn, IntegerEntry("SURF total burned", (tryGetInteger(this, "SURF total burned") + surfBurnAmount)), IntegerEntry("guaranteed prize", prizeAmount), ScriptTransfer(winnerAddress, prizeAmount, burnxtn), IntegerEntry("Whirlpool bonus prize", bonusAmount), ScriptTransfer(winnerAddress, bonusAmount, burnxtn), IntegerEntry("WFS 1.25% NFT bonus", if ((shareWFS > 0)) | |
513 | 513 | then WFSbonus | |
514 | 514 | else 0), ScriptTransfer(winnerAddress, if ((shareWFS > 0)) | |
515 | 515 | then WFSbonus | |
516 | 516 | else 0, burnxtn), IntegerEntry("BBB 11.25% NFT bonus", if ((shareBBB > 0)) | |
517 | 517 | then BBBbonus | |
518 | 518 | else 0), ScriptTransfer(winnerAddress, if ((shareBBB > 0)) | |
519 | 519 | then BBBbonus | |
520 | 520 | else 0, burnxtn)] | |
521 | 521 | } | |
522 | 522 | else throw("Strict value is not equal to itself.") | |
523 | 523 | } | |
524 | 524 | else throw("Strict value is not equal to itself.") | |
525 | 525 | } | |
526 | 526 | else throw("Strict value is not equal to itself.") | |
527 | 527 | } | |
528 | 528 | else throw("Strict value is not equal to itself.") | |
529 | 529 | } | |
530 | 530 | else throw("Strict value is not equal to itself.") | |
531 | 531 | } | |
532 | 532 | else throw("Strict value is not equal to itself.") | |
533 | 533 | } | |
534 | 534 | else throw("Strict value is not equal to itself.") | |
535 | 535 | } | |
536 | 536 | else throw("Strict value is not equal to itself.") | |
537 | 537 | } | |
538 | 538 | else throw("Strict value is not equal to itself.") | |
539 | 539 | } | |
540 | 540 | else throw("Strict value is not equal to itself.") | |
541 | 541 | } | |
542 | 542 | else throw("Strict value is not equal to itself.") | |
543 | 543 | } | |
544 | 544 | else throw("Strict value is not equal to itself.") | |
545 | 545 | } | |
546 | 546 | ||
547 | 547 | ||
548 | 548 | ||
549 | 549 | @Callable(i) | |
550 | 550 | func jackpot () = if ((i.caller != this)) | |
551 | 551 | then throw("access only by project owner") | |
552 | 552 | else { | |
553 | 553 | let randHash = sha256((rand(i) + getBinaryValue("randhash winner"))) | |
554 | 554 | let randHashInt = toInt(randHash) | |
555 | 555 | let result = if ((0 > randHashInt)) | |
556 | 556 | then (-1 * randHashInt) | |
557 | 557 | else randHashInt | |
558 | 558 | [BinaryEntry("rand jackpot", rand(i)), BinaryEntry("randhash jackpot", randHash), IntegerEntry("randhash int jackpot", result), IntegerEntry("result remainder jackpot", (result % 52)), if (((result % 52) == 0)) | |
559 | 559 | then BooleanEntry("jackpot", true) | |
560 | 560 | else BooleanEntry("jackpot", false)] | |
561 | 561 | } | |
562 | 562 | ||
563 | 563 | ||
564 | 564 | ||
565 | 565 | @Callable(i) | |
566 | 566 | func winnerJackpot () = if ((i.caller != this)) | |
567 | 567 | then throw("access only by project owner") | |
568 | 568 | else { | |
569 | 569 | let randHash = sha256((rand(i) + getBinaryValue("randhash jackpot"))) | |
570 | 570 | let randHashInt = toInt(randHash) | |
571 | 571 | let result = if ((0 > randHashInt)) | |
572 | 572 | then (-1 * randHashInt) | |
573 | 573 | else randHashInt | |
574 | 574 | [BinaryEntry("rand winner", rand(i)), BinaryEntry("randhash winner", randHash), IntegerEntry("randhash int winner", result), IntegerEntry("result remainder winner", ((result % getIntegerValue("total balance all")) + 1))] | |
575 | 575 | } | |
576 | 576 | ||
577 | 577 | ||
578 | 578 | ||
579 | 579 | @Callable(i) | |
580 | 580 | func jackpotInvoker () = if ((i.caller != this)) | |
581 | 581 | then throw("access only by project owner") | |
582 | 582 | else { | |
583 | 583 | let list = split_4C(tryGetString(this, keyParticipants), ",") | |
584 | 584 | func r (accum,address) = invoke(this, "jackpotAddress", [address], nil) | |
585 | 585 | ||
586 | 586 | let invoker = { | |
587 | 587 | let $l = list | |
588 | 588 | let $s = size($l) | |
589 | 589 | let $acc0 = nil | |
590 | 590 | func $f0_1 ($a,$i) = if (($i >= $s)) | |
591 | 591 | then $a | |
592 | 592 | else r($a, $l[$i]) | |
593 | 593 | ||
594 | 594 | func $f0_2 ($a,$i) = if (($i >= $s)) | |
595 | 595 | then $a | |
596 | 596 | else throw("List size exceeds 100") | |
597 | 597 | ||
598 | 598 | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100) | |
599 | 599 | } | |
600 | 600 | if ((invoker == invoker)) | |
601 | 601 | then nil | |
602 | 602 | else throw("Strict value is not equal to itself.") | |
603 | 603 | } | |
604 | 604 | ||
605 | 605 | ||
606 | 606 | ||
607 | 607 | @Callable(i) | |
608 | 608 | func jackpotAddress (address) = if ((i.caller != this)) | |
609 | 609 | then throw("access only by project owner") | |
610 | 610 | else if ((tryGetInteger(this, keyTotalBalanceJackpotCount) >= tryGetInteger(this, "result remainder winner"))) | |
611 | 611 | then nil | |
612 | 612 | else { | |
613 | 613 | let count = totalBalance(addressFromStringValue(address)) | |
614 | 614 | if (((tryGetInteger(this, keyTotalBalanceJackpotCount) + count) >= tryGetInteger(this, "result remainder winner"))) | |
615 | 615 | then [IntegerEntry(keyTotalBalanceJackpotCount, (tryGetInteger(this, keyTotalBalanceJackpotCount) + count)), StringEntry("jackpot address", address)] | |
616 | 616 | else [IntegerEntry(keyTotalBalanceJackpotCount, (tryGetInteger(this, keyTotalBalanceJackpotCount) + count))] | |
617 | 617 | } | |
618 | 618 | ||
619 | 619 | ||
620 | 620 | ||
621 | 621 | @Callable(i) | |
622 | 622 | func payJackpot () = if ((i.caller != this)) | |
623 | 623 | then throw("access only by project owner") | |
624 | 624 | else if ((getBooleanValue("jackpot") == false)) | |
625 | 625 | then throw("no jackpot") | |
626 | 626 | else { | |
627 | 627 | let prizeAmount = fraction(assetBalance(this, burnxtn), 40, 100) | |
628 | 628 | if ((prizeAmount == prizeAmount)) | |
629 | 629 | then { | |
630 | 630 | let bonus = fraction(assetBalance(this, burnxtn), 5, 100) | |
631 | 631 | let bonusAmount = fraction(bonus, totalWhirlpoolBalance(addressFromStringValue(getStringValue(this, "jackpot address"))), tryGetInteger(this, "total balance Whirlpool all")) | |
632 | 632 | if ((bonusAmount == bonusAmount)) | |
633 | 633 | then { | |
634 | 634 | let winnerAddress = addressFromStringValue(getStringValue(this, "jackpot address")) | |
635 | 635 | func foldFunc (acc,WFS) = (acc + assetBalance(winnerAddress, fromBase58String(WFS))) | |
636 | 636 | ||
637 | 637 | let shareWFS = { | |
638 | 638 | let $l = WFSlist | |
639 | 639 | let $s = size($l) | |
640 | 640 | let $acc0 = 0 | |
641 | 641 | func $f0_1 ($a,$i) = if (($i >= $s)) | |
642 | 642 | then $a | |
643 | 643 | else foldFunc($a, $l[$i]) | |
644 | 644 | ||
645 | 645 | func $f0_2 ($a,$i) = if (($i >= $s)) | |
646 | 646 | then $a | |
647 | 647 | else throw("List size exceeds 10") | |
648 | 648 | ||
649 | 649 | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
650 | 650 | } | |
651 | 651 | let WFSbonus = fraction(prizeAmount, 125, 10000) | |
652 | 652 | func foldFuncB (acc,BBB) = (acc + assetBalance(winnerAddress, fromBase58String(BBB))) | |
653 | 653 | ||
654 | 654 | let shareBBB = { | |
655 | 655 | let $l = BBBlist | |
656 | 656 | let $s = size($l) | |
657 | 657 | let $acc0 = 0 | |
658 | 658 | func $f1_1 ($a,$i) = if (($i >= $s)) | |
659 | 659 | then $a | |
660 | 660 | else foldFuncB($a, $l[$i]) | |
661 | 661 | ||
662 | 662 | func $f1_2 ($a,$i) = if (($i >= $s)) | |
663 | 663 | then $a | |
664 | 664 | else throw("List size exceeds 10") | |
665 | 665 | ||
666 | 666 | $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
667 | 667 | } | |
668 | 668 | let BBBbonus = fraction(prizeAmount, (125 * 9), 10000) | |
669 | 669 | [IntegerEntry("jackpot prize", prizeAmount), ScriptTransfer(winnerAddress, prizeAmount, burnxtn), IntegerEntry("Whirlpool bonus prize", bonusAmount), ScriptTransfer(winnerAddress, bonusAmount, burnxtn), IntegerEntry("WFS 1.25% NFT bonus", if ((shareWFS > 0)) | |
670 | 670 | then WFSbonus | |
671 | 671 | else 0), ScriptTransfer(winnerAddress, if ((shareWFS > 0)) | |
672 | 672 | then WFSbonus | |
673 | 673 | else 0, burnxtn), IntegerEntry("BBB 11.25% NFT bonus", if ((shareBBB > 0)) | |
674 | 674 | then BBBbonus | |
675 | 675 | else 0), ScriptTransfer(winnerAddress, if ((shareBBB > 0)) | |
676 | 676 | then BBBbonus | |
677 | 677 | else 0, burnxtn)] | |
678 | 678 | } | |
679 | 679 | else throw("Strict value is not equal to itself.") | |
680 | 680 | } | |
681 | 681 | else throw("Strict value is not equal to itself.") | |
682 | 682 | } | |
683 | 683 | ||
684 | 684 | ||
685 | 685 | ||
686 | 686 | @Callable(i) | |
687 | 687 | func reset () = if ((i.caller != this)) | |
688 | 688 | then throw("access only by project owner") | |
689 | 689 | else [IntegerEntry(keyTotalBalanceCount, 0), IntegerEntry(keyTotalBalanceJackpotCount, 0), BooleanEntry("jackpot", false), BooleanEntry("reset", true)] | |
690 | 690 | ||
691 | 691 | ||
692 | 692 | ||
693 | 693 | @Callable(i) | |
694 | 694 | func sponsorWinner () = if ((i.caller != this)) | |
695 | 695 | then throw("access only by project owner") | |
696 | 696 | else { | |
697 | 697 | let randHash = sha256((rand(i) + getBinaryValue("randhash jackpot"))) | |
698 | 698 | let randHashInt = toInt(randHash) | |
699 | 699 | let result = if ((0 > randHashInt)) | |
700 | 700 | then (-1 * randHashInt) | |
701 | 701 | else randHashInt | |
702 | 702 | let totalSponsor = ((getIntegerValue("total balance all") - totalBalance(addressFromStringValue(tryGetString(this, "winner address")))) - (if ((tryGetString(this, "jackpot address") == "")) | |
703 | 703 | then 0 | |
704 | 704 | else totalBalance(addressFromStringValue(tryGetString(this, "jackpot address"))))) | |
705 | 705 | [BinaryEntry("rand winner", rand(i)), BinaryEntry("randhash winner", randHash), IntegerEntry("randhash int winner", result), IntegerEntry("result remainder winner", ((result % totalSponsor) + 1)), IntegerEntry(keyTotalSponsor, totalSponsor)] | |
706 | 706 | } | |
707 | 707 | ||
708 | 708 | ||
709 | 709 | ||
710 | 710 | @Callable(i) | |
711 | 711 | func sponsorInvoker () = if ((i.caller != this)) | |
712 | 712 | then throw("access only by project owner") | |
713 | 713 | else { | |
714 | 714 | let list = split_4C(tryGetString(this, keyParticipants), ",") | |
715 | 715 | let winnerIndex = value(indexOf(list, tryGetString(this, "winner address"))) | |
716 | 716 | let listMinusWinner = removeByIndex(list, winnerIndex) | |
717 | 717 | func r (accum,address) = invoke(this, "sponsorWinnerAddress", [address], nil) | |
718 | 718 | ||
719 | 719 | let invoker = { | |
720 | - | let $l = | |
720 | + | let $l = listMinusWinner | |
721 | 721 | let $s = size($l) | |
722 | 722 | let $acc0 = nil | |
723 | 723 | func $f0_1 ($a,$i) = if (($i >= $s)) | |
724 | 724 | then $a | |
725 | 725 | else r($a, $l[$i]) | |
726 | 726 | ||
727 | 727 | func $f0_2 ($a,$i) = if (($i >= $s)) | |
728 | 728 | then $a | |
729 | 729 | else throw("List size exceeds 100") | |
730 | 730 | ||
731 | 731 | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100) | |
732 | 732 | } | |
733 | 733 | if ((invoker == invoker)) | |
734 | 734 | then nil | |
735 | 735 | else throw("Strict value is not equal to itself.") | |
736 | 736 | } | |
737 | 737 | ||
738 | 738 | ||
739 | 739 | ||
740 | 740 | @Callable(i) | |
741 | 741 | func sponsorWinnerAddress (address) = if ((i.caller != this)) | |
742 | 742 | then throw("access only by project owner") | |
743 | 743 | else if ((tryGetInteger(this, keyTotalBalanceSponsorCount) >= tryGetInteger(this, "result remainder winner"))) | |
744 | 744 | then nil | |
745 | 745 | else { | |
746 | 746 | let count = totalBalance(addressFromStringValue(address)) | |
747 | 747 | if (((tryGetInteger(this, keyTotalBalanceSponsorCount) + count) >= tryGetInteger(this, "result remainder winner"))) | |
748 | 748 | then [IntegerEntry(keyTotalBalanceSponsorCount, (tryGetInteger(this, keyTotalBalanceSponsorCount) + count)), StringEntry("sponsor winner address", address)] | |
749 | 749 | else [IntegerEntry(keyTotalBalanceSponsorCount, (tryGetInteger(this, keyTotalBalanceSponsorCount) + count))] | |
750 | 750 | } | |
751 | 751 | ||
752 | 752 | ||
753 | 753 | ||
754 | 754 | @Callable(i) | |
755 | 755 | func paySponsorWinner (amount,assetId) = if ((i.caller != this)) | |
756 | 756 | then throw("access only by project owner") | |
757 | 757 | else { | |
758 | 758 | let winnerAddress = addressFromStringValue(getStringValue(this, "sponsor winner address")) | |
759 | 759 | let decimals = match assetInfo(fromBase58String(assetId)) { | |
760 | 760 | case asset: Asset => | |
761 | 761 | asset.decimals | |
762 | 762 | case _ => | |
763 | 763 | throw("Can't find asset") | |
764 | 764 | } | |
765 | 765 | let prizeAmount = amount | |
766 | 766 | [ScriptTransfer(winnerAddress, prizeAmount, fromBase58String(assetId))] | |
767 | 767 | } | |
768 | 768 | ||
769 | 769 |
github/deemru/w8io/3ef1775 288.83 ms ◑