ZGlmZiAtLWdpdCBhL2ZwZGZzZGsvc3JjL2ZwZGZkb2MuY3BwIGIvZnBkZnNkay9zcmMvZnBkZmRvYy5jcHAKaW5kZXggNTBmM2UyYy4uNGI1ZGEyZiAxMDA2NDQKLS0tIGEvZnBkZnNkay9zcmMvZnBkZmRvYy5jcHAKKysrIGIvZnBkZnNkay9zcmMvZnBkZmRvYy5jcHAKQEAgLTYsNyArNiwxMCBAQAogCiAjaW5jbHVkZSAicHVibGljL2ZwZGZfZG9jLmgiCiAKKyNpbmNsdWRlIDxzZXQ+CisKICNpbmNsdWRlICJmcGRmc2RrL2luY2x1ZGUvZnNka19kZWZpbmUuaCIKKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9iYXNlL3N0bF91dGlsLmgiCiAKIG5hbWVzcGFjZSB7CiAKQEAgLTE0LDE3ICsxNywyNCBAQAogCiBDUERGX0Jvb2ttYXJrIEZpbmRCb29rbWFyayhjb25zdCBDUERGX0Jvb2ttYXJrVHJlZSYgdHJlZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQREZfQm9va21hcmsgYm9va21hcmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfV2lkZVN0cmluZyYgdGl0bGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9XaWRlU3RyaW5nJiB0aXRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c2V0PENQREZfRGljdGlvbmFyeSo+KiB2aXNpdGVkKSB7CisgIC8vIFJldHVybiBpZiBhbHJlYWR5IGNoZWNrZWQgdG8gYXZvaWQgY2lyY3VsYXIgY2FsbGluZy4KKyAgaWYgKHBkZml1bTo6Q29udGFpbnNLZXkoKnZpc2l0ZWQsIGJvb2ttYXJrLkdldERpY3QoKSkpCisgICAgcmV0dXJuIENQREZfQm9va21hcmsoKTsKKyAgdmlzaXRlZC0+aW5zZXJ0KGJvb2ttYXJrLkdldERpY3QoKSk7CisKICAgaWYgKGJvb2ttYXJrLkdldERpY3QoKSAmJgogICAgICAgYm9va21hcmsuR2V0VGl0bGUoKS5Db21wYXJlTm9DYXNlKHRpdGxlLmNfc3RyKCkpID09IDApIHsKLSAgICAvLyBGaXJzdCBjaGVjayB0aGlzIGl0ZW0KKyAgICAvLyBGaXJzdCBjaGVjayB0aGlzIGl0ZW0uCiAgICAgcmV0dXJuIGJvb2ttYXJrOwogICB9Ci0gIC8vIGdvIGludG8gY2hpbGRyZW4gaXRlbXMKKworICAvLyBHbyBpbnRvIGNoaWxkcmVuIGl0ZW1zLgogICBDUERGX0Jvb2ttYXJrIGNoaWxkID0gdHJlZS5HZXRGaXJzdENoaWxkKGJvb2ttYXJrKTsKLSAgd2hpbGUgKGNoaWxkLkdldERpY3QoKSkgewotICAgIC8vIGNoZWNrIGlmIHRoaXMgaXRlbQotICAgIENQREZfQm9va21hcmsgZm91bmQgPSBGaW5kQm9va21hcmsodHJlZSwgY2hpbGQsIHRpdGxlKTsKKyAgd2hpbGUgKGNoaWxkLkdldERpY3QoKSAmJiAhcGRmaXVtOjpDb250YWluc0tleSgqdmlzaXRlZCwgY2hpbGQuR2V0RGljdCgpKSkgeworICAgIC8vIENoZWNrIHRoaXMgaXRlbSBhbmQgaXRzIGNoaWxkcmVuLgorICAgIENQREZfQm9va21hcmsgZm91bmQgPSBGaW5kQm9va21hcmsodHJlZSwgY2hpbGQsIHRpdGxlLCB2aXNpdGVkKTsKICAgICBpZiAoZm91bmQuR2V0RGljdCgpKQogICAgICAgcmV0dXJuIGZvdW5kOwogICAgIGNoaWxkID0gdHJlZS5HZXROZXh0U2libGluZyhjaGlsZCk7CkBAIC0xMDEsNyArMTExLDggQEAKICAgQ1BERl9Cb29rbWFya1RyZWUgdHJlZShwRG9jKTsKICAgRlhfU1RSU0laRSBsZW4gPSBDRlhfV2lkZVN0cmluZzo6V1N0cmluZ0xlbmd0aCh0aXRsZSk7CiAgIENGWF9XaWRlU3RyaW5nIGVuY29kZWRUaXRsZSA9IENGWF9XaWRlU3RyaW5nOjpGcm9tVVRGMTZMRSh0aXRsZSwgbGVuKTsKLSAgcmV0dXJuIEZpbmRCb29rbWFyayh0cmVlLCBDUERGX0Jvb2ttYXJrKCksIGVuY29kZWRUaXRsZSkuR2V0RGljdCgpOworICBzdGQ6OnNldDxDUERGX0RpY3Rpb25hcnkqPiB2aXNpdGVkOworICByZXR1cm4gRmluZEJvb2ttYXJrKHRyZWUsIENQREZfQm9va21hcmsoKSwgZW5jb2RlZFRpdGxlLCAmdmlzaXRlZCkuR2V0RGljdCgpOwogfQogCiBETExFWFBPUlQgRlBERl9ERVNUIFNURENBTEwgRlBERkJvb2ttYXJrX0dldERlc3QoRlBERl9ET0NVTUVOVCBkb2N1bWVudCwKZGlmZiAtLWdpdCBhL2ZwZGZzZGsvc3JjL2ZwZGZkb2NfZW1iZWRkZXJ0ZXN0LmNwcCBiL2ZwZGZzZGsvc3JjL2ZwZGZkb2NfZW1iZWRkZXJ0ZXN0LmNwcAppbmRleCBhNzg5ZGFkLi4wY2E2YTQ4IDEwMDY0NAotLS0gYS9mcGRmc2RrL3NyYy9mcGRmZG9jX2VtYmVkZGVydGVzdC5jcHAKKysrIGIvZnBkZnNkay9zcmMvZnBkZmRvY19lbWJlZGRlcnRlc3QuY3BwCkBAIC0xMjUsMyArMTI1LDE0IEBACiAgICAgICBHZXRGUERGV2lkZVN0cmluZyhMIkEgQkFEIEJlZ2lubmluZyIpOwogICBFWFBFQ1RfRVEobnVsbHB0ciwgRlBERkJvb2ttYXJrX0ZpbmQoZG9jdW1lbnQoKSwgYmFkX3RpdGxlLmdldCgpKSk7CiB9CisKKy8vIENoZWNrIGNpcmN1bGFyIGJvb2ttYXJrcyB3aWxsIG5vdCBjYXVzZSBpbmZpbml0ZSBsb29wLgorVEVTVF9GKEZQREZEb2NFbWJlZGRlcnRlc3QsIEZpbmRCb29rbWFya3NfYnVnNDIwKSB7CisgIC8vIE9wZW4gYSBmaWxlIHdpdGggY2lyY3VsYXIgYm9va21hcmtzLgorICBFWFBFQ1RfVFJVRShPcGVuRG9jdW1lbnQoImJvb2ttYXJrc19jaXJjdWxhci5wZGYiKSk7CisKKyAgLy8gVHJ5IHRvIGZpbmQgYSB0aXRsZS4KKyAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkIHNob3J0LCBwZGZpdW06OkZyZWVEZWxldGVyPiB0aXRsZSA9CisgICAgICBHZXRGUERGV2lkZVN0cmluZyhMImFueXRoaW5nIik7CisgIEVYUEVDVF9FUShudWxscHRyLCBGUERGQm9va21hcmtfRmluZChkb2N1bWVudCgpLCB0aXRsZS5nZXQoKSkpOworfQpkaWZmIC0tZ2l0IGEvdGVzdGluZy9yZXNvdXJjZXMvYm9va21hcmtzX2NpcmN1bGFyLmluIGIvdGVzdGluZy9yZXNvdXJjZXMvYm9va21hcmtzX2NpcmN1bGFyLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4YTU2OTUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL3Jlc291cmNlcy9ib29rbWFya3NfY2lyY3VsYXIuaW4KQEAgLTAsMCArMSw5OCBAQAore3toZWFkZXJ9fQore3tvYmplY3QgMSAwfX0gPDwKKyAgL1R5cGUgL0NhdGFsb2cKKyAgL1BhZ2VzIDIgMCBSCisgIC9PdXRsaW5lcyAxNCAwIFIKKz4+CitlbmRvYmoKK3t7b2JqZWN0IDIgMH19IDw8CisgIC9UeXBlIC9QYWdlcworICAvQ291bnQgMgorICAvS2lkcyBbCisgICAgMyAwIFIKKyAgICA0IDAgUgorICBdCis+PgorZW5kb2JqCislIFBhZ2UgbnVtYmVyIDAuCit7e29iamVjdCAzIDB9fSA8PAorICAvVHlwZSAvUGFnZQorICAvUGFyZW50IDIgMCBSCisgIC9SZXNvdXJjZXMgPDwKKyAgICAvRm9udCA8PC9GMSAxNSAwIFI+PgorICA+PgorICAvQ29udGVudHMgWzIxIDAgUl0KKyAgL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KKz4+CitlbmRvYmoKKyUgUGFnZSBudW1iZXIgMS4KK3t7b2JqZWN0IDQgMH19IDw8CisgIC9UeXBlIC9QYWdlCisgIC9QYXJlbnQgMiAwIFIKKyAgL1Jlc291cmNlcyAgPDwKKyAgICAvRm9udCA8PC9GMSAxNSAwIFI+PgorICA+PgorICAvQ29udGVudHMgWzIyIDAgUl0KKyAgL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KKz4+CitlbmRvYmoKKyUgRmlyc3QgYm9va21hcmsKK3t7b2JqZWN0IDEwIDB9fSA8PAorICAvVGl0bGUgKEEgR29vZCBCZWdpbm5pbmcpCisgIC9QYXJlbnQgMTQgMCBSCisgIC9OZXh0IDExIDAgUgorICAvRGVzdCAoZm9vKQorPj4KK2VuZG9iagorJSBMYXN0IGJvb2ttYXJrCit7e29iamVjdCAxMSAwfX0gPDwKKyAgL1RpdGxlIChBIEdvb2QgRW5kaW5nKQorICAvUGFyZW50IDE0IDAgUgorICAvTmV4dCAxMCAwIFIKKyAgL0Rlc3QgKGJhcikKKz4+CitlbmRvYmoKKyUgUm9vdCBib29rbWFyawore3tvYmplY3QgMTQgMH19IDw8CisgIC9UeXBlIC9PdXRsaW5lcworICAvRmlyc3QgMTAgMCBSCisgIC9MYXN0ICAxMSAwIFIKKyAgL0NvdW50IDIKKz4+CitlbmRvYmoKKyUgRm9udCByZXNvdXJjZS4KK3t7b2JqZWN0IDE1IDB9fSA8PAorICAvVHlwZSAvRm9udAorICAvU3VidHlwZSAvVHlwZTEKKyAgL0Jhc2VGb250IC9BcmlhbAorPj4KK2VuZG9iagorJSBDb250ZW50IGZvciBwYWdlIDAuCit7e29iamVjdCAyMSAwfX0gPDwKKyAgL0xlbmd0aCAwCis+Pgorc3RyZWFtCitCVAorL0YxIDIwIFRmCisxMDAgNjAwIFREIChQYWdlMSlUagorRVQKK2VuZHN0cmVhbQorZW5kb2JqCislIENvbnRlbnQgZm9yIHBhZ2UgMS4KK3t7b2JqZWN0IDIyIDB9fSA8PAorICAvTGVuZ3RoIDAKKz4+CitzdHJlYW0KK0JUCisvRjEgMjAgVGYKKzEwMCA2MDAgVEQgKFBhZ2UyKVRqCitFVAorZW5kc3RyZWFtCitlbmRvYmoKK3t7eHJlZn19Cit0cmFpbGVyIDw8CisgIC9TaXplIDYKKyAgL1Jvb3QgMSAwIFIKKz4+Cit7e3N0YXJ0eHJlZn19CislJUVPRgpkaWZmIC0tZ2l0IGEvdGVzdGluZy9yZXNvdXJjZXMvYm9va21hcmtzX2NpcmN1bGFyLnBkZiBiL3Rlc3RpbmcvcmVzb3VyY2VzL2Jvb2ttYXJrc19jaXJjdWxhci5wZGYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTdlYjYyNAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvcmVzb3VyY2VzL2Jvb2ttYXJrc19jaXJjdWxhci5wZGYKQEAgLTAsMCArMSwxMjQgQEAKKyVQREYtMS43CisloPKk9AorMSAwIG9iaiA8PAorICAvVHlwZSAvQ2F0YWxvZworICAvUGFnZXMgMiAwIFIKKyAgL091dGxpbmVzIDE0IDAgUgorPj4KK2VuZG9iagorMiAwIG9iaiA8PAorICAvVHlwZSAvUGFnZXMKKyAgL0NvdW50IDIKKyAgL0tpZHMgWworICAgIDMgMCBSCisgICAgNCAwIFIKKyAgXQorPj4KK2VuZG9iagorJSBQYWdlIG51bWJlciAwLgorMyAwIG9iaiA8PAorICAvVHlwZSAvUGFnZQorICAvUGFyZW50IDIgMCBSCisgIC9SZXNvdXJjZXMgPDwKKyAgICAvRm9udCA8PC9GMSAxNSAwIFI+PgorICA+PgorICAvQ29udGVudHMgWzIxIDAgUl0KKyAgL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KKz4+CitlbmRvYmoKKyUgUGFnZSBudW1iZXIgMS4KKzQgMCBvYmogPDwKKyAgL1R5cGUgL1BhZ2UKKyAgL1BhcmVudCAyIDAgUgorICAvUmVzb3VyY2VzICA8PAorICAgIC9Gb250IDw8L0YxIDE1IDAgUj4+CisgID4+CisgIC9Db250ZW50cyBbMjIgMCBSXQorICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQorPj4KK2VuZG9iagorJSBGaXJzdCBib29rbWFyaworMTAgMCBvYmogPDwKKyAgL1RpdGxlIChBIEdvb2QgQmVnaW5uaW5nKQorICAvUGFyZW50IDE0IDAgUgorICAvTmV4dCAxMSAwIFIKKyAgL0Rlc3QgKGZvbykKKz4+CitlbmRvYmoKKyUgTGFzdCBib29rbWFyaworMTEgMCBvYmogPDwKKyAgL1RpdGxlIChBIEdvb2QgRW5kaW5nKQorICAvUGFyZW50IDE0IDAgUgorICAvTmV4dCAxMCAwIFIKKyAgL0Rlc3QgKGJhcikKKz4+CitlbmRvYmoKKyUgUm9vdCBib29rbWFyaworMTQgMCBvYmogPDwKKyAgL1R5cGUgL091dGxpbmVzCisgIC9GaXJzdCAxMCAwIFIKKyAgL0xhc3QgIDExIDAgUgorICAvQ291bnQgMgorPj4KK2VuZG9iagorJSBGb250IHJlc291cmNlLgorMTUgMCBvYmogPDwKKyAgL1R5cGUgL0ZvbnQKKyAgL1N1YnR5cGUgL1R5cGUxCisgIC9CYXNlRm9udCAvQXJpYWwKKz4+CitlbmRvYmoKKyUgQ29udGVudCBmb3IgcGFnZSAwLgorMjEgMCBvYmogPDwKKyAgL0xlbmd0aCAwCis+Pgorc3RyZWFtCitCVAorL0YxIDIwIFRmCisxMDAgNjAwIFREIChQYWdlMSlUagorRVQKK2VuZHN0cmVhbQorZW5kb2JqCislIENvbnRlbnQgZm9yIHBhZ2UgMS4KKzIyIDAgb2JqIDw8CisgIC9MZW5ndGggMAorPj4KK3N0cmVhbQorQlQKKy9GMSAyMCBUZgorMTAwIDYwMCBURCAoUGFnZTIpVGoKK0VUCitlbmRzdHJlYW0KK2VuZG9iagoreHJlZgorMCAyMworMDAwMDAwMDAwMCA2NTUzNSBmIAorMDAwMDAwMDAxNSAwMDAwMCBuIAorMDAwMDAwMDA4NyAwMDAwMCBuIAorMDAwMDAwMDE4NSAwMDAwMCBuIAorMDAwMDAwMDM0NiAwMDAwMCBuIAorMDAwMDAwMDAwMCA2NTUzNSBmIAorMDAwMDAwMDAwMCA2NTUzNSBmIAorMDAwMDAwMDAwMCA2NTUzNSBmIAorMDAwMDAwMDAwMCA2NTUzNSBmIAorMDAwMDAwMDAwMCA2NTUzNSBmIAorMDAwMDAwMDUwOCAwMDAwMCBuIAorMDAwMDAwMDYyMCAwMDAwMCBuIAorMDAwMDAwMDAwMCA2NTUzNSBmIAorMDAwMDAwMDAwMCA2NTUzNSBmIAorMDAwMDAwMDcyOSAwMDAwMCBuIAorMDAwMDAwMDgyOSAwMDAwMCBuIAorMDAwMDAwMDAwMCA2NTUzNSBmIAorMDAwMDAwMDAwMCA2NTUzNSBmIAorMDAwMDAwMDAwMCA2NTUzNSBmIAorMDAwMDAwMDAwMCA2NTUzNSBmIAorMDAwMDAwMDAwMCA2NTUzNSBmIAorMDAwMDAwMDkyNCAwMDAwMCBuIAorMDAwMDAwMTAzNCAwMDAwMCBuIAordHJhaWxlciA8PAorICAvU2l6ZSA2CisgIC9Sb290IDEgMCBSCis+Pgorc3RhcnR4cmVmCisxMTIyCislJUVPRgo=