Ly89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8NLy8NLy8gysrKysrKysrKysrKysrKysrKyspUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQ0vLw0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UNLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLg0vLw0vLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLw0NLy8gPGZ1bmN0aW9uYWw+DQ0vLyByZWZlcmVuY2Vfd3JhcHBlcg0NLy8gb3BlcmF0b3IgVCYgKCkgY29uc3Q7DQ0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4NI2luY2x1ZGUgPGNhc3NlcnQ+DQ1jbGFzcyBmdW5jdG9yMQ0gICAgOiBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjxpbnQsIGNoYXI+DXsNfTsNDXRlbXBsYXRlIDxjbGFzcyBUPg12b2lkDXRlc3QoVCYgdCkNew0gICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxUPiByKHQpOw0gICAgVCYgcjIgPSByOw0gICAgYXNzZXJ0KCZyMiA9PSAmdCk7DX0NDXZvaWQgZigpIHt9DQ1pbnQgbWFpbigpDXsNICAgIHZvaWQgKCpmcCkoKSA9IGY7DSAgICB0ZXN0KGZwKTsNICAgIHRlc3QoZik7DSAgICBmdW5jdG9yMSBmMTsNICAgIHRlc3QoZjEpOw0gICAgaW50IGkgPSAwOw0gICAgdGVzdChpKTsNICAgIGNvbnN0IGludCBqID0gMDsNICAgIHRlc3Qoaik7DX0N