Ly89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLy8KLy8gysrKysrKysrKysrKysrKysrKyspUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQovLwovLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgovLwovLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwoKLy8gPGNvbXBsZXg+CgovLyB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPiAKLy8gICBiYXNpY19pc3RyZWFtPGNoYXJULCB0cmFpdHM+JiAKLy8gICBvcGVyYXRvcj4+KGJhc2ljX2lzdHJlYW08Y2hhclQsIHRyYWl0cz4mIGlzLCBjb21wbGV4PFQ+JiB4KTsKCiNpbmNsdWRlIDxjb21wbGV4PgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPGNhc3NlcnQ+CgppbnQgbWFpbigpCnsKICAgIHsKICAgICAgICBzdGQ6OmlzdHJpbmdzdHJlYW0gaXMoIjUiKTsKICAgICAgICBzdGQ6OmNvbXBsZXg8ZG91YmxlPiBjOwogICAgICAgIGlzID4+IGM7CiAgICAgICAgYXNzZXJ0KGMgPT0gc3RkOjpjb21wbGV4PGRvdWJsZT4oNSwgMCkpOwogICAgICAgIGFzc2VydChpcy5lb2YoKSk7CiAgICB9CiAgICB7CiAgICAgICAgc3RkOjppc3RyaW5nc3RyZWFtIGlzKCIgNSAiKTsKICAgICAgICBzdGQ6OmNvbXBsZXg8ZG91YmxlPiBjOwogICAgICAgIGlzID4+IGM7CiAgICAgICAgYXNzZXJ0KGMgPT0gc3RkOjpjb21wbGV4PGRvdWJsZT4oNSwgMCkpOwogICAgICAgIGFzc2VydChpcy5nb29kKCkpOwogICAgfQogICAgewogICAgICAgIHN0ZDo6aXN0cmluZ3N0cmVhbSBpcygiIDUsICIpOwogICAgICAgIHN0ZDo6Y29tcGxleDxkb3VibGU+IGM7CiAgICAgICAgaXMgPj4gYzsKICAgICAgICBhc3NlcnQoYyA9PSBzdGQ6OmNvbXBsZXg8ZG91YmxlPig1LCAwKSk7CiAgICAgICAgYXNzZXJ0KGlzLmdvb2QoKSk7CiAgICB9CiAgICB7CiAgICAgICAgc3RkOjppc3RyaW5nc3RyZWFtIGlzKCIgLCA1LCAiKTsKICAgICAgICBzdGQ6OmNvbXBsZXg8ZG91YmxlPiBjOwogICAgICAgIGlzID4+IGM7CiAgICAgICAgYXNzZXJ0KGMgPT0gc3RkOjpjb21wbGV4PGRvdWJsZT4oMCwgMCkpOwogICAgICAgIGFzc2VydChpcy5mYWlsKCkpOwogICAgfQogICAgewogICAgICAgIHN0ZDo6aXN0cmluZ3N0cmVhbSBpcygiNS41ICIpOwogICAgICAgIHN0ZDo6Y29tcGxleDxkb3VibGU+IGM7CiAgICAgICAgaXMgPj4gYzsKICAgICAgICBhc3NlcnQoYyA9PSBzdGQ6OmNvbXBsZXg8ZG91YmxlPig1LjUsIDApKTsKICAgICAgICBhc3NlcnQoaXMuZ29vZCgpKTsKICAgIH0KICAgIHsKICAgICAgICBzdGQ6OmlzdHJpbmdzdHJlYW0gaXMoIiAoIDUuNSApICIpOwogICAgICAgIHN0ZDo6Y29tcGxleDxkb3VibGU+IGM7CiAgICAgICAgaXMgPj4gYzsKICAgICAgICBhc3NlcnQoYyA9PSBzdGQ6OmNvbXBsZXg8ZG91YmxlPig1LjUsIDApKTsKICAgICAgICBhc3NlcnQoaXMuZ29vZCgpKTsKICAgIH0KICAgIHsKICAgICAgICBzdGQ6OmlzdHJpbmdzdHJlYW0gaXMoIiAgNS41KSIpOwogICAgICAgIHN0ZDo6Y29tcGxleDxkb3VibGU+IGM7CiAgICAgICAgaXMgPj4gYzsKICAgICAgICBhc3NlcnQoYyA9PSBzdGQ6OmNvbXBsZXg8ZG91YmxlPig1LjUsIDApKTsKICAgICAgICBhc3NlcnQoaXMuZ29vZCgpKTsKICAgIH0KICAgIHsKICAgICAgICBzdGQ6OmlzdHJpbmdzdHJlYW0gaXMoIig1LjUgIik7CiAgICAgICAgc3RkOjpjb21wbGV4PGRvdWJsZT4gYzsKICAgICAgICBpcyA+PiBjOwogICAgICAgIGFzc2VydChjID09IHN0ZDo6Y29tcGxleDxkb3VibGU+KDAsIDApKTsKICAgICAgICBhc3NlcnQoaXMuZmFpbCgpKTsKICAgIH0KICAgIHsKICAgICAgICBzdGQ6OmlzdHJpbmdzdHJlYW0gaXMoIig1LjUsIik7CiAgICAgICAgc3RkOjpjb21wbGV4PGRvdWJsZT4gYzsKICAgICAgICBpcyA+PiBjOwogICAgICAgIGFzc2VydChjID09IHN0ZDo6Y29tcGxleDxkb3VibGU+KDAsIDApKTsKICAgICAgICBhc3NlcnQoaXMuZmFpbCgpKTsKICAgIH0KICAgIHsKICAgICAgICBzdGQ6OmlzdHJpbmdzdHJlYW0gaXMoIiggLTUuNSAsIC02LjUgKSIpOwogICAgICAgIHN0ZDo6Y29tcGxleDxkb3VibGU+IGM7CiAgICAgICAgaXMgPj4gYzsKICAgICAgICBhc3NlcnQoYyA9PSBzdGQ6OmNvbXBsZXg8ZG91YmxlPigtNS41LCAtNi41KSk7CiAgICAgICAgYXNzZXJ0KGlzLmVvZigpKTsKICAgIH0KICAgIHsKICAgICAgICBzdGQ6OmlzdHJpbmdzdHJlYW0gaXMoIigtNS41LC02LjUpIik7CiAgICAgICAgc3RkOjpjb21wbGV4PGRvdWJsZT4gYzsKICAgICAgICBpcyA+PiBjOwogICAgICAgIGFzc2VydChjID09IHN0ZDo6Y29tcGxleDxkb3VibGU+KC01LjUsIC02LjUpKTsKICAgICAgICBhc3NlcnQoaXMuZW9mKCkpOwogICAgfQp9Cg==