Ly89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8NLy8NLy8gysrKysrKysrKysrKysrKysrKyspUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQ0vLw0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UNLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLg0vLw0vLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLw0NLy8gdGVzdCBiaXRzZXQ8Tj4mIGZsaXAoKTsNDSNpbmNsdWRlIDxiaXRzZXQ+DSNpbmNsdWRlIDxjc3RkbGliPg0jaW5jbHVkZSA8Y2Fzc2VydD4NDXRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPg1zdGQ6OmJpdHNldDxOPg1tYWtlX2JpdHNldCgpDXsNICAgIHN0ZDo6Yml0c2V0PE4+IHY7DSAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgTjsgKytpKQ0gICAgICAgIHZbaV0gPSBzdGF0aWNfY2FzdDxib29sPihzdGQ6OnJhbmQoKSAmIDEpOw0gICAgcmV0dXJuIHY7DX0NDXRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPg12b2lkIHRlc3RfZmxpcF9hbGwoKQ17DSAgICBzdGQ6OmJpdHNldDxOPiB2MSA9IG1ha2VfYml0c2V0PE4+KCk7DSAgICBzdGQ6OmJpdHNldDxOPiB2MiA9IHYxOw0gICAgdjIuZmxpcCgpOw0gICAgZm9yIChzdGQ6OnNpemVfdCBpID0gMDsgaSA8IE47ICsraSkNICAgICAgICBhc3NlcnQodjJbaV0gPT0gfnYxW2ldKTsNfQ0NaW50IG1haW4oKQ17DSAgICB0ZXN0X2ZsaXBfYWxsPDA+KCk7DSAgICB0ZXN0X2ZsaXBfYWxsPDE+KCk7DSAgICB0ZXN0X2ZsaXBfYWxsPDMxPigpOw0gICAgdGVzdF9mbGlwX2FsbDwzMj4oKTsNICAgIHRlc3RfZmxpcF9hbGw8MzM+KCk7DSAgICB0ZXN0X2ZsaXBfYWxsPDYzPigpOw0gICAgdGVzdF9mbGlwX2FsbDw2ND4oKTsNICAgIHRlc3RfZmxpcF9hbGw8NjU+KCk7DSAgICB0ZXN0X2ZsaXBfYWxsPDEwMDA+KCk7DX0N