From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Marek Kasik To: git-commits@fedoraproject.org Subject: [rpms/inkscape] rawhide: Rebuild for poppler 26.08.0 Date: Mon, 10 Aug 2026 14:42:51 GMT Message-ID: <178637297114.1.3779269087620444701.rpms-inkscape-c8f428f77e72@fedoraproject.org> List-ID: X-Git-Repo: rpms/inkscape X-Git-Branch: rawhide X-Git-Rev: c8f428f77e725469aa54fe4280e3a3e84a45b07d QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvaW5rc2NhcGUKQnJh bmNoIDogcmF3aGlkZQpDb21taXQgOiBjOGY0MjhmNzdlNzI1NDY5YWE1NGZlNDI4MGUzYTNlODRh NDViMDdkCkF1dGhvciA6IE1hcmVrIEthc2lrIDxta2FzaWtAcmVkaGF0LmNvbT4KRGF0ZSAgIDog MjAyNi0wOC0xMFQxNjoxNjo1NiswMjowMApTdGF0cyAgOiArNzU5Ly0wIGluIDIgZmlsZShzKQpV UkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2lua3NjYXBlL2MvYzhm NDI4Zjc3ZTcyNTQ2OWFhNTRmZTQyODBlM2EzZTg0YTQ1YjA3ZD9icmFuY2g9cmF3aGlkZQoKTG9n OgpSZWJ1aWxkIGZvciBwb3BwbGVyIDI2LjA4LjAKCi0tLQpkaWZmIC0tZ2l0IGEvaW5rc2NhcGUt MS40LjQtcG9wcGxlci0yNi4wOC4wLnBhdGNoIGIvaW5rc2NhcGUtMS40LjQtcG9wcGxlci0yNi4w OC4wLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyNjY2YWMKLS0t IC9kZXYvbnVsbAorKysgYi9pbmtzY2FwZS0xLjQuNC1wb3BwbGVyLTI2LjA4LjAucGF0Y2gKQEAg LTAsMCArMSw3NTcgQEAKKy0tLSBpbmtzY2FwZS0xLjQuNF8yMDI2LTA1LTA1X2RjYWYzZTdkOWUv c3JjL2V4dGVuc2lvbi9pbnRlcm5hbC9wZGZpbnB1dC9wZGYtaW5wdXQuY3BwCisrKysgaW5rc2Nh cGUtMS40LjRfMjAyNi0wNS0wNV9kY2FmM2U3ZDllL3NyYy9leHRlbnNpb24vaW50ZXJuYWwvcGRm aW5wdXQvcGRmLWlucHV0LmNwcAorQEAgLTgwOCw3ICs4MDgsMTEgQEAgUGRmSW5wdXQ6OmFkZF9i dWlsZGVyX3BhZ2Uoc3RkOjpzaGFyZWRfcAorICAgICB9CisgCisgICAgIC8vIEFwcGx5IGNyb3Ag c2V0dGluZ3MKKysjaWYgUE9QUExFUl9DSEVDS19WRVJTSU9OKDI2LCA2LCAwKQorKyAgICBzdGQ6 Om9wdGlvbmFsPFBERlJlY3RhbmdsZT4gY2xpcFRvQm94OworKyNlbHNlCisgICAgIF9QT1BQTEVS X0NPTlNUIFBERlJlY3RhbmdsZSAqY2xpcFRvQm94ID0gbnVsbHB0cjsKKysjZW5kaWYKKyAKKyAg ICAgaWYgKGNyb3BfdG8gPT0gIm1lZGlhLWJveCIpIHsKKyAgICAgICAgIGNsaXBUb0JveCA9IHBh Z2UtPmdldE1lZGlhQm94KCk7CitAQCAtODIyLDggKzgyNiwxNiBAQCBQZGZJbnB1dDo6YWRkX2J1 aWxkZXJfcGFnZShzdGQ6OnNoYXJlZF9wCisgICAgICAgICBjbGlwVG9Cb3ggPSBwYWdlLT5nZXRB cnRCb3goKTsKKyAgICAgfQorIAorKyAgICBzdGQ6Om9wdGlvbmFsPFBERlJlY3RhbmdsZT4gY3Jv cEJveDsKKysjaWYgUE9QUExFUl9DSEVDS19WRVJTSU9OKDI2LCA2LCAwKQorKyAgICBjcm9wQm94 ID0gY2xpcFRvQm94OworKyNlbHNlCisrICAgIGlmIChjbGlwVG9Cb3gpIHsKKysgICAgICAgIGNy b3BCb3ggPSAqY2xpcFRvQm94OworKyAgICB9CisrI2VuZGlmCisgICAgIC8vIENyZWF0ZSBwYXJz ZXIgIChleHRlbnNpb24vaW50ZXJuYWwvcGRmaW5wdXQvcGRmLXBhcnNlci5oKQorLSAgICBhdXRv IHBkZl9wYXJzZXIgPSBQZGZQYXJzZXIocGRmX2RvYywgYnVpbGRlciwgcGFnZSwgY2xpcFRvQm94 KTsKKysgICAgYXV0byBwZGZfcGFyc2VyID0gUGRmUGFyc2VyKHBkZl9kb2MsIGJ1aWxkZXIsIHBh Z2UsIGNyb3BCb3gpOworIAorICAgICAvLyBTZXQgdXAgYXBwcm94aW1hdGlvbiBwcmVjaXNpb24g Zm9yIHBhcnNlci4gVXNlZCBmb3IgY29udmVydGluZyBNZXNoIEdyYWRpZW50cyBpbnRvIHRpbGVz LgorICAgICBpZiAoIGNvbG9yX2RlbHRhIDw9IDAuMCApIHsKK0BAIC04NDMsOSArODU1LDEwIEBA IFBkZklucHV0OjphZGRfYnVpbGRlcl9wYWdlKHN0ZDo6c2hhcmVkX3AKKyAKKyAgICAgLy8gUGFy c2UgdGhlIGFubm90YXRpb25zCisgICAgIGlmIChhdXRvIGFubm90cyA9IHBhZ2UtPmdldEFubm90 c09iamVjdCgpOyBhbm5vdHMuaXNBcnJheSgpKSB7CistICAgICAgICBhdXRvIGNvbnN0IHNpemUg PSBhbm5vdHMuYXJyYXlHZXRMZW5ndGgoKTsKKysgICAgICAgIGF1dG8qIGFubm90c0FycmF5ID0g YW5ub3RzLmdldEFycmF5KCk7CisrICAgICAgICBhdXRvIGNvbnN0IHNpemUgPSBhbm5vdHNBcnJh eS0+Z2V0TGVuZ3RoKCk7CisgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykg eworLSAgICAgICAgICAgIHBkZl9wYXJzZXIuYnVpbGRfYW5ub3RzKGFubm90cy5hcnJheUdldChp KSwgcGFnZV9udW0pOworKyAgICAgICAgICAgIHBkZl9wYXJzZXIuYnVpbGRfYW5ub3RzKGFubm90 c0FycmF5LT5nZXQoaSksIHBhZ2VfbnVtKTsKKyAgICAgICAgIH0KKyAgICAgfQorIH0KKy0tLSBp bmtzY2FwZS0xLjQuNF8yMDI2LTA1LTA1X2RjYWYzZTdkOWUvc3JjL2V4dGVuc2lvbi9pbnRlcm5h bC9wZGZpbnB1dC9wZGYtcGFyc2VyLmNwcAorKysrIGlua3NjYXBlLTEuNC40XzIwMjYtMDUtMDVf ZGNhZjNlN2Q5ZS9zcmMvZXh0ZW5zaW9uL2ludGVybmFsL3BkZmlucHV0L3BkZi1wYXJzZXIuY3Bw CitAQCAtNDMsNiArNDMsNyBAQAorICNpbmNsdWRlIDxwb3BwbGVyL0dsb2JhbFBhcmFtcy5oPgor ICNpbmNsdWRlIDxwb3BwbGVyL0xleGVyLmg+CisgI2luY2x1ZGUgPHBvcHBsZXIvT2JqZWN0Lmg+ CisrI2luY2x1ZGUgPHBvcHBsZXIvT3B0aW9uYWxDb250ZW50Lmg+CisgI2luY2x1ZGUgPHBvcHBs ZXIvT3V0cHV0RGV2Lmg+CisgI2luY2x1ZGUgPHBvcHBsZXIvUERGRG9jLmg+CisgI2luY2x1ZGUg PHBvcHBsZXIvUGFnZS5oPgorQEAgLTI2Niw3ICsyNjcsNyBAQCBHZnhQYXRjaCBibGFua1BhdGNo KCkKKyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorIFBkZlBhcnNlcjo6UGRmUGFyc2VyKHN0ZDo6c2hh cmVkX3B0cjxQREZEb2M+IHBkZl9kb2MsIElua3NjYXBlOjpFeHRlbnNpb246OkludGVybmFsOjpT dmdCdWlsZGVyICpidWlsZGVyQSwgUGFnZSAqcGFnZSwKKy0gICAgICAgICAgICAgICAgICAgICBf UE9QUExFUl9DT05TVCBQREZSZWN0YW5nbGUgKmNyb3BCb3gpCisrICAgICAgICAgICAgICAgICAg ICAgY29uc3Qgc3RkOjpvcHRpb25hbDxQREZSZWN0YW5nbGU+ICZjcm9wQm94KQorICAgICA6IF9w ZGZfZG9jKHBkZl9kb2MpCisgICAgICwgeHJlZihwZGZfZG9jLT5nZXRYUmVmKCkpCisgICAgICwg YnVpbGRlcihidWlsZGVyQSkKK0BAIC0yOTIsOCArMjkzLDggQEAgUGRmUGFyc2VyOjpQZGZQYXJz ZXIoc3RkOjpzaGFyZWRfcHRyPFBERgorICAgICBpZiAocGFnZSkgeworICAgICAgICAgLy8gSW5j cmVtZW50IHRoZSBwYWdlIGJ1aWxkaW5nIGhlcmUgYW5kIHNldCBwYWdlIGxhYmVsCisgICAgICAg ICBDYXRhbG9nICpjYXRhbG9nID0gcGRmX2RvYy0+Z2V0Q2F0YWxvZygpOworLSAgICAgICAgR29v U3RyaW5nICpsYWJlbCA9IG5ldyBHb29TdHJpbmcoIiIpOworLSAgICAgICAgY2F0YWxvZy0+aW5k ZXhUb0xhYmVsKHBhZ2UtPmdldE51bSgpIC0gMSwgbGFiZWwpOworKyAgICAgICAgX1BPUFBMRVJf U1RSSU5HXzI2XzcgbGFiZWw7CisrICAgICAgICBjYXRhbG9nLT5pbmRleFRvTGFiZWwocGFnZS0+ Z2V0TnVtKCkgLSAxLCAmbGFiZWwpOworICAgICAgICAgYnVpbGRlci0+cHVzaFBhZ2UoZ2V0U3Ry aW5nKGxhYmVsKSwgc3RhdGUpOworICAgICB9CisgCitAQCAtMzA3LDggKzMwOCw4IEBAIFBkZlBh cnNlcjo6UGRmUGFyc2VyKHN0ZDo6c2hhcmVkX3B0cjxQREYKKyAgICAgYnVpbGRlci0+c2V0TWFy Z2lucyhnZXRSZWN0KHBhZ2UtPmdldFRyaW1Cb3goKSkgKiBzY2FsZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICBnZXRSZWN0KHBhZ2UtPmdldEFydEJveCgpKSAqIHNjYWxlLAorICAgICAgICAg ICAgICAgICAgICAgICAgIGdldFJlY3QocGFnZS0+Z2V0QmxlZWRCb3goKSkgKiBzY2FsZSk7Cist ICAgIGlmIChjcm9wQm94ICYmIGdldFJlY3QoY3JvcEJveCkgIT0gcGFnZV9ib3gpIHsKKy0gICAg ICAgIGJ1aWxkZXItPmNyb3BQYWdlKGdldFJlY3QoY3JvcEJveCkgKiBzY2FsZSk7CisrICAgIGlm IChjcm9wQm94ICYmIGdldFJlY3QoKmNyb3BCb3gpICE9IHBhZ2VfYm94KSB7CisrICAgICAgICBi dWlsZGVyLT5jcm9wUGFnZShnZXRSZWN0KCpjcm9wQm94KSAqIHNjYWxlKTsKKyAgICAgfQorIAor ICAgICBzYXZlU3RhdGUoKTsKK0BAIC0zMjUsNyArMzI2LDcgQEAgUGRmUGFyc2VyOjpQZGZQYXJz ZXIoWFJlZiAqeHJlZkEsIElua3NjYQorICAgICAsIHByaW50Q29tbWFuZHMoZmFsc2UpCisgICAg ICwgcmVzKG5ldyBHZnhSZXNvdXJjZXMoeHJlZiwgcmVzRGljdCwgbnVsbHB0cikpCisgICAgICwg Ly8gc3RhcnQgdGhlIHJlc291cmNlIHN0YWNrCistICAgIHN0YXRlKG5ldyBHZnhTdGF0ZSg3Miwg NzIsIGJveCwgMCwgZmFsc2UpKQorKyAgICBzdGF0ZShuZXcgX1BPUFBMRVJfR0ZYX1NUQVRFKDcy LCA3MiwgKmJveCwgMCwgZmFsc2UpKQorICAgICAsIGZvbnRDaGFuZ2VkKGdGYWxzZSkKKyAgICAg LCBjbGlwKGNsaXBOb25lKQorICAgICAsIGlnbm9yZVVuZGVmKDApCitAQCAtMzY5LDggKzM3MCw4 IEBAIHZvaWQgUGRmUGFyc2VyOjpwYXJzZShPYmplY3QgKm9iaiwgR0Jvb2wKKyAgIE9iamVjdCBv YmoyOworIAorICAgaWYgKG9iai0+aXNBcnJheSgpKSB7CistICAgIGZvciAoaW50IGkgPSAwOyBp IDwgb2JqLT5hcnJheUdldExlbmd0aCgpOyArK2kpIHsKKy0gICAgICBfUE9QUExFUl9DQUxMX0FS R1Mob2JqMiwgb2JqLT5hcnJheUdldCwgaSk7CisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2Jq LT5nZXRBcnJheSgpLT5nZXRMZW5ndGgoKTsgKytpKSB7CisrICAgICAgX1BPUFBMRVJfQ0FMTF9B UkdTKG9iajIsIG9iai0+Z2V0QXJyYXkoKS0+Z2V0LCBpKTsKKyAgICAgICBpZiAoIW9iajIuaXNT dHJlYW0oKSkgeworIAllcnJvcihlcnJJbnRlcm5hbCwgLTEsICJXZWlyZCBwYWdlIGNvbnRlbnRz Iik7CisgCV9QT1BQTEVSX0ZSRUUob2JqMik7CitAQCAtODA3LDggKzgwOCw4IEBAIHZvaWQgUGRm UGFyc2VyOjpvcFNldEV4dEdTdGF0ZShPYmplY3QgYXIKKyAgICAgICAgICAgICAgICAgZm9yIChp bnQgJmkgOiBiYWNrZHJvcENvbG9yLmMpIHsKKyAgICAgICAgICAgICAgICAgICAgIGkgPSAwOwor ICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg b2JqMy5hcnJheUdldExlbmd0aCgpICYmIGkgPCBnZnhDb2xvck1heENvbXBzOyArK2kpIHsKKy0g ICAgICAgICAgICAgICAgICAgIF9QT1BQTEVSX0NBTExfQVJHUyhvYmo0LCBvYmozLmFycmF5R2V0 LCBpKTsKKysgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmozLmdldEFycmF5 KCktPmdldExlbmd0aCgpICYmIGkgPCBnZnhDb2xvck1heENvbXBzOyArK2kpIHsKKysgICAgICAg ICAgICAgICAgICAgIF9QT1BQTEVSX0NBTExfQVJHUyhvYmo0LCBvYmozLmdldEFycmF5KCktPmdl dCwgaSk7CisgICAgICAgICAgICAgICAgICAgICBpZiAob2JqNC5pc051bSgpKSB7CisgICAgICAg ICAgICAgICAgICAgICAgICAgYmFja2Ryb3BDb2xvci5jW2ldID0gZGJsVG9Db2wob2JqNC5nZXRO dW0oKSk7CisgICAgICAgICAgICAgICAgICAgICB9CitAQCAtODE3LDcgKzgxOCw3IEBAIHZvaWQg UGRmUGFyc2VyOjpvcFNldEV4dEdTdGF0ZShPYmplY3QgYXIKKyAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgX1BPUFBMRVJfRlJFRShvYmozKTsKKyAgICAgICAgICAgICBpZiAoX1BPUFBMRVJf Q0FMTF9BUkdTX0RFUkVGKG9iajMsIG9iajIuZGljdExvb2t1cCwgIkciKS5pc1N0cmVhbSgpKSB7 CistICAgICAgICAgICAgICAgIGlmIChfUE9QUExFUl9DQUxMX0FSR1NfREVSRUYob2JqNCwgb2Jq My5zdHJlYW1HZXREaWN0KCktPmxvb2t1cCwgIkdyb3VwIikuaXNEaWN0KCkpIHsKKysgICAgICAg ICAgICAgICAgaWYgKF9QT1BQTEVSX0NBTExfQVJHU19ERVJFRihvYmo0LCBvYmozLmdldFN0cmVh bSgpLT5nZXREaWN0KCktPmxvb2t1cCwgIkdyb3VwIikuaXNEaWN0KCkpIHsKKyAgICAgICAgICAg ICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHZnhDb2xvclNwYWNlPiBibGVuZGluZ0NvbG9yU3Bh Y2U7CisgICAgICAgICAgICAgICAgICAgICBHQm9vbCBpc29sYXRlZCA9IGdGYWxzZTsKKyAgICAg ICAgICAgICAgICAgICAgIEdCb29sIGtub2Nrb3V0ID0gZ0ZhbHNlOworQEAgLTg4MCw3ICs4ODEs NyBAQCB2b2lkIFBkZlBhcnNlcjo6ZG9Tb2Z0TWFzayhPYmplY3QgKnN0ciwKKyAgIH0KKyAKKyAg IC8vIGdldCBzdHJlYW0gZGljdAorLSAgZGljdCA9IHN0ci0+c3RyZWFtR2V0RGljdCgpOworKyAg ZGljdCA9IHN0ci0+Z2V0U3RyZWFtKCktPmdldERpY3QoKTsKKyAKKyAgIC8vIGNoZWNrIGZvcm0g dHlwZQorICAgX1BPUFBMRVJfQ0FMTF9BUkdTKG9iajEsIGRpY3QtPmxvb2t1cCwgIkZvcm1UeXBl Iik7CitAQCAtODk3LDcgKzg5OCw3IEBAIHZvaWQgUGRmUGFyc2VyOjpkb1NvZnRNYXNrKE9iamVj dCAqc3RyLAorICAgICByZXR1cm47CisgICB9CisgICBmb3IgKGkgPSAwOyBpIDwgNDsgKytpKSB7 CistICAgIF9QT1BQTEVSX0NBTExfQVJHUyhvYmoyLCBvYmoxLmFycmF5R2V0LCBpKTsKKysgICAg X1BPUFBMRVJfQ0FMTF9BUkdTKG9iajIsIG9iajEuZ2V0QXJyYXkoKS0+Z2V0LCBpKTsKKyAgICAg YmJveFtpXSA9IG9iajIuZ2V0TnVtKCk7CisgICAgIF9QT1BQTEVSX0ZSRUUob2JqMik7CisgICB9 CitAQCAtOTA3LDcgKzkwOCw3IEBAIHZvaWQgUGRmUGFyc2VyOjpkb1NvZnRNYXNrKE9iamVjdCAq c3RyLAorICAgX1BPUFBMRVJfQ0FMTF9BUkdTKG9iajEsIGRpY3QtPmxvb2t1cCwgIk1hdHJpeCIp OworICAgaWYgKG9iajEuaXNBcnJheSgpKSB7CisgICAgIGZvciAoaSA9IDA7IGkgPCA2OyArK2kp IHsKKy0gICAgICBfUE9QUExFUl9DQUxMX0FSR1Mob2JqMiwgb2JqMS5hcnJheUdldCwgaSk7Cisr ICAgICAgX1BPUFBMRVJfQ0FMTF9BUkdTKG9iajIsIG9iajEuZ2V0QXJyYXkoKS0+Z2V0LCBpKTsK KyAgICAgICBtW2ldID0gb2JqMi5nZXROdW0oKTsKKyAgICAgICBfUE9QUExFUl9GUkVFKG9iajIp OworICAgICB9CitAQCAtOTkyLDcgKzk5Myw3IEBAIHZvaWQgUGRmUGFyc2VyOjpvcFNldEZpbGxH cmF5KE9iamVjdCBhcmcKKyAgIHN0YXRlLT5zZXRGaWxsUGF0dGVybihudWxscHRyKTsKKyAgIHN0 YXRlLT5zZXRGaWxsQ29sb3JTcGFjZShfUE9QUExFUl9DT05TVU1FX1VOSVFQVFJfQVJHKHN0ZDo6 bWFrZV91bmlxdWU8R2Z4RGV2aWNlR3JheUNvbG9yU3BhY2U+KCkpKTsKKyAgIGNvbG9yLmNbMF0g PSBkYmxUb0NvbChhcmdzWzBdLmdldE51bSgpKTsKKy0gIHN0YXRlLT5zZXRGaWxsQ29sb3IoJmNv bG9yKTsKKysgIHN0YXRlLT5fUE9QUExFUl9TRVRfRklMTF9DT0xPUihjb2xvcik7CisgICBidWls ZGVyLT51cGRhdGVTdHlsZShzdGF0ZSk7CisgfQorIAorQEAgLTEwMDQsNyArMTAwNSw3IEBAIHZv aWQgUGRmUGFyc2VyOjpvcFNldFN0cm9rZUdyYXkoT2JqZWN0IGEKKyAgIHN0YXRlLT5zZXRTdHJv a2VQYXR0ZXJuKG51bGxwdHIpOworICAgc3RhdGUtPnNldFN0cm9rZUNvbG9yU3BhY2UoX1BPUFBM RVJfQ09OU1VNRV9VTklRUFRSX0FSRyhzdGQ6Om1ha2VfdW5pcXVlPEdmeERldmljZUdyYXlDb2xv clNwYWNlPigpKSk7CisgICBjb2xvci5jWzBdID0gZGJsVG9Db2woYXJnc1swXS5nZXROdW0oKSk7 CistICBzdGF0ZS0+c2V0U3Ryb2tlQ29sb3IoJmNvbG9yKTsKKysgIHN0YXRlLT5fUE9QUExFUl9T RVRfU1RST0tFX0NPTE9SKGNvbG9yKTsKKyAgIGJ1aWxkZXItPnVwZGF0ZVN0eWxlKHN0YXRlKTsK KyB9CisgCitAQCAtMTAxOSw3ICsxMDIwLDcgQEAgdm9pZCBQZGZQYXJzZXI6Om9wU2V0RmlsbENN WUtDb2xvcihPYmplYworICAgZm9yIChpID0gMDsgaSA8IDQ7ICsraSkgeworICAgICBjb2xvci5j W2ldID0gZGJsVG9Db2woYXJnc1tpXS5nZXROdW0oKSk7CisgICB9CistICBzdGF0ZS0+c2V0Rmls bENvbG9yKCZjb2xvcik7CisrICBzdGF0ZS0+X1BPUFBMRVJfU0VUX0ZJTExfQ09MT1IoY29sb3Ip OworICAgYnVpbGRlci0+dXBkYXRlU3R5bGUoc3RhdGUpOworIH0KKyAKK0BAIC0xMDMzLDcgKzEw MzQsNyBAQCB2b2lkIFBkZlBhcnNlcjo6b3BTZXRTdHJva2VDTVlLQ29sb3IoT2JqCisgICBmb3Ig KGludCBpID0gMDsgaSA8IDQ7ICsraSkgeworICAgICBjb2xvci5jW2ldID0gZGJsVG9Db2woYXJn c1tpXS5nZXROdW0oKSk7CisgICB9CistICBzdGF0ZS0+c2V0U3Ryb2tlQ29sb3IoJmNvbG9yKTsK KysgIHN0YXRlLT5fUE9QUExFUl9TRVRfU1RST0tFX0NPTE9SKGNvbG9yKTsKKyAgIGJ1aWxkZXIt PnVwZGF0ZVN0eWxlKHN0YXRlKTsKKyB9CisgCitAQCAtMTA0Nyw3ICsxMDQ4LDcgQEAgdm9pZCBQ ZGZQYXJzZXI6Om9wU2V0RmlsbFJHQkNvbG9yKE9iamVjdAorICAgZm9yIChpbnQgaSA9IDA7IGkg PCAzOyArK2kpIHsKKyAgICAgY29sb3IuY1tpXSA9IGRibFRvQ29sKGFyZ3NbaV0uZ2V0TnVtKCkp OworICAgfQorLSAgc3RhdGUtPnNldEZpbGxDb2xvcigmY29sb3IpOworKyAgc3RhdGUtPl9QT1BQ TEVSX1NFVF9GSUxMX0NPTE9SKGNvbG9yKTsKKyAgIGJ1aWxkZXItPnVwZGF0ZVN0eWxlKHN0YXRl KTsKKyB9CisgCitAQCAtMTA2MCw3ICsxMDYxLDcgQEAgdm9pZCBQZGZQYXJzZXI6Om9wU2V0U3Ry b2tlUkdCQ29sb3IoT2JqZQorICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpIHsKKyAgICAg Y29sb3IuY1tpXSA9IGRibFRvQ29sKGFyZ3NbaV0uZ2V0TnVtKCkpOworICAgfQorLSAgc3RhdGUt PnNldFN0cm9rZUNvbG9yKCZjb2xvcik7CisrICBzdGF0ZS0+X1BPUFBMRVJfU0VUX1NUUk9LRV9D T0xPUihjb2xvcik7CisgICBidWlsZGVyLT51cGRhdGVTdHlsZShzdGF0ZSk7CisgfQorIAorQEAg LTEwNzYsNyArMTA3Nyw3IEBAIHZvaWQgUGRmUGFyc2VyOjpvcFNldEZpbGxDb2xvclNwYWNlKE9i amUKKyAgICAgR2Z4Q29sb3IgY29sb3I7CisgICAgIGNvbG9yU3BhY2UtPmdldERlZmF1bHRDb2xv cigmY29sb3IpOworICAgICBzdGF0ZS0+c2V0RmlsbENvbG9yU3BhY2UoX1BPUFBMRVJfQ09OU1VN RV9VTklRUFRSX0FSRyhjb2xvclNwYWNlKSk7CistICAgIHN0YXRlLT5zZXRGaWxsQ29sb3IoJmNv bG9yKTsKKysgICAgc3RhdGUtPl9QT1BQTEVSX1NFVF9GSUxMX0NPTE9SKGNvbG9yKTsKKyAgICAg YnVpbGRlci0+dXBkYXRlU3R5bGUoc3RhdGUpOworICAgfSBlbHNlIHsKKyAgICAgZXJyb3IoZXJy U3ludGF4RXJyb3IsIGdldFBvcygpLCAiQmFkIGNvbG9yIHNwYWNlIChmaWxsKSIpOworQEAgLTEw OTcsNyArMTA5OCw3IEBAIHZvaWQgUGRmUGFyc2VyOjpvcFNldFN0cm9rZUNvbG9yU3BhY2UoT2IK KyAgICAgR2Z4Q29sb3IgY29sb3I7CisgICAgIGNvbG9yU3BhY2UtPmdldERlZmF1bHRDb2xvcigm Y29sb3IpOworICAgICBzdGF0ZS0+c2V0U3Ryb2tlQ29sb3JTcGFjZShfUE9QUExFUl9DT05TVU1F X1VOSVFQVFJfQVJHKGNvbG9yU3BhY2UpKTsKKy0gICAgc3RhdGUtPnNldFN0cm9rZUNvbG9yKCZj b2xvcik7CisrICAgIHN0YXRlLT5fUE9QUExFUl9TRVRfU1RST0tFX0NPTE9SKGNvbG9yKTsKKyAg ICAgYnVpbGRlci0+dXBkYXRlU3R5bGUoc3RhdGUpOworICAgfSBlbHNlIHsKKyAgICAgZXJyb3Io ZXJyU3ludGF4RXJyb3IsIGdldFBvcygpLCAiQmFkIGNvbG9yIHNwYWNlIChzdHJva2UpIik7CitA QCAtMTExNyw3ICsxMTE4LDcgQEAgdm9pZCBQZGZQYXJzZXI6Om9wU2V0RmlsbENvbG9yKE9iamVj dCBhcgorICAgZm9yIChpID0gMDsgaSA8IG51bUFyZ3M7ICsraSkgeworICAgICBjb2xvci5jW2ld ID0gZGJsVG9Db2woYXJnc1tpXS5nZXROdW0oKSk7CisgICB9CistICBzdGF0ZS0+c2V0RmlsbENv bG9yKCZjb2xvcik7CisrICBzdGF0ZS0+X1BPUFBMRVJfU0VUX0ZJTExfQ09MT1IoY29sb3IpOwor ICAgYnVpbGRlci0+dXBkYXRlU3R5bGUoc3RhdGUpOworIH0KKyAKK0BAIC0xMTM0LDcgKzExMzUs NyBAQCB2b2lkIFBkZlBhcnNlcjo6b3BTZXRTdHJva2VDb2xvcihPYmplY3QKKyAgIGZvciAoaSA9 IDA7IGkgPCBudW1BcmdzOyArK2kpIHsKKyAgICAgY29sb3IuY1tpXSA9IGRibFRvQ29sKGFyZ3Nb aV0uZ2V0TnVtKCkpOworICAgfQorLSAgc3RhdGUtPnNldFN0cm9rZUNvbG9yKCZjb2xvcik7Cisr ICBzdGF0ZS0+X1BPUFBMRVJfU0VUX1NUUk9LRV9DT0xPUihjb2xvcik7CisgICBidWlsZGVyLT51 cGRhdGVTdHlsZShzdGF0ZSk7CisgfQorIAorQEAgLTExNTUsNyArMTE1Niw3IEBAIHZvaWQgUGRm UGFyc2VyOjpvcFNldEZpbGxDb2xvck4oT2JqZWN0IGEKKyAJICBjb2xvci5jW2ldID0gZGJsVG9D b2woYXJnc1tpXS5nZXROdW0oKSk7CisgCX0KKyAgICAgICB9CistICAgICAgc3RhdGUtPnNldEZp bGxDb2xvcigmY29sb3IpOworKyAgICAgIHN0YXRlLT5fUE9QUExFUl9TRVRfRklMTF9DT0xPUihj b2xvcik7CisgICAgICAgYnVpbGRlci0+dXBkYXRlU3R5bGUoc3RhdGUpOworICAgICB9CisgICAg IGlmIChhdXRvIHBhdHRlcm4gPSBsb29rdXBQYXR0ZXJuKCYoYXJnc1tudW1BcmdzIC0gMV0pLCBz dGF0ZSkpIHsKK0BAIC0xMTc0LDcgKzExNzUsNyBAQCB2b2lkIFBkZlBhcnNlcjo6b3BTZXRGaWxs Q29sb3JOKE9iamVjdCBhCisgCWNvbG9yLmNbaV0gPSBkYmxUb0NvbChhcmdzW2ldLmdldE51bSgp KTsKKyAgICAgICB9CisgICAgIH0KKy0gICAgc3RhdGUtPnNldEZpbGxDb2xvcigmY29sb3IpOwor KyAgICBzdGF0ZS0+X1BPUFBMRVJfU0VUX0ZJTExfQ09MT1IoY29sb3IpOworICAgICBidWlsZGVy LT51cGRhdGVTdHlsZShzdGF0ZSk7CisgICB9CisgfQorQEAgLTExOTgsNyArMTE5OSw3IEBAIHZv aWQgUGRmUGFyc2VyOjpvcFNldFN0cm9rZUNvbG9yTihPYmplY3QKKyAJICBjb2xvci5jW2ldID0g ZGJsVG9Db2woYXJnc1tpXS5nZXROdW0oKSk7CisgCX0KKyAgICAgICB9CistICAgICAgc3RhdGUt PnNldFN0cm9rZUNvbG9yKCZjb2xvcik7CisrICAgICAgc3RhdGUtPl9QT1BQTEVSX1NFVF9TVFJP S0VfQ09MT1IoY29sb3IpOworICAgICAgIGJ1aWxkZXItPnVwZGF0ZVN0eWxlKHN0YXRlKTsKKyAg ICAgfQorICAgICBpZiAoYXV0byBwYXR0ZXJuID0gbG9va3VwUGF0dGVybigmKGFyZ3NbbnVtQXJn cyAtIDFdKSwgc3RhdGUpKSB7CitAQCAtMTIxNyw3ICsxMjE4LDcgQEAgdm9pZCBQZGZQYXJzZXI6 Om9wU2V0U3Ryb2tlQ29sb3JOKE9iamVjdAorIAljb2xvci5jW2ldID0gZGJsVG9Db2woYXJnc1tp XS5nZXROdW0oKSk7CisgICAgICAgfQorICAgICB9CistICAgIHN0YXRlLT5zZXRTdHJva2VDb2xv cigmY29sb3IpOworKyAgICBzdGF0ZS0+X1BPUFBMRVJfU0VUX1NUUk9LRV9DT0xPUihjb2xvcik7 CisgICAgIGJ1aWxkZXItPnVwZGF0ZVN0eWxlKHN0YXRlKTsKKyAgIH0KKyB9CitAQCAtMTcwMCw3 ICsxNzAxLDcgQEAgdm9pZCBQZGZQYXJzZXI6OmRvRnVuY3Rpb25TaEZpbGwxKEdmeEZ1bgorIAor ICAgICAvLyB1c2UgdGhlIGNlbnRlciBjb2xvcgorICAgICBzaGFkaW5nLT5nZXRDb2xvcih4TSwg eU0sICZmaWxsQ29sb3IpOworLSAgICBzdGF0ZS0+c2V0RmlsbENvbG9yKCZmaWxsQ29sb3IpOwor KyAgICBzdGF0ZS0+X1BPUFBMRVJfU0VUX0ZJTExfQ09MT1IoZmlsbENvbG9yKTsKKyAKKyAgICAg Ly8gZmlsbCB0aGUgcmVjdGFuZ2xlCisgICAgIHN0YXRlLT5tb3ZlVG8oeDAgKiBtYXRyaXhbMF0g KyB5MCAqIG1hdHJpeFsyXSArIG1hdHJpeFs0XSwKK0BAIC0xNzk5LDcgKzE4MDAsNyBAQCB2b2lk IFBkZlBhcnNlcjo6Z291cmF1ZEZpbGxUcmlhbmdsZShkb3ViCisgICAgIH0KKyAgIH0KKyAgIGlm IChpID09IG5Db21wcyB8fCBkZXB0aCA9PSBtYXhEZXB0aHNbcGRmR291cmF1ZFRyaWFuZ2xlU2hh ZGluZy0xXSkgeworLSAgICBzdGF0ZS0+c2V0RmlsbENvbG9yKGNvbG9yMCk7CisrICAgIHN0YXRl LT5fUE9QUExFUl9TRVRfRklMTF9DT0xPUigqY29sb3IwKTsKKyAgICAgc3RhdGUtPm1vdmVUbyh4 MCwgeTApOworICAgICBzdGF0ZS0+bGluZVRvKHgxLCB5MSk7CisgICAgIHN0YXRlLT5saW5lVG8o eDIsIHkyKTsKK0BAIC0xODc3LDcgKzE4NzgsNyBAQCB2b2lkIFBkZlBhcnNlcjo6ZmlsbFBhdGNo KF9QT1BQTEVSX0NPTlNUCisgICAgIGNvbG9yLmNbaV0gPSBHZnhDb2xvckNvbXAocGF0Y2gtPmNv bG9yWzBdWzBdLmNbaV0pOworICAgfQorICAgaWYgKGkgPT0gbkNvbXBzIHx8IGRlcHRoID09IG1h eERlcHRoc1twZGZQYXRjaE1lc2hTaGFkaW5nLTFdKSB7CistICAgIHN0YXRlLT5zZXRGaWxsQ29s b3IoJmNvbG9yKTsKKysgICAgc3RhdGUtPl9QT1BQTEVSX1NFVF9GSUxMX0NPTE9SKGNvbG9yKTsK KyAgICAgc3RhdGUtPm1vdmVUbyhwYXRjaC0+eFswXVswXSwgcGF0Y2gtPnlbMF1bMF0pOworICAg ICBzdGF0ZS0+Y3VydmVUbyhwYXRjaC0+eFswXVsxXSwgcGF0Y2gtPnlbMF1bMV0sCisgCQkgICBw YXRjaC0+eFswXVsyXSwgcGF0Y2gtPnlbMF1bMl0sCitAQCAtMjM3Nyw3ICsyMzc4LDcgQEAgdm9p ZCBQZGZQYXJzZXI6Om9wWE9iamVjdChPYmplY3QgYXJnc1tdLAorICAgICB9CisgCisgLy9hZGQg bGF5ZXIgYXQgcm9vdCBpZiB4T2JqZWN0IGhhcyB0eXBlIE9DRworLSAgICBfUE9QUExFUl9DQUxM X0FSR1Mob2JqMiwgb2JqMS5zdHJlYW1HZXREaWN0KCktPmxvb2t1cCwgIk9DIik7CisrICAgIF9Q T1BQTEVSX0NBTExfQVJHUyhvYmoyLCBvYmoxLmdldFN0cmVhbSgpLT5nZXREaWN0KCktPmxvb2t1 cCwgIk9DIik7CisgICAgIGlmKG9iajIuaXNEaWN0KCkpeworICAgICAgICAgYXV0byB0eXBlX2Rp Y3QgPSBvYmoyLmdldERpY3QoKTsKKyAgICAgICAgIGlmICh0eXBlX2RpY3QtPmxvb2t1cCgiVHlw ZSIpLmlzTmFtZSgiT0NHIikpIHsKK0BAIC0yMzk1LDcgKzIzOTYsNyBAQCB2b2lkIFBkZlBhcnNl cjo6b3BYT2JqZWN0KE9iamVjdCBhcmdzW10sCisgICAgICAgICB9CisgICAgIH0KKyAKKy0gICAg X1BPUFBMRVJfQ0FMTF9BUkdTKG9iajIsIG9iajEuc3RyZWFtR2V0RGljdCgpLT5sb29rdXAsICJT dWJ0eXBlIik7CisrICAgIF9QT1BQTEVSX0NBTExfQVJHUyhvYmoyLCBvYmoxLmdldFN0cmVhbSgp LT5nZXREaWN0KCktPmxvb2t1cCwgIlN1YnR5cGUiKTsKKyAgICAgaWYgKG9iajIuaXNOYW1lKGNv bnN0X2Nhc3Q8Y2hhcio+KCJJbWFnZSIpKSkgeworICAgICAgICAgX1BPUFBMRVJfQ0FMTF9BUkdT KHJlZk9iaiwgcmVzLT5sb29rdXBYT2JqZWN0TkYsIG5hbWUpOworICAgICAgICAgZG9JbWFnZSgm cmVmT2JqLCBvYmoxLmdldFN0cmVhbSgpLCBnRmFsc2UpOworQEAgLTI0MDMsNyArMjQwNCw3IEBA IHZvaWQgUGRmUGFyc2VyOjpvcFhPYmplY3QoT2JqZWN0IGFyZ3NbXSwKKyAgICAgfSBlbHNlIGlm IChvYmoyLmlzTmFtZShjb25zdF9jYXN0PGNoYXIqPigiRm9ybSIpKSkgeworICAgICAgICAgZG9G b3JtKCZvYmoxKTsKKyAgICAgfSBlbHNlIGlmIChvYmoyLmlzTmFtZShjb25zdF9jYXN0PGNoYXIq PigiUFMiKSkpIHsKKy0gICAgICAgIF9QT1BQTEVSX0NBTExfQVJHUyhvYmozLCBvYmoxLnN0cmVh bUdldERpY3QoKS0+bG9va3VwLCAiTGV2ZWwxIik7CisrICAgICAgICBfUE9QUExFUl9DQUxMX0FS R1Mob2JqMywgb2JqMS5nZXRTdHJlYW0oKS0+Z2V0RGljdCgpLT5sb29rdXAsICJMZXZlbDEiKTsK KyAgICAgfSBlbHNlIGlmIChvYmoyLmlzTmFtZSgpKSB7CisgICAgICAgICBlcnJvcihlcnJTeW50 YXhFcnJvciwgZ2V0UG9zKCksICJVbmtub3duIFhPYmplY3Qgc3VidHlwZSAnezA6c30nIiwgb2Jq Mi5nZXROYW1lKCkpOworICAgICB9IGVsc2UgeworQEAgLTI1MzQsNyArMjUzNSw3IEBAIHZvaWQg UGRmUGFyc2VyOjpkb0ltYWdlKE9iamVjdCAqIC8qcmVmKi8KKyAgICAgICAgICAgICBfUE9QUExF Ul9DQUxMX0FSR1Mob2JqMSwgZGljdC0+bG9va3VwLCAiRCIpOworICAgICAgICAgfQorICAgICAg ICAgaWYgKG9iajEuaXNBcnJheSgpKSB7CistICAgICAgICAgICAgX1BPUFBMRVJfQ0FMTF9BUkdT KG9iajIsIG9iajEuYXJyYXlHZXQsIDApOworKyAgICAgICAgICAgIF9QT1BQTEVSX0NBTExfQVJH UyhvYmoyLCBvYmoxLmdldEFycmF5KCktPmdldCwgMCk7CisgICAgICAgICAgICAgaWYgKG9iajIu aXNJbnQoKSAmJiBvYmoyLmdldEludCgpID09IDEpIHsKKyAgICAgICAgICAgICAgICAgaW52ZXJ0 ID0gZ1RydWU7CisgICAgICAgICAgICAgfQorQEAgLTI1OTYsNyArMjU5Nyw3IEBAIHZvaWQgUGRm UGFyc2VyOjpkb0ltYWdlKE9iamVjdCAqIC8qcmVmKi8KKyAJICAgICAgICAgICAgZ290byBlcnIx OworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBtYXNrU3RyID0gc21hc2tPYmouZ2V0U3Ry ZWFtKCk7CistICAgICAgICAgICAgbWFza0RpY3QgPSBzbWFza09iai5zdHJlYW1HZXREaWN0KCk7 CisrICAgICAgICAgICAgbWFza0RpY3QgPSBzbWFza09iai5nZXRTdHJlYW0oKS0+Z2V0RGljdCgp OworICAgICAgICAgICAgIF9QT1BQTEVSX0NBTExfQVJHUyhvYmoxLCBtYXNrRGljdC0+bG9va3Vw LCAiV2lkdGgiKTsKKyAgICAgICAgICAgICBpZiAob2JqMS5pc051bGwoKSkgeworICAgICAgICAg ICAgICAgICAgICAgX1BPUFBMRVJfRlJFRShvYmoxKTsKK0BAIC0yNjYyLDggKzI2NjMsOCBAQCB2 b2lkIFBkZlBhcnNlcjo6ZG9JbWFnZShPYmplY3QgKiAvKnJlZiovCisgICAgICAgICB9IGVsc2Ug aWYgKG1hc2tPYmouaXNBcnJheSgpKSB7CisgICAgICAgICAgICAgLy8gY29sb3Iga2V5IG1hc2sK KyAgICAgICAgICAgICBpbnQgaTsKKy0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbWFza09i ai5hcnJheUdldExlbmd0aCgpICYmIGkgPCAyKmdmeENvbG9yTWF4Q29tcHM7ICsraSkgeworLSAg ICAgICAgICAgICAgICBfUE9QUExFUl9DQUxMX0FSR1Mob2JqMSwgbWFza09iai5hcnJheUdldCwg aSk7CisrICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1hc2tPYmouZ2V0QXJyYXkoKS0+Z2V0 TGVuZ3RoKCkgJiYgaSA8IDIqZ2Z4Q29sb3JNYXhDb21wczsgKytpKSB7CisrICAgICAgICAgICAg ICAgIF9QT1BQTEVSX0NBTExfQVJHUyhvYmoxLCBtYXNrT2JqLmdldEFycmF5KCktPmdldCwgaSk7 CisgICAgICAgICAgICAgICAgIG1hc2tDb2xvcnNbaV0gPSBvYmoxLmdldEludCgpOworICAgICAg ICAgICAgICAgICBfUE9QUExFUl9GUkVFKG9iajEpOworICAgICAgICAgICAgIH0KK0BAIC0yNjc0 LDcgKzI2NzUsNyBAQCB2b2lkIFBkZlBhcnNlcjo6ZG9JbWFnZShPYmplY3QgKiAvKnJlZiovCisg ICAgICAgICAgICAgICAgIGdvdG8gZXJyMTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAg bWFza1N0ciA9IG1hc2tPYmouZ2V0U3RyZWFtKCk7CistICAgICAgICAgICAgbWFza0RpY3QgPSBt YXNrT2JqLnN0cmVhbUdldERpY3QoKTsKKysgICAgICAgICAgICBtYXNrRGljdCA9IG1hc2tPYmou Z2V0U3RyZWFtKCktPmdldERpY3QoKTsKKyAgICAgICAgICAgICBfUE9QUExFUl9DQUxMX0FSR1Mo b2JqMSwgbWFza0RpY3QtPmxvb2t1cCwgIldpZHRoIik7CisgICAgICAgICAgICAgaWYgKG9iajEu aXNOdWxsKCkpIHsKKyAgICAgICAgICAgICAgICAgX1BPUFBMRVJfRlJFRShvYmoxKTsKK0BAIC0y NzIxLDcgKzI3MjIsNyBAQCB2b2lkIFBkZlBhcnNlcjo6ZG9JbWFnZShPYmplY3QgKiAvKnJlZiov CisgICAgICAgICAgICAgICAgIF9QT1BQTEVSX0NBTExfQVJHUyhvYmoxLCBtYXNrRGljdC0+bG9v a3VwLCAiRCIpOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBpZiAob2JqMS5pc0FycmF5 KCkpIHsKKy0gICAgICAgICAgICAgICAgX1BPUFBMRVJfQ0FMTF9BUkdTKG9iajIsIG9iajEuYXJy YXlHZXQsIDApOworKyAgICAgICAgICAgICAgICBfUE9QUExFUl9DQUxMX0FSR1Mob2JqMiwgb2Jq MS5nZXRBcnJheSgpLT5nZXQsIDApOworICAgICAgICAgICAgICAgICBpZiAob2JqMi5pc0ludCgp ICYmIG9iajIuZ2V0SW50KCkgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgbWFza0ludmVy dCA9IGdUcnVlOworICAgICAgICAgICAgICAgICB9CitAQCAtMjc3NCw3ICsyNzc1LDcgQEAgdm9p ZCBQZGZQYXJzZXI6OmRvRm9ybShPYmplY3QgKnN0ciwgZG91YgorICAgICB9CisgCisgICAgIC8v IGdldCBzdHJlYW0gZGljdAorLSAgICBkaWN0ID0gc3RyLT5zdHJlYW1HZXREaWN0KCk7CisrICAg IGRpY3QgPSBzdHItPmdldFN0cmVhbSgpLT5nZXREaWN0KCk7CisgCisgICAgIC8vIGNoZWNrIGZv cm0gdHlwZQorICAgICBfUE9QUExFUl9DQUxMX0FSR1Mob2JqMSwgZGljdC0+bG9va3VwLCAiRm9y bVR5cGUiKTsKK0BAIC0yNzkxLDcgKzI3OTIsNyBAQCB2b2lkIFBkZlBhcnNlcjo6ZG9Gb3JtKE9i amVjdCAqc3RyLCBkb3ViCisgICAgICAgICByZXR1cm47CisgICAgIH0KKyAgICAgZm9yIChpID0g MDsgaSA8IDQ7ICsraSkgeworLSAgICAgICAgX1BPUFBMRVJfQ0FMTF9BUkdTKG9iajEsIGJib3hP YmouYXJyYXlHZXQsIGkpOworKyAgICAgICAgX1BPUFBMRVJfQ0FMTF9BUkdTKG9iajEsIGJib3hP YmouZ2V0QXJyYXkoKS0+Z2V0LCBpKTsKKyAgICAgICAgIGJib3hbaV0gPSBvYmoxLmdldE51bSgp OworICAgICAgICAgX1BPUFBMRVJfRlJFRShvYmoxKTsKKyAgICAgfQorQEAgLTI4MDEsNyArMjgw Miw3IEBAIHZvaWQgUGRmUGFyc2VyOjpkb0Zvcm0oT2JqZWN0ICpzdHIsIGRvdWIKKyAgICAgX1BP UFBMRVJfQ0FMTF9BUkdTKG1hdHJpeE9iaiwgZGljdC0+bG9va3VwLCAiTWF0cml4Iik7CisgICAg IGlmIChtYXRyaXhPYmouaXNBcnJheSgpKSB7CisgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNjsg KytpKSB7CistICAgICAgICBfUE9QUExFUl9DQUxMX0FSR1Mob2JqMSwgbWF0cml4T2JqLmFycmF5 R2V0LCBpKTsKKysgICAgICAgIF9QT1BQTEVSX0NBTExfQVJHUyhvYmoxLCBtYXRyaXhPYmouZ2V0 QXJyYXkoKS0+Z2V0LCBpKTsKKyAgICAgICAgIG1baV0gPSBvYmoxLmdldE51bSgpOworICAgICAg ICAgX1BPUFBMRVJfRlJFRShvYmoxKTsKKyAgICAgICAgIH0KK0BAIC0zMTkzLDEwICszMTk0LDEw IEBAIHZvaWQgUGRmUGFyc2VyOjpsb2FkQ29sb3JQcm9maWxlKCkKKyAgICAgICAgIHJldHVybjsK KyAKKyAgICAgT2JqZWN0IG91dHB1dEludGVudHMgPSBjYXREaWN0LmRpY3RMb29rdXAoIk91dHB1 dEludGVudHMiKTsKKy0gICAgaWYgKCFvdXRwdXRJbnRlbnRzLmlzQXJyYXkoKSB8fCBvdXRwdXRJ bnRlbnRzLmFycmF5R2V0TGVuZ3RoKCkgIT0gMSkKKysgICAgaWYgKCFvdXRwdXRJbnRlbnRzLmlz QXJyYXkoKSB8fCBvdXRwdXRJbnRlbnRzLmdldEFycmF5KCktPmdldExlbmd0aCgpICE9IDEpCisg ICAgICAgICByZXR1cm47CisgCistICAgIE9iamVjdCBmaXJzdEVsZW1lbnQgPSBvdXRwdXRJbnRl bnRzLmFycmF5R2V0KDApOworKyAgICBPYmplY3QgZmlyc3RFbGVtZW50ID0gb3V0cHV0SW50ZW50 cy5nZXRBcnJheSgpLT5nZXQoMCk7CisgICAgIGlmICghZmlyc3RFbGVtZW50LmlzRGljdCgpKQor ICAgICAgICAgcmV0dXJuOworIAorQEAgLTMyNDQsNyArMzI0NSw3IEBAIHZvaWQgUGRmUGFyc2Vy OjpidWlsZF9hbm5vdHMoY29uc3QgT2JqZWMKKyAgICAgICAgICAgICBfUE9QUExFUl9DQUxMX0FS R1MoUmVjdF9vYmosIGFubm90X2RpY3QtPmxvb2t1cCwgIlJlY3QiKTsKKyAgICAgICAgICAgICBp ZiAoUmVjdF9vYmouaXNBcnJheSgpKSB7CisgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAw OyBpIDwgMjsgaSsrKSB7CistICAgICAgICAgICAgICAgICAgICBfUE9QUExFUl9DQUxMX0FSR1Mo eHlfb2JqLCBSZWN0X29iai5hcnJheUdldCwgaSk7CisrICAgICAgICAgICAgICAgICAgICBfUE9Q UExFUl9DQUxMX0FSR1MoeHlfb2JqLCBSZWN0X29iai5nZXRBcnJheSgpLT5nZXQsIGkpOworICAg ICAgICAgICAgICAgICAgICAgb2Zmc2V0W2ldID0geHlfb2JqLmdldE51bSgpOworICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgIGRvRm9ybSgmZmlyc3Rfc3RhdGVfb2JqLCBvZmZz ZXQpOworLS0tIGlua3NjYXBlLTEuNC40XzIwMjYtMDUtMDVfZGNhZjNlN2Q5ZS9zcmMvZXh0ZW5z aW9uL2ludGVybmFsL3BkZmlucHV0L3BkZi1wYXJzZXIuaAorKysrIGlua3NjYXBlLTEuNC40XzIw MjYtMDUtMDVfZGNhZjNlN2Q5ZS9zcmMvZXh0ZW5zaW9uL2ludGVybmFsL3BkZmlucHV0L3BkZi1w YXJzZXIuaAorQEAgLTExMiw4ICsxMTIsOCBAQCBzdHJ1Y3QgT3BIaXN0b3J5RW50cnkgeworIGNs YXNzIFBkZlBhcnNlciB7CisgcHVibGljOgorIAorLSAgLy8gQ29uc3RydWN0b3IgZm9yIHJlZ3Vs YXIgb3V0cHV0LgorLSAgICBQZGZQYXJzZXIoc3RkOjpzaGFyZWRfcHRyPFBERkRvYz4gcGRmX2Rv YywgU3ZnQnVpbGRlciAqYnVpbGRlckEsIFBhZ2UgKnBhZ2UsIF9QT1BQTEVSX0NPTlNUIFBERlJl Y3RhbmdsZSAqY3JvcEJveCk7CisrICAgIC8vIENvbnN0cnVjdG9yIGZvciByZWd1bGFyIG91dHB1 dC4KKysgICAgUGRmUGFyc2VyKHN0ZDo6c2hhcmVkX3B0cjxQREZEb2M+IHBkZl9kb2MsIFN2Z0J1 aWxkZXIgKmJ1aWxkZXJBLCBQYWdlICpwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFBERlJlY3Rh bmdsZT4gJmNyb3BCb3gpOworICAgICAvLyBDb25zdHJ1Y3RvciBmb3IgYSBzdWItcGFnZSBvYmpl Y3QuCisgICAgIFBkZlBhcnNlcihYUmVmICp4cmVmQSwgU3ZnQnVpbGRlciAqYnVpbGRlckEsIERp Y3QgKnJlc0RpY3QsIF9QT1BQTEVSX0NPTlNUIFBERlJlY3RhbmdsZSAqYm94KTsKKyAKKy0tLSBp bmtzY2FwZS0xLjQuNF8yMDI2LTA1LTA1X2RjYWYzZTdkOWUvc3JjL2V4dGVuc2lvbi9pbnRlcm5h bC9wZGZpbnB1dC9wZGYtdXRpbHMuY3BwCisrKysgaW5rc2NhcGUtMS40LjRfMjAyNi0wNS0wNV9k Y2FmM2U3ZDllL3NyYy9leHRlbnNpb24vaW50ZXJuYWwvcGRmaW5wdXQvcGRmLXV0aWxzLmNwcAor QEAgLTEzMyw2ICsxMzMsMTEgQEAgR2VvbTo6UmVjdCBnZXRSZWN0KF9QT1BQTEVSX0NPTlNUIFBE RlJlYworICAgICByZXR1cm4gR2VvbTo6UmVjdChib3gtPngxLCBib3gtPnkxLCBib3gtPngyLCBi b3gtPnkyKTsKKyB9CisgCisrR2VvbTo6UmVjdCBnZXRSZWN0KF9QT1BQTEVSX0NPTlNUIFBERlJl Y3RhbmdsZSAmYm94KQorK3sKKysgICAgcmV0dXJuIEdlb206OlJlY3QoYm94LngxLCBib3gueTEs IGJveC54MiwgYm94LnkyKTsKKyt9CisrCisgR2VvbTo6UGF0aFZlY3RvciBnZXRQYXRoVihHZnhQ YXRoICpwYXRoKSAKKyB7CisgICAgIGlmICghcGF0aCkgeworLS0tIGlua3NjYXBlLTEuNC40XzIw MjYtMDUtMDVfZGNhZjNlN2Q5ZS9zcmMvZXh0ZW5zaW9uL2ludGVybmFsL3BkZmlucHV0L3BkZi11 dGlscy5oCisrKysgaW5rc2NhcGUtMS40LjRfMjAyNi0wNS0wNV9kY2FmM2U3ZDllL3NyYy9leHRl bnNpb24vaW50ZXJuYWwvcGRmaW5wdXQvcGRmLXV0aWxzLmgKK0BAIC01OSw2ICs1OSw3IEBAIHBy aXZhdGU6CisgfTsKKyAKKyBHZW9tOjpSZWN0IGdldFJlY3QoX1BPUFBMRVJfQ09OU1QgUERGUmVj dGFuZ2xlICpib3gpOworK0dlb206OlJlY3QgZ2V0UmVjdChfUE9QUExFUl9DT05TVCBQREZSZWN0 YW5nbGUgJmJveCk7CisgR2VvbTo6UGF0aFZlY3RvciBnZXRQYXRoVihHZnhQYXRoICpnUGF0aCk7 CisgCisgI2VuZGlmIC8qIFBERl9VVElMU19IICovCistLS0gaW5rc2NhcGUtMS40LjRfMjAyNi0w NS0wNV9kY2FmM2U3ZDllL3NyYy9leHRlbnNpb24vaW50ZXJuYWwvcGRmaW5wdXQvcG9wcGxlci1j YWlyby1mb250LWVuZ2luZS5jcHAKKysrKyBpbmtzY2FwZS0xLjQuNF8yMDI2LTA1LTA1X2RjYWYz ZTdkOWUvc3JjL2V4dGVuc2lvbi9pbnRlcm5hbC9wZGZpbnB1dC9wb3BwbGVyLWNhaXJvLWZvbnQt ZW5naW5lLmNwcAorQEAgLTMxMyw3ICszMTMsMTEgQEAgQ2Fpcm9GcmVlVHlwZUZvbnQgKkNhaXJv RnJlZVR5cGVGb250OjpjcgorICNlbHNlCisgICAgIEdmeEZvbnRMb2MgKmZvbnRMb2M7CisgI2Vu ZGlmCisrI2lmIFBPUFBMRVJfQ0hFQ0tfVkVSU0lPTigyNiwgNSwgMCkKKysgICAgY29uc3QgY2hh ciAqIGNvbnN0ICplbmM7CisrI2Vsc2UKKyAgICAgY2hhciAqKmVuYzsKKysjZW5kaWYKKyAgICAg Y29uc3QgY2hhciAqbmFtZTsKKyAjaWYgUE9QUExFUl9DSEVDS19WRVJTSU9OKDI1LCA3LCAwKQor ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9GaVR5cGUxQz4gZmYxYzsKK0BAIC0zODUsNyArMzg5LDEx IEBAIENhaXJvRnJlZVR5cGVGb250ICpDYWlyb0ZyZWVUeXBlRm9udDo6Y3IKKyAgICAgICAgICAg ICAgICAgZ290byBlcnIyOworICAgICAgICAgICAgIH0KKyAKKysjaWYgUE9QUExFUl9DSEVDS19W RVJTSU9OKDI2LCA1LCAwKQorKyAgICAgICAgICAgIGVuYyA9IGdmeDhiaXQtPmdldEVuY29kaW5n KCkuZGF0YSgpOworKyNlbHNlCisgICAgICAgICAgICAgZW5jID0gZ2Z4OGJpdC0+Z2V0RW5jb2Rp bmcoKTsKKysjZW5kaWYKKyAKKyAgICAgICAgICAgICBjb2RlVG9HSUQucmVzaXplKDI1Nik7Cisg ICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgKytpKSB7CitAQCAtNjc3LDcgKzY4NSw3 IEBAIENhaXJvVHlwZTNGb250ICpDYWlyb1R5cGUzRm9udDo6Y3JlYXRlKEcKKyAjZW5kaWYKKyAK KyAgICAgc3RkOjp2ZWN0b3I8aW50PiBjb2RlVG9HSUQ7CistICAgIGNoYXIgKm5hbWU7CisrICAg IGNvbnN0IGNoYXIgKm5hbWU7CisgCisgICAgIERpY3QgKmNoYXJQcm9jcyA9IGdmeDhiaXQtPmdl dENoYXJQcm9jcygpOworICAgICBSZWYgcmVmID0gKmdmeEZvbnQtPmdldElEKCk7CitAQCAtNjk0 LDEzICs3MDIsMTcgQEAgQ2Fpcm9UeXBlM0ZvbnQgKkNhaXJvVHlwZTNGb250OjpjcmVhdGUoRwor IAorICAgICBjYWlyb19mb250X2ZhY2Vfc2V0X3VzZXJfZGF0YShmb250X2ZhY2UsICZ0eXBlM19m b250X2tleSwgKHZvaWQgKilpbmZvLCBfZnJlZV90eXBlM19mb250X2luZm8pOworIAorKyNpZiBQ T1BQTEVSX0NIRUNLX1ZFUlNJT04oMjYsIDUsIDApCisrICAgIGNvbnN0IGNoYXIgKiBjb25zdCAq ZW5jID0gZ2Z4OGJpdC0+Z2V0RW5jb2RpbmcoKS5kYXRhKCk7CisrI2Vsc2UKKyAgICAgY2hhciAq KmVuYyA9IGdmeDhiaXQtPmdldEVuY29kaW5nKCk7CisrI2VuZGlmCisgICAgIGNvZGVUb0dJRC5y ZXNpemUoMjU2KTsKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyNTY7ICsraSkgeworICAgICAg ICAgY29kZVRvR0lEW2ldID0gMDsKKyAgICAgICAgIGlmIChjaGFyUHJvY3MgJiYgKG5hbWUgPSBl bmNbaV0pKSB7CisgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjaGFyUHJvY3MtPmdl dExlbmd0aCgpOyBqKyspIHsKKy0gICAgICAgICAgICAgICAgaWYgKHN0cmNtcChuYW1lLCBjaGFy UHJvY3MtPmdldEtleShqKSkgPT0gMCkgeworKyAgICAgICAgICAgICAgICBpZiAoc3RkOjpzdHJp bmcoY2hhclByb2NzLT5nZXRLZXkoaikpLmNvbXBhcmUobmFtZSkgPT0gMCkgeworICAgICAgICAg ICAgICAgICAgICAgY29kZVRvR0lEW2ldID0gajsKKyAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgIH0KKy0tLSBpbmtzY2FwZS0xLjQuNF8yMDI2LTA1LTA1X2RjYWYzZTdkOWUvc3JjL2V4 dGVuc2lvbi9pbnRlcm5hbC9wZGZpbnB1dC9wb3BwbGVyLXRyYW5zaXRpb24tYXBpLmgKKysrKyBp bmtzY2FwZS0xLjQuNF8yMDI2LTA1LTA1X2RjYWYzZTdkOWUvc3JjL2V4dGVuc2lvbi9pbnRlcm5h bC9wZGZpbnB1dC9wb3BwbGVyLXRyYW5zaXRpb24tYXBpLmgKK0BAIC0xNSw2ICsxNSwyOCBAQAor ICNpbmNsdWRlIDxnbGliL3BvcHBsZXItZmVhdHVyZXMuaD4KKyAjaW5jbHVkZSA8cG9wcGxlci9V VEYuaD4KKyAKKysjaWYgUE9QUExFUl9DSEVDS19WRVJTSU9OKDI2LCA3LCAwKQorKyNkZWZpbmUg X1BPUFBMRVJfU1RSSU5HXzI2Xzcgc3RkOjpzdHJpbmcKKysjZWxzZQorKyNkZWZpbmUgX1BPUFBM RVJfU1RSSU5HXzI2XzcgR29vU3RyaW5nCisrI2VuZGlmCisrCisrI2lmIFBPUFBMRVJfQ0hFQ0tf VkVSU0lPTigyNiwgNiwgMCkKKysjZGVmaW5lIF9QT1BQTEVSX0dFVF9HUkFZKGNvbG9yLCBncmF5 KSBnZXRHcmF5KGNvbG9yLCBncmF5KQorKyNkZWZpbmUgX1BPUFBMRVJfR0VUX1JHQihjb2xvciwg cmdiKSBnZXRSR0IoY29sb3IsIHJnYikKKysjZGVmaW5lIF9QT1BQTEVSX0dFVF9DTVlLKGNvbG9y LCBjbXlrKSBnZXRDTVlLKGNvbG9yLCBjbXlrKQorKyNkZWZpbmUgX1BPUFBMRVJfU0VUX0ZJTExf Q09MT1IoY29sb3IpIHNldEZpbGxDb2xvcihjb2xvcikKKysjZGVmaW5lIF9QT1BQTEVSX1NFVF9T VFJPS0VfQ09MT1IoY29sb3IpIHNldFN0cm9rZUNvbG9yKGNvbG9yKQorKyNkZWZpbmUgX1BPUFBM RVJfR0ZYX1NUQVRFKGgsIHYsIFJlY3QsIHJvdGF0ZUEsIHVwc2lkZURvd24pIEdmeFN0YXRlKGgs IHYsIFJlY3QsIHJvdGF0ZUEsIHVwc2lkZURvd24pCisrI2Vsc2UKKysjZGVmaW5lIF9QT1BQTEVS X0dFVF9HUkFZKGNvbG9yLCBncmF5KSBnZXRHcmF5KCZjb2xvciwgZ3JheSkKKysjZGVmaW5lIF9Q T1BQTEVSX0dFVF9SR0IoY29sb3IsIHJnYikgZ2V0UkdCKCZjb2xvciwgcmdiKQorKyNkZWZpbmUg X1BPUFBMRVJfR0VUX0NNWUsoY29sb3IsIGNteWspIGdldENNWUsoJmNvbG9yLCBjbXlrKQorKyNk ZWZpbmUgX1BPUFBMRVJfU0VUX0ZJTExfQ09MT1IoY29sb3IpIHNldEZpbGxDb2xvcigmY29sb3Ip CisrI2RlZmluZSBfUE9QUExFUl9TRVRfU1RST0tFX0NPTE9SKGNvbG9yKSBzZXRTdHJva2VDb2xv cigmY29sb3IpCisrI2RlZmluZSBfUE9QUExFUl9HRlhfU1RBVEUoaCwgdiwgUmVjdCwgcm90YXRl QSwgdXBzaWRlRG93bikgR2Z4U3RhdGUoaCwgdiwgJlJlY3QsIHJvdGF0ZUEsIHVwc2lkZURvd24p CisrI2VuZGlmCisrCisgI2lmIFBPUFBMRVJfQ0hFQ0tfVkVSU0lPTigyNiwgMiwgMCkKKyAjZGVm aW5lIF9QT1BQTEVSX1dNT0RFIEdmeEZvbnQ6OldyaXRpbmdNb2RlCisgI2RlZmluZSBfUE9QUExF Ul9XTU9ERV9IT1JJWk9OVEFMIEdmeEZvbnQ6OldyaXRpbmdNb2RlOjpIb3Jpem9udGFsCistLS0g aW5rc2NhcGUtMS40LjRfMjAyNi0wNS0wNV9kY2FmM2U3ZDllL3NyYy9leHRlbnNpb24vaW50ZXJu YWwvcGRmaW5wdXQvcG9wcGxlci11dGlscy5jcHAKKysrKyBpbmtzY2FwZS0xLjQuNF8yMDI2LTA1 LTA1X2RjYWYzZTdkOWUvc3JjL2V4dGVuc2lvbi9pbnRlcm5hbC9wZGZpbnB1dC9wb3BwbGVyLXV0 aWxzLmNwcAorQEAgLTE4NiwyNCArMTg2LDI3IEBAIHZvaWQgSW5rRm9udERpY3Q6Omhhc2hGb250 T2JqZWN0MShjb25zdAorICAgICAgICAgY2FzZSBvYmpOdWxsOgorICAgICAgICAgICAgIGgtPmhh c2goJ3onKTsKKyAgICAgICAgICAgICBicmVhazsKKy0gICAgICAgIGNhc2Ugb2JqQXJyYXk6Cist ICAgICAgICAgICAgaC0+aGFzaCgnYScpOworLSAgICAgICAgICAgIG4gPSBvYmotPmFycmF5R2V0 TGVuZ3RoKCk7CistICAgICAgICAgICAgaC0+aGFzaCgoY2hhciAqKSZuLCBzaXplb2YoaW50KSk7 CistICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkgeworLSAgICAgICAgICAgICAg ICBjb25zdCBPYmplY3QgJm9iajIgPSBvYmotPmFycmF5R2V0TkYoaSk7CistICAgICAgICAgICAg ICAgIGhhc2hGb250T2JqZWN0MSgmb2JqMiwgaCk7CistICAgICAgICAgICAgfQorLSAgICAgICAg ICAgIGJyZWFrOworLSAgICAgICAgY2FzZSBvYmpEaWN0OgorLSAgICAgICAgICAgIGgtPmhhc2go J2QnKTsKKy0gICAgICAgICAgICBuID0gb2JqLT5kaWN0R2V0TGVuZ3RoKCk7CistICAgICAgICAg ICAgaC0+aGFzaCgoY2hhciAqKSZuLCBzaXplb2YoaW50KSk7CistICAgICAgICAgICAgZm9yIChp ID0gMDsgaSA8IG47ICsraSkgeworLSAgICAgICAgICAgICAgICBwID0gb2JqLT5kaWN0R2V0S2V5 KGkpOworLSAgICAgICAgICAgICAgICBoLT5oYXNoKHAsIChpbnQpc3RybGVuKHApKTsKKy0gICAg ICAgICAgICAgICAgY29uc3QgT2JqZWN0ICZvYmoyID0gb2JqLT5kaWN0R2V0VmFsTkYoaSk7Cist ICAgICAgICAgICAgICAgIGhhc2hGb250T2JqZWN0MSgmb2JqMiwgaCk7CisrICAgICAgICBjYXNl IG9iakFycmF5OiB7CisrICAgICAgICAgICAgICAgIGgtPmhhc2goJ2EnKTsKKysgICAgICAgICAg ICAgICAgQXJyYXkgKiBvYmpBcnJheSA9IG9iai0+Z2V0QXJyYXkoKTsKKysgICAgICAgICAgICAg ICAgbiA9IG9iakFycmF5LT5nZXRMZW5ndGgoKTsKKysgICAgICAgICAgICAgICAgaC0+aGFzaCgo Y2hhciAqKSZuLCBzaXplb2YoaW50KSk7CisrICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkg PCBuOyArK2kpIHsKKysgICAgICAgICAgICAgICAgICAgIGNvbnN0IE9iamVjdCAmb2JqMiA9IG9i akFycmF5LT5nZXRORihpKTsKKysgICAgICAgICAgICAgICAgICAgIGhhc2hGb250T2JqZWN0MSgm b2JqMiwgaCk7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9IGJyZWFrOworKyAg ICAgICAgY2FzZSBvYmpEaWN0OiB7CisrICAgICAgICAgICAgICAgIGgtPmhhc2goJ2QnKTsKKysg ICAgICAgICAgICAgICAgYXV0byBvYmpkaWN0ID0gb2JqLT5nZXREaWN0KCk7CisrICAgICAgICAg ICAgICAgIG4gPSBvYmpkaWN0LT5nZXRMZW5ndGgoKTsKKysgICAgICAgICAgICAgICAgaC0+aGFz aCgoY2hhciAqKSZuLCBzaXplb2YoaW50KSk7CisrICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7 IGkgPCBuOyArK2kpIHsKKysgICAgICAgICAgICAgICAgICAgIGF1dG8gcCA9IHN0ZDo6c3RyaW5n KG9iamRpY3QtPmdldEtleShpKSk7CisrICAgICAgICAgICAgICAgICAgICBoLT5oYXNoKHAuY19z dHIoKSwgcC5sZW5ndGgoKSk7CisrICAgICAgICAgICAgICAgICAgICBjb25zdCBPYmplY3QgJm9i ajIgPSBvYmpkaWN0LT5nZXRWYWxORihpKTsKKysgICAgICAgICAgICAgICAgICAgIGhhc2hGb250 T2JqZWN0MSgmb2JqMiwgaCk7CisrICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICBjYXNlIG9ialN0cmVhbToKK0BAIC01NDMsNyAr NTQ2LDcgQEAgdm9pZCBfZ2V0Rm9udHNSZWN1cnNpdmUoc3RkOjpzaGFyZWRfcHRyPAorICAgICAg ICAgICAgICAgICBjb250aW51ZTsKKyAKKyAgICAgICAgICAgICBSZWYgcmVzb3VyY2VzUmVmOwor LSAgICAgICAgICAgIGNvbnN0IE9iamVjdCByZXNPYmogPSBvYmoyLnN0cmVhbUdldERpY3QoKS0+ bG9va3VwKCJSZXNvdXJjZXMiLCAmcmVzb3VyY2VzUmVmKTsKKysgICAgICAgICAgICBjb25zdCBP YmplY3QgcmVzT2JqID0gb2JqMi5nZXRTdHJlYW0oKS0+Z2V0RGljdCgpLT5sb29rdXAoIlJlc291 cmNlcyIsICZyZXNvdXJjZXNSZWYpOworICAgICAgICAgICAgIGlmIChyZXNvdXJjZXNSZWYgIT0g UmVmOjpJTlZBTElEKCkgJiYgIXZpc2l0ZWRPYmplY3RzLmluc2VydChyZXNvdXJjZXNSZWYubnVt KS5zZWNvbmQpCisgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworIAorQEAgLTYwOCw2ICs2MTEs MTEgQEAgc3RkOjpzdHJpbmcgZ2V0U3RyaW5nKGNvbnN0IEdvb1N0cmluZyAqdgorICAgICByZXR1 cm4gIiI7CisgfQorIAorK3N0ZDo6c3RyaW5nIGdldFN0cmluZyhjb25zdCBHb29TdHJpbmcgJnZh bHVlKQorK3sKKysgICAgcmV0dXJuIGdldFN0cmluZyh2YWx1ZS50b1N0cigpKTsKKyt9CisrCisg LyoqCisgICogQ29udmVydCBQREYgc3RyaW5ncywgd2hpY2ggY2FuIGJlIGZvcm1hdHRlZCBhcyBV VEY4LCBVVEYxNkJFIG9yIFVURjE2TEUgaW50bworICAqIGEgcHJlZGljdGFibGUgVVRGOCBzdHJp bmcgY29uc2lzdGFudCB3aXRoIHN2ZyByZXF1aXJlbWVudHMuCistLS0gaW5rc2NhcGUtMS40LjRf MjAyNi0wNS0wNV9kY2FmM2U3ZDllL3NyYy9leHRlbnNpb24vaW50ZXJuYWwvcGRmaW5wdXQvcG9w cGxlci11dGlscy5oCisrKysgaW5rc2NhcGUtMS40LjRfMjAyNi0wNS0wNV9kY2FmM2U3ZDllL3Ny Yy9leHRlbnNpb24vaW50ZXJuYWwvcGRmaW5wdXQvcG9wcGxlci11dGlscy5oCitAQCAtODYsNiAr ODYsNyBAQCBzdGQ6OnN0cmluZyBnZXREaWN0U3RyaW5nKERpY3QgKmRpY3QsIGNvCisgc3RkOjpz dHJpbmcgZ2V0U3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nICZ2YWx1ZSk7Cisgc3RkOjpzdHJpbmcg Z2V0U3RyaW5nKGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxHb29TdHJpbmc+ICZ2YWx1ZSk7Cisgc3Rk OjpzdHJpbmcgZ2V0U3RyaW5nKGNvbnN0IEdvb1N0cmluZyAqdmFsdWUpOworK3N0ZDo6c3RyaW5n IGdldFN0cmluZyhjb25zdCBHb29TdHJpbmcgJnZhbHVlKTsKKyBzdGQ6OnN0cmluZyB2YWxpZGF0 ZVN0cmluZyhzdGQ6OnN0cmluZyBjb25zdCAmaW4pOworIAorIC8vIFJlcGxhY2F0ZSBwb3BwbGVy IEZvbnREaWN0CistLS0gaW5rc2NhcGUtMS40LjRfMjAyNi0wNS0wNV9kY2FmM2U3ZDllL3NyYy9l eHRlbnNpb24vaW50ZXJuYWwvcGRmaW5wdXQvc3ZnLWJ1aWxkZXIuY3BwCisrKysgaW5rc2NhcGUt MS40LjRfMjAyNi0wNS0wNV9kY2FmM2U3ZDllL3NyYy9leHRlbnNpb24vaW50ZXJuYWwvcGRmaW5w dXQvc3ZnLWJ1aWxkZXIuY3BwCitAQCAtNjgsNyArNjgsNiBAQCBuYW1lc3BhY2UgSW50ZXJuYWwg eworIAorICNkZWZpbmUgVFJBQ0UoX2FyZ3MpIElGVFJBQ0UoZ19wcmludCBfYXJncykKKyAKKy0K KyAvKioKKyAgKiBcY2xhc3MgU3ZnQnVpbGRlcgorICAqCitAQCAtMzkyLDcgKzM5MSwxNSBAQCBz dGF0aWMgc3RkOjpzdHJpbmcgc3ZnQ29udmVydEdmeFJHQihHZnhSCisgICAgIHJldHVybiBzdmdD b252ZXJ0UkdCVG9UZXh0KHIsIGcsIGIpOworIH0KKyAKKy1zdGQ6OnN0cmluZyBTdmdCdWlsZGVy Ojpjb252ZXJ0R2Z4Q29sb3IoY29uc3QgR2Z4Q29sb3IgKmNvbG9yLCBHZnhDb2xvclNwYWNlICpz cGFjZSkKKysvLyBmb3IgcG9wcGxlciA8IDI2LjA2LjAKKytzdGQ6OnN0cmluZyBTdmdCdWlsZGVy Ojpjb252ZXJ0R2Z4Q29sb3IoY29uc3QgR2Z4Q29sb3IgKmNvbG9yLCBHZnhDb2xvclNwYWNlICpz cGFjZSkgeworKyAgICBpZiAoIWNvbG9yKSB7CisrICAgICAgICByZXR1cm4gIiI7CisrICAgIH0K KysgICAgcmV0dXJuIGNvbnZlcnRHZnhDb2xvcigqY29sb3IsIHNwYWNlKTsKKyt9CisrCisrc3Rk OjpzdHJpbmcgU3ZnQnVpbGRlcjo6Y29udmVydEdmeENvbG9yKGNvbnN0IEdmeENvbG9yICZjb2xv ciwgR2Z4Q29sb3JTcGFjZSAqc3BhY2UpCisgeworICAgICBzdGQ6OnN0cmluZyBpY2MgPSAiIjsK KyAgICAgc3dpdGNoIChzcGFjZS0+Z2V0TW9kZSgpKSB7CitAQCAtNDEyLDE0ICs0MTksMTQgQEAg c3RkOjpzdHJpbmcgU3ZnQnVpbGRlcjo6Y29udmVydEdmeENvbG9yKAorICAgICB9CisgCisgICAg IEdmeFJHQiByZ2I7CistICAgIHNwYWNlLT5nZXRSR0IoY29sb3IsICZyZ2IpOworKyAgICBzcGFj ZS0+X1BPUFBMRVJfR0VUX1JHQihjb2xvciwgJnJnYik7CisgICAgIGF1dG8gcmdiX2NvbG9yID0g c3ZnQ29udmVydEdmeFJHQigmcmdiKTsKKyAKKyAgICAgaWYgKCFpY2MuZW1wdHkoKSkgeworICAg ICAgICAgSW5rc2NhcGU6OkNTU09TdHJpbmdTdHJlYW0gaWNjX2NvbG9yOworICAgICAgICAgaWNj X2NvbG9yIDw8IHJnYl9jb2xvciA8PCAiIGljYy1jb2xvcigiIDw8IGljYzsKKyAgICAgICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgc3BhY2UtPmdldE5Db21wcygpOyArK2kpIHsKKy0gICAgICAgICAg ICBpY2NfY29sb3IgPDwgIiwgIiA8PCBjb2xUb0RibCgoKmNvbG9yKS5jW2ldKTsKKysgICAgICAg ICAgICBpY2NfY29sb3IgPDwgIiwgIiA8PCBjb2xUb0RibCgoY29sb3IpLmNbaV0pOworICAgICAg ICAgfQorICAgICAgICAgaWNjX2NvbG9yIDw8ICIpOyI7CisgICAgICAgICByZXR1cm4gaWNjX2Nv bG9yLnN0cigpOworQEAgLTEyMDQsNyArMTIxMSw3IEBAIGdjaGFyICpTdmdCdWlsZGVyOjpfY3Jl YXRlR3JhZGllbnQoR2Z4U2gKKyAvKioKKyAgKiBcYnJpZWYgQWRkcyBhIHN0b3Agd2l0aCB0aGUg Z2l2ZW4gcHJvcGVydGllcyB0byB0aGUgZ3JhZGllbnQncyByZXByZXNlbnRhdGlvbgorICAqLwor LXZvaWQgU3ZnQnVpbGRlcjo6X2FkZFN0b3BUb0dyYWRpZW50KElua3NjYXBlOjpYTUw6Ok5vZGUg KmdyYWRpZW50LCBkb3VibGUgb2Zmc2V0LCBHZnhDb2xvciAqY29sb3IsIEdmeENvbG9yU3BhY2Ug KnNwYWNlLAorK3ZvaWQgU3ZnQnVpbGRlcjo6X2FkZFN0b3BUb0dyYWRpZW50KElua3NjYXBlOjpY TUw6Ok5vZGUgKmdyYWRpZW50LCBkb3VibGUgb2Zmc2V0LCBHZnhDb2xvciAmY29sb3IsIEdmeENv bG9yU3BhY2UgKnNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv dWJsZSBvcGFjaXR5KQorIHsKKyAgICAgSW5rc2NhcGU6OlhNTDo6Tm9kZSAqc3RvcCA9IF94bWxf ZG9jLT5jcmVhdGVFbGVtZW50KCJzdmc6c3RvcCIpOworQEAgLTEyMTQsNyArMTIyMSw3IEBAIHZv aWQgU3ZnQnVpbGRlcjo6X2FkZFN0b3BUb0dyYWRpZW50KElua3MKKyAgICAgaWYgKHNwYWNlLT5n ZXRNb2RlKCkgPT0gY3NEZXZpY2VHcmF5KSB7CisgICAgICAgICAvLyBUaGlzIGlzIGEgdHJhbnNw YXJlbmN5IG1hc2suCisgICAgICAgICBHZnhSR0IgcmdiOworLSAgICAgICAgc3BhY2UtPmdldFJH Qihjb2xvciwgJnJnYik7CisrICAgICAgICBzcGFjZS0+X1BPUFBMRVJfR0VUX1JHQihjb2xvciwg JnJnYik7CisgICAgICAgICBkb3VibGUgZ3JheSA9IChkb3VibGUpcmdiLnIgLyA2NTUzNS4wOwor ICAgICAgICAgZ3JheSA9IENMQU1QKGdyYXksIDAuMCwgMS4wKTsKKyAgICAgICAgIG9zX29wYWNp dHkgPDwgZ3JheTsKK0BAIC0xMjU1LDggKzEyNjIsOCBAQCBib29sIFN2Z0J1aWxkZXI6Ol9hZGRH cmFkaWVudFN0b3BzKElua3NjCisgICAgICAgICBpZiAoIXN2Z0dldFNoYWRpbmdDb2xvcihzaGFk aW5nLCAwLjAsICZzdG9wMSkgfHwgIXN2Z0dldFNoYWRpbmdDb2xvcihzaGFkaW5nLCAxLjAsICZz dG9wMikpIHsKKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICB9IGVsc2Ugewor LSAgICAgICAgICAgIF9hZGRTdG9wVG9HcmFkaWVudChncmFkaWVudCwgMC4wLCAmc3RvcDEsIHNw YWNlLCAxLjApOworLSAgICAgICAgICAgIF9hZGRTdG9wVG9HcmFkaWVudChncmFkaWVudCwgMS4w LCAmc3RvcDIsIHNwYWNlLCAxLjApOworKyAgICAgICAgICAgIF9hZGRTdG9wVG9HcmFkaWVudChn cmFkaWVudCwgMC4wLCBzdG9wMSwgc3BhY2UsIDEuMCk7CisrICAgICAgICAgICAgX2FkZFN0b3BU b0dyYWRpZW50KGdyYWRpZW50LCAxLjAsIHN0b3AyLCBzcGFjZSwgMS4wKTsKKyAgICAgICAgIH0K KyAgICAgfSBlbHNlIGlmICh0eXBlID09IF9QT1BQTEVSX0ZVTkNUSU9OX1RZUEVfU1RJVENISU5H KSB7CisgICAgICAgICBhdXRvIHN0aXRjaGluZ0Z1bmMgPSBzdGF0aWNfY2FzdDxfUE9QUExFUl9D T05TVCBTdGl0Y2hpbmdGdW5jdGlvbio+KGZ1bmMpOworQEAgLTEyNjksNyArMTI3Niw3IEBAIGJv b2wgU3ZnQnVpbGRlcjo6X2FkZEdyYWRpZW50U3RvcHMoSW5rc2MKKyAgICAgICAgIC8vIEFkZCBz dG9wcyBmcm9tIGFsbCB0aGUgc3RpdGNoZWQgZnVuY3Rpb25zCisgICAgICAgICBHZnhDb2xvciBw cmV2X2NvbG9yLCBjb2xvcjsKKyAgICAgICAgIHN2Z0dldFNoYWRpbmdDb2xvcihzaGFkaW5nLCBi b3VuZHNbMF0sICZwcmV2X2NvbG9yKTsKKy0gICAgICAgIF9hZGRTdG9wVG9HcmFkaWVudChncmFk aWVudCwgYm91bmRzWzBdLCAmcHJldl9jb2xvciwgc3BhY2UsIDEuMCk7CisrICAgICAgICBfYWRk U3RvcFRvR3JhZGllbnQoZ3JhZGllbnQsIGJvdW5kc1swXSwgcHJldl9jb2xvciwgc3BhY2UsIDEu MCk7CisgICAgICAgICBmb3IgKCBpbnQgaSA9IDAgOyBpIDwgbnVtX2Z1bmNzIDsgaSsrICkgewor ICAgICAgICAgICAgIHN2Z0dldFNoYWRpbmdDb2xvcihzaGFkaW5nLCBib3VuZHNbaSArIDFdLCAm Y29sb3IpOworICAgICAgICAgICAgIC8vIEFkZCBzdG9wcworQEAgLTEyNzksMTQgKzEyODYsMTQg QEAgYm9vbCBTdmdCdWlsZGVyOjpfYWRkR3JhZGllbnRTdG9wcyhJbmtzYworICAgICAgICAgICAg ICAgICAgICAgZXhwRSA9IChib3VuZHNbaSArIDFdIC0gYm91bmRzW2ldKS9leHBFOyAgICAvLyBh cHByb3hpbWF0ZSBleHBvbmVudGlhbCBhcyBhIHNpbmdsZSBzdHJhaWdodCBsaW5lIGF0IHg9MQor ICAgICAgICAgICAgICAgICAgICAgaWYgKGVuY29kZVsyKmldID09IDApIHsgICAgLy8gbm9ybWFs IHNlcXVlbmNlCisgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBvZmZzZXQgPSAoYm91bmRz W2kgKyAxXSAtIGV4cEUpIC8gbWF4X2JvdW5kOworLSAgICAgICAgICAgICAgICAgICAgICAgIF9h ZGRTdG9wVG9HcmFkaWVudChncmFkaWVudCwgb2Zmc2V0LCAmcHJldl9jb2xvciwgc3BhY2UsIDEu MCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgX2FkZFN0b3BUb0dyYWRpZW50KGdyYWRpZW50 LCBvZmZzZXQsIHByZXZfY29sb3IsIHNwYWNlLCAxLjApOworICAgICAgICAgICAgICAgICAgICAg fSBlbHNlIHsgICAgICAgICAgICAgICAgICAgLy8gcmVmbGVjdGVkIHNlcXVlbmNlCisgICAgICAg ICAgICAgICAgICAgICAgICAgYXV0byBvZmZzZXQgPSAoYm91bmRzW2ldICsgZXhwRSkgLyBtYXhf Ym91bmQ7CistICAgICAgICAgICAgICAgICAgICAgICAgX2FkZFN0b3BUb0dyYWRpZW50KGdyYWRp ZW50LCBvZmZzZXQsICZjb2xvciwgc3BhY2UsIDEuMCk7CisrICAgICAgICAgICAgICAgICAgICAg ICAgX2FkZFN0b3BUb0dyYWRpZW50KGdyYWRpZW50LCBvZmZzZXQsIGNvbG9yLCBzcGFjZSwgMS4w KTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgIH0KKy0gICAgICAgICAgICBfYWRkU3RvcFRvR3JhZGllbnQoZ3JhZGllbnQsIGJvdW5kc1tp ICsgMV0gLyBtYXhfYm91bmQsICZjb2xvciwgc3BhY2UsIDEuMCk7CisrICAgICAgICAgICAgX2Fk ZFN0b3BUb0dyYWRpZW50KGdyYWRpZW50LCBib3VuZHNbaSArIDFdIC8gbWF4X2JvdW5kLCBjb2xv ciwgc3BhY2UsIDEuMCk7CisgICAgICAgICAgICAgcHJldl9jb2xvciA9IGNvbG9yOworICAgICAg ICAgfQorICAgICB9IGVsc2UgeyAvLyBVbnN1cHBvcnRlZCBmdW5jdGlvbiB0eXBlCistLS0gaW5r c2NhcGUtMS40LjRfMjAyNi0wNS0wNV9kY2FmM2U3ZDllL3NyYy9leHRlbnNpb24vaW50ZXJuYWwv cGRmaW5wdXQvc3ZnLWJ1aWxkZXIuaAorKysrIGlua3NjYXBlLTEuNC40XzIwMjYtMDUtMDVfZGNh ZjNlN2Q5ZS9zcmMvZXh0ZW5zaW9uL2ludGVybmFsL3BkZmlucHV0L3N2Zy1idWlsZGVyLmgKK0BA IC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBJbmtzY2FwZSB7CisgI2luY2x1ZGUgPGdsaWJtbS91 c3RyaW5nLmg+CisgI2luY2x1ZGUgPGxjbXMyLmg+CisgI2luY2x1ZGUgPHBvcHBsZXIvQ2hhclR5 cGVzLmg+CisrI2luY2x1ZGUgIm9iamVjdC9jb2xvci1wcm9maWxlLmgiCisgCisgI2luY2x1ZGUg ImVudW1zLmgiCisgI2luY2x1ZGUgInBvcHBsZXItdXRpbHMuaCIKK0BAIC0xODUsNyArMTg2LDcg QEAgcHJpdmF0ZToKKyAgICAgLy8gUGF0dGVybiBjcmVhdGlvbgorICAgICBnY2hhciAqX2NyZWF0 ZVBhdHRlcm4oR2Z4UGF0dGVybiAqcGF0dGVybiwgR2Z4U3RhdGUgKnN0YXRlLCBib29sIGlzX3N0 cm9rZT1mYWxzZSk7CisgICAgIGdjaGFyICpfY3JlYXRlR3JhZGllbnQoR2Z4U2hhZGluZyAqc2hh ZGluZywgY29uc3QgR2VvbTo6QWZmaW5lIHBhdF9tYXRyaXgsIGJvb2wgZm9yX3NoYWRpbmcgPSBm YWxzZSk7CistICAgIHZvaWQgX2FkZFN0b3BUb0dyYWRpZW50KElua3NjYXBlOjpYTUw6Ok5vZGUg KmdyYWRpZW50LCBkb3VibGUgb2Zmc2V0LCBHZnhDb2xvciAqY29sb3IsIEdmeENvbG9yU3BhY2Ug KnNwYWNlLAorKyAgICB2b2lkIF9hZGRTdG9wVG9HcmFkaWVudChJbmtzY2FwZTo6WE1MOjpOb2Rl ICpncmFkaWVudCwgZG91YmxlIG9mZnNldCwgR2Z4Q29sb3IgJmNvbG9yLCBHZnhDb2xvclNwYWNl ICpzcGFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIG9wYWNpdHkpOwor ICAgICBib29sIF9hZGRHcmFkaWVudFN0b3BzKElua3NjYXBlOjpYTUw6Ok5vZGUgKmdyYWRpZW50 LCBHZnhTaGFkaW5nICpzaGFkaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QT1BQ TEVSX0NPTlNUIEZ1bmN0aW9uICpmdW5jKTsKK0BAIC0yMzksNiArMjQwLDcgQEAgcHJpdmF0ZToK KyAgICAgc3RhdGljIGJvb2wgX2F0dHJFcXVhbChJbmtzY2FwZTo6WE1MOjpOb2RlICphLCBJbmtz Y2FwZTo6WE1MOjpOb2RlICpiLCBjaGFyIGNvbnN0ICphdHRyKTsKKyAKKyAgICAgLy8gQ29sb3Jz CisrICAgIHN0ZDo6c3RyaW5nIGNvbnZlcnRHZnhDb2xvcihjb25zdCBHZnhDb2xvciAmY29sb3Is IEdmeENvbG9yU3BhY2UgKnNwYWNlKTsKKyAgICAgc3RkOjpzdHJpbmcgY29udmVydEdmeENvbG9y KGNvbnN0IEdmeENvbG9yICpjb2xvciwgR2Z4Q29sb3JTcGFjZSAqc3BhY2UpOworICAgICBzdGQ6 OnN0cmluZyBfZ2V0Q29sb3JQcm9maWxlKGNtc0hQUk9GSUxFIGhwKTsKKyAKCmRpZmYgLS1naXQg YS9pbmtzY2FwZS5zcGVjIGIvaW5rc2NhcGUuc3BlYwppbmRleCA4OTA0OTY0Li5hMDM1MGQ2IDEw MDY0NAotLS0gYS9pbmtzY2FwZS5zcGVjCisrKyBiL2lua3NjYXBlLnNwZWMKQEAgLTQ3LDYgKzQ3 LDggQEAgU291cmNlMTAwOiAgICAgIEZlZG9yYS1Db2xvci1QYWxldHRlLmdwbAogI0V4Y2x1ZGVB cmNoOiAgICAlJXtpeDg2fQogIyUlZW5kaWYKIAorUGF0Y2g6ICAgICAgICAgIGlua3NjYXBlLTEu NC40LXBvcHBsZXItMjYuMDguMC5wYXRjaAorCiBQcm92aWRlczogYnVuZGxlZChsaWJjcm9jbykg PSAwLjYuOTl+Z2l0YjllNGI0NwogUHJvdmlkZXM6IGJ1bmRsZWQoYXV0b3RyYWNlKSA9IDAuNDAu MH5naXQwZGU2MjAxCiBQcm92aWRlczogYnVuZGxlZChsaWJkZXBpeGVsaXplKSA9IDB+Z2l0MTli NzYwMQo=