ZGlmZiAtLWdpdCBhL3Rlc3QvY29udGFpbmVycy9hc3NvY2lhdGl2ZS9tdWx0aW1hcC9tdWx0aW1hcC5vcHMvdXBwZXJfYm91bmQucGFzcy5jcHAgYi90ZXN0L2NvbnRhaW5lcnMvYXNzb2NpYXRpdmUvbXVsdGltYXAvbXVsdGltYXAub3BzL3VwcGVyX2JvdW5kLnBhc3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkODMzNDIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvbnRhaW5lcnMvYXNzb2NpYXRpdmUvbXVsdGltYXAvbXVsdGltYXAub3BzL3VwcGVyX2JvdW5kLnBhc3MuY3BwCkBAIC0wLDAgKzEsODQgQEAKKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLworLy8gysrKysrKysrKysrKysrKysrKyspUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQorLy8KKy8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQorLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKy8vIDxtYXA+CisKKy8vIGNsYXNzIG11bHRpbWFwCisKKy8vICAgICAgIGl0ZXJhdG9yIHVwcGVyX2JvdW5kKGNvbnN0IGtleV90eXBlJiBrKTsKKy8vIGNvbnN0X2l0ZXJhdG9yIHVwcGVyX2JvdW5kKGNvbnN0IGtleV90eXBlJiBrKSBjb25zdDsKKworI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxjYXNzZXJ0PgorCitpbnQgbWFpbigpCit7CisgICAgdHlwZWRlZiBzdGQ6OnBhaXI8Y29uc3QgaW50LCBkb3VibGU+IFY7CisgICAgdHlwZWRlZiBzdGQ6Om11bHRpbWFwPGludCwgZG91YmxlPiBNOworICAgIHsKKyAgICAgICAgdHlwZWRlZiBNOjppdGVyYXRvciBSOworICAgICAgICBWIGFyW10gPQorICAgICAgICB7CisgICAgICAgICAgICBWKDUsIDEpLAorICAgICAgICAgICAgVig1LCAyKSwKKyAgICAgICAgICAgIFYoNSwgMyksCisgICAgICAgICAgICBWKDcsIDEpLAorICAgICAgICAgICAgVig3LCAyKSwKKyAgICAgICAgICAgIFYoNywgMyksCisgICAgICAgICAgICBWKDksIDEpLAorICAgICAgICAgICAgVig5LCAyKSwKKyAgICAgICAgICAgIFYoOSwgMykKKyAgICAgICAgfTsKKyAgICAgICAgTSBtKGFyLCBhcitzaXplb2YoYXIpL3NpemVvZihhclswXSkpOworICAgICAgICBSIHIgPSBtLnVwcGVyX2JvdW5kKDQpOworICAgICAgICBhc3NlcnQociA9PSBtLmJlZ2luKCkpOworICAgICAgICByID0gbS51cHBlcl9ib3VuZCg1KTsKKyAgICAgICAgYXNzZXJ0KHIgPT0gbmV4dChtLmJlZ2luKCksIDMpKTsKKyAgICAgICAgciA9IG0udXBwZXJfYm91bmQoNik7CisgICAgICAgIGFzc2VydChyID09IG5leHQobS5iZWdpbigpLCAzKSk7CisgICAgICAgIHIgPSBtLnVwcGVyX2JvdW5kKDcpOworICAgICAgICBhc3NlcnQociA9PSBuZXh0KG0uYmVnaW4oKSwgNikpOworICAgICAgICByID0gbS51cHBlcl9ib3VuZCg4KTsKKyAgICAgICAgYXNzZXJ0KHIgPT0gbmV4dChtLmJlZ2luKCksIDYpKTsKKyAgICAgICAgciA9IG0udXBwZXJfYm91bmQoOSk7CisgICAgICAgIGFzc2VydChyID09IG5leHQobS5iZWdpbigpLCA5KSk7CisgICAgICAgIHIgPSBtLnVwcGVyX2JvdW5kKDEwKTsKKyAgICAgICAgYXNzZXJ0KHIgPT0gbS5lbmQoKSk7CisgICAgfQorICAgIHsKKyAgICAgICAgdHlwZWRlZiBNOjpjb25zdF9pdGVyYXRvciBSOworICAgICAgICBWIGFyW10gPQorICAgICAgICB7CisgICAgICAgICAgICBWKDUsIDEpLAorICAgICAgICAgICAgVig1LCAyKSwKKyAgICAgICAgICAgIFYoNSwgMyksCisgICAgICAgICAgICBWKDcsIDEpLAorICAgICAgICAgICAgVig3LCAyKSwKKyAgICAgICAgICAgIFYoNywgMyksCisgICAgICAgICAgICBWKDksIDEpLAorICAgICAgICAgICAgVig5LCAyKSwKKyAgICAgICAgICAgIFYoOSwgMykKKyAgICAgICAgfTsKKyAgICAgICAgY29uc3QgTSBtKGFyLCBhcitzaXplb2YoYXIpL3NpemVvZihhclswXSkpOworICAgICAgICBSIHIgPSBtLnVwcGVyX2JvdW5kKDQpOworICAgICAgICBhc3NlcnQociA9PSBtLmJlZ2luKCkpOworICAgICAgICByID0gbS51cHBlcl9ib3VuZCg1KTsKKyAgICAgICAgYXNzZXJ0KHIgPT0gbmV4dChtLmJlZ2luKCksIDMpKTsKKyAgICAgICAgciA9IG0udXBwZXJfYm91bmQoNik7CisgICAgICAgIGFzc2VydChyID09IG5leHQobS5iZWdpbigpLCAzKSk7CisgICAgICAgIHIgPSBtLnVwcGVyX2JvdW5kKDcpOworICAgICAgICBhc3NlcnQociA9PSBuZXh0KG0uYmVnaW4oKSwgNikpOworICAgICAgICByID0gbS51cHBlcl9ib3VuZCg4KTsKKyAgICAgICAgYXNzZXJ0KHIgPT0gbmV4dChtLmJlZ2luKCksIDYpKTsKKyAgICAgICAgciA9IG0udXBwZXJfYm91bmQoOSk7CisgICAgICAgIGFzc2VydChyID09IG5leHQobS5iZWdpbigpLCA5KSk7CisgICAgICAgIHIgPSBtLnVwcGVyX2JvdW5kKDEwKTsKKyAgICAgICAgYXNzZXJ0KHIgPT0gbS5lbmQoKSk7CisgICAgfQorfQo=