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: Takao Fujiwara To: git-commits@fedoraproject.org Subject: [rpms/ibus] autotool: Implement IBusMessage and update compose feature Date: Sun, 31 May 2026 02:08:55 GMT Message-ID: <178019333565.1.5686319989303863717.rpms-ibus-8523ef50fd7b@fedoraproject.org> List-ID: X-Git-Repo: rpms/ibus X-Git-Branch: autotool X-Git-Rev: 8523ef50fd7be230ee0f3dced5b353a5ed2068c0 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvaWJ1cwogICAgICAgICAgICBCcmFuY2ggOiBhdXRvdG9vbAogICAgICAgICAg ICBDb21taXQgOiA4NTIzZWY1MGZkN2JlMjMwZWUwZjNkY2VkNWIzNTNhNWVkMjA2OGMwCiAgICAg ICAgICAgIEF1dGhvciA6IFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckByZWRoYXQuY29tPgogICAg ICAgICAgICBEYXRlICAgOiAyMDI1LTA2LTAxVDIzOjMzOjU0KzA5OjAwCiAgICAgICAgICAgIFN0 YXRzICA6ICs1MTE1Ly00NCBpbiAzIGZpbGUocykKICAgICAgICAgICAgVVJMICAgIDogaHR0cHM6 Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9pYnVzL2MvODUyM2VmNTBmZDdiZTIzMGVlMGYz ZGNlZDViMzUzYTVlZDIwNjhjMD9icmFuY2g9YXV0b3Rvb2wKCiAgICAgICAgICAgIExvZzoKICAg ICAgICAgICAgSW1wbGVtZW50IElCdXNNZXNzYWdlIGFuZCB1cGRhdGUgY29tcG9zZSBmZWF0dXJl CgotIEZpeCBFeGl0IGFuZCBSZXN0YXJ0IG1lbnUgaXRlbXMgaW4gV2F5bGFuZCBpbnB1dC1tZXRo b2QgVjIKLSBVcGRhdGUgUGxhc21hIHNldHVwIG1lc3NhZ2UKLSBJbXBsZW1lbnQgSUJ1c01lc3Nh Z2UKLSBJbXByb3ZlIEJFUE8gY29tcG9zZSBzZXF1ZW5jZSB2aXN1YWxzCi0gRG8gbm90IGxvYWQg ZW4tVVMgY29tcG9zZSB0YWJsZSBieSBkZWZhdWx0Ci0gRml4IHNvbWUgbWVtb3J5IGxlYWtzCgot LS0KZGlmZiAtLWdpdCBhL2lidXMtMTM4NTM0OS1zZWd2LWJ1cy1wcm94eS5wYXRjaCBiL2lidXMt MTM4NTM0OS1zZWd2LWJ1cy1wcm94eS5wYXRjaAppbmRleCBiMGJkNGUxLi42MTJiNjU0IDEwMDY0 NAotLS0gYS9pYnVzLTEzODUzNDktc2Vndi1idXMtcHJveHkucGF0Y2gKKysrIGIvaWJ1cy0xMzg1 MzQ5LXNlZ3YtYnVzLXByb3h5LnBhdGNoCkBAIC01NDUsNyArNTQ1LDcgQEAgZGlmZiAtLWdpdCBh L3VpL2d0azMvc3dpdGNoZXIudmFsYSBiL3VpL2d0azMvc3dpdGNoZXIudmFsYQogaW5kZXggMjZi ZGVkOTkuLjIxZWRlN2JlIDEwMDY0NAogLS0tIGEvdWkvZ3RrMy9zd2l0Y2hlci52YWxhCiArKysg Yi91aS9ndGszL3N3aXRjaGVyLnZhbGEKLUBAIC0yMzYsMTYgKzIzNiwxOCBAQCBjbGFzcyBTd2l0 Y2hlciA6IEd0ay5XaW5kb3cgeworQEAgLTI1MSwyNyArMjUxLDM3IEBAIGNsYXNzIFN3aXRjaGVy IDogR3RrLldpbmRvdyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBldmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBudWxsKTsKQEAgLTU2MCw2ICs1NjAsMTIgQEAgaW5kZXggMjZiZGVkOTkuLjIxZWRlN2JlIDEw MDY0NAogLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwpOwogLSAgICAgICAgaWYgKHN0 YXR1cyAhPSBHZGsuR3JhYlN0YXR1cy5TVUNDRVNTKQogLSAgICAgICAgICAgIHdhcm5pbmcoIkdy YWIgcG9pbnRlciBmYWlsZWQhIHN0YXR1cyA9ICVkIiwgc3RhdHVzKTsKKy0KKy0gICAgICAgIC8v IFByb2JhYmx5IHdlIGNhbiBkZWxldGUgbV9wb3B1cF9kZWxheV90aW1lIGluIDEuNgorLSAgICAg ICAgcG9pbnRlci5nZXRfcG9zaXRpb25fZG91YmxlKG51bGwsCistICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb3V0IG1fbW91c2VfaW5pdF94LAorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG91dCBtX21vdXNlX2luaXRfeSk7CistICAgICAgICBtX21vdXNl X21vdmVkID0gZmFsc2U7CiArICAgICAgICB9IGVsc2UgewogKyAgICAgICAgICAgIHN0YXR1cyA9 IHNlYXQuZ3JhYihnZXRfd2luZG93KCksCiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdkay5TZWF0Q2FwYWJpbGl0aWVzLlBPSU5URVIsCkBAIC01NzAsNDUgKzU3Niw3IEBAIGluZGV4 IDI2YmRlZDk5Li4yMWVkZTdiZSAxMDA2NDQKICsgICAgICAgICAgICBpZiAoc3RhdHVzICE9IEdk ay5HcmFiU3RhdHVzLlNVQ0NFU1MpCiArICAgICAgICAgICAgICAgIHdhcm5pbmcoIkdyYWIgcG9p bnRlciBmYWlsZWQhIHN0YXR1cyA9ICVkIiwgc3RhdHVzKTsKICsgICAgICAgIH0KLSAjZWxzZQot ICAgICAgICAgR2RrLkRldmljZSBkZXZpY2UgPSBldmVudC5nZXRfZGV2aWNlKCk7Ci0gICAgICAg ICBpZiAoZGV2aWNlID09IG51bGwpIHsKLUBAIC0yODEsMzAgKzI4Myw0MSBAQCBjbGFzcyBTd2l0 Y2hlciA6IEd0ay5XaW5kb3cgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGsu RXZlbnRNYXNrLktFWV9SRUxFQVNFX01BU0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG51bGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdkay5DVVJSRU5UX1RJ TUUpOwotLSAgICAgICAgaWYgKHN0YXR1cyAhPSBHZGsuR3JhYlN0YXR1cy5TVUNDRVNTKQotKyAg ICAgICAgaWYgKHN0YXR1cyAhPSBHZGsuR3JhYlN0YXR1cy5TVUNDRVNTKSB7Ci0gICAgICAgICAg ICAgd2FybmluZygiR3JhYiBrZXlib2FyZCBmYWlsZWQhIHN0YXR1cyA9ICVkIiwgc3RhdHVzKTsK LS0gICAgICAgIC8vIEdyYWIgYWxsIHBvaW50ZXIgZXZlbnRzCi0tICAgICAgICBzdGF0dXMgPSBw b2ludGVyLmdyYWIoZ2V0X3dpbmRvdygpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdkay5HcmFiT3duZXJzaGlwLk5PTkUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dHJ1ZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGsuRXZlbnRNYXNrLkJVVFRP Tl9QUkVTU19NQVNLIHwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGsuRXZlbnRN YXNrLkJVVFRPTl9SRUxFQVNFX01BU0ssCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bnVsbCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGsuQ1VSUkVOVF9USU1FKTsK LS0gICAgICAgIGlmIChzdGF0dXMgIT0gR2RrLkdyYWJTdGF0dXMuU1VDQ0VTUykKLS0gICAgICAg ICAgICB3YXJuaW5nKCJHcmFiIHBvaW50ZXIgZmFpbGVkISBzdGF0dXMgPSAlZCIsIHN0YXR1cyk7 Ci0rICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgIC8vIEdyYWIgYWxsIHBvaW50ZXIgZXZl bnRzCi0rICAgICAgICAgICAgc3RhdHVzID0gcG9pbnRlci5ncmFiKGdldF93aW5kb3coKSwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrLkdyYWJPd25lcnNoaXAuTk9ORSwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR2RrLkV2ZW50TWFzay5CVVRUT05fUFJFU1NfTUFTSyB8Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdkay5FdmVudE1hc2suQlVUVE9OX1JF TEVBU0VfTUFTSywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrLkNVUlJFTlRfVElNRSk7Ci0rICAg ICAgICAgICAgaWYgKHN0YXR1cyAhPSBHZGsuR3JhYlN0YXR1cy5TVUNDRVNTKQotKyAgICAgICAg ICAgICAgICB3YXJuaW5nKCJHcmFiIHBvaW50ZXIgZmFpbGVkISBzdGF0dXMgPSAlZCIsIHN0YXR1 cyk7Ci0rICAgICAgICB9Ci0gI2VuZGlmCiAgCi0tICAgICAgICAvLyBQcm9iYWJseSB3ZSBjYW4g ZGVsZXRlIG1fcG9wdXBfZGVsYXlfdGltZSBpbiAxLjYKLS0gICAgICAgIHBvaW50ZXIuZ2V0X3Bv c2l0aW9uX2RvdWJsZShudWxsLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG91dCBtX21vdXNlX2luaXRfeCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvdXQgbV9tb3VzZV9pbml0X3kpOwotLSAgICAgICAgbV9tb3VzZV9tb3ZlZCA9IGZhbHNlOwog KyAgICAgICAgLyogRml4IFJIQlogIzE3NzEyMzggYXNzZXJ0KG1fbG9vcCA9PSBudWxsKQogKyAg ICAgICAgICogR3JhYmJpbmcga2V5Ym9hcmQgY2FuIGJlIGZhaWxlZCB3aGVuIHRoZSBzZWNvbmQg U3VwZXItZSBpcyB0eXBlZAogKyAgICAgICAgICogYmVmb3JlIFN3aXRjaGVyIGRpYWxvZyBpcyBm b2N1c2VkLiBBbmQgbV9sb29wIGNvdWxkIG5vdCBiZSByZWxlYXNlZApAQCAtNjIzLDcgKzU5MSw2 IEBAIGluZGV4IDI2YmRlZDk5Li4yMWVkZTdiZSAxMDA2NDQKICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb3V0IG1fbW91c2VfaW5pdF95KTsKICsgICAgICAgICAgICBt X21vdXNlX21vdmVkID0gZmFsc2U7CiAgCi0gCiAtICAgICAgICBtX2xvb3AgPSBuZXcgR0xpYi5N YWluTG9vcCgpOwogLSAgICAgICAgbV9sb29wLnJ1bigpOwogLSAgICAgICAgbV9sb29wID0gbnVs bDsKQEAgLTYzMiw4ICs1OTksOCBAQCBpbmRleCAyNmJkZWQ5OS4uMjFlZGU3YmUgMTAwNjQ0CiAr ICAgICAgICAgICAgbV9sb29wID0gbnVsbDsKICsgICAgICAgIH0KICAKLSAjaWYgVkFMQV8wXzM0 CiAgICAgICAgICBzZWF0LnVuZ3JhYigpOworIAogLS0gCiAyLjQ1LjAKIAoKZGlmZiAtLWdpdCBh L2lidXMtSEVBRC5wYXRjaCBiL2lidXMtSEVBRC5wYXRjaAppbmRleCBlNjlkZTI5Li43NWUzYjQ2 IDEwMDY0NAotLS0gYS9pYnVzLUhFQUQucGF0Y2gKKysrIGIvaWJ1cy1IRUFELnBhdGNoCkBAIC0w LDAgKzEsNTA5MiBAQAorRnJvbSBkMGFkNGU2ZTUxOTQzOWYwMzRkMDhmZDY1MzE0MDMwMjdiZDdm YmRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWpp d2FyYTFAZ21haWwuY29tPgorRGF0ZTogRnJpLCAxOCBBcHIgMjAyNSAxNjozNjo0MyArMDkwMAor U3ViamVjdDogW1BBVENIXSB1aS9ndGszOiBGaXggRXhpdCBhbmQgUmVzdGFydCBtZW51IGl0ZW1z IGluIFdheWxhbmQgaW5wdXQtbWV0aG9kIFYyCisKKy0tLQorIHRvb2xzL21haW4udmFsYSAgICB8 ICAxICsKKyB1aS9ndGszL3BhbmVsLnZhbGEgfCAxOCArKysrKysrLS0tLS0tLS0tLS0KKyAyIGZp bGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1n aXQgYS90b29scy9tYWluLnZhbGEgYi90b29scy9tYWluLnZhbGEKK2luZGV4IDRiNWJjZmYyLi5h N2M2ZDk1ZCAxMDA2NDQKKy0tLSBhL3Rvb2xzL21haW4udmFsYQorKysrIGIvdG9vbHMvbWFpbi52 YWxhCitAQCAtMjc3LDYgKzI3Nyw3IEBAIGJvb2wgc3RhcnRfZGFlbW9uX2luX3dheWxhbmQoYm9v bCAgICAgcmVzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXJlY3RseS5cbiIp OworICAgICAgICAgfQorICAgICAgICAgYnVzID0gbnVsbDsKKysgICAgICAgIFBvc2l4LnNsZWVw KDMpOworICAgICB9IGVsc2UgaWYgKGJ1cyAhPSBudWxsKSB7CisgICAgICAgICBzdGRlcnIucHJp bnRmKCIlc1xuIi5wcmludGYoXygiSUJ1cyBpcyBydW5uaW5nLiIpKSk7CisgICAgICAgICBQb3Np eC5leGl0KFBvc2l4LkVYSVRfRkFJTFVSRSk7CitkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9wYW5lbC52 YWxhIGIvdWkvZ3RrMy9wYW5lbC52YWxhCitpbmRleCBlNDJhMTY2ZS4uYWI1MTRiYWIgMTAwNjQ0 CistLS0gYS91aS9ndGszL3BhbmVsLnZhbGEKKysrKyBiL3VpL2d0azMvcGFuZWwudmFsYQorQEAg LTE1MjQsMjUgKzE1MjQsMjEgQEAgY2xhc3MgUGFuZWwgOiBJQnVzLlBhbmVsU2VydmljZSB7Cisg ICAgICAgICAgICAgc3RyaW5nW10gX2FyZ3MgPSB7fTsKKyAgICAgICAgICAgICBfYXJncyArPSBi aW5hcnk7CisgICAgICAgICAgICAgX2FyZ3MgKz0gYXJnczsKKy0gICAgICAgICAgICBpZiAoYXJn cyA9PSAiZXhpdCIgfHwgYXJncyA9PSAicmVzdGFydCIpCistICAgICAgICAgICAgICAgIF9hcmdz ICs9ICItLXR5cGU9a2RlLXdheWxhbmQiOworLSAgICAgICAgICAgIHN0cmluZz8gc3RhbmRhcmRf b3V0ID0gbnVsbDsKKy0gICAgICAgICAgICBzdHJpbmc/IHN0YW5kYXJkX2Vycm9yID0gbnVsbDsK KysgICAgICAgICAgICAvLyBGSVhNRTogc3Rkb3V0ICYgc3RkZXJyIGNhdXNlcyBhIGRlYWQgbG9j ayB3aXRoIGBpYnVzIHJlc3RhcnRgCisrICAgICAgICAgICAgLy8gaW4gV2F5bGFuZCBpbnB1dC1t ZXRob2QgVjIuCisgICAgICAgICAgICAgR0xpYi5Qcm9jZXNzLnNwYXduX3N5bmMobnVsbCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYXJncywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHTGliLkVudmlyb24uZ2V0KCksCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHTGliLlNwYXduRmxhZ3MuU0VBUkNIX1BBVEhfRlJPTV9FTlZQLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBudWxsLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCBzdGFuZGFy ZF9vdXQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IHN0YW5kYXJk X2Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwpOworLSAg ICAgICAgICAgIGlmIChzdGFuZGFyZF9vdXQgIT0gbnVsbCkKKy0gICAgICAgICAgICAgICAgcHJp bnQoc3RhbmRhcmRfb3V0KTsKKy0gICAgICAgICAgICBpZiAoc3RhbmRhcmRfZXJyb3IgIT0gbnVs bCkKKy0gICAgICAgICAgICAgICAgd2FybmluZygiRXhlY3V0ZSAlcyBmYWlsZWQhICVzIiwgYmlu YXJ5LCBzdGFuZGFyZF9lcnJvcik7CisgICAgICAgICB9IGNhdGNoIChHTGliLlNwYXduRXJyb3Ig ZSkgeworICAgICAgICAgICAgIHdhcm5pbmcoIkV4ZWN1dGUgJXMgZmFpbGVkISAlcyIsIGJpbmFy eSwgZS5tZXNzYWdlKTsKKyAgICAgICAgIH0KKysgICAgICAgIElCdXMucXVpdCgpOworKyAgICAg ICAgR3RrLm1haW5fcXVpdCgpOworICAgICB9CisgCisgICAgIHByaXZhdGUgdm9pZCBhcHBlbmRf cHJlZmVyZW5jZXNfbWVudShHdGsuTWVudSBtZW51KSB7CistLSAKKzIuNDkuMAorCitGcm9tIGI0 ZjUxYjY5ZjAzYjE4ZmFkZjRiYmQ4MmFiYzdiN2U5MmZhZTQ0ZjAgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCitGcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CitEYXRl OiBTYXQsIDMgTWF5IDIwMjUgMTE6NTQ6MjEgKzA5MDAKK1N1YmplY3Q6IFtQQVRDSF0gYnVzL2lu cHV0Y29udGV4dDogRnJlZSBkYXRhIGluIGJ1c19pbnB1dF9jb250ZXh0X2ZvcndhcmRfcHJvY2Vz c19rZXlfZXZlbnQKKworU2hvdWxkIGZyZWUgZGF0YSBpbiBjYXNlIG9mIG5vIGZvY3VzZXMgYW5k IGVuZ2luZXMuCistLS0KKyBidXMvaW5wdXRjb250ZXh0LmMgfCA2ICsrKystLQorIDEgZmlsZSBj aGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9i dXMvaW5wdXRjb250ZXh0LmMgYi9idXMvaW5wdXRjb250ZXh0LmMKK2luZGV4IGM1NTFmYmM4Li40 MWI0NzU0MCAxMDA2NDQKKy0tLSBhL2J1cy9pbnB1dGNvbnRleHQuYworKysrIGIvYnVzL2lucHV0 Y29udGV4dC5jCitAQCAtMiw4ICsyLDggQEAKKyAvKiB2aW06c2V0IGV0IHN0cz00OiAqLworIC8q IGlidXMgLSBUaGUgSW5wdXQgQnVzCisgICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTQgUGVuZyBI dWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+CistICogQ29weXJpZ2h0IChDKSAyMDE1LTIw MjQgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CistICogQ29weXJp Z2h0IChDKSAyMDA4LTIwMjQgUmVkIEhhdCwgSW5jLgorKyAqIENvcHlyaWdodCAoQykgMjAxNS0y MDI1IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgorKyAqIENvcHly aWdodCAoQykgMjAwOC0yMDI1IFJlZCBIYXQsIEluYy4KKyAgKgorICAqIFRoaXMgbGlicmFyeSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgKiBtb2Rp ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCitA QCAtMzU2NCw1ICszNTY0LDcgQEAgYnVzX2lucHV0X2NvbnRleHRfZm9yd2FyZF9wcm9jZXNzX2tl eV9ldmVudCAoQnVzSW5wdXRDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAoR0Fz eW5jUmVhZHlDYWxsYmFjaykKKyAgICAgICAgICAgICAgICAgICAgICAgICBfZm9yd2FyZF9wcm9j ZXNzX2tleV9ldmVudF9yZXBseV9jYiwKKyAgICAgICAgICAgICAgICAgZGF0YSk7CisrICAgIH0g ZWxzZSB7CisrICAgICAgICBnX3NsaWNlX2ZyZWUgKFByb2Nlc3NLZXlFdmVudERhdGEsIGRhdGEp OworICAgICB9CisgfQorLS0gCisyLjQ5LjAKKworRnJvbSBlNzIyMmRiOWI3MmRmZDA4ZDdlZjFh MDNkNWI2YmFhMDQ2ZDAyNWYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogZnVqaXdh cmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgorRGF0ZTogVGh1LCAyMiBNYXkgMjAyNSAy MzoyMzo0OCArMDkwMAorU3ViamVjdDogW1BBVENIXSB1aS9ndGszOiBVcGRhdGUgUGxhc21hIHNl dHVwIG1lc3NhZ2UKKworQlVHPWh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvaXNzdWVzLzI3 NTMKKy0tLQorIHVpL2d0azMvcGFuZWwudmFsYSB8IDExICsrKysrLS0tLS0tCisgMSBmaWxlIGNo YW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Vp L2d0azMvcGFuZWwudmFsYSBiL3VpL2d0azMvcGFuZWwudmFsYQoraW5kZXggYWI1MTRiYWIuLjM2 MzgzNGU5IDEwMDY0NAorLS0tIGEvdWkvZ3RrMy9wYW5lbC52YWxhCisrKysgYi91aS9ndGszL3Bh bmVsLnZhbGEKK0BAIC05MjYsMTIgKzkyNiwxMSBAQCBjbGFzcyBQYW5lbCA6IElCdXMuUGFuZWxT ZXJ2aWNlIHsKKyAgICAgICAgICAgICB2YXIgZm9ybWF0ID0KKyAgICAgICAgICAgICAgICAgICAg IF8oIklCdXMgc2hvdWxkIGJlIGNhbGxlZCBmcm9tIHRoZSBkZXNrdG9wIHNlc3Npb24gaW4gIiAr CisgICAgICAgICAgICAgICAgICAgICAgICIlcy4gRm9yIEtERSwgeW91IGNhbiBsYXVuY2ggJyVz JyAiICsKKy0gICAgICAgICAgICAgICAgICAgICAgInV0aWxpdHkgYW5kIGdvIHRvIFwiSW5wdXQg RGV2aWNlc1wiIC0+ICIgKworLSAgICAgICAgICAgICAgICAgICAgICAiXCJWaXJ0dWFsIEtleWJv YXJkXCIgc2VjdGlvbiBhbmQgc2VsZWN0ICIgKworKyAgICAgICAgICAgICAgICAgICAgICAidXRp bGl0eSBhbmQgZ28gdG8gXCJJbnB1dCAmIE91dHB1dFwiIC0+IFwiS2V5Ym9hcmRcIiAiICsKKysg ICAgICAgICAgICAgICAgICAgICAgIi0+IFwiVmlydHVhbCBLZXlib2FyZFwiIHNlY3Rpb24gYW5k IHNlbGVjdCAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgIlwiJXNcIiBpY29uIGFuZCBjbGlj ayBcIkFwcGx5XCIgYnV0dG9uIHRvICIgKworICAgICAgICAgICAgICAgICAgICAgICAiY29uZmln dXJlIElCdXMgaW4gJXMuIEZvciBvdGhlciBkZXNrdG9wICIgKworLSAgICAgICAgICAgICAgICAg ICAgICAic2Vzc2lvbnMsIHlvdSBjYW4gY29weSB0aGUgJ0V4ZWM9JyBsaW5lIGluICVzIGZpbGUg IiArCistICAgICAgICAgICAgICAgICAgICAgICJ0byBhIGNvbmZpZ3VyYXRpb24gZmlsZSBvZiB0 aGUgc2Vzc2lvbi4gIiArCisrICAgICAgICAgICAgICAgICAgICAgICJzZXNzaW9ucywgeW91IGNh biBydW4gXCIlc1wiIGNvbW1hbmQuICIgKworICAgICAgICAgICAgICAgICAgICAgICAiUGxlYXNl IHJlZmVyIGVhY2ggZG9jdW1lbnQgYWJvdXQgdGhlIFwiV2F5bGFuZCAiICsKKyAgICAgICAgICAg ICAgICAgICAgICAgImlucHV0IG1ldGhvZFwiIGNvbmZpZ3VyYXRpb24uIEJlZm9yZSB5b3UgY29u ZmlndXJlICIgKworICAgICAgICAgICAgICAgICAgICAgICAidGhlIFwiV2F5bGFuZCBpbnB1dCBt ZXRob2RcIiwgeW91IHNob3VsZCBtYWtlIHN1cmUgIiArCitAQCAtOTM5LDEwICs5MzgsMTAgQEAg Y2xhc3MgUGFuZWwgOiBJQnVzLlBhbmVsU2VydmljZSB7CisgICAgICAgICAgICAgICAgICAgICAg ICJ2YXJpYWJsZXMgYXJlIHVuc2V0IGluIHRoZSBkZXNrdG9wIHNlc3Npb24uIik7CisgICAgICAg ICAgICAgICAgIG1lc3NhZ2UgPSBmb3JtYXQucHJpbnRmKAorICAgICAgICAgICAgICAgICAgICAg ICAgICJXYXlsYW5kIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAic3lzdGVtc2V0dGluZ3M1 IiwKKysgICAgICAgICAgICAgICAgICAgICAgICAic3lzdGVtc2V0dGluZ3MiLAorICAgICAgICAg ICAgICAgICAgICAgICAgICJJQnVzIFdheWxhbmQiLAorICAgICAgICAgICAgICAgICAgICAgICAg ICJXYXlsYW5kIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAib3JnLmZyZWVkZXNrdG9wLklC dXMuUGFuZWwuV2F5bGFuZC5HdGszLmRlc2t0b3AiKTsKKysgICAgICAgICAgICAgICAgICAgICAg ICAiaWJ1cyBzdGFydCIpOworICAgICAgICAgfSBlbHNlIGlmIChtX2lzX3dheWxhbmQgJiYgbV9p c193YXlsYW5kX2ltICYmICFpc19nbm9tZSgpKSB7CisgICAgICAgICAgICAgaWYgKEVudmlyb25t ZW50LmdldF92YXJpYWJsZSgiUVRfSU1fTU9EVUxFIikgPT0gImlidXMiKSB7CisgICAgICAgICAg ICAgICAgIHZhciBmb3JtYXQgPQorLS0gCisyLjQ5LjAKKworRnJvbSA3ZmViNTdhODMzMGQwOTY5 ZjgyYzc0MmEyYzFjMGFlYjEyMDk3MWZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTog bWF0aXdhcmkgPG1hdGl3YXJpQHJlZGhhdC5jb20+CitEYXRlOiBUdWUsIDI5IEFwciAyMDI1IDEy OjUyOjI1ICswNTMwCitTdWJqZWN0OiBbUEFUQ0hdIHNyYy9pYnVzb2JzZXJ2ZWRwYXRoOiBGcmVl IElCdXNPYnNlcnZlZFBhdGggb2JqZWN0cyBkdXJpbmcgdHJhdmVyc2FsCisKK0JVRz1odHRwczov L2dpdGh1Yi5jb20vaWJ1cy9pYnVzL2lzc3Vlcy8yNzU1CistLS0KKyBzcmMvaWJ1c29ic2VydmVk cGF0aC5jIHwgOSArKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAx IGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvaWJ1c29ic2VydmVkcGF0aC5jIGIvc3Jj L2lidXNvYnNlcnZlZHBhdGguYworaW5kZXggNDIxOTI0MzEuLjIyNGJmYjhiIDEwMDY0NAorLS0t IGEvc3JjL2lidXNvYnNlcnZlZHBhdGguYworKysrIGIvc3JjL2lidXNvYnNlcnZlZHBhdGguYwor QEAgLTc5LDcgKzc5LDEyIEBAIGlidXNfb2JzZXJ2ZWRfcGF0aF9pbml0IChJQnVzT2JzZXJ2ZWRQ YXRoICpwYXRoKQorIHN0YXRpYyB2b2lkCisgaWJ1c19vYnNlcnZlZF9wYXRoX2Rlc3Ryb3kgKElC dXNPYnNlcnZlZFBhdGggKnBhdGgpCisgeworKyAgICBJQnVzT2JzZXJ2ZWRQYXRoUHJpdmF0ZSAq cHJpdjsKKyAgICAgZ19mcmVlIChwYXRoLT5wYXRoKTsKKysgICAgaWYgKElCVVNfSVNfT0JTRVJW RURfUEFUSCAocGF0aCkpIHsKKysgICAgICAgIHByaXYgPSBJQlVTX09CU0VSVkVEX1BBVEhfR0VU X1BSSVZBVEUgKHBhdGgpOworKyAgICAgICAgZ19jbGVhcl9wb2ludGVyICgmcHJpdi0+ZmlsZV9o YXNoX2xpc3QsIGdfZnJlZSk7CisrICAgIH0KKyAgICAgSUJVU19PQkpFQ1RfQ0xBU1MgKGlidXNf b2JzZXJ2ZWRfcGF0aF9wYXJlbnRfY2xhc3MpLT5kZXN0cm95IChJQlVTX09CSkVDVCAocGF0aCkp OworIH0KKyAKK0BAIC0zNDksNiArMzU0LDggQEAgaWJ1c19vYnNlcnZlZF9wYXRoX3RyYXZlcnNl IChJQnVzT2JzZXJ2ZWRQYXRoICpwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaWJ1c19vYnNlcnZlZF9wYXRoX3RyYXZlcnNlIChzdWIsIGRpcl9vbmx5KSk7CisgICAg ICAgICB9IGVsc2UgaWYgKHN1Yi0+aXNfZXhpc3QgJiYgIWRpcl9vbmx5KSB7CisgICAgICAgICAg ICAgcGF0aHMgPSBnX2xpc3RfYXBwZW5kIChwYXRocywgc3ViKTsKKysgICAgICAgIH0gZWxzZSB7 CisrICAgICAgICAgICAgZ19vYmplY3RfdW5yZWYgKHN1Yik7CisgICAgICAgICB9CisgICAgIH0K KyAgICAgZ19kaXJfY2xvc2UgKGRpcik7CitAQCAtNTEzLDcgKzUyMCw3IEBAIGlidXNfb2JzZXJ2 ZWRfcGF0aF9uZXcgKGNvbnN0IGdjaGFyICpwYXRoLAorICAgICAgICAgcHJpdi0+ZmlsZV9oYXNo X2xpc3RbaSArIDFdID0gMDsKKyAgICAgICAgICsraTsKKyAgICAgfQorLSAgICBnX2xpc3RfZnJl ZV9mdWxsIChmaWxlX2xpc3QsIChHRGVzdHJveU5vdGlmeSlpYnVzX29ic2VydmVkX3BhdGhfZGVz dHJveSk7CisrICAgIGdfbGlzdF9mcmVlX2Z1bGwgKGZpbGVfbGlzdCwgKEdEZXN0cm95Tm90aWZ5 KWdfb2JqZWN0X3VucmVmKTsKKyAKKyAgICAgaWYgKGZpbGxfc3RhdCkKKyAgICAgICAgIGlidXNf b2JzZXJ2ZWRfcGF0aF9maWxsX3N0YXQgKG9wKTsKKy0tIAorMi40OS4wCisKK0Zyb20gYzVkOThm OThlY2M5OGY4YzcyNmI1ZDk2MzE0NjQzMDUzMDZjOGZiMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKK0Zyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KK0RhdGU6IFN1 biwgMjUgTWF5IDIwMjUgMTk6MDg6MjQgKzA5MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzNdIHVpL2d0 azM6IERlbGV0ZSBWYWxhIGRlcHJlY2F0ZWQgQVBJcyBiZWZvcmUgMC4zNAorCitWYWxhIDAuMzQg aGFzIGJlZW4gYXZhaWxhYmxlIHNpbmNlIDIwMTggYW5kIG5vdyB0aGUgZGVwcmVjYXRlZCBBUElz CitjYW4gYmUgZGVsZXRlZCBzYWZlbHkgZm9yIDUgeWVhcnMuCisKK0JVRz1odHRwczovL2dpdGh1 Yi5jb20vaWJ1cy9pYnVzL3B1bGwvMjc2MQorLS0tCisgdWkvZ3RrMy9iaW5kaW5nY29tbW9uLnZh bGEgIHwgMTEgKy0tLS0tCisgdWkvZ3RrMy9jYW5kaWRhdGVwYW5lbC52YWxhIHwgIDcgLS0tLQor IHVpL2d0azMvZW1vamllci52YWxhICAgICAgICB8IDM0IC0tLS0tLS0tLS0tLS0tLS0KKyB1aS9n dGszL3Byb3BlcnR5cGFuZWwudmFsYSAgfCA2MSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIHVpL2d0azMvc3dpdGNoZXIudmFsYSAgICAgICB8IDc4IC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyA1IGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMTg5 IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9iaW5kaW5nY29tbW9uLnZhbGEg Yi91aS9ndGszL2JpbmRpbmdjb21tb24udmFsYQoraW5kZXggOGMzMzI1NDIuLjcyN2UxMjU3IDEw MDY0NAorLS0tIGEvdWkvZ3RrMy9iaW5kaW5nY29tbW9uLnZhbGEKKysrKyBiL3VpL2d0azMvYmlu ZGluZ2NvbW1vbi52YWxhCitAQCAtNzYsMTcgKzc2LDEwIEBAIGNsYXNzIEJpbmRpbmdDb21tb24g eworICAgICAgICAgICAgICAgICBHZGsuTW9kaWZpZXJUeXBlLkhZUEVSX01BU0sgfAorICAgICAg ICAgICAgICAgICBHZGsuTW9kaWZpZXJUeXBlLk1FVEFfTUFTSyk7CisgICAgICAgICBpZiAoKHN3 aXRjaF9tb2RpZmllcnMgJiBWSVJUVUFMX01PRElGSUVSUykgIT0gMCkgeworLSAgICAgICAgLy8g d29ya2Fyb3VuZCBhIGJ1ZyBpbiBnZGsgdmFwaSB2YWxhID4gMC4xOAorLSAgICAgICAgLy8gaHR0 cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTY3NzU1OQorLSNpZiBWQUxB XzBfMTgKKysgICAgICAgICAgICAvLyB3b3JrYXJvdW5kIGEgYnVnIGluIGdkayB2YXBpIHZhbGEg PiAwLjE4CisrICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19i dWcuY2dpP2lkPTY3NzU1OQorICAgICAgICAgICAgIEdkay5LZXltYXAuZ2V0X2Zvcl9kaXNwbGF5 KEdkay5EaXNwbGF5LmdldF9kZWZhdWx0KCkKKyAgICAgICAgICAgICAgICAgICAgICkubWFwX3Zp cnR1YWxfbW9kaWZpZXJzKHJlZiBzd2l0Y2hfbW9kaWZpZXJzKTsKKy0jZWxzZQorLSAgICAgICAg ICAgIGlmICgoc3dpdGNoX21vZGlmaWVycyAmIEdkay5Nb2RpZmllclR5cGUuU1VQRVJfTUFTSykg IT0gMCkKKy0gICAgICAgICAgICAgICAgc3dpdGNoX21vZGlmaWVycyB8PSBHZGsuTW9kaWZpZXJU eXBlLk1PRDRfTUFTSzsKKy0gICAgICAgICAgICBpZiAoKHN3aXRjaF9tb2RpZmllcnMgJiBHZGsu TW9kaWZpZXJUeXBlLkhZUEVSX01BU0spICE9IDApCistICAgICAgICAgICAgICAgIHN3aXRjaF9t b2RpZmllcnMgfD0gR2RrLk1vZGlmaWVyVHlwZS5NT0Q0X01BU0s7CistI2VuZGlmCisgICAgICAg ICAgICAgc3dpdGNoX21vZGlmaWVycyAmPSB+VklSVFVBTF9NT0RJRklFUlM7CisgICAgICAgICB9 CisgCitkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9jYW5kaWRhdGVwYW5lbC52YWxhIGIvdWkvZ3RrMy9j YW5kaWRhdGVwYW5lbC52YWxhCitpbmRleCA1YmE4Y2YzNi4uYWExYTM0Y2UgMTAwNjQ0CistLS0g YS91aS9ndGszL2NhbmRpZGF0ZXBhbmVsLnZhbGEKKysrKyBiL3VpL2d0azMvY2FuZGlkYXRlcGFu ZWwudmFsYQorQEAgLTUwOCwxNyArNTA4LDEwIEBAIHB1YmxpYyBjbGFzcyBDYW5kaWRhdGVQYW5l bCA6IEd0ay5Cb3h7CisgICAgICAgICAvLyBVc2UgZ2V0X21vbml0b3JfZ2VvbWV0cnkoKSBpbnN0 ZWFkIG9mIGdldF9tb25pdG9yX2FyZWEoKS4KKyAgICAgICAgIC8vIGdldF9tb25pdG9yX2FyZWEo KSBleGNsdWRlcyBkb2NrcywgYnV0IHRoZSBsb29rdXAgd2luZG93IHNob3VsZCBiZQorICAgICAg ICAgLy8gc2hvd24gb3ZlciB0aGVtLgorLSNpZiBWQUxBXzBfMzQKKyAgICAgICAgIEdkay5Nb25p dG9yIG1vbml0b3IgPSB3aW5kb3cuZ2V0X2Rpc3BsYXkoKS5nZXRfbW9uaXRvcl9hdF9wb2ludCgK KyAgICAgICAgICAgICAgICAgbV9jdXJzb3JfbG9jYXRpb24ueCwKKyAgICAgICAgICAgICAgICAg bV9jdXJzb3JfbG9jYXRpb24ueSk7CisgICAgICAgICBtb25pdG9yX2FyZWEgPSBtb25pdG9yLmdl dF9nZW9tZXRyeSgpOworLSNlbHNlCistICAgICAgICBHZGsuU2NyZWVuIHNjcmVlbiA9IEdkay5T Y3JlZW4uZ2V0X2RlZmF1bHQoKTsKKy0gICAgICAgIGludCBtb25pdG9yX251bSA9IHNjcmVlbi5n ZXRfbW9uaXRvcl9hdF9wb2ludChtX2N1cnNvcl9sb2NhdGlvbi54LAorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY3Vyc29yX2xvY2F0aW9u LnkpOworLSAgICAgICAgc2NyZWVuLmdldF9tb25pdG9yX2dlb21ldHJ5KG1vbml0b3JfbnVtLCBv dXQgbW9uaXRvcl9hcmVhKTsKKy0jZW5kaWYKKyAgICAgICAgIHJldHVybiBtb25pdG9yX2FyZWE7 CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS91aS9ndGszL2Vtb2ppZXIudmFsYSBiL3VpL2d0azMv ZW1vamllci52YWxhCitpbmRleCA1MTlkYTNlMi4uMTc3MGRlMmYgMTAwNjQ0CistLS0gYS91aS9n dGszL2Vtb2ppZXIudmFsYQorKysrIGIvdWkvZ3RrMy9lbW9qaWVyLnZhbGEKK0BAIC0yOSwxMSAr MjksNyBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cg eworICAgICAgICAgICAgICAgICB2YWxpZ24gOiBHdGsuQWxpZ24uRklMTAorICAgICAgICAgICAg ICk7CisgICAgICAgICAgICAgdGhpcy5tb3Rpb25fbm90aWZ5X2V2ZW50LmNvbm5lY3QoKGUpID0+ IHsKKy0jaWYgVkFMQV8wXzI0CisgICAgICAgICAgICAgICAgIEdkay5FdmVudE1vdGlvbiBwZSA9 IGU7CistI2Vsc2UKKy0gICAgICAgICAgICAgICAgR2RrLkV2ZW50TW90aW9uICpwZSA9ICZlOwor LSNlbmRpZgorICAgICAgICAgICAgICAgICBpZiAobV9tb3VzZV94ID09IHBlLnhfcm9vdCAmJiBt X21vdXNlX3kgPT0gcGUueV9yb290KQorICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl OworICAgICAgICAgICAgICAgICBtX21vdXNlX3ggPSBwZS54X3Jvb3Q7CitAQCAtMTUxNiwxMSAr MTUxMiw3IEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRv dyB7CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg IGlmIChtX2xvb2t1cF90YWJsZS5nZXRfY3Vyc29yX3BvcygpID09IGluZGV4KQorICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworLSNpZiBWQUxBXzBfMjQKKyAgICAgICAgICAgICAg ICAgR2RrLkV2ZW50TW90aW9uIHBlID0gZTsKKy0jZWxzZQorLSAgICAgICAgICAgICAgICBHZGsu RXZlbnRNb3Rpb24gKnBlID0gJmU7CistI2VuZGlmCisgICAgICAgICAgICAgICAgIGlmIChtX21v dXNlX3ggPT0gcGUueF9yb290ICYmIG1fbW91c2VfeSA9PSBwZS55X3Jvb3QpCisgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgIG1fbW91c2VfeCA9IHBl Lnhfcm9vdDsKK0BAIC0xOTY0LDE3ICsxOTU2LDEwIEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1vamll ciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAgICAgICAvLyBVc2UgZ2V0X21vbml0b3Jf Z2VvbWV0cnkoKSBpbnN0ZWFkIG9mIGdldF9tb25pdG9yX2FyZWEoKS4KKyAgICAgICAgIC8vIGdl dF9tb25pdG9yX2FyZWEoKSBleGNsdWRlcyBkb2NrcywgYnV0IHRoZSBsb29rdXAgd2luZG93IHNo b3VsZCBiZQorICAgICAgICAgLy8gc2hvd24gb3ZlciB0aGVtLgorLSNpZiBWQUxBXzBfMzQKKyAg ICAgICAgIEdkay5Nb25pdG9yIG1vbml0b3IgPSBHZGsuRGlzcGxheS5nZXRfZGVmYXVsdCgpLmdl dF9tb25pdG9yX2F0X3BvaW50KAorICAgICAgICAgICAgICAgICBtX2N1cnNvcl9sb2NhdGlvbi54 LAorICAgICAgICAgICAgICAgICBtX2N1cnNvcl9sb2NhdGlvbi55KTsKKyAgICAgICAgIG1vbml0 b3JfYXJlYSA9IG1vbml0b3IuZ2V0X2dlb21ldHJ5KCk7CistI2Vsc2UKKy0gICAgICAgIEdkay5T Y3JlZW4gc2NyZWVuID0gR2RrLlNjcmVlbi5nZXRfZGVmYXVsdCgpOworLSAgICAgICAgaW50IG1v bml0b3JfbnVtID0gc2NyZWVuLmdldF9tb25pdG9yX2F0X3BvaW50KG1fY3Vyc29yX2xvY2F0aW9u LngsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbV9jdXJzb3JfbG9jYXRpb24ueSk7CistICAgICAgICBzY3JlZW4uZ2V0X21vbml0b3JfZ2Vv bWV0cnkobW9uaXRvcl9udW0sIG91dCBtb25pdG9yX2FyZWEpOworLSNlbmRpZgorICAgICAgICAg cmV0dXJuIG1vbml0b3JfYXJlYTsKKyAgICAgfQorIAorQEAgLTIyNjgsMjQgKzIyNTMsMTIgQEAg cHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKKyAgICAg ICAgIHByZXNlbnRfY2VudHJhbGl6ZShldmVudCk7CisgCisgICAgICAgICBHZGsuRGV2aWNlIHBv aW50ZXI7CistI2lmIFZBTEFfMF8zNAorICAgICAgICAgR2RrLlNlYXQgc2VhdCA9IGV2ZW50Lmdl dF9zZWF0KCk7CisgICAgICAgICBpZiAoc2VhdCA9PSBudWxsKSB7CisgICAgICAgICAgICAgdmFy IGRpc3BsYXkgPSBnZXRfZGlzcGxheSgpOworICAgICAgICAgICAgIHNlYXQgPSBkaXNwbGF5Lmdl dF9kZWZhdWx0X3NlYXQoKTsKKyAgICAgICAgIH0KKyAgICAgICAgIHBvaW50ZXIgPSBzZWF0Lmdl dF9wb2ludGVyKCk7CistI2Vsc2UKKy0gICAgICAgIEdkay5EZXZpY2UgZGV2aWNlID0gZXZlbnQu Z2V0X2RldmljZSgpOworLSAgICAgICAgaWYgKGRldmljZSA9PSBudWxsKSB7CistICAgICAgICAg ICAgdmFyIGRpc3BsYXkgPSBnZXRfZGlzcGxheSgpOworLSAgICAgICAgICAgIGRldmljZSA9IGRp c3BsYXkubGlzdF9kZXZpY2VzKCkuZGF0YTsKKy0gICAgICAgIH0KKy0gICAgICAgIGlmIChkZXZp Y2UuZ2V0X3NvdXJjZSgpID09IEdkay5JbnB1dFNvdXJjZS5LRVlCT0FSRCkKKy0gICAgICAgICAg ICBwb2ludGVyID0gZGV2aWNlLmdldF9hc3NvY2lhdGVkX2RldmljZSgpOworLSAgICAgICAgZWxz ZQorLSAgICAgICAgICAgIHBvaW50ZXIgPSBkZXZpY2U7CistI2VuZGlmCisgICAgICAgICBwb2lu dGVyLmdldF9wb3NpdGlvbl9kb3VibGUobnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBvdXQgbV9tb3VzZV94LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG91dCBtX21vdXNlX3kpOworQEAgLTI1MjEsMTcgKzI0OTQsMTAgQEAgcHVibGljIGNs YXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKKyAgICAgICAgIGdldF9h bGxvY2F0aW9uKG91dCBhbGxvY2F0aW9uKTsKKyAgICAgICAgIEdkay5SZWN0YW5nbGUgbW9uaXRv cl9hcmVhOworICAgICAgICAgR2RrLlJlY3RhbmdsZSB3b3JrX2FyZWE7CistI2lmIFZBTEFfMF8z NAorICAgICAgICAgR2RrLkRpc3BsYXkgZGlzcGxheSA9IGdldF9kaXNwbGF5KCk7CisgICAgICAg ICBHZGsuTW9uaXRvciBtb25pdG9yID0gZGlzcGxheS5nZXRfbW9uaXRvcl9hdF93aW5kb3codGhp cy5nZXRfd2luZG93KCkpOworICAgICAgICAgbW9uaXRvcl9hcmVhID0gbW9uaXRvci5nZXRfZ2Vv bWV0cnkoKTsKKyAgICAgICAgIHdvcmtfYXJlYSA9IG1vbml0b3IuZ2V0X3dvcmthcmVhKCk7Cist I2Vsc2UKKy0gICAgICAgIEdkay5TY3JlZW4gc2NyZWVuID0gR2RrLlNjcmVlbi5nZXRfZGVmYXVs dCgpOworLSAgICAgICAgaW50IG1vbml0b3JfbnVtID0gc2NyZWVuLmdldF9tb25pdG9yX2F0X3dp bmRvdyh0aGlzLmdldF93aW5kb3coKSk7CistICAgICAgICBzY3JlZW4uZ2V0X21vbml0b3JfZ2Vv bWV0cnkobW9uaXRvcl9udW0sIG91dCBtb25pdG9yX2FyZWEpOworLSAgICAgICAgd29ya19hcmVh ID0gc2NyZWVuLmdldF9tb25pdG9yX3dvcmthcmVhKG1vbml0b3JfbnVtKTsKKy0jZW5kaWYKKyAg ICAgICAgIGludCB4ID0gKG1vbml0b3JfYXJlYS54ICsgbW9uaXRvcl9hcmVhLndpZHRoIC0gYWxs b2NhdGlvbi53aWR0aCkvMjsKKyAgICAgICAgIGludCB5ID0gKG1vbml0b3JfYXJlYS55ICsgbW9u aXRvcl9hcmVhLmhlaWdodAorICAgICAgICAgICAgICAgICAgLSBhbGxvY2F0aW9uLmhlaWdodCkv MjsKK2RpZmYgLS1naXQgYS91aS9ndGszL3Byb3BlcnR5cGFuZWwudmFsYSBiL3VpL2d0azMvcHJv cGVydHlwYW5lbC52YWxhCitpbmRleCAyMDczOWI5Yy4uZjFlY2Q3ZjcgMTAwNjQ0CistLS0gYS91 aS9ndGszL3Byb3BlcnR5cGFuZWwudmFsYQorKysrIGIvdWkvZ3RrMy9wcm9wZXJ0eXBhbmVsLnZh bGEKK0BAIC0zNTksMTUgKzM1OSwxMCBAQCBwdWJsaWMgY2xhc3MgUHJvcGVydHlQYW5lbCA6IEd0 ay5Cb3ggeworICAgICAgICAgbV90b3BsZXZlbC5nZXRfYWxsb2NhdGlvbihvdXQgYWxsb2NhdGlv bik7CisgCisgICAgICAgICBHZGsuUmVjdGFuZ2xlIG1vbml0b3JfYXJlYTsKKy0jaWYgVkFMQV8w XzM0CisgICAgICAgICAvLyBnZGtfc2NyZWVuX2dldF9tb25pdG9yX3dvcmthcmVhKCkgbm8gbG9u Z2VyIHJldHVybiB0aGUgY29ycmVjdAorICAgICAgICAgLy8gYXJlYSBmcm9tICJfTkVUX1dPUktB UkVBIiBhdG9tIGluIEdUSyAzLjIyCisgICAgICAgICBHZGsuTW9uaXRvciBtb25pdG9yID0gR2Rr LkRpc3BsYXkuZ2V0X2RlZmF1bHQoKS5nZXRfbW9uaXRvcigwKTsKKyAgICAgICAgIG1vbml0b3Jf YXJlYSA9IG1vbml0b3IuZ2V0X3dvcmthcmVhKCk7CistI2Vsc2UKKy0gICAgICAgIEdkay5TY3Jl ZW4gc2NyZWVuID0gR2RrLlNjcmVlbi5nZXRfZGVmYXVsdCgpOworLSAgICAgICAgbW9uaXRvcl9h cmVhID0gc2NyZWVuLmdldF9tb25pdG9yX3dvcmthcmVhKDApOworLSNlbmRpZgorICAgICAgICAg aW50IG1vbml0b3JfcmlnaHQgPSBtb25pdG9yX2FyZWEueCArIG1vbml0b3JfYXJlYS53aWR0aDsK KyAgICAgICAgIGludCBtb25pdG9yX2JvdHRvbSA9IG1vbml0b3JfYXJlYS55ICsgbW9uaXRvcl9h cmVhLmhlaWdodDsKKyAgICAgICAgIGludCB4LCB5OworQEAgLTUyNCwxNSArNTE5LDEwIEBAIHB1 YmxpYyBjbGFzcyBQcm9wTWVudSA6IEd0ay5NZW51LCBJUHJvcFRvb2xJdGVtIHsKKyAgICAgcHVi bGljIG5ldyB2b2lkIHBvcHVwKHVpbnQgICAgICAgYnV0dG9uLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDMyICAgICBhY3RpdmF0ZV90aW1lLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgR3RrLldpZGdldCB3aWRnZXQpIHsKKy0jaWYgVkFMQV8wXzM0CisgICAgICAgICBiYXNl LnBvcHVwX2F0X3dpZGdldCh3aWRnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH ZGsuR3Jhdml0eS5TT1VUSF9XRVNULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2Rr LkdyYXZpdHkuTk9SVEhfV0VTVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwp OworLSNlbHNlCistICAgICAgICBtX3BhcmVudF9idXR0b24gPSB3aWRnZXQ7CistICAgICAgICBi YXNlLnBvcHVwKG51bGwsIG51bGwsIG1lbnVfcG9zaXRpb24sIGJ1dHRvbiwgYWN0aXZhdGVfdGlt ZSk7CistI2VuZGlmCisgICAgIH0KKyAKKyAgICAgcHVibGljIG92ZXJyaWRlIHZvaWQgZGVzdHJv eSgpIHsKK0BAIC01OTAsNTcgKzU4MCw2IEBAIHB1YmxpYyBjbGFzcyBQcm9wTWVudSA6IEd0ay5N ZW51LCBJUHJvcFRvb2xJdGVtIHsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgIH0K Ky0KKy0jaWYgIVZBTEFfMF8zNAorLSAgICBwcml2YXRlIHZvaWQgbWVudV9wb3NpdGlvbihHdGsu TWVudSBtZW51LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgaW50ICB4LAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgaW50ICB5LAorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvdXQgYm9vbCBwdXNoX2luKSB7CistICAgICAgICB2YXIgYnV0 dG9uID0gbV9wYXJlbnRfYnV0dG9uOworLSAgICAgICAgdmFyIHNjcmVlbiA9IGJ1dHRvbi5nZXRf c2NyZWVuKCk7CistICAgICAgICB2YXIgbW9uaXRvciA9IHNjcmVlbi5nZXRfbW9uaXRvcl9hdF93 aW5kb3coYnV0dG9uLmdldF93aW5kb3coKSk7CistCistICAgICAgICBHZGsuUmVjdGFuZ2xlIG1v bml0b3JfbG9jYXRpb247CistICAgICAgICBzY3JlZW4uZ2V0X21vbml0b3JfZ2VvbWV0cnkobW9u aXRvciwgb3V0IG1vbml0b3JfbG9jYXRpb24pOworLQorLSAgICAgICAgYnV0dG9uLmdldF93aW5k b3coKS5nZXRfb3JpZ2luKG91dCB4LCBvdXQgeSk7CistCistICAgICAgICBHdGsuQWxsb2NhdGlv biBidXR0b25fYWxsb2NhdGlvbjsKKy0gICAgICAgIGJ1dHRvbi5nZXRfYWxsb2NhdGlvbihvdXQg YnV0dG9uX2FsbG9jYXRpb24pOworLQorLSAgICAgICAgeCArPSBidXR0b25fYWxsb2NhdGlvbi54 OworLSAgICAgICAgeSArPSBidXR0b25fYWxsb2NhdGlvbi55OworLQorLSAgICAgICAgaW50IG1l bnVfd2lkdGg7CistICAgICAgICBpbnQgbWVudV9oZWlnaHQ7CistICAgICAgICBtZW51LmdldF9z aXplX3JlcXVlc3Qob3V0IG1lbnVfd2lkdGgsIG91dCBtZW51X2hlaWdodCk7CistCistICAgICAg ICBpZiAoeCArIG1lbnVfd2lkdGggPj0gbW9uaXRvcl9sb2NhdGlvbi53aWR0aCkKKy0gICAgICAg ICAgICB4IC09IG1lbnVfd2lkdGggLSBidXR0b25fYWxsb2NhdGlvbi53aWR0aDsKKy0gICAgICAg IGVsc2UgaWYgKHggLSBtZW51X3dpZHRoIDw9IDApCistICAgICAgICAgICAgOworLSAgICAgICAg ZWxzZSB7CistICAgICAgICAgICAgaWYgKHggPD0gbW9uaXRvcl9sb2NhdGlvbi53aWR0aCAqIDMg LyA0KQorLSAgICAgICAgICAgICAgICA7CistICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAg ICAgICB4IC09IG1lbnVfd2lkdGggLSBidXR0b25fYWxsb2NhdGlvbi53aWR0aDsKKy0gICAgICAg IH0KKy0KKy0gICAgICAgIGlmICh5ICsgYnV0dG9uX2FsbG9jYXRpb24uaGVpZ2h0ICsgbWVudV93 aWR0aAorLSAgICAgICAgICAgICAgICA+PSBtb25pdG9yX2xvY2F0aW9uLmhlaWdodCkKKy0gICAg ICAgICAgICB5IC09IG1lbnVfaGVpZ2h0OworLSAgICAgICAgZWxzZSBpZiAoeSAtIG1lbnVfaGVp Z2h0IDw9IDApCistICAgICAgICAgICAgeSArPSBidXR0b25fYWxsb2NhdGlvbi5oZWlnaHQ7Cist ICAgICAgICBlbHNlIHsKKy0gICAgICAgICAgICBpZiAoeSA8PSBtb25pdG9yX2xvY2F0aW9uLmhl aWdodCAqIDMgLyA0KQorLSAgICAgICAgICAgICAgICB5ICs9IGJ1dHRvbl9hbGxvY2F0aW9uLmhl aWdodDsKKy0gICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgIHkgLT0gbWVudV9oZWln aHQ7CistICAgICAgICB9CistCistICAgICAgICBwdXNoX2luID0gZmFsc2U7CistICAgIH0KKy0j ZW5kaWYKKyB9CisgCisgcHVibGljIGNsYXNzIFByb3BUb29sQnV0dG9uIDogR3RrLlRvb2xCdXR0 b24sIElQcm9wVG9vbEl0ZW0geworZGlmZiAtLWdpdCBhL3VpL2d0azMvc3dpdGNoZXIudmFsYSBi L3VpL2d0azMvc3dpdGNoZXIudmFsYQoraW5kZXggOTlhMmZhMGIuLmQ0YTVmYTExIDEwMDY0NAor LS0tIGEvdWkvZ3RrMy9zd2l0Y2hlci52YWxhCisrKysgYi91aS9ndGszL3N3aXRjaGVyLnZhbGEK K0BAIC0yMzUsNyArMjM1LDYgQEAgY2xhc3MgU3dpdGNoZXIgOiBHdGsuV2luZG93IHsKKyAgICAg ICAgIH0KKyAKKyAgICAgICAgIEdkay5EZXZpY2UgcG9pbnRlcjsKKy0jaWYgVkFMQV8wXzM0Cisg ICAgICAgICBHZGsuU2VhdCBzZWF0ID0gZXZlbnQuZ2V0X3NlYXQoKTsKKyAgICAgICAgIGlmIChz ZWF0ID09IG51bGwpIHsKKyAgICAgICAgICAgICB2YXIgZGlzcGxheSA9IGdldF9kaXNwbGF5KCk7 CitAQCAtMjYyLDU0ICsyNjEsNiBAQCBjbGFzcyBTd2l0Y2hlciA6IEd0ay5XaW5kb3cgeworICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwpOworICAgICAgICAgaWYgKHN0YXR1cyAhPSBH ZGsuR3JhYlN0YXR1cy5TVUNDRVNTKQorICAgICAgICAgICAgIHdhcm5pbmcoIkdyYWIgcG9pbnRl ciBmYWlsZWQhIHN0YXR1cyA9ICVkIiwgc3RhdHVzKTsKKy0jZWxzZQorLSAgICAgICAgR2RrLkRl dmljZSBkZXZpY2UgPSBldmVudC5nZXRfZGV2aWNlKCk7CistICAgICAgICBpZiAoZGV2aWNlID09 IG51bGwpIHsKKy0gICAgICAgICAgICB2YXIgZGlzcGxheSA9IGdldF9kaXNwbGF5KCk7CistICAg ICAgICAgICAgdmFyIGRldmljZV9tYW5hZ2VyID0gZGlzcGxheS5nZXRfZGV2aWNlX21hbmFnZXIo KTsKKy0vKiBUaGUgbWFjcm8gVkFMQV9YX1kgc3VwcG9ydHMgZXZlbiBudW1iZXJzLgorLSAqIGh0 dHA6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS92YWxhL2NvbW1pdC8/aWQ9Mjk0YjM3NGFmNgorLSAq LworLSNpZiBWQUxBXzBfMTYKKy0gICAgICAgICAgICBkZXZpY2UgPSBkZXZpY2VfbWFuYWdlci5s aXN0X2RldmljZXMoR2RrLkRldmljZVR5cGUuTUFTVEVSKS5kYXRhOworLSNlbHNlCistICAgICAg ICAgICAgdW5vd25lZCBHTGliLkxpc3Q8R2RrLkRldmljZT4gZGV2aWNlcyA9CistICAgICAgICAg ICAgICAgICAgICBkZXZpY2VfbWFuYWdlci5saXN0X2RldmljZXMoR2RrLkRldmljZVR5cGUuTUFT VEVSKTsKKy0gICAgICAgICAgICBkZXZpY2UgPSBkZXZpY2VzLmRhdGE7CistI2VuZGlmCistICAg ICAgICB9CistCistICAgICAgICBHZGsuRGV2aWNlIGtleWJvYXJkOworLSAgICAgICAgaWYgKGRl dmljZS5nZXRfc291cmNlKCkgPT0gR2RrLklucHV0U291cmNlLktFWUJPQVJEKSB7CistICAgICAg ICAgICAga2V5Ym9hcmQgPSBkZXZpY2U7CistICAgICAgICAgICAgcG9pbnRlciA9IGRldmljZS5n ZXRfYXNzb2NpYXRlZF9kZXZpY2UoKTsKKy0gICAgICAgIH0gZWxzZSB7CistICAgICAgICAgICAg cG9pbnRlciA9IGRldmljZTsKKy0gICAgICAgICAgICBrZXlib2FyZCA9IGRldmljZS5nZXRfYXNz b2NpYXRlZF9kZXZpY2UoKTsKKy0gICAgICAgIH0KKy0KKy0gICAgICAgIEdkay5HcmFiU3RhdHVz IHN0YXR1czsKKy0gICAgICAgIC8vIEdyYWIgYWxsIGtleWJvYXJkIGV2ZW50cworLSAgICAgICAg c3RhdHVzID0ga2V5Ym9hcmQuZ3JhYihnZXRfd2luZG93KCksCistICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdkay5HcmFiT3duZXJzaGlwLk5PTkUsCistICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRydWUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdkay5F dmVudE1hc2suS0VZX1BSRVNTX01BU0sgfAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBHZGsuRXZlbnRNYXNrLktFWV9SRUxFQVNFX01BU0ssCistICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG51bGwsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdkay5DVVJS RU5UX1RJTUUpOworLSAgICAgICAgaWYgKHN0YXR1cyAhPSBHZGsuR3JhYlN0YXR1cy5TVUNDRVNT KQorLSAgICAgICAgICAgIHdhcm5pbmcoIkdyYWIga2V5Ym9hcmQgZmFpbGVkISBzdGF0dXMgPSAl ZCIsIHN0YXR1cyk7CistICAgICAgICAvLyBHcmFiIGFsbCBwb2ludGVyIGV2ZW50cworLSAgICAg ICAgc3RhdHVzID0gcG9pbnRlci5ncmFiKGdldF93aW5kb3coKSwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHZGsuR3JhYk93bmVyc2hpcC5OT05FLAorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRydWUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrLkV2 ZW50TWFzay5CVVRUT05fUFJFU1NfTUFTSyB8CistICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR2RrLkV2ZW50TWFzay5CVVRUT05fUkVMRUFTRV9NQVNLLAorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG51bGwsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrLkNV UlJFTlRfVElNRSk7CistICAgICAgICBpZiAoc3RhdHVzICE9IEdkay5HcmFiU3RhdHVzLlNVQ0NF U1MpCistICAgICAgICAgICAgd2FybmluZygiR3JhYiBwb2ludGVyIGZhaWxlZCEgc3RhdHVzID0g JWQiLCBzdGF0dXMpOworLSNlbmRpZgorIAorICAgICAgICAgLy8gUHJvYmFibHkgd2UgY2FuIGRl bGV0ZSBtX3BvcHVwX2RlbGF5X3RpbWUgaW4gMS42CisgICAgICAgICBwb2ludGVyLmdldF9wb3Np dGlvbl9kb3VibGUobnVsbCwKK0BAIC0zMjIsMTIgKzI3Myw3IEBAIGNsYXNzIFN3aXRjaGVyIDog R3RrLldpbmRvdyB7CisgICAgICAgICBtX2xvb3AucnVuKCk7CisgICAgICAgICBtX2xvb3AgPSBu dWxsOworIAorLSNpZiBWQUxBXzBfMzQKKyAgICAgICAgIHNlYXQudW5ncmFiKCk7CistI2Vsc2UK Ky0gICAgICAgIGtleWJvYXJkLnVuZ3JhYihHZGsuQ1VSUkVOVF9USU1FKTsKKy0gICAgICAgIHBv aW50ZXIudW5ncmFiKEdkay5DVVJSRU5UX1RJTUUpOworLSNlbmRpZgorIAorICAgICAgICAgaGlk ZSgpOworICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBzd2l0Y2hlciBpcyBoaWRkZW4gYmVmb3Jl IHJldHVybmluZyBmcm9tIHRoaXMgZnVuY3Rpb24uCitAQCAtMzcyLDExICszMTgsNyBAQCBjbGFz cyBTd2l0Y2hlciA6IEd0ay5XaW5kb3cgeworICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK KyAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICBidXR0b24ubW90aW9uX25vdGlmeV9ldmVu dC5jb25uZWN0KChlKSA9PiB7CistI2lmIFZBTEFfMF8yNAorICAgICAgICAgICAgICAgICBHZGsu RXZlbnRNb3Rpb24gcGUgPSBlOworLSNlbHNlCistICAgICAgICAgICAgICAgIEdkay5FdmVudE1v dGlvbiAqcGUgPSAmZTsKKy0jZW5kaWYKKyAgICAgICAgICAgICAgICAgaWYgKG1fc2VsZWN0ZWRf ZW5naW5lID09IGluZGV4KQorICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg ICAgICAgICAgICAgICBpZiAoIW1fbW91c2VfbW92ZWQgJiYKK0BAIC00MTQsMjEgKzM1NiwxMiBA QCBjbGFzcyBTd2l0Y2hlciA6IEd0ay5XaW5kb3cgeworIAorICAgICAgICAgR2RrLkRpc3BsYXkg ZGlzcGxheSA9IEdkay5EaXNwbGF5LmdldF9kZWZhdWx0KCk7CisgICAgICAgICBpbnQgc2NyZWVu X3dpZHRoID0gMDsKKy0jaWYgVkFMQV8wXzM0CisgICAgICAgICAvLyBkaXNwbGF5LmdldF9tb25p dG9yX2F0X3dpbmRvdygpIGlzIG51bGwgYmVjYXVzZSBvZiB1bnJlYWxpemVkIHdpbmRvdworICAg ICAgICAgR2RrLk1vbml0b3IgbW9uaXRvciA9IGRpc3BsYXkuZ2V0X3ByaW1hcnlfbW9uaXRvcigp OworICAgICAgICAgaWYgKG1vbml0b3IgPT0gbnVsbCkKKyAgICAgICAgICAgICByZXR1cm47Cisg ICAgICAgICBHZGsuUmVjdGFuZ2xlIGFyZWEgPSBtb25pdG9yLmdldF9nZW9tZXRyeSgpOworICAg ICAgICAgc2NyZWVuX3dpZHRoID0gYXJlYS53aWR0aDsKKy0jZWxzZQorLSAgICAgICAgR2RrLlNj cmVlbiBzY3JlZW4gPSAoZGlzcGxheSAhPSBudWxsKSA/CistICAgICAgICAgICAgICAgIGRpc3Bs YXkuZ2V0X2RlZmF1bHRfc2NyZWVuKCkgOiBudWxsOworLQorLSAgICAgICAgaWYgKHNjcmVlbiAh PSBudWxsKSB7CistICAgICAgICAgICAgc2NyZWVuX3dpZHRoID0gc2NyZWVuLmdldF93aWR0aCgp OworLSAgICAgICAgfQorLSNlbmRpZgorIAorICAgICAgICAgaWYgKHNjcmVlbl93aWR0aCA+IDAg JiYgbWF4X2xhYmVsX3dpZHRoID4gKHNjcmVlbl93aWR0aCAvIDQpKSB7CisgICAgICAgICAgICAg bWF4X2xhYmVsX3dpZHRoID0gc2NyZWVuX3dpZHRoIC8gNDsKK0BAIC01MDMsMTQgKzQzNiw3IEBA IGNsYXNzIFN3aXRjaGVyIDogR3RrLldpbmRvdyB7CisgICAgIHB1YmxpYyBvdmVycmlkZSBib29s IGtleV9wcmVzc19ldmVudChHZGsuRXZlbnRLZXkgZSkgeworICAgICAgICAgYm9vbCByZXR2YWwg PSBHZGsuRVZFTlRfU1RPUDsKKyAKKy0vKiBHZGsuRXZlbnRLZXkgaXMgY2hhbmdlZCB0byB0aGUg cG9pbnRlci4KKy0gKiBodHRwczovL2dpdC5nbm9tZS5vcmcvYnJvd3NlL3ZhbGEvY29tbWl0Lz9p ZD01OTg5NDJmMQorLSAqLworLSNpZiBWQUxBXzBfMjQKKyAgICAgICAgIEdkay5FdmVudEtleSBw ZSA9IGU7CistI2Vsc2UKKy0gICAgICAgIEdkay5FdmVudEtleSAqcGUgPSAmZTsKKy0jZW5kaWYK KyAKKyAgICAgICAgIGlmIChtX3BvcHVwX2RlbGF5X3RpbWUgPiAwKSB7CisgICAgICAgICAgICAg cmVzdG9yZV93aW5kb3dfcG9zaXRpb24oInByZXNzZWQiKTsKK0BAIC01NTcsMTEgKzQ4Myw3IEBA IGNsYXNzIFN3aXRjaGVyIDogR3RrLldpbmRvdyB7CisgICAgIH0KKyAKKyAgICAgcHVibGljIG92 ZXJyaWRlIGJvb2wga2V5X3JlbGVhc2VfZXZlbnQoR2RrLkV2ZW50S2V5IGUpIHsKKy0jaWYgVkFM QV8wXzI0CisgICAgICAgICBHZGsuRXZlbnRLZXkgcGUgPSBlOworLSNlbHNlCistICAgICAgICBH ZGsuRXZlbnRLZXkgKnBlID0gJmU7CistI2VuZGlmCisgCisgICAgICAgICBpZiAoS2V5YmluZGlu Z01hbmFnZXIucHJpbWFyeV9tb2RpZmllcl9zdGlsbF9wcmVzc2VkKChHZGsuRXZlbnQpIHBlLAor ICAgICAgICAgICAgIG1fcHJpbWFyeV9tb2RpZmllcikpIHsKKy0tIAorMi40OS4wCisKK0Zyb20g Y2Y2MjYzZTQ3NDJmYTMzOGZkOWJiZWQ3ODM5NmJiMjlhNzBhZWNjYiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKK0Zyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KK0Rh dGU6IFN1biwgMSBKdW4gMjAyNSAyMDoyNDo0MiArMDkwMAorU3ViamVjdDogW1BBVENIIDIvM10g SW1wbGVtZW50IElCdXNNZXNzYWdlCisKK0lCdXNFbmdpbmUgYW5kIElCdXNQYW5lbCBjYW4gc2Vu ZCBJQnVzTWVzc2FnZSB0byBJQnVzUGFuZWwuCitDdXJyZW50bHkgR3RrUG9wdXAgdGFrZXMgaW5w dXQgZm9jdXMgaW4gV2F5bGFuZCwgYW5kIHRoZSBQYW5lbCBjYW4gb25seQorZGlzcGxheSBub24t Zm9jdXNlZCBwb3B1cHMgd2l0aCB0aGUgV2F5bGFuZCBwYW5lbCBwcm90b2NvbC4KKworV2hpbGUg R1RLIGFsbG93cyB0aGUgSU0gbW9kdWxlcyB0byBmbGFzaCB0aGUgZm9jdXNlZCB3aW5kb3cgdG8g YWxlcnQKK3VzZXJzIG9mIHRoaWVyIHR5cGluZyBlcnJvcnMsIGluZGl2aWR1YWwgSUJ1cyBlbmdp bmVzIGxhY2sgdGhpcworY2FwYWJpbGl0eS4gVGhpcyBpcyBiZWNhdXNlIGVuZ2luZXMgdHlwaWNh bGx5IG9ubHkgcmVjZWl2ZSBrZXlib2FyZAoraW5wdXQgKGtleXN5bXMva2V5Y29kZXMpIGFuZCBu b3QgdGhlIGFzc29jaWF0ZWQgd2luZG93IGluZm9ybWF0aW9uLgorVGhlIHByb3Bvc2VkIHNvbHV0 aW9uIGlzIHRvIHJlZGlyZWN0IHRoZSBlcnJvciBtZXNzYWdlcyB0byB0aGUgc3lzdGVtCitQYW5l bC4gVGhlIFBhbmVsLCBoYXZpbmcgYWNjZXNzIHRvIHdpbmRvdyBtYW5hZ2VtZW50IGluIFdheWxh bmQgYW5kCitYb3JnLCBjb3VsZCB0aGVuIGhhbmRsZSB0aGUgZGlzcGxheSBvZiBub24tZm9jdXNl ZCBwb3B1cCBub3RpZmljYXRpb25zLgorCitHTk9NRS1TaGVsbCBuZWVkcyB0byBoYW5kbGUgdGhl IElCdXNNZXNzYWdlLiBBcyBhIHRlbXBvcmFyeSBzb2x1dGlvbiBpbgorR05PTUUsIHRoZSBjb21w b3NlIHNlcXVlbmNlIHdpbGwgYmUgZmxhc2hlZCB0byBhbGVydCB1c2VycyBhcyBhCit3b3JrYXJv dW5kIHVudGlsIHRoZSBmdWxsIGltcGxlbWVudGF0aW9uIGlzIGNvbXBsZXRlZC4KKworQWxzbyBy ZWZhY3RvciAiRnJlZSBkYXRhIGluIGJ1c19pbnB1dF9jb250ZXh0X2ZvcndhcmRfcHJvY2Vzc19r ZXlfZXZlbnQiLgorCitGaXhlczogaHR0cHM6Ly9naXRodWIuY29tL2lidXMvaWJ1cy9jb21taXQv YjRmNTFiNjkKK0JVRz1odHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL2lzc3Vlcy8yNzIyCist LS0KKyBiaW5kaW5ncy92YWxhL0lCdXMtMS4wLWN1c3RvbS52YWxhIHwgIDQwICstCisgYnVzL2Vu Z2luZXByb3h5LmMgICAgICAgICAgICAgICAgICB8ICA0MCArLQorIGJ1cy9pYnVzaW1wbC5jICAg ICAgICAgICAgICAgICAgICAgfCAgNjcgKystLQorIGJ1cy9pbnB1dGNvbnRleHQuYyAgICAgICAg ICAgICAgICAgfCAgMzQgKy0KKyBidXMvcGFuZWxwcm94eS5jICAgICAgICAgICAgICAgICAgIHwg IDM3ICstCisgYnVzL3BhbmVscHJveHkuaCAgICAgICAgICAgICAgICAgICB8ICAgNyArLQorIHNy Yy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KKyBzcmMvaWJ1c2VuZ2lu ZS5jICAgICAgICAgICAgICAgICAgIHwgIDMzICstCisgc3JjL2lidXNlbmdpbmUuaCAgICAgICAg ICAgICAgICAgICB8ICAzNiArLQorIHNyYy9pYnVzZW5naW5lc2ltcGxlLmMgICAgICAgICAgICAg fCAgNjMgKysrLQorIHNyYy9pYnVzbWVzc2FnZS5jICAgICAgICAgICAgICAgICAgfCA1NjIgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKKyBzcmMvaWJ1c21lc3NhZ2UuaCAgICAgICAgICAg ICAgICAgIHwgMjA1ICsrKysrKysrKysrCisgc3JjL2lidXNwYW5lbHNlcnZpY2UuYyAgICAgICAg ICAgICB8IDEyOCArKysrKystCisgc3JjL2lidXNwYW5lbHNlcnZpY2UuaCAgICAgICAgICAgICB8 ICAzOCArLQorIHNyYy9pYnVzdHlwZXMuaCAgICAgICAgICAgICAgICAgICAgfCAgMTQgKworIHVp L2d0azMvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgfCAgIDEgKworIHVpL2d0azMvZW1vamll ci52YWxhICAgICAgICAgICAgICAgfCAgMzkgKy0KKyB1aS9ndGszL21lc3NhZ2UudmFsYSAgICAg ICAgICAgICAgIHwgMzUzICsrKysrKysrKysrKysrKysrKworIHVpL2d0azMvcGFuZWwudmFsYSAg ICAgICAgICAgICAgICAgfCAxMzcgKysrKystLQorIHVpL2d0azMvcGFuZWxiaW5kaW5nLnZhbGEg ICAgICAgICAgfCAgIDUgKy0KKyAyMCBmaWxlcyBjaGFuZ2VkLCAxNzI3IGluc2VydGlvbnMoKyks IDExOCBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2lidXNtZXNzYWdlLmMK KyBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2lidXNtZXNzYWdlLmgKKyBjcmVhdGUgbW9kZSAxMDA2 NDQgdWkvZ3RrMy9tZXNzYWdlLnZhbGEKKworZGlmZiAtLWdpdCBhL2JpbmRpbmdzL3ZhbGEvSUJ1 cy0xLjAtY3VzdG9tLnZhbGEgYi9iaW5kaW5ncy92YWxhL0lCdXMtMS4wLWN1c3RvbS52YWxhCitp bmRleCBlYzQ2ZmM5MC4uOGNlZDhhOTcgMTAwNjQ0CistLS0gYS9iaW5kaW5ncy92YWxhL0lCdXMt MS4wLWN1c3RvbS52YWxhCisrKysgYi9iaW5kaW5ncy92YWxhL0lCdXMtMS4wLWN1c3RvbS52YWxh CitAQCAtMSwyNCArMSwzOCBAQAorIG5hbWVzcGFjZSBJQnVzIHsKKysgICAgICAgIHB1YmxpYyBj bGFzcyBFbW9qaURhdGEgOiBJQnVzLlNlcmlhbGl6YWJsZSB7CisrCQlbQ0NvZGUgKGNuYW1lID0g ImlidXNfZW1vamlfZGF0YV9uZXciLAorKyAgICAgICAgICAgICAgICAgICAgICAgIGhhc19jb25z dHJ1Y3RfZnVuY3Rpb24gPSB0cnVlKV0KKysJCXB1YmxpYyBFbW9qaURhdGEgKHN0cmluZyBmaXJz dF9wcm9wZXJ0eV9uYW1lLCAuLi4pOworKwl9CisrCXB1YmxpYyBjbGFzcyBFeHRlbnNpb25FdmVu dCA6IElCdXMuU2VyaWFsaXphYmxlIHsKKysJCVtDQ29kZSAoY25hbWUgPSAiaWJ1c19leHRlbnNp b25fZXZlbnRfbmV3IiwKKysgICAgICAgICAgICAgICAgICAgICAgICBoYXNfY29uc3RydWN0X2Z1 bmN0aW9uID0gdHJ1ZSldCisrCQlwdWJsaWMgRXh0ZW5zaW9uRXZlbnQgKHN0cmluZyBmaXJzdF9w cm9wZXJ0eV9uYW1lLCAuLi4pOworKwl9CisrCXB1YmxpYyBjbGFzcyBNZXNzYWdlIDogSUJ1cy5T ZXJpYWxpemFibGUgeworKwkJW0NDb2RlIChjbmFtZSA9ICJpYnVzX21lc3NhZ2VfbmV3IiwKKysg ICAgICAgICAgICAgICAgICAgICAgICBoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gdHJ1ZSldCisr CQlwdWJsaWMgTWVzc2FnZSAodWludCBkb21haW4sCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50IGNvZGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJp bmc/IHRpdGxlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nIGRlc2Ny aXB0aW9uLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKKysJfQorKwlw dWJsaWMgY2xhc3MgUGFuZWxTZXJ2aWNlIDogSUJ1cy5TZXJ2aWNlIHsKKysgICAgICAgICAgICAg ICAgcHVibGljIHZvaWQKKysgICAgICAgICAgICAgICAgcGFuZWxfZXh0ZW5zaW9uX3JlZ2lzdGVy X2tleXMoc3RyaW5nIGZpcnN0X3Byb3BlcnR5X25hbWUsIC4uLik7CisrCX0KKyAJLy8gRm9yIHNv bWUgcmVhc29uLCBpYnVzX3RleHRfbmV3X2Zyb21fc3RhdGljX3N0cmluZyBpcyBoaWRkZW4gaW4g R0lSCisgCS8vIGh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvY29tbWl0LzM3ZTZlNTg3Cisg CVtDQ29kZSAodHlwZV9pZCA9ICJpYnVzX3RleHRfZ2V0X3R5cGUgKCkiLCBjaGVhZGVyX2ZpbGVu YW1lID0gImlidXMuaCIpXQorIAlwdWJsaWMgY2xhc3MgVGV4dCA6IElCdXMuU2VyaWFsaXphYmxl IHsKKy0JCVtDQ29kZSAoY25hbWUgPSAiaWJ1c190ZXh0X25ld19mcm9tX3N0YXRpY19zdHJpbmci LCBoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQorKwkJW0NDb2RlIChjbmFtZSA9ICJp YnVzX3RleHRfbmV3X2Zyb21fc3RhdGljX3N0cmluZyIsCisrICAgICAgICAgICAgICAgICAgICAg ICAgaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KKyAJCXB1YmxpYyBUZXh0LmZyb21f c3RhdGljX3N0cmluZyAoc3RyaW5nIHN0cik7CisgCX0KKy0JcHVibGljIGNsYXNzIEV4dGVuc2lv bkV2ZW50IDogSUJ1cy5TZXJpYWxpemFibGUgeworLQkJW0NDb2RlIChjbmFtZSA9ICJpYnVzX2V4 dGVuc2lvbl9ldmVudF9uZXciLCBoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gdHJ1ZSldCistCQlw dWJsaWMgRXh0ZW5zaW9uRXZlbnQgKHN0cmluZyBmaXJzdF9wcm9wZXJ0eV9uYW1lLCAuLi4pOwor LQl9CisgCXB1YmxpYyBjbGFzcyBYRXZlbnQgOiBJQnVzLlNlcmlhbGl6YWJsZSB7CistCQlbQ0Nv ZGUgKGNuYW1lID0gImlidXNfeF9ldmVudF9uZXciLCBoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0g dHJ1ZSldCisrCQlbQ0NvZGUgKGNuYW1lID0gImlidXNfeF9ldmVudF9uZXciLAorKyAgICAgICAg ICAgICAgICAgaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IHRydWUpXQorIAkJcHVibGljIFhFdmVu dCAoc3RyaW5nIGZpcnN0X3Byb3BlcnR5X25hbWUsIC4uLik7CisgCX0KKy0JcHVibGljIGNsYXNz IFBhbmVsU2VydmljZSA6IElCdXMuU2VydmljZSB7CistICAgICAgICAgICAgICAgIHB1YmxpYyB2 b2lkIHBhbmVsX2V4dGVuc2lvbl9yZWdpc3Rlcl9rZXlzKHN0cmluZyBmaXJzdF9wcm9wZXJ0eV9u YW1lLCAuLi4pOworLQl9CistICAgICAgICBwdWJsaWMgY2xhc3MgRW1vamlEYXRhIDogSUJ1cy5T ZXJpYWxpemFibGUgeworLQkJW0NDb2RlIChjbmFtZSA9ICJpYnVzX2Vtb2ppX2RhdGFfbmV3Iiwg aGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IHRydWUpXQorLQkJcHVibGljIEVtb2ppRGF0YSAoc3Ry aW5nIGZpcnN0X3Byb3BlcnR5X25hbWUsIC4uLik7CistCX0KKyB9CitkaWZmIC0tZ2l0IGEvYnVz L2VuZ2luZXByb3h5LmMgYi9idXMvZW5naW5lcHJveHkuYworaW5kZXggOGJkNmNlZmQuLjk4ZWM2 M2ZlIDEwMDY0NAorLS0tIGEvYnVzL2VuZ2luZXByb3h5LmMKKysrKyBiL2J1cy9lbmdpbmVwcm94 eS5jCitAQCAtOTUsNiArOTUsNyBAQCBlbnVtIHsKKyAgICAgUkVHSVNURVJfUFJPUEVSVElFUywK KyAgICAgVVBEQVRFX1BST1BFUlRZLAorICAgICBQQU5FTF9FWFRFTlNJT04sCisrICAgIFNFTkRf TUVTU0FHRSwKKyAgICAgTEFTVF9TSUdOQUwsCisgfTsKKyAKK0BAIC00NTgsNiArNDU5LDIwIEBA IGJ1c19lbmdpbmVfcHJveHlfY2xhc3NfaW5pdCAoQnVzRW5naW5lUHJveHlDbGFzcyAqY2xhc3Mp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyAoY2xh c3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVzX21hcnNoYWxfVk9JRF9f T0JKRUNUdik7CisgCisrICAgIGVuZ2luZV9zaWduYWxzW1NFTkRfTUVTU0FHRV0gPQorKyAgICAg ICAgZ19zaWduYWxfbmV3IChJXygic2VuZC1tZXNzYWdlIiksCisrICAgICAgICAgICAgR19UWVBF X0ZST01fQ0xBU1MgKGNsYXNzKSwKKysgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKysg ICAgICAgICAgICAwLAorKyAgICAgICAgICAgIE5VTEwsIE5VTEwsCisrICAgICAgICAgICAgYnVz X21hcnNoYWxfVk9JRF9fVkFSSUFOVCwKKysgICAgICAgICAgICBHX1RZUEVfTk9ORSwKKysgICAg ICAgICAgICAxLAorKyAgICAgICAgICAgIEdfVFlQRV9WQVJJQU5UKTsKKysgICAgZ19zaWduYWxf c2V0X3ZhX21hcnNoYWxsZXIgKGVuZ2luZV9zaWduYWxzW1NFTkRfTUVTU0FHRV0sCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyAoY2xhc3MpLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVzX21hcnNoYWxfVk9JRF9fVkFSSUFOVHYp OworKworICAgICB0ZXh0X2VtcHR5ID0gaWJ1c190ZXh0X25ld19mcm9tX3N0YXRpY19zdHJpbmcg KCIiKTsKKyAgICAgZ19vYmplY3RfcmVmX3NpbmsgKHRleHRfZW1wdHkpOworIAorQEAgLTU5NCw3 ICs2MDksNyBAQCBidXNfZW5naW5lX3Byb3h5X2dfc2lnbmFsIChHREJ1c1Byb3h5ICAqcHJveHks CisgCisgICAgIGdpbnQgaTsKKyAgICAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAoc2ln bmFscyk7IGkrKykgeworLSAgICAgICAgaWYgKGdfc3RyY21wMCAoc2lnbmFsX25hbWUsIHNpZ25h bHNbaV0uc2lnbmFsX25hbWUpID09IDApIHsKKysgICAgICAgIGlmICghZ19zdHJjbXAwIChzaWdu YWxfbmFtZSwgc2lnbmFsc1tpXS5zaWduYWxfbmFtZSkpIHsKKyAgICAgICAgICAgICBnX3NpZ25h bF9lbWl0IChlbmdpbmUsIGVuZ2luZV9zaWduYWxzW3NpZ25hbHNbaV0uc2lnbmFsX2lkXSwgMCk7 CisgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgfQorQEAgLTYwMyw3ICs2MTgsNyBAQCBi dXNfZW5naW5lX3Byb3h5X2dfc2lnbmFsIChHREJ1c1Byb3h5ICAqcHJveHksCisgICAgIC8qIEhh bmRsZSBELUJ1cyBzaWduYWxzIHdpdGggcGFyYW1ldGVycy4gRGVzZXJpYWxpemUgdGhlbSBhbmQg ZW1pdCBhIGdsaWIKKyAgICAgICogc2lnbmFsLgorICAgICAgKi8KKy0gICAgaWYgKGdfc3RyY21w MCAoc2lnbmFsX25hbWUsICJDb21taXRUZXh0IikgPT0gMCkgeworKyAgICBpZiAoIWdfc3RyY21w MCAoc2lnbmFsX25hbWUsICJDb21taXRUZXh0IikpIHsKKyAgICAgICAgIEdWYXJpYW50ICphcmcw ID0gTlVMTDsKKyAgICAgICAgIGdfdmFyaWFudF9nZXQgKHBhcmFtZXRlcnMsICIodikiLCAmYXJn MCk7CisgICAgICAgICBnX3JldHVybl9pZl9mYWlsIChhcmcwICE9IE5VTEwpOworQEAgLTYxNiw3 ICs2MzEsNyBAQCBidXNfZW5naW5lX3Byb3h5X2dfc2lnbmFsIChHREJ1c1Byb3h5ICAqcHJveHks CisgICAgICAgICByZXR1cm47CisgICAgIH0KKyAKKy0gICAgaWYgKGdfc3RyY21wMCAoc2lnbmFs X25hbWUsICJGb3J3YXJkS2V5RXZlbnQiKSA9PSAwKSB7CisrICAgIGlmICghZ19zdHJjbXAwIChz aWduYWxfbmFtZSwgIkZvcndhcmRLZXlFdmVudCIpKSB7CisgICAgICAgICBndWludDMyIGtleXZh bCA9IDA7CisgICAgICAgICBndWludDMyIGtleWNvZGUgPSAwOworICAgICAgICAgZ3VpbnQzMiBz dGF0ZXMgPSAwOworQEAgLTYzMSw3ICs2NDYsNyBAQCBidXNfZW5naW5lX3Byb3h5X2dfc2lnbmFs IChHREJ1c1Byb3h5ICAqcHJveHksCisgICAgICAgICByZXR1cm47CisgICAgIH0KKyAKKy0gICAg aWYgKGdfc3RyY21wMCAoc2lnbmFsX25hbWUsICJEZWxldGVTdXJyb3VuZGluZ1RleHQiKSA9PSAw KSB7CisrICAgIGlmICghZ19zdHJjbXAwIChzaWduYWxfbmFtZSwgIkRlbGV0ZVN1cnJvdW5kaW5n VGV4dCIpKSB7CisgICAgICAgICBnaW50ICBvZmZzZXRfZnJvbV9jdXJzb3IgPSAwOworICAgICAg ICAgZ3VpbnQgbmNoYXJzID0gMDsKKyAgICAgICAgIGdfdmFyaWFudF9nZXQgKHBhcmFtZXRlcnMs ICIoaXUpIiwgJm9mZnNldF9mcm9tX2N1cnNvciwgJm5jaGFycyk7CitAQCAtNjQyLDcgKzY1Nyw3 IEBAIGJ1c19lbmdpbmVfcHJveHlfZ19zaWduYWwgKEdEQnVzUHJveHkgICpwcm94eSwKKyAgICAg ICAgIHJldHVybjsKKyAgICAgfQorIAorLSAgICBpZiAoZ19zdHJjbXAwIChzaWduYWxfbmFtZSwg IlVwZGF0ZVByZWVkaXRUZXh0IikgPT0gMCkgeworKyAgICBpZiAoIWdfc3RyY21wMCAoc2lnbmFs X25hbWUsICJVcGRhdGVQcmVlZGl0VGV4dCIpKSB7CisgICAgICAgICBHVmFyaWFudCAqYXJnMCA9 IE5VTEw7CisgICAgICAgICBndWludCBjdXJzb3JfcG9zID0gMDsKKyAgICAgICAgIGdib29sZWFu IHZpc2libGUgPSBGQUxTRTsKK0BAIC02NjQsNyArNjc5LDcgQEAgYnVzX2VuZ2luZV9wcm94eV9n X3NpZ25hbCAoR0RCdXNQcm94eSAgKnByb3h5LAorICAgICAgICAgcmV0dXJuOworICAgICB9Cisg CistICAgIGlmIChnX3N0cmNtcDAgKHNpZ25hbF9uYW1lLCAiVXBkYXRlQXV4aWxpYXJ5VGV4dCIp ID09IDApIHsKKysgICAgaWYgKCFnX3N0cmNtcDAgKHNpZ25hbF9uYW1lLCAiVXBkYXRlQXV4aWxp YXJ5VGV4dCIpKSB7CisgICAgICAgICBHVmFyaWFudCAqYXJnMCA9IE5VTEw7CisgICAgICAgICBn Ym9vbGVhbiB2aXNpYmxlID0gRkFMU0U7CisgCitAQCAtNjg0LDcgKzY5OSw3IEBAIGJ1c19lbmdp bmVfcHJveHlfZ19zaWduYWwgKEdEQnVzUHJveHkgICpwcm94eSwKKyAgICAgICAgIHJldHVybjsK KyAgICAgfQorIAorLSAgICBpZiAoZ19zdHJjbXAwIChzaWduYWxfbmFtZSwgIlVwZGF0ZUxvb2t1 cFRhYmxlIikgPT0gMCkgeworKyAgICBpZiAoIWdfc3RyY21wMCAoc2lnbmFsX25hbWUsICJVcGRh dGVMb29rdXBUYWJsZSIpKSB7CisgICAgICAgICBHVmFyaWFudCAqYXJnMCA9IE5VTEw7CisgICAg ICAgICBnYm9vbGVhbiB2aXNpYmxlID0gRkFMU0U7CisgCitAQCAtNzA1LDcgKzcyMCw3IEBAIGJ1 c19lbmdpbmVfcHJveHlfZ19zaWduYWwgKEdEQnVzUHJveHkgICpwcm94eSwKKyAgICAgICAgIHJl dHVybjsKKyAgICAgfQorIAorLSAgICBpZiAoZ19zdHJjbXAwIChzaWduYWxfbmFtZSwgIlJlZ2lz dGVyUHJvcGVydGllcyIpID09IDApIHsKKysgICAgaWYgKCFnX3N0cmNtcDAgKHNpZ25hbF9uYW1l LCAiUmVnaXN0ZXJQcm9wZXJ0aWVzIikpIHsKKyAgICAgICAgIEdWYXJpYW50ICphcmcwID0gTlVM TDsKKyAgICAgICAgIGdfdmFyaWFudF9nZXQgKHBhcmFtZXRlcnMsICIodikiLCAmYXJnMCk7Cisg ICAgICAgICBnX3JldHVybl9pZl9mYWlsIChhcmcwICE9IE5VTEwpOworQEAgLTcyMyw3ICs3Mzgs NyBAQCBidXNfZW5naW5lX3Byb3h5X2dfc2lnbmFsIChHREJ1c1Byb3h5ICAqcHJveHksCisgICAg ICAgICByZXR1cm47CisgICAgIH0KKyAKKy0gICAgaWYgKGdfc3RyY21wMCAoc2lnbmFsX25hbWUs ICJVcGRhdGVQcm9wZXJ0eSIpID09IDApIHsKKysgICAgaWYgKCFnX3N0cmNtcDAgKHNpZ25hbF9u YW1lLCAiVXBkYXRlUHJvcGVydHkiKSkgeworICAgICAgICAgR1ZhcmlhbnQgKmFyZzAgPSBOVUxM OworICAgICAgICAgZ192YXJpYW50X2dldCAocGFyYW1ldGVycywgIih2KSIsICZhcmcwKTsKKyAg ICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwgKGFyZzAgIT0gTlVMTCk7CitAQCAtNzM4LDcgKzc1Myw3 IEBAIGJ1c19lbmdpbmVfcHJveHlfZ19zaWduYWwgKEdEQnVzUHJveHkgICpwcm94eSwKKyAgICAg ICAgIHJldHVybjsKKyAgICAgfQorIAorLSAgICBpZiAoZ19zdHJjbXAwIChzaWduYWxfbmFtZSwg IlBhbmVsRXh0ZW5zaW9uIikgPT0gMCkgeworKyAgICBpZiAoIWdfc3RyY21wMCAoc2lnbmFsX25h bWUsICJQYW5lbEV4dGVuc2lvbiIpKSB7CisgICAgICAgICBHVmFyaWFudCAqYXJnMCA9IE5VTEw7 CisgICAgICAgICBnX3ZhcmlhbnRfZ2V0IChwYXJhbWV0ZXJzLCAiKHYpIiwgJmFyZzApOworICAg ICAgICAgZ19yZXR1cm5faWZfZmFpbCAoYXJnMCAhPSBOVUxMKTsKK0BAIC03NTIsNiArNzY3LDEx IEBAIGJ1c19lbmdpbmVfcHJveHlfZ19zaWduYWwgKEdEQnVzUHJveHkgICpwcm94eSwKKyAgICAg ICAgIHJldHVybjsKKyAgICAgfQorIAorKyAgICBpZiAoIWdfc3RyY21wMCAoc2lnbmFsX25hbWUs ICJTZW5kTWVzc2FnZSIpKSB7CisrICAgICAgICBnX3NpZ25hbF9lbWl0IChlbmdpbmUsIGVuZ2lu ZV9zaWduYWxzW1NFTkRfTUVTU0FHRV0sIDAsIHBhcmFtZXRlcnMpOworKyAgICAgICAgcmV0dXJu OworKyAgICB9CisrCisgICAgIGdfcmV0dXJuX2lmX3JlYWNoZWQgKCk7CisgfQorIAorZGlmZiAt LWdpdCBhL2J1cy9pYnVzaW1wbC5jIGIvYnVzL2lidXNpbXBsLmMKK2luZGV4IDVjOWM1MmNlLi5m ZTUyMWYyZCAxMDA2NDQKKy0tLSBhL2J1cy9pYnVzaW1wbC5jCisrKysgYi9idXMvaWJ1c2ltcGwu YworQEAgLTQ3MCw2ICs0NzAsMTkgQEAgX3BhbmVsX2ZvcndhcmRfcHJvY2Vzc19rZXlfZXZlbnRf Y2IgKEJ1c1BhbmVsUHJveHkgKnBhbmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMpOworIH0KKyAKKytzdGF0aWMgdm9pZAorK19w YW5lbF9zZW5kX21lc3NhZ2VfY2IgKEJ1c1BhbmVsUHJveHkgKnBhbmVsLAorKyAgICAgICAgICAg ICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgKnBhcmFtZXRlcnMsCisrICAgICAgICAgICAgICAg ICAgICAgICAgQnVzSUJ1c0ltcGwgICAqaWJ1cykKKyt7CisrICAgIGlmICghaWJ1cy0+cGFuZWwp IHsKKysgICAgICAgIGdfd2FybmluZyAoIlBhbmVsIGlzIG5vdCBydW5uaW5nLiIpOworKyAgICAg ICAgcmV0dXJuOworKyAgICB9CisrICAgIGdfcmV0dXJuX2lmX2ZhaWwgKEJVU19JU19QQU5FTF9Q Uk9YWSAoaWJ1cy0+cGFuZWwpKTsKKysgICAgYnVzX3BhbmVsX3Byb3h5X3NlbmRfbWVzc2FnZV9y ZWNlaXZlZCAoaWJ1cy0+cGFuZWwsIHBhcmFtZXRlcnMpOworK30KKysKKyBzdGF0aWMgdm9pZAor IF9yZWdpc3RyeV9jaGFuZ2VkX2NiIChJQnVzUmVnaXN0cnkgKnJlZ2lzdHJ5LAorICAgICAgICAg ICAgICAgICAgICAgICBCdXNJQnVzSW1wbCAgKmlidXMpCitAQCAtNTU2LDI2ICs1NjksMjkgQEAg X2RidXNfbmFtZV9vd25lcl9jaGFuZ2VkX2NiIChCdXNEQnVzSW1wbCAgICpkYnVzLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgX3BhbmVsX3BhbmVsX2V4dGVuc2lvbl9yZWdpc3Rlcl9rZXlz X2NiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVzKTsKKy0gICAgICAgICAg ICBnX3NpZ25hbF9jb25uZWN0ICgKKy0gICAgICAgICAgICAgICAgICAgICpwYW5lbCwKKy0gICAg ICAgICAgICAgICAgICAgICJ1cGRhdGUtcHJlZWRpdC10ZXh0LXJlY2VpdmVkIiwKKy0gICAgICAg ICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKF9wYW5lbF91cGRhdGVfcHJlZWRpdF90ZXh0X3JlY2Vp dmVkX2NiKSwKKy0gICAgICAgICAgICAgICAgICAgIGlidXMpOworLSAgICAgICAgICAgIGdfc2ln bmFsX2Nvbm5lY3QgKAorLSAgICAgICAgICAgICAgICAgICAgKnBhbmVsLAorLSAgICAgICAgICAg ICAgICAgICAgInVwZGF0ZS1sb29rdXAtdGFibGUtcmVjZWl2ZWQiLAorLSAgICAgICAgICAgICAg ICAgICAgR19DQUxMQkFDSyAoX3BhbmVsX3VwZGF0ZV9sb29rdXBfdGFibGVfcmVjZWl2ZWRfY2Ip LAorLSAgICAgICAgICAgICAgICAgICAgaWJ1cyk7CistICAgICAgICAgICAgZ19zaWduYWxfY29u bmVjdCAoCistICAgICAgICAgICAgICAgICAgICAqcGFuZWwsCistICAgICAgICAgICAgICAgICAg ICAidXBkYXRlLWF1eGlsaWFyeS10ZXh0LXJlY2VpdmVkIiwKKy0gICAgICAgICAgICAgICAgICAg IEdfQ0FMTEJBQ0sgKF9wYW5lbF91cGRhdGVfYXV4aWxpYXJ5X3RleHRfcmVjZWl2ZWRfY2IpLAor LSAgICAgICAgICAgICAgICAgICAgaWJ1cyk7CistICAgICAgICAgICAgZ19zaWduYWxfY29ubmVj dCAoCistICAgICAgICAgICAgICAgICAgICAqcGFuZWwsCistICAgICAgICAgICAgICAgICAgICAi Zm9yd2FyZC1wcm9jZXNzLWtleS1ldmVudCIsCistICAgICAgICAgICAgICAgICAgICBHX0NBTExC QUNLIChfcGFuZWxfZm9yd2FyZF9wcm9jZXNzX2tleV9ldmVudF9jYiksCistICAgICAgICAgICAg ICAgICAgICBpYnVzKTsKKysgICAgICAgICAgICBnX3NpZ25hbF9jb25uZWN0ICgqcGFuZWwsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVwZGF0ZS1wcmVlZGl0LXRleHQtcmVjZWl2 ZWQiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3BhbmVsX3VwZGF0ZV9wcmVlZGl0X3Rl eHRfcmVjZWl2ZWRfY2IpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlidXMpOwor KyAgICAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKCpwYW5lbCwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAidXBkYXRlLWxvb2t1cC10YWJsZS1yZWNlaXZlZCIsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBfcGFuZWxfdXBkYXRlX2xvb2t1cF90YWJsZV9yZWNlaXZlZF9jYiks CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWJ1cyk7CisrICAgICAgICAgICAgZ19z aWduYWxfY29ubmVjdCAoKnBhbmVsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1 cGRhdGUtYXV4aWxpYXJ5LXRleHQtcmVjZWl2ZWQiLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdfQ0FMTEJBQ0sgKAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgX3BhbmVsX3VwZGF0ZV9hdXhpbGlhcnlfdGV4dF9yZWNlaXZlZF9jYiksCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWJ1cyk7CisrICAgICAgICAgICAgZ19zaWduYWxfY29ubmVj dCAoKnBhbmVsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3J3YXJkLXByb2Nl c3Mta2V5LWV2ZW50IiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNL IChfcGFuZWxfZm9yd2FyZF9wcm9jZXNzX2tleV9ldmVudF9jYiksCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWJ1cyk7CisrICAgICAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoKnBh bmVsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5kLW1lc3NhZ2UiLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKF9wYW5lbF9zZW5kX21lc3Nh Z2VfY2IpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlidXMpOworIAorICAgICAg ICAgICAgIGlmIChpYnVzLT5mb2N1c2VkX2NvbnRleHQgIT0gTlVMTCkgeworICAgICAgICAgICAg ICAgICBjb250ZXh0ID0gaWJ1cy0+Zm9jdXNlZF9jb250ZXh0OworQEAgLTg0OSwxMSArODY1LDIw IEBAIF9jb250ZXh0X3BhbmVsX2V4dGVuc2lvbl9jYiAoQnVzSW5wdXRDb250ZXh0ICAgICpjb250 ZXh0LAorICAgICBidXNfaWJ1c19pbXBsX3NldF9wYW5lbF9leHRlbnNpb25fbW9kZSAoaWJ1cywg ZXZlbnQpOworIH0KKyAKKytzdGF0aWMgdm9pZAorK19jb250ZXh0X3NlbmRfbWVzc2FnZV9jYiAo QnVzSW5wdXRDb250ZXh0ICpjb250ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgR1Zh cmlhbnQgICAgICAgICpwYXJhbWV0ZXJzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgQnVz SUJ1c0ltcGwgICAgICppYnVzKQorK3sKKysgICAgX3BhbmVsX3NlbmRfbWVzc2FnZV9jYiAoaWJ1 cy0+cGFuZWwsIHBhcmFtZXRlcnMsIGlidXMpOworK30KKysKKyBjb25zdCBzdGF0aWMgc3RydWN0 IHsKKyAgICAgY29uc3QgZ2NoYXIgKm5hbWU7CisgICAgIEdDYWxsYmFjayAgICBjYWxsYmFjazsK KyB9IGNvbnRleHRfc2lnbmFscyBbXSA9IHsKKy0gICAgeyAicGFuZWwtZXh0ZW5zaW9uIiwgICAg ICAgICAgICAgR19DQUxMQkFDSyAoX2NvbnRleHRfcGFuZWxfZXh0ZW5zaW9uX2NiKSB9CisrICAg IHsgInBhbmVsLWV4dGVuc2lvbiIsICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKF9jb250ZXh0X3Bh bmVsX2V4dGVuc2lvbl9jYikgfSwKKysgICAgeyAic2VuZC1tZXNzYWdlIiwgICAgICAgICAgICAg ICAgR19DQUxMQkFDSyAoX2NvbnRleHRfc2VuZF9tZXNzYWdlX2NiKSB9CisgfTsKKyAKKyAvKioK K2RpZmYgLS1naXQgYS9idXMvaW5wdXRjb250ZXh0LmMgYi9idXMvaW5wdXRjb250ZXh0LmMKK2lu ZGV4IDQxYjQ3NTQwLi5lZTRmYTk5YiAxMDA2NDQKKy0tLSBhL2J1cy9pbnB1dGNvbnRleHQuYwor KysrIGIvYnVzL2lucHV0Y29udGV4dC5jCitAQCAtMTY1LDYgKzE2NSw3IEBAIGVudW0geworICAg ICBSRVFVRVNUX0VOR0lORSwKKyAgICAgU0VUX0NPTlRFTlRfVFlQRSwKKyAgICAgUEFORUxfRVhU RU5TSU9OLAorKyAgICBTRU5EX01FU1NBR0UsCisgICAgIExBU1RfU0lHTkFMLAorIH07CisgCitA QCAtNzY3LDYgKzc2OCwyMCBAQCBidXNfaW5wdXRfY29udGV4dF9jbGFzc19pbml0IChCdXNJbnB1 dENvbnRleHRDbGFzcyAqY2xhc3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH X1RZUEVfRlJPTV9DTEFTUyAoY2xhc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYnVzX21hcnNoYWxfVk9JRF9fT0JKRUNUdik7CisgCisrICAgIGNvbnRleHRfc2lnbmFsc1tT RU5EX01FU1NBR0VdID0KKysgICAgICAgIGdfc2lnbmFsX25ldyAoSV8oInNlbmQtbWVzc2FnZSIp LAorKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTIChjbGFzcyksCisrICAgICAgICAgICAg R19TSUdOQUxfUlVOX0xBU1QsCisrICAgICAgICAgICAgMCwKKysgICAgICAgICAgICBOVUxMLCBO VUxMLAorKyAgICAgICAgICAgIGJ1c19tYXJzaGFsX1ZPSURfX1ZBUklBTlQsCisrICAgICAgICAg ICAgR19UWVBFX05PTkUsCisrICAgICAgICAgICAgMSwKKysgICAgICAgICAgICBHX1RZUEVfVkFS SUFOVCk7CisrICAgIGdfc2lnbmFsX3NldF92YV9tYXJzaGFsbGVyIChjb250ZXh0X3NpZ25hbHNb U0VORF9NRVNTQUdFXSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9G Uk9NX0NMQVNTIChjbGFzcyksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXNf bWFyc2hhbF9WT0lEX19WQVJJQU5Udik7CisrCisgICAgIHRleHRfZW1wdHkgPSBpYnVzX3RleHRf bmV3X2Zyb21fc3RyaW5nICgiIik7CisgICAgIGdfb2JqZWN0X3JlZl9zaW5rICh0ZXh0X2VtcHR5 KTsKKyAgICAgbG9va3VwX3RhYmxlX2VtcHR5ID0gaWJ1c19sb29rdXBfdGFibGVfbmV3ICg5IC8q IHBhZ2Ugc2l6ZSAqLywKK0BAIC0yNzg5LDYgKzI4MDQsMjAgQEAgX2VuZ2luZV9wYW5lbF9leHRl bnNpb25fY2IgKEJ1c0VuZ2luZVByb3h5ICAgICAqZW5naW5lLAorICAgICBnX3NpZ25hbF9lbWl0 IChjb250ZXh0LCBjb250ZXh0X3NpZ25hbHNbUEFORUxfRVhURU5TSU9OXSwgMCwgZXZlbnQpOwor IH0KKyAKKysvKioKKysgKiBfZW5naW5lX3NlbmRfbWVzc2FnZV9jYjoKKysgKgorKyAqIEEgZnVu Y3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gInNlbmQtbWVzc2FnZSIgZ2xpYiBzaWduYWwgaXMgc2Vu dAorKyAqIGZyb20gdGhlIGVuZ2luZSBvYmplY3QuCisrICovCisrc3RhdGljIHZvaWQKKytfZW5n aW5lX3NlbmRfbWVzc2FnZV9jYiAoQnVzRW5naW5lUHJveHkgICplbmdpbmUsCisrICAgICAgICAg ICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgICAqcGFyYW1ldGVycywKKysgICAgICAgICAg ICAgICAgICAgICAgICAgQnVzSW5wdXRDb250ZXh0ICpjb250ZXh0KQorK3sKKysgICAgZ19zaWdu YWxfZW1pdCAoY29udGV4dCwgY29udGV4dF9zaWduYWxzW1NFTkRfTUVTU0FHRV0sIDAsIHBhcmFt ZXRlcnMpOworK30KKysKKyBzdGF0aWMgdm9pZAorIF9lbmdpbmVfc2hvd19wcmVlZGl0X3RleHRf Y2IgKEJ1c0VuZ2luZVByb3h5ICAqZW5naW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEJ1c0lucHV0Q29udGV4dCAqY29udGV4dCkKK0BAIC0yOTc4LDYgKzMwMDcsNyBAQCBjb25z dCBzdGF0aWMgc3RydWN0IHsKKyAgICAgeyAicmVnaXN0ZXItcHJvcGVydGllcyIsICAgICAgR19D QUxMQkFDSyAoX2VuZ2luZV9yZWdpc3Rlcl9wcm9wZXJ0aWVzX2NiKSB9LAorICAgICB7ICJ1cGRh dGUtcHJvcGVydHkiLCAgICAgICAgICBHX0NBTExCQUNLIChfZW5naW5lX3VwZGF0ZV9wcm9wZXJ0 eV9jYikgfSwKKyAgICAgeyAicGFuZWwtZXh0ZW5zaW9uIiwgICAgICAgICAgR19DQUxMQkFDSyAo X2VuZ2luZV9wYW5lbF9leHRlbnNpb25fY2IpIH0sCisrICAgIHsgInNlbmQtbWVzc2FnZSIsICAg ICAgICAgICAgIEdfQ0FMTEJBQ0sgKF9lbmdpbmVfc2VuZF9tZXNzYWdlX2NiKSB9LAorICAgICB7 ICJkZXN0cm95IiwgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChfZW5naW5lX2Rlc3Ryb3lf Y2IpIH0KKyB9OworIAorQEAgLTM1NDksOSArMzU3OSw5IEBAIGJ1c19pbnB1dF9jb250ZXh0X2Zv cndhcmRfcHJvY2Vzc19rZXlfZXZlbnQgKEJ1c0lucHV0Q29udGV4dCAqY29udGV4dCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAg IGtleWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z3VpbnQgICAgICAgICAgICBtb2RpZmllcnMpCisgeworLSAgICBQcm9jZXNzS2V5RXZlbnREYXRh ICpkYXRhID0gZ19zbGljZV9uZXcwIChQcm9jZXNzS2V5RXZlbnREYXRhKTsKKyAgICAgZ19hc3Nl cnQgKEJVU19JU19JTlBVVF9DT05URVhUIChjb250ZXh0KSk7CisgICAgIGlmIChjb250ZXh0LT5o YXNfZm9jdXMgJiYgY29udGV4dC0+ZW5naW5lICYmIGNvbnRleHQtPmZha2UgPT0gRkFMU0UpIHsK KysgICAgICAgIFByb2Nlc3NLZXlFdmVudERhdGEgKmRhdGEgPSBnX3NsaWNlX25ldzAgKFByb2Nl c3NLZXlFdmVudERhdGEpOworICAgICAgICAgZGF0YS0+Y29udGV4dCA9IGdfb2JqZWN0X3JlZiAo Y29udGV4dCk7CisgICAgICAgICBkYXRhLT5rZXl2YWwgPSBrZXl2YWw7CisgICAgICAgICBkYXRh LT5rZXljb2RlID0ga2V5Y29kZTsKK0BAIC0zNTY0LDcgKzM1OTQsNSBAQCBidXNfaW5wdXRfY29u dGV4dF9mb3J3YXJkX3Byb2Nlc3Nfa2V5X2V2ZW50IChCdXNJbnB1dENvbnRleHQgKmNvbnRleHQs CisgICAgICAgICAgICAgICAgIChHQXN5bmNSZWFkeUNhbGxiYWNrKQorICAgICAgICAgICAgICAg ICAgICAgICAgIF9mb3J3YXJkX3Byb2Nlc3Nfa2V5X2V2ZW50X3JlcGx5X2NiLAorICAgICAgICAg ICAgICAgICBkYXRhKTsKKy0gICAgfSBlbHNlIHsKKy0gICAgICAgIGdfc2xpY2VfZnJlZSAoUHJv Y2Vzc0tleUV2ZW50RGF0YSwgZGF0YSk7CisgICAgIH0KKyB9CitkaWZmIC0tZ2l0IGEvYnVzL3Bh bmVscHJveHkuYyBiL2J1cy9wYW5lbHByb3h5LmMKK2luZGV4IGI3NmQ2Zjc2Li45OTdmNTk2NCAx MDA2NDQKKy0tLSBhL2J1cy9wYW5lbHByb3h5LmMKKysrKyBiL2J1cy9wYW5lbHByb3h5LmMKK0BA IC0yLDggKzIsOCBAQAorIC8qIHZpbTpzZXQgZXQgc3RzPTQ6ICovCisgLyogaWJ1cyAtIFRoZSBJ bnB1dCBCdXMKKyAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNCBQZW5nIEh1YW5nIDxzaGF3bi5w Lmh1YW5nQGdtYWlsLmNvbT4KKy0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyNCBUYWthbyBGdWpp d2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KKy0gKiBDb3B5cmlnaHQgKEMpIDIwMDgt MjAyNCBSZWQgSGF0LCBJbmMuCisrICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjUgVGFrYW8gRnVq aXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CisrICogQ29weXJpZ2h0IChDKSAyMDA4 LTIwMjUgUmVkIEhhdCwgSW5jLgorICAqCisgICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAqIG1vZGlmeSBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKK0BAIC01Nyw2ICs1Nyw3 IEBAIGVudW0geworICAgICBVUERBVEVfTE9PS1VQX1RBQkxFX1JFQ0VJVkVELAorICAgICBVUERB VEVfQVVYSUxJQVJZX1RFWFRfUkVDRUlWRUQsCisgICAgIEZPUldBUkRfUFJPQ0VTU19LRVlfRVZF TlQsCisrICAgIFNFTkRfTUVTU0FHRSwKKyAgICAgTEFTVF9TSUdOQUwKKyB9OworIAorQEAgLTM2 Niw2ICszNjcsMTkgQEAgYnVzX3BhbmVsX3Byb3h5X2NsYXNzX2luaXQgKEJ1c1BhbmVsUHJveHlD bGFzcyAqY2xhc3MpCisgICAgIGdfc2lnbmFsX3NldF92YV9tYXJzaGFsbGVyIChwYW5lbF9zaWdu YWxzW0ZPUldBUkRfUFJPQ0VTU19LRVlfRVZFTlRdLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1MgKGNsYXNzKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJ1c19tYXJzaGFsX1ZPSURfX1VJTlRfVUlOVF9VSU5Udik7CisrCisrICAg IHBhbmVsX3NpZ25hbHNbU0VORF9NRVNTQUdFXSA9CisrICAgICAgICBnX3NpZ25hbF9uZXcgKElf KCJzZW5kLW1lc3NhZ2UiKSwKKysgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyAoY2xhc3Mp LAorKyAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorKyAgICAgICAgICAgIDAsCisrICAg ICAgICAgICAgTlVMTCwgTlVMTCwKKysgICAgICAgICAgICBidXNfbWFyc2hhbF9WT0lEX19WQVJJ QU5ULAorKyAgICAgICAgICAgIEdfVFlQRV9OT05FLCAxLAorKyAgICAgICAgICAgIEdfVFlQRV9W QVJJQU5UKTsKKysgICAgZ19zaWduYWxfc2V0X3ZhX21hcnNoYWxsZXIgKHBhbmVsX3NpZ25hbHNb U0VORF9NRVNTQUdFXSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9G Uk9NX0NMQVNTIChjbGFzcyksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXNf bWFyc2hhbF9WT0lEX19WQVJJQU5Udik7CisgfQorIAorIHN0YXRpYyB2b2lkCitAQCAtNTUxLDYg KzU2NSwxMSBAQCBidXNfcGFuZWxfcHJveHlfZ19zaWduYWwgKEdEQnVzUHJveHkgICpwcm94eSwK KyAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAorKyAgICBpZiAoZ19zdHJjbXAwICgiU2VuZE1l c3NhZ2UiLCBzaWduYWxfbmFtZSkgPT0gMCkgeworKyAgICAgICAgZ19zaWduYWxfZW1pdCAocGFu ZWwsIHBhbmVsX3NpZ25hbHNbU0VORF9NRVNTQUdFXSwgMCwgcGFyYW1ldGVycyk7CisrICAgICAg ICByZXR1cm47CisrICAgIH0KKysKKyAgICAgLyogc2hvdW5kIG5vdCBiZSByZWFjaGVkICovCisg ICAgIGdfcmV0dXJuX2lmX3JlYWNoZWQgKCk7CisgfQorQEAgLTExNzAsMyArMTE4OSwxNyBAQCBi dXNfcGFuZWxfcHJveHlfY2FuZGlkYXRlX2NsaWNrZWRfbG9va3VwX3RhYmxlIChCdXNQYW5lbFBy b3h5ICpwYW5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdfREJVU19DQUxMX0ZMQUdTX05P TkUsCisgICAgICAgICAgICAgICAgICAgICAgICAtMSwgTlVMTCwgTlVMTCwgTlVMTCk7CisgfQor KworK3ZvaWQKKytidXNfcGFuZWxfcHJveHlfc2VuZF9tZXNzYWdlX3JlY2VpdmVkIChCdXNQYW5l bFByb3h5ICpwYW5lbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH VmFyaWFudCAgICAgICpwYXJhbWV0ZXJzKQorK3sKKysgICAgZ19hc3NlcnQgKEJVU19JU19QQU5F TF9QUk9YWSAocGFuZWwpKTsKKysgICAgZ19hc3NlcnQgKHBhcmFtZXRlcnMpOworKworKyAgICBn X2RidXNfcHJveHlfY2FsbCAoKEdEQnVzUHJveHkgKilwYW5lbCwKKysgICAgICAgICAgICAgICAg ICAgICAgICJTZW5kTWVzc2FnZVJlY2VpdmVkIiwKKysgICAgICAgICAgICAgICAgICAgICAgIGdf dmFyaWFudF9yZWYgKHBhcmFtZXRlcnMpLAorKyAgICAgICAgICAgICAgICAgICAgICAgR19EQlVT X0NBTExfRkxBR1NfTk9ORSwKKysgICAgICAgICAgICAgICAgICAgICAgIC0xLCBOVUxMLCBOVUxM LCBOVUxMKTsKKyt9CitkaWZmIC0tZ2l0IGEvYnVzL3BhbmVscHJveHkuaCBiL2J1cy9wYW5lbHBy b3h5LmgKK2luZGV4IDRkOGFmYjk4Li5mZjIwNWNmMSAxMDA2NDQKKy0tLSBhL2J1cy9wYW5lbHBy b3h5LmgKKysrKyBiL2J1cy9wYW5lbHByb3h5LmgKK0BAIC0yLDggKzIsOCBAQAorIC8qIHZpbTpz ZXQgZXQgc3RzPTQ6ICovCisgLyogaWJ1cyAtIFRoZSBJbnB1dCBCdXMKKyAgKiBDb3B5cmlnaHQg KEMpIDIwMDgtMjAxNCBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KKy0gKiBD b3B5cmlnaHQgKEMpIDIwMTctMjAxOCBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdt YWlsLmNvbT4KKy0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOCBSZWQgSGF0LCBJbmMuCisrICog Q29weXJpZ2h0IChDKSAyMDE3LTIwMjUgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBn bWFpbC5jb20+CisrICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjUgUmVkIEhhdCwgSW5jLgorICAq CisgICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgorICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMKK0BAIC0xNTUsNiArMTU1LDkgQEAgdm9pZCAgICAgICAgICAgICBi dXNfcGFuZWxfcHJveHlfY2FuZGlkYXRlX2NsaWNrZWRfbG9va3VwX3RhYmxlCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAg IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGd1aW50ICAgICAgICAgICAgICBidXR0b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgIHN0YXRlKTsKKyt2b2lkICAg ICAgICAgICAgIGJ1c19wYW5lbF9wcm94eV9zZW5kX21lc3NhZ2VfcmVjZWl2ZWQKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCdXNQYW5lbFByb3h5ICAg ICAqcGFuZWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR1ZhcmlhbnQgICAgICAgICAgKnBhcmFtZXRlcnMpOworIAorIEdfRU5EX0RFQ0xTCisgI2Vu ZGlmCitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCitpbmRl eCBiZWYyNjljYi4uNTE5ZmM2NGUgMTAwNjQ0CistLS0gYS9zcmMvTWFrZWZpbGUuYW0KKysrKyBi L3NyYy9NYWtlZmlsZS5hbQorQEAgLTMsOCArMyw4IEBACisgIyBpYnVzIC0gVGhlIElucHV0IEJ1 cworICMKKyAjIENvcHlyaWdodCAoYykgMjAwNy0yMDE1IFBlbmcgSHVhbmcgPHNoYXduLnAuaHVh bmdAZ21haWwuY29tPgorLSMgQ29weXJpZ2h0IChjKSAyMDE1LTIwMjQgVGFrYW8gRnVqaXdhcmEg PHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CistIyBDb3B5cmlnaHQgKGMpIDIwMDctMjAxNyBS ZWQgSGF0LCBJbmMuCisrIyBDb3B5cmlnaHQgKGMpIDIwMTUtMjAyNSBUYWthbyBGdWppd2FyYSA8 dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KKysjIENvcHlyaWdodCAoYykgMjAwNy0yMDI1IFJl ZCBIYXQsIEluYy4KKyAjCisgIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCitAQCAtOTMsNiArOTMsNyBAQCBpYnVzX3Nv dXJjZXMgPSAgICAgICAgICAgICAgXAorICAgICBpYnVza2V5cy5jICAgICAgICAgICAgICBcCisg ICAgIGlidXNrZXl1bmkuYyAgICAgICAgICAgIFwKKyAgICAgaWJ1c2xvb2t1cHRhYmxlLmMgICAg ICAgXAorKyAgICBpYnVzbWVzc2FnZS5jICAgICAgICAgICBcCisgICAgIGlidXNvYmplY3QuYyAg ICAgICAgICAgIFwKKyAgICAgaWJ1c29ic2VydmVkcGF0aC5jICAgICAgXAorICAgICBpYnVzcGFu ZWxzZXJ2aWNlLmMgICAgICBcCitAQCAtMTUxLDYgKzE1Miw3IEBAIGlidXNfaGVhZGVycyA9ICAg ICAgICAgICAgICBcCisgICAgIGlidXNrZXlzeW1zLWNvbXBhdC5oICAgIFwKKyAgICAgaWJ1c2tl eXN5bXMuaCAgICAgICAgICAgXAorICAgICBpYnVzbG9va3VwdGFibGUuaCAgICAgICBcCisrICAg IGlidXNtZXNzYWdlLmggICAgICAgICAgIFwKKyAgICAgaWJ1c29iamVjdC5oICAgICAgICAgICAg XAorICAgICBpYnVzb2JzZXJ2ZWRwYXRoLmggICAgICBcCisgICAgIGlidXNwYW5lbHNlcnZpY2Uu aCAgICAgIFwKK2RpZmYgLS1naXQgYS9zcmMvaWJ1c2VuZ2luZS5jIGIvc3JjL2lidXNlbmdpbmUu YworaW5kZXggYzdhMGFjNzguLjRlMTNiMjNkIDEwMDY0NAorLS0tIGEvc3JjL2lidXNlbmdpbmUu YworKysrIGIvc3JjL2lidXNlbmdpbmUuYworQEAgLTMsNyArMyw3IEBACisgLyogaWJ1cyAtIFRo ZSBJbnB1dCBCdXMKKyAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMyBQZW5nIEh1YW5nIDxzaGF3 bi5wLmh1YW5nQGdtYWlsLmNvbT4KKyAgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyNSBUYWthbyBG dWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KKy0gKiBDb3B5cmlnaHQgKEMpIDIw MDgtMjAyMSBSZWQgSGF0LCBJbmMuCisrICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjUgUmVkIEhh dCwgSW5jLgorICAqCisgICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKK0BAIC0zMDIsNiArMzAyLDEzIEBAIHN0YXRp YyBjb25zdCBnY2hhciBpbnRyb3NwZWN0aW9uX3htbFtdID0KKyAgICAgIiAgICA8c2lnbmFsIG5h bWU9J1BhbmVsRXh0ZW5zaW9uJz4iCisgICAgICIgICAgICA8YXJnIHR5cGU9J3YnIG5hbWU9J2Rh dGEnIC8+IgorICAgICAiICAgIDwvc2lnbmFsPiIKKysgICAgIiAgICA8c2lnbmFsIG5hbWU9J1Nl bmRNZXNzYWdlJz4iCisrICAgICIgICAgICA8YXJnIHR5cGU9J3YnIG5hbWU9J21lc3NhZ2UnIC8+ IgorKyAgICAiICAgICAgPGFubm90YXRpb24gbmFtZT0nb3JnLmd0ay5HREJ1cy5TaW5jZSdcbiIK KysgICAgIiAgICAgICAgICB2YWx1ZT0nMS41LjMzJyAvPlxuIgorKyAgICAiICAgICAgPGFubm90 YXRpb24gbmFtZT0nb3JnLmd0ay5HREJ1cy5Eb2NTdHJpbmcnXG4iCisrICAgICIgICAgICAgICAg dmFsdWU9J1N0YWJpbGl0eTogVW5zdGFibGUnIC8+XG4iCisrICAgICIgICAgPC9zaWduYWw+Igor ICAgICAvKiBGSVhNRSBwcm9wZXJ0aWVzICovCisgICAgICIgICAgPHByb3BlcnR5IG5hbWU9J0Nv bnRlbnRUeXBlJyB0eXBlPScodXUpJyBhY2Nlc3M9J3dyaXRlJyAvPiIKKyAgICAgIiAgICA8cHJv cGVydHkgbmFtZT0nRm9jdXNJZCcgdHlwZT0nKGIpJyBhY2Nlc3M9J3JlYWQnIC8+IgorQEAgLTE4 MTIsMTIgKzE4MTksMTcgQEAgaWJ1c19lbmdpbmVfZW1pdF9zaWduYWwgKElCdXNFbmdpbmUgICpl bmdpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICpzaWduYWxfbmFt ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnQgICAgKnBhcmFtZXRlcnMpCisg eworKyAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKyAgICAgaWJ1c19zZXJ2aWNlX2VtaXRfc2ln bmFsICgoSUJ1c1NlcnZpY2UgKillbmdpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQlVTX0lOVEVSRkFDRV9F TkdJTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsX25hbWUsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycywKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBOVUxMKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJy b3IpOworKyAgICBpZiAoZXJyb3IpIHsKKysgICAgICAgIGdfd2FybmluZyAoIkZhaWxlZCB0byBl bWl0ICVzIHNpZ25hbDogJXMiLCBzaWduYWxfbmFtZSwgZXJyb3ItPm1lc3NhZ2UpOworKyAgICAg ICAgZ19lcnJvcl9mcmVlIChlcnJvcik7CisrICAgIH0KKyB9CisgCisgc3RhdGljIHZvaWQKK0BA IC0yMTk5LDMgKzIyMTEsMjAgQEAgaWJ1c19lbmdpbmVfZ2V0X25hbWUgKElCdXNFbmdpbmUgKmVu Z2luZSkKKyAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKElCVVNfSVNfRU5HSU5FIChlbmdpbmUp LCBOVUxMKTsKKyAgICAgcmV0dXJuIGVuZ2luZS0+cHJpdi0+ZW5naW5lX25hbWU7CisgfQorKwor K3ZvaWQKKytpYnVzX2VuZ2luZV9zZW5kX21lc3NhZ2UgKElCdXNFbmdpbmUgICplbmdpbmUsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzTWVzc2FnZSAqbWVzc2FnZSkKKyt7CisrICAg IEdWYXJpYW50ICp2YXJpYW50OworKworKyAgICBnX3JldHVybl9pZl9mYWlsIChJQlVTX0lTX0VO R0lORSAoZW5naW5lKSk7CisrICAgIGdfcmV0dXJuX2lmX2ZhaWwgKElCVVNfSVNfTUVTU0FHRSAo bWVzc2FnZSkpOworKyAgICB2YXJpYW50ID0gaWJ1c19zZXJpYWxpemFibGVfc2VyaWFsaXplICgo SUJ1c1NlcmlhbGl6YWJsZSAqKW1lc3NhZ2UpOworKyAgICBpYnVzX2VuZ2luZV9lbWl0X3NpZ25h bCAoZW5naW5lLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNlbmRNZXNzYWdlIiwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3ICgiKHYpIiwgdmFy aWFudCkpOworKyAgICBpZiAoZ19vYmplY3RfaXNfZmxvYXRpbmcgKG1lc3NhZ2UpKSB7CisrICAg ICAgICBnX29iamVjdF91bnJlZiAobWVzc2FnZSk7CisrICAgIH0KKyt9CitkaWZmIC0tZ2l0IGEv c3JjL2lidXNlbmdpbmUuaCBiL3NyYy9pYnVzZW5naW5lLmgKK2luZGV4IDZhZjBlODU2Li5jZGM5 NjMzMSAxMDA2NDQKKy0tLSBhL3NyYy9pYnVzZW5naW5lLmgKKysrKyBiL3NyYy9pYnVzZW5naW5l LmgKK0BAIC0yLDggKzIsOCBAQAorIC8qIHZpbTpzZXQgZXQgc3RzPTQ6ICovCisgLyogaWJ1cyAt IFRoZSBJbnB1dCBCdXMKKyAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMyBQZW5nIEh1YW5nIDxz aGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KKy0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMiBUYWth byBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KKy0gKiBDb3B5cmlnaHQgKEMp IDIwMDgtMjAyMiBSZWQgSGF0LCBJbmMuCisrICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjUgVGFr YW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CisrICogQ29weXJpZ2h0IChD KSAyMDA4LTIwMjUgUmVkIEhhdCwgSW5jLgorICAqCisgICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAqIG1vZGlmeSBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKK0BAIC00Myw2 ICs0Myw3IEBACisgI2luY2x1ZGUgImlidXNzZXJ2aWNlLmgiCisgI2luY2x1ZGUgImlidXNhdHRy aWJ1dGUuaCIKKyAjaW5jbHVkZSAiaWJ1c2xvb2t1cHRhYmxlLmgiCisrI2luY2x1ZGUgImlidXNt ZXNzYWdlLmgiCisgI2luY2x1ZGUgImlidXNwcm9wbGlzdC5oIgorIAorIC8qCitAQCAtNjUsNiAr NjYsMjQgQEAKKyAKKyBHX0JFR0lOX0RFQ0xTCisgCisrLyoqCisrICogSUJ1c0VuZ2luZU1zZ0Nv ZGU6CisrICogQElCVVNfRU5HSU5FX01TR19DT0RFX0dFTkVSQUw6IEdlbmVyaWMgbWVzc2FnZSBm b3IgRW5naW5lCisrICogQElCVVNfRU5HSU5FX01TR19DT0RFX0lOVkFMSURfQ09NUE9TRV9TRVFV RU5DRTogVXNlcidzIHR5cGluZyBmYWlsdXJlCisrICogICAgICAgICBhZ2FpbnN0IHRoZSBkZWZp bml0aW9uIG9mIHRoZSBjb21wb3NlIGZpbGVzLgorKyAqCisrICogTWVzc2FnZSBjb2RlcyBpbiB0 aGUgYElCdXNNZXNzYWdlRG9tYWluYCBkb21haW4gZm9yIEVuZ2luZQorKyAqIFNlZSBhbHNvICNJ QnVzTWVzc2FnZSwgaWJ1c19lbmdpbmVfc2VuZF9tZXNzYWdlKCkKKysgKgorKyAqIFNpbmNlOiAx LjUuMzMKKysgKiBTdGFiaWxpdHk6IFVuc3RhYmxlCisrICovCisrdHlwZWRlZiBlbnVtCisrewor KyAgSUJVU19FTkdJTkVfTVNHX0NPREVfR0VORVJBTCwKKysgIElCVVNfRU5HSU5FX01TR19DT0RF X0lOVkFMSURfQ09NUE9TRV9TRVFVRU5DRQorK30gSUJ1c0VuZ2luZU1zZ0NvZGU7CisrCisgdHlw ZWRlZiBzdHJ1Y3QgX0lCdXNFbmdpbmUgSUJ1c0VuZ2luZTsKKyB0eXBlZGVmIHN0cnVjdCBfSUJ1 c0VuZ2luZUNsYXNzIElCdXNFbmdpbmVDbGFzczsKKyB0eXBlZGVmIHN0cnVjdCBfSUJ1c0VuZ2lu ZVByaXZhdGUgSUJ1c0VuZ2luZVByaXZhdGU7CitAQCAtNDY5LDUgKzQ4OCwxOCBAQCB2b2lkIGli dXNfZW5naW5lX2dldF9jb250ZW50X3R5cGUgICAgICAgKElCdXNFbmdpbmUgICAgICAgICAqZW5n aW5lLAorICAqLworIGNvbnN0IGdjaGFyICppYnVzX2VuZ2luZV9nZXRfbmFtZSAgICAgICAoSUJ1 c0VuZ2luZSAgICAgICAgICplbmdpbmUpOworIAorKy8qKgorKyAqIGlidXNfZW5naW5lX3NlbmRf bWVzc2FnZToKKysgKiBAZW5naW5lOiBBbiAjSUJ1c0VuZ2luZS4KKysgKiBAbWVzc2FnZTogQW4g I0lCdXNNZXNzYWdlLgorKyAqCisrICogU2VuZCBhIG1lc3NhZ2UgdG8gdGhlIEVuZ2luZSBmb3Ig dGhlIGZvY3VzLWxlc3Mgbm90aWZpY2F0aW9uIHBvcHVwLgorKyAqIFRoaXMgaXMgdXNlZCBmb3Ig dGhlIHVzZXIgZXJyb3JzIGluIFdheWxhbmQgbWFpbmx5IGJ1dCBpbiBYb3JnIHRvby4KKysgKgor KyAqIFNpbmNlOiAxLjUuMzMKKysgKiBTdGFiaWxpdHk6IFVuc3RhYmxlCisrICovCisrdm9pZCAg ICAgICAgIGlidXNfZW5naW5lX3NlbmRfbWVzc2FnZSAgIChJQnVzRW5naW5lICAgICAgICAgKmVu Z2luZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNNZXNz YWdlICAgICAgICAqbWVzc2FnZSk7CisgR19FTkRfREVDTFMKKyAjZW5kaWYKK2RpZmYgLS1naXQg YS9zcmMvaWJ1c2VuZ2luZXNpbXBsZS5jIGIvc3JjL2lidXNlbmdpbmVzaW1wbGUuYworaW5kZXgg ZTkzYzYxZjUuLjRlMGJhNDBmIDEwMDY0NAorLS0tIGEvc3JjL2lidXNlbmdpbmVzaW1wbGUuYwor KysrIGIvc3JjL2lidXNlbmdpbmVzaW1wbGUuYworQEAgLTMsNyArMyw3IEBACisgLyogaWJ1cyAt IFRoZSBJbnB1dCBCdXMKKyAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgUGVuZyBIdWFuZyA8c2hhd24u cC5odWFuZ0BnbWFpbC5jb20+CisgICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjUgVGFrYW8gRnVq aXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CistICogQ29weXJpZ2h0IChDKSAyMDE0 LTIwMTcgUmVkIEhhdCwgSW5jLgorKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDI1IFJlZCBIYXQs IEluYy4KKyAgKgorICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCitAQCAtMzYsNiArMzYsNyBAQAorIAorICNpbmNs dWRlIDxtZW1vcnkuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisrI2luY2x1ZGUgPGdsaWIvZ2kx OG4tbGliLmg+CisgCisgI2RlZmluZSBJQlVTX0VOR0lORV9TSU1QTEVfR0VUX1BSSVZBVEUobykg IFwKKyAgICAoKElCdXNFbmdpbmVTaW1wbGVQcml2YXRlICopaWJ1c19lbmdpbmVfc2ltcGxlX2dl dF9pbnN0YW5jZV9wcml2YXRlIChvKSkKK0BAIC0yMDQsNiArMjA1LDI3IEBAIGlidXNfZW5naW5l X3NpbXBsZV9kZXN0cm95IChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUpCisgICAgICAgICBJQlVT X09CSkVDVCAoc2ltcGxlKSk7CisgfQorIAorK3N0YXRpYyB2b2lkCisraWJ1c19lbmdpbmVfc2lt cGxlX3NlbmRfbWVzc2FnZV93aXRoX2NvZGUgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c0VuZ2luZU1zZ0Nv ZGUgY29kZSkKKyt7CisrICAgIElCdXNNZXNzYWdlICptZXNzYWdlOworKworKyAgICBnX3JldHVy bl9pZl9mYWlsIChJQlVTX0lTX0VOR0lORV9TSU1QTEUgKHNpbXBsZSkpOworKyAgICBtZXNzYWdl ID0gaWJ1c19tZXNzYWdlX25ldyAoCisrICAgICAgICAgICAgSUJVU19NRVNTQUdFX0RPTUFJTl9F TkdJTkUsCisrICAgICAgICAgICAgY29kZSwKKysgICAgICAgICAgICBfKCJEZXRlY3QgdW5yZWdp c3RlcmVkIGNoYXJhY3RlciBpbiB5b3VyIGNvbXBvc2Ugc2VxdWVuY2UiKSwKKysgICAgICAgICAg ICBfKCJUaGUgY2hhcmFjdGVyIHlvdSBqdXN0IGlucHV0IGlzIG5vdCByZWNvZ25pemVkIGFzIGEg dmFsaWQgIiBcCisrICAgICAgICAgICAgICAicGFydCBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZSBj b21wb3NlIHNlcXVlbmNlIGFuZCB0aGUgIiBcCisrICAgICAgICAgICAgICAiY2hhcmFjdGVyIHdh cyBjYW5jZWxsZWQuIFRyeSBpbnB1dHRpbmcgdGhlIGNvcnJlY3QgY2hhcmFjdGVyICIgXAorKyAg ICAgICAgICAgICAgInRvIHRoZSBjb21wb3NlIHNlcXVlbmNlIGFnYWluLCBvciBwcmVzcyBFc2Nh cGUga2V5IHRvICIgXAorKyAgICAgICAgICAgICAgInRlcm1pbmF0ZSB3aG9sZSB0aGUgY29tcG9z ZSBzZXF1ZW5jZS4iKSwKKysgICAgICAgICAgICAgInRpbWVvdXQiLCA1LAorKyAgICAgICAgICAg ICBOVUxMKTsKKysgICAgaWJ1c19lbmdpbmVfc2VuZF9tZXNzYWdlIChJQlVTX0VOR0lORSAoc2lt cGxlKSwgbWVzc2FnZSk7CisrfQorKworIHN0YXRpYyB2b2lkCisgaWJ1c19lbmdpbmVfc2ltcGxl X2ZvY3VzX2luIChJQnVzRW5naW5lICplbmdpbmUpCisgeworQEAgLTY3Nyw3ICs2OTksOSBAQCBu b19zZXF1ZW5jZV9tYXRjaGVzIChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCisgICAgICAgICBw cml2LT5jb21wb3NlX2J1ZmZlclswXSA9IDA7CisgICAgICAgICBpZiAobl9jb21wb3NlID4gMSkg eworICAgICAgICAgICAgIC8qIEludmFsaWQgc2VxdWVuY2UgKi8KKy0gICAgICAgICAgICAvKiBG SVhNRSBiZWVwX3dpbmRvdyAoZXZlbnQtPndpbmRvdyk7ICovCisrICAgICAgICAgICAgaWJ1c19l bmdpbmVfc2ltcGxlX3NlbmRfbWVzc2FnZV93aXRoX2NvZGUgKAorKyAgICAgICAgICAgICAgICAg ICAgc2ltcGxlLAorKyAgICAgICAgICAgICAgICAgICAgSUJVU19FTkdJTkVfTVNHX0NPREVfSU5W QUxJRF9DT01QT1NFX1NFUVVFTkNFKTsKKyAgICAgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVf dXBkYXRlX3ByZWVkaXRfdGV4dCAoc2ltcGxlKTsKKyAgICAgICAgICAgICByZXR1cm4gVFJVRTsK KyAgICAgICAgIH0KK0BAIC05NDgsNyArOTcyLDkgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3Byb2Nl c3Nfa2V5X2V2ZW50IChJQnVzRW5naW5lICplbmdpbmUsCisgICAgICAgICAgICAgICAgIHByaXYt Pm1vZGlmaWVyc19kcm9wcGVkID0gVFJVRTsKKyAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg ICAgICAgICAgICAvKiBpbnZhbGlkIGhleCBzZXF1ZW5jZSAqLworLSAgICAgICAgICAgICAgICAv KiBGSVhNRSBiZWVwX3dpbmRvdyAoZXZlbnQtPndpbmRvdyk7ICovCisrICAgICAgICAgICAgICAg IGlidXNfZW5naW5lX3NpbXBsZV9zZW5kX21lc3NhZ2Vfd2l0aF9jb2RlICgKKysgICAgICAgICAg ICAgICAgICAgICAgICBzaW1wbGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgSUJVU19FTkdJ TkVfTVNHX0NPREVfSU5WQUxJRF9DT01QT1NFX1NFUVVFTkNFKTsKKyAgICAgICAgICAgICAgICAg Z19zdHJpbmdfc2V0X3NpemUgKHByaXYtPnRlbnRhdGl2ZV9tYXRjaCwgMCk7CisgICAgICAgICAg ICAgICAgIGdfY2xlYXJfcG9pbnRlciAoJnByaXYtPnRlbnRhdGl2ZV9lbW9qaSwgZ19mcmVlKTsK KyAgICAgICAgICAgICAgICAgcHJpdi0+aW5faGV4X3NlcXVlbmNlID0gRkFMU0U7CitAQCAtOTcx LDcgKzk5Nyw5IEBAIGlidXNfZW5naW5lX3NpbXBsZV9wcm9jZXNzX2tleV9ldmVudCAoSUJ1c0Vu Z2luZSAqZW5naW5lLAorICAgICAgICAgICAgICAgICBwcml2LT5tb2RpZmllcnNfZHJvcHBlZCA9 IFRSVUU7CisgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgLyogaW52YWxp ZCBoZXggc2VxdWVuY2UgKi8KKy0gICAgICAgICAgICAgICAgLyogRklYTUUgYmVlcF93aW5kb3cg KGV2ZW50LT53aW5kb3cpOyAqLworKyAgICAgICAgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVf c2VuZF9tZXNzYWdlX3dpdGhfY29kZSAoCisrICAgICAgICAgICAgICAgICAgICAgICAgc2ltcGxl LAorKyAgICAgICAgICAgICAgICAgICAgICAgIElCVVNfRU5HSU5FX01TR19DT0RFX0lOVkFMSURf Q09NUE9TRV9TRVFVRU5DRSk7CisgICAgICAgICAgICAgICAgIGdfc3RyaW5nX3NldF9zaXplIChw cml2LT50ZW50YXRpdmVfbWF0Y2gsIDApOworICAgICAgICAgICAgICAgICBnX2NsZWFyX3BvaW50 ZXIgKCZwcml2LT50ZW50YXRpdmVfZW1vamksIGdfZnJlZSk7CisgICAgICAgICAgICAgICAgIHBy aXYtPmluX2hleF9zZXF1ZW5jZSA9IEZBTFNFOworQEAgLTEwMjAsNyArMTA0OCw5IEBAIGlidXNf ZW5naW5lX3NpbXBsZV9wcm9jZXNzX2tleV9ldmVudCAoSUJ1c0VuZ2luZSAqZW5naW5lLAorICAg ICAgICAgfQorICAgICAgICAgZWxzZSBpZiAoaXNfaGV4X2VuZCkgeworICAgICAgICAgICAgIC8q IGludmFsaWQgaGV4IHNlcXVlbmNlICovCistICAgICAgICAgICAgLyogRklYTUUgYmVlcF93aW5k b3cgKGV2ZW50LT53aW5kb3cpOyAqLworKyAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV9z ZW5kX21lc3NhZ2Vfd2l0aF9jb2RlICgKKysgICAgICAgICAgICAgICAgICAgIHNpbXBsZSwKKysg ICAgICAgICAgICAgICAgICAgIElCVVNfRU5HSU5FX01TR19DT0RFX0lOVkFMSURfQ09NUE9TRV9T RVFVRU5DRSk7CisgICAgICAgICAgICAgZ19zdHJpbmdfc2V0X3NpemUgKHByaXYtPnRlbnRhdGl2 ZV9tYXRjaCwgMCk7CisgICAgICAgICAgICAgZ19jbGVhcl9wb2ludGVyICgmcHJpdi0+dGVudGF0 aXZlX2Vtb2ppLCBnX2ZyZWUpOworICAgICAgICAgICAgIHByaXYtPmluX2hleF9zZXF1ZW5jZSA9 IEZBTFNFOworQEAgLTExMTksNyArMTE0OSw5IEBAIGlidXNfZW5naW5lX3NpbXBsZV9wcm9jZXNz X2tleV9ldmVudCAoSUJ1c0VuZ2luZSAqZW5naW5lLAorICAgICAgICAgZWxzZSB7CisgICAgICAg ICAgICAgLyogaW52YWxpZCBoZXggc2VxdWVuY2UgKi8KKyAgICAgICAgICAgICBpZiAobl9jb21w b3NlID4gMCkgeworLSAgICAgICAgICAgICAgICAvKiBGSVhNRSBiZWVwX3dpbmRvdyAoZXZlbnQt PndpbmRvdyk7ICovCisrICAgICAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV9zZW5kX21l c3NhZ2Vfd2l0aF9jb2RlICgKKysgICAgICAgICAgICAgICAgICAgICAgICBzaW1wbGUsCisrICAg ICAgICAgICAgICAgICAgICAgICAgSUJVU19FTkdJTkVfTVNHX0NPREVfSU5WQUxJRF9DT01QT1NF X1NFUVVFTkNFKTsKKyAgICAgICAgICAgICAgICAgZ19zdHJpbmdfc2V0X3NpemUgKHByaXYtPnRl bnRhdGl2ZV9tYXRjaCwgMCk7CisgICAgICAgICAgICAgICAgIHByaXYtPmluX2hleF9zZXF1ZW5j ZSA9IEZBTFNFOworICAgICAgICAgICAgICAgICBwcml2LT5jb21wb3NlX2J1ZmZlclswXSA9IDA7 CitAQCAtMTE4NCw3ICsxMjE2LDkgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3Byb2Nlc3Nfa2V5X2V2 ZW50IChJQnVzRW5naW5lICplbmdpbmUsCisgICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAg ICAgICB9IGVsc2UgaWYgKCFpc19oZXhfZW5kKSB7CisgICAgICAgICAgICAgLyogbm9uLWhleCBj aGFyYWN0ZXIgaW4gaGV4IHNlcXVlbmNlICovCistICAgICAgICAgICAgLyogRklYTUUgYmVlcF93 aW5kb3cgKGV2ZW50LT53aW5kb3cpOyAqLworKyAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBs ZV9zZW5kX21lc3NhZ2Vfd2l0aF9jb2RlICgKKysgICAgICAgICAgICAgICAgICAgIHNpbXBsZSwK KysgICAgICAgICAgICAgICAgICAgIElCVVNfRU5HSU5FX01TR19DT0RFX0lOVkFMSURfQ09NUE9T RV9TRVFVRU5DRSk7CisgICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgICB9CisgICAg IH0gZWxzZSBpZiAocHJpdi0+aW5fZW1vamlfc2VxdWVuY2UpIHsKK0BAIC0xMjQzLDE1ICsxMjc3 LDE4IEBAIGlidXNfZW5naW5lX3NpbXBsZV9wcm9jZXNzX2tleV9ldmVudCAoSUJ1c0VuZ2luZSAq ZW5naW5lLAorICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgICAgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAvKiBpbnZhbGlkIGhleCBzZXF1ZW5j ZSAqLworLSAgICAgICAgICAgICAgICAgICAgLyogRklYTUUgYmVlcF93aW5kb3cgKGV2ZW50LT53 aW5kb3cpOyAqLworKyAgICAgICAgICAgICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX3NlbmRf bWVzc2FnZV93aXRoX2NvZGUgKAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW1wbGUs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCVVNfRU5HSU5FX01TR19DT0RFX0lOVkFM SURfQ09NUE9TRV9TRVFVRU5DRSk7CisgICAgICAgICAgICAgICAgICAgICBnX3N0cmluZ19zZXRf c2l6ZSAocHJpdi0+dGVudGF0aXZlX21hdGNoLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgIHBy aXYtPmluX2hleF9zZXF1ZW5jZSA9IEZBTFNFOworICAgICAgICAgICAgICAgICAgICAgcHJpdi0+ Y29tcG9zZV9idWZmZXJbMF0gPSAwOworICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAg fSBlbHNlIGlmICghY2hlY2tfaGV4IChzaW1wbGUsIG5fY29tcG9zZSkpIHsKKysgICAgICAgICAg ICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX3NlbmRfbWVzc2FnZV93aXRoX2NvZGUgKAorKyAgICAg ICAgICAgICAgICAgICAgICAgIHNpbXBsZSwKKysgICAgICAgICAgICAgICAgICAgICAgICBJQlVT X0VOR0lORV9NU0dfQ09ERV9JTlZBTElEX0NPTVBPU0VfU0VRVUVOQ0UpOworICAgICAgICAgICAg IH0KKy0gICAgICAgICAgICBlbHNlIGlmICghY2hlY2tfaGV4IChzaW1wbGUsIG5fY29tcG9zZSkp CistICAgICAgICAgICAgICAgIC8qIEZJWE1FIGJlZXBfd2luZG93IChldmVudC0+d2luZG93KTsg Ki8KKy0gICAgICAgICAgICAgICAgOworICAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV91 cGRhdGVfcHJlZWRpdF90ZXh0IChzaW1wbGUpOworIAorICAgICAgICAgICAgIHJldHVybiBUUlVF OworQEAgLTEzNDMsNyArMTM4MCw5IEBAIGlidXNfZW5naW5lX3NpbXBsZV9wcm9jZXNzX2tleV9l dmVudCAoSUJ1c0VuZ2luZSAqZW5naW5lLAorIAorICAgICAgICAgICAgIG5fY29tcG9zZSA9IG5f Y29tcG9zZV9wcmV2OworICAgICAgICAgICAgIGdfYXNzZXJ0IChuX2NvbXBvc2UgPCAoQ09NUE9T RV9CVUZGRVJfU0laRSArIDEpKTsKKy0gICAgICAgICAgICAvKiBGSVhNRSBiZWVwX3dpbmRvdyAo ZXZlbnQtPndpbmRvdyk7ICovCisrICAgICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX3NlbmRf bWVzc2FnZV93aXRoX2NvZGUgKAorKyAgICAgICAgICAgICAgICAgICAgc2ltcGxlLAorKyAgICAg ICAgICAgICAgICAgICAgSUJVU19FTkdJTkVfTVNHX0NPREVfSU5WQUxJRF9DT01QT1NFX1NFUVVF TkNFKTsKKyAgICAgICAgICAgICBiYWNrdXBfY2hhciA9IHByaXYtPmNvbXBvc2VfYnVmZmVyW25f Y29tcG9zZV07CisgICAgICAgICAgICAgcHJpdi0+Y29tcG9zZV9idWZmZXJbbl9jb21wb3NlXSA9 IDA7CisgICAgICAgICAgICAgaWYgKGlidXNfZW5naW5lX3NpbXBsZV9jaGVja19hbGxfY29tcG9z ZV90YWJsZSAoc2ltcGxlLCBuX2NvbXBvc2UpKQorZGlmZiAtLWdpdCBhL3NyYy9pYnVzbWVzc2Fn ZS5jIGIvc3JjL2lidXNtZXNzYWdlLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAw MDAwMC4uODllMzE3NzEKKy0tLSAvZGV2L251bGwKKysrKyBiL3NyYy9pYnVzbWVzc2FnZS5jCitA QCAtMCwwICsxLDU2MiBAQAorKy8qIC0qLSBtb2RlOiBDOyBjLWJhc2ljLW9mZnNldDogNDsgaW5k ZW50LXRhYnMtbW9kZTogbmlsOyAtKi0gKi8KKysvKiB2aW06c2V0IGV0IHN0cz00OiAqLworKy8q IGJ1cyAtIFRoZSBJbnB1dCBCdXMKKysgKiBDb3B5cmlnaHQgKEMpIDIwMjUgVGFrYW8gRnVqaXdh cmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CisrICogQ29weXJpZ2h0IChDKSAyMDI1IFJl ZCBIYXQsIEluYy4KKysgKgorKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICogdmVyc2lvbiAy LjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisrICoKKysgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKysgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICogTGVzc2VyIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKgorKyAqIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK KysgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRo ZSBGcmVlIFNvZnR3YXJlCisrICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0 LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMQorKyAqIFVTQQorKyAqLworKyNp bmNsdWRlICJpYnVzbWVzc2FnZS5oIgorKyNpbmNsdWRlICJpYnVzaW50ZXJuYWwuaCIKKysKKytl bnVtIHsKKysgICAgTEFTVF9TSUdOQUwsCisrfTsKKysKKytlbnVtIHsKKysgICAgUFJPUF8wID0g MCwKKysgICAgUFJPUF9ET01BSU4sCisrICAgIFBST1BfQ09ERSwKKysgICAgUFJPUF9USVRMRSwK KysgICAgUFJPUF9ERVNDUklQVElPTiwKKysgICAgUFJPUF9USU1FT1VULAorKyAgICBQUk9QX1BS T0dSRVNTLAorKyAgICBQUk9QX1NFUklBTAorK307CisrCisrCisrLyogSUJ1c01lc3NhZ2VQcml2 ICovCisrc3RydWN0IF9JQnVzTWVzc2FnZVByaXZhdGUgeworKyAgICBndWNoYXIgICAgICBkb21h aW47CisrICAgIGd1Y2hhciAgICAgIGNvZGU7CisrICAgIGdjaGFyICAgICAgKnRpdGxlOworKyAg ICBnY2hhciAgICAgICpkZXNjcmlwdGlvbjsKKysgICAgaW50ICAgICAgICAgdGltZW91dDsKKysg ICAgaW50ICAgICAgICAgcHJvZ3Jlc3M7CisrICAgIGd1aW50ICAgICAgIHNlcmlhbDsKKyt9Owor KworKworKyNkZWZpbmUgaWJ1c19tZXNzYWdlX2dldF9jb25zdF9pbnN0YW5jZV9wcml2YXRlKHNl bGYpIFwKKysgICAgR19TVFJVQ1RfTUVNQkVSX1AgKChzZWxmKSwgSUJ1c01lc3NhZ2VfcHJpdmF0 ZV9vZmZzZXQpCisrCisrI2RlZmluZSBJQlVTX01FU1NBR0VfR0VUX1BSSVZBVEUobykgIFwKKysg ICAgKChJQnVzTWVzc2FnZVByaXZhdGUgKilpYnVzX21lc3NhZ2VfZ2V0X2luc3RhbmNlX3ByaXZh dGUgKG8pKQorKyNkZWZpbmUgSUJVU19NRVNTQUdFX0dFVF9DT05TVF9QUklWQVRFKG8pICBcCisr ICAgICgoY29uc3QgSUJ1c01lc3NhZ2VQcml2YXRlICopaWJ1c19tZXNzYWdlX2dldF9jb25zdF9p bnN0YW5jZV9wcml2YXRlIChvKSkKKysKKysjZGVmaW5lIERFRkFVTFRfVElNRU9VVCAtMQorKyNk ZWZpbmUgREVGQVVMVF9QUk9HUkVTUyAtMQorKworKy8vIHN0YXRpYyBndWludCAgICAgICAgICAg IF9zaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCB9OworKworKy8qIGZ1bmN0aW9ucyBwcm90b3R5 cGUgKi8KKytzdGF0aWMgdm9pZCAgICAgaWJ1c19tZXNzYWdlX3NldF9wcm9wZXJ0eSAgICAgIChJ QnVzTWVzc2FnZSAgICAgICAgICAgICptc2csCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgICBwcm9wX2lkLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdWYWx1 ZSAgICAgICAgICAgKnZhbHVlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdQYXJhbVNwZWMgICAgICAgICAgICAgKnBzcGVjKTsKKytzdGF0aWMgdm9p ZCAgICAgaWJ1c19tZXNzYWdlX2dldF9wcm9wZXJ0eSAgICAgIChJQnVzTWVzc2FnZSAgICAgICAg ICAgICptc2csCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ3VpbnQgICAgICAgICAgICAgICAgICAgcHJvcF9pZCwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFsdWUgICAgICAgICAgICAgICAgICp2YWx1 ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUGFy YW1TcGVjICAgICAgICAgICAgICpwc3BlYyk7Cisrc3RhdGljIHZvaWQgICAgIGlidXNfbWVzc2Fn ZV9kZXN0cm95ICAgICAgICAgICAoSUJ1c01lc3NhZ2UgICAgICAgICAgICAqbXNnKTsKKytzdGF0 aWMgZ2Jvb2xlYW4gaWJ1c19tZXNzYWdlX3NlcmlhbGl6ZSAgICAgICAgIChJQnVzTWVzc2FnZSAg ICAgICAgICAgICptc2csCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR1ZhcmlhbnRCdWlsZGVyCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpidWlsZGVyKTsKKytzdGF0 aWMgZ2ludCAgICAgaWJ1c19tZXNzYWdlX2Rlc2VyaWFsaXplICAgICAgIChJQnVzTWVzc2FnZSAg ICAgICAgICAgICptc2csCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR1ZhcmlhbnQKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnZhcmlhbnQpOworK3N0YXRpYyBnYm9v bGVhbiBpYnVzX21lc3NhZ2VfY29weSAgICAgICAgICAgICAgKElCdXNNZXNzYWdlICAgICAgICAg ICAgKmRlc3QsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgSUJ1c01lc3NhZ2UgICAgICAqc3JjKTsKKysKKytHX0RFRklORV9UWVBFX1dJVEhf UFJJVkFURSAoSUJ1c01lc3NhZ2UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlidXNf bWVzc2FnZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJVU19UWVBFX1NFUklBTEla QUJMRSkKKysKKysKKytzdGF0aWMgdm9pZAorK2lidXNfbWVzc2FnZV9jbGFzc19pbml0IChJQnVz TWVzc2FnZUNsYXNzICpjbGFzcykKKyt7CisrICAgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFz cyA9IEdfT0JKRUNUX0NMQVNTIChjbGFzcyk7CisrICAgIElCdXNPYmplY3RDbGFzcyAqb2JqZWN0 X2NsYXNzID0gSUJVU19PQkpFQ1RfQ0xBU1MgKGNsYXNzKTsKKysgICAgSUJ1c1NlcmlhbGl6YWJs ZUNsYXNzICpzZXJpYWxpemFibGVfY2xhc3MgPSBJQlVTX1NFUklBTElaQUJMRV9DTEFTUyAoY2xh c3MpOworKworKyAgICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPQorKyAgICAgICAgICAg IChHT2JqZWN0U2V0UHJvcGVydHlGdW5jKWlidXNfbWVzc2FnZV9zZXRfcHJvcGVydHk7CisrICAg IGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9CisrICAgICAgICAgICAgKEdPYmplY3RHZXRQ cm9wZXJ0eUZ1bmMpaWJ1c19tZXNzYWdlX2dldF9wcm9wZXJ0eTsKKysgICAgb2JqZWN0X2NsYXNz LT5kZXN0cm95ID0gKElCdXNPYmplY3REZXN0cm95RnVuYylpYnVzX21lc3NhZ2VfZGVzdHJveTsK KysKKysgICAgc2VyaWFsaXphYmxlX2NsYXNzLT5zZXJpYWxpemUgICA9CisrICAgICAgICAgICAg KElCdXNTZXJpYWxpemFibGVTZXJpYWxpemVGdW5jKWlidXNfbWVzc2FnZV9zZXJpYWxpemU7Cisr ICAgIHNlcmlhbGl6YWJsZV9jbGFzcy0+ZGVzZXJpYWxpemUgPQorKyAgICAgICAgICAgIChJQnVz U2VyaWFsaXphYmxlRGVzZXJpYWxpemVGdW5jKWlidXNfbWVzc2FnZV9kZXNlcmlhbGl6ZTsKKysg ICAgc2VyaWFsaXphYmxlX2NsYXNzLT5jb3B5ICAgICAgICA9CisrICAgICAgICAgICAgKElCdXNT ZXJpYWxpemFibGVDb3B5RnVuYylpYnVzX21lc3NhZ2VfY29weTsKKysKKysgICAgLyogaW5zdGFs bCBwcm9wZXJ0aWVzICovCisrICAgIC8qKgorKyAgICAgKiBJQnVzTWVzc2FnZTpkb21haW46Cisr ICAgICAqCisrICAgICAqIFRoZSBkb21haW4gb2YgbWVzc2FnZQorKyAgICAgKi8KKysgICAgZ19v YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKysgICAgICAgICAg ICAgICAgICAgIFBST1BfRE9NQUlOLAorKyAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVj X3VjaGFyICgiZG9tYWluIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAibWVzc2FnZSBkb21h aW4iLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZG9tYWluIG9mIG1lc3NhZ2UiLAor KyAgICAgICAgICAgICAgICAgICAgICAgIDAsCisrICAgICAgICAgICAgICAgICAgICAgICAgR19N QVhVSU5UOCwKKysgICAgICAgICAgICAgICAgICAgICAgICAwLAorKyAgICAgICAgICAgICAgICAg ICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpOworKwor KyAgICAvKioKKysgICAgICogSUJ1c01lc3NhZ2U6Y29kZToKKysgICAgICoKKysgICAgICogVGhl IGNvZGUgb2YgbWVzc2FnZQorKyAgICAgKi8KKysgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w cm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKysgICAgICAgICAgICAgICAgICAgIFBST1BfQ09ERSwK KysgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY191Y2hhciAoImNvZGUiLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIGNvZGUiLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICJUaGUgY29kZSBvZiBtZXNzYWdlIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAwLAor KyAgICAgICAgICAgICAgICAgICAgICAgIEdfTUFYVUlOVDgsCisrICAgICAgICAgICAgICAgICAg ICAgICAgMCwKKysgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdf UEFSQU1fQ09OU1RSVUNUX09OTFkpKTsKKysKKysgICAgLyoqCisrICAgICAqIElCdXNNZXNzYWdl OnRpdGxlOgorKyAgICAgKgorKyAgICAgKiBUaGUgdGl0bGUgb2YgbWVzc2FnZQorKyAgICAgKi8K KysgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKysg ICAgICAgICAgICAgICAgICAgIFBST1BfVElUTEUsCisrICAgICAgICAgICAgICAgICAgICBnX3Bh cmFtX3NwZWNfc3RyaW5nICgidGl0bGUiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJtZXNz YWdlIHRpdGxlIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIHRpdGxlIG9mIG1lc3Nh Z2UiLAorKyAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisrICAgICAgICAgICAgICAgICAg ICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSk7CisrCisr ICAgIC8qKgorKyAgICAgKiBJQnVzTWVzc2FnZTpkZXNjcmlwdGlvbjoKKysgICAgICoKKysgICAg ICogVGhlIGRlc2NyaXB0aW9uIG9mIG1lc3NhZ2UKKysgICAgICovCisrICAgIGdfb2JqZWN0X2Ns YXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisrICAgICAgICAgICAgICAgICAg ICBQUk9QX0RFU0NSSVBUSU9OLAorKyAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3N0 cmluZyAoImRlc2NyaXB0aW9uIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAibWVzc2FnZSBk ZXNjcmlwdGlvbiIsCisrICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBkZXNjcmlwdGlvbiBv ZiBtZXNzYWdlIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAiIiwKKysgICAgICAgICAgICAg ICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKTsK KysKKysgICAgLyoqCisrICAgICAqIElCdXNNZXNzYWdlOnRpbWVvdXQ6CisrICAgICAqCisrICAg ICAqIFRoZSB0aW1lb3V0IG9mIG1lc3NhZ2UKKysgICAgICovCisrICAgIGdfb2JqZWN0X2NsYXNz X2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisrICAgICAgICAgICAgICAgICAgICBQ Uk9QX1RJTUVPVVQsCisrICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfaW50ICgidGlt ZW91dCIsCisrICAgICAgICAgICAgICAgICAgICAgICAgIm1lc3NhZ2UgdGltZW91dCIsCisrICAg ICAgICAgICAgICAgICAgICAgICAgIlRoZSB0aW1lb3V0IG9mIG1lc3NhZ2UiLAorKyAgICAgICAg ICAgICAgICAgICAgICAgIEdfTUlOSU5ULAorKyAgICAgICAgICAgICAgICAgICAgICAgIEdfTUFY SU5ULAorKyAgICAgICAgICAgICAgICAgICAgICAgIERFRkFVTFRfVElNRU9VVCwKKysgICAgICAg ICAgICAgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09O TFkpKTsKKysKKysgICAgLyoqCisrICAgICAqIElCdXNNZXNzYWdlOnByb2dyZXNzOgorKyAgICAg KgorKyAgICAgKiBUaGUgcHJvZ3Jlc3Mgb2YgbWVzc2FnZQorKyAgICAgKi8KKysgICAgZ19vYmpl Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKysgICAgICAgICAgICAg ICAgICAgIFBST1BfUFJPR1JFU1MsCisrICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNf aW50ICgicHJvZ3Jlc3MiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIHByb2dy ZXNzIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIHByb2dyZXNzIG9mIG1lc3NhZ2Ui LAorKyAgICAgICAgICAgICAgICAgICAgICAgIEdfTUlOSU5ULAorKyAgICAgICAgICAgICAgICAg ICAgICAgIEdfTUFYSU5ULAorKyAgICAgICAgICAgICAgICAgICAgICAgIERFRkFVTFRfUFJPR1JF U1MsCisrICAgICAgICAgICAgICAgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFN X0NPTlNUUlVDVF9PTkxZKSk7CisrCisrICAgIC8qKgorKyAgICAgKiBJQnVzTWVzc2FnZTpzZXJp YWw6CisrICAgICAqCisrICAgICAqIFRoZSBzZXJpYWwgb2YgbWVzc2FnZQorKyAgICAgKi8KKysg ICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKysgICAg ICAgICAgICAgICAgICAgIFBST1BfU0VSSUFMLAorKyAgICAgICAgICAgICAgICAgICAgZ19wYXJh bV9zcGVjX3VpbnQgKCJzZXJpYWwiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdl IHNlcmlhbCIsCisrICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBzZXJpYWwgb2YgbWVzc2Fn ZSIsCisrICAgICAgICAgICAgICAgICAgICAgICAgMCwKKysgICAgICAgICAgICAgICAgICAgICAg ICBHX01BWFVJTlQsCisrICAgICAgICAgICAgICAgICAgICAgICAgMCwKKysgICAgICAgICAgICAg ICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKTsK Kyt9CisrCisrCisrc3RhdGljIHZvaWQKKytpYnVzX21lc3NhZ2VfaW5pdCAoSUJ1c01lc3NhZ2Ug Km1zZykKKyt7CisrICAgIElCdXNNZXNzYWdlUHJpdmF0ZSAqcHJpdiA9IElCVVNfTUVTU0FHRV9H RVRfUFJJVkFURSAobXNnKTsKKysgICAgcHJpdi0+dGltZW91dCA9IERFRkFVTFRfVElNRU9VVDsK KysgICAgcHJpdi0+cHJvZ3Jlc3MgPSBERUZBVUxUX1BST0dSRVNTOworK30KKysKKysKKytzdGF0 aWMgdm9pZAorK2lidXNfbWVzc2FnZV9kZXN0cm95IChJQnVzTWVzc2FnZSAqbXNnKQorK3sKKysg ICAgSUJ1c01lc3NhZ2VQcml2YXRlICpwcml2ID0gSUJVU19NRVNTQUdFX0dFVF9QUklWQVRFICht c2cpOworKyAgICBnX2ZyZWUgKHByaXYtPnRpdGxlKTsKKysgICAgZ19mcmVlIChwcml2LT5kZXNj cmlwdGlvbik7CisrCisrICAgIElCVVNfT0JKRUNUX0NMQVNTIChpYnVzX21lc3NhZ2VfcGFyZW50 X2NsYXNzKS0+ZGVzdHJveSAoSUJVU19PQkpFQ1QgKG1zZykpOworK30KKysKKysKKytzdGF0aWMg dm9pZAorK2lidXNfbWVzc2FnZV9zZXRfcHJvcGVydHkgKElCdXNNZXNzYWdlICAqbXNnLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgcHJvcF9pZCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBHVmFsdWUgKnZhbHVlLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdQYXJhbVNwZWMgICAqcHNwZWMpCisreworKyAgICBJQnVzTWVzc2FnZVBy aXZhdGUgKnByaXY7CisrCisrICAgIGdfcmV0dXJuX2lmX2ZhaWwgKElCVVNfSVNfTUVTU0FHRSAo bXNnKSk7CisrICAgIHByaXYgPSBJQlVTX01FU1NBR0VfR0VUX1BSSVZBVEUgKG1zZyk7CisrICAg IHN3aXRjaCAocHJvcF9pZCkgeworKyAgICBjYXNlIFBST1BfRE9NQUlOOgorKyAgICAgICAgZ19h c3NlcnQgKHByaXYtPmRvbWFpbiA9PSAwKTsKKysgICAgICAgIHByaXYtPmRvbWFpbiA9IGdfdmFs dWVfZ2V0X3VjaGFyICh2YWx1ZSk7CisrICAgICAgICBicmVhazsKKysgICAgY2FzZSBQUk9QX0NP REU6CisrICAgICAgICBnX2Fzc2VydCAocHJpdi0+Y29kZSA9PSAwKTsKKysgICAgICAgIHByaXYt PmNvZGUgPSBnX3ZhbHVlX2dldF91Y2hhciAodmFsdWUpOworKyAgICAgICAgYnJlYWs7CisrICAg IGNhc2UgUFJPUF9USVRMRToKKysgICAgICAgIGdfYXNzZXJ0IChwcml2LT50aXRsZSA9PSBOVUxM KTsKKysgICAgICAgIHByaXYtPnRpdGxlID0gZ192YWx1ZV9kdXBfc3RyaW5nICh2YWx1ZSk7Cisr ICAgICAgICBicmVhazsKKysgICAgY2FzZSBQUk9QX0RFU0NSSVBUSU9OOgorKyAgICAgICAgZ19h c3NlcnQgKHByaXYtPmRlc2NyaXB0aW9uID09IE5VTEwpOworKyAgICAgICAgcHJpdi0+ZGVzY3Jp cHRpb24gID0gZ192YWx1ZV9kdXBfc3RyaW5nICh2YWx1ZSk7CisrICAgICAgICBicmVhazsKKysg ICAgY2FzZSBQUk9QX1RJTUVPVVQ6CisrICAgICAgICBnX2Fzc2VydCAocHJpdi0+dGltZW91dCA9 PSBERUZBVUxUX1RJTUVPVVQpOworKyAgICAgICAgcHJpdi0+dGltZW91dCA9IGdfdmFsdWVfZ2V0 X2ludCAodmFsdWUpOworKyAgICAgICAgYnJlYWs7CisrICAgIGNhc2UgUFJPUF9QUk9HUkVTUzoK KysgICAgICAgIGdfYXNzZXJ0IChwcml2LT5wcm9ncmVzcyA9PSBERUZBVUxUX1BST0dSRVNTKTsK KysgICAgICAgIHByaXYtPnByb2dyZXNzID0gZ192YWx1ZV9nZXRfaW50ICh2YWx1ZSk7CisrICAg ICAgICBicmVhazsKKysgICAgY2FzZSBQUk9QX1NFUklBTDoKKysgICAgICAgIGdfYXNzZXJ0IChw cml2LT5zZXJpYWwgPT0gMCk7CisrICAgICAgICBwcml2LT5zZXJpYWwgPSBnX3ZhbHVlX2dldF91 aW50ICh2YWx1ZSk7CisrICAgICAgICBicmVhazsKKysgICAgZGVmYXVsdDoKKysgICAgICAgIEdf T0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAobXNnLCBwcm9wX2lkLCBwc3BlYyk7Cisr ICAgIH0KKyt9CisrCisrCisrc3RhdGljIHZvaWQKKytpYnVzX21lc3NhZ2VfZ2V0X3Byb3BlcnR5 IChJQnVzTWVzc2FnZSAqbXNnLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAg ICAgICBwcm9wX2lkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYWx1ZSAgICAgICp2 YWx1ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBHUGFyYW1TcGVjICAqcHNwZWMpCisr eworKyAgICBzd2l0Y2ggKHByb3BfaWQpIHsKKysgICAgY2FzZSBQUk9QX0RPTUFJTjogeworKyAg ICAgICAgICAgIGludCBkb21haW4gPSBpYnVzX21lc3NhZ2VfZ2V0X2RvbWFpbiAobXNnKTsKKysg ICAgICAgICAgICBnX2Fzc2VydCAoZG9tYWluID4gMCAmJiBkb21haW4gPD0gR19NQVhVSU5UOCk7 CisrICAgICAgICAgICAgZ192YWx1ZV9zZXRfdWNoYXIgKHZhbHVlLCAoZ3VjaGFyKWRvbWFpbik7 CisrICAgICAgICB9CisrICAgICAgICBicmVhazsKKysgICAgY2FzZSBQUk9QX0NPREU6IHsKKysg ICAgICAgICAgICBpbnQgY29kZSA9IGlidXNfbWVzc2FnZV9nZXRfY29kZSAobXNnKTsKKysgICAg ICAgICAgICBnX2Fzc2VydCAoY29kZSA+PSAwICYmIGNvZGUgPD0gR19NQVhVSU5UOCk7CisrICAg ICAgICAgICAgZ192YWx1ZV9zZXRfdWNoYXIgKHZhbHVlLCAoZ3VjaGFyKWNvZGUpOworKyAgICAg ICAgfQorKyAgICAgICAgYnJlYWs7CisrICAgIGNhc2UgUFJPUF9USVRMRToKKysgICAgICAgIGdf dmFsdWVfc2V0X3N0cmluZyAodmFsdWUsIGlidXNfbWVzc2FnZV9nZXRfdGl0bGUgKG1zZykpOwor KyAgICAgICAgYnJlYWs7CisrICAgIGNhc2UgUFJPUF9ERVNDUklQVElPTjoKKysgICAgICAgIGdf dmFsdWVfc2V0X3N0cmluZyAodmFsdWUsIGlidXNfbWVzc2FnZV9nZXRfZGVzY3JpcHRpb24gKG1z ZykpOworKyAgICAgICAgYnJlYWs7CisrICAgIGNhc2UgUFJPUF9USU1FT1VUOgorKyAgICAgICAg Z192YWx1ZV9zZXRfaW50ICh2YWx1ZSwgaWJ1c19tZXNzYWdlX2dldF90aW1lb3V0IChtc2cpKTsK KysgICAgICAgIGJyZWFrOworKyAgICBjYXNlIFBST1BfUFJPR1JFU1M6CisrICAgICAgICBnX3Zh bHVlX3NldF9pbnQgKHZhbHVlLCBpYnVzX21lc3NhZ2VfZ2V0X3Byb2dyZXNzIChtc2cpKTsKKysg ICAgICAgIGJyZWFrOworKyAgICBjYXNlIFBST1BfU0VSSUFMOgorKyAgICAgICAgZ192YWx1ZV9z ZXRfdWludCAodmFsdWUsIGlidXNfbWVzc2FnZV9nZXRfc2VyaWFsIChtc2cpKTsKKysgICAgICAg IGJyZWFrOworKyAgICBkZWZhdWx0OgorKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BS T1BFUlRZX0lEIChtc2csIHByb3BfaWQsIHBzcGVjKTsKKysgICAgfQorK30KKysKKysKKytzdGF0 aWMgZ2Jvb2xlYW4KKytpYnVzX21lc3NhZ2Vfc2VyaWFsaXplIChJQnVzTWVzc2FnZSAgICAgKm1z ZywKKysgICAgICAgICAgICAgICAgICAgICAgICBHVmFyaWFudEJ1aWxkZXIgKmJ1aWxkZXIpCisr eworKyAgICBnYm9vbGVhbiByZXR2YWw7CisrICAgIElCdXNNZXNzYWdlUHJpdmF0ZSAqcHJpdjsK KysKKysgICAgcmV0dmFsID0gSUJVU19TRVJJQUxJWkFCTEVfQ0xBU1MgKGlidXNfbWVzc2FnZV9w YXJlbnRfY2xhc3MpLT4KKysgICAgICAgICAgICBzZXJpYWxpemUgKChJQnVzU2VyaWFsaXphYmxl ICopbXNnLCBidWlsZGVyKTsKKysgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHJldHZhbCwgRkFM U0UpOworKyAgICAvKiBFbmQgZGljdCBpdGVyICovCisrCisrICAgIGdfcmV0dXJuX3ZhbF9pZl9m YWlsIChJQlVTX0lTX01FU1NBR0UgKG1zZyksIEZBTFNFKTsKKysgICAgcHJpdiA9IElCVVNfTUVT U0FHRV9HRVRfUFJJVkFURSAobXNnKTsKKysKKysjZGVmaW5lIE5PVE5VTEwocykgKChzKSAhPSBO VUxMID8gKHMpIDogIiIpCisrICAgIC8qIElmIHlvdSB3aWxsIGFkZCBhIG5ldyBwcm9wZXJ0eSwg eW91IGNhbiBhcHBlbmQgaXQgYXQgdGhlIGVuZCBhbmQKKysgICAgICogeW91IHNob3VsZCBub3Qg Y2hhbmdlIHRoZSBzZXJpYWxpemVkIG9yZGVyIG9mIGRvbWFpbiwgY29kZSwKKysgICAgICogdGl0 bGUsIC4uLi4gKi8KKysgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkIChidWlsZGVyLCAieSIsIHBy aXYtPmRvbWFpbik7CisrICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCAoYnVpbGRlciwgInkiLCBw cml2LT5jb2RlKTsKKysgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkIChidWlsZGVyLCAicyIsIE5P VE5VTEwgKHByaXYtPnRpdGxlKSk7CisrICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCAoYnVpbGRl ciwgInMiLCBOT1ROVUxMIChwcml2LT5kZXNjcmlwdGlvbikpOworKyAgICBnX3ZhcmlhbnRfYnVp bGRlcl9hZGQgKGJ1aWxkZXIsICJpIiwgcHJpdi0+dGltZW91dCk7CisrICAgIGdfdmFyaWFudF9i dWlsZGVyX2FkZCAoYnVpbGRlciwgImkiLCBwcml2LT5wcm9ncmVzcyk7CisrICAgIGdfdmFyaWFu dF9idWlsZGVyX2FkZCAoYnVpbGRlciwgInUiLCBwcml2LT5zZXJpYWwpOworKyAgICAvKiBUaGUg c2VyaWFsaXplZCBvcmRlciBzaG91bGQgYmUga2VwdC4gKi8KKysjdW5kZWYgTk9UTlVMTAorKwor KyAgICByZXR1cm4gVFJVRTsKKyt9CisrCisrCisrc3RhdGljIGdpbnQKKytpYnVzX21lc3NhZ2Vf ZGVzZXJpYWxpemUgKElCdXNNZXNzYWdlICptc2csCisrICAgICAgICAgICAgICAgICAgICAgICAg ICBHVmFyaWFudCAgICAqdmFyaWFudCkKKyt7CisrICAgIGdpbnQgcmV0dmFsOworKyAgICBJQnVz TWVzc2FnZVByaXZhdGUgKnByaXY7CisrCisrICAgIHJldHZhbCA9IElCVVNfU0VSSUFMSVpBQkxF X0NMQVNTIChpYnVzX21lc3NhZ2VfcGFyZW50X2NsYXNzKS0+CisrICAgICAgICAgICAgZGVzZXJp YWxpemUgKChJQnVzU2VyaWFsaXphYmxlICopbXNnLCB2YXJpYW50KTsKKysgICAgZ19yZXR1cm5f dmFsX2lmX2ZhaWwgKHJldHZhbCwgMCk7CisrCisrICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJ QlVTX0lTX01FU1NBR0UgKG1zZyksIHJldHZhbCk7CisrICAgIHByaXYgPSBJQlVTX01FU1NBR0Vf R0VUX1BSSVZBVEUgKG1zZyk7CisrCisrICAgIC8qIElmIHlvdSB3aWxsIGFkZCBhIG5ldyBwcm9w ZXJ0eSwgeW91IGNhbiBhcHBlbmQgaXQgYXQgdGhlIGVuZCBhbmQKKysgICAgICogeW91IHNob3Vs ZCBub3QgY2hhbmdlIHRoZSBzZXJpYWxpemVkIG9yZGVyIG9mIGRvbWFpbiwgY29kZSwKKysgICAg ICogdGl0bGUsIC4uLi4gKi8KKysgICAgZ192YXJpYW50X2dldF9jaGlsZCAodmFyaWFudCwgcmV0 dmFsKyssICJ5IiwgJnByaXYtPmRvbWFpbik7CisrICAgIGdfdmFyaWFudF9nZXRfY2hpbGQgKHZh cmlhbnQsIHJldHZhbCsrLCAieSIsICZwcml2LT5jb2RlKTsKKysgICAgaWJ1c19nX3ZhcmlhbnRf Z2V0X2NoaWxkX3N0cmluZyAodmFyaWFudCwgcmV0dmFsKyssCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZwcml2LT50aXRsZSk7CisrICAgIGlidXNfZ192YXJpYW50X2dl dF9jaGlsZF9zdHJpbmcgKHZhcmlhbnQsIHJldHZhbCsrLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmcHJpdi0+ZGVzY3JpcHRpb24pOworKyAgICBnX3ZhcmlhbnRfZ2V0 X2NoaWxkICh2YXJpYW50LCByZXR2YWwrKywgImkiLCAmcHJpdi0+dGltZW91dCk7CisrICAgIGdf dmFyaWFudF9nZXRfY2hpbGQgKHZhcmlhbnQsIHJldHZhbCsrLCAiaSIsICZwcml2LT5wcm9ncmVz cyk7CisrICAgIGdfdmFyaWFudF9nZXRfY2hpbGQgKHZhcmlhbnQsIHJldHZhbCsrLCAidSIsICZw cml2LT5zZXJpYWwpOworKyAgICAvKiBUaGUgc2VyaWFsaXplZCBvcmRlciBzaG91bGQgYmUga2Vw dC4gKi8KKysgICAgcmV0dXJuIHJldHZhbDsKKyt9CisrCisrCisrc3RhdGljIGdib29sZWFuCisr aWJ1c19tZXNzYWdlX2NvcHkgKElCdXNNZXNzYWdlICAgICAgICpkZXN0LAorKyAgICAgICAgICAg ICAgICAgICBjb25zdCBJQnVzTWVzc2FnZSAqc3JjKQorK3sKKysgICAgZ2Jvb2xlYW4gcmV0dmFs OworKyAgICBJQnVzTWVzc2FnZVByaXZhdGUgKnByaXZfZGVzdDsKKysgICAgY29uc3QgSUJ1c01l c3NhZ2VQcml2YXRlICpwcml2X3NyYzsKKysKKysgICAgcmV0dmFsID0gSUJVU19TRVJJQUxJWkFC TEVfQ0xBU1MgKGlidXNfbWVzc2FnZV9wYXJlbnRfY2xhc3MpLT4KKysgICAgICAgICAgICBjb3B5 ICgoSUJ1c1NlcmlhbGl6YWJsZSAqKWRlc3QsIChJQnVzU2VyaWFsaXphYmxlICopc3JjKTsKKysg ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHJldHZhbCwgRkFMU0UpOworKworKyAgICBnX3JldHVy bl92YWxfaWZfZmFpbCAoSUJVU19JU19NRVNTQUdFIChkZXN0KSwgRkFMU0UpOworKyAgICBnX3Jl dHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19NRVNTQUdFIChzcmMpLCBGQUxTRSk7CisrICAgIHBy aXZfZGVzdCAgPSBJQlVTX01FU1NBR0VfR0VUX1BSSVZBVEUgKGRlc3QpOworKyAgICBwcml2X3Ny YyAgID0gSUJVU19NRVNTQUdFX0dFVF9DT05TVF9QUklWQVRFIChzcmMpOworKworKyAgICBwcml2 X2Rlc3QtPmRvbWFpbiAgICAgICAgICAgID0gcHJpdl9zcmMtPmRvbWFpbjsKKysgICAgcHJpdl9k ZXN0LT5jb2RlICAgICAgICAgICAgICA9IHByaXZfc3JjLT5jb2RlOworKyAgICBwcml2X2Rlc3Qt PnRpdGxlICAgICAgICAgICAgID0gZ19zdHJkdXAgKHByaXZfc3JjLT50aXRsZSk7CisrICAgIHBy aXZfZGVzdC0+ZGVzY3JpcHRpb24gICAgICAgPSBnX3N0cmR1cCAocHJpdl9zcmMtPmRlc2NyaXB0 aW9uKTsKKysgICAgcHJpdl9kZXN0LT50aW1lb3V0ICAgICAgICAgICA9IHByaXZfc3JjLT50aW1l b3V0OworKyAgICBwcml2X2Rlc3QtPnByb2dyZXNzICAgICAgICAgID0gcHJpdl9zcmMtPnByb2dy ZXNzOworKyAgICBwcml2X2Rlc3QtPnNlcmlhbCAgICAgICAgICAgID0gcHJpdl9zcmMtPnNlcmlh bDsKKysgICAgcmV0dXJuIFRSVUU7CisrfQorKworKworK2d1aW50CisraWJ1c19tZXNzYWdlX2dl dF9kb21haW4gKElCdXNNZXNzYWdlICptc2cpCisreworKyAgICBJQnVzTWVzc2FnZVByaXZhdGUg KnByaXY7CisrICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX01FU1NBR0UgKG1zZyks IDApOworKyAgICBwcml2ID0gSUJVU19NRVNTQUdFX0dFVF9QUklWQVRFIChtc2cpOworKyAgICBy ZXR1cm4gKGd1aW50KXByaXYtPmRvbWFpbjsKKyt9CisrCisrCisrZ3VpbnQKKytpYnVzX21lc3Nh Z2VfZ2V0X2NvZGUgKElCdXNNZXNzYWdlICptc2cpCisreworKyAgICBJQnVzTWVzc2FnZVByaXZh dGUgKnByaXY7CisrICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX01FU1NBR0UgKG1z ZyksIDApOworKyAgICBwcml2ID0gSUJVU19NRVNTQUdFX0dFVF9QUklWQVRFIChtc2cpOworKyAg ICByZXR1cm4gKGd1aW50KXByaXYtPmNvZGU7CisrfQorKworKworKyNkZWZpbmUgSUJVU19NRVNT QUdFX0dFVF9QUk9QRVJUWShwcm9wZXJ0eSwgcmV0dXJuX3R5cGUsIGRlZnZhbCkgICAgICAgIFwK KytyZXR1cm5fdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisraWJ1c19tZXNzYWdlX2dldF8gIyMgcHJvcGVydHkgKElCdXNN ZXNzYWdlICptc2cpICAgICAgICAgICAgICAgICAgICAgICAgXAorK3sgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KysgICAgSUJ1c01lc3NhZ2VQcml2YXRlICpwcml2OyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisrICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX01F U1NBR0UgKG1zZyksIChkZWZ2YWwpKTsgICAgICAgICAgICAgXAorKyAgICBwcml2ID0gSUJVU19N RVNTQUdFX0dFVF9QUklWQVRFIChtc2cpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KysgICAgcmV0dXJuIHByaXYtPnByb3BlcnR5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisrfQorKworK0lCVVNfTUVTU0FHRV9HRVRfUFJPUEVSVFkgKHRp dGxlLCBjb25zdCBnY2hhciAqLCBOVUxMKQorK0lCVVNfTUVTU0FHRV9HRVRfUFJPUEVSVFkgKGRl c2NyaXB0aW9uLCBjb25zdCBnY2hhciAqLCBOVUxMKQorK0lCVVNfTUVTU0FHRV9HRVRfUFJPUEVS VFkgKHRpbWVvdXQsIGludCwgREVGQVVMVF9USU1FT1VUKQorK0lCVVNfTUVTU0FHRV9HRVRfUFJP UEVSVFkgKHByb2dyZXNzLCBpbnQsIERFRkFVTFRfUFJPR1JFU1MpCisrSUJVU19NRVNTQUdFX0dF VF9QUk9QRVJUWSAoc2VyaWFsLCBndWludDMyLCAwKQorKyN1bmRlZiBJQlVTX01FU1NBR0VfR0VU X1BST1BFUlRZCisrCisrCisrSUJ1c01lc3NhZ2UgKgorK2lidXNfbWVzc2FnZV9uZXcgKGd1aW50 IGRvbWFpbiwKKysgICAgICAgICAgICAgICAgICBndWludCBjb2RlLAorKyAgICAgICAgICAgICAg ICAgIGNvbnN0IGdjaGFyICp0aXRsZSwKKysgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAq ZGVzY3JpcHRpb24sCisrICAgICAgICAgICAgICAgICAgLi4uKQorK3sKKysgICAgdmFfbGlzdCB2 YXJfYXJnczsKKysgICAgZ2NoYXIgKnByb3A7CisrICAgIGdjaGFyICoqbmFtZXMsICoqbmFtZXNf dG1wOworKyAgICBHVmFsdWUgKnZhbHVlcywgKnZhbHVlc190bXA7CisrICAgIGd1aW50IG5fcHJv cGVydGllcyA9IDQsIGk7CisrICAgIElCdXNNZXNzYWdlICptc2c7CisrICAgIElCdXNNZXNzYWdl UHJpdmF0ZSAqcHJpdjsKKysKKysgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGRvbWFpbiA+IDAg JiYgZG9tYWluIDw9IEdfTUFYVUlOVDgsIE5VTEwpOworKyAgICBnX3JldHVybl92YWxfaWZfZmFp bCAoY29kZSA8PSBHX01BWFVJTlQ4LCBOVUxMKTsKKysgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwg KGRlc2NyaXB0aW9uLCBOVUxMKTsKKysgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKCpkZXNjcmlw dGlvbiAhPSAnXDAnLCBOVUxMKTsKKysKKysgICAgaWYgKCEobmFtZXMgPSBnX25ldzAgKGdjaGFy ICosIG5fcHJvcGVydGllcykpKSB7CisrICAgICAgICBnX3dhcm5pbmcgKCJhbGxvY2F0aW9uIGVy cm9yIGluICVzIiwgR19TVFJGVU5DKTsKKysgICAgICAgIHJldHVybiBOVUxMOworKyAgICB9Cisr ICAgIGlmICghKHZhbHVlcyA9IGdfbmV3MCAoR1ZhbHVlLCBuX3Byb3BlcnRpZXMpKSkgeworKyAg ICAgICAgZ193YXJuaW5nICgiYWxsb2NhdGlvbiBlcnJvciBpbiAlcyIsIEdfU1RSRlVOQyk7Cisr ICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgfQorKworKyAgICBuYW1lc1swXSA9ICJkb21haW4i OworKyAgICBnX3ZhbHVlX2luaXQgKCZ2YWx1ZXNbMF0sIEdfVFlQRV9VQ0hBUik7CisrICAgIGdf dmFsdWVfc2V0X3VjaGFyICgmdmFsdWVzWzBdLCBkb21haW4pOworKyAgICBuYW1lc1sxXSA9ICJj b2RlIjsKKysgICAgZ192YWx1ZV9pbml0ICgmdmFsdWVzWzFdLCBHX1RZUEVfVUNIQVIpOworKyAg ICBnX3ZhbHVlX3NldF91Y2hhciAoJnZhbHVlc1sxXSwgY29kZSk7CisrICAgIG5hbWVzWzJdID0g InRpdGxlIjsKKysgICAgZ192YWx1ZV9pbml0ICgmdmFsdWVzWzJdLCBHX1RZUEVfU1RSSU5HKTsK KysgICAgZ192YWx1ZV9zZXRfc3RyaW5nICgmdmFsdWVzWzJdLCB0aXRsZSk7CisrICAgIG5hbWVz WzNdID0gImRlc2NyaXB0aW9uIjsKKysgICAgZ192YWx1ZV9pbml0ICgmdmFsdWVzWzNdLCBHX1RZ UEVfU1RSSU5HKTsKKysgICAgZ192YWx1ZV9zZXRfc3RyaW5nICgmdmFsdWVzWzNdLCBkZXNjcmlw dGlvbik7CisrCisrI2RlZmluZSBJRl9QUk9QRVJUWV9JU19NQVRDSEVEKHByb3BlcnR5LCBndHlw ZSwgY3R5cGUpIFwKKysgICAgaWYgKCFnX3N0cmNtcDAgKHByb3AsICNwcm9wZXJ0eSkpIHsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBpZiAoIShuYW1l c190bXAgPSBnX3JlbmV3IChnY2hhciAqLCBuYW1lcywgbl9wcm9wZXJ0aWVzICsgMSkpKSB7ICAg ICAgXAorKyAgICAgICAgICAgIGdfd2FybmluZyAoImFsbG9jYXRpb24gZXJyb3IgaW4gJXMiLCBH X1NUUkZVTkMpOyAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICB2YV9lbmQgKHZhcl9h cmdzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisr ICAgICAgICAgICAgZ19mcmVlIChuYW1lcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPD0gbl9w cm9wZXJ0aWVzOyBpKyspICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAg ICAgICAgICAgZ192YWx1ZV91bnNldCAoJnZhbHVlc1tpXSk7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgZ19mcmVlICh2YWx1ZXMpOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHJl dHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKysgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBuYW1lcyA9IG5hbWVz X3RtcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorKyAgICAgICAgbmFtZXNbbl9wcm9wZXJ0aWVzXSA9IHByb3A7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIGlmICghKHZhbHVlc190bXAgPSBn X3JlbmV3IChHVmFsdWUsIHZhbHVlcywgbl9wcm9wZXJ0aWVzICsgMSkpKSB7ICAgICBcCisrICAg ICAgICAgICAgZ193YXJuaW5nICgiYWxsb2NhdGlvbiBlcnJvciBpbiAlcyIsIEdfU1RSRlVOQyk7 ICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHZhX2VuZCAodmFyX2FyZ3MpOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAg ICBnX2ZyZWUgKG5hbWVzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCisrICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5fcHJvcGVydGllczsg aSsrKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgIGdf dmFsdWVfdW5zZXQgKCZ2YWx1ZXNbaV0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorKyAgICAgICAgICAgIGdfZnJlZSAodmFsdWVzKTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICByZXR1cm4gTlVMTDsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisr ICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgdmFsdWVzID0gdmFsdWVzX3RtcDsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAg IG1lbXNldCAoJnZhbHVlc1tuX3Byb3BlcnRpZXNdLCAwLCBzaXplb2YgKEdWYWx1ZSkpOyAgICAg ICAgICAgICAgICAgICBcCisrICAgICAgICBnX3ZhbHVlX2luaXQgKCZ2YWx1ZXNbbl9wcm9wZXJ0 aWVzXSwgKGd0eXBlKSk7ICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgZ192YWx1 ZV9zZXRfIyMgY3R5cGUgKCZ2YWx1ZXNbbl9wcm9wZXJ0aWVzXSwgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcgKHZhcl9hcmdz LCBnICMjIGN0eXBlKSk7ICAgICAgICAgICAgICAgICBcCisrICAgIH0KKysKKysgICAgdmFfc3Rh cnQgKHZhcl9hcmdzLCBkZXNjcmlwdGlvbik7CisrICAgIHdoaWxlICgocHJvcCA9ICB2YV9hcmcg KHZhcl9hcmdzLCBnY2hhciAqKSkpIHsKKysgICAgICAgIElGX1BST1BFUlRZX0lTX01BVENIRUQg KHRpbWVvdXQsIEdfVFlQRV9JTlQsIGludCkKKysgICAgICAgIGVsc2UgSUZfUFJPUEVSVFlfSVNf TUFUQ0hFRCAocHJvZ3Jlc3MsIEdfVFlQRV9JTlQsIGludCkKKysgICAgICAgIGVsc2UgSUZfUFJP UEVSVFlfSVNfTUFUQ0hFRCAoc2VyaWFsLCBHX1RZUEVfVUlOVCwgdWludCkKKysgICAgICAgIGVs c2UgeworKyAgICAgICAgICAgIGdfd2FybmluZyAoIndyb25nIHBhcmFtZXRlciAlcyBpbiAlcyIs IHByb3AsIEdfU1RSRlVOQyk7CisrICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5fcHJvcGVy dGllczsgaSsrKQorKyAgICAgICAgICAgICAgICBnX3ZhbHVlX3Vuc2V0ICgmdmFsdWVzW2ldKTsK KysgICAgICAgICAgICBnX2ZyZWUgKHZhbHVlcyk7CisrICAgICAgICAgICAgZ19mcmVlIChuYW1l cyk7CisrICAgICAgICAgICAgdmFfZW5kICh2YXJfYXJncyk7CisrICAgICAgICAgICAgcmV0dXJu IE5VTEw7CisrICAgICAgICB9CisrICAgICAgICBuX3Byb3BlcnRpZXMrKzsKKysgICAgfQorKyAg ICB2YV9lbmQgKHZhcl9hcmdzKTsKKysKKysjdW5kZWYgSUZfUFJPUEVSVFlfSVNfTUFUQ0hFRAor KworKyAgICBtc2cgPSAoSUJ1c01lc3NhZ2UgKilnX29iamVjdF9uZXdfd2l0aF9wcm9wZXJ0aWVz IChJQlVTX1RZUEVfTUVTU0FHRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbl9wcm9wZXJ0aWVzLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgZ2NoYXIgKiopbmFtZXMs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChjb25zdCBHVmFsdWUqKXZhbHVlcyk7CisrCisrCisrICAgIGZvciAoaSA9IDA7IGkgPCBuX3By b3BlcnRpZXM7IGkrKykKKysgICAgICAgIGdfdmFsdWVfdW5zZXQgKCZ2YWx1ZXNbaV0pOworKyAg ICBnX2ZyZWUgKHZhbHVlcyk7CisrICAgIGdfZnJlZSAobmFtZXMpOworKyAgICBpZiAoIUlCVVNf SVNfTUVTU0FHRSAobXNnKSkgeworKyAgICAgICAgZ193YXJuaW5nICgibXNnIGlzIG5vdCBJQnVz TWVzc2FnZSBpbiAlcyIsIEdfU1RSRlVOQyk7CisrICAgICAgICByZXR1cm4gTlVMTDsKKysgICAg fQorKyAgICBwcml2ID0gSUJVU19NRVNTQUdFX0dFVF9QUklWQVRFIChtc2cpOworKyAgICAvKiBu YW1lIGlzIHJlcXVpcmVkLiBPdGhlciBwcm9wZXJ0aWVzIGFyZSBzZXQgaW4gY2xhc3NfaW5pdCBi eSBkZWZhdWx0LiAqLworKyAgICBnX2Fzc2VydCAocHJpdi0+ZG9tYWluID4gMCAmJiBwcml2LT5k b21haW4gPD0gR19NQVhVSU5UOCk7CisrICAgIGdfYXNzZXJ0IChwcml2LT5jb2RlIDw9IEdfTUFY VUlOVDgpOworKyAgICBnX2Fzc2VydCAocHJpdi0+ZGVzY3JpcHRpb24pOworKyAgICBnX2Fzc2Vy dCAoKihwcml2LT5kZXNjcmlwdGlvbikgIT0gJ1wwJyk7CisrCisrICAgIHJldHVybiBtc2c7Cisr fQorZGlmZiAtLWdpdCBhL3NyYy9pYnVzbWVzc2FnZS5oIGIvc3JjL2lidXNtZXNzYWdlLmgKK25l dyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uMGFiNThiODAKKy0tLSAvZGV2L251 bGwKKysrKyBiL3NyYy9pYnVzbWVzc2FnZS5oCitAQCAtMCwwICsxLDIwNSBAQAorKy8qIC0qLSBt b2RlOiBDOyBjLWJhc2ljLW9mZnNldDogNDsgaW5kZW50LXRhYnMtbW9kZTogbmlsOyAtKi0gKi8K KysvKiB2aW06c2V0IGV0IHN0cz00OiAqLworKy8qIGJ1cyAtIFRoZSBJbnB1dCBCdXMKKysgKiBD b3B5cmlnaHQgKEMpIDIwMjUgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5j b20+CisrICogQ29weXJpZ2h0IChDKSAyMDI1IFJlZCBIYXQsIEluYy4KKysgKgorKyAqIFRoaXMg bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK KysgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljCisrICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyCisrICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiBUaGlzIGxpYnJhcnkgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgKiBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUgR05VCisrICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKysgKgorKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhp cyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrICogRm91bmRh dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAg MDIxMTAtMTMwMQorKyAqIFVTQQorKyAqLworKworKyNpZiAhZGVmaW5lZCAoX19JQlVTX0hfSU5T SURFX18pICYmICFkZWZpbmVkIChJQlVTX0NPTVBJTEFUSU9OKQorKyNlcnJvciAiT25seSA8aWJ1 cy5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkiCisrI2VuZGlmCisrCisrI2lmbmRlZiBfX0lC VVNfTUVTU0FHRV9IXworKyNkZWZpbmUgX19JQlVTX01FU1NBR0VfSF8KKysKKysvKioKKysgKiBT RUNUSU9OOiBpYnVzbWVzc2FnZQorKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjogTWVzc2FnZSBkYXRh IHdoaWNoIGlzIGZvcndhcmRlZCB0byBJQnVzIFBhbmVsLgorKyAqIEB0aXRsZTogSUJ1c01lc3Nh Z2UKKysgKiBAc3RhYmlsaXR5OiBVbnN0YWJsZQorKyAqCisrICogQW4gSUJ1c01lc3NhZ2Ugc3Rv cmVzIHRoZSBtZXNzYWdlIHR5cGUsIGRlc2NyaXB0aW9uLCB0aW1lb3V0LiAKKysgKiBUaGUgbWVz c2FnZSBkYXRhIGNhbiBnZW5lcmF0ZWQgYnkgaWJ1c19tZXNzYWdlX25ldygpLAorKyAqCisrICog c2VlX2Fsc286ICNJQnVzRW5naW5lLCAjSUJ1UGFuZWxzCisrICoKKysgKi8KKysKKysjaW5jbHVk ZSAiaWJ1c3NlcmlhbGl6YWJsZS5oIgorKworKy8qCisrICogVHlwZSBtYWNyb3MuCisrICovCisr CisrLyogZGVmaW5lIEdPQkpFQ1QgbWFjcm9zICovCisrI2RlZmluZSBJQlVTX1RZUEVfTUVTU0FH RSAgICAgICAgICAgICAgICAgXAorKyAgICAoaWJ1c19tZXNzYWdlX2dldF90eXBlICgpKQorKyNk ZWZpbmUgSUJVU19NRVNTQUdFKG9iaikgICAgICAgICAgICAgICAgIFwKKysgICAgKEdfVFlQRV9D SEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgSUJVU19UWVBFX01FU1NBR0UsIElCdXNNZXNzYWdl KSkKKysjZGVmaW5lIElCVVNfTUVTU0FHRV9DTEFTUyhrbGFzcykgICAgICAgICBcCisrICAgIChH X1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgSUJVU19UWVBFX01FU1NBR0UsIElCdXNN ZXNzYWdlQ2xhc3MpKQorKyNkZWZpbmUgSUJVU19JU19NRVNTQUdFKG9iaikgICAgICAgICAgICAg IFwKKysgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgSUJVU19UWVBFX01F U1NBR0UpKQorKyNkZWZpbmUgSUJVU19JU19NRVNTQUdFX0NMQVNTKGtsYXNzKSAgICAgIFwKKysg ICAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBJQlVTX1RZUEVfTUVTU0FHRSkp CisrI2RlZmluZSBJQlVTX01FU1NBR0VfR0VUX0NMQVNTKG9iaikgICAgICAgXAorKyAgICAoR19U WVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiksIElCVVNfVFlQRV9NRVNTQUdFLCBJQnVzTWVz c2FnZUNsYXNzKSkKKysKKytHX0JFR0lOX0RFQ0xTCisrCisrdHlwZWRlZiBzdHJ1Y3QgX0lCdXNN ZXNzYWdlIElCdXNNZXNzYWdlOworK3R5cGVkZWYgc3RydWN0IF9JQnVzTWVzc2FnZVByaXZhdGUg SUJ1c01lc3NhZ2VQcml2YXRlOworK3R5cGVkZWYgc3RydWN0IF9JQnVzTWVzc2FnZUNsYXNzIElC dXNNZXNzYWdlQ2xhc3M7CisrCisrLyoqCisrICogSUJ1c01lc3NhZ2U6CisrICoKKysgKiBNZXNz YWdlIGRhdGEgd2hpY2ggaXMgZm9yd2FyZGVkIHRvIElCdXMgUGFuZWwuCisrICogWW91IGNhbiBn ZXQgdmFsdWVzIHdpdGggZ19vYmplY3RfZ2V0X3Byb3BlcnRpZXMuCisrICoKKysgKiBTaW5jZTog MS41LjMzCisrICovCisrc3RydWN0IF9JQnVzTWVzc2FnZSB7CisrICAgIElCdXNTZXJpYWxpemFi bGUgcGFyZW50OworKyAgICAvKiBpbnN0YW5jZSBtZW1iZXJzICovCisrCisrICAgIC8qPCBwdWJs aWMgPiovCisrICAgIC8qPCBwcml2YXRlID4qLworKyAgICBJQnVzTWVzc2FnZVByaXZhdGUgKnBy aXY7CisrfTsKKysKKytzdHJ1Y3QgX0lCdXNNZXNzYWdlQ2xhc3MgeworKyAgICBJQnVzU2VyaWFs aXphYmxlQ2xhc3MgcGFyZW50OworKyAgICAvKiBjbGFzcyBtZW1iZXJzICovCisrCisrICAgIC8q PCBwcml2YXRlID4qLworKyAgICAvKiBwYWRkaW5nICovCisrICAgIGdwb2ludGVyIHBkdW1teVs1 XTsgIC8vIFdlIGNhbiBhZGQgNSBwb2ludGVycyB3aXRob3V0IGJyZWFraW5nIHRoZSBBQkkuCisr fTsKKysKKytHVHlwZSAgICAgICAgICAgIGlidXNfbWVzc2FnZV9nZXRfdHlwZSAgICAgICAgICAo dm9pZCk7CisrCisrLyoqCisrICogaWJ1c19tZXNzYWdlX25ldzoKKysgKiBAZG9tYWluOiB0aGUg bWVzc2FnZSBkb21haW4gd2l0aCBASUJ1c01lc3NhZ2VEb21haW4gbGlrZXMgI0dFcnJvci4KKysg KiBAY29kZTogdGhlIG1lc3NhZ2UgY29kZSB3aXRoIEBJQnVzUGFuZWxTZXJ2aWNlTXNnQ29kZSBs aWtlcyAjR0Vycm9yLgorKyAqIEB0aXRsZTogdGhlIG1lc3NhZ2UgdGl0bGUuCisrICogQGRlc2Ny aXB0aW9uOiB0aGUgbWVzc2FnZSBkZXNjcmlwdGlvbi4KKysgKiBALi4uOiB0aGUgTlVMTC10ZXJt aW5hdGVkIGFyZ3VtZW50cyBvZiB0aGUgcHJvcGVydGllcyBhbmQgdmFsdWVzLgorKyAqCisrICog Q3JlYXRlcyBhIG5ldyAjSUJ1c01lc3NhZ2UuCisrICogWW91IGNhbiBnaXZlIGFkZGl0aW9uYWwg cGFyYW1ldGVycyB0byB0aGUgQVBJLiBFLmcuCisrICogaWJ1c19tZXNzYWdlX25ldyhJQlVTX01F U1NBR0VfRE9NQUlOX1BBTkVMLAorKyAqIElCVVNfUEFORUxfU0VSVklDRV9NU0dfQ09ERV9MT0FE SU5HX1VOSUNPREUsICJJQnVzIEVtb2ppIHV0aWxpdHkiLAorKyAqICJMb2FkaW5nIGEgVW5pY29k ZSBkaWN0aW9uYXJ5IiwgInRpbWVvdXQiLCAxMCwgInByb2dyZXNzIiwgMzAsIE5VTEwpCisrICoK KysgKiBSZXR1cm5zOiBBIG5ld2x5IGFsbG9jYXRlZCBJQnVzTWVzc2FnZS4KKysgKgorKyAqIFNp bmNlOiAxLjUuMzMKKysgKi8KKytJQnVzTWVzc2FnZSAgICAgKmlidXNfbWVzc2FnZV9uZXcgICAg ICAgICAgICAgICAoZ3VpbnQgICAgICAgICAgIGRvbWFpbiwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgIGNvZGUsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFy ICAgICp0aXRsZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgZ2NoYXIgICAgKmRlc2NyaXB0aW9uLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pIEdfR05VQ19OVUxMX1RFUk1JTkFURUQ7 CisrCisrLyoqCisrICogaWJ1c19tZXNzYWdlX2dldF9kb21haW46CisrICogQG1zZzogQW4gI0lC dXNNZXNzYWdlLgorKyAqCisrICogR2V0cyB0aGUgZG9tYWluIHByb3BlcnR5IGluICNJQnVzTWVz c2FnZS4KKysgKgorKyAqIFJldHVybnM6IGRvbWFpbiBwcm9wZXJ0eSBpbiAjSUJ1c01lc3NhZ2UK KysgKgorKyAqIFNpbmNlOiAxLjUuMzMKKysgKi8KKytndWludCAgICAgICAgICAgIGlidXNfbWVz c2FnZV9nZXRfZG9tYWluICAgICAgICAoSUJ1c01lc3NhZ2UgICptc2cpOworKworKy8qKgorKyAq IGlidXNfbWVzc2FnZV9nZXRfY29kZToKKysgKiBAbXNnOiBBbiAjSUJ1c01lc3NhZ2UuCisrICoK KysgKiBHZXRzIHRoZSBjb2RlIHByb3BlcnR5IGluICNJQnVzTWVzc2FnZS4KKysgKgorKyAqIFJl dHVybnM6IGNvZGUgcHJvcGVydHkgaW4gI0lCdXNNZXNzYWdlCisrICoKKysgKiBTaW5jZTogMS41 LjMzCisrICovCisrZ3VpbnQgICAgICAgICAgICBpYnVzX21lc3NhZ2VfZ2V0X2NvZGUgICAgICAg ICAgKElCdXNNZXNzYWdlICAqbXNnKTsKKysKKysvKioKKysgKiBpYnVzX21lc3NhZ2VfZ2V0X3Rp dGxlOgorKyAqIEBtc2c6IEFuICNJQnVNZXNzYWdlcy4KKysgKgorKyAqIEdldHMgdGhlIHRpdGxl IHByb3BlcnR5IGluICNJQnVzTWVzc2FnZS4gSXQgc2hvdWxkIG5vdCBiZSBmcmVlZC4KKysgKgor KyAqIFJldHVybnM6IHRpdGxlIHByb3BlcnR5IGluICNJQnVhTWVzc2FnZQorKyAqCisrICogU2lu Y2U6IDEuNS4zMworKyAqLworK2NvbnN0IGdjaGFyICAgICAqaWJ1c19tZXNzYWdlX2dldF90aXRs ZSAgICAgICAgIChJQnVzTWVzc2FnZSAgKm1zZyk7CisrCisrLyoqCisrICogaWJ1c19tZXNzYWdl X2dldF9kZXNjcmlwdGlvbjoKKysgKiBAbXNnOiBBbiAjSUJ1TWVzc2FnZXMuCisrICoKKysgKiBH ZXRzIHRoZSBkZXNjcmlwdGlvbiBwcm9wZXJ0eSBpbiAjSUJ1c01lc3NhZ2UuIEl0IHNob3VsZCBu b3QgYmUgZnJlZWQuCisrICoKKysgKiBSZXR1cm5zOiBkZXNjcmlwdGlvbiBwcm9wZXJ0eSBpbiAj SUJ1YU1lc3NhZ2UKKysgKgorKyAqIFNpbmNlOiAxLjUuMzMKKysgKi8KKytjb25zdCBnY2hhciAg ICAgKmlidXNfbWVzc2FnZV9nZXRfZGVzY3JpcHRpb24gICAoSUJ1c01lc3NhZ2UgICptc2cpOwor KworKy8qKgorKyAqIGlidXNfbWVzc2FnZV9nZXRfdGltZW91dDoKKysgKiBAbXNnOiBBbiAjSUJ1 c01lc3NhZ2UuCisrICoKKysgKiBHZXRzIHRoZSB0aW1lb3V0IHByb3BlcnR5IGluICNJQnVzTWVz c2FnZS4KKysgKgorKyAqIFJldHVybnM6IHRpbWVvdXQgcHJvcGVydHkgaW4gI0lCdXNNZXNzYWdl CisrICoKKysgKiBTaW5jZTogMS41LjMzCisrICovCisraW50ICAgICAgICAgICAgICBpYnVzX21l c3NhZ2VfZ2V0X3RpbWVvdXQgICAgICAgKElCdXNNZXNzYWdlICAqbXNnKTsKKysKKysvKioKKysg KiBpYnVzX21lc3NhZ2VfZ2V0X3Byb2dyZXNzOgorKyAqIEBtc2c6IEFuICNJQnVzTWVzc2FnZS4K KysgKgorKyAqIEdldHMgdGhlIHByb2dyZXNzIHByb3BlcnR5IGluICNJQnVzTWVzc2FnZS4KKysg KgorKyAqIFJldHVybnM6IHByb2dyZXNzIHByb3BlcnR5IGluICNJQnVzTWVzc2FnZQorKyAqCisr ICogU2luY2U6IDEuNS4zMworKyAqLworK2ludCAgICAgICAgICAgICAgaWJ1c19tZXNzYWdlX2dl dF9wcm9ncmVzcyAgICAgIChJQnVzTWVzc2FnZSAgKm1zZyk7CisrCisrLyoqCisrICogaWJ1c19t ZXNzYWdlX2dldF9zZXJpYWw6CisrICogQG1zZzogQW4gI0lCdXNNZXNzYWdlLgorKyAqCisrICog R2V0cyB0aGUgc2VyaWFsIHByb3BlcnR5IGluICNJQnVzTWVzc2FnZS4KKysgKgorKyAqIFJldHVy bnM6IHNlcmlhbCBwcm9wZXJ0eSBpbiAjSUJ1c01lc3NhZ2UKKysgKgorKyAqIFNpbmNlOiAxLjUu MzMKKysgKi8KKytndWludCAgICAgICAgICAgIGlidXNfbWVzc2FnZV9nZXRfc2VyaWFsICAgICAg ICAoSUJ1c01lc3NhZ2UgICptc2cpOworK0dfRU5EX0RFQ0xTCisrI2VuZGlmCitkaWZmIC0tZ2l0 IGEvc3JjL2lidXNwYW5lbHNlcnZpY2UuYyBiL3NyYy9pYnVzcGFuZWxzZXJ2aWNlLmMKK2luZGV4 IDgwNjM3Y2EyLi45ZTM5MzlkMCAxMDA2NDQKKy0tLSBhL3NyYy9pYnVzcGFuZWxzZXJ2aWNlLmMK KysrKyBiL3NyYy9pYnVzcGFuZWxzZXJ2aWNlLmMKK0BAIC0zLDcgKzMsNyBAQAorIC8qIGlidXMg LSBUaGUgSW5wdXQgQnVzCisgICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTQgR29vZ2xlIEluYy4g QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNCBQZW5nIEh1 YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KKy0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAy NCBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KKysgKiBDb3B5cmln aHQgKEMpIDIwMTctMjAyNSBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNv bT4KKyAgKgorICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IKKyAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCitAQCAtNjAsNiArNjAsNyBAQCBlbnVtIHsKKyAgICAg UFJPQ0VTU19LRVlfRVZFTlQsCisgICAgIENPTU1JVF9URVhUX1JFQ0VJVkVELAorICAgICBDQU5E SURBVEVfQ0xJQ0tFRF9MT09LVVBfVEFCTEUsCisrICAgIFNFTkRfTUVTU0FHRV9SRUNFSVZFRCwK KyAgICAgTEFTVF9TSUdOQUwsCisgfTsKKyAKK0BAIC0yNDAsNiArMjQxLDEzIEBAIHN0YXRpYyBj b25zdCBnY2hhciBpbnRyb3NwZWN0aW9uX3htbFtdID0KKyAgICAgIiAgICA8bWV0aG9kIG5hbWU9 J0NvbW1pdFRleHRSZWNlaXZlZCc+IgorICAgICAiICAgICAgPGFyZyBkaXJlY3Rpb249J2luJyB0 eXBlPSd2JyBuYW1lPSd0ZXh0JyAvPiIKKyAgICAgIiAgICA8L21ldGhvZD4iCisrICAgICIgICAg PG1ldGhvZCBuYW1lPSdTZW5kTWVzc2FnZVJlY2VpdmVkJz4iCisrICAgICIgICAgICA8YXJnIGRp cmVjdGlvbj0naW4nIHR5cGU9J3YnIG5hbWU9J21lc3NhZ2UnIC8+IgorKyAgICAiICAgICAgPGFu bm90YXRpb24gbmFtZT0nb3JnLmd0ay5HREJ1cy5TaW5jZSdcbiIKKysgICAgIiAgICAgICAgICB2 YWx1ZT0nMS41LjMzJyAvPlxuIgorKyAgICAiICAgICAgPGFubm90YXRpb24gbmFtZT0nb3JnLmd0 ay5HREJ1cy5Eb2NTdHJpbmcnXG4iCisrICAgICIgICAgICAgICAgdmFsdWU9J1N0YWJpbGl0eTog VW5zdGFibGUnIC8+XG4iCisrICAgICIgICAgPC9tZXRob2Q+IgorICAgICAvKiBTaWduYWxzICov CisgICAgICIgICAgPHNpZ25hbCBuYW1lPSdDdXJzb3JVcCcgLz4iCisgICAgICIgICAgPHNpZ25h bCBuYW1lPSdDdXJzb3JEb3duJyAvPiIKK0BAIC0yNjYsOSArMjc0LDkgQEAgc3RhdGljIGNvbnN0 IGdjaGFyIGludHJvc3BlY3Rpb25feG1sW10gPQorICAgICAiICAgIDxzaWduYWwgbmFtZT0nUGFu ZWxFeHRlbnNpb24nPiIKKyAgICAgIiAgICAgIDxhcmcgdHlwZT0ndicgbmFtZT0nZXZlbnQnIC8+ IgorICAgICAiICAgIDwvc2lnbmFsPiIKKy0gICAgIiAgICA8bWV0aG9kIG5hbWU9J1BhbmVsRXh0 ZW5zaW9uUmVnaXN0ZXJLZXlzJz4iCisrICAgICIgICAgPHNpZ25hbCBuYW1lPSdQYW5lbEV4dGVu c2lvblJlZ2lzdGVyS2V5cyc+IgorICAgICAiICAgICAgPGFyZyB0eXBlPSd2JyBuYW1lPSdkYXRh JyAvPiIKKy0gICAgIiAgICA8L21ldGhvZD4iCisrICAgICIgICAgPC9zaWduYWw+IgorICAgICAi ICAgIDxzaWduYWwgbmFtZT0nVXBkYXRlUHJlZWRpdFRleHRSZWNlaXZlZCc+IgorICAgICAiICAg ICAgPGFyZyB0eXBlPSd2JyBuYW1lPSd0ZXh0JyAvPiIKKyAgICAgIiAgICAgIDxhcmcgdHlwZT0n dScgbmFtZT0nY3Vyc29yX3BvcycgLz4iCitAQCAtMjg2LDYgKzI5NCwxNyBAQCBzdGF0aWMgY29u c3QgZ2NoYXIgaW50cm9zcGVjdGlvbl94bWxbXSA9CisgICAgICIgICAgICA8YXJnIHR5cGU9J3Un IG5hbWU9J2tleXZhbCcgLz4iCisgICAgICIgICAgICA8YXJnIHR5cGU9J3UnIG5hbWU9J2tleWNv ZGUnIC8+IgorICAgICAiICAgICAgPGFyZyB0eXBlPSd1JyBuYW1lPSdzdGF0ZScgLz4iCisrICAg ICIgICAgICA8YW5ub3RhdGlvbiBuYW1lPSdvcmcuZ3RrLkdEQnVzLlNpbmNlJ1xuIgorKyAgICAi ICAgICAgICAgIHZhbHVlPScxLjUuMzInIC8+XG4iCisrICAgICIgICAgICA8YW5ub3RhdGlvbiBu YW1lPSdvcmcuZ3RrLkdEQnVzLkRvY1N0cmluZydcbiIKKysgICAgIiAgICAgICAgICB2YWx1ZT0n U3RhYmlsaXR5OiBVbnN0YWJsZScgLz5cbiIKKysgICAgIiAgICA8L3NpZ25hbD4iCisrICAgICIg ICAgPHNpZ25hbCBuYW1lPSdTZW5kTWVzc2FnZSc+IgorKyAgICAiICAgICAgPGFyZyB0eXBlPSd2 JyBuYW1lPSdtZXNzYWdlJyAvPiIKKysgICAgIiAgICAgIDxhbm5vdGF0aW9uIG5hbWU9J29yZy5n dGsuR0RCdXMuU2luY2UnXG4iCisrICAgICIgICAgICAgICAgdmFsdWU9JzEuNS4zMycgLz5cbiIK KysgICAgIiAgICAgIDxhbm5vdGF0aW9uIG5hbWU9J29yZy5ndGsuR0RCdXMuRG9jU3RyaW5nJ1xu IgorKyAgICAiICAgICAgICAgIHZhbHVlPSdTdGFiaWxpdHk6IFVuc3RhYmxlJyAvPlxuIgorICAg ICAiICAgIDwvc2lnbmFsPiIKKyAgICAgIiAgPC9pbnRlcmZhY2U+IgorICAgICAiPC9ub2RlPiI7 CitAQCAtMTAwNiw3ICsxMDI1LDcgQEAgaWJ1c19wYW5lbF9zZXJ2aWNlX2NsYXNzX2luaXQgKElC dXNQYW5lbFNlcnZpY2VDbGFzcyAqY2xhc3MpCisgICAgIC8qKgorICAgICAgKiBJQnVzUGFuZWxT ZXJ2aWNlOjpjb21taXQtdGV4dC1yZWNlaXZlZDoKKyAgICAgICogQHBhbmVsOiBBbiAjSUJ1c1Bh bmVsU2VydmljZQorLSAgICAgKiBAdGV4dDogQSAjSUJ1c1RleHQKKysgICAgICogQHRleHQ6IEFu ICNJQnVzVGV4dAorICAgICAgKgorICAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIGNsaWVudCBhcHBs aWNhdGlvbiBnZXQgdGhlIDo6Y29tbWl0LXRleHQtcmVjZWl2ZWQuCisgICAgICAqIEltcGxlbWVu dCB0aGUgbWVtYmVyIGZ1bmN0aW9uCitAQCAtMTAyNyw2ICsxMDQ2LDIwIEBAIGlidXNfcGFuZWxf c2VydmljZV9jbGFzc19pbml0IChJQnVzUGFuZWxTZXJ2aWNlQ2xhc3MgKmNsYXNzKQorICAgICAg ICAgICAgIDEsCisgICAgICAgICAgICAgSUJVU19UWVBFX1RFWFQpOworIAorKyAgICAvKioKKysg ICAgICogSUJ1c1BhbmVsU2VydmljZTo6Y2FuZGlkYXRlLWNsaWNrZWQtbG9va3VwLXRhYmxlOgor KyAgICAgKiBAcGFuZWw6IEFuICNJQnVzUGFuZWxTZXJ2aWNlCisrICAgICAqIEB0ZXh0OiBBbiAj SUJ1c1RleHQKKysgICAgICoKKysgICAgICogRW1pdHRlZCB3aGVuIHRoZSBjbGllbnQgYXBwbGlj YXRpb24gZ2V0IHRoZQorKyAgICAgKiA6OmNhbmRpZGF0ZS1jbGlja2VkLWxvb2t1cC10YWJsZS4K KysgICAgICogSW1wbGVtZW50IHRoZSBtZW1iZXIgZnVuY3Rpb24KKysgICAgICogSUJ1c1BhbmVs U2VydmljZUNsYXNzOjpjYW5kaWRhdGVfY2xsaWNrZWRfbG9va3VwX3RhYmxlIGluIGV4dGVuZGVk IGNsYXNzCisrICAgICAqIHRvIHJlY2VpdmUgdGhpcyBzaWduYWwuCisrICAgICAqCisrICAgICAq IDxub3RlPjxwYXJhPkFyZ3VtZW50IEB1c2VyX2RhdGEgaXMgaWdub3JlZCBpbiB0aGlzIGZ1bmN0 aW9uLjwvcGFyYT4KKysgICAgICogPC9ub3RlPgorKyAgICAgKi8KKyAgICAgcGFuZWxfc2lnbmFs c1tDQU5ESURBVEVfQ0xJQ0tFRF9MT09LVVBfVEFCTEVdID0KKyAgICAgICAgIGdfc2lnbmFsX25l dyAoSV8oImNhbmRpZGF0ZS1jbGlja2VkLWxvb2t1cC10YWJsZSIpLAorICAgICAgICAgICAgIEdf VFlQRV9GUk9NX0NMQVNTIChnb2JqZWN0X2NsYXNzKSwKK0BAIC0xMDQwLDYgKzEwNzMsMzEgQEAg aWJ1c19wYW5lbF9zZXJ2aWNlX2NsYXNzX2luaXQgKElCdXNQYW5lbFNlcnZpY2VDbGFzcyAqY2xh c3MpCisgICAgICAgICAgICAgR19UWVBFX1VJTlQsCisgICAgICAgICAgICAgR19UWVBFX1VJTlQs CisgICAgICAgICAgICAgR19UWVBFX1VJTlQpOworKworKyAgICAvKioKKysgICAgICogSUJ1c1Bh bmVsU2VydmljZTo6c2VuZC1tZXNzYWdlLXJlY2VpdmVkOgorKyAgICAgKiBAcGFuZWw6IEFuICNJ QnVzUGFuZWxTZXJ2aWNlCisrICAgICAqIEBtZXNzYWdlOiBBbiAjSUJ1c01lc3NhZ2UKKysgICAg ICoKKysgICAgICogRW1pdHRlZCB3aGVuIHRoZSBjbGllbnQgYXBwbGljYXRpb24gZ2V0IHRoZSA6 OnNlbmQtbWVlZWFnZS1yZWNlaXZlZC4KKysgICAgICogSW1wbGVtZW50IHRoZSBtZW1iZXIgZnVu Y3Rpb24KKysgICAgICoKKysgICAgICogPG5vdGU+PHBhcmE+QXJndW1lbnQgQHVzZXJfZGF0YSBp cyBpZ25vcmVkIGluIHRoaXMgZnVuY3Rpb24uPC9wYXJhPgorKyAgICAgKiA8L25vdGU+CisrICAg ICAqCisrICAgICAqIFNpbmNlOiAxLjUuMzMKKysgICAgICogU3RhYmlsaXR5OiBVbnN0YWJsZQor KyAgICAgKi8KKysgICAgcGFuZWxfc2lnbmFsc1tTRU5EX01FU1NBR0VfUkVDRUlWRURdID0KKysg ICAgICAgIGdfc2lnbmFsX25ldyAoSV8oInNlbmQtbWVzc2FnZS1yZWNlaXZlZCIpLAorKyAgICAg ICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTIChnb2JqZWN0X2NsYXNzKSwKKysgICAgICAgICAgICBH X1NJR05BTF9SVU5fTEFTVCwKKysgICAgICAgICAgICAwLAorKyAgICAgICAgICAgIE5VTEwsIE5V TEwsCisrICAgICAgICAgICAgX2lidXNfbWFyc2hhbF9WT0lEX19PQkpFQ1QsCisrICAgICAgICAg ICAgR19UWVBFX05PTkUsCisrICAgICAgICAgICAgMSwKKysgICAgICAgICAgICBJQlVTX1RZUEVf TUVTU0FHRSk7CisgfQorIAorIHN0YXRpYyB2b2lkCitAQCAtMTMxMCw2ICsxMzY4LDI2IEBAIGli dXNfcGFuZWxfc2VydmljZV9zZXJ2aWNlX21ldGhvZF9jYWxsIChJQnVzU2VydmljZSAgICAgICAg ICAgKnNlcnZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCwgYnV0dG9uLCBzdGF0 ZSk7CisgICAgICAgICByZXR1cm47CisgICAgIH0KKysgICAgaWYgKGdfc3RyY21wMCAobWV0aG9k X25hbWUsICJTZW5kTWVzc2FnZVJlY2VpdmVkIikgPT0gMCkgeworKyAgICAgICAgR1ZhcmlhbnQg KmFyZzAgPSBOVUxMOworKyAgICAgICAgSUJ1c01lc3NhZ2UgKm1lc3NhZ2UgPSBOVUxMOworKyAg ICAgICAgZ192YXJpYW50X2dldCAocGFyYW1ldGVycywgIih2KSIsICZhcmcwKTsKKysgICAgICAg IGlmIChhcmcwKSB7CisrICAgICAgICAgICAgbWVzc2FnZSA9IChJQnVzTWVzc2FnZSAqKWlidXNf c2VyaWFsaXphYmxlX2Rlc2VyaWFsaXplIChhcmcwKTsKKysgICAgICAgICAgICBnX3ZhcmlhbnRf dW5yZWYgKGFyZzApOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKCFtZXNzYWdlKSB7CisrICAg ICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl9lcnJvciAoCisrICAgICAg ICAgICAgICAgICAgICBpbnZvY2F0aW9uLAorKyAgICAgICAgICAgICAgICAgICAgR19EQlVTX0VS Uk9SLAorKyAgICAgICAgICAgICAgICAgICAgR19EQlVTX0VSUk9SX0ZBSUxFRCwKKysgICAgICAg ICAgICAgICAgICAgICJTZW5kTWVzc2FnZVJlY2VpdmVkIG1ldGhvZCBnaXZlcyBOVUxMIik7Cisr ICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAgICAgICAgZ19zaWduYWxfZW1pdCAo cGFuZWwsIHBhbmVsX3NpZ25hbHNbU0VORF9NRVNTQUdFX1JFQ0VJVkVEXSwgMCwgbWVzc2FnZSk7 CisrICAgICAgICBfZ19vYmplY3RfdW5yZWZfaWZfZmxvYXRpbmcgKG1lc3NhZ2UpOworKyAgICAg ICAgcmV0dXJuOworKyAgICB9CisgCisgCisgICAgIGNvbnN0IHN0YXRpYyBzdHJ1Y3QgeworQEAg LTE1MTAsNyArMTU4OCw3IEBAIGlidXNfcGFuZWxfc2VydmljZV9jYW5kaWRhdGVfY2xpY2tlZCAo SUJ1c1BhbmVsU2VydmljZSAqcGFuZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBndWludCAgICAgICAgICAgICBzdGF0ZSkKKyB7CisgICAgIGdfcmV0dXJuX2lmX2Zh aWwgKElCVVNfSVNfUEFORUxfU0VSVklDRSAocGFuZWwpKTsKKy0gICAgaWJ1c19zZXJ2aWNlX2Vt aXRfc2lnbmFsICgoSUJ1c1NlcnZpY2UgKikgcGFuZWwsCisrICAgIGlidXNfc2VydmljZV9lbWl0 X3NpZ25hbCAoKElCdXNTZXJ2aWNlICopcGFuZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQlVTX0lOVEVSRkFD RV9QQU5FTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuZGlkYXRlQ2xpY2tl ZCIsCitAQCAtMTUyNCw3ICsxNjAyLDcgQEAgaWJ1c19wYW5lbF9zZXJ2aWNlX3Byb3BlcnR5X2Fj dGl2YXRlIChJQnVzUGFuZWxTZXJ2aWNlICpwYW5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgIHByb3Bfc3RhdGUpCisgeworICAgICBn X3JldHVybl9pZl9mYWlsIChJQlVTX0lTX1BBTkVMX1NFUlZJQ0UgKHBhbmVsKSk7CistICAgIGli dXNfc2VydmljZV9lbWl0X3NpZ25hbCAoKElCdXNTZXJ2aWNlICopIHBhbmVsLAorKyAgICBpYnVz X3NlcnZpY2VfZW1pdF9zaWduYWwgKChJQnVzU2VydmljZSAqKXBhbmVsLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg SUJVU19JTlRFUkZBQ0VfUEFORUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBy b3BlcnR5QWN0aXZhdGUiLAorQEAgLTE1MzcsNyArMTYxNSw3IEBAIGlidXNfcGFuZWxfc2Vydmlj ZV9wcm9wZXJ0eV9zaG93IChJQnVzUGFuZWxTZXJ2aWNlICpwYW5lbCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAqcHJvcF9uYW1lKQorIHsKKyAg ICAgZ19yZXR1cm5faWZfZmFpbCAoSUJVU19JU19QQU5FTF9TRVJWSUNFIChwYW5lbCkpOworLSAg ICBpYnVzX3NlcnZpY2VfZW1pdF9zaWduYWwgKChJQnVzU2VydmljZSAqKSBwYW5lbCwKKysgICAg aWJ1c19zZXJ2aWNlX2VtaXRfc2lnbmFsICgoSUJ1c1NlcnZpY2UgKilwYW5lbCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIElCVVNfSU5URVJGQUNFX1BBTkVMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJQcm9wZXJ0eVNob3ciLAorQEAgLTE1NTAsNyArMTYyOCw3IEBAIGlidXNfcGFuZWxfc2Vydmlj ZV9wcm9wZXJ0eV9oaWRlIChJQnVzUGFuZWxTZXJ2aWNlICpwYW5lbCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAqcHJvcF9uYW1lKQorIHsKKyAg ICAgZ19yZXR1cm5faWZfZmFpbCAoSUJVU19JU19QQU5FTF9TRVJWSUNFIChwYW5lbCkpOworLSAg ICBpYnVzX3NlcnZpY2VfZW1pdF9zaWduYWwgKChJQnVzU2VydmljZSAqKSBwYW5lbCwKKysgICAg aWJ1c19zZXJ2aWNlX2VtaXRfc2lnbmFsICgoSUJ1c1NlcnZpY2UgKilwYW5lbCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIElCVVNfSU5URVJGQUNFX1BBTkVMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJQcm9wZXJ0eUhpZGUiLAorQEAgLTE1NjcsNyArMTY0NSw3IEBAIGlidXNfcGFuZWxfc2Vydmlj ZV9jb21taXRfdGV4dCAoSUJ1c1BhbmVsU2VydmljZSAqcGFuZWwsCisgICAgIGdfcmV0dXJuX2lm X2ZhaWwgKElCVVNfSVNfVEVYVCAodGV4dCkpOworIAorICAgICB2YXJpYW50ID0gaWJ1c19zZXJp YWxpemFibGVfc2VyaWFsaXplICgoSUJ1c1NlcmlhbGl6YWJsZSAqKXRleHQpOworLSAgICBpYnVz X3NlcnZpY2VfZW1pdF9zaWduYWwgKChJQnVzU2VydmljZSAqKSBwYW5lbCwKKysgICAgaWJ1c19z ZXJ2aWNlX2VtaXRfc2lnbmFsICgoSUJ1c1NlcnZpY2UgKilwYW5lbCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElC VVNfSU5URVJGQUNFX1BBTkVMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb21t aXRUZXh0IiwKK0BAIC0xNTg4LDcgKzE2NjYsNyBAQCBpYnVzX3BhbmVsX3NlcnZpY2VfcGFuZWxf ZXh0ZW5zaW9uIChJQnVzUGFuZWxTZXJ2aWNlICAgKnBhbmVsLAorICAgICBnX3JldHVybl9pZl9m YWlsIChJQlVTX0lTX0VYVEVOU0lPTl9FVkVOVCAoZXZlbnQpKTsKKyAKKyAgICAgdmFyaWFudCA9 IGlidXNfc2VyaWFsaXphYmxlX3NlcmlhbGl6ZSAoKElCdXNTZXJpYWxpemFibGUgKilldmVudCk7 CistICAgIGlidXNfc2VydmljZV9lbWl0X3NpZ25hbCAoKElCdXNTZXJ2aWNlICopIHBhbmVsLAor KyAgICBpYnVzX3NlcnZpY2VfZW1pdF9zaWduYWwgKChJQnVzU2VydmljZSAqKXBhbmVsLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSUJVU19JTlRFUkZBQ0VfUEFORUwsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIlBhbmVsRXh0ZW5zaW9uIiwKK0BAIC0xNjYyLDcgKzE3NDAsNyBAQCBpYnVzX3BhbmVs X3NlcnZpY2VfdXBkYXRlX3ByZWVkaXRfdGV4dF9yZWNlaXZlZCAoSUJ1c1BhbmVsU2VydmljZSAq cGFuZWwsCisgCisgICAgIHZhcmlhbnQgPSBpYnVzX3NlcmlhbGl6YWJsZV9zZXJpYWxpemUgKChJ QnVzU2VyaWFsaXphYmxlICopdGV4dCk7CisgICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHZhcmlhbnQp OworLSAgICBpYnVzX3NlcnZpY2VfZW1pdF9zaWduYWwgKChJQnVzU2VydmljZSAqKSBwYW5lbCwK KysgICAgaWJ1c19zZXJ2aWNlX2VtaXRfc2lnbmFsICgoSUJ1c1NlcnZpY2UgKilwYW5lbCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIElCVVNfSU5URVJGQUNFX1BBTkVMLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJVcGRhdGVQcmVlZGl0VGV4dFJlY2VpdmVkIiwKK0BAIC0xNjg2LDcgKzE3NjQsNyBA QCBpYnVzX3BhbmVsX3NlcnZpY2VfdXBkYXRlX2F1eGlsaWFyeV90ZXh0X3JlY2VpdmVkIChJQnVz UGFuZWxTZXJ2aWNlICpwYW5lbCwKKyAKKyAgICAgdmFyaWFudCA9IGlidXNfc2VyaWFsaXphYmxl X3NlcmlhbGl6ZSAoKElCdXNTZXJpYWxpemFibGUgKil0ZXh0KTsKKyAgICAgZ19yZXR1cm5faWZf ZmFpbCAodmFyaWFudCk7CistICAgIGlidXNfc2VydmljZV9lbWl0X3NpZ25hbCAoKElCdXNTZXJ2 aWNlICopIHBhbmVsLAorKyAgICBpYnVzX3NlcnZpY2VfZW1pdF9zaWduYWwgKChJQnVzU2Vydmlj ZSAqKXBhbmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSUJVU19JTlRFUkZBQ0VfUEFORUwsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIlVwZGF0ZUF1eGlsaWFyeVRleHRSZWNlaXZlZCIsCitAQCAt MTcxMSw3ICsxNzg5LDcgQEAgaWJ1c19wYW5lbF9zZXJ2aWNlX3VwZGF0ZV9sb29rdXBfdGFibGVf cmVjZWl2ZWQgKElCdXNQYW5lbFNlcnZpY2UgKnBhbmVsLAorIAorICAgICB2YXJpYW50ID0gaWJ1 c19zZXJpYWxpemFibGVfc2VyaWFsaXplICgoSUJ1c1NlcmlhbGl6YWJsZSAqKXRhYmxlKTsKKyAg ICAgZ19yZXR1cm5faWZfZmFpbCAodmFyaWFudCk7CistICAgIGlidXNfc2VydmljZV9lbWl0X3Np Z25hbCAoKElCdXNTZXJ2aWNlICopIHBhbmVsLAorKyAgICBpYnVzX3NlcnZpY2VfZW1pdF9zaWdu YWwgKChJQnVzU2VydmljZSAqKXBhbmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJVU19JTlRFUkZBQ0VfUEFO RUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVwZGF0ZUxvb2t1cFRhYmxlUmVj ZWl2ZWQiLAorQEAgLTE3MzEsNyArMTgwOSw3IEBAIGlidXNfcGFuZWxfc2VydmljZV9mb3J3YXJk X3Byb2Nlc3Nfa2V5X2V2ZW50IChJQnVzUGFuZWxTZXJ2aWNlICpwYW5lbCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQzMiAgICAgICAgICAgc3Rh dGUpCisgeworICAgICBnX3JldHVybl9pZl9mYWlsIChJQlVTX0lTX1BBTkVMX1NFUlZJQ0UgKHBh bmVsKSk7CistICAgIGlidXNfc2VydmljZV9lbWl0X3NpZ25hbCAoKElCdXNTZXJ2aWNlICopIHBh bmVsLAorKyAgICBpYnVzX3NlcnZpY2VfZW1pdF9zaWduYWwgKChJQnVzU2VydmljZSAqKXBhbmVs LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSUJVU19JTlRFUkZBQ0VfUEFORUwsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIkZvcndhcmRQcm9jZXNzS2V5RXZlbnQiLAorQEAgLTE3NDAsNiArMTgxOCwy OCBAQCBpYnVzX3BhbmVsX3NlcnZpY2VfZm9yd2FyZF9wcm9jZXNzX2tleV9ldmVudCAoSUJ1c1Bh bmVsU2VydmljZSAqcGFuZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7 CisgfQorIAorK3ZvaWQKKytpYnVzX3BhbmVsX3NlcnZpY2Vfc2VuZF9tZXNzYWdlIChJQnVzUGFu ZWxTZXJ2aWNlICpwYW5lbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVz TWVzc2FnZSAgICAgICptZXNzYWdlKQorK3sKKysgICAgR1ZhcmlhbnQgKnZhcmlhbnQ7CisrICAg IEdFcnJvciAqZXJyb3IgPSBOVUxMOworKworKyAgICBnX3JldHVybl9pZl9mYWlsIChJQlVTX0lT X1BBTkVMX1NFUlZJQ0UgKHBhbmVsKSk7CisrICAgIGdfcmV0dXJuX2lmX2ZhaWwgKElCVVNfSVNf TUVTU0FHRSAobWVzc2FnZSkpOworKyAgICB2YXJpYW50ID0gaWJ1c19zZXJpYWxpemFibGVfc2Vy aWFsaXplICgoSUJ1c1NlcmlhbGl6YWJsZSAqKW1lc3NhZ2UpOworKyAgICBpYnVzX3NlcnZpY2Vf ZW1pdF9zaWduYWwgKChJQnVzU2VydmljZSAqKXBhbmVsLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE5VTEwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJVU19JTlRF UkZBQ0VfUEFORUwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNlbmRNZXNzYWdl IiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3ICgiKHYpIiwg dmFyaWFudCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycm9yKTsKKysgICAg aWYgKGVycm9yKSB7CisrICAgICAgICBnX3dhcm5pbmcgKCJFcnJvciBpbiAlczogJXMiLCBHX1NU UkZVTkMsIGVycm9yLT5tZXNzYWdlKTsKKysgICAgICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOwor KyAgICB9CisrfQorKworICNkZWZpbmUgREVGSU5FX0ZVTkMobmFtZSwgTmFtZSkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIGlidXNfcGFuZWxfc2VydmljZV8jI25h bWUgKElCdXNQYW5lbFNlcnZpY2UgKnBhbmVsKSAgICAgXAorZGlmZiAtLWdpdCBhL3NyYy9pYnVz cGFuZWxzZXJ2aWNlLmggYi9zcmMvaWJ1c3BhbmVsc2VydmljZS5oCitpbmRleCA2NGVmY2E1NS4u NTcwNDU5NTYgMTAwNjQ0CistLS0gYS9zcmMvaWJ1c3BhbmVsc2VydmljZS5oCisrKysgYi9zcmMv aWJ1c3BhbmVsc2VydmljZS5oCitAQCAtMiw3ICsyLDcgQEAKKyAvKiB2aW06c2V0IGV0IHN0cz00 OiAqLworIC8qIGlidXMgLSBUaGUgSW5wdXQgQnVzCisgICogQ29weXJpZ2h0IChjKSAyMDA5LTIw MTQgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy0gKiBDb3B5cmlnaHQgKGMpIDIw MTctMjAyNCBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KKysgKiBD b3B5cmlnaHQgKGMpIDIwMTctMjAyNSBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdt YWlsLmNvbT4KKyAgKgorICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCitAQCAtMzYsNiArMzYsNyBAQAorICAqIERl dmVsb3BlcnMgY2FuICJleHRlbmQiIHRoaXMgY2xhc3MgZm9yIHBhbmVsIFVJIGRldmVsb3BtZW50 LgorICAqLworICNpbmNsdWRlICJpYnVzbG9va3VwdGFibGUuaCIKKysjaW5jbHVkZSAiaWJ1c21l c3NhZ2UuaCIKKyAjaW5jbHVkZSAiaWJ1c3NlcnZpY2UuaCIKKyAjaW5jbHVkZSAiaWJ1c3Byb3Bs aXN0LmgiCisgI2luY2x1ZGUgImlidXN4ZXZlbnQuaCIKK0BAIC02MCw2ICs2MSwyNCBAQAorIAor IEdfQkVHSU5fREVDTFMKKyAKKysvKioKKysgKiBJQnVzUGFuZWxTZXJ2aWNlTXNnQ29kZToKKysg KiBASUJVU19QQU5FTF9TRVJWSUNFX01TR19DT0RFX0dFTkVSQUw6IEdlbmVyaWMgbWVzc2FnZSBm b3IgUGFuZWwKKysgKiBASUJVU19QQU5FTF9TRVJWSUNFX01TR19DT0RFX0xPQURJTkdfVU5JQ09E RTogUHJvZ3Jlc3MgbWVzc2FnZSB3aGVuIHRoZQorKyAqICAgICAgICAgVW5pY29kZSBkYXRhIGlz IGxvYWRpbmcuCisrICoKKysgKiBNZXNzYWdlIGNvZGVzIGluIHRoZSBgSUJ1c01lc3NhZ2VEb21h aW5gIGRvbWFpbiBmb3IgUGFuZWwuCisrICoKKysgKiBTaW5jZTogMS41LjMzCisrICogU3RhYmls aXR5OiBVbnN0YWJsZQorKyAqLworK3R5cGVkZWYgZW51bQorK3sKKysgIElCVVNfUEFORUxfU0VS VklDRV9NU0dfQ09ERV9HRU5FUkFMLAorKyAgSUJVU19QQU5FTF9TRVJWSUNFX01TR19DT0RFX0xP QURJTkdfVU5JQ09ERQorK30gSUJ1c1BhbmVsU2VydmljZU1zZ0NvZGU7CisrCisrCisgdHlwZWRl ZiBzdHJ1Y3QgX0lCdXNQYW5lbFNlcnZpY2UgSUJ1c1BhbmVsU2VydmljZTsKKyB0eXBlZGVmIHN0 cnVjdCBfSUJ1c1BhbmVsU2VydmljZUNsYXNzIElCdXNQYW5lbFNlcnZpY2VDbGFzczsKKyAKK0BA IC0zNzIsMTEgKzM5MSwyOCBAQCB2b2lkIGlidXNfcGFuZWxfc2VydmljZV91cGRhdGVfbG9va3Vw X3RhYmxlX3JlY2VpdmVkCisgICoKKyAgKiBGb3J3YXJkIGtleSBldmVudHMgd2hlbiBhbiBJQnVz IHBvcHVwIHRha2VzIHRoZSBmb2N1cyBhbmQgdGhlIGV2ZW50cworICAqIG5lZWRzIHRvIGJlIGZv cndhcmVkIHRvIHRoZSB0YXJnZXQgSUJ1cyBlbmdpbmUuCisrICoKKysgKiBTaW5jZTogMS41LjMy CisrICogU3RhYmlsaXR5OiBVbnN0YWJsZQorICAqLworIHZvaWQgaWJ1c19wYW5lbF9zZXJ2aWNl X2ZvcndhcmRfcHJvY2Vzc19rZXlfZXZlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoSUJ1c1BhbmVsU2VydmljZSAqcGFuZWwsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50MzIgICAgICAgICAgIGtleXZhbCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQzMiAgICAgICAg ICAga2V5Y29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z3VpbnQzMiAgICAgICAgICAgc3RhdGUpOworKworKy8qKgorKyAqIGlidXNfcGFuZWxfc2Vydmlj ZV9zZW5kX21lc3NhZ2U6CisrICogQHBhbmVsOiBBbiAjSUJ1c1BhbmVsU2VydmljZS4KKysgKiBA bWVzc2FnZTogQW4gI0lCdXNNZXNzYWdlLgorKyAqCisrICogU2VuZCBhIG1lc3NhZ2UgdG8gdGhl IFBhbmVsIGZvciB0aGUgZm9jdXMtbGVzcyBub3RpZmljYXRpb24gcG9wdXAuCisrICogVGhpcyBp cyB1c2VkIGZvciB0aGUgZW1vamkgY29tcG9uZW50IGluIFdheWxhbmQgbWFpbmx5IGJ1dCBpbiBY b3JnIHRvby4KKysgKgorKyAqIFNpbmNlOiAxLjUuMzMKKysgKiBTdGFiaWxpdHk6IFVuc3RhYmxl CisrICovCisrdm9pZCBpYnVzX3BhbmVsX3NlcnZpY2Vfc2VuZF9tZXNzYWdlICAgICAgKElCdXNQ YW5lbFNlcnZpY2UgKnBhbmVsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJQnVzTWVzc2FnZSAgICAgICptZXNzYWdlKTsKKyBHX0VORF9ERUNMUworICNlbmRp ZgorZGlmZiAtLWdpdCBhL3NyYy9pYnVzdHlwZXMuaCBiL3NyYy9pYnVzdHlwZXMuaAoraW5kZXgg YzhkZmI4OWEuLjEyNDNiMmJjIDEwMDY0NAorLS0tIGEvc3JjL2lidXN0eXBlcy5oCisrKysgYi9z cmMvaWJ1c3R5cGVzLmgKK0BAIC0zNTgsNSArMzU4LDE5IEBAIHR5cGVkZWYgZW51bQorICAgICAg ICAgSUJVU19TVVBFUl9NQVNLIHwgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIElC VVNfSFlQRVJfTUFTSyB8ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICBJQlVTX01F VEFfTUFTSykpCisrLyoqCisrICogSUJ1c01lc3NhZ2VEb21haW46CisrICogQElCVVNfTUVTU0FH RV9FTkdJTkU6IFRoZSBtZXNzYWdlIGRvbWFpbiBmb3IgRW5naW5lIG1lc3NhZ2VzCisrICogQElC VVNfTUVTU0FHRV9QQU5FTDogVGhlIG1lc3NhZ2UgZG9tYWluIGZvciBQYW5lbCBtZXNzYWdlcwor KyAqCisrICogU2luY2U6IDEuNS4zMworKyAqIFN0YWJpbGl0eTogVW5zdGFibGUKKysgKi8KKyt0 eXBlZGVmIGVudW0KKyt7CisrICBJQlVTX01FU1NBR0VfRE9NQUlOX05PTkUsCisrICBJQlVTX01F U1NBR0VfRE9NQUlOX0VOR0lORSwKKysgIElCVVNfTUVTU0FHRV9ET01BSU5fUEFORUwKKyt9IElC dXNNZXNzYWdlRG9tYWluOworIAorICNlbmRpZgorZGlmZiAtLWdpdCBhL3VpL2d0azMvTWFrZWZp bGUuYW0gYi91aS9ndGszL01ha2VmaWxlLmFtCitpbmRleCA0Y2MxMDc4MC4uZDk5ZDhlODIgMTAw NjQ0CistLS0gYS91aS9ndGszL01ha2VmaWxlLmFtCisrKysgYi91aS9ndGszL01ha2VmaWxlLmFt CitAQCAtOTcsNiArOTcsNyBAQCBpYnVzX3VpX2d0azNfU09VUkNFUyA9IFwKKyAgICAgaGFuZGxl LnZhbGEgXAorICAgICBpY29ud2lkZ2V0LnZhbGEgXAorICAgICBrZXliaW5kaW5nbWFuYWdlci52 YWxhIFwKKysgICAgbWVzc2FnZS52YWxhIFwKKyAgICAgcGFuZWwudmFsYSBcCisgICAgIHBhbmdv LnZhbGEgXAorICAgICBwcm9wZXJ0eS52YWxhIFwKK2RpZmYgLS1naXQgYS91aS9ndGszL2Vtb2pp ZXIudmFsYSBiL3VpL2d0azMvZW1vamllci52YWxhCitpbmRleCAxNzcwZGUyZi4uMmQ4NzU0YTQg MTAwNjQ0CistLS0gYS91aS9ndGszL2Vtb2ppZXIudmFsYQorKysrIGIvdWkvZ3RrMy9lbW9qaWVy LnZhbGEKK0BAIC0yLDcgKzIsNyBAQAorICAqCisgICogaWJ1cyAtIFRoZSBJbnB1dCBCdXMKKyAg KgorLSAqIENvcHlyaWdodCAoYykgMjAxNy0yMDIzIFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWpp d2FyYTFAZ21haWwuY29tPgorKyAqIENvcHlyaWdodCAoYykgMjAxNy0yMDI1IFRha2FvIEZ1aml3 YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgorICAqCisgICogVGhpcyBsaWJyYXJ5IGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAqIG1vZGlm eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKK0BA IC0zMTIsNiArMzEyLDcgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0 aW9uV2luZG93IHsKKyAgICAgcHJpdmF0ZSB1aW50IG1fdW5pY29kZV9wcm9ncmVzc19pZDsKKyAg ICAgcHJpdmF0ZSBHdGsuTGFiZWwgbV91bmljb2RlX3BlcmNlbnRfbGFiZWw7CisgICAgIHByaXZh dGUgZG91YmxlIG1fdW5pY29kZV9wZXJjZW50OworKyAgICBwcml2YXRlIHVsb25nIG1fdW5pY29k ZV9kZXNlcmlhbGl6ZV91bmljb2RlX3NpZ25hbF9pZDsKKyAgICAgcHJpdmF0ZSBHZGsuUmVjdGFu Z2xlIG1fY3Vyc29yX2xvY2F0aW9uOworICAgICBwcml2YXRlIGJvb2wgbV9pc191cF9zaWRlX2Rv d24gPSBmYWxzZTsKKyAgICAgcHJpdmF0ZSB1aW50IG1fcmVkcmF3X3dpbmRvd19pZDsKK0BAIC0z MjEsNiArMzIyLDcgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9u V2luZG93IHsKKyAgICAgcHVibGljIHNpZ25hbCB2b2lkIGNhbmRpZGF0ZV9jbGlja2VkKHVpbnQg aW5kZXgsIHVpbnQgYnV0dG9uLCB1aW50IHN0YXRlKTsKKyAgICAgcHVibGljIHNpZ25hbCB2b2lk IGNvbW1pdF90ZXh0KHN0cmluZyB0ZXh0KTsKKyAgICAgcHVibGljIHNpZ25hbCB2b2lkIGNhbmNl bCgpOworKyAgICBwdWJsaWMgc2lnbmFsIHZvaWQgc2VuZF9tZXNzYWdlKElCdXMuTWVzc2FnZSBt ZXNzYWdlKTsKKyAKKyAgICAgcHVibGljIElCdXNFbW9qaWVyKGJvb2wgaXNfd2F5bGFuZCkgewor ICAgICAgICAgR0xpYi5PYmplY3QoCitAQCAtMTE3OCw5ICsxMTgwLDEzIEBAIHB1YmxpYyBjbGFz cyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAgICAgICBoYm94LnBh Y2tfc3RhcnQobV91bmljb2RlX3BlcmNlbnRfbGFiZWwsIGZhbHNlLCB0cnVlLCAwKTsKKyAgICAg ICAgIGhib3guc2hvd19hbGwoKTsKKyAKKy0gICAgICAgIG1fdW5pY29kZV9wcm9ncmVzc19vYmpl Y3QuZGVzZXJpYWxpemVfdW5pY29kZS5jb25uZWN0KChpLCBuKSA9PiB7CistICAgICAgICAgICAg bV91bmljb2RlX3BlcmNlbnQgPSAoZG91YmxlKWkgLyBuOworLSAgICAgICAgfSk7CisrICAgICAg ICBpZiAobV91bmljb2RlX2Rlc2VyaWFsaXplX3VuaWNvZGVfc2lnbmFsX2lkID09IDApIHsKKysg ICAgICAgICAgICBtX3VuaWNvZGVfZGVzZXJpYWxpemVfdW5pY29kZV9zaWduYWxfaWQgPQorKyAg ICAgICAgICAgICAgICAgICAgbV91bmljb2RlX3Byb2dyZXNzX29iamVjdC5kZXNlcmlhbGl6ZV91 bmljb2RlLmNvbm5lY3QoCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLCBuKSA9PiB7 CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VuaWNvZGVfcGVyY2VudCA9IChk b3VibGUpaSAvIG47CisrICAgICAgICAgICAgICAgICAgICB9KTsKKysgICAgICAgIH0KKyAgICAg ICAgIGlmIChtX3VuaWNvZGVfcHJvZ3Jlc3NfaWQgPiAwKSB7CisgICAgICAgICAgICAgR0xpYi5T b3VyY2UucmVtb3ZlKG1fdW5pY29kZV9wcm9ncmVzc19pZCk7CisgICAgICAgICB9CitAQCAtMTE5 OSw2ICsxMjA1LDE4IEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlv bldpbmRvdyB7CisgICAgIH0KKyAKKyAKKysgICAgcHJpdmF0ZSB2b2lkIHNob3dfdW5pY29kZV9w b3B1cChpbnQgcHJvZ3Jlc3MpIHsKKysgICAgICAgIHZhciBtZXNzYWdlID0gbmV3IElCdXMuTWVz c2FnZShJQnVzLk1lc3NhZ2VEb21haW4uUEFORUwsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSUJ1cy5QYW5lbFNlcnZpY2VNc2dDb2RlLkxPQURJTkdfVU5JQ09ERSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJJQnVzIEVtb2ppIGlu aXRpYWxpemF0aW9uIiksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XygiTG9hZGluZyBhIFVuaWNvZGUgZGljdGlvbmFyeToiKSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAidGltZW91dCIsIDMsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgInByb2dyZXNzIiwgcHJvZ3Jlc3MsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgInNlcmlhbCIsIDUwMDAxKTsKKysgICAgICAgIHNlbmRf bWVzc2FnZShtZXNzYWdlKTsKKysgICAgfQorKworKworICAgICBwcml2YXRlIHN0YXRpYyBzdHJp bmc/IGNoZWNrX3VuaWNvZGVfcG9pbnQoc3RyaW5nIGFubm90YXRpb24pIHsKKyAgICAgICAgIHN0 cmluZyB1bmljb2RlX3BvaW50ID0gbnVsbDsKKyAgICAgICAgIC8vIEFkZCAiMHgiIGJlY2F1c2Ug dWludDY0LmFzY2lpX3N0cnRvdWxsKCkgaXMgbm90IGFjY2Vzc2libGUKK0BAIC0xMjMyLDcgKzEy NTAsNyBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cg eworICAgICB9CisgCisgCistICAgIHByaXZhdGUgc3RhdGljIEdMaWIuU0xpc3Q8c3RyaW5nPj8K KysgICAgcHJpdmF0ZSBHTGliLlNMaXN0PHN0cmluZz4/CisgICAgIGxvb2t1cF9lbW9qaXNfZnJv bV9hbm5vdGF0aW9uKHN0cmluZyBhbm5vdGF0aW9uKSB7CisgICAgICAgICBHTGliLlNMaXN0PHN0 cmluZz4/IHRvdGFsX2Vtb2ppcyA9IG51bGw7CisgICAgICAgICB1bm93bmVkIEdMaWIuU0xpc3Q8 c3RyaW5nPj8gc3ViX2Vtb2ppcyA9IG51bGw7CitAQCAtMTMxMCw2ICsxMzI4LDE3IEBAIHB1Ymxp YyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisrICAgICAgICBpZiAoIW1fbG9h ZGVkX3VuaWNvZGUgJiYgbV91bmljb2RlX2Rlc2VyaWFsaXplX3VuaWNvZGVfc2lnbmFsX2lkID09 IDApIHsKKysgICAgICAgICAgICBtX3VuaWNvZGVfZGVzZXJpYWxpemVfdW5pY29kZV9zaWduYWxf aWQgPQorKyAgICAgICAgICAgICAgICAgICAgbV91bmljb2RlX3Byb2dyZXNzX29iamVjdC5kZXNl cmlhbGl6ZV91bmljb2RlLmNvbm5lY3QoCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIChp LCBuKSA9PiB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VuaWNvZGVfcGVy Y2VudCA9IChkb3VibGUpaSAvIG47CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz aG93X3VuaWNvZGVfcG9wdXAoCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChpbnQpKG1fdW5pY29kZV9wZXJjZW50ICogMTAwKSk7CisrICAgICAgICAgICAgICAgICAg ICB9KTsKKysgICAgICAgIH0KKysgICAgICAgIGlmICghbV9sb2FkZWRfdW5pY29kZSkKKysgICAg ICAgICAgICBzaG93X3VuaWNvZGVfcG9wdXAoMCk7CisgICAgICAgICByZXR1cm4gdG90YWxfZW1v amlzOworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9tZXNzYWdlLnZhbGEgYi91aS9n dGszL21lc3NhZ2UudmFsYQorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwLi4w YzdkZDQ3OAorLS0tIC9kZXYvbnVsbAorKysrIGIvdWkvZ3RrMy9tZXNzYWdlLnZhbGEKK0BAIC0w LDAgKzEsMzUzIEBACisrLyogdmltOnNldCBldCBzdHM9NCBzdz00OgorKyAqCisrICogaWJ1cyAt IFRoZSBJbnB1dCBCdXMKKysgKgorKyAqIENvcHlyaWdodChjKSAyMDI1IFRha2FvIEZ1aml3YXJh IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgorKyAqCisrICogVGhpcyBsaWJyYXJ5IGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAqIG1vZGlmeSBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIKKysgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH TlUKKysgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor KyAqCisrICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysgKiBGb3VuZGF0aW9uLCBJbmMuLCA1 MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxCisr ICogVVNBCisrICovCisrCisrcHVibGljIGNsYXNzIE1lc3NhZ2VEaWFsb2cgOiBHdGsuQm94ewor KyAgICBwcml2YXRlIEd0ay5XaW5kb3cgbV90b3BsZXZlbDsKKysgICAgcHJpdmF0ZSBHdGsuQm94 IG1fdmJveDsKKysgICAgcHJpdmF0ZSBHdGsuQm94IG1faGJveDsKKysgICAgcHJpdmF0ZSBHdGsu TGFiZWwgbV90aXRsZV9sYWJlbDsKKysgICAgcHJpdmF0ZSBHdGsuTGFiZWwgbV9kZXNjcmlwdGlv bl9sYWJlbDsKKysgICAgcHJpdmF0ZSBHdGsuUHJvZ3Jlc3NCYXIgbV9wcm9ncmVzc19iYXI7Cisr ICAgIHByaXZhdGUgR3RrLkxhYmVsIG1fcHJvZ3Jlc3NfbGFiZWw7CisrICAgIHByaXZhdGUgR3Rr LkxhYmVsIG1fdGltZW91dF9sYWJlbDsKKysgICAgcHJpdmF0ZSBHdGsuQnV0dG9uIG1fYnV0dG9u OworKyAgICBwcml2YXRlIGludCBtX3RpbWVvdXRfdGltZTsKKysgICAgcHJpdmF0ZSBpbnQgbV9l bGFwc2VkX3RpbWU7CisrICAgIHByaXZhdGUgdWludCBtX3RpbWVvdXRfaWQ7CisrCisrICAgIHBy aXZhdGUgR2RrLlJlY3RhbmdsZSBtX2N1cnNvcl9sb2NhdGlvbjsKKysKKysgICAgcHJpdmF0ZSBi b29sIG1faXNfd2F5bGFuZDsKKysgICAgcHJpdmF0ZSBib29sIG1fbm9fd2F5bGFuZF9wYW5lbDsK KysKKysjaWYgVVNFX0dES19XQVlMQU5ECisrICAgIHByaXZhdGUgYm9vbCBtX2hpZGVfYWZ0ZXJf c2hvdzsKKysjZW5kaWYKKysKKysgICAgcHVibGljIHNpZ25hbCB2b2lkIGNsb3NlKCk7CisrCisr I2lmIFVTRV9HREtfV0FZTEFORAorKyAgICBwdWJsaWMgc2lnbmFsIHZvaWQgcmVhbGl6ZV9zdXJm YWNlKHZvaWQgKnN1cmZhY2UpOworKyNlbmRpZgorKworKyAgICBwdWJsaWMgTWVzc2FnZURpYWxv ZyAoYm9vbCAgICAgICAgIGlzX3dheWxhbmQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICBi b29sICAgICAgICAgbm9fd2F5bGFuZF9wYW5lbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg IElCdXMuTWVzc2FnZSBtZXNzYWdlKSB7CisrICAgICAgICAvLyBDYWxsIGJhc2UgY2xhc3MgY29u c3RydWN0b3IKKysgICAgICAgIEdMaWIuT2JqZWN0KAorKyAgICAgICAgICAgIG5hbWUgOiAiSUJ1 c01lc3NhZ2VEaWFsb2ciLAorKyAgICAgICAgICAgIG9yaWVudGF0aW9uOiBHdGsuT3JpZW50YXRp b24uSE9SSVpPTlRBTCwKKysgICAgICAgICAgICB2aXNpYmxlOiB0cnVlCisrICAgICAgICApOwor KworKyAgICAgICAgbV9pc193YXlsYW5kID0gaXNfd2F5bGFuZDsKKysgICAgICAgIG1fbm9fd2F5 bGFuZF9wYW5lbCA9IG5vX3dheWxhbmRfcGFuZWw7CisrICAgICAgICBtX3RvcGxldmVsID0gbmV3 IEd0ay5XaW5kb3coR3RrLldpbmRvd1R5cGUuUE9QVVApOworKyAgICAgICAgbV90b3BsZXZlbC5h ZGRfZXZlbnRzKEdkay5FdmVudE1hc2suQlVUVE9OX1BSRVNTX01BU0spOworKyAgICAgICAgbV90 b3BsZXZlbC5zaXplX2FsbG9jYXRlLmNvbm5lY3QoKHcsIGEpID0+IHsKKysgICAgICAgICAgICBh ZGp1c3Rfd2luZG93X3Bvc2l0aW9uKHcpOworKyAgICAgICAgfSk7CisrI2lmIFVTRV9HREtfV0FZ TEFORAorKyAgICAgICAgaWYgKG1faXNfd2F5bGFuZCkgeworKyAgICAgICAgICAgIG1fdG9wbGV2 ZWwucmVhbGl6ZS5jb25uZWN0KCh3KSA9PiB7CisrICAgICAgICAgICAgICAgIHJlYWxpemVfd2lu ZG93KHRydWUpOworKyAgICAgICAgICAgIH0pOworKyAgICAgICAgICAgIG1fdG9wbGV2ZWwuc2hv dy5jb25uZWN0KCh3KSA9PiB7CisrICAgICAgICAgICAgICAgIGlmIChtX2hpZGVfYWZ0ZXJfc2hv dykKKysgICAgICAgICAgICAgICAgICAgIHJlYWxpemVfd2luZG93KGZhbHNlKTsKKysgICAgICAg ICAgICAgICAgbV9oaWRlX2FmdGVyX3Nob3cgPSBmYWxzZTsKKysgICAgICAgICAgICB9KTsKKysg ICAgICAgICAgICBtX3RvcGxldmVsLmhpZGUuY29ubmVjdCgodykgPT4geworKyAgICAgICAgICAg ICAgICBtX2hpZGVfYWZ0ZXJfc2hvdyA9IHRydWU7CisrICAgICAgICAgICAgfSk7CisrICAgICAg ICB9CisrI2VuZGlmCisrCisrICAgICAgICBtX3Zib3ggPSBuZXcgR3RrLkJveChHdGsuT3JpZW50 YXRpb24uVkVSVElDQUwsIDApOworKyAgICAgICAgbV92Ym94LnNldF92aXNpYmxlKHRydWUpOwor KyAgICAgICAgcGFja19zdGFydChtX3Zib3gsIGZhbHNlLCBmYWxzZSwgMCk7CisrCisrICAgICAg ICBtX3RvcGxldmVsLmFkZCh0aGlzKTsKKysKKysgICAgICAgIGNyZWF0ZV91aShtZXNzYWdlKTsK KysgICAgfQorKworKyAgICBwdWJsaWMgdm9pZCBzZXRfY3Vyc29yX2xvY2F0aW9uKGludCB4LCBp bnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSB7CisrICAgICAgICBHZGsuUmVjdGFuZ2xlIGxv Y2F0aW9uID0gR2RrLlJlY3RhbmdsZSgpeworKyAgICAgICAgICAgIHggPSB4LCB5ID0geSwgd2lk dGggPSB3aWR0aCwgaGVpZ2h0ID0gaGVpZ2h0IH07CisrICAgICAgICBpZiAobV9jdXJzb3JfbG9j YXRpb24gPT0gbG9jYXRpb24pCisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgbV9jdXJz b3JfbG9jYXRpb24gPSBsb2NhdGlvbjsKKysKKysgICAgICAgIC8qIERvIG5vdCBjYWxsIGFkanVz dF93aW5kb3dfcG9zaXRpb24oKSBoZXJlIGJlY2F1c2UKKysgICAgICAgICAqIG1fdG9wbGV2ZWwg aXMgbm90IHNob3duIHlldCBhbmQKKysgICAgICAgICAqIG1fdG9wbGV2ZWwuZ2V0X2FsbG9jYXRp b24oKSByZXR1cm5zIGhlaWdodCA9IHdpZHRoID0gMSAqLworKyAgICB9CisrCisrICAgIHByaXZh dGUgdm9pZCBjcmVhdGVfdWkoSUJ1cy5NZXNzYWdlIG1lc3NhZ2UpIHsKKysgICAgICAgIHN0cmlu Zz8gdGl0bGUgPSBtZXNzYWdlLmdldF90aXRsZSgpOworKyAgICAgICAgc3RyaW5nIGRlc2NyaXB0 aW9uID0gbWVzc2FnZS5nZXRfZGVzY3JpcHRpb24oKTsKKysKKysgICAgICAgIGlmICh0aXRsZS5s ZW5ndGggPiAwKSB7CisrICAgICAgICAgICAgbV90aXRsZV9sYWJlbCA9IG5ldyBHdGsuTGFiZWwo dGl0bGUpOworKyAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICBtX3RpdGxlX2xhYmVsID0g bmV3IEd0ay5MYWJlbChudWxsKTsKKysgICAgICAgICAgICBtX3RpdGxlX2xhYmVsLnNldF9ub19z aG93X2FsbCh0cnVlKTsKKysgICAgICAgIH0KKysgICAgICAgIG1fdGl0bGVfbGFiZWwuc2V0X2hh bGlnbihHdGsuQWxpZ24uQ0VOVEVSKTsKKysgICAgICAgIG1fdGl0bGVfbGFiZWwuc2V0X3ZhbGln bihHdGsuQWxpZ24uQ0VOVEVSKTsKKysgICAgICAgIG1fdGl0bGVfbGFiZWwuc2V0X21hcmdpbl9z dGFydCg4KTsKKysgICAgICAgIG1fdGl0bGVfbGFiZWwuc2V0X21hcmdpbl9lbmQoOCk7CisrICAg ICAgICBtX3RpdGxlX2xhYmVsLnNldF9saW5lX3dyYXAodHJ1ZSk7CisrICAgICAgICBtX3RpdGxl X2xhYmVsLnNldF93aWR0aF9jaGFycyg1MCk7CisrCisrICAgICAgICBtX2Rlc2NyaXB0aW9uX2xh YmVsID0gbmV3IEd0ay5MYWJlbChkZXNjcmlwdGlvbik7CisrICAgICAgICBtX2Rlc2NyaXB0aW9u X2xhYmVsLnNldF9oYWxpZ24oR3RrLkFsaWduLlNUQVJUKTsKKysgICAgICAgIG1fZGVzY3JpcHRp b25fbGFiZWwuc2V0X3ZhbGlnbihHdGsuQWxpZ24uQ0VOVEVSKTsKKysgICAgICAgIG1fZGVzY3Jp cHRpb25fbGFiZWwuc2V0X21hcmdpbl9zdGFydCg4KTsKKysgICAgICAgIG1fZGVzY3JpcHRpb25f bGFiZWwuc2V0X21hcmdpbl9lbmQoOCk7CisrICAgICAgICBtX2Rlc2NyaXB0aW9uX2xhYmVsLnNl dF9saW5lX3dyYXAodHJ1ZSk7CisrICAgICAgICBtX2Rlc2NyaXB0aW9uX2xhYmVsLnNldF93aWR0 aF9jaGFycyg1MCk7CisrCisrICAgICAgICBtX2hib3ggPSBuZXcgR3RrLkJveChHdGsuT3JpZW50 YXRpb24uSE9SSVpPTlRBTCwgNSk7CisrICAgICAgICBtX2hib3guc2V0X2hhbGlnbihHdGsuQWxp Z24uQ0VOVEVSKTsKKysgICAgICAgIG1faGJveC5zZXRfdmFsaWduKEd0ay5BbGlnbi5DRU5URVIp OworKyAgICAgICAgbV9wcm9ncmVzc19iYXIgPSBuZXcgR3RrLlByb2dyZXNzQmFyKCk7CisrICAg ICAgICBtX3Byb2dyZXNzX2Jhci5zZXRfZWxsaXBzaXplKFBhbmdvLkVsbGlwc2l6ZU1vZGUuTUlE RExFKTsKKysgICAgICAgIG1fcHJvZ3Jlc3NfYmFyLnNldF9oYWxpZ24oR3RrLkFsaWduLkNFTlRF Uik7CisrICAgICAgICBtX3Byb2dyZXNzX2Jhci5zZXRfdmFsaWduKEd0ay5BbGlnbi5DRU5URVIp OworKyAgICAgICAgbV9wcm9ncmVzc19sYWJlbCA9IG5ldyBHdGsuTGFiZWwobnVsbCk7CisrCisr ICAgICAgICBpbnQgcHJvZ3Jlc3MgPSBtZXNzYWdlLmdldF9wcm9ncmVzcygpOworKyAgICAgICAg ZG91YmxlIHByb2dyZXNzX2YgPSBwcm9ncmVzcyAvIDEwMC4wOworKyAgICAgICAgaWYgKHByb2dy ZXNzX2YgPD0gMS4wICYmIHByb2dyZXNzID49IDApIHsKKysgICAgICAgICAgICBtX3Byb2dyZXNz X2Jhci5zZXRfZnJhY3Rpb24ocHJvZ3Jlc3NfZik7CisrICAgICAgICAgICAgbV9wcm9ncmVzc19i YXIuc2V0X3RleHQoCisrICAgICAgICAgICAgICAgICAgICAiJTJ1JSVcbiIucHJpbnRmKHByb2dy ZXNzKSk7CisrICAgICAgICAgICAgbV9wcm9ncmVzc19sYWJlbC5zZXRfdGV4dCgKKysgICAgICAg ICAgICAgICAgICAgICIlMnUlJVxuIi5wcmludGYocHJvZ3Jlc3MpKTsKKysgICAgICAgIH0gZWxz ZSB7CisrICAgICAgICAgICAgaWYgKHByb2dyZXNzX2YgPiAxLjApCisrICAgICAgICAgICAgICAg IHdhcm5pbmcgKCJQcm9ncmVzcyBzaG91bGQgYmUgYmVsb3cgMTAwLiIpOworKyAgICAgICAgICAg IG1faGJveC5zZXRfbm9fc2hvd19hbGwodHJ1ZSk7CisrICAgICAgICB9CisrCisrICAgICAgICBt X3RpbWVvdXRfdGltZSA9IG1lc3NhZ2UuZ2V0X3RpbWVvdXQoKTsKKysgICAgICAgIGlmIChtX3Rp bWVvdXRfdGltZSA+PSAwKSB7CisrICAgICAgICAgICAgbV90aW1lb3V0X2xhYmVsID0gbmV3IEd0 ay5MYWJlbChfKCIlNWRTZWMiKS5wcmludGYobV90aW1lb3V0X3RpbWUpKTsKKysgICAgICAgIH0g ZWxzZSB7CisrICAgICAgICAgICAgbV90aW1lb3V0X2xhYmVsID0gbmV3IEd0ay5MYWJlbChudWxs KTsKKysgICAgICAgICAgICBtX3RpbWVvdXRfbGFiZWwuc2V0X25vX3Nob3dfYWxsKHRydWUpOwor KyAgICAgICAgfQorKyAgICAgICAgbV90aW1lb3V0X2xhYmVsLnNldF9zaXplX3JlcXVlc3QoMjAs IC0xKTsKKysgICAgICAgIG1fdGltZW91dF9sYWJlbC5zZXRfaGFsaWduKEd0ay5BbGlnbi5DRU5U RVIpOworKyAgICAgICAgbV90aW1lb3V0X2xhYmVsLnNldF92YWxpZ24oR3RrLkFsaWduLkNFTlRF Uik7CisrICAgICAgICBtX3RpbWVvdXRfbGFiZWwuc2V0X21hcmdpbl9zdGFydCg4KTsKKysgICAg ICAgIG1fdGltZW91dF9sYWJlbC5zZXRfbWFyZ2luX2VuZCg4KTsKKysKKysgICAgICAgIGlmICht ZXNzYWdlLmdldF9zZXJpYWwoKSA+IDAgJiYgbV90aW1lb3V0X3RpbWUgPj0gMCkgeworKyAgICAg ICAgICAgIG1fYnV0dG9uID0gbmV3IEd0ay5CdXR0b24oKTsKKysgICAgICAgICAgICBtX2J1dHRv bi5zZXRfbm9fc2hvd19hbGwodHJ1ZSk7CisrICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAg IG1fYnV0dG9uID0gbmV3IEd0ay5CdXR0b24ud2l0aF9sYWJlbChfKCJDbG9zZSIpKTsKKysgICAg ICAgICAgICBtX2J1dHRvbi5nZXRfc3R5bGVfY29udGV4dCgpLmFkZF9jbGFzcygidGV4dC1idXR0 b24iKTsKKysgICAgICAgICAgICBtX2J1dHRvbi5zZXRfY2FuX2RlZmF1bHQodHJ1ZSk7CisrICAg ICAgICB9CisrICAgICAgICBtX2J1dHRvbi5zZXRfdXNlX3VuZGVybGluZSh0cnVlKTsKKysgICAg ICAgIG1fYnV0dG9uLnNldF92YWxpZ24oR3RrLkFsaWduLkJBU0VMSU5FKTsKKysgICAgICAgIG1f YnV0dG9uLmNsaWNrZWQuY29ubmVjdCgodykgPT4geworKyAgICAgICAgICAgIGlmIChtX3RpbWVv dXRfaWQgPiAwKSB7CisrICAgICAgICAgICAgICAgIEdMaWIuU291cmNlLnJlbW92ZShtX3RpbWVv dXRfaWQpOworKyAgICAgICAgICAgICAgICBtX3RpbWVvdXRfaWQgPSAwOworKyAgICAgICAgICAg IH0KKysgICAgICAgICAgICBjbG9zZSgpOworKyAgICAgICAgfSk7CisrICAgICAgICBpZiAobV90 aW1lb3V0X3RpbWUgPj0gMCkgeworKyAgICAgICAgICAgIG1fZWxhcHNlZF90aW1lID0gMTsKKysg ICAgICAgICAgICBtX3RpbWVvdXRfaWQgPSBUaW1lb3V0LmFkZF9zZWNvbmRzKDEsCisrICAgICAg ICAgICAgICAgICAgICAoKSA9PiB7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZWxh cHNlZF90aW1lID49IG1fdGltZW91dF90aW1lKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNsb3NlKCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdGltZW91dF9pZCA9 IDA7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTb3VyY2UuUkVNT1ZFOwor KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgICAgICAgICBtX3Rp bWVvdXRfbGFiZWwuc2V0X3RleHQoXygiJTVkU2VjIikucHJpbnRmKAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbV90aW1lb3V0X3RpbWUgLSBtX2VsYXBzZWRfdGltZSsrKSk7Cisr ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNvdXJjZS5DT05USU5VRTsKKysgICAgICAg ICAgICAgICAgICAgIH0pOworKyAgICAgICAgfQorKworKyAgICAgICAgbV92Ym94LnBhY2tfc3Rh cnQobV90aXRsZV9sYWJlbCwgZmFsc2UsIGZhbHNlLCA0KTsKKysgICAgICAgIG1fdmJveC5wYWNr X3N0YXJ0KG1fZGVzY3JpcHRpb25fbGFiZWwsIGZhbHNlLCBmYWxzZSwgNCk7CisrICAgICAgICBt X3Zib3guYWRkKG1faGJveCk7CisrICAgICAgICBtX2hib3guYWRkKG1fcHJvZ3Jlc3NfYmFyKTsK KysgICAgICAgIG1faGJveC5hZGQobV9wcm9ncmVzc19sYWJlbCk7CisrICAgICAgICBtX3Zib3gu cGFja19zdGFydChtX3RpbWVvdXRfbGFiZWwsIGZhbHNlLCBmYWxzZSwgNCk7CisrICAgICAgICBt X3Zib3gucGFja19zdGFydChtX2J1dHRvbiwgZmFsc2UsIGZhbHNlLCAwKTsKKysKKysgICAgICAg IG1fdG9wbGV2ZWwucmVzaXplKDEsIDEpOworKyAgICB9CisrCisrICAgIHB1YmxpYyB2b2lkIHVw ZGF0ZV9tZXNzYWdlKElCdXMuTWVzc2FnZSBtZXNzYWdlKSB7CisrICAgICAgICBzdHJpbmc/IHRp dGxlID0gbWVzc2FnZS5nZXRfdGl0bGUoKTsKKysgICAgICAgIHN0cmluZyBkZXNjcmlwdGlvbiA9 IG1lc3NhZ2UuZ2V0X2Rlc2NyaXB0aW9uKCk7CisrCisrICAgICAgICBpZiAodGl0bGUubGVuZ3Ro ID4gMCkgeworKyAgICAgICAgICAgIG1fdGl0bGVfbGFiZWwuc2V0X3RleHQodGl0bGUpOworKyAg ICAgICAgICAgIG1fdGl0bGVfbGFiZWwuc2hvdygpOworKyAgICAgICAgfSBlbHNlIHsKKysgICAg ICAgICAgICBtX3RpdGxlX2xhYmVsLmhpZGUoKTsKKysgICAgICAgIH0KKysgICAgICAgIG1fZGVz Y3JpcHRpb25fbGFiZWwuc2V0X3RleHQoZGVzY3JpcHRpb24pOworKworKyAgICAgICAgbV90aW1l b3V0X3RpbWUgPSBtZXNzYWdlLmdldF90aW1lb3V0KCk7CisrICAgICAgICBpZiAobV90aW1lb3V0 X3RpbWUgPj0gMCkgeworKyAgICAgICAgICAgIG1fdGltZW91dF9sYWJlbC5zZXRfdGV4dChfKCIl NWRTZWMiKS5wcmludGYobV90aW1lb3V0X3RpbWUpKTsKKysgICAgICAgICAgICBtX3RpbWVvdXRf bGFiZWwuc2hvdygpOworKyAgICAgICAgICAgIG1fZWxhcHNlZF90aW1lID0gMTsKKysgICAgICAg IH0gZWxzZSB7CisrICAgICAgICAgICAgbV90aW1lb3V0X2xhYmVsLmhpZGUoKTsKKysgICAgICAg IH0KKysKKysgICAgICAgIGludCBwcm9ncmVzcyA9IG1lc3NhZ2UuZ2V0X3Byb2dyZXNzKCk7Cisr ICAgICAgICBkb3VibGUgcHJvZ3Jlc3NfZiA9IHByb2dyZXNzIC8gMTAwLjA7CisrICAgICAgICBp ZiAocHJvZ3Jlc3NfZiA8PSAxLjAgJiYgcHJvZ3Jlc3MgPj0gMCkgeworKyAgICAgICAgICAgIG1f cHJvZ3Jlc3NfYmFyLnNldF9mcmFjdGlvbihwcm9ncmVzc19mKTsKKysgICAgICAgICAgICBtX3By b2dyZXNzX2Jhci5zZXRfdGV4dCgKKysgICAgICAgICAgICAgICAgICAgICIlMnUlJVxuIi5wcmlu dGYocHJvZ3Jlc3MpKTsKKysgICAgICAgICAgICBtX3Byb2dyZXNzX2xhYmVsLnNldF90ZXh0KAor KyAgICAgICAgICAgICAgICAgICAgIiUydSUlXG4iLnByaW50Zihwcm9ncmVzcykpOworKyAgICAg ICAgICAgIG1faGJveC5zaG93KCk7CisrICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgIGlm IChwcm9ncmVzc19mID4gMS4wKQorKyAgICAgICAgICAgICAgICB3YXJuaW5nICgiUHJvZ3Jlc3Mg c2hvdWxkIGJlIGJlbG93IDEwMC4iKTsKKysgICAgICAgICAgICBtX2hib3guaGlkZSgpOworKyAg ICAgICAgfQorKworKyAgICAgICAgbV90b3BsZXZlbC5yZXNpemUoMSwgMSk7CisrICAgICAgICB0 aGlzLnNob3coKTsKKysgICAgfQorKworKyAgICBwdWJsaWMgbmV3IHZvaWQgc2hvdygpIHsKKysg ICAgICAgIG1fdG9wbGV2ZWwuc2hvd19hbGwoKTsKKysgICAgfQorKworKyAgICBwdWJsaWMgbmV3 IHZvaWQgaGlkZSgpIHsKKysjaWYgVVNFX0dES19XQVlMQU5ECisrICAgICAgICBpZiAobV9pc193 YXlsYW5kKQorKyAgICAgICAgICAgIHJlYWxpemVfc3VyZmFjZShudWxsKTsKKysjZW5kaWYKKysg ICAgICAgIG1fdG9wbGV2ZWwuaGlkZSgpOworKyAgICB9CisrCisrICAgIC8qKgorKyAgICAgKiBt b3ZlOgorKyAgICAgKiBAeDogbGVmdCBwb3NpdGlvbiBvZiB0aGUgI01lc3NhZ2VEaWFsb2cKKysg ICAgICogQHk6IHRvcCBwb3NpdGlvbiBvZiB0aGUgI01lc3NhZ2VEaWFsb2cKKysgICAgICovCisr ICAgIHByaXZhdGUgdm9pZCBtb3ZlKGludCB4LCBpbnQgeSkgeworKyAgICAgICAgbV90b3BsZXZl bC5tb3ZlKHgsIHkpOworKyAgICB9CisrCisrICAgIHByaXZhdGUgdm9pZCBhZGp1c3Rfd2luZG93 X3Bvc2l0aW9uKEd0ay5XaWRnZXQgd2luZG93KSB7CisrICAgICAgICBhZGp1c3Rfd2luZG93X3Bv c2l0aW9uX2hvcml6b250YWwod2luZG93KTsKKysgICAgfQorKworKyAgICAvKioKKysgICAgICog YWRqdXN0X3dpbmRvd19wb3NpdGlvbl9ob3Jpem9udGFsOgorKyAgICAgKiBAd2luZG93OiBBIEd0 ay5XaWRnZXQgb2YgdGhlIHRvcGxldmVsIHdpbmRvdy4KKysgICAgICoKKysgICAgICogSG9yaXpv bnRhbCB3cml0aW5nIG1vZGUgYnV0IG5vdCB0aGUgaG9yaXpvbnRhbCBsb29rdXAgdGFibGUKKysg ICAgICogd2hlbiB0aGUgYWxsb2NhdGlvbiBpcyBlbW1pdHRlZC4KKysgICAgICovCisrICAgIHBy aXZhdGUgdm9pZCBhZGp1c3Rfd2luZG93X3Bvc2l0aW9uX2hvcml6b250YWwoR3RrLldpZGdldCB3 aW5kb3cpIHsKKysgICAgICAgIEdkay5Qb2ludCBjdXJzb3JfbGVmdF9ib3R0b20gPSB7CisrICAg ICAgICAgICAgICAgIG1fY3Vyc29yX2xvY2F0aW9uLngsCisrICAgICAgICAgICAgICAgIG1fY3Vy c29yX2xvY2F0aW9uLnkgKyBtX2N1cnNvcl9sb2NhdGlvbi5oZWlnaHQKKysgICAgICAgIH07Cisr CisrICAgICAgICBHdGsuQWxsb2NhdGlvbiBhbGxvY2F0aW9uOworKyAgICAgICAgbV90b3BsZXZl bC5nZXRfYWxsb2NhdGlvbihvdXQgYWxsb2NhdGlvbik7CisrICAgICAgICBHZGsuUG9pbnQgd2lu ZG93X3JpZ2h0X2JvdHRvbSA9IHsKKysgICAgICAgICAgICBjdXJzb3JfbGVmdF9ib3R0b20ueCAr IGFsbG9jYXRpb24ud2lkdGgsCisrICAgICAgICAgICAgY3Vyc29yX2xlZnRfYm90dG9tLnkgKyBh bGxvY2F0aW9uLmhlaWdodAorKyAgICAgICAgfTsKKysKKysgICAgICAgIEdkay5SZWN0YW5nbGUg bW9uaXRvcl9hcmVhID0gZ2V0X21vbml0b3JfZ2VvbWV0cnkod2luZG93KTsKKysgICAgICAgIGlu dCBtb25pdG9yX3JpZ2h0ID0gbW9uaXRvcl9hcmVhLnggKyBtb25pdG9yX2FyZWEud2lkdGg7Cisr ICAgICAgICBpbnQgbW9uaXRvcl9ib3R0b20gPSBtb25pdG9yX2FyZWEueSArIG1vbml0b3JfYXJl YS5oZWlnaHQ7CisrCisrICAgICAgICBpbnQgeCwgeTsKKysgICAgICAgIGlmICh3aW5kb3dfcmln aHRfYm90dG9tLnggPiBtb25pdG9yX3JpZ2h0KQorKyAgICAgICAgICAgIHggPSBtb25pdG9yX3Jp Z2h0IC0gYWxsb2NhdGlvbi53aWR0aDsKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICB4ID0g Y3Vyc29yX2xlZnRfYm90dG9tLng7CisrICAgICAgICBpZiAoeCA8IDApCisrICAgICAgICAgICAg eCA9IDA7CisrCisrICAgICAgICBpZiAod2luZG93X3JpZ2h0X2JvdHRvbS55ID4gbW9uaXRvcl9i b3R0b20pCisrICAgICAgICAgICAgeSA9IG1fY3Vyc29yX2xvY2F0aW9uLnkgLSBhbGxvY2F0aW9u LmhlaWdodDsKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICB5ID0gY3Vyc29yX2xlZnRfYm90 dG9tLnk7CisrICAgICAgICBpZiAoeSA8IDApCisrICAgICAgICAgICAgeSA9IDA7CisrCisrICAg ICAgICBtb3ZlKHgsIHkpOworKyAgICB9CisrCisrICAgIHByaXZhdGUgR2RrLlJlY3RhbmdsZSBn ZXRfbW9uaXRvcl9nZW9tZXRyeShHdGsuV2lkZ2V0IHdpbmRvdykgeworKyAgICAgICAgR2RrLlJl Y3RhbmdsZSBtb25pdG9yX2FyZWEgPSB7IDAsIH07CisrCisrICAgICAgICAvLyBVc2UgZ2V0X21v bml0b3JfZ2VvbWV0cnkoKSBpbnN0ZWFkIG9mIGdldF9tb25pdG9yX2FyZWEoKS4KKysgICAgICAg IC8vIGdldF9tb25pdG9yX2FyZWEoKSBleGNsdWRlcyBkb2NrcywgYnV0IHRoZSBsb29rdXAgd2lu ZG93IHNob3VsZCBiZQorKyAgICAgICAgLy8gc2hvd24gb3ZlciB0aGVtLgorKyAgICAgICAgR2Rr Lk1vbml0b3IgbW9uaXRvciA9IHdpbmRvdy5nZXRfZGlzcGxheSgpLmdldF9tb25pdG9yX2F0X3Bv aW50KAorKyAgICAgICAgICAgICAgICBtX2N1cnNvcl9sb2NhdGlvbi54LAorKyAgICAgICAgICAg ICAgICBtX2N1cnNvcl9sb2NhdGlvbi55KTsKKysgICAgICAgIG1vbml0b3JfYXJlYSA9IG1vbml0 b3IuZ2V0X2dlb21ldHJ5KCk7CisrICAgICAgICByZXR1cm4gbW9uaXRvcl9hcmVhOworKyAgICB9 CisrCisrI2lmIFVTRV9HREtfV0FZTEFORAorKyAgICBwcml2YXRlIHZvaWQgcmVhbGl6ZV93aW5k b3coYm9vbCBpbml0aWFsKSB7CisrICAgICAgICAvLyBUaGUgY3VzdG9tIHN1cmZhY2UgY2FuIGJl IHVzZWQgd2hlbiB0aGUgV2F5bGFuZCBpbnB1dC1tZXRob2QKKysgICAgICAgIC8vIGlzIGFjdGl2 YXRlZC4KKysgICAgICAgIGlmIChtX25vX3dheWxhbmRfcGFuZWwpCisrICAgICAgICAgICAgcmV0 dXJuOworKyAgICAgICAgdmFyIHdpbmRvdyA9IG1fdG9wbGV2ZWwuZ2V0X3dpbmRvdygpOworKyAg ICAgICAgaWYgKCF3aW5kb3cuZW5zdXJlX25hdGl2ZSgpKSB7CisrICAgICAgICAgICAgd2Fybmlu ZygiTm8gbmF0aXZlIHdpbmRvdy4iKTsKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9 CisrICAgICAgICBUeXBlIGluc3RhbmNlX3R5cGUgPSB3aW5kb3cuZ2V0X3R5cGUoKTsKKysgICAg ICAgIFR5cGUgd2F5bGFuZF90eXBlID0gdHlwZW9mKEdka1dheWxhbmQuV2luZG93KTsKKysgICAg ICAgIGlmICghaW5zdGFuY2VfdHlwZS5pc19hKHdheWxhbmRfdHlwZSkpIHsKKysgICAgICAgICAg ICB3YXJuaW5nKCJOb3QgR2RrV2luZG93V2F5bGFuZC4iKTsKKysgICAgICAgICAgICByZXR1cm47 CisrICAgICAgICB9CisrICAgICAgICBpZiAoaW5pdGlhbCkKKysgICAgICAgICAgICAoKEdka1dh eWxhbmQuV2luZG93KXdpbmRvdykuc2V0X3VzZV9jdXN0b21fc3VyZmFjZSgpOworKyAgICAgICAg dmFyIHN1cmZhY2UgPSAoKEdka1dheWxhbmQuV2luZG93KXdpbmRvdykuZ2V0X3dsX3N1cmZhY2Uo KTsKKysgICAgICAgIHJlYWxpemVfc3VyZmFjZShzdXJmYWNlKTsKKysgICAgfQorKyNlbmRpZgor K30KK2RpZmYgLS1naXQgYS91aS9ndGszL3BhbmVsLnZhbGEgYi91aS9ndGszL3BhbmVsLnZhbGEK K2luZGV4IDM2MzgzNGU5Li5kNjVmZmJiMyAxMDA2NDQKKy0tLSBhL3VpL2d0azMvcGFuZWwudmFs YQorKysrIGIvdWkvZ3RrMy9wYW5lbC52YWxhCitAQCAtOTMsNiArOTMsMTAgQEAgY2xhc3MgUGFu ZWwgOiBJQnVzLlBhbmVsU2VydmljZSB7CisgICAgIHByaXZhdGUgdWxvbmcgbV9yZWdpc3RlcmVk X3N0YXR1c19ub3RpZmllcl9pdGVtX2lkOworICAgICBwcml2YXRlIHVub3duZWQgRmlsZVN0cmVh bSBtX2xvZzsKKyAgICAgcHJpdmF0ZSBib29sIG1fdmVyYm9zZTsKKysgICAgcHJpdmF0ZSBHTGli Lkhhc2hUYWJsZTx1aW50LCBNZXNzYWdlRGlhbG9nPiBtX3BvcHVwX2RpYWxvZ3MgPQorKyAgICAg ICAgICAgIG5ldyBHTGliLkhhc2hUYWJsZTx1aW50LCBNZXNzYWdlRGlhbG9nPihHTGliLmRpcmVj dF9oYXNoLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHTGliLmRpcmVjdF9lcXVhbCk7CisrICAgIHByaXZhdGUgdWludCBtX3BvcHVwX2RpYWxv Z19pbmRleDsKKyAKKyAgICAgcHJpdmF0ZSBHTGliLkxpc3Q8QmluZGluZ0NvbW1vbi5LZXliaW5k aW5nPiBtX2tleWJpbmRpbmdzID0KKyAgICAgICAgICAgICBuZXcgR0xpYi5MaXN0PEJpbmRpbmdD b21tb24uS2V5YmluZGluZz4oKTsKK0BAIC0yNDYsMTIgKzI1MCwxMiBAQCBjbGFzcyBQYW5lbCA6 IElCdXMuUGFuZWxTZXJ2aWNlIHsKKyAgICAgICAgIG1fc2V0dGluZ3NfcGFuZWwgPSBuZXcgR0xp Yi5TZXR0aW5ncygib3JnLmZyZWVkZXNrdG9wLmlidXMucGFuZWwiKTsKKyAKKyAgICAgICAgIG1f c2V0dGluZ3NfZ2VuZXJhbC5jaGFuZ2VkWyJwcmVsb2FkLWVuZ2luZXMiXS5jb25uZWN0KChrZXkp ID0+IHsKKy0gICAgICAgICAgICAgICAgdXBkYXRlX2VuZ2luZXMobV9zZXR0aW5nc19nZW5lcmFs LmdldF9zdHJ2KGtleSksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwpOwor KyAgICAgICAgICAgIHVwZGF0ZV9lbmdpbmVzKG1fc2V0dGluZ3NfZ2VuZXJhbC5nZXRfc3Rydihr ZXkpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwpOworICAgICAgICAgfSk7Cisg CisgICAgICAgICBtX3NldHRpbmdzX2dlbmVyYWwuY2hhbmdlZFsic3dpdGNoZXItZGVsYXktdGlt ZSJdLmNvbm5lY3QoKGtleSkgPT4geworLSAgICAgICAgICAgICAgICBzZXRfc3dpdGNoZXJfZGVs YXlfdGltZSgpOworKyAgICAgICAgICAgIHNldF9zd2l0Y2hlcl9kZWxheV90aW1lKCk7CisgICAg ICAgICB9KTsKKyAKKyAgICAgICAgIG1fc2V0dGluZ3NfZ2VuZXJhbC5jaGFuZ2VkWyJ1c2Utc3lz dGVtLWtleWJvYXJkLWxheW91dCJdLmNvbm5lY3QoCitAQCAtMjYwLDcyICsyNjQsNzIgQEAgY2xh c3MgUGFuZWwgOiBJQnVzLlBhbmVsU2VydmljZSB7CisgICAgICAgICB9KTsKKyAKKyAgICAgICAg IG1fc2V0dGluZ3NfZ2VuZXJhbC5jaGFuZ2VkWyJlbWJlZC1wcmVlZGl0LXRleHQiXS5jb25uZWN0 KChrZXkpID0+IHsKKy0gICAgICAgICAgICAgICAgc2V0X2VtYmVkX3ByZWVkaXRfdGV4dCgpOwor KyAgICAgICAgICAgIHNldF9lbWJlZF9wcmVlZGl0X3RleHQoKTsKKyAgICAgICAgIH0pOworIAor ICAgICAgICAgbV9zZXR0aW5nc19nZW5lcmFsLmNoYW5nZWRbInVzZS1nbG9iYWwtZW5naW5lIl0u Y29ubmVjdCgoa2V5KSA9PiB7CistICAgICAgICAgICAgICAgIHNldF91c2VfZ2xvYmFsX2VuZ2lu ZSgpOworKyAgICAgICAgICAgIHNldF91c2VfZ2xvYmFsX2VuZ2luZSgpOworICAgICAgICAgfSk7 CisgCisgICAgICAgICBtX3NldHRpbmdzX2dlbmVyYWwuY2hhbmdlZFsidXNlLXhtb2RtYXAiXS5j b25uZWN0KChrZXkpID0+IHsKKy0gICAgICAgICAgICAgICAgc2V0X3VzZV94bW9kbWFwKCk7Cisr ICAgICAgICAgICAgc2V0X3VzZV94bW9kbWFwKCk7CisgICAgICAgICB9KTsKKyAKKyAgICAgICAg IG1fc2V0dGluZ3NfaG90a2V5LmNoYW5nZWRbInRyaWdnZXJzIl0uY29ubmVjdCgoa2V5KSA9PiB7 CistICAgICAgICAgICAgICAgIEJpbmRpbmdDb21tb24udW5iaW5kX3N3aXRjaF9zaG9ydGN1dCgK Ky0gICAgICAgICAgICAgICAgICAgICAgICBCaW5kaW5nQ29tbW9uLktleUV2ZW50RnVuY1R5cGUu SU1FX1NXSVRDSEVSLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG1fa2V5YmluZGluZ3MpOwor LSAgICAgICAgICAgICAgICBtX2tleWJpbmRpbmdzID0gbnVsbDsKKy0gICAgICAgICAgICAgICAg YmluZF9zd2l0Y2hfc2hvcnRjdXQoKTsKKysgICAgICAgICAgICBCaW5kaW5nQ29tbW9uLnVuYmlu ZF9zd2l0Y2hfc2hvcnRjdXQoCisrICAgICAgICAgICAgICAgICAgICBCaW5kaW5nQ29tbW9uLktl eUV2ZW50RnVuY1R5cGUuSU1FX1NXSVRDSEVSLAorKyAgICAgICAgICAgICAgICAgICAgbV9rZXli aW5kaW5ncyk7CisrICAgICAgICAgICAgbV9rZXliaW5kaW5ncyA9IG51bGw7CisrICAgICAgICAg ICAgYmluZF9zd2l0Y2hfc2hvcnRjdXQoKTsKKyAgICAgICAgIH0pOworIAorICAgICAgICAgbV9z ZXR0aW5nc19wYW5lbC5jaGFuZ2VkWyJjdXN0b20tZm9udCJdLmNvbm5lY3QoKGtleSkgPT4gewor LSAgICAgICAgICAgICAgICBCaW5kaW5nQ29tbW9uLnNldF9jdXN0b21fZm9udChtX3NldHRpbmdz X3BhbmVsLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu dWxsLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWYg bV9jc3NfcHJvdmlkZXIpOworKyAgICAgICAgICAgIEJpbmRpbmdDb21tb24uc2V0X2N1c3RvbV9m b250KG1fc2V0dGluZ3NfcGFuZWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbnVsbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZWYgbV9jc3NfcHJvdmlkZXIpOworICAgICAgICAgfSk7CisgCisgICAgICAgICBtX3NldHRp bmdzX3BhbmVsLmNoYW5nZWRbInVzZS1jdXN0b20tZm9udCJdLmNvbm5lY3QoKGtleSkgPT4gewor LSAgICAgICAgICAgICAgICBCaW5kaW5nQ29tbW9uLnNldF9jdXN0b21fZm9udChtX3NldHRpbmdz X3BhbmVsLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu dWxsLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWYg bV9jc3NfcHJvdmlkZXIpOworKyAgICAgICAgICAgIEJpbmRpbmdDb21tb24uc2V0X2N1c3RvbV9m b250KG1fc2V0dGluZ3NfcGFuZWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbnVsbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZWYgbV9jc3NfcHJvdmlkZXIpOworICAgICAgICAgfSk7CisgCisgICAgICAgICBtX3NldHRp bmdzX3BhbmVsLmNoYW5nZWRbImN1c3RvbS10aGVtZSJdLmNvbm5lY3QoKGtleSkgPT4geworLSAg ICAgICAgICAgICAgICBCaW5kaW5nQ29tbW9uLnNldF9jdXN0b21fdGhlbWUobV9zZXR0aW5nc19w YW5lbCk7CisrICAgICAgICAgICAgQmluZGluZ0NvbW1vbi5zZXRfY3VzdG9tX3RoZW1lKG1fc2V0 dGluZ3NfcGFuZWwpOworICAgICAgICAgfSk7CisgCisgICAgICAgICBtX3NldHRpbmdzX3BhbmVs LmNoYW5nZWRbInVzZS1jdXN0b20tdGhlbWUiXS5jb25uZWN0KChrZXkpID0+IHsKKy0gICAgICAg ICAgICAgICAgQmluZGluZ0NvbW1vbi5zZXRfY3VzdG9tX3RoZW1lKG1fc2V0dGluZ3NfcGFuZWwp OworKyAgICAgICAgICAgIEJpbmRpbmdDb21tb24uc2V0X2N1c3RvbV90aGVtZShtX3NldHRpbmdz X3BhbmVsKTsKKyAgICAgICAgIH0pOworIAorICAgICAgICAgbV9zZXR0aW5nc19wYW5lbC5jaGFu Z2VkWyJjdXN0b20taWNvbiJdLmNvbm5lY3QoKGtleSkgPT4geworLSAgICAgICAgICAgICAgICBC aW5kaW5nQ29tbW9uLnNldF9jdXN0b21faWNvbihtX3NldHRpbmdzX3BhbmVsKTsKKysgICAgICAg ICAgICBCaW5kaW5nQ29tbW9uLnNldF9jdXN0b21faWNvbihtX3NldHRpbmdzX3BhbmVsKTsKKyAg ICAgICAgIH0pOworIAorICAgICAgICAgbV9zZXR0aW5nc19wYW5lbC5jaGFuZ2VkWyJ1c2UtY3Vz dG9tLWljb24iXS5jb25uZWN0KChrZXkpID0+IHsKKy0gICAgICAgICAgICAgICAgQmluZGluZ0Nv bW1vbi5zZXRfY3VzdG9tX2ljb24obV9zZXR0aW5nc19wYW5lbCk7CisrICAgICAgICAgICAgQmlu ZGluZ0NvbW1vbi5zZXRfY3VzdG9tX2ljb24obV9zZXR0aW5nc19wYW5lbCk7CisgICAgICAgICB9 KTsKKyAKKyAgICAgICAgIG1fc2V0dGluZ3NfcGFuZWwuY2hhbmdlZFsidXNlLWdseXBoLWZyb20t ZW5naW5lLWxhbmciXS5jb25uZWN0KChrZXkpID0+CisgICAgICAgICB7CistICAgICAgICAgICAg ICAgIHNldF91c2VfZ2x5cGhfZnJvbV9lbmdpbmVfbGFuZygpOworKyAgICAgICAgICAgIHNldF91 c2VfZ2x5cGhfZnJvbV9lbmdpbmVfbGFuZygpOworICAgICAgICAgfSk7CisgCisgICAgICAgICBt X3NldHRpbmdzX3BhbmVsLmNoYW5nZWRbInNob3ctaWNvbi1vbi1zeXN0cmF5Il0uY29ubmVjdCgo a2V5KSA9PiB7CistICAgICAgICAgICAgICAgIHNldF9zaG93X2ljb25fb25fc3lzdHJheSh0cnVl KTsKKysgICAgICAgICAgICBzZXRfc2hvd19pY29uX29uX3N5c3RyYXkodHJ1ZSk7CisgICAgICAg ICB9KTsKKyAKKyAgICAgICAgIG1fc2V0dGluZ3NfcGFuZWwuY2hhbmdlZFsibG9va3VwLXRhYmxl LW9yaWVudGF0aW9uIl0uY29ubmVjdCgoa2V5KSA9PiB7CistICAgICAgICAgICAgICAgIHNldF9s b29rdXBfdGFibGVfb3JpZW50YXRpb24oKTsKKysgICAgICAgICAgICBzZXRfbG9va3VwX3RhYmxl X29yaWVudGF0aW9uKCk7CisgICAgICAgICB9KTsKKyAKKyAgICAgICAgIG1fc2V0dGluZ3NfcGFu ZWwuY2hhbmdlZFsic2hvdyJdLmNvbm5lY3QoKGtleSkgPT4geworLSAgICAgICAgICAgICAgICBz ZXRfc2hvd19wcm9wZXJ0eV9wYW5lbCgpOworKyAgICAgICAgICAgIHNldF9zaG93X3Byb3BlcnR5 X3BhbmVsKCk7CisgICAgICAgICB9KTsKKyAKKyAgICAgICAgIG1fc2V0dGluZ3NfcGFuZWwuY2hh bmdlZFsidGltZW91dCJdLmNvbm5lY3QoKGtleSkgPT4geworLSAgICAgICAgICAgICAgICBzZXRf dGltZW91dF9wcm9wZXJ0eV9wYW5lbCgpOworKyAgICAgICAgICAgIHNldF90aW1lb3V0X3Byb3Bl cnR5X3BhbmVsKCk7CisgICAgICAgICB9KTsKKyAKKyAgICAgICAgIG1fc2V0dGluZ3NfcGFuZWwu Y2hhbmdlZFsiZm9sbG93LWlucHV0LWN1cnNvci13aGVuLWFsd2F5cy1zaG93biJdCitAQCAtMzM0 LDExICszMzgsMjcgQEAgY2xhc3MgUGFuZWwgOiBJQnVzLlBhbmVsU2VydmljZSB7CisgICAgICAg ICB9KTsKKyAKKyAgICAgICAgIG1fc2V0dGluZ3NfcGFuZWwuY2hhbmdlZFsieGtiLWljb24tcmdi YSJdLmNvbm5lY3QoKGtleSkgPT4geworLSAgICAgICAgICAgICAgICBzZXRfeGtiX2ljb25fcmdi YSgpOworKyAgICAgICAgICAgIHNldF94a2JfaWNvbl9yZ2JhKCk7CisgICAgICAgICB9KTsKKyAK KyAgICAgICAgIG1fc2V0dGluZ3NfcGFuZWwuY2hhbmdlZFsicHJvcGVydHktaWNvbi1kZWxheS10 aW1lIl0uY29ubmVjdCgoa2V5KSA9PiB7CistICAgICAgICAgICAgICAgIHNldF9wcm9wZXJ0eV9p Y29uX2RlbGF5X3RpbWUoKTsKKysgICAgICAgICAgICBzZXRfcHJvcGVydHlfaWNvbl9kZWxheV90 aW1lKCk7CisrICAgICAgICB9KTsKKysKKysgICAgICAgIHRoaXMuc2VuZF9tZXNzYWdlX3JlY2Vp dmVkLmNvbm5lY3QoKG8sIG0pID0+IHsKKysgICAgICAgICAgICB1aW50IGRvbWFpbiA9IG0uZ2V0 X2RvbWFpbigpOworKyAgICAgICAgICAgIHN3aXRjaCAoZG9tYWluKSB7CisrICAgICAgICAgICAg Y2FzZSBJQnVzLk1lc3NhZ2VEb21haW4uRU5HSU5FOgorKyAgICAgICAgICAgICAgICBzZXRfbWVz c2FnZV9lbmdpbmUobSk7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIGNh c2UgSUJ1cy5NZXNzYWdlRG9tYWluLlBBTkVMOgorKyAgICAgICAgICAgICAgICBzZXRfbWVzc2Fn ZV9wYW5lbChtKTsKKysgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgZGVmYXVs dDoKKysgICAgICAgICAgICAgICAgd2FybmluZygiU2VuZE1lc3NhZ2VSZWNlaXZlZCBkb2VzIG5v dCBzdXBwb3J0IHRoZSBkb21haW4gJXUiLAorKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFp bik7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0p OworICAgICB9CisgCitAQCAtODU1LDYgKzg3NSw2NyBAQCBjbGFzcyBQYW5lbCA6IElCdXMuUGFu ZWxTZXJ2aWNlIHsKKyAgICAgfQorIAorIAorKyAgICBwcml2YXRlIHZvaWQgc2V0X21lc3NhZ2Vf ZW5naW5lKElCdXMuTWVzc2FnZSBtZXNzYWdlKSB7CisrICAgICAgICB1aW50IGNvZGUgPSBtZXNz YWdlLmdldF9jb2RlKCk7CisrICAgICAgICBzd2l0Y2ggKGNvZGUpIHsKKysgICAgICAgIGNhc2Ug SUJ1cy5FbmdpbmVNc2dDb2RlLklOVkFMSURfQ09NUE9TRV9TRVFVRU5DRToKKysgICAgICAgICAg ICBzZXRfbWVzc2FnZV9lbmdpbmVfaW52YWxpZF9jb21wb3NlKG1lc3NhZ2UpOworKyAgICAgICAg ICAgIGJyZWFrOworKyAgICAgICAgZGVmYXVsdDoKKysgICAgICAgICAgICBzZXRfbWVzc2FnZV9n ZW5lcmFsKG1lc3NhZ2UpOworKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgfQorKyAgICB9 CisrCisrCisrICAgIHByaXZhdGUgdm9pZCBzZXRfbWVzc2FnZV9lbmdpbmVfaW52YWxpZF9jb21w b3NlKElCdXMuTWVzc2FnZSBtZXNzYWdlKSB7CisrICAgICAgICB2YXIgZGlzcGxheSA9IEdkay5E aXNwbGF5LmdldF9kZWZhdWx0KCk7CisrICAgICAgICBkaXNwbGF5LmJlZXAoKTsKKysgICAgfQor KworKworKyAgICBwcml2YXRlIHZvaWQgc2V0X21lc3NhZ2VfcGFuZWwoSUJ1cy5NZXNzYWdlIG1l c3NhZ2UpIHsKKysgICAgICAgIHVpbnQgY29kZSA9IG1lc3NhZ2UuZ2V0X2NvZGUoKTsKKysgICAg ICAgIHN3aXRjaCAoY29kZSkgeworKyAgICAgICAgY2FzZSBJQnVzLlBhbmVsU2VydmljZU1zZ0Nv ZGUuTE9BRElOR19VTklDT0RFOgorKyAgICAgICAgICAgIHNldF9tZXNzYWdlX2dlbmVyYWwobWVz c2FnZSk7CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICB9CisrICAgIH0KKysKKysKKysg ICAgcHJpdmF0ZSB2b2lkIHNldF9tZXNzYWdlX2dlbmVyYWwoSUJ1cy5NZXNzYWdlIG1lc3NhZ2Up IHsKKysgICAgICAgIE1lc3NhZ2VEaWFsb2cgcG9wdXAgPSBudWxsOworKyAgICAgICAgdWludCBz ZXJpYWwgPSBtZXNzYWdlLmdldF9zZXJpYWwoKTsKKysgICAgICAgIGlmIChzZXJpYWwgIT0gMCkK KysgICAgICAgICAgICBwb3B1cCA9IG1fcG9wdXBfZGlhbG9ncy5sb29rdXAoc2VyaWFsKTsKKysg ICAgICAgIGVsc2UKKysgICAgICAgICAgICBzZXJpYWwgPSBtX3BvcHVwX2RpYWxvZ19pbmRleCsr ICsgMjAwMDA7CisrICAgICAgICBpZiAocG9wdXAgIT0gbnVsbCkgeworKyAgICAgICAgICAgIHBv cHVwLnVwZGF0ZV9tZXNzYWdlKG1lc3NhZ2UpOworKyAgICAgICAgfSBlbHNlIHsKKysgICAgICAg ICAgICBwb3B1cCA9IG5ldyBNZXNzYWdlRGlhbG9nKG1faXNfd2F5bGFuZCwKKysjaWYgVVNFX0dE S19XQVlMQU5ECisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3dheWxh bmRfb2JqZWN0X3BhdGggPT0gbnVsbCwKKysjZWxzZQorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdHJ1ZSwKKysjZW5kaWYKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG1lc3NhZ2UpOworKyAgICAgICAgICAgIHBvcHVwLmNsb3NlLmNvbm5lY3Qo KHcpID0+IHsKKysgICAgICAgICAgICAgICAgcG9wdXAuaGlkZSgpOworKyAgICAgICAgICAgICAg ICBtX3BvcHVwX2RpYWxvZ3MucmVtb3ZlKHNlcmlhbCk7CisrICAgICAgICAgICAgICAgIHBvcHVw ID0gbnVsbDsKKysgICAgICAgICAgICB9KTsKKysjaWYgVVNFX0dES19XQVlMQU5ECisrICAgICAg ICAgICAgcG9wdXAucmVhbGl6ZV9zdXJmYWNlLmNvbm5lY3QoCisrICAgICAgICAgICAgICAgICAg ICAodywgcykgPT4gdGhpcy5yZWFsaXplX3N1cmZhY2UocykpOworKyNlbmRpZgorKyAgICAgICAg ICAgIG1fcG9wdXBfZGlhbG9ncy5pbnNlcnQoc2VyaWFsLCBwb3B1cCk7CisrICAgICAgICAgICAg cG9wdXAuc2hvdygpOworKyAgICAgICAgfQorKyAgICB9CisrCisrCisgICAgIHByaXZhdGUgaW50 IGNvbXBhcmVfdmVyc2lvbnMoc3RyaW5nIHZlcnNpb24xLCBzdHJpbmcgdmVyc2lvbjIpIHsKKyAg ICAgICAgIHN0cmluZ1tdIHZlcnNpb24xX2xpc3QgPSB2ZXJzaW9uMS5zcGxpdCgiLiIpOworICAg ICAgICAgc3RyaW5nW10gdmVyc2lvbjJfbGlzdCA9IHZlcnNpb24yLnNwbGl0KCIuIik7CitkaWZm IC0tZ2l0IGEvdWkvZ3RrMy9wYW5lbGJpbmRpbmcudmFsYSBiL3VpL2d0azMvcGFuZWxiaW5kaW5n LnZhbGEKK2luZGV4IDEwZDA5ZDc1Li5mMDgyN2IzZSAxMDA2NDQKKy0tLSBhL3VpL2d0azMvcGFu ZWxiaW5kaW5nLnZhbGEKKysrKyBiL3VpL2d0azMvcGFuZWxiaW5kaW5nLnZhbGEKK0BAIC0zLDcg KzMsNyBAQAorICAqIGlidXMgLSBUaGUgSW5wdXQgQnVzCisgICoKKyAgKiBDb3B5cmlnaHQoYykg MjAxOCBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KKy0gKiBDb3B5cmlnaHQo YykgMjAxOC0yMDI0IFRha2FvIEZ1andpYXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgor KyAqIENvcHlyaWdodChjKSAyMDE4LTIwMjUgVGFrYW8gRnVqd2lhcmEgPHRha2FvLmZ1aml3YXJh MUBnbWFpbC5jb20+CisgICoKKyAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworQEAgLTkwMiw2ICs5MDIsOSBAQCBj bGFzcyBQYW5lbEJpbmRpbmcgOiBJQnVzLlBhbmVsU2VydmljZSB7CisgICAgICAgICAgICAgICAg ICAgICAgICAgImlzLWV4dGVuc2lvbiIsIHRydWUpOworICAgICAgICAgICAgICAgICBwYW5lbF9l eHRlbnNpb24oY2xvc2VfZXZlbnQpOworICAgICAgICAgICAgIH0pOworKyAgICAgICAgICAgIG1f ZW1vamllci5zZW5kX21lc3NhZ2UuY29ubmVjdCgobSkgPT4geworKyAgICAgICAgICAgICAgICBz ZW5kX21lc3NhZ2UobSk7CisrICAgICAgICAgICAgfSk7CisgICAgICAgICB9CisgICAgICAgICBt X2Vtb2ppZXIucmVzZXQoKTsKKyAgICAgICAgIG1fZW1vamllci5zZXRfYW5ub3RhdGlvbigiIik7 CistLSAKKzIuNDkuMAorCitGcm9tIDQwZmNiZWJiOGE0YTYwMTcyZDgwNDgyZTM1ZGNhYjJmMzli ODBjMmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1 aml3YXJhMUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDEgSnVuIDIwMjUgMjA6MzI6MDUgKzA5MDAK K1N1YmplY3Q6IFtQQVRDSCAzLzNdIEFkZCB3b3JrYXJvdW5kIHVudGlsIEdOT01FIGhhbmRsZSBJ QnVzTWVzc2FnZQorCitUaGUgSUJ1c0VuZ2luZSdzIGZvY3VzLWlkIGZlYXR1cmUgaXMgbm93IGFs d2F5cyB1c2VkIGluIGNhc2UgdGhlIGVuZ2luZQoraXMgSUJ1c0VuZ2luZVNpbXBsZSB0byBtYWtl IGEgd29ya2Fyb3VuZCBpbiBHTk9NRSBhbmQgV2F5bGFuZCBiZWNhdXNlCitHTk9NRS1TaGVsbCBk b2VzIG5vdCBpbXBsZW1lbnQgdGhlIG5ldyBELUJ1cyBtZXRob2QKKyJTZW5kTWVzc2FnZVJlY2Vp dmVkIiB5ZXQgYW5kIHRoZSBXYXlsYW5kIGlucHV0LW1ldGhvZCBwcm90b2NvbCBjYW5ub3QKK2dl dCB0aGUgaW5wdXQgc3VyZmFjZSBmb3IgdGhlIFdheWxhbmQgeGRnLXN5c3RlbS1iZWxsIHByb3Rv Y29sLgorCitUaGUgYXV4aWxpYXJ5IHRleHQgaXMgc2hvd24gd2l0aCB0aGUgY2FuZGlkYXRlIHBv cHVwIGluIEdOT01FIGFzIGEKK3dvcmthcm91bmQgdG8gbm90aWZ5IHRoZSBVbmljb2RlIGxvYWRp bmcgbWVzc2FnZSB1bnRpbCBHTk9NRS1TaGVsbAoraW1wbGVtZW50cyB0aGUgRC1CdXMgbWV0aG9k ICJTZW5kTWVzc2FnZVJlY2VpdmVkIi4KKworVXBkYXRlIHRoZSBQT1QgZmlsZS4KKworQlVHPWh0 dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvaXNzdWVzLzI3MjIKKy0tLQorIHBvL1BPVEZJTEVT LmluICAgICAgICAgICAgICB8ICAgMiArCisgc3JjL2lidXNlbmdpbmUuYyAgICAgICAgICAgIHwg IDE4ICsrLQorIHNyYy9pYnVzZW5naW5lc2ltcGxlLmMgICAgICB8IDEzNCArKysrKysrKysrKysr KysrKysrKysrLQorIHVpL2d0azMvY2FuZGlkYXRlcGFuZWwudmFsYSB8ICA1NSArKysrKysrLS0t CisgdWkvZ3RrMy9lbW9qaWVyLnZhbGEgICAgICAgIHwgIDQ0ICsrKysrKy0tCisgdWkvZ3RrMy9l eHRlbnNpb24udmFsYSAgICAgIHwgICAzICstCisgdWkvZ3RrMy9wYW5lbGJpbmRpbmcudmFsYSAg IHwgICA1ICstCisgNyBmaWxlcyBjaGFuZ2VkLCAzMzggaW5zZXJ0aW9ucygrKSwgMTM0IGRlbGV0 aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcG8vUE9URklMRVMuaW4gYi9wby9QT1RGSUxFUy5pbgor aW5kZXggYzU2NDA4ZjcuLmQ5MTc4Yzg1IDEwMDY0NAorLS0tIGEvcG8vUE9URklMRVMuaW4KKysr KyBiL3BvL1BPVEZJTEVTLmluCitAQCAtNDAsOSArNDAsMTEgQEAgc2V0dXAva2V5Ym9hcmRzaG9y dGN1dC5weQorIHNldHVwL21haW4ucHkKKyBzZXR1cC9zZXR1cC51aQorIHNyYy9pYnVzYnVzLmMK KytzcmMvaWJ1c2NvbXBvc2V0YWJsZS5jCisgc3JjL2lidXNjb25maWcuYworIHNyYy9pYnVzZW1v amlnZW4uaAorIHNyYy9pYnVzZW5naW5lLmMKKytzcmMvaWJ1c2VuZ2luZXNpbXBsZS5jCisgc3Jj L2lidXNmYWN0b3J5LmMKKyBzcmMvaWJ1c2hvdGtleS5jCisgc3JjL2lidXNpbnB1dGNvbnRleHQu YworZGlmZiAtLWdpdCBhL3NyYy9pYnVzZW5naW5lLmMgYi9zcmMvaWJ1c2VuZ2luZS5jCitpbmRl eCA0ZTEzYjIzZC4uMWYxMmQyNTMgMTAwNjQ0CistLS0gYS9zcmMvaWJ1c2VuZ2luZS5jCisrKysg Yi9zcmMvaWJ1c2VuZ2luZS5jCitAQCAtMzQsNiArMzQsOCBAQAorICNkZWZpbmUgSUJVU19FTkdJ TkVfR0VUX1BSSVZBVEUobykgIFwKKyAgICAoKElCdXNFbmdpbmVQcml2YXRlICopaWJ1c19lbmdp bmVfZ2V0X2luc3RhbmNlX3ByaXZhdGUgKG8pKQorIAorK2V4dGVybiBHVHlwZSAgIGlidXNfZW5n aW5lX3NpbXBsZV9nZXRfdHlwZSAgICAgICAodm9pZCk7CisrCisgZW51bSB7CisgICAgIFBST0NF U1NfS0VZX0VWRU5ULAorICAgICBGT0NVU19JTiwKK0BAIC0xNTQ0LDcgKzE1NDYsMjEgQEAgX2li dXNfZW5naW5lX2hhc19mb2N1c19pZCAoSUJ1c0VuZ2luZSAgICAgICplbmdpbmUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0RCdXNDb25uZWN0aW9uICpjb25uZWN0aW9uLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICoqZXJyb3IpCisgeworLSAgICBH VmFyaWFudCAqcmV0dmFsID0gZ192YXJpYW50X25ld19ib29sZWFuIChlbmdpbmUtPnByaXYtPmhh c19mb2N1c19pZCk7CisrICAgIEdWYXJpYW50ICpyZXR2YWw7CisrCisrI2lmbmRlZiBJQlVTX1RZ UEVfRU5HSU5FX1NJTVBMRQorKyNkZWZpbmUgSUJVU19UWVBFX0VOR0lORV9TSU1QTEUgKGlidXNf ZW5naW5lX3NpbXBsZV9nZXRfdHlwZSAoKSkKKysjZGVmaW5lIF9fSUJVU19TRVRfTE9DQUxfRU5H SU5FX1NJTVBMRQorKyNlbmRpZgorKyAgICAvKiBTaG91bGQgbm90IHVzZSBJQlVTX0lTX0VOR0lO RV9TSU1QTEUoKSBub3QgdG8gZWZmZWN0IHRoZSBpbmhlcml0ZWQKKysgICAgICogY2xhc3MuKi8K KysgICAgaWYgKEdfT0JKRUNUX1RZUEUgKGVuZ2luZSkgPT0gSUJVU19UWVBFX0VOR0lORV9TSU1Q TEUpCisrICAgICAgICBlbmdpbmUtPnByaXYtPmhhc19mb2N1c19pZCA9IFRSVUU7CisrI2lmZGVm IF9fSUJVU19TRVRfTE9DQUxfRU5HSU5FX1NJTVBMRQorKyN1bmRlZiBfX0lCVVNfU0VUX0xPQ0FM X0VOR0lORV9TSU1QTEUKKysjdW5kZWYgSUJVU19UWVBFX0VOR0lORV9TSU1QTEUKKysjZW5kaWYK KysgICAgcmV0dmFsID0gZ192YXJpYW50X25ld19ib29sZWFuIChlbmdpbmUtPnByaXYtPmhhc19m b2N1c19pZCk7CisgICAgIGdfYXNzZXJ0IChyZXR2YWwpOworICAgICByZXR1cm4gcmV0dmFsOwor IH0KK2RpZmYgLS1naXQgYS9zcmMvaWJ1c2VuZ2luZXNpbXBsZS5jIGIvc3JjL2lidXNlbmdpbmVz aW1wbGUuYworaW5kZXggNGUwYmE0MGYuLjE1YzQ1YzJlIDEwMDY0NAorLS0tIGEvc3JjL2lidXNl bmdpbmVzaW1wbGUuYworKysrIGIvc3JjL2lidXNlbmdpbmVzaW1wbGUuYworQEAgLTc1LDYgKzc1 LDcgQEAgc3RydWN0IF9JQnVzRW5naW5lU2ltcGxlUHJpdmF0ZSB7CisgICAgIEdTdHJpbmcgICAg ICAgICAgICAqdGVudGF0aXZlX21hdGNoOworICAgICBpbnQgICAgICAgICAgICAgICAgIHRlbnRh dGl2ZV9tYXRjaF9sZW47CisgICAgIGNoYXIgICAgICAgICAgICAgICAqdGVudGF0aXZlX2Vtb2pp OworKyAgICBjaGFyICAgICAgICAgICAgICAgKmNsaWVudDsKKyAKKyAgICAgZ3VpbnQgICAgICAg ICAgICAgICBoZXhfbW9kZV9lbmFibGVkIDogMTsKKyAgICAgZ3VpbnQgICAgICAgICAgICAgICBp bl9oZXhfc2VxdWVuY2UgOiAxOworQEAgLTg1LDYgKzg2LDggQEAgc3RydWN0IF9JQnVzRW5naW5l U2ltcGxlUHJpdmF0ZSB7CisgICAgIElCdXNMb29rdXBUYWJsZSAgICAqbG9va3VwX3RhYmxlOwor ICAgICBnYm9vbGVhbiAgICAgICAgICAgIGxvb2t1cF90YWJsZV92aXNpYmxlOworICAgICBJQnVz VGV4dCAgICAgICAgICAgKnVwZGF0ZWRfcHJlZWRpdDsKKysgICAgZ2Jvb2xlYW4gICAgICAgICAg ICBkb19pbmZvcm1fdXNlcl9lcnJvcjsKKysgICAgZ3VpbnQgICAgICAgICAgICAgICBpbmZvcm1f dXNlcl9lcnJvcl90aW1lb3V0X2lkOworIH07CisgCisgZ3VpbnQgQ09NUE9TRV9CVUZGRVJfU0la RSA9IDIwOworQEAgLTk2LDcgKzk5LDEzIEBAIHN0YXRpYyBJQnVzQ29tcG9zZVRhYmxlRXggKmVu X2NvbXBvc2VfdGFibGU7CisgLyogZnVuY3Rpb25zIHByb3RvdHlwZSAqLworIHN0YXRpYyB2b2lk ICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfZGVzdHJveSAgICAgIChJQnVzRW5naW5lU2ltcGxlICAg KnNpbXBsZSk7Cisgc3RhdGljIHZvaWQgICAgIGlidXNfZW5naW5lX3NpbXBsZV9mb2N1c19pbiAg ICAgKElCdXNFbmdpbmUgICAgICAgICAqZW5naW5lKTsKKytzdGF0aWMgdm9pZCAgICAgaWJ1c19l bmdpbmVfc2ltcGxlX2ZvY3VzX2luX2lkICAoSUJ1c0VuZ2luZSAgICAgICAgICplbmdpbmUsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj aGFyCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICpvYmplY3RfcGF0aCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICpjbGllbnQpOworIHN0 YXRpYyB2b2lkICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfZm9jdXNfb3V0ICAgIChJQnVzRW5naW5l ICAgICAgICAgKmVuZ2luZSk7Cisrc3RhdGljIHZvaWQgICAgIGlidXNfZW5naW5lX3NpbXBsZV9m b2N1c19vdXRfaWQgKElCdXNFbmdpbmUgICAgICAgICAqZW5naW5lLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgKmNs aWVudCk7Cisgc3RhdGljIHZvaWQgICAgIGlidXNfZW5naW5lX3NpbXBsZV9yZXNldCAgICAgICAg KElCdXNFbmdpbmUgICAgICAgICAqZW5naW5lKTsKKyBzdGF0aWMgZ2Jvb2xlYW4gaWJ1c19lbmdp bmVfc2ltcGxlX3Byb2Nlc3Nfa2V5X2V2ZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKElCdXNFbmdpbmUgICAgICAgICAqZW5naW5lLAorQEAgLTEz NSw3ICsxNDQsMTEgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX2NsYXNzX2luaXQgKElCdXNFbmdpbmVT aW1wbGVDbGFzcyAqY2xhc3MpCisgICAgICAgICAoSUJ1c09iamVjdERlc3Ryb3lGdW5jKSBpYnVz X2VuZ2luZV9zaW1wbGVfZGVzdHJveTsKKyAKKyAgICAgZW5naW5lX2NsYXNzLT5mb2N1c19pbiAg PSBpYnVzX2VuZ2luZV9zaW1wbGVfZm9jdXNfaW47CisrICAgIGVuZ2luZV9jbGFzcy0+Zm9jdXNf aW5faWQKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBpYnVzX2VuZ2luZV9zaW1wbGVf Zm9jdXNfaW5faWQ7CisgICAgIGVuZ2luZV9jbGFzcy0+Zm9jdXNfb3V0ID0gaWJ1c19lbmdpbmVf c2ltcGxlX2ZvY3VzX291dDsKKysgICAgZW5naW5lX2NsYXNzLT5mb2N1c19vdXRfaWQKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPSBpYnVzX2VuZ2luZV9zaW1wbGVfZm9jdXNfb3V0X2lk OworICAgICBlbmdpbmVfY2xhc3MtPnJlc2V0ICAgICA9IGlidXNfZW5naW5lX3NpbXBsZV9yZXNl dDsKKyAgICAgZW5naW5lX2NsYXNzLT5wcm9jZXNzX2tleV9ldmVudAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA9IGlidXNfZW5naW5lX3NpbXBsZV9wcm9jZXNzX2tleV9ldmVudDsKK0BA IC0xNTgsNiArMTcxLDIyIEBAIGlidXNfZW5naW5lX3NpbXBsZV9jbGFzc19pbml0IChJQnVzRW5n aW5lU2ltcGxlQ2xhc3MgKmNsYXNzKQorICAgICBlbl9jb21wb3NlX3RhYmxlID0gaWJ1c19jb21w b3NlX3RhYmxlX2Rlc2VyaWFsaXplIChjb250ZW50cywgbGVuZ3RoKTsKKyB9CisgCisrCisrc3Rh dGljIGdib29sZWFuCisraW5mb3JtX3VzZXJfZXJyb3JfdGltZW91dF9jYiAoZ3BvaW50ZXIgdXNl cl9kYXRhKQorK3sKKysgICAgSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlID0gKElCdXNFbmdpbmVT aW1wbGUgKil1c2VyX2RhdGE7CisrICAgIElCdXNFbmdpbmVTaW1wbGVQcml2YXRlICpwcml2Owor KworKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19FTkdJTkVfU0lNUExFIChzaW1w bGUpLCBHX1NPVVJDRV9SRU1PVkUpOworKyAgICBwcml2ID0gc2ltcGxlLT5wcml2OworKyAgICBw cml2LT5kb19pbmZvcm1fdXNlcl9lcnJvciA9IEZBTFNFOworKyAgICBwcml2LT5pbmZvcm1fdXNl cl9lcnJvcl90aW1lb3V0X2lkID0gMDsKKysgICAgaWJ1c19lbmdpbmVfc2hvd19wcmVlZGl0X3Rl eHQgKChJQnVzRW5naW5lICopc2ltcGxlKTsKKysgICAgcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsK Kyt9CisrCisrCisgc3RhdGljIHZvaWQKKyBpYnVzX2VuZ2luZV9zaW1wbGVfaW5pdCAoSUJ1c0Vu Z2luZVNpbXBsZSAqc2ltcGxlKQorIHsKK0BAIC0yMDUsMTMgKzIzNCwxOCBAQCBpYnVzX2VuZ2lu ZV9zaW1wbGVfZGVzdHJveSAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlKQorICAgICAgICAgSUJV U19PQkpFQ1QgKHNpbXBsZSkpOworIH0KKyAKKysKKyBzdGF0aWMgdm9pZAorIGlidXNfZW5naW5l X3NpbXBsZV9zZW5kX21lc3NhZ2Vfd2l0aF9jb2RlIChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNFbmdpbmVN c2dDb2RlIGNvZGUpCisgeworKyAgICBJQnVzRW5naW5lU2ltcGxlUHJpdmF0ZSAqcHJpdjsKKyAg ICAgSUJ1c01lc3NhZ2UgKm1lc3NhZ2U7CisgCisgICAgIGdfcmV0dXJuX2lmX2ZhaWwgKElCVVNf SVNfRU5HSU5FX1NJTVBMRSAoc2ltcGxlKSk7CisrCisrICAgIHByaXYgPSBzaW1wbGUtPnByaXY7 CisrICAgIHByaXYtPmRvX2luZm9ybV91c2VyX2Vycm9yID0gVFJVRTsKKyAgICAgbWVzc2FnZSA9 IGlidXNfbWVzc2FnZV9uZXcgKAorICAgICAgICAgICAgIElCVVNfTUVTU0FHRV9ET01BSU5fRU5H SU5FLAorICAgICAgICAgICAgIGNvZGUsCitAQCAtMjI2LDE5ICsyNjAsNTcgQEAgaWJ1c19lbmdp bmVfc2ltcGxlX3NlbmRfbWVzc2FnZV93aXRoX2NvZGUgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBs ZSwKKyAgICAgaWJ1c19lbmdpbmVfc2VuZF9tZXNzYWdlIChJQlVTX0VOR0lORSAoc2ltcGxlKSwg bWVzc2FnZSk7CisgfQorIAorKworIHN0YXRpYyB2b2lkCisgaWJ1c19lbmdpbmVfc2ltcGxlX2Zv Y3VzX2luIChJQnVzRW5naW5lICplbmdpbmUpCisgeworKyAgICBpYnVzX2VuZ2luZV9zaW1wbGVf Zm9jdXNfaW5faWQgKGVuZ2luZSwgTlVMTCwgTlVMTCk7CisrfQorKworKworK3N0YXRpYyB2b2lk CisraWJ1c19lbmdpbmVfc2ltcGxlX2ZvY3VzX2luX2lkIChJQnVzRW5naW5lICAqZW5naW5lLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKm9iamVjdF9wYXRo LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKmNsaWVudCkK Kyt7CisrICAgIC8qIERvIG5vdCBlbmFibGUgSUJ1c0VuZ2luZTpoYXMtZm9jdXMtaWQgaW4gdGhl IElCdXNFbmdpbmVTaW1wbGUncworKyAgICAgKiBjb25zdHJ1Y3RvciBiZWNhdXNlIHRoZSBwcm9w ZXJ0eSBzaG91bGQgYmUgZW5hYmxlZCBieSB0aGUgaW5oZXJpdGVkCisrICAgICAqIGVuZ2luZS4g RS5nLiBJQnVzRW5naW5lSGFuZ3VsIGRpc2FibGVzIGl0LgorKyAgICAgKiBUaGUgcHJvcGVydHkg aXMgaGFuZGxlZCBieSBpYnVzZW5naW5lLmM6X2lidXNfZW5naW5lX2hhc19mb2N1c19pZCgpOwor KyAgICAgKi8KKysgICAgaWYgKElCVVNfSVNfRU5HSU5FX1NJTVBMRSAoZW5naW5lKSkgeworKyAg ICAgICAgSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlID0gSUJVU19FTkdJTkVfU0lNUExFIChlbmdp bmUpOworKyAgICAgICAgZ19mcmVlIChzaW1wbGUtPnByaXYtPmNsaWVudCk7CisrICAgICAgICBz aW1wbGUtPnByaXYtPmNsaWVudCA9IGdfc3RyZHVwIChjbGllbnQpOworKyAgICB9IGVsc2Ugewor KyAgICAgICAgZ193YXJuaW5nICgiSUJVU19JU19FTkdJTkVfU0lNUExFKGVuZ2luZSkgaW4gJXMi LCBHX1NUUkZVTkMpOworKyAgICB9CisgICAgIElCVVNfRU5HSU5FX0NMQVNTIChpYnVzX2VuZ2lu ZV9zaW1wbGVfcGFyZW50X2NsYXNzKS0+Zm9jdXNfaW4gKGVuZ2luZSk7CisgfQorIAorKworIHN0 YXRpYyB2b2lkCisgaWJ1c19lbmdpbmVfc2ltcGxlX2ZvY3VzX291dCAoSUJ1c0VuZ2luZSAqZW5n aW5lKQorIHsKKy0gICAgaWJ1c19lbmdpbmVfc2ltcGxlX3Jlc2V0IChlbmdpbmUpOworKyAgICBp YnVzX2VuZ2luZV9zaW1wbGVfZm9jdXNfb3V0X2lkIChlbmdpbmUsIE5VTEwpOworK30KKysKKysK KytzdGF0aWMgdm9pZAorK2lidXNfZW5naW5lX3NpbXBsZV9mb2N1c19vdXRfaWQgKElCdXNFbmdp bmUgICplbmdpbmUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2No YXIgKm9iamVjdF9wYXRoKQorK3sKKysgICAgaWYgKElCVVNfSVNfRU5HSU5FX1NJTVBMRSAoZW5n aW5lKSkgeworKyAgICAgICAgSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlID0gSUJVU19FTkdJTkVf U0lNUExFIChlbmdpbmUpOworKyAgICAgICAgZ19jbGVhcl9wb2ludGVyICgmc2ltcGxlLT5wcml2 LT5jbGllbnQsIGdfZnJlZSk7CisrICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfcmVzZXQgKGVu Z2luZSk7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBnX3dhcm5pbmcgKCJJQlVTX0lTX0VOR0lO RV9TSU1QTEUoZW5naW5lKSBpbiAlcyIsIEdfU1RSRlVOQyk7CisrICAgIH0KKyAgICAgSUJVU19F TkdJTkVfQ0xBU1MgKGlidXNfZW5naW5lX3NpbXBsZV9wYXJlbnRfY2xhc3MpLT5mb2N1c19vdXQg KGVuZ2luZSk7CisgfQorIAorKworIHN0YXRpYyB2b2lkCisgaWJ1c19lbmdpbmVfc2ltcGxlX3Jl c2V0IChJQnVzRW5naW5lICplbmdpbmUpCisgeworQEAgLTI1OSwxMSArMzMxLDE3IEBAIGlidXNf ZW5naW5lX3NpbXBsZV9yZXNldCAoSUJ1c0VuZ2luZSAqZW5naW5lKQorICAgICAgICAgcHJpdi0+ dGVudGF0aXZlX21hdGNoX2xlbiA9IDA7CisgICAgIH0KKyAgICAgaWJ1c19lbmdpbmVfaGlkZV9w cmVlZGl0X3RleHQgKChJQnVzRW5naW5lICopc2ltcGxlKTsKKysgICAgcHJpdi0+ZG9faW5mb3Jt X3VzZXJfZXJyb3IgPSBGQUxTRTsKKysgICAgaWYgKHByaXYtPmluZm9ybV91c2VyX2Vycm9yX3Rp bWVvdXRfaWQpIHsKKysgICAgICAgIGdfc291cmNlX3JlbW92ZSAocHJpdi0+aW5mb3JtX3VzZXJf ZXJyb3JfdGltZW91dF9pZCk7CisrICAgICAgICBwcml2LT5pbmZvcm1fdXNlcl9lcnJvcl90aW1l b3V0X2lkID0gMDsKKysgICAgfQorICAgICBnX29iamVjdF91bnJlZiAocHJpdi0+dXBkYXRlZF9w cmVlZGl0KTsKKyAgICAgcHJpdi0+dXBkYXRlZF9wcmVlZGl0ID0KKyAgICAgICAgICAgICAoSUJ1 c1RleHQgKilnX29iamVjdF9yZWZfc2luayAodXBkYXRlZF9wcmVlZGl0X2VtcHR5KTsKKyB9Cisg CisrCisgc3RhdGljIHZvaWQKKyBpYnVzX2VuZ2luZV9zaW1wbGVfY29tbWl0X2NoYXIgKElCdXNF bmdpbmVTaW1wbGUgKnNpbXBsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1 bmljaGFyICAgICAgICAgIGNoKQorQEAgLTMyNiw2ICs0MDQsNyBAQCBpYnVzX2VuZ2luZV9zaW1w bGVfY29tbWl0X3N0ciAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlLAorICAgICBnX2ZyZWUgKGJh Y2t1cF9zdHIpOworIH0KKyAKKysKKyBzdGF0aWMgdm9pZAorIGlidXNfZW5naW5lX3NpbXBsZV91 cGRhdGVfcHJlZWRpdF90ZXh0IChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUpCisgeworQEAgLTQy Niw2ICs1MDUsMTEgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3VwZGF0ZV9wcmVlZGl0X3RleHQgKElC dXNFbmdpbmVTaW1wbGUgKnNpbXBsZSkKKyAgICAgICAgICAgICBnX29iamVjdF91bnJlZiAocHJp di0+dXBkYXRlZF9wcmVlZGl0KTsKKyAgICAgICAgICAgICBwcml2LT51cGRhdGVkX3ByZWVkaXQg PQorICAgICAgICAgICAgICAgICAgICAgKElCdXNUZXh0ICopZ19vYmplY3RfcmVmX3NpbmsgKHVw ZGF0ZWRfcHJlZWRpdF9lbXB0eSk7CisrICAgICAgICAgICAgcHJpdi0+ZG9faW5mb3JtX3VzZXJf ZXJyb3IgPSBGQUxTRTsKKysgICAgICAgICAgICBpZiAocHJpdi0+aW5mb3JtX3VzZXJfZXJyb3Jf dGltZW91dF9pZCkgeworKyAgICAgICAgICAgICAgICBnX3NvdXJjZV9yZW1vdmUgKHByaXYtPmlu Zm9ybV91c2VyX2Vycm9yX3RpbWVvdXRfaWQpOworKyAgICAgICAgICAgICAgICBwcml2LT5pbmZv cm1fdXNlcl9lcnJvcl90aW1lb3V0X2lkID0gMDsKKysgICAgICAgICAgICB9CisgICAgICAgICB9 CisgICAgIH0gZWxzZSBpZiAocy0+bGVuID49IEdfTUFYSU5UKSB7CisgICAgICAgICBnX3dhcm5p bmcgKCIlcyBpcyB0b28gbG9uZyBjb21wb3NlIGxlbmd0aDogJWx1Iiwgcy0+c3RyLCBzLT5sZW4p OworQEAgLTQzMyw5ICs1MTcsMzAgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3VwZGF0ZV9wcmVlZGl0 X3RleHQgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSkKKyAgICAgICAgIGd1aW50IGxlbiA9IChn dWludClnX3V0Zjhfc3RybGVuIChzLT5zdHIsIC0xKTsKKyAgICAgICAgIElCdXNUZXh0ICp0ZXh0 ID0gaWJ1c190ZXh0X25ld19mcm9tX3N0cmluZyAocy0+c3RyKTsKKyAgICAgICAgIGlidXNfdGV4 dF9hcHBlbmRfYXR0cmlidXRlICh0ZXh0LAorLSAgICAgICAgICAgICAgICBJQlVTX0FUVFJfVFlQ RV9VTkRFUkxJTkUsIElCVVNfQVRUUl9VTkRFUkxJTkVfU0lOR0xFLCAwLCBsZW4pOworKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCVVNfQVRUUl9UWVBFX1VOREVSTElORSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQlVTX0FUVFJfVU5ERVJMSU5F X1NJTkdMRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbik7CisgICAgICAgICBnX29iamVjdF9y ZWZfc2luayAodGV4dCk7CistICAgICAgICBpYnVzX2VuZ2luZV91cGRhdGVfcHJlZWRpdF90ZXh0 ICgoSUJ1c0VuZ2luZSAqKXNpbXBsZSwgdGV4dCwgbGVuLCBUUlVFKTsKKysgICAgICAgIC8qIGdu b21lLXNoZWxsIGRvZXMgbm90IGhhbmRsZSAiU2VuZE1lc3NhZ2VSZWNlaXZlZCIgRC1CdXMgbWV0 aG9kIHlldC4KKysgICAgICAgICAqIFNlZW1zIG90aGVyIFdheWxhbmQgZGVza3RvcHMgZG8gbm90 IGltcGxlbWVudCB4ZGctc3lzdGVtLWJlbGwKKysgICAgICAgICAqIFdheWxhbmQgcHJvdG9jb2wg eWV0LgorKyAgICAgICAgICovCisrICAgICAgICBpZiAocHJpdi0+ZG9faW5mb3JtX3VzZXJfZXJy b3IgJiYgcHJpdi0+Y2xpZW50ICYmCisrICAgICAgICAgICAgKCFnX2FzY2lpX3N0cm5jYXNlY21w IChwcml2LT5jbGllbnQsICJnbm9tZS1zaGVsbCIsIDExKSB8fAorKyAgICAgICAgICAgICAhZ19h c2NpaV9zdHJuY2FzZWNtcCAocHJpdi0+Y2xpZW50LCAid2F5bGFuZCIsIDcpKQorKyAgICAgICAg ICAgKSB7CisrICAgICAgICAgICAgaWJ1c19lbmdpbmVfaGlkZV9wcmVlZGl0X3RleHQgKChJQnVz RW5naW5lICopc2ltcGxlKTsKKysgICAgICAgICAgICBpZiAocHJpdi0+aW5mb3JtX3VzZXJfZXJy b3JfdGltZW91dF9pZCkKKysgICAgICAgICAgICAgICAgZ19zb3VyY2VfcmVtb3ZlIChwcml2LT5p bmZvcm1fdXNlcl9lcnJvcl90aW1lb3V0X2lkKTsKKysgICAgICAgICAgICBwcml2LT5pbmZvcm1f dXNlcl9lcnJvcl90aW1lb3V0X2lkID0KKysgICAgICAgICAgICAgICAgICAgIGdfdGltZW91dF9h ZGQgKDUwMCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybV91c2Vy X2Vycm9yX3RpbWVvdXRfY2IsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz aW1wbGUpOworKyAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICBpYnVzX2VuZ2luZV91cGRh dGVfcHJlZWRpdF90ZXh0ICgoSUJ1c0VuZ2luZSAqKXNpbXBsZSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LCBsZW4sIFRSVUUpOworKyAgICAgICAg fQorICAgICAgICAgZ19vYmplY3RfdW5yZWYgKHByaXYtPnVwZGF0ZWRfcHJlZWRpdCk7CisgICAg ICAgICBwcml2LT51cGRhdGVkX3ByZWVkaXQgPSB0ZXh0OworICAgICB9CitAQCAtNDYwLDYgKzU2 NSw3IEBAIGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVfcHJlZWRpdF90ZXh0IChJQnVzRW5naW5l U2ltcGxlICpzaW1wbGUpCisgICovCisgI2RlZmluZSBIRVhfTU9EX01BU0sgKElCVVNfQ09OVFJP TF9NQVNLIHwgSUJVU19TSElGVF9NQVNLKQorIAorKworIHN0YXRpYyBnYm9vbGVhbgorIGNoZWNr X2hleCAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlLAorICAgICAgICAgICAgaW50ICAgICAgICAg ICAgICAgbl9jb21wb3NlKQorQEAgLTUyMyw2ICs2MjksNyBAQCBjaGVja19oZXggKElCdXNFbmdp bmVTaW1wbGUgKnNpbXBsZSwKKyAgICAgcmV0dXJuIFRSVUU7CisgfQorIAorKworIHN0YXRpYyBJ QnVzRW5naW5lRGljdCAqCisgbG9hZF9lbW9qaV9kaWN0ICh2b2lkKQorIHsKK0BAIC01NDYsNiAr NjUzLDcgQEAgbG9hZF9lbW9qaV9kaWN0ICh2b2lkKQorICAgICByZXR1cm4gZW1vamlfZGljdDsK KyB9CisgCisrCisgc3RhdGljIGdib29sZWFuCisgY2hlY2tfZW1vamlfdGFibGUgKElCdXNFbmdp bmVTaW1wbGUgICAgICAgKnNpbXBsZSwKKyAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAg ICAgICAgICAgICAgbl9jb21wb3NlLAorQEAgLTcyNyw2ICs4MzUsNyBAQCBub19zZXF1ZW5jZV9t YXRjaGVzIChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCisgICAgIHJldHVybiBGQUxTRTsKKyB9 CisgCisrCisgc3RhdGljIGdib29sZWFuCisgaXNfaGV4X2tleXZhbCAoZ3VpbnQga2V5dmFsKQor IHsKK0BAIC03MzUsNiArODQ0LDcgQEAgaXNfaGV4X2tleXZhbCAoZ3VpbnQga2V5dmFsKQorICAg cmV0dXJuIGdfdW5pY2hhcl9pc3hkaWdpdCAoY2gpOworIH0KKyAKKysKKyBzdGF0aWMgZ2Jvb2xl YW4KKyBpc19ncmFwaF9rZXl2YWwgKGd1aW50IGtleXZhbCkKKyB7CitAQCAtNzQzLDYgKzg1Myw3 IEBAIGlzX2dyYXBoX2tleXZhbCAoZ3VpbnQga2V5dmFsKQorICAgcmV0dXJuIGdfdW5pY2hhcl9p c2dyYXBoIChjaCk7CisgfQorIAorKworIHN0YXRpYyB2b2lkCisgaWJ1c19lbmdpbmVfc2ltcGxl X3VwZGF0ZV9sb29rdXBfYW5kX2F1eF90YWJsZSAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlKQor IHsKK0BAIC03NjgsNiArODc5LDcgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3VwZGF0ZV9sb29rdXBf YW5kX2F1eF90YWJsZSAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5sb29rdXBfdGFibGVfdmlzaWJsZSk7CisgfQor IAorKworIHN0YXRpYyBnYm9vbGVhbgorIGlidXNfZW5naW5lX3NpbXBsZV9pZl9pbl9yYW5nZV9v Zl9sb29rdXBfdGFibGUgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICBrZXl2 YWwpCitAQCAtNzk0LDYgKzkwNiw3IEBAIGlidXNfZW5naW5lX3NpbXBsZV9pZl9pbl9yYW5nZV9v Zl9sb29rdXBfdGFibGUgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwKKyAgICAgcmV0dXJuIFRS VUU7CisgfQorIAorKworIHN0YXRpYyB2b2lkCisgaWJ1c19lbmdpbmVfc2ltcGxlX3NldF9udW1i ZXJfb25fbG9va3VwX3RhYmxlIChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICBr ZXl2YWwsCitAQCAtODg2LDggKzk5OSw5IEBAIGlidXNfZW5naW5lX3NpbXBsZV9jaGVja19hbGxf Y29tcG9zZV90YWJsZSAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlLAorICAgICAgICAgICAgICAg ICBpZiAoaXNfMzJiaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBs ZV9jb21taXRfc3RyIChzaW1wbGUsIG91dHB1dC0+c3RyKTsKKyAgICAgICAgICAgICAgICAgfSBl bHNlIHsKKy0gICAgICAgICAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV9jb21taXRfY2hh ciAoc2ltcGxlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnX3V0ZjhfZ2V0X2NoYXIgKG91dHB1dC0+c3RyKSk7CisrICAgICAgICAgICAgICAg ICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfY29tbWl0X2NoYXIgKAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzaW1wbGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfdXRmOF9n ZXRfY2hhciAob3V0cHV0LT5zdHIpKTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfdXBkYXRlX3ByZWVkaXRfdGV4dCAo c2ltcGxlKTsKK0BAIC05NTEsOCArMTA2NSwxMCBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfcHJvY2Vz c19rZXlfZXZlbnQgKElCdXNFbmdpbmUgKmVuZ2luZSwKKyAgICAgZ3VpbnQgcHJpbnRhYmxlX2tl eXZhbDsKKyAgICAgaW50IGk7CisgCistICAgIHdoaWxlIChuX2NvbXBvc2UgPD0gQ09NUE9TRV9C VUZGRVJfU0laRSAmJiBwcml2LT5jb21wb3NlX2J1ZmZlcltuX2NvbXBvc2VdICE9IDApCisrICAg IHdoaWxlIChuX2NvbXBvc2UgPD0gQ09NUE9TRV9CVUZGRVJfU0laRSAmJgorKyAgICAgICAgICAg cHJpdi0+Y29tcG9zZV9idWZmZXJbbl9jb21wb3NlXSAhPSAwKSB7CisgICAgICAgICBuX2NvbXBv c2UrKzsKKysgICAgfQorICAgICBpZiAobl9jb21wb3NlID4gQ09NUE9TRV9CVUZGRVJfU0laRSkg eworICAgICAgICAgZ193YXJuaW5nICgiY29wbW9zZSB0YWJsZSBidWZmZXIgaXMgZnVsbC4iKTsK KyAgICAgICAgIG5fY29tcG9zZSA9IENPTVBPU0VfQlVGRkVSX1NJWkU7CitAQCAtMTM5NSw2ICsx NTExLDcgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3Byb2Nlc3Nfa2V5X2V2ZW50IChJQnVzRW5naW5l ICplbmdpbmUsCisgICAgIHJldHVybiBub19zZXF1ZW5jZV9tYXRjaGVzIChzaW1wbGUsIG5fY29t cG9zZSwga2V5dmFsLCBrZXljb2RlLCBtb2RpZmllcnMpOworIH0KKyAKKysKKyBzdGF0aWMgdm9p ZAorIGlidXNfZW5naW5lX3NpbXBsZV9wYWdlX2Rvd24gKElCdXNFbmdpbmUgKmVuZ2luZSkKKyB7 CitAQCAtMTQwNiw2ICsxNTIzLDcgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3BhZ2VfZG93biAoSUJ1 c0VuZ2luZSAqZW5naW5lKQorICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfdXBkYXRlX2xvb2t1cF9h bmRfYXV4X3RhYmxlIChzaW1wbGUpOworIH0KKyAKKysKKyBzdGF0aWMgdm9pZAorIGlidXNfZW5n aW5lX3NpbXBsZV9wYWdlX3VwIChJQnVzRW5naW5lICplbmdpbmUpCisgeworQEAgLTE0MTcsNiAr MTUzNSw3IEBAIGlidXNfZW5naW5lX3NpbXBsZV9wYWdlX3VwIChJQnVzRW5naW5lICplbmdpbmUp CisgICAgIGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVfbG9va3VwX2FuZF9hdXhfdGFibGUgKHNp bXBsZSk7CisgfQorIAorKworIHN0YXRpYyB2b2lkCisgaWJ1c19lbmdpbmVfc2ltcGxlX2NhbmRp ZGF0ZV9jbGlja2VkIChJQnVzRW5naW5lICplbmdpbmUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBndWludCAgICAgICBpbmRleCwKK0BAIC0xNDQwLDYgKzE1NTksNyBA QCBpYnVzX2VuZ2luZV9zaW1wbGVfY2FuZGlkYXRlX2NsaWNrZWQgKElCdXNFbmdpbmUgKmVuZ2lu ZSwKKyAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX3NldF9udW1iZXJfb25fbG9va3VwX3RhYmxlIChz aW1wbGUsIGtleXZhbCwgbl9jb21wb3NlKTsKKyB9CisgCisrCisgdm9pZAorIGlidXNfZW5naW5l X3NpbXBsZV9hZGRfdGFibGUgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBndWludDE2ICAgICpkYXRhLAorQEAgLTE0NTQsNiAr MTU3NCw3IEBAIGlidXNfZW5naW5lX3NpbXBsZV9hZGRfdGFibGUgKElCdXNFbmdpbmVTaW1wbGUg KnNpbXBsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbl9zZXFzKTsKKyB9CisgCisrCisgZ2Jvb2xlYW4KKyBpYnVzX2VuZ2luZV9zaW1w bGVfYWRkX3RhYmxlX2J5X2xvY2FsZSAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICpsb2Nh bGUpCitAQCAtMTU3Miw2ICsxNjkzLDcgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX2FkZF90YWJsZV9i eV9sb2NhbGUgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwKKyAgICAgcmV0dXJuIHJldHZhbDsK KyB9CisgCisrCisgZ2Jvb2xlYW4KKyBpYnVzX2VuZ2luZV9zaW1wbGVfYWRkX2NvbXBvc2VfZmls ZSAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICpjb21wb3NlX2ZpbGUpCitkaWZmIC0tZ2l0IGEv dWkvZ3RrMy9jYW5kaWRhdGVwYW5lbC52YWxhIGIvdWkvZ3RrMy9jYW5kaWRhdGVwYW5lbC52YWxh CitpbmRleCBhYTFhMzRjZS4uYTQxMzdmMDUgMTAwNjQ0CistLS0gYS91aS9ndGszL2NhbmRpZGF0 ZXBhbmVsLnZhbGEKKysrKyBiL3VpL2d0azMvY2FuZGlkYXRlcGFuZWwudmFsYQorQEAgLTQ5MSw2 ICs0OTEsMTEgQEAgcHVibGljIGNsYXNzIENhbmRpZGF0ZVBhbmVsIDogR3RrLkJveHsKKyAgICAg ICAgIG1fdG9wbGV2ZWwuaGlkZSgpOworICAgICB9CisgCisrICAgIC8qKgorKyAgICAgKiBtb3Zl OgorKyAgICAgKiBAeDogbGVmdCBwb3NpdGlvbiBvZiB0aGUgI0NhbmRpZGF0ZVBhbmVsCisrICAg ICAqIEB5OiB0b3AgcG9zaXRpb24gb2YgdGhlICNDYW5kaWRhdGVQYW5lbAorKyAgICAgKi8KKyAg ICAgcHJpdmF0ZSB2b2lkIG1vdmUoaW50IHgsIGludCB5KSB7CisgICAgICAgICBtX3RvcGxldmVs Lm1vdmUoeCwgeSk7CisgICAgIH0KK0BAIC01MDIsMjEgKzUwNywxNSBAQCBwdWJsaWMgY2xhc3Mg Q2FuZGlkYXRlUGFuZWwgOiBHdGsuQm94eworICAgICAgICAgICAgIGFkanVzdF93aW5kb3dfcG9z aXRpb25fdmVydGljYWwod2luZG93KTsKKyAgICAgfQorIAorLSAgICBwcml2YXRlIEdkay5SZWN0 YW5nbGUgZ2V0X21vbml0b3JfZ2VvbWV0cnkoR3RrLldpZGdldCB3aW5kb3cpIHsKKy0gICAgICAg IEdkay5SZWN0YW5nbGUgbW9uaXRvcl9hcmVhID0geyAwLCB9OworLQorLSAgICAgICAgLy8gVXNl IGdldF9tb25pdG9yX2dlb21ldHJ5KCkgaW5zdGVhZCBvZiBnZXRfbW9uaXRvcl9hcmVhKCkuCist ICAgICAgICAvLyBnZXRfbW9uaXRvcl9hcmVhKCkgZXhjbHVkZXMgZG9ja3MsIGJ1dCB0aGUgbG9v a3VwIHdpbmRvdyBzaG91bGQgYmUKKy0gICAgICAgIC8vIHNob3duIG92ZXIgdGhlbS4KKy0gICAg ICAgIEdkay5Nb25pdG9yIG1vbml0b3IgPSB3aW5kb3cuZ2V0X2Rpc3BsYXkoKS5nZXRfbW9uaXRv cl9hdF9wb2ludCgKKy0gICAgICAgICAgICAgICAgbV9jdXJzb3JfbG9jYXRpb24ueCwKKy0gICAg ICAgICAgICAgICAgbV9jdXJzb3JfbG9jYXRpb24ueSk7CistICAgICAgICBtb25pdG9yX2FyZWEg PSBtb25pdG9yLmdldF9nZW9tZXRyeSgpOworLSAgICAgICAgcmV0dXJuIG1vbml0b3JfYXJlYTsK Ky0gICAgfQorLQorKyAgICAvKioKKysgICAgICogYWRqdXN0X3dpbmRvd19wb3NpdGlvbl9ob3Jp em9udGFsOgorKyAgICAgKiBAd2luZG93OiBBIEd0ay5XaWRnZXQgb2YgdGhlIHRvcGxldmVsIHdp bmRvdy4KKysgICAgICoKKysgICAgICogSG9yaXpvbnRhbCB3cml0aW5nIG1vZGUgYnV0IG5vdCB0 aGUgaG9yaXpvbnRhbCBsb29rdXAgdGFibGUKKysgICAgICogd2hlbiB0aGUgYWxsb2NhdGlvbiBp cyBlbW1pdHRlZC4KKysgICAgICovCisgICAgIHByaXZhdGUgdm9pZCBhZGp1c3Rfd2luZG93X3Bv c2l0aW9uX2hvcml6b250YWwoR3RrLldpZGdldCB3aW5kb3cpIHsKKy0gICAgICAgIEdkay5Qb2lu dCBjdXJzb3JfcmlnaHRfYm90dG9tID0geworKyAgICAgICAgR2RrLlBvaW50IGN1cnNvcl9sZWZ0 X2JvdHRvbSA9IHsKKyAgICAgICAgICAgICAgICAgbV9jdXJzb3JfbG9jYXRpb24ueCwKKyAgICAg ICAgICAgICAgICAgbV9jdXJzb3JfbG9jYXRpb24ueSArIG1fY3Vyc29yX2xvY2F0aW9uLmhlaWdo dAorICAgICAgICAgfTsKK0BAIC01MjQsOCArNTIzLDggQEAgcHVibGljIGNsYXNzIENhbmRpZGF0 ZVBhbmVsIDogR3RrLkJveHsKKyAgICAgICAgIEd0ay5BbGxvY2F0aW9uIGFsbG9jYXRpb247Cisg ICAgICAgICBtX3RvcGxldmVsLmdldF9hbGxvY2F0aW9uKG91dCBhbGxvY2F0aW9uKTsKKyAgICAg ICAgIEdkay5Qb2ludCB3aW5kb3dfcmlnaHRfYm90dG9tID0geworLSAgICAgICAgICAgIGN1cnNv cl9yaWdodF9ib3R0b20ueCArIGFsbG9jYXRpb24ud2lkdGgsCistICAgICAgICAgICAgY3Vyc29y X3JpZ2h0X2JvdHRvbS55ICsgYWxsb2NhdGlvbi5oZWlnaHQKKysgICAgICAgICAgICBjdXJzb3Jf bGVmdF9ib3R0b20ueCArIGFsbG9jYXRpb24ud2lkdGgsCisrICAgICAgICAgICAgY3Vyc29yX2xl ZnRfYm90dG9tLnkgKyBhbGxvY2F0aW9uLmhlaWdodAorICAgICAgICAgfTsKKyAKKyAgICAgICAg IEdkay5SZWN0YW5nbGUgbW9uaXRvcl9hcmVhID0gZ2V0X21vbml0b3JfZ2VvbWV0cnkod2luZG93 KTsKK0BAIC01MzYsMjAgKzUzNSwyNyBAQCBwdWJsaWMgY2xhc3MgQ2FuZGlkYXRlUGFuZWwgOiBH dGsuQm94eworICAgICAgICAgaWYgKHdpbmRvd19yaWdodF9ib3R0b20ueCA+IG1vbml0b3Jfcmln aHQpCisgICAgICAgICAgICAgeCA9IG1vbml0b3JfcmlnaHQgLSBhbGxvY2F0aW9uLndpZHRoOwor ICAgICAgICAgZWxzZQorLSAgICAgICAgICAgIHggPSBjdXJzb3JfcmlnaHRfYm90dG9tLng7Cisr ICAgICAgICAgICAgeCA9IGN1cnNvcl9sZWZ0X2JvdHRvbS54OworICAgICAgICAgaWYgKHggPCAw KQorICAgICAgICAgICAgIHggPSAwOworIAorICAgICAgICAgaWYgKHdpbmRvd19yaWdodF9ib3R0 b20ueSA+IG1vbml0b3JfYm90dG9tKQorICAgICAgICAgICAgIHkgPSBtX2N1cnNvcl9sb2NhdGlv bi55IC0gYWxsb2NhdGlvbi5oZWlnaHQ7CisgICAgICAgICBlbHNlCistICAgICAgICAgICAgeSA9 IGN1cnNvcl9yaWdodF9ib3R0b20ueTsKKysgICAgICAgICAgICB5ID0gY3Vyc29yX2xlZnRfYm90 dG9tLnk7CisgICAgICAgICBpZiAoeSA8IDApCisgICAgICAgICAgICAgeSA9IDA7CisgCisgICAg ICAgICBtb3ZlKHgsIHkpOworICAgICB9CisgCisrICAgIC8qKgorKyAgICAgKiBhZGp1c3Rfd2lu ZG93X3Bvc2l0aW9uX3ZlcnRpY2FsOgorKyAgICAgKiBAd2luZG93OiBBIEd0ay5XaWRnZXQgb2Yg dGhlIHRvcGxldmVsIHdpbmRvdy4KKysgICAgICoKKysgICAgICogVmVydGljYWwgd3JpdGluZyBt b2RlIGJ1dCBub3QgdGhlIHZlcnRpY2FsIGxvb2t1cCB0YWJsZQorKyAgICAgKiB3aGVuIHRoZSBh bGxvY2F0aW9uIGlzIGVtbWl0dGVkLgorKyAgICAgKi8KKyAgICAgcHJpdmF0ZSB2b2lkIGFkanVz dF93aW5kb3dfcG9zaXRpb25fdmVydGljYWwoR3RrLldpZGdldCB3aW5kb3cpIHsKKyAgICAgICAg IC8qIE5vdCBzdXJlIGluIHdoaWNoIHRvcCBvciBsZWZ0IGN1cnNvciBhcHBlYXJzCisgICAgICAg ICAgKiBpbiB0aGUgdmVydGljYWwgd3JpdGluZyBtb2RlLgorQEAgLTYxMSw2ICs2MTcsMTkgQEAg cHVibGljIGNsYXNzIENhbmRpZGF0ZVBhbmVsIDogR3RrLkJveHsKKyAgICAgICAgIG1vdmUoeCwg eSk7CisgICAgIH0KKyAKKysgICAgcHJpdmF0ZSBHZGsuUmVjdGFuZ2xlIGdldF9tb25pdG9yX2dl b21ldHJ5KEd0ay5XaWRnZXQgd2luZG93KSB7CisrICAgICAgICBHZGsuUmVjdGFuZ2xlIG1vbml0 b3JfYXJlYSA9IHsgMCwgfTsKKysKKysgICAgICAgIC8vIFVzZSBnZXRfbW9uaXRvcl9nZW9tZXRy eSgpIGluc3RlYWQgb2YgZ2V0X21vbml0b3JfYXJlYSgpLgorKyAgICAgICAgLy8gZ2V0X21vbml0 b3JfYXJlYSgpIGV4Y2x1ZGVzIGRvY2tzLCBidXQgdGhlIGxvb2t1cCB3aW5kb3cgc2hvdWxkIGJl CisrICAgICAgICAvLyBzaG93biBvdmVyIHRoZW0uCisrICAgICAgICBHZGsuTW9uaXRvciBtb25p dG9yID0gd2luZG93LmdldF9kaXNwbGF5KCkuZ2V0X21vbml0b3JfYXRfcG9pbnQoCisrICAgICAg ICAgICAgICAgIG1fY3Vyc29yX2xvY2F0aW9uLngsCisrICAgICAgICAgICAgICAgIG1fY3Vyc29y X2xvY2F0aW9uLnkpOworKyAgICAgICAgbW9uaXRvcl9hcmVhID0gbW9uaXRvci5nZXRfZ2VvbWV0 cnkoKTsKKysgICAgICAgIHJldHVybiBtb25pdG9yX2FyZWE7CisrICAgIH0KKysKKyAjaWYgVVNF X0dES19XQVlMQU5ECisgICAgIHByaXZhdGUgdm9pZCByZWFsaXplX3dpbmRvdyhib29sIGluaXRp YWwpIHsKKyAgICAgICAgIC8vIFRoZSBjdXN0b20gc3VyZmFjZSBjYW4gYmUgdXNlZCB3aGVuIHRo ZSBXYXlsYW5kIGlucHV0LW1ldGhvZAorZGlmZiAtLWdpdCBhL3VpL2d0azMvZW1vamllci52YWxh IGIvdWkvZ3RrMy9lbW9qaWVyLnZhbGEKK2luZGV4IDJkODc1NGE0Li44YzUyN2VjYSAxMDA2NDQK Ky0tLSBhL3VpL2d0azMvZW1vamllci52YWxhCisrKysgYi91aS9ndGszL2Vtb2ppZXIudmFsYQor QEAgLTIyMyw4ICsyMjMsNiBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGlj YXRpb25XaW5kb3cgeworICAgICAgICAgQkFDS1dBUkQsCisgICAgIH0KKyAKKy0gICAgcHVibGlj IGJvb2wgaXNfd2F5bGFuZCB7IGdldDsgc2V0OyB9CistCisgICAgIHB1YmxpYyBjb25zdCB1aW50 IEJVVFRPTl9DTE9TRV9CVVRUT04gPSAxMDAwOworIAorICAgICBwcml2YXRlIGNvbnN0IHVpbnQg RU1PSklfR1JJRF9QQUdFID0gMTA7CitAQCAtMjY4LDYgKzI2Niw4IEBAIHB1YmxpYyBjbGFzcyBJ QnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAgIHByaXZhdGUgc3RhdGlj IGJvb2wgbV9sb2FkZWRfdW5pY29kZSA9IGZhbHNlOworICAgICBwcml2YXRlIHN0YXRpYyBzdHJp bmcgbV93YXJuaW5nX21lc3NhZ2UgPSAiIjsKKyAKKysgICAgcHJpdmF0ZSBib29sIG1faXNfd2F5 bGFuZDsKKysgICAgcHJpdmF0ZSBib29sIG1faXNfZ25vbWUgPSBmYWxzZTsKKyAgICAgcHJpdmF0 ZSBUaGVtZWRSR0JBIG1fcmdiYTsKKyAgICAgcHJpdmF0ZSBHdGsuQm94IG1fdmJveDsKKyAgICAg LyogSWYgZW1vamllciBpcyBlbW9qaSBjYXRlZ29yeSBsaXN0IG9yIFVuaWNvZGUgY2F0ZWdvcnkg bGlzdCwKK0BAIC0zMjgsNyArMzI4LDggQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3Rr LkFwcGxpY2F0aW9uV2luZG93IHsKKyAgICAgICAgIEdMaWIuT2JqZWN0KAorICAgICAgICAgICAg IHR5cGUgOiBHdGsuV2luZG93VHlwZS5QT1BVUAorICAgICAgICAgKTsKKy0gICAgICAgIHRoaXMu aXNfd2F5bGFuZCA9IGlzX3dheWxhbmQ7CisrICAgICAgICBtX2lzX3dheWxhbmQgPSBpc193YXls YW5kOworKyAgICAgICAgbV9pc19nbm9tZSA9IGlzX2dub21lKCk7CisgCisgICAgICAgICAvLyBH TGliLkFjdGlvbkVudHJ5IGFjY2VwdHMgY29uc3QgdmFyaWFibGVzIG9ubHkuCisgICAgICAgICB2 YXIgYWN0aW9uID0gbmV3IEdMaWIuU2ltcGxlQWN0aW9uLnN0YXRlZnVsKAorQEAgLTM4Miw2ICsz ODMsMjMgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93 IHsKKyAgICAgfQorIAorIAorKyAgICBwcml2YXRlIGJvb2wgaXNfZ25vbWUoKSB7CisrICAgICAg ICB1bm93bmVkIHN0cmluZz8gZGVza3RvcCA9CisrICAgICAgICAgICAgRW52aXJvbm1lbnQuZ2V0 X3ZhcmlhYmxlKCJYREdfQ1VSUkVOVF9ERVNLVE9QIik7CisrICAgICAgICBpZiAoZGVza3RvcCA9 PSAiR05PTUUiKQorKyAgICAgICAgICAgIHJldHVybiB0cnVlOworKyAgICAgICAgLyogSWYgaWJ1 cy1kYW1lb24gaXMgbGF1bmNoZWQgZnJvbSBzeXN0ZW1kLCBYREdfQ1VSUkVOVF9ERVNLVE9QCisr ICAgICAgICAgKiBlbnZpcm9ubWVudCB2YXJpYWJsZSBjb3VsZCBiZSBzZXQgYWZ0ZXIgaWJ1cy1k YW1lb24gd291bGQgYmUKKysgICAgICAgICAqIGxhdW5jaGVkIGFuZCBYREdfQ1VSUkVOVF9ERVNL VE9QIGNvdWxkIGJlICIobnVsbCkiLgorKyAgICAgICAgICogQnV0IFhER19TRVNTSU9OX0RFU0tU T1AgY2FuIGJlIHNldCB3aXRoIHN5c3RlbWQncyBQQU0uCisrICAgICAgICAgKi8KKysgICAgICAg IGlmIChkZXNrdG9wID09IG51bGwgfHwgZGVza3RvcCA9PSAiKG51bGwpIikKKysgICAgICAgICAg ICBkZXNrdG9wID0gRW52aXJvbm1lbnQuZ2V0X3ZhcmlhYmxlKCJYREdfU0VTU0lPTl9ERVNLVE9Q Iik7CisrICAgICAgICBpZiAoZGVza3RvcCA9PSAiZ25vbWUiKQorKyAgICAgICAgICAgIHJldHVy biB0cnVlOworKyAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICB9CisrCisgICAgIHByaXZhdGUg c3RhdGljIHZvaWQgcmVsb2FkX2Vtb2ppX2RpY3QoKSB7CisgICAgICAgICBpbml0X2Vtb2ppX2Rp Y3QoKTsKKyAgICAgICAgIG1ha2VfZW1vamlfZGljdCgiZW4iKTsKK0BAIC0xODA3LDcgKzE4MjUs NyBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewor IAorIAorICAgICBwcml2YXRlIHZvaWQgc3RhcnRfcmVidWlsZF9ndWkoYm9vbCBpbml0aWFsX2xh dW5jaGluZykgeworLSAgICAgICAgaWYgKCF0aGlzLmlzX3dheWxhbmQpCisrICAgICAgICBpZiAo IW1faXNfd2F5bGFuZCkKKyAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICBpZiAoIWluaXRp YWxfbGF1bmNoaW5nICYmICFiYXNlLmdldF92aXNpYmxlKCkpCisgICAgICAgICAgICAgcmV0dXJu OworQEAgLTIxODksMTcgKzIyMDcsMjMgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3Rr LkFwcGxpY2F0aW9uV2luZG93IHsKKyAKKyAKKyAgICAgcHVibGljIElCdXMuVGV4dCBnZXRfdGl0 bGVfdGV4dCgpIHsKKysgICAgICAgIGlmICghbV9sb2FkZWRfdW5pY29kZSAmJiBtX2lzX2dub21l KSB7CisrICAgICAgICAgICAgdW5pY2hhciBjID0gMHgyNkEwOworKyAgICAgICAgICAgIHJldHVy biBuZXcgSUJ1cy5UZXh0LmZyb21fc3RyaW5nKCIlcyVzICV1JSUiLnByaW50ZigKKysgICAgICAg ICAgICAgICAgICAgIGMudG9fc3RyaW5nKCksCisrICAgICAgICAgICAgICAgICAgICBfKCJMb2Fk aW5nIGEgVW5pY29kZSBkaWN0aW9uYXJ5OiIpLAorKyAgICAgICAgICAgICAgICAgICAgKHVpbnQp KG1fdW5pY29kZV9wZXJjZW50ICogMTAwKSkpOworKyAgICAgICAgfQorICAgICAgICAgdmFyIGxh bmd1YWdlID0gXyhJQnVzLmdldF9sYW5ndWFnZV9uYW1lKG1fY3VycmVudF9sYW5nX2lkKSk7Cisg ICAgICAgICB1aW50IG5jYW5kaWRhdGVzID0gdGhpcy5nZXRfbnVtYmVyX29mX2NhbmRpZGF0ZXMo KTsKKyAgICAgICAgIHN0cmluZyBtYWluX3RpdGxlID0gXygiRW1vamkgQ2hvaWNlIik7CisgICAg ICAgICBpZiAobV9zaG93X3VuaWNvZGUpCisgICAgICAgICAgICAgbWFpbl90aXRsZSA9IF8oIlVu aWNvZGUgQ2hvaWNlIik7CistICAgICAgICB2YXIgdGV4dCA9IG5ldyBJQnVzLlRleHQuZnJvbV9z dHJpbmcoCistICAgICAgICAgICAgICAgICIlcyAoJXMpICgldSAvICV1KSIucHJpbnRmKAorLSAg ICAgICAgICAgICAgICAgICAgICAgIG1haW5fdGl0bGUsCistICAgICAgICAgICAgICAgICAgICAg ICAgbGFuZ3VhZ2UsCistICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRfY3Vyc29yX3Bv cygpICsgMSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBuY2FuZGlkYXRlcykpOworKyAgICAg ICAgdmFyIHRleHQgPSBuZXcgSUJ1cy5UZXh0LmZyb21fc3RyaW5nKCIlcyAoJXMpICgldSAvICV1 KSIucHJpbnRmKAorKyAgICAgICAgICAgICAgICBtYWluX3RpdGxlLAorKyAgICAgICAgICAgICAg ICBsYW5ndWFnZSwKKysgICAgICAgICAgICAgICAgdGhpcy5nZXRfY3Vyc29yX3BvcygpICsgMSwK KysgICAgICAgICAgICAgICAgbmNhbmRpZGF0ZXMpKTsKKyAgICAgICAgIGludCBjaGFyX2NvdW50 ID0gdGV4dC50ZXh0LmNoYXJfY291bnQoKTsKKyAgICAgICAgIGludCBzdGFydF9pbmRleCA9IC0x OworICAgICAgICAgdW5vd25lZCBzdHJpbmcgdGl0bGUgPSB0ZXh0LnRleHQ7CitkaWZmIC0tZ2l0 IGEvdWkvZ3RrMy9leHRlbnNpb24udmFsYSBiL3VpL2d0azMvZXh0ZW5zaW9uLnZhbGEKK2luZGV4 IGE2ZjJlOGU2Li41Y2QxYTZhZCAxMDA2NDQKKy0tLSBhL3VpL2d0azMvZXh0ZW5zaW9uLnZhbGEK KysrKyBiL3VpL2d0azMvZXh0ZW5zaW9uLnZhbGEKK0BAIC0zLDcgKzMsNyBAQAorICAqIGlidXMg LSBUaGUgSW5wdXQgQnVzCisgICoKKyAgKiBDb3B5cmlnaHQoYykgMjAxOCBQZW5nIEh1YW5nIDxz aGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KKy0gKiBDb3B5cmlnaHQoYykgMjAxOC0yMDIwIFRha2Fv IEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgorKyAqIENvcHlyaWdodChjKSAy MDE4LTIwMjUgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CisgICoK KyAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yCisgICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYworQEAgLTk5LDYgKzk5LDcgQEAgY2xhc3MgRXh0ZW5zaW9uR3RrIDog R3RrLkFwcGxpY2F0aW9uIHsKKyAgICAgcHJpdmF0ZSB2b2lkIGJ1c19kaXNjb25uZWN0ZWQoSUJ1 cy5CdXMgYnVzKSB7CisgICAgICAgICBkZWJ1ZygiY29ubmVjdGlvbiBpcyBsb3N0LiIpOworICAg ICAgICAgR3RrLm1haW5fcXVpdCgpOworKyAgICAgICAgdGhpcy5xdWl0KCk7CisgICAgIH0KKyAK KyAgICAgcHJpdmF0ZSB2b2lkIGJ1c19jb25uZWN0ZWQoSUJ1cy5CdXMgYnVzKSB7CitkaWZmIC0t Z2l0IGEvdWkvZ3RrMy9wYW5lbGJpbmRpbmcudmFsYSBiL3VpL2d0azMvcGFuZWxiaW5kaW5nLnZh bGEKK2luZGV4IGYwODI3YjNlLi5hMmZkMTQ0MSAxMDA2NDQKKy0tLSBhL3VpL2d0azMvcGFuZWxi aW5kaW5nLnZhbGEKKysrKyBiL3VpL2d0azMvcGFuZWxiaW5kaW5nLnZhbGEKK0BAIC02MzIsNiAr NjMyLDggQEAgY2xhc3MgUGFuZWxCaW5kaW5nIDogSUJ1cy5QYW5lbFNlcnZpY2UgeworICAgICAg ICAgICAgICAgICAgICAgbV9lbW9qaWVyLmtleV9wcmVzc19jdXJzb3JfaG9yaXpvbnRhbChHZGsu S2V5LlJpZ2h0LCAwKTsKKyAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICBt X2Vtb2ppZXIuc2V0X2Fubm90YXRpb24oYW5ub3RhdGlvbik7CisrICAgICAgICAgICAgICAgIHZh ciB0ZXh0ID0gbV9lbW9qaWVyLmdldF90aXRsZV90ZXh0KCk7CisrICAgICAgICAgICAgICAgIHNo b3dfY2FuZGlkYXRlID0gKHRleHQudGV4dC5nZXRfY2hhcigpID09IDB4MjZBMCk7CisgICAgICAg ICAgICAgfQorICAgICAgICAgfQorICAgICAgICAgY29udmVydF9wcmVlZGl0X3RleHQoKTsKK0BA IC03MzgsMTAgKzc0MCwxMSBAQCBjbGFzcyBQYW5lbEJpbmRpbmcgOiBJQnVzLlBhbmVsU2Vydmlj ZSB7CisgICAgIHByaXZhdGUgdm9pZCBzaG93X3dheWxhbmRfbG9va3VwX3RhYmxlKElCdXMuVGV4 dCB0ZXh0KSB7CisgICAgICAgICBtX3dheWxhbmRfbG9va3VwX3RhYmxlX2lzX3Zpc2libGUgPSB0 cnVlOworICAgICAgICAgdmFyIHRhYmxlID0gbV9lbW9qaWVyLmdldF9vbmVfZGltZW5zaW9uX2xv b2t1cF90YWJsZSgpOworKyAgICAgICAgYm9vbCBkb19zaG93X2F1eGlsaWFyeV90ZXh0ID0gKHRl eHQudGV4dC5nZXRfY2hhcigpID09IDB4MjZBMCk7CisgICAgICAgICB1aW50IG5jYW5kaWRhdGVz ID0gdGFibGUuZ2V0X251bWJlcl9vZl9jYW5kaWRhdGVzKCk7CisgICAgICAgICB1cGRhdGVfYXV4 aWxpYXJ5X3RleHRfcmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgIHRleHQsCistICAgICAgICAg ICAgICAgIG5jYW5kaWRhdGVzID4gMCA/IHRydWUgOiBmYWxzZSk7CisrICAgICAgICAgICAgICAg IGRvX3Nob3dfYXV4aWxpYXJ5X3RleHQgPyB0cnVlIDogbmNhbmRpZGF0ZXMgPiAwID8gdHJ1ZSA6 IGZhbHNlKTsKKyAgICAgICAgIHVwZGF0ZV9sb29rdXBfdGFibGVfcmVjZWl2ZWQoCisgICAgICAg ICAgICAgICAgIHRhYmxlLAorICAgICAgICAgICAgICAgICBuY2FuZGlkYXRlcyA+IDAgPyB0cnVl IDogZmFsc2UpOworLS0gCisyLjQ5LjAKKworRnJvbSBjNWVhMzVmMTRhNjU4NzVhNjFkZWM3NmNm OTBjNjA5ODhkZmJmYzI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogZnVqaXdhcmF0 IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgorRGF0ZTogU3VuLCAxIEp1biAyMDI1IDIyOjEx OjEyICswOTAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBzcmMvaWJ1c2VuZ2luZXNpbXBsZTogSW1w cm92ZSBCRVBPIGNvbXBvc2Ugc2VxdWVuY2UgdmlzdWFscworCitUaGUgRnJlbmNoIChCRVBPLCBB Rk5PUikga2V5bWFwIHV0aWxpemVzIHBzZXVkby1kZWFka2V5cyB3aXRoaW4KK1UrRkREMCB0byBV K0ZERDkgcmFuZ2UsIHdoaWNoIGxhY2sgcmVhZGFibGUgY2hhcmFjdGVycyBidXQgdGhlCitzeW1i b2wgZmlsZSwgL3Vzci9zaGFyZS9YMTEveGtiL3N5bWJvbHMvZnIsIGRldGFpbHMgdGhlIHByb3Bv c2VkCitleHByZXNzaW9ucyBvZiB0aGUgcHNldWRvLWRlYWRrZXlzIGluIHRoZSBjb21tZW50IGxp bmVzIGFuZCBJQnVzCitmb2xsb3dzIGl0LgorCitCVUc9aHR0cHM6Ly9naXRodWIuY29tL2lidXMv aWJ1cy9pc3N1ZXMvMjc0OAorQlVHPWh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9ndGsv LS9tZXJnZV9yZXF1ZXN0cy84MzY4CistLS0KKyBzcmMvaWJ1c2NvbXBvc2V0YWJsZS5jIHwgMjgg KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQorIHNyYy9pYnVzZW5naW5lc2ltcGxlLmMgfCAg NSArKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25z KC0pCisKK2RpZmYgLS1naXQgYS9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jIGIvc3JjL2lidXNjb21w b3NldGFibGUuYworaW5kZXggZmZkNDBjNzUuLjhjNThiZWIxIDEwMDY0NAorLS0tIGEvc3JjL2li dXNjb21wb3NldGFibGUuYworKysrIGIvc3JjL2lidXNjb21wb3NldGFibGUuYworQEAgLTE5ODIs NiArMTk4MiwxMSBAQCBpYnVzX2tleXN5bV90b191bmljb2RlIChndWludCAgICAga2V5c3ltLAor ICAgICAgICAgICAgICAgICByZXR1cm4gY29tYmluZWRfdW5pY29kZTsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICBlbHNlICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg ICAgICAgICAgIHJldHVybiBpc29sYXRlZF91bmljb2RlCisrI2RlZmluZSBDQVNFX0tFWVNZTShr ZXlzeW1fdmFsLCB1bmljb2RlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorKyAgICAgICAgY2FzZSBrZXlzeW1fdmFsOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICBpZiAobmVlZF9zcGFjZSkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAg ICAgICAgICAgICAgICpuZWVkX3NwYWNlID0gRkFMU0U7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHJldHVybiB1bmljb2RlCisgICAgIHN3 aXRjaCAoa2V5c3ltKSB7CisgI2lmZGVmIElCVVNfRU5HTElTSF9ERUFEX0tFWQorICAgICBDQVNF IChhLCAweDAzNjMsIDEpOworQEAgLTIwNDgsMTYgKzIwNTMsMTggQEAgaWJ1c19rZXlzeW1fdG9f dW5pY29kZSAoZ3VpbnQgICAgIGtleXN5bSwKKyAgICAgQ0FTRSAgICAgICAgIChzdHJva2UsICAg ICAgICAgICAgICAgICAgICAgICAweDAzMzUsIDEpOworICAgICBDQVNFX0NPTUJJTkUgKHRpbGRl LCAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMwMywgMHgwMDdFLCAwKTsKKyAgICAgQ0FTRV9D T01CSU5FICh2b2ljZWRfc291bmQsICAgICAgICAgICAgICAgICAweDMwOTksIDB4MzA5QiwgMCk7 CistICAgIGNhc2UgSUJVU19LRVlfTXVsdGlfa2V5OgorLSAgICAgICAgaWYgKG5lZWRfc3BhY2Up CistICAgICAgICAgICAgKm5lZWRfc3BhY2UgPSBGQUxTRTsKKy0gICAgICAgIC8qIFdlIG9ubHkg c2hvdyB0aGUgQ29tcG9zZSBrZXkgdmlzaWJseSB3aGVuIGl0IGlzIHRoZQorLSAgICAgICAgICog b25seSBnbHlwaCBpbiB0aGUgcHJlZWRpdCwgb3Igd2hlbiBpdCBvY2N1cnMgaW4gdGhlCistICAg ICAgICAgKiBtaWRkbGUgb2YgdGhlIHNlcXVlbmNlLiBTYWRseSwgdGhlIG9mZmljaWFsIGNoYXJh Y3RlciwKKy0gICAgICAgICAqIFUrMjM4NCwgQ09NUE9TSVRJT04gU1lNQk9MLCBpcyBiaXQgdG9v IGRpc3RyYWN0aW5nLCBzbworLSAgICAgICAgICogd2UgdXNlIFUrMDBCNywgTUlERExFIERPVC4K Ky0gICAgICAgICAqLworLSAgICAgICAgcmV0dXJuIDB4MDBCNzsKKysgICAgLyogV2Ugb25seSBz aG93IHRoZSBDb21wb3NlIGtleSB2aXNpYmx5IHdoZW4gaXQgaXMgdGhlCisrICAgICAqIG9ubHkg Z2x5cGggaW4gdGhlIHByZWVkaXQsIG9yIHdoZW4gaXQgb2NjdXJzIGluIHRoZQorKyAgICAgKiBt aWRkbGUgb2YgdGhlIHNlcXVlbmNlLiBTYWRseSwgdGhlIG9mZmljaWFsIGNoYXJhY3RlciwKKysg ICAgICogVSsyMzg0LCBDT01QT1NJVElPTiBTWU1CT0wsIGlzIGJpdCB0b28gZGlzdHJhY3Rpbmcs IHNvCisrICAgICAqIHdlIHVzZSBVKzAwQjcsIE1JRERMRSBET1QuCisrICAgICAqLworKyAgICBD QVNFX0tFWVNZTShJQlVTX0tFWV9NdWx0aV9rZXksIDB4MDBCNyk7CisrICAgIC8qIFJlZmVyIChC RVBPLCBBRk5PUikgY29tbWVudHMgaW4gL3Vzci9zaGFyZS9YMTEveGtiL3N5bWJvbHMvZnIgZmls ZS4gKi8KKysgICAgQ0FTRV9LRVlTWU0oMHgwMTAwRkRENCwgMHgwMERGKTsgLyogw58gKi8KKysg ICAgQ0FTRV9LRVlTWU0oMHgwMTAwRkRENSwgMHgxRDQ5KTsgLyog4bWJICovCisrICAgIENBU0Vf S0VZU1lNKDB4MDEwMEZERDcsIDB4MjIxRSk7IC8qIOKIniAqLworKyAgICBDQVNFX0tFWVNZTSgw eDAxMDBGREQ4LCAweDIwMTUpOyAvKiDigJUgKi8KKyAgICAgZGVmYXVsdDo7CisgICAgICAgICBp ZiAobmVlZF9zcGFjZSkKKyAgICAgICAgICAgICAqbmVlZF9zcGFjZSA9IEZBTFNFOworQEAgLTIw NjUsNCArMjA3Miw1IEBAIGlidXNfa2V5c3ltX3RvX3VuaWNvZGUgKGd1aW50ICAgICBrZXlzeW0s CisgICAgIHJldHVybiAweDA7CisgI3VuZGVmIENBU0UKKyAjdW5kZWYgQ0FTRV9DT01CSU5FCisr I3VuZGVmIENBU0VfS0VZU1lNCisgfQorZGlmZiAtLWdpdCBhL3NyYy9pYnVzZW5naW5lc2ltcGxl LmMgYi9zcmMvaWJ1c2VuZ2luZXNpbXBsZS5jCitpbmRleCAxNWM0NWMyZS4uNzg0ZWQxODAgMTAw NjQ0CistLS0gYS9zcmMvaWJ1c2VuZ2luZXNpbXBsZS5jCisrKysgYi9zcmMvaWJ1c2VuZ2luZXNp bXBsZS5jCitAQCAtNDcxLDYgKzQ3MSwxMSBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfdXBkYXRlX3By ZWVkaXRfdGV4dCAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnX3N0cmluZ19hcHBlbmRfYyAocywgJyAnKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICBnX3N0cmluZ19hcHBlbmRfdW5pY2hhciAocywgY2gpOworICAgICAgICAgICAgICAg ICAgICAgfQorKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleXN5bSA+PSAweDAxMDBmZGQw ICYmIGtleXN5bSA8PSAweDAxMDBmZGQ5KSB7CisrICAgICAgICAgICAgICAgICAgICAvKiBBIEJF UE9zIHBzZXVkbyBkZWFka2V5ICovCisrICAgICAgICAgICAgICAgICAgICBpZiAoIShjaCA9IGli dXNfa2V5c3ltX3RvX3VuaWNvZGUgKGtleXN5bSwgRkFMU0UsIE5VTEwpKSkKKysgICAgICAgICAg ICAgICAgICAgICAgICBjaCA9IDB4MDBCNzsKKysgICAgICAgICAgICAgICAgICAgIGdfc3RyaW5n X2FwcGVuZF91bmljaGFyIChzLCBjaCk7CisgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgICAgICAgICAgICBjaCA9IGlidXNfa2V5dmFsX3RvX3VuaWNvZGUgKGtleXN5bSk7Cisg ICAgICAgICAgICAgICAgICAgICBpZiAoY2gpIHsKKy0tIAorMi40OS4wCisKK0Zyb20gYjllYWE3 MmU0NDcxYjI0MTVlNTlmNDdkZWQ0YTk4N2FiOTA1N2M5OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKK0Zyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KK0RhdGU6IFN1 biwgMSBKdW4gMjAyNSAyMjoxNDowMCArMDkwMAorU3ViamVjdDogW1BBVENIIDIvMl0gc3JjOiBE byBub3QgbG9hZCBlbi1VUyBjb21wb3NlIHRhYmxlIGJ5IGRlZmF1bHQKKworR1RLNCBoYXMgbG9h ZCBlbi1VUyBjb21wb3NlIHRhYmxlIGluIGNhc2Ugb2Ygbm8gdXNlciBjb21wb3NlIGZpbGUuCitH VEs0IG5vdyBkb2VzIG5vdCBsb2FkIHRoZSBlbi1VUyBjb21wb3NlIHRhYmxlIGJ5IGRlZmF1bHQg aW4gY2FzZQordGhhdCB0aGUgdXNlciBjb21wb3NlIGZpbGUgZXhpc3RzIG9yIGVsLUdSIGxvY2Fs ZSBpcyB1c2VkIHNpbmNlCis0LjE4LjUgYW5kIG5ldyBrZXl3b3JkICJpbmNsdWRlICVMIiBjYW4g bG9hZHMgdGhlIGVuLVVTIGNvbXBvc2UgdGFibGUuCitJZiB0aGUgb2xkIGNvbXBvc2UgY2FjaGUg dmVyc2lvbiA0IGlzIGZvdW5kLCB0aGUgY29tcG9zZSBmaWxlCit3aWxsIGJlIHJld3JpdHRlbiB0 byBhZGQgdGhlIGxpbmUgb2YgImluY2x1ZGUgJUwiLgorSUJ1cyBhbHNvIGZvbGxvd3MgR1RLIDQu MTguNS4KKworRml4ZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvY29tbWl0LzI4YjM1 N2QKK0ZpeGVzOiBodHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL2NvbW1pdC8wOWVhMDY5CitC VUc9aHR0cHM6Ly9naXRodWIuY29tL2lidXMvaWJ1cy9pc3N1ZXMvMjcwNgorQlVHPWh0dHBzOi8v Z2l0aHViLmNvbS9pYnVzL2lidXMvaXNzdWVzLzI3MjcKKy0tLQorIHNyYy9nZW5jb21wb3NldGFi bGUuYyAgICAgICAgIHwgICA5ICstCisgc3JjL2lidXNjb21wb3NldGFibGUuYyAgICAgICAgfCAy NzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQorIHNyYy9pYnVzY29tcG9zZXRh YmxlLmggICAgICAgIHwgIDI0ICsrLQorIHNyYy9pYnVzZW5naW5lLmggICAgICAgICAgICAgIHwg ICA1ICstCisgc3JjL2lidXNlbmdpbmVzaW1wbGUuYyAgICAgICAgfCAxMzkgKysrKysrKysrKysr LS0tLS0KKyBzcmMvaWJ1c2VuZ2luZXNpbXBsZXByaXZhdGUuaCB8ICAxOSArKy0KKyBzcmMvdGVz dHMvaWJ1cy1jb21wb3NlLmMgICAgICB8ICAgNiArLQorIDcgZmlsZXMgY2hhbmdlZCwgNDE0IGlu c2VydGlvbnMoKyksIDk1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2dlbmNvbXBv c2V0YWJsZS5jIGIvc3JjL2dlbmNvbXBvc2V0YWJsZS5jCitpbmRleCAzNWQ2Y2U4My4uMTYxYjg5 ZTAgMTAwNjQ0CistLS0gYS9zcmMvZ2VuY29tcG9zZXRhYmxlLmMKKysrKyBiL3NyYy9nZW5jb21w b3NldGFibGUuYworQEAgLTEsOCArMSw4IEBACisgLyogLSotIG1vZGU6IEM7IGMtYmFzaWMtb2Zm c2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IC0qLSAqLworIC8qIHZpbTpzZXQgZXQgc3Rz PTQ6ICovCisgLyogaWJ1cyAtIFRoZSBJbnB1dCBCdXMKKy0gKiBDb3B5cmlnaHQgKEMpIDIwMjMg VGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CistICogQ29weXJpZ2h0 IChDKSAyMDIzIFJlZCBIYXQsIEluYy4KKysgKiBDb3B5cmlnaHQgKEMpIDIwMjMtMjAyNSBUYWth byBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KKysgKiBDb3B5cmlnaHQgKEMp IDIwMjMtMjAyNSBSZWQgSGF0LCBJbmMuCisgICoKKyAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICogbW9kaWZ5IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworQEAgLTc2LDYg Kzc2LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAgICAgY2hhciAqIGNvbnN0 ICpzeXNfbGFuZyA9IE5VTEw7CisgICAgIGNoYXIgKnBhdGggPSBOVUxMOworICAgICBJQnVzQ29t cG9zZVRhYmxlRXggKmNvbXBvc2VfdGFibGU7CisrICAgIGd1aW50MTYgc2F2ZWRfdmVyc2lvbiA9 IDA7CisgICAgIGNoYXIgKmJhc2VuYW1lID0gTlVMTDsKKyAKKyAgICAgcGF0aCA9IGdfc3RyZHVw ICgiLi9Db21wb3NlIik7CitAQCAtOTcsMTMgKzk4LDE1IEBAIG1haW4gKGludCBhcmdjLCBjaGFy ICphcmd2W10pCisgICAgICAgICBnX2RlYnVnICgiQ3JlYXRlIGEgY2FjaGUgb2YgJXMiLCBwYXRo KTsKKyAgICAgfQorICAgICBnX3NldGVudiAoIklCVVNfQ09NUE9TRV9DQUNIRV9ESVIiLCAiLiIs IFRSVUUpOworLSAgICBjb21wb3NlX3RhYmxlID0gaWJ1c19jb21wb3NlX3RhYmxlX2xvYWRfY2Fj aGUgKHBhdGgpOworKyAgICBjb21wb3NlX3RhYmxlID0gaWJ1c19jb21wb3NlX3RhYmxlX2xvYWRf Y2FjaGUgKHBhdGgsICZzYXZlZF92ZXJzaW9uKTsKKyAgICAgaWYgKCFjb21wb3NlX3RhYmxlICYm CisgICAgICAgICAoY29tcG9zZV90YWJsZSA9IGlidXNfY29tcG9zZV90YWJsZV9uZXdfd2l0aF9m aWxlIChwYXRoLCBOVUxMKSkKKyAgICAgICAgICAgID09IE5VTEwpIHsKKyAgICAgICAgIGdfd2Fy bmluZyAoIkZhaWxlZCB0byBnZW5lcmF0ZSB0aGUgY29tcG9zZSB0YWJsZS4iKTsKKyAgICAgICAg IHJldHVybiAxOworICAgICB9CisrICAgIGlmIChzYXZlZF92ZXJzaW9uID4gMCkKKysgICAgICAg IGdfd2FybmluZyAoIk9sZCBjYWNoZSB3YXMgdXBkYXRlZC4iKTsKKyAgICAgZ19mcmVlIChwYXRo KTsKKyAgICAgYmFzZW5hbWUgPSBnX3N0cmR1cF9wcmludGYgKCIlMDh4LmNhY2hlIiwgY29tcG9z ZV90YWJsZS0+aWQpOworICAgICBnX2RlYnVnICgiU2F2aW5nIGNhY2hlIGlkICVzIiwgYmFzZW5h bWUpOworZGlmZiAtLWdpdCBhL3NyYy9pYnVzY29tcG9zZXRhYmxlLmMgYi9zcmMvaWJ1c2NvbXBv c2V0YWJsZS5jCitpbmRleCA4YzU4YmViMS4uMmY3NmVmNjEgMTAwNjQ0CistLS0gYS9zcmMvaWJ1 c2NvbXBvc2V0YWJsZS5jCisrKysgYi9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jCitAQCAtMjQsNiAr MjQsNyBAQAorIAorICNpbmNsdWRlIDxnbGliLmg+CisgI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+ CisrI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNp bmNsdWRlIDxzdHJpbmcuaD4KKyAKK0BAIC0zOCw3ICszOSw3IEBACisgCisgCisgI2RlZmluZSBJ QlVTX0NPTVBPU0VfVEFCTEVfTUFHSUMgIklCdXNDb21wb3NlVGFibGUiCistI2RlZmluZSBJQlVT X0NPTVBPU0VfVEFCTEVfVkVSU0lPTiAoNCkKKysjZGVmaW5lIElCVVNfQ09NUE9TRV9UQUJMRV9W RVJTSU9OICg1KQorICNkZWZpbmUgSUJVU19NQVhfQ09NUE9TRV9BTEdPUklUSE1fTEVOIDkKKyAK KyB0eXBlZGVmIHN0cnVjdCB7CitAQCAtMjgzLDEwICsyODQsMTUgQEAgZXhwYW5kX2luY2x1ZGVf cGF0aCAoY29uc3QgY2hhciAqaW5jbHVkZV9wYXRoKSB7CisgICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBjYXNlICdMJzogLyogbG9jYWxlIGNvbXBv c2UgZmlsZSAqLworLSAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKCJ3aGlsZSBoYW5kbGluZyBY Q29tcG9zZSBpbmNsdWRlIHRhcmdldCAlcywgZm91bmQgIgorLSAgICAgICAgICAgICAgICAgICAg ICAgICAgInJlZHVuZGFudCAlJUwgaW5jbHVkZTsgdGhlIGluY2x1ZGUgaGFzIGJlZW4gIgorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgImlnbm9yZWQiLCBpbmNsdWRlX3BhdGgpOworLSAgICAg ICAgICAgICAgICBnb3RvIGZhaWw7CisrICAgICAgICAgICAgICAgIG91dCA9IGdfc3RyZHVwICgi JUwiKTsKKysgICAgICAgICAgICAgICAgaGVhZCA9IGkgKyAyOworKyAgICAgICAgICAgICAgICB3 aGlsZSAoKmhlYWQgfHwgKmhlYWQgPT0gJyAnIHx8ICpoZWFkID09ICdcdCcpIGhlYWQrKzsKKysg ICAgICAgICAgICAgICAgaWYgKCpoZWFkICE9ICdcMCcpIHsKKysgICAgICAgICAgICAgICAgICAg IGdfd2FybmluZyAoIlwiJXNcIiBhZnRlciBcIiUlTFwiIGlzIG5vdCBzdXBwb3J0ZWQgaW4gIgor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWENvbXBvc2UgaW5jbHVkZSB0YXJnZXQu IiwgaGVhZCk7CisrICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisrICAgICAgICAgICAg ICAgIH0KKysgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgY2FzZSAnUyc6IC8q IHN5c3RlbSBjb21wb3NlIGRpciAqLworICAgICAgICAgICAgICAgICBvID0gb3V0OworICAgICAg ICAgICAgICAgICBmb3JtZXIgPSBnX3N0cm5kdXAgKGhlYWQsIGkgLSBoZWFkKTsKK0BAIC00MTMs NyArNDE5LDggQEAgZ2V0X2VuX2NvbXBvc2VfZmlsZSAodm9pZCkKKyAKKyBzdGF0aWMgR0xpc3Qg KgorIGlidXNfY29tcG9zZV9saXN0X3BhcnNlX2ZpbGUgKGNvbnN0IGNoYXIgKmNvbXBvc2VfZmls ZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICptYXhfY29tcG9z ZV9sZW4pCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAqbWF4X2Nv bXBvc2VfbGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgKmNh bl9sb2FkX2VuX3VzKQorIHsKKyAgICAgY2hhciAqY29udGVudHMgPSBOVUxMOworICAgICBjaGFy ICoqbGluZXMgPSBOVUxMOworQEAgLTQyMyw2ICs0MzAsNyBAQCBpYnVzX2NvbXBvc2VfbGlzdF9w YXJzZV9maWxlIChjb25zdCBjaGFyICpjb21wb3NlX2ZpbGUsCisgICAgIGludCBpOworIAorICAg ICBnX2Fzc2VydCAobWF4X2NvbXBvc2VfbGVuKTsKKysgICAgZ19hc3NlcnQgKGNhbl9sb2FkX2Vu X3VzKTsKKyAKKyAgICAgaWYgKCFnX2ZpbGVfZ2V0X2NvbnRlbnRzIChjb21wb3NlX2ZpbGUsICZj b250ZW50cywgJmxlbmd0aCwgJmVycm9yKSkgeworICAgICAgICAgZ19lcnJvciAoIiVzIiwgZXJy b3ItPm1lc3NhZ2UpOworQEAgLTQzOCw2ICs0NDYsMTEgQEAgaWJ1c19jb21wb3NlX2xpc3RfcGFy c2VfZmlsZSAoY29uc3QgY2hhciAqY29tcG9zZV9maWxlLAorICAgICAgICAgcGFyc2VfY29tcG9z ZV9saW5lICgmY29tcG9zZV9saXN0LCBsaW5lc1tpXSwgJmNvbXBvc2VfbGVuLCAmaW5jbHVkZSk7 CisgICAgICAgICBpZiAoKm1heF9jb21wb3NlX2xlbiA8IGNvbXBvc2VfbGVuKQorICAgICAgICAg ICAgICptYXhfY29tcG9zZV9sZW4gPSBjb21wb3NlX2xlbjsKKysgICAgICAgIGlmICghZ19zdHJj bXAwIChpbmNsdWRlLCAiJUwiKSkgeworKyAgICAgICAgICAgICpjYW5fbG9hZF9lbl91cyA9IFRS VUU7CisrICAgICAgICAgICAgZ19jbGVhcl9wb2ludGVyICgmaW5jbHVkZSwgZ19mcmVlKTsKKysg ICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgIH0KKyAgICAgICAgIGlmIChpbmNsdWRlICYm ICppbmNsdWRlKSB7CisgICAgICAgICAgICAgR1N0YXRCdWYgYnVmX2luY2x1ZGUgPSB7IDAsIH07 CisgICAgICAgICAgICAgR1N0YXRCdWYgYnVmX3BhcmVudCA9IHsgMCwgfTsKK0BAIC00ODYsNyAr NDk5LDggQEAgaWJ1c19jb21wb3NlX2xpc3RfcGFyc2VfZmlsZSAoY29uc3QgY2hhciAqY29tcG9z ZV9maWxlLAorICAgICAgICAgaWYgKGluY2x1ZGUgJiYgKmluY2x1ZGUpIHsKKyAgICAgICAgICAg ICBHTGlzdCAqcmVzdCA9IGlidXNfY29tcG9zZV9saXN0X3BhcnNlX2ZpbGUgKAorICAgICAgICAg ICAgICAgICAgICAgaW5jbHVkZSwKKy0gICAgICAgICAgICAgICAgICAgIG1heF9jb21wb3NlX2xl bik7CisrICAgICAgICAgICAgICAgICAgICBtYXhfY29tcG9zZV9sZW4sCisrICAgICAgICAgICAg ICAgICAgICBjYW5fbG9hZF9lbl91cyk7CisgICAgICAgICAgICAgaWYgKHJlc3QpIHsKKyAgICAg ICAgICAgICAgICAgY29tcG9zZV9saXN0ID0gZ19saXN0X2NvbmNhdCAoY29tcG9zZV9saXN0LCBy ZXN0KTsKKyAgICAgICAgICAgICB9CitAQCAtNTA0LDEzICs1MTgsMTYgQEAgaWJ1c19jb21wb3Nl X2xpc3RfY2hlY2tfZHVwbGljYXRlZF93aXRoX2VuIChHTGlzdCAgKmNvbXBvc2VfbGlzdCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgbWF4X2Nv bXBvc2VfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R1NMaXN0ICpjb21wb3NlX3RhYmxlcykKKyB7CisrICAgIGd1aW50ICprZXlzeW1zOworKyAgICBH U3RyaW5nICpvdXRwdXQ7CisgICAgIEdMaXN0ICpsaXN0OworLSAgICBzdGF0aWMgZ3VpbnQgKmtl eXN5bXM7CisgICAgIEdMaXN0ICpyZW1vdmVkX2xpc3QgPSBOVUxMOworICAgICBJQnVzQ29tcG9z ZURhdGEgKmNvbXBvc2VfZGF0YTsKKy0gICAgR1N0cmluZyAqb3V0cHV0ID0gZ19zdHJpbmdfbmV3 ICgiIik7CisgCisrICAgIGlmICghY29tcG9zZV9saXN0KQorKyAgICAgICAgcmV0dXJuIE5VTEw7 CisgICAgIGtleXN5bXMgPSBnX25ldyAoZ3VpbnQsIG1heF9jb21wb3NlX2xlbiArIDEpOworKyAg ICBvdXRwdXQgPSBnX3N0cmluZ19uZXcgKCIiKTsKKyAKKyAgICAgZm9yIChsaXN0ID0gY29tcG9z ZV9saXN0OyBsaXN0ICE9IE5VTEw7IGxpc3QgPSBsaXN0LT5uZXh0KSB7CisgICAgICAgICBpbnQg aTsKK0BAIC02OTQsNiArNzExLDggQEAgaWJ1c19jb21wb3NlX2xpc3RfY2hlY2tfZHVwbGljYXRl ZF93aXRoX293biAoR0xpc3QgICpjb21wb3NlX2xpc3QsCisgICAgIGludCBpOworICAgICBHTGlz dCAqcmVtb3ZlZF9saXN0ID0gTlVMTDsKKyAKKysgICAgaWYgKCFjb21wb3NlX2xpc3QpCisrICAg ICAgICByZXR1cm4gTlVMTDsKKyAgICAgZm9yIChsaXN0ID0gY29tcG9zZV9saXN0OyBsaXN0ICE9 IE5VTEw7IGxpc3QgPSBsaXN0LT5uZXh0KSB7CisgICAgICAgICBnYm9vbGVhbiBpc19kaWZmZXJl bnRfdmFsdWUgPSBGQUxTRTsKKyAgICAgICAgIGlmICghbGlzdC0+bmV4dCkKK0BAIC05MjEsNiAr OTQwLDcgQEAgaWJ1c19jb21wb3NlX3RhYmxlX3NlcmlhbGl6ZSAoSUJ1c0NvbXBvc2VUYWJsZUV4 ICpjb21wb3NlX3RhYmxlLAorICAgICBndWludDE2IG1heF9zZXFfbGVuOworICAgICBndWludDE2 IGluZGV4X3N0cmlkZTsKKyAgICAgZ3VpbnQxNiBuX3NlcXM7CisrICAgIGd1aW50OCBjb21wb3Nl X3R5cGUgPSAwOworICAgICBnc2l6ZSBuX3NlcXNfMzJiaXQgPSAwOworICAgICBnc2l6ZSBzZWNv bmRfc2l6ZSA9IDA7CisgICAgIEdWYXJpYW50ICp2YXJpYW50X2RhdGEgPSBOVUxMOworQEAgLTkz NCw4ICs5NTQsOSBAQCBpYnVzX2NvbXBvc2VfdGFibGVfc2VyaWFsaXplIChJQnVzQ29tcG9zZVRh YmxlRXggKmNvbXBvc2VfdGFibGUsCisgICAgIG1heF9zZXFfbGVuID0gY29tcG9zZV90YWJsZS0+ bWF4X3NlcV9sZW47CisgICAgIGluZGV4X3N0cmlkZSA9IG1heF9zZXFfbGVuICsgMjsKKyAgICAg bl9zZXFzID0gY29tcG9zZV90YWJsZS0+bl9zZXFzOworKyAgICBjb21wb3NlX3R5cGUgPSBjb21w b3NlX3RhYmxlLT5jYW5fbG9hZF9lbl91cyA/IDEgOiAwOworIAorLSAgICBnX3JldHVybl92YWxf aWZfZmFpbCAobWF4X3NlcV9sZW4sIE5VTEwpOworKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAo bWF4X3NlcV9sZW4gfHwgY29tcG9zZV90eXBlLCBOVUxMKTsKKyAKKyAgICAgaWYgKG5fc2Vxcykg eworICAgICAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGNvbXBvc2VfdGFibGUtPmRhdGEsIE5V TEwpOworQEAgLTk2NSw3ICs5ODYsNyBAQCBpYnVzX2NvbXBvc2VfdGFibGVfc2VyaWFsaXplIChJ QnVzQ29tcG9zZVRhYmxlRXggKmNvbXBvc2VfdGFibGUsCisgICAgICAgICBuX3NlcXNfMzJiaXQg PSBjb21wb3NlX3RhYmxlLT5wcml2LT5maXJzdF9uX3NlcXM7CisgICAgICAgICBzZWNvbmRfc2l6 ZSA9IGNvbXBvc2VfdGFibGUtPnByaXYtPnNlY29uZF9zaXplOworICAgICB9CistICAgIGlmICgh bl9zZXFzICYmICFuX3NlcXNfMzJiaXQpIHsKKysgICAgaWYgKCFuX3NlcXMgJiYgIW5fc2Vxc18z MmJpdCAmJiAhY29tcG9zZV90eXBlKSB7CisgICAgICAgICBnX3dhcm5pbmcgKCJDb21wb3NlVGFi bGUgaGFzIG5vdCBrZXkgc2VxdWVuY2VzLiIpOworICAgICAgICAgZ290byBvdXRfc2VyaWFsaXpl OworICAgICB9IGVsc2UgaWYgKG5fc2Vxc18zMmJpdCAmJiAhc2Vjb25kX3NpemUpIHsKK0BAIC0x MDI4LDcgKzEwNDksNyBAQCBpYnVzX2NvbXBvc2VfdGFibGVfc2VyaWFsaXplIChJQnVzQ29tcG9z ZVRhYmxlRXggKmNvbXBvc2VfdGFibGUsCisgICAgICAgICAgICAgICAgIHNpemVvZiAoZ3VpbnQz MikpOworICAgICAgICAgZ19hc3NlcnQgKHZhcmlhbnRfZGF0YV8zMmJpdF9maXJzdCAmJiB2YXJp YW50X2RhdGFfMzJiaXRfc2Vjb25kKTsKKyAgICAgfQorLSAgICB2YXJpYW50X3RhYmxlID0gZ192 YXJpYW50X25ldyAoIihzcXFxcXF2dnYpIiwKKysgICAgdmFyaWFudF90YWJsZSA9IGdfdmFyaWFu dF9uZXcgKCIoc3FxcXFxdnZ2eSkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaGVhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9zZXFfbGVuLAorQEAgLTEw MzcsNyArMTA1OCw4IEBAIGlidXNfY29tcG9zZV90YWJsZV9zZXJpYWxpemUgKElCdXNDb21wb3Nl VGFibGVFeCAqY29tcG9zZV90YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlY29uZF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFy aWFudF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudF9k YXRhXzMyYml0X2ZpcnN0LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFy aWFudF9kYXRhXzMyYml0X3NlY29uZCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB2YXJpYW50X2RhdGFfMzJiaXRfc2Vjb25kLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29tcG9zZV90eXBlKTsKKyAgICAgcmV0dXJuIGdfdmFyaWFudF9yZWZfc2lu ayAodmFyaWFudF90YWJsZSk7CisgCisgb3V0X3NlcmlhbGl6ZToKK0BAIC0xMDYxLDcgKzEwODMs OCBAQCBpYnVzX2NvbXBvc2VfdGFibGVfZmluZCAoZ2NvbnN0cG9pbnRlciBkYXRhMSwKKyAKKyBJ QnVzQ29tcG9zZVRhYmxlRXggKgorIGlidXNfY29tcG9zZV90YWJsZV9kZXNlcmlhbGl6ZSAoY29u c3QgY2hhciAqY29udGVudHMsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnc2l6 ZSAgICAgICBsZW5ndGgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnc2l6ZSAg ICAgICBsZW5ndGgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDE2ICAg ICpzYXZlZF92ZXJzaW9uKQorIHsKKyAgICAgSUJ1c0NvbXBvc2VUYWJsZUV4ICpyZXR2YWwgPSBO VUxMOworICAgICBHVmFyaWFudFR5cGUgKnR5cGU7CitAQCAtMTA3MCw5ICsxMDkzLDkgQEAgaWJ1 c19jb21wb3NlX3RhYmxlX2Rlc2VyaWFsaXplIChjb25zdCBjaGFyICpjb250ZW50cywKKyAgICAg R1ZhcmlhbnQgKnZhcmlhbnRfZGF0YV8zMmJpdF9zZWNvbmQgPSBOVUxMOworICAgICBHVmFyaWFu dCAqdmFyaWFudF90YWJsZSA9IE5VTEw7CisgICAgIGNvbnN0IGNoYXIgKmhlYWRlciA9IE5VTEw7 CistICAgIGd1aW50MTYgdmVyc2lvbiA9IDA7CisgICAgIGd1aW50MTYgbWF4X3NlcV9sZW4gPSAw OworICAgICBndWludDE2IG5fc2VxcyA9IDA7CisrICAgIGd1aW50OCBjb21wb3NlX3R5cGUgPSAw OworICAgICBndWludDE2IG5fc2Vxc18zMmJpdCA9IDA7CisgICAgIGd1aW50MTYgc2Vjb25kX3Np emUgPSAwOworICAgICBndWludDE2IGluZGV4X3N0cmlkZTsKK0BAIC0xMDgzLDcgKzExMDYsOSBA QCBpYnVzX2NvbXBvc2VfdGFibGVfZGVzZXJpYWxpemUgKGNvbnN0IGNoYXIgKmNvbnRlbnRzLAor IAorICAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoY29udGVudHMgIT0gTlVMTCwgTlVMTCk7Cisg ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChsZW5ndGggPiAwLCBOVUxMKTsKKysgICAgZ19hc3Nl cnQgKHNhdmVkX3ZlcnNpb24pOworIAorKyAgICAqc2F2ZWRfdmVyc2lvbiA9IDA7CisgICAgIC8q IENoZWNrIHRoZSBjYWNoZSB2ZXJzaW9uIGF0IGZpcnN0IGJlZm9yZSBsb2FkIHdob2xlIHRoZSBm aWxlIGNvbnRlbnQuICovCisgICAgIHR5cGUgPSBnX3ZhcmlhbnRfdHlwZV9uZXcgKCIoc3EpIik7 CisgICAgIHZhcmlhbnRfdGFibGUgPSBnX3ZhcmlhbnRfbmV3X2Zyb21fZGF0YSAodHlwZSwKK0BA IC0xMTAwLDI1ICsxMTI1LDI0IEBAIGlidXNfY29tcG9zZV90YWJsZV9kZXNlcmlhbGl6ZSAoY29u c3QgY2hhciAqY29udGVudHMsCisgICAgIH0KKyAKKyAgICAgZ192YXJpYW50X3JlZl9zaW5rICh2 YXJpYW50X3RhYmxlKTsKKy0gICAgZ192YXJpYW50X2dldCAodmFyaWFudF90YWJsZSwgIigmc3Ep IiwgJmhlYWRlciwgJnZlcnNpb24pOworKyAgICBnX3ZhcmlhbnRfZ2V0ICh2YXJpYW50X3RhYmxl LCAiKCZzcSkiLCAmaGVhZGVyLCBzYXZlZF92ZXJzaW9uKTsKKyAKKyAgICAgaWYgKGdfc3RyY21w MCAoaGVhZGVyLCBJQlVTX0NPTVBPU0VfVEFCTEVfTUFHSUMpICE9IDApIHsKKyAgICAgICAgIGdf d2FybmluZyAoImNhY2hlIGlzIG5vdCBJQnVzQ29tcG9zZVRhYmxlLiIpOworICAgICAgICAgZ290 byBvdXRfbG9hZF9jYWNoZTsKKyAgICAgfQorIAorLSAgICBpZiAodmVyc2lvbiAhPSBJQlVTX0NP TVBPU0VfVEFCTEVfVkVSU0lPTikgeworKyAgICBpZiAoKnNhdmVkX3ZlcnNpb24gIT0gSUJVU19D T01QT1NFX1RBQkxFX1ZFUlNJT04pIHsKKyAgICAgICAgIGdfd2FybmluZyAoImNhY2hlIHZlcnNp b24gaXMgZGlmZmVyZW50OiAldSAhPSAldSIsCistICAgICAgICAgICAgICAgICAgIHZlcnNpb24s IElCVVNfQ09NUE9TRV9UQUJMRV9WRVJTSU9OKTsKKysgICAgICAgICAgICAgICAgICAgKnNhdmVk X3ZlcnNpb24sIElCVVNfQ09NUE9TRV9UQUJMRV9WRVJTSU9OKTsKKyAgICAgICAgIGdvdG8gb3V0 X2xvYWRfY2FjaGU7CisgICAgIH0KKyAKKy0gICAgdmVyc2lvbiA9IDA7CisgICAgIGhlYWRlciA9 IE5VTEw7CisgICAgIGdfdmFyaWFudF91bnJlZiAodmFyaWFudF90YWJsZSk7CisgICAgIHZhcmlh bnRfdGFibGUgPSBOVUxMOworIAorLSAgICB0eXBlID0gZ192YXJpYW50X3R5cGVfbmV3ICgiKHNx cXFxcXZ2dikiKTsKKysgICAgdHlwZSA9IGdfdmFyaWFudF90eXBlX25ldyAoIihzcXFxcXF2dnZ5 KSIpOworICAgICB2YXJpYW50X3RhYmxlID0gZ192YXJpYW50X25ld19mcm9tX2RhdGEgKHR5cGUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHMs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLAor QEAgLTExMzMsNyArMTE1Nyw3IEBAIGlidXNfY29tcG9zZV90YWJsZV9kZXNlcmlhbGl6ZSAoY29u c3QgY2hhciAqY29udGVudHMsCisgICAgIH0KKyAKKyAgICAgZ192YXJpYW50X3JlZl9zaW5rICh2 YXJpYW50X3RhYmxlKTsKKy0gICAgZ192YXJpYW50X2dldCAodmFyaWFudF90YWJsZSwgIigmc3Fx cXFxdnZ2KSIsCisrICAgIGdfdmFyaWFudF9nZXQgKHZhcmlhbnRfdGFibGUsICIoJnNxcXFxcXZ2 dnkpIiwKKyAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgTlVM TCwKKyAgICAgICAgICAgICAgICAgICAgJm1heF9zZXFfbGVuLAorQEAgLTExNDIsMTIgKzExNjYs MTUgQEAgaWJ1c19jb21wb3NlX3RhYmxlX2Rlc2VyaWFsaXplIChjb25zdCBjaGFyICpjb250ZW50 cywKKyAgICAgICAgICAgICAgICAgICAgJnNlY29uZF9zaXplLAorICAgICAgICAgICAgICAgICAg ICAmdmFyaWFudF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAmdmFyaWFudF9kYXRhXzMyYml0 X2ZpcnN0LAorLSAgICAgICAgICAgICAgICAgICAmdmFyaWFudF9kYXRhXzMyYml0X3NlY29uZCk7 CisrICAgICAgICAgICAgICAgICAgICZ2YXJpYW50X2RhdGFfMzJiaXRfc2Vjb25kLAorKyAgICAg ICAgICAgICAgICAgICAmY29tcG9zZV90eXBlKTsKKyAKKyAgICAgaWYgKG1heF9zZXFfbGVuID09 IDAgfHwgKG5fc2VxcyA9PSAwICYmIG5fc2Vxc18zMmJpdCA9PSAwKSkgeworLSAgICAgICAgZ193 YXJuaW5nICgiY2FjaGUgc2l6ZSBpcyBub3QgY29ycmVjdCAlZCAlZCAlZCIsCistICAgICAgICAg ICAgICAgICAgIG1heF9zZXFfbGVuLCBuX3NlcXMsIG5fc2Vxc18zMmJpdCk7CistICAgICAgICBn b3RvIG91dF9sb2FkX2NhY2hlOworKyAgICAgICAgaWYgKCFjb21wb3NlX3R5cGUpIHsKKysgICAg ICAgICAgICBnX3dhcm5pbmcgKCJjYWNoZSBzaXplIGlzIG5vdCBjb3JyZWN0ICVkICVkICVkIiwK KysgICAgICAgICAgICAgICAgICAgICAgIG1heF9zZXFfbGVuLCBuX3NlcXMsIG5fc2Vxc18zMmJp dCk7CisrICAgICAgICAgICAgZ290byBvdXRfbG9hZF9jYWNoZTsKKysgICAgICAgIH0KKyAgICAg fQorIAorICAgICBpZiAobl9zZXFzICYmIHZhcmlhbnRfZGF0YSkgeworQEAgLTExNjgsNiArMTE5 NSw3IEBAIGlidXNfY29tcG9zZV90YWJsZV9kZXNlcmlhbGl6ZSAoY29uc3QgY2hhciAqY29udGVu dHMsCisgICAgICAgICByZXR2YWwtPmRhdGEgPSBkYXRhOworICAgICByZXR2YWwtPm1heF9zZXFf bGVuID0gbWF4X3NlcV9sZW47CisgICAgIHJldHZhbC0+bl9zZXFzID0gbl9zZXFzOworKyAgICBy ZXR2YWwtPmNhbl9sb2FkX2VuX3VzID0gY29tcG9zZV90eXBlID8gVFJVRSA6IEZBTFNFOworIAor ICAgICBpZiAobl9zZXFzXzMyYml0ICYmICFzZWNvbmRfc2l6ZSkgeworICAgICAgICAgZ193YXJu aW5nICgiMzJiaXQga2V5IHNlcXVlbmNlcyBhcmUgbG9hZGVkIGJ1dCB0aGUgdmFsdWVzICIgXAor QEAgLTExOTIsNyArMTIyMCw3IEBAIGlidXNfY29tcG9zZV90YWJsZV9kZXNlcmlhbGl6ZSAoY29u c3QgY2hhciAqY29udGVudHMsCisgICAgICAgICAgICAgZ290byBvdXRfbG9hZF9jYWNoZTsKKyAg ICAgICAgIH0KKyAgICAgfQorLSAgICBpZiAoIWRhdGEgJiYgIWRhdGFfMzJiaXRfZmlyc3QpIHsK KysgICAgaWYgKCFkYXRhICYmICFkYXRhXzMyYml0X2ZpcnN0ICYmICFjb21wb3NlX3R5cGUpIHsK KyAgICAgICAgIGdfd2FybmluZyAoImNhY2hlIGRhdGEgaXMgbnVsbC4iKTsKKyAgICAgICAgIGdv dG8gb3V0X2xvYWRfY2FjaGU7CisgICAgIH0KK0BAIC0xMjM1LDcgKzEyNjMsOCBAQCBvdXRfbG9h ZF9jYWNoZToKKyAKKyAKKyBJQnVzQ29tcG9zZVRhYmxlRXggKgorLWlidXNfY29tcG9zZV90YWJs ZV9sb2FkX2NhY2hlIChjb25zdCBnY2hhciAqY29tcG9zZV9maWxlKQorK2lidXNfY29tcG9zZV90 YWJsZV9sb2FkX2NhY2hlIChjb25zdCBnY2hhciAqY29tcG9zZV9maWxlLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBndWludDE2ICAgICAqc2F2ZWRfdmVyc2lvbikKKyB7CisgICAg IElCdXNDb21wb3NlVGFibGVFeCAqcmV0dmFsID0gTlVMTDsKKyAgICAgZ3VpbnQzMiBoYXNoOwor QEAgLTEyNDYsNiArMTI3NSw4IEBAIGlidXNfY29tcG9zZV90YWJsZV9sb2FkX2NhY2hlIChjb25z dCBnY2hhciAqY29tcG9zZV9maWxlKQorICAgICBnc2l6ZSBsZW5ndGggPSAwOworICAgICBHRXJy b3IgKmVycm9yID0gTlVMTDsKKyAKKysgICAgZ19hc3NlcnQgKHNhdmVkX3ZlcnNpb24pOworKyAg ICAqc2F2ZWRfdmVyc2lvbiA9IDA7CisgICAgIGRvIHsKKyAgICAgICAgIGhhc2ggPSBnX3N0cl9o YXNoIChjb21wb3NlX2ZpbGUpOworICAgICAgICAgaWYgKChwYXRoID0gaWJ1c19jb21wb3NlX2hh c2hfZ2V0X2NhY2hlX3BhdGggKGhhc2gpKSA9PSBOVUxMKQorQEAgLTEyNzAsNyArMTMwMSw5IEBA IGlidXNfY29tcG9zZV90YWJsZV9sb2FkX2NhY2hlIChjb25zdCBnY2hhciAqY29tcG9zZV9maWxl KQorICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorIAorLSAgICAgICAgcmV0dmFsID0g aWJ1c19jb21wb3NlX3RhYmxlX2Rlc2VyaWFsaXplIChjb250ZW50cywgbGVuZ3RoKTsKKysgICAg ICAgIHJldHZhbCA9IGlidXNfY29tcG9zZV90YWJsZV9kZXNlcmlhbGl6ZSAoY29udGVudHMsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZWRf dmVyc2lvbik7CisgICAgICAgICBpZiAocmV0dmFsID09IE5VTEwpIHsKKyAgICAgICAgICAgICBn X3dhcm5pbmcgKCJGYWlsZWQgdG8gbG9hZCB0aGUgY2FjaGUgZmlsZTogJXMiLCBwYXRoKTsKKyAg ICAgICAgIH0gZWxzZSB7CitAQCAtMTM2OSw3ICsxNDAyLDcgQEAgaWJ1c19jb21wb3NlX3RhYmxl X25ld193aXRoX2xpc3QgKEdMaXN0ICAgKmNvbXBvc2VfbGlzdCwKKyAgICAgSUJ1c0NvbXBvc2VE YXRhICpjb21wb3NlX2RhdGEgPSBOVUxMOworICAgICBJQnVzQ29tcG9zZVRhYmxlRXggKnJldHZh bCA9IE5VTEw7CisgCistICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChjb21wb3NlX2xpc3QgIT0g TlVMTCwgTlVMTCk7CisrICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChjb21wb3NlX2xpc3QsIE5V TEwpOworIAorICAgICBzX3NpemVfdG90YWwgPSBnX2xpc3RfbGVuZ3RoIChjb21wb3NlX2xpc3Qp OworICAgICBzX3NpemVfMTZiaXQgPSBzX3NpemVfdG90YWw7CitAQCAtMTQ5OCw2ICsxNTMxLDcg QEAgaWJ1c19jb21wb3NlX3RhYmxlX25ld193aXRoX2xpc3QgKEdMaXN0ICAgKmNvbXBvc2VfbGlz dCwKKyAgICAgcmV0dmFsLT5uX3NlcXMgPSBzX3NpemVfMTZiaXQ7CisgICAgIHJldHZhbC0+aWQg PSBoYXNoOworICAgICByZXR2YWwtPnJhd2RhdGEgPSByYXdkYXRhOworKyAgICByZXR2YWwtPmNh bl9sb2FkX2VuX3VzID0gRkFMU0U7CisgICAgIGlmIChzX3NpemVfdG90YWwgPiBzX3NpemVfMTZi aXQpIHsKKyAgICAgICAgIHJldHZhbC0+cHJpdiA9IGdfbmV3MCAoSUJ1c0NvbXBvc2VUYWJsZVBy aXZhdGUsIDEpOworICAgICAgICAgcmV0dmFsLT5wcml2LT5kYXRhX2ZpcnN0ID0gaWJ1c19jb21w b3NlX3NlcXNfMzJiaXRfZmlyc3Q7CitAQCAtMTUxNSw2ICsxNTQ5LDggQEAgaWJ1c19jb21wb3Nl X3RhYmxlX25ld193aXRoX2ZpbGUgKGNvbnN0IGdjaGFyICpjb21wb3NlX2ZpbGUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdTTGlzdCAgICAgICpjb21wb3NlX3RhYmxlcykK KyB7CisgICAgIEdMaXN0ICpjb21wb3NlX2xpc3QgPSBOVUxMOworKyAgICBnYm9vbGVhbiBjYW5f bG9hZF9lbl91cyA9IEZBTFNFOworKyAgICBnYm9vbGVhbiBjYW5fbG9hZF9lbl91c19ieV9hbnkg PSBGQUxTRTsKKyAgICAgSUJ1c0NvbXBvc2VUYWJsZUV4ICpjb21wb3NlX3RhYmxlOworICAgICBp bnQgbWF4X2NvbXBvc2VfbGVuID0gMDsKKyAgICAgaW50IG5faW5kZXhfc3RyaWRlID0gMDsKK0BA IC0xNTIyLDEzICsxNTU4LDI5IEBAIGlidXNfY29tcG9zZV90YWJsZV9uZXdfd2l0aF9maWxlIChj b25zdCBnY2hhciAqY29tcG9zZV9maWxlLAorICAgICBnX2Fzc2VydCAoY29tcG9zZV9maWxlICE9 IE5VTEwpOworIAorICAgICBjb21wb3NlX2xpc3QgPSBpYnVzX2NvbXBvc2VfbGlzdF9wYXJzZV9m aWxlIChjb21wb3NlX2ZpbGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZtYXhfY29tcG9zZV9sZW4pOworLSAgICBpZiAoY29tcG9zZV9saXN0ID09 IE5VTEwpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZtYXhfY29tcG9zZV9sZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZjYW5fbG9hZF9lbl91cyk7CisrICAgIGlmIChjb21wb3NlX2xpc3QgPT0g TlVMTCAmJiAhY2FuX2xvYWRfZW5fdXMpCisgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgbl9p bmRleF9zdHJpZGUgPSBtYXhfY29tcG9zZV9sZW4gKyAyOworLSAgICBjb21wb3NlX2xpc3QgPSBp YnVzX2NvbXBvc2VfbGlzdF9jaGVja19kdXBsaWNhdGVkX3dpdGhfZW4gKGNvbXBvc2VfbGlzdCwK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtYXhfY29tcG9zZV9sZW4sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9zZV90YWJsZXMpOworKyAgICBj YW5fbG9hZF9lbl91c19ieV9hbnkgPSBjYW5fbG9hZF9lbl91czsKKysgICAgaWYgKCFjYW5fbG9h ZF9lbl91c19ieV9hbnkpIHsKKysgICAgICAgIEdTTGlzdCAqbCA9IGNvbXBvc2VfdGFibGVzOwor KyAgICAgICAgd2hpbGUgKGwpIHsKKysgICAgICAgICAgICBJQnVzQ29tcG9zZVRhYmxlRXggKnRh YmxlID0gbC0+ZGF0YTsKKysgICAgICAgICAgICBpZiAodGFibGUtPmNhbl9sb2FkX2VuX3VzKSB7 CisrICAgICAgICAgICAgICAgIGNhbl9sb2FkX2VuX3VzX2J5X2FueSA9IFRSVUU7CisrICAgICAg ICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBsID0gbC0+bmV4 dDsKKysgICAgICAgIH0KKysgICAgfQorKyAgICBpZiAoY2FuX2xvYWRfZW5fdXNfYnlfYW55KSB7 CisrICAgICAgICBjb21wb3NlX2xpc3QgPSBpYnVzX2NvbXBvc2VfbGlzdF9jaGVja19kdXBsaWNh dGVkX3dpdGhfZW4gKAorKyAgICAgICAgICAgICAgICBjb21wb3NlX2xpc3QsCisrICAgICAgICAg ICAgICAgIG1heF9jb21wb3NlX2xlbiwKKysgICAgICAgICAgICAgICAgY29tcG9zZV90YWJsZXMp OworKyAgICB9CisgICAgIGNvbXBvc2VfbGlzdCA9IGdfbGlzdF9zb3J0X3dpdGhfZGF0YSAoCisg ICAgICAgICAgICAgY29tcG9zZV9saXN0LAorICAgICAgICAgICAgIChHQ29tcGFyZURhdGFGdW5j KSBpYnVzX2NvbXBvc2VfZGF0YV9jb21wYXJlLAorQEAgLTE1MzksOCArMTU5MSwxOSBAQCBpYnVz X2NvbXBvc2VfdGFibGVfbmV3X3dpdGhfZmlsZSAoY29uc3QgZ2NoYXIgKmNvbXBvc2VfZmlsZSwK KyAgICAgICAgICAgICBtYXhfY29tcG9zZV9sZW4pOworIAorICAgICBpZiAoY29tcG9zZV9saXN0 ID09IE5VTEwpIHsKKy0gICAgICAgIGdfd2FybmluZyAoImNvbXBvc2UgZmlsZSAlcyBkb2VzIG5v dCBpbmNsdWRlIGFueSBrZXlzIGJlc2lkZXMga2V5cyAiCistICAgICAgICAgICAgICAgICAgICJp biBlbi11cyBjb21wb3NlIGZpbGUiLCBjb21wb3NlX2ZpbGUpOworKyAgICAgICAgZ19tZXNzYWdl ICgiY29tcG9zZSBmaWxlICVzIGRvZXMgbm90IGluY2x1ZGUgYW55IGtleXMgYmVzaWRlcyBrZXlz ICIKKysgICAgICAgICAgICAgICAgICAgImluIGVuLXVzIGNvbXBvc2UgZmlsZS5cbiIsIGNvbXBv c2VfZmlsZSk7CisrICAgICAgICBpZiAoY2FuX2xvYWRfZW5fdXMpIHsKKysgICAgICAgICAgICBp ZiAoIShjb21wb3NlX3RhYmxlID0gZ19uZXcwIChJQnVzQ29tcG9zZVRhYmxlRXgsIDEpKSkgewor KyAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKCJGYWlsZWQgdG8gYWxsb2MgSUJ1c0NvbXBvc2VU YWJsZUV4IGZvciAlcy4iLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb3NlX2Zp bGUpOworKyAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgIGNvbXBvc2VfdGFi bGUtPmlkID0gZ19zdHJfaGFzaCAoY29tcG9zZV9maWxlKTsKKysgICAgICAgICAgICAgICAgY29t cG9zZV90YWJsZS0+Y2FuX2xvYWRfZW5fdXMgPSBjYW5fbG9hZF9lbl91czsKKysgICAgICAgICAg ICAgICAgcmV0dXJuIGNvbXBvc2VfdGFibGU7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQor KworICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgIH0KKyAKK0BAIC0xNTUyLDYgKzE2MTUsOCBA QCBpYnVzX2NvbXBvc2VfdGFibGVfbmV3X3dpdGhfZmlsZSAoY29uc3QgZ2NoYXIgKmNvbXBvc2Vf ZmlsZSwKKyAgICAgICAgICAgICBtYXhfY29tcG9zZV9sZW4sCisgICAgICAgICAgICAgbl9pbmRl eF9zdHJpZGUsCisgICAgICAgICAgICAgZ19zdHJfaGFzaCAoY29tcG9zZV9maWxlKSk7CisrICAg IGlmIChjb21wb3NlX3RhYmxlKQorKyAgICAgICAgY29tcG9zZV90YWJsZS0+Y2FuX2xvYWRfZW5f dXMgPSBjYW5fbG9hZF9lbl91czsKKyAKKyAgICAgZ19saXN0X2ZyZWVfZnVsbCAoY29tcG9zZV9s aXN0LAorICAgICAgICAgICAgICAgICAgICAgICAoR0Rlc3Ryb3lOb3RpZnkpIGlidXNfY29tcG9z ZV9saXN0X2VsZW1lbnRfZnJlZSk7CitAQCAtMTU2MCw2ICsxNjI1LDczIEBAIGlidXNfY29tcG9z ZV90YWJsZV9uZXdfd2l0aF9maWxlIChjb25zdCBnY2hhciAqY29tcG9zZV9maWxlLAorIH0KKyAK KyAKKyt2b2lkCisraWJ1c19jb21wb3NlX3RhYmxlX2ZyZWUgKElCdXNDb21wb3NlVGFibGVFeCAq Y29tcG9zZV90YWJsZSkKKyt7CisrICAgIGdfcmV0dXJuX2lmX2ZhaWwgKGNvbXBvc2VfdGFibGUp OworKyAgICBnX2NsZWFyX3BvaW50ZXIgKCZjb21wb3NlX3RhYmxlLT5wcml2LCBnX2ZyZWUpOwor KyAgICBjb21wb3NlX3RhYmxlLT5kYXRhID0gTlVMTDsKKysgICAgY29tcG9zZV90YWJsZS0+bWF4 X3NlcV9sZW4gPSAwOworKyAgICBjb21wb3NlX3RhYmxlLT5uX3NlcXMgPSAwOworKyAgICBjb21w b3NlX3RhYmxlLT5pZCA9IDA7CisrICAgIGdfY2xlYXJfcG9pbnRlciAoJmNvbXBvc2VfdGFibGUt PnJhd2RhdGEsIGdfZnJlZSk7CisrICAgIGNvbXBvc2VfdGFibGUtPmNhbl9sb2FkX2VuX3VzID0g RkFMU0U7CisrICAgIGdfZnJlZSAoY29tcG9zZV90YWJsZSk7CisrCisrfQorKworKworK3N0YXRp YyBnYm9vbGVhbgorK3Jld3JpdGVfY29tcG9zZV9maWxlIChjb25zdCBjaGFyICpjb21wb3NlX2Zp bGUpCisreworKyAgICBzdGF0aWMgY29uc3QgY2hhciAqcHJlZml4ID0KKysgICAgICAgICAgICAi IyBJQnVzIGhhcyByZXdyaXR0ZW4gdGhpcyBmaWxlIHRvIGFkZCB0aGUgbGluZTpcbiIKKysgICAg ICAgICAgICAiXG4iCisrICAgICAgICAgICAgImluY2x1ZGUgXCIlTFwiXG4iCisrICAgICAgICAg ICAgIlxuIgorKyAgICAgICAgICAgICIjIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGFkZCB5b3VyIG93 biBDb21wb3NlIHNlcXVlbmNlc1xuIgorKyAgICAgICAgICAgICIjIGluIGFkZGl0aW9uIHRvIHRo ZSBidWlsdGluIHNlcXVlbmNlcyBvZiBJQnVzLiBJZiB0aGlzXG4iCisrICAgICAgICAgICAgIiMg aXMgbm90IHdoYXQgeW91IHdhbnQsIGp1c3QgcmVtb3ZlIHRoYXQgbGluZS5cbiIKKysgICAgICAg ICAgICAiI1xuIgorKyAgICAgICAgICAgICIjIEEgYmFja3VwIG9mIHRoZSBwcmV2aW91cyBmaWxl IGNvbnRlbnRzIGhhcyBiZWVuIG1hZGUuXG4iCisrICAgICAgICAgICAgIlxuIgorKyAgICAgICAg ICAgICJcbiI7CisrCisrICAgIGNoYXIgKmNvbnRlbnQgPSBOVUxMOworKyAgICBnc2l6ZSBjb250 ZW50X2xlbjsKKysgICAgR0ZpbGUgKmZpbGUgPSBOVUxMOworKyAgICBHT3V0cHV0U3RyZWFtICpz dHJlYW0gPSBOVUxMOworKyAgICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKKysKKysgICAgaWYgKCFn X2ZpbGVfZ2V0X2NvbnRlbnRzIChjb21wb3NlX2ZpbGUsICZjb250ZW50LCAmY29udGVudF9sZW4s IE5VTEwpKQorKyAgICAgICAgZ290byBvdXQ7CisrCisrICAgIGZpbGUgPSBnX2ZpbGVfbmV3X2Zv cl9wYXRoIChjb21wb3NlX2ZpbGUpOworKyAgICBzdHJlYW0gPSBHX09VVFBVVF9TVFJFQU0gKGdf ZmlsZV9yZXBsYWNlIChmaWxlLCBOVUxMLCBUUlVFLCAwLCBOVUxMLCBOVUxMKSk7CisrCisrICAg IGlmIChzdHJlYW0gPT0gTlVMTCkKKysgICAgICAgIGdvdG8gb3V0OworKworKyAgICBpZiAoIWdf b3V0cHV0X3N0cmVhbV93cml0ZSAoc3RyZWFtLCBwcmVmaXgsIHN0cmxlbiAocHJlZml4KSwgTlVM TCwgTlVMTCkpCisrICAgICAgICBnb3RvIG91dDsKKysKKysgICAgaWYgKCFnX291dHB1dF9zdHJl YW1fd3JpdGUgKHN0cmVhbSwgY29udGVudCwgY29udGVudF9sZW4sIE5VTEwsIE5VTEwpKQorKyAg ICAgICAgZ290byBvdXQ7CisrCisrICAgIGlmICghZ19vdXRwdXRfc3RyZWFtX2Nsb3NlIChzdHJl YW0sIE5VTEwsIE5VTEwpKQorKyAgICAgICAgZ290byBvdXQ7CisrCisrICAgIHJldCA9IFRSVUU7 CisrCisrb3V0OgorKyAgICBnX2NsZWFyX29iamVjdCAoJnN0cmVhbSk7CisrICAgIGdfY2xlYXJf b2JqZWN0ICgmZmlsZSk7CisrICAgIGdfY2xlYXJfcG9pbnRlciAoJmNvbnRlbnQsIGdfZnJlZSk7 CisrCisrICAgIHJldHVybiByZXQ7CisrfQorKworKworIC8qIGlmIGlidXNfY29tcG9zZV9zZXFz W04gLSAxXSBpcyBhbiBvdXRwdXRlZCBjb21wb3NlIGNoYXJhY3RlciwKKyAgKiBpYnVzX2NvbXBv c2Vfc2Vxc1tOICogMiAtIDFdIGlzIGFsc28gYW4gb3V0cHV0ZWQgY29tcG9zZSBjaGFyYWN0ZXIu CisgICogYW5kIGlidXNfY29tcG9zZV9zZXFzWzBdIHRvIGlidXNfY29tcG9zZV9zZXFzWzAgKyBO IC0gM10gYXJlIHRoZQorQEAgLTE2MDksMTMgKzE3NDEsMTcgQEAgaWJ1c19jb21wb3NlX3RhYmxl X2xpc3RfYWRkX2FycmF5IChHU0xpc3QgICAgICAgICpjb21wb3NlX3RhYmxlcywKKyAKKyBHU0xp c3QgKgorIGlidXNfY29tcG9zZV90YWJsZV9saXN0X2FkZF9maWxlIChHU0xpc3QgICAgICAqY29t cG9zZV90YWJsZXMsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj aGFyICpjb21wb3NlX2ZpbGUpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGdjaGFyICpjb21wb3NlX2ZpbGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdFcnJvciAgICAgKiplcnJvcikKKyB7CisgICAgIGd1aW50MzIgaGFzaDsKKyAgICAgSUJ1 c0NvbXBvc2VUYWJsZUV4ICpjb21wb3NlX3RhYmxlOworKyAgICBndWludDE2IHNhdmVkX3ZlcnNp b24gPSAwOworIAorLSAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoY29tcG9zZV9maWxlICE9IE5V TEwsIGNvbXBvc2VfdGFibGVzKTsKKysgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGNvbXBvc2Vf ZmlsZSwgY29tcG9zZV90YWJsZXMpOworKyAgICBnX2Fzc2VydCAoZXJyb3IpOworIAorKyAgICAq ZXJyb3IgPSBOVUxMOworICAgICBoYXNoID0gZ19zdHJfaGFzaCAoY29tcG9zZV9maWxlKTsKKyAg ICAgaWYgKGdfc2xpc3RfZmluZF9jdXN0b20gKGNvbXBvc2VfdGFibGVzLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgR0lOVF9UT19QT0lOVEVSIChoYXNoKSwKK0BAIC0xNjIzLDE1ICsx NzU5LDYxIEBAIGlidXNfY29tcG9zZV90YWJsZV9saXN0X2FkZF9maWxlIChHU0xpc3QgICAgICAq Y29tcG9zZV90YWJsZXMsCisgICAgICAgICByZXR1cm4gY29tcG9zZV90YWJsZXM7CisgICAgIH0K KyAKKy0gICAgY29tcG9zZV90YWJsZSA9IGlidXNfY29tcG9zZV90YWJsZV9sb2FkX2NhY2hlIChj b21wb3NlX2ZpbGUpOworKyAgICBjb21wb3NlX3RhYmxlID0gaWJ1c19jb21wb3NlX3RhYmxlX2xv YWRfY2FjaGUgKGNvbXBvc2VfZmlsZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmc2F2ZWRfdmVyc2lvbik7CisgICAgIGlmIChjb21wb3NlX3Rh YmxlICE9IE5VTEwpCisgICAgICAgICByZXR1cm4gZ19zbGlzdF9wcmVwZW5kIChjb21wb3NlX3Rh YmxlcywgY29tcG9zZV90YWJsZSk7CisgCistICAgaWYgKChjb21wb3NlX3RhYmxlID0gaWJ1c19j b21wb3NlX3RhYmxlX25ld193aXRoX2ZpbGUgKGNvbXBvc2VfZmlsZSwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9zZV90YWJs ZXMpKQorK3BhcnNlOgorKyAgICBpZiAoKGNvbXBvc2VfdGFibGUgPSBpYnVzX2NvbXBvc2VfdGFi bGVfbmV3X3dpdGhfZmlsZSAoY29tcG9zZV9maWxlLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9zZV90YWJsZXMpKQorICAg ICAgICAgICAgPT0gTlVMTCkgeworLSAgICAgICByZXR1cm4gY29tcG9zZV90YWJsZXM7CistICAg fQorKyAgICAgICAgcmV0dXJuIGNvbXBvc2VfdGFibGVzOworKyAgICB9CisrICAgIGlmIChzYXZl ZF92ZXJzaW9uID4gMCAmJiBzYXZlZF92ZXJzaW9uIDwgNSAmJgorKyAgICAgICAgIWNvbXBvc2Vf dGFibGUtPmNhbl9sb2FkX2VuX3VzICYmIGNvbXBvc2VfdGFibGUtPm5fc2VxcyA8IDEwMCkgewor KyAgICAgICAgaWYgKHJld3JpdGVfY29tcG9zZV9maWxlIChjb21wb3NlX2ZpbGUpKSB7CisrICAg ICAgICAgICAgZ19hc3NlcnQgKCgqZXJyb3IpID09IE5VTEwpOworKyAgICAgICAgICAgICplcnJv ciA9IGdfZXJyb3JfbmV3ICgKKysgICAgICAgICAgICAgICAgICAgIElCVVNfQ09NUE9TRV9FUlJP UiwKKysgICAgICAgICAgICAgICAgICAgIElCVVNfRU5HSU5FX01TR19DT0RFX1VQREFURV9DT01Q T1NFX1RBQkxFLAorKyAgICAgICAgICAgICAgICAgICAgXygiU2luY2UgSUJ1cyAxLjUuMzMsIENv bXBvc2UgZmlsZXMgcmVwbGFjZSB0aGUgIgorKyAgICAgICAgICAgICAgICAgICAgImJ1aWx0aW5c biIKKysgICAgICAgICAgICAgICAgICAgICJjb21wb3NlIHNlcXVlbmNlcy4gVG8ga2VlcCB0aGVt IGFuZCBhZGQgeW91ciBvd25cbiIKKysgICAgICAgICAgICAgICAgICAgICJzZXF1ZW5jZXMgb24g dG9wLCB0aGUgbGluZTpcbiIKKysgICAgICAgICAgICAgICAgICAgICJcbiIKKysgICAgICAgICAg ICAgICAgICAgICIgIGluY2x1ZGUgXCIlJUxcIlxuIgorKyAgICAgICAgICAgICAgICAgICAgIlxu IgorKyAgICAgICAgICAgICAgICAgICAgImhhcyBiZWVuIGFkZGVkIHRvIHRoZSBDb21wb3NlIGZp bGU6XG4lcy5cbiIpLAorKyAgICAgICAgICAgICAgICAgICAgY29tcG9zZV9maWxlKTsKKysgICAg ICAgICAgICBpYnVzX2NvbXBvc2VfdGFibGVfZnJlZSAoY29tcG9zZV90YWJsZSk7CisrICAgICAg ICAgICAgZ290byBwYXJzZTsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgZ2NoYXIg KmVycm9yX21lc3NhZ2UxOworKyAgICAgICAgICAgIGdjaGFyICplcnJvcl9tZXNzYWdlMjsKKysg ICAgICAgICAgICBpZiAoKmVycm9yKSB7CisrICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2Ux ID0gZ19zdHJkdXBfcHJpbnRmICgiJXNcbiIsICgqZXJyb3IpLT5tZXNzYWdlKTsKKysgICAgICAg ICAgICAgICAgZ19lcnJvcl9mcmVlICgqZXJyb3IpOworKyAgICAgICAgICAgIH0gZWxzZSB7Cisr ICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UxID0gZ19zdHJkdXAgKCIiKTsKKysgICAgICAg ICAgICB9CisrICAgICAgICAgICAgZXJyb3JfbWVzc2FnZTIgPSBnX3N0cmR1cF9wcmludGYgKAor KyAgICAgICAgICAgICAgICAgICAgXygiU2luY2UgSUJ1cyAxLjUuMzMsIENvbXBvc2UgZmlsZXMg cmVwbGFjZSB0aGUgIgorKyAgICAgICAgICAgICAgICAgICAgImJ1aWx0aW5cbiIKKysgICAgICAg ICAgICAgICAgICAgICJjb21wb3NlIHNlcXVlbmNlcy4gVG8ga2VlcCB0aGVtIGFuZCBhZGQgeW91 ciBvd25cbiIKKysgICAgICAgICAgICAgICAgICAgICJzZXF1ZW5jZXMgb24gdG9wLCB5b3UgbmVl ZCB0byBhZGQgdGhlIGxpbmU6XG4iCisrICAgICAgICAgICAgICAgICAgICAiXG4iCisrICAgICAg ICAgICAgICAgICAgICAiICBpbmNsdWRlIFwiJSVMXCJcbiIKKysgICAgICAgICAgICAgICAgICAg ICJcbiIKKysgICAgICAgICAgICAgICAgICAgICJ0byB0aGUgQ29tcG9zZSBmaWxlOlxuJXMuIiks IGNvbXBvc2VfZmlsZSk7CisrICAgICAgICAgICAgKmVycm9yID0gZ19lcnJvcl9uZXcgKAorKyAg ICAgICAgICAgICAgICAgICAgSUJVU19DT01QT1NFX0VSUk9SLAorKyAgICAgICAgICAgICAgICAg ICAgSUJVU19FTkdJTkVfTVNHX0NPREVfVVBEQVRFX0NPTVBPU0VfVEFCTEUsCisrICAgICAgICAg ICAgICAgICAgICAiJXMlcyIsIGVycm9yX21lc3NhZ2UxLCBlcnJvcl9tZXNzYWdlMik7CisrICAg ICAgICAgICAgZ19mcmVlIChlcnJvcl9tZXNzYWdlMSk7CisrICAgICAgICAgICAgZ19mcmVlIChl cnJvcl9tZXNzYWdlMik7CisrICAgICAgICB9CisrICAgIH0KKyAKKyAgICAgaWJ1c19jb21wb3Nl X3RhYmxlX3NhdmVfY2FjaGUgKGNvbXBvc2VfdGFibGUpOworICAgICByZXR1cm4gZ19zbGlzdF9w cmVwZW5kIChjb21wb3NlX3RhYmxlcywgY29tcG9zZV90YWJsZSk7CitAQCAtMjA3NCwzICsyMjU2 LDEwIEBAIGlidXNfa2V5c3ltX3RvX3VuaWNvZGUgKGd1aW50ICAgICBrZXlzeW0sCisgI3VuZGVm IENBU0VfQ09NQklORQorICN1bmRlZiBDQVNFX0tFWVNZTQorIH0KKysKKysKKytHUXVhcmsKKytp YnVzX2NvbXBvc2VfZXJyb3JfcXVhcmsgKHZvaWQpCisreworKyAgcmV0dXJuIGdfcXVhcmtfZnJv bV9zdGF0aWNfc3RyaW5nICgiaWJ1cy1jb21wb3NlLWVycm9yLXF1YXJrIik7CisrfQorZGlmZiAt LWdpdCBhL3NyYy9pYnVzY29tcG9zZXRhYmxlLmggYi9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5oCitp bmRleCAzMmUzMzdmNy4uMjA2ODY1N2QgMTAwNjQ0CistLS0gYS9zcmMvaWJ1c2NvbXBvc2V0YWJs ZS5oCisrKysgYi9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5oCitAQCAtMiw3ICsyLDcgQEAKKyAvKiB2 aW06c2V0IGV0IHN0cz00OiAqLworIC8qIGlidXMgLSBUaGUgSW5wdXQgQnVzCisgICogQ29weXJp Z2h0IChDKSAyMDEzLTIwMTQgUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+Cist ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjMgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJh MUBnbWFpbC5jb20+CisrICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjUgVGFrYW8gRnVqaXdhcmEg PHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CisgICoKKyAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICogbW9kaWZ5IGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworQEAgLTIz LDggKzIzLDE5IEBACisgI2lmbmRlZiBfX0lCVVNfQ09NUE9TRVRBQkxFX0hfCisgI2RlZmluZSBf X0lCVVNfQ09NUE9TRVRBQkxFX0hfCisgCistI2luY2x1ZGUgPGdsaWIuaD4KKysvKioKKysgKiBT RUNUSU9OOiBpYnVzY29tcG9zZXRhYmxlCisrICogQHNob3J0X2Rlc2NyaXB0aW9uOiBDb21wb3Nl IHRhYmxlIGhhbmRsaW5nIGJhc2VkIG9uIGxpYlgxMQorKyAqIEB0aXRsZTogSUJ1c0NvbXBvc2VU YWJsZQorKyAqIEBzdGFiaWxpdHk6IFVuc3RhYmxlCisrICoKKysgKiBHZW5lcmF0ZSAjSUJ1c0Nv bXBvc2VUYWJsZUV4IHdpdGggdGhlIGNvbXBvc2UgZmlsZSBvciBhcnJheS4KKysgKgorKyAqIHNl ZV9hbHNvOiAjSUJ1c0VuZ2luZVNpbXBsZQorKyAqCisrICovCisgCisrI2luY2x1ZGUgPGdsaWIu aD4KKyAKKyBHX0JFR0lOX0RFQ0xTCisgCitAQCAtNTMsNiArNjQsNyBAQCBzdHJ1Y3QgX0lCdXND b21wb3NlVGFibGVFeAorICAgICBnaW50IG5fc2VxczsKKyAgICAgZ3VpbnQzMiBpZDsKKyAgICAg Y2hhciAqcmF3ZGF0YTsKKysgICAgZ2Jvb2xlYW4gY2FuX2xvYWRfZW5fdXM7CisgfTsKKyAKKyAK K0BAIC03MSw4ICs4MywxMSBAQCBJQnVzQ29tcG9zZVRhYmxlRXggKgorICAgICAgICAgICAgICAg ICAgIGlidXNfY29tcG9zZV90YWJsZV9uZXdfd2l0aF9maWxlIChjb25zdCBnY2hhciAqY29tcG9z ZV9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHU0xpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqY29tcG9zZV90YWJsZXMpOworK3ZvaWQgICAgICAgICAgICAg ICBpYnVzX2NvbXBvc2VfdGFibGVfZnJlZSAgICAgICAgIChJQnVzQ29tcG9zZVRhYmxlRXgKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKmNvbXBvc2VfdGFibGUpOworIElCdXNDb21wb3NlVGFibGVFeCAqCistICAgICAgICAg ICAgICAgICAgaWJ1c19jb21wb3NlX3RhYmxlX2xvYWRfY2FjaGUgICAgKGNvbnN0IGdjaGFyICpj b21wb3NlX2ZpbGUpOworKyAgICAgICAgICAgICAgICAgIGlidXNfY29tcG9zZV90YWJsZV9sb2Fk X2NhY2hlICAgIChjb25zdCBnY2hhciAqY29tcG9zZV9maWxlLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDE2ICAgICAqc2F2ZWRfdmVy c2lvbik7Cisgdm9pZCAgICAgICAgICAgICAgaWJ1c19jb21wb3NlX3RhYmxlX3NhdmVfY2FjaGUg ICAgKElCdXNDb21wb3NlVGFibGVFeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY29tcG9zZV90YWJsZSk7CisgR1NMaXN0 ICogICAgICAgICAgaWJ1c19jb21wb3NlX3RhYmxlX2xpc3RfYWRkX2FycmF5CitAQCAtODQsNyAr OTksOCBAQCBHU0xpc3QgKiAgICAgICAgICBpYnVzX2NvbXBvc2VfdGFibGVfbGlzdF9hZGRfYXJy YXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z2ludCAgICAgICAgIG5fc2Vxcyk7CisgR1NMaXN0ICogICAgICAgICAgaWJ1c19jb21wb3NlX3Rh YmxlX2xpc3RfYWRkX2ZpbGUgKEdTTGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY29tcG9zZV90YWJsZXMsCistICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj aGFyICpjb21wb3NlX2ZpbGUpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqY29tcG9zZV9maWxlLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICoqZXJy b3IpOworIEdTTGlzdCAqICAgICAgICAgIGlidXNfY29tcG9zZV90YWJsZV9saXN0X2FkZF90YWJs ZSAoR1NMaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICpjb21wb3NlX3RhYmxlcywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNDb21wb3NlVGFibGVFeAorZGlm ZiAtLWdpdCBhL3NyYy9pYnVzZW5naW5lLmggYi9zcmMvaWJ1c2VuZ2luZS5oCitpbmRleCBjZGM5 NjMzMS4uNmQwYzFkMWYgMTAwNjQ0CistLS0gYS9zcmMvaWJ1c2VuZ2luZS5oCisrKysgYi9zcmMv aWJ1c2VuZ2luZS5oCitAQCAtNzEsNiArNzEsOCBAQCBHX0JFR0lOX0RFQ0xTCisgICogQElCVVNf RU5HSU5FX01TR19DT0RFX0dFTkVSQUw6IEdlbmVyaWMgbWVzc2FnZSBmb3IgRW5naW5lCisgICog QElCVVNfRU5HSU5FX01TR19DT0RFX0lOVkFMSURfQ09NUE9TRV9TRVFVRU5DRTogVXNlcidzIHR5 cGluZyBmYWlsdXJlCisgICogICAgICAgICBhZ2FpbnN0IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBj b21wb3NlIGZpbGVzLgorKyAqIEBJQlVTX0VOR0lORV9NU0dfQ09ERV9VUERBVEVfQ09NUE9TRV9U QUJMRTogTm90aWZpY2F0aW9uIGFib3V0IG5ldworKyAqIGJlaGF2aW9ycyBvciBhdHRlbnRpb25z IHdoZW4gdGhlIGNvbXBvc2UgdGFibGUgdmVyc2lvbiBpcyBjaGFuZ2VkLgorICAqCisgICogTWVz c2FnZSBjb2RlcyBpbiB0aGUgYElCdXNNZXNzYWdlRG9tYWluYCBkb21haW4gZm9yIEVuZ2luZQor ICAqIFNlZSBhbHNvICNJQnVzTWVzc2FnZSwgaWJ1c19lbmdpbmVfc2VuZF9tZXNzYWdlKCkKK0BA IC04MSw3ICs4Myw4IEBAIEdfQkVHSU5fREVDTFMKKyB0eXBlZGVmIGVudW0KKyB7CisgICBJQlVT X0VOR0lORV9NU0dfQ09ERV9HRU5FUkFMLAorLSAgSUJVU19FTkdJTkVfTVNHX0NPREVfSU5WQUxJ RF9DT01QT1NFX1NFUVVFTkNFCisrICBJQlVTX0VOR0lORV9NU0dfQ09ERV9JTlZBTElEX0NPTVBP U0VfU0VRVUVOQ0UsCisrICBJQlVTX0VOR0lORV9NU0dfQ09ERV9VUERBVEVfQ09NUE9TRV9UQUJM RQorIH0gSUJ1c0VuZ2luZU1zZ0NvZGU7CisgCisgdHlwZWRlZiBzdHJ1Y3QgX0lCdXNFbmdpbmUg SUJ1c0VuZ2luZTsKK2RpZmYgLS1naXQgYS9zcmMvaWJ1c2VuZ2luZXNpbXBsZS5jIGIvc3JjL2li dXNlbmdpbmVzaW1wbGUuYworaW5kZXggNzg0ZWQxODAuLmYxMTRkYThjIDEwMDY0NAorLS0tIGEv c3JjL2lidXNlbmdpbmVzaW1wbGUuYworKysrIGIvc3JjL2lidXNlbmdpbmVzaW1wbGUuYworQEAg LTEzOSw2ICsxMzksNyBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfY2xhc3NfaW5pdCAoSUJ1c0VuZ2lu ZVNpbXBsZUNsYXNzICpjbGFzcykKKyAgICAgR0Vycm9yICplcnJvciA9IE5VTEw7CisgICAgIGNv bnN0IGNoYXIgKmNvbnRlbnRzOworICAgICBnc2l6ZSBsZW5ndGggPSAwOworKyAgICBndWludDE2 IHNhdmVkX3ZlcnNpb24gPSAwOworIAorICAgICBpYnVzX29iamVjdF9jbGFzcy0+ZGVzdHJveSA9 CisgICAgICAgICAoSUJ1c09iamVjdERlc3Ryb3lGdW5jKSBpYnVzX2VuZ2luZV9zaW1wbGVfZGVz dHJveTsKK0BAIC0xNjgsNyArMTY5LDE0IEBAIGlidXNfZW5naW5lX3NpbXBsZV9jbGFzc19pbml0 IChJQnVzRW5naW5lU2ltcGxlQ2xhc3MgKmNsYXNzKQorICAgICAgICAgcmV0dXJuOworICAgICB9 CisgICAgIGNvbnRlbnRzID0gZ19ieXRlc19nZXRfZGF0YSAoZGF0YSwgJmxlbmd0aCk7CistICAg IGVuX2NvbXBvc2VfdGFibGUgPSBpYnVzX2NvbXBvc2VfdGFibGVfZGVzZXJpYWxpemUgKGNvbnRl bnRzLCBsZW5ndGgpOworKyAgICBlbl9jb21wb3NlX3RhYmxlID0gaWJ1c19jb21wb3NlX3RhYmxl X2Rlc2VyaWFsaXplIChjb250ZW50cywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2F2ZWRfdmVyc2lvbik7CisrICAgIGlm ICghZW5fY29tcG9zZV90YWJsZSAmJiBzYXZlZF92ZXJzaW9uKSB7CisrICAgICAgICBnX3dhcm5p bmcgKCJGYWlsZWQgdG8gcGFyc2UgdGhlIGJ1aWx0aW4gY29tcG9zZSBkdWUgdG8gdGhlIGRpZmZl cmVudCAiCisrICAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uICV1LiBQbGVhc2UgcmVidWlsZCBJ QnVzIHJlc291cmNlIGZpbGVzLiIsCisrICAgICAgICAgICAgICAgICAgIHNhdmVkX3ZlcnNpb24p OworKyAgICB9CisgfQorIAorIAorQEAgLTIzNyw3ICsyNDUsOCBAQCBpYnVzX2VuZ2luZV9zaW1w bGVfZGVzdHJveSAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlKQorIAorIHN0YXRpYyB2b2lkCisg aWJ1c19lbmdpbmVfc2ltcGxlX3NlbmRfbWVzc2FnZV93aXRoX2NvZGUgKElCdXNFbmdpbmVTaW1w bGUgKnNpbXBsZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg SUJ1c0VuZ2luZU1zZ0NvZGUgY29kZSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSUJ1c0VuZ2luZU1zZ0NvZGUgY29kZSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAqZXJyb3IpCisgeworICAg ICBJQnVzRW5naW5lU2ltcGxlUHJpdmF0ZSAqcHJpdjsKKyAgICAgSUJ1c01lc3NhZ2UgKm1lc3Nh Z2U7CitAQCAtMjQ1LDE4ICsyNTQsMzMgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3NlbmRfbWVzc2Fn ZV93aXRoX2NvZGUgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwKKyAgICAgZ19yZXR1cm5faWZf ZmFpbCAoSUJVU19JU19FTkdJTkVfU0lNUExFIChzaW1wbGUpKTsKKyAKKyAgICAgcHJpdiA9IHNp bXBsZS0+cHJpdjsKKy0gICAgcHJpdi0+ZG9faW5mb3JtX3VzZXJfZXJyb3IgPSBUUlVFOworLSAg ICBtZXNzYWdlID0gaWJ1c19tZXNzYWdlX25ldyAoCistICAgICAgICAgICAgSUJVU19NRVNTQUdF X0RPTUFJTl9FTkdJTkUsCistICAgICAgICAgICAgY29kZSwKKy0gICAgICAgICAgICBfKCJEZXRl Y3QgdW5yZWdpc3RlcmVkIGNoYXJhY3RlciBpbiB5b3VyIGNvbXBvc2Ugc2VxdWVuY2UiKSwKKy0g ICAgICAgICAgICBfKCJUaGUgY2hhcmFjdGVyIHlvdSBqdXN0IGlucHV0IGlzIG5vdCByZWNvZ25p emVkIGFzIGEgdmFsaWQgIiBcCistICAgICAgICAgICAgICAicGFydCBvZiB0aGUgY3VycmVudGx5 IGFjdGl2ZSBjb21wb3NlIHNlcXVlbmNlIGFuZCB0aGUgIiBcCistICAgICAgICAgICAgICAiY2hh cmFjdGVyIHdhcyBjYW5jZWxsZWQuIFRyeSBpbnB1dHRpbmcgdGhlIGNvcnJlY3QgY2hhcmFjdGVy ICIgXAorLSAgICAgICAgICAgICAgInRvIHRoZSBjb21wb3NlIHNlcXVlbmNlIGFnYWluLCBvciBw cmVzcyBFc2NhcGUga2V5IHRvICIgXAorLSAgICAgICAgICAgICAgInRlcm1pbmF0ZSB3aG9sZSB0 aGUgY29tcG9zZSBzZXF1ZW5jZS4iKSwKKy0gICAgICAgICAgICAgInRpbWVvdXQiLCA1LAorLSAg ICAgICAgICAgICBOVUxMKTsKKysgICAgc3dpdGNoIChjb2RlKSB7CisrICAgIGNhc2UgSUJVU19F TkdJTkVfTVNHX0NPREVfSU5WQUxJRF9DT01QT1NFX1NFUVVFTkNFOgorKyAgICAgICAgcHJpdi0+ ZG9faW5mb3JtX3VzZXJfZXJyb3IgPSBUUlVFOworKyAgICAgICAgbWVzc2FnZSA9IGlidXNfbWVz c2FnZV9uZXcgKAorKyAgICAgICAgICAgICAgICBJQlVTX01FU1NBR0VfRE9NQUlOX0VOR0lORSwK KysgICAgICAgICAgICAgICAgY29kZSwKKysgICAgICAgICAgICAgICAgXygiRGV0ZWN0IHVucmVn aXN0ZXJlZCBjaGFyYWN0ZXIgaW4geW91ciBjb21wb3NlIHNlcXVlbmNlIiksCisrICAgICAgICAg ICAgICAgIF8oIlRoZSBjaGFyYWN0ZXIgeW91IGp1c3QgaW5wdXQgaXMgbm90IHJlY29nbml6ZWQg YXMgYSB2YWxpZCAiIFwKKysgICAgICAgICAgICAgICAgICAicGFydCBvZiB0aGUgY3VycmVudGx5 IGFjdGl2ZSBjb21wb3NlIHNlcXVlbmNlIGFuZCB0aGUgIiBcCisrICAgICAgICAgICAgICAgICAg ImNoYXJhY3RlciB3YXMgY2FuY2VsbGVkLiBUcnkgaW5wdXR0aW5nIHRoZSBjb3JyZWN0ICIgXAor KyAgICAgICAgICAgICAgICAgICJjaGFyYWN0ZXIgdG8gdGhlIGNvbXBvc2Ugc2VxdWVuY2UgYWdh aW4sIG9yIHByZXNzIEVzY2FwZSAiIFwKKysgICAgICAgICAgICAgICAgICAia2V5IHRvIHRlcm1p bmF0ZSB3aG9sZSB0aGUgY29tcG9zZSBzZXF1ZW5jZS4iKSwKKysgICAgICAgICAgICAgICAgICAi dGltZW91dCIsIDUsCisrICAgICAgICAgICAgICAgICAgTlVMTCk7CisrICAgICAgICBicmVhazsK KysgICAgY2FzZSBJQlVTX0VOR0lORV9NU0dfQ09ERV9VUERBVEVfQ09NUE9TRV9UQUJMRToKKysg ICAgICAgIG1lc3NhZ2UgPSBpYnVzX21lc3NhZ2VfbmV3ICgKKysgICAgICAgICAgICAgICAgSUJV U19NRVNTQUdFX0RPTUFJTl9FTkdJTkUsCisrICAgICAgICAgICAgICAgIGNvZGUsCisrICAgICAg ICAgICAgICAgIF8oIkNvbXBvc2UgZmlsZSB1cGRhdGUiKSwKKysgICAgICAgICAgICAgICAgZXJy b3IgPyBlcnJvci0+bWVzc2FnZSA6ICIiLAorKyAgICAgICAgICAgICAgICAidGltZW91dCIsIDEy MCwKKysgICAgICAgICAgICAgICAgTlVMTCk7CisrICAgICAgICBicmVhazsKKysgICAgZGVmYXVs dDoKKysgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOworKyAgICB9CisgICAgIGlidXNf ZW5naW5lX3NlbmRfbWVzc2FnZSAoSUJVU19FTkdJTkUgKHNpbXBsZSksIG1lc3NhZ2UpOworIH0K KyAKK0BAIC04MTQsNyArODM4LDggQEAgbm9fc2VxdWVuY2VfbWF0Y2hlcyAoSUJ1c0VuZ2luZVNp bXBsZSAqc2ltcGxlLAorICAgICAgICAgICAgIC8qIEludmFsaWQgc2VxdWVuY2UgKi8KKyAgICAg ICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfc2VuZF9tZXNzYWdlX3dpdGhfY29kZSAoCisgICAg ICAgICAgICAgICAgICAgICBzaW1wbGUsCistICAgICAgICAgICAgICAgICAgICBJQlVTX0VOR0lO RV9NU0dfQ09ERV9JTlZBTElEX0NPTVBPU0VfU0VRVUVOQ0UpOworKyAgICAgICAgICAgICAgICAg ICAgSUJVU19FTkdJTkVfTVNHX0NPREVfSU5WQUxJRF9DT01QT1NFX1NFUVVFTkNFLAorKyAgICAg ICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX3Vw ZGF0ZV9wcmVlZGl0X3RleHQgKHNpbXBsZSk7CisgICAgICAgICAgICAgcmV0dXJuIFRSVUU7Cisg ICAgICAgICB9CitAQCAtOTU4LDYgKzk4Myw3IEBAIGlidXNfZW5naW5lX3NpbXBsZV9jaGVja19h bGxfY29tcG9zZV90YWJsZSAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlLAorICAgICBHU3RyaW5n ICpvdXRwdXQgPSBnX3N0cmluZ19uZXcgKCIiKTsKKyAgICAgZ2Jvb2xlYW4gc3VjY2VzcyA9IEZB TFNFOworICAgICBnYm9vbGVhbiBpc18zMmJpdCA9IEZBTFNFOworKyAgICBnYm9vbGVhbiBjYW5f bG9hZF9lbl91cyA9IEZBTFNFOworICAgICBndW5pY2hhciBvdXRwdXRfY2hhciA9ICdcMCc7Cisg CisgICAgIC8qIEd0a0lNQ29udGV4dFNpbXBsZSBvdXRwdXQgdGhlIGZpcnN0IGNvbXBvc2UgY2hh ciBpbiBjYXNlIG9mCitAQCAtOTY5LDI3ICs5OTUsNDAgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX2No ZWNrX2FsbF9jb21wb3NlX3RhYmxlIChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCisgICAgIEdf TE9DSyAoZ2xvYmFsX3RhYmxlcyk7CisgICAgIHRtcF9saXN0ID0gZ2xvYmFsX3RhYmxlczsKKyAg ICAgd2hpbGUgKHRtcF9saXN0KSB7CisrICAgICAgICBJQnVzQ29tcG9zZVRhYmxlRXggKmNvbXBv c2VfdGFibGUgPSB0bXBfbGlzdC0+ZGF0YTsKKysgICAgICAgIGlmIChjb21wb3NlX3RhYmxlLT5j YW5fbG9hZF9lbl91cykKKysgICAgICAgICAgICBjYW5fbG9hZF9lbl91cyA9IFRSVUU7CisrICAg ICAgICAvKiBJZiBnbG9iYWxfdGFibGVzIGluY2x1ZGVzIGVuX2NvbXBvc2VfdGFibGUgb25seSwg aS5lLiBubyB1c2VyCisrICAgICAgICAgKiBvciBsb2NhbGUgY29tcG9zZSB0YWJsZXMsIGVuX2Nv bXBvc2VfdGFibGUgaXMgdXNlZC4KKysgICAgICAgICAqIElmIG5vdCwgZW5fY29tcG9zZV90YWJs ZSBpcyB1c2VkIGluIGNhc2Ugb25lIG9mIHRoZSBvdGhlciBjb21wb3NlCisrICAgICAgICAgKiB0 YWJsZXMgaGFzIGNhbl9sb2FkX2VuX3VzID0gJVRSVUUsIGkuZS4gdGhlIHRhYmxlIGZpbGUgaGFz CisrICAgICAgICAgKiB0aGUgbGluZSBvZiAnaW5jbHVkZSAiJUwiJy4KKysgICAgICAgICAqIGVu X2NvbXBvc2VfdGFibGUgaXMgYWx3YXlzIGFwcGVuZGVkIHRvIHRoZSBsYXN0IG9mIGdsb2JhbF90 YWJsZXMuCisrICAgICAgICAgKi8KKysgICAgICAgIGlmICgoY29tcG9zZV90YWJsZSA9PSBlbl9j b21wb3NlX3RhYmxlKSAmJiBnbG9iYWxfdGFibGVzLT5uZXh0ICE9IE5VTEwKKysgICAgICAgICAg ICAmJiAhY2FuX2xvYWRfZW5fdXMpIHsKKysgICAgICAgICAgICB0bXBfbGlzdCA9IHRtcF9saXN0 LT5uZXh0OworKyAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgfQorICAgICAgICAgaXNf MzJiaXQgPSBGQUxTRTsKKy0gICAgICAgIGlmIChpYnVzX2NvbXBvc2VfdGFibGVfY2hlY2sgKAor LSAgICAgICAgICAgIChJQnVzQ29tcG9zZVRhYmxlRXggKil0bXBfbGlzdC0+ZGF0YSwKKy0gICAg ICAgICAgICBwcml2LT5jb21wb3NlX2J1ZmZlciwKKy0gICAgICAgICAgICBuX2NvbXBvc2UsCist ICAgICAgICAgICAgJmNvbXBvc2VfZmluaXNoLAorLSAgICAgICAgICAgICZjb21wb3NlX21hdGNo LAorLSAgICAgICAgICAgIG91dHB1dCwKKy0gICAgICAgICAgICBpc18zMmJpdCkpIHsKKysgICAg ICAgIGlmIChpYnVzX2NvbXBvc2VfdGFibGVfY2hlY2sgKGNvbXBvc2VfdGFibGUsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5jb21wb3NlX2J1ZmZlciwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fY29tcG9zZSwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb21wb3NlX2ZpbmlzaCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb21wb3NlX21hdGNoLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaXNfMzJiaXQpKSB7CisgICAgICAgICAgICAgc3VjY2VzcyA9 IFRSVUU7CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CisgICAgICAgICBpc18zMmJp dCA9IFRSVUU7CistICAgICAgICBpZiAoaWJ1c19jb21wb3NlX3RhYmxlX2NoZWNrICgKKy0gICAg ICAgICAgICAoSUJ1c0NvbXBvc2VUYWJsZUV4ICopdG1wX2xpc3QtPmRhdGEsCistICAgICAgICAg ICAgcHJpdi0+Y29tcG9zZV9idWZmZXIsCistICAgICAgICAgICAgbl9jb21wb3NlLAorLSAgICAg ICAgICAgICZjb21wb3NlX2ZpbmlzaCwKKy0gICAgICAgICAgICAmY29tcG9zZV9tYXRjaCwKKy0g ICAgICAgICAgICBvdXRwdXQsCistICAgICAgICAgICAgaXNfMzJiaXQpKSB7CisrICAgICAgICBp ZiAoaWJ1c19jb21wb3NlX3RhYmxlX2NoZWNrIChjb21wb3NlX3RhYmxlLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+Y29tcG9zZV9idWZmZXIsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX2NvbXBvc2UsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tcG9zZV9maW5pc2gsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tcG9zZV9tYXRjaCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlzXzMyYml0KSkgeworICAgICAgICAgICAgIHN1Y2Nlc3MgPSBUUlVF OworICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorQEAgLTEwOTUsNyArMTEzNCw4IEBA IGlidXNfZW5naW5lX3NpbXBsZV9wcm9jZXNzX2tleV9ldmVudCAoSUJ1c0VuZ2luZSAqZW5naW5l LAorICAgICAgICAgICAgICAgICAvKiBpbnZhbGlkIGhleCBzZXF1ZW5jZSAqLworICAgICAgICAg ICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfc2VuZF9tZXNzYWdlX3dpdGhfY29kZSAoCisgICAg ICAgICAgICAgICAgICAgICAgICAgc2ltcGxlLAorLSAgICAgICAgICAgICAgICAgICAgICAgIElC VVNfRU5HSU5FX01TR19DT0RFX0lOVkFMSURfQ09NUE9TRV9TRVFVRU5DRSk7CisrICAgICAgICAg ICAgICAgICAgICAgICAgSUJVU19FTkdJTkVfTVNHX0NPREVfSU5WQUxJRF9DT01QT1NFX1NFUVVF TkNFLAorKyAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICAgICAgICAgICBn X3N0cmluZ19zZXRfc2l6ZSAocHJpdi0+dGVudGF0aXZlX21hdGNoLCAwKTsKKyAgICAgICAgICAg ICAgICAgZ19jbGVhcl9wb2ludGVyICgmcHJpdi0+dGVudGF0aXZlX2Vtb2ppLCBnX2ZyZWUpOwor ICAgICAgICAgICAgICAgICBwcml2LT5pbl9oZXhfc2VxdWVuY2UgPSBGQUxTRTsKK0BAIC0xMTIw LDcgKzExNjAsOCBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfcHJvY2Vzc19rZXlfZXZlbnQgKElCdXNF bmdpbmUgKmVuZ2luZSwKKyAgICAgICAgICAgICAgICAgLyogaW52YWxpZCBoZXggc2VxdWVuY2Ug Ki8KKyAgICAgICAgICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX3NlbmRfbWVzc2FnZV93aXRo X2NvZGUgKAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpbXBsZSwKKy0gICAgICAgICAgICAg ICAgICAgICAgICBJQlVTX0VOR0lORV9NU0dfQ09ERV9JTlZBTElEX0NPTVBPU0VfU0VRVUVOQ0Up OworKyAgICAgICAgICAgICAgICAgICAgICAgIElCVVNfRU5HSU5FX01TR19DT0RFX0lOVkFMSURf Q09NUE9TRV9TRVFVRU5DRSwKKysgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAg ICAgICAgICAgICAgZ19zdHJpbmdfc2V0X3NpemUgKHByaXYtPnRlbnRhdGl2ZV9tYXRjaCwgMCk7 CisgICAgICAgICAgICAgICAgIGdfY2xlYXJfcG9pbnRlciAoJnByaXYtPnRlbnRhdGl2ZV9lbW9q aSwgZ19mcmVlKTsKKyAgICAgICAgICAgICAgICAgcHJpdi0+aW5faGV4X3NlcXVlbmNlID0gRkFM U0U7CitAQCAtMTE3MSw3ICsxMjEyLDggQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3Byb2Nlc3Nfa2V5 X2V2ZW50IChJQnVzRW5naW5lICplbmdpbmUsCisgICAgICAgICAgICAgLyogaW52YWxpZCBoZXgg c2VxdWVuY2UgKi8KKyAgICAgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfc2VuZF9tZXNzYWdl X3dpdGhfY29kZSAoCisgICAgICAgICAgICAgICAgICAgICBzaW1wbGUsCistICAgICAgICAgICAg ICAgICAgICBJQlVTX0VOR0lORV9NU0dfQ09ERV9JTlZBTElEX0NPTVBPU0VfU0VRVUVOQ0UpOwor KyAgICAgICAgICAgICAgICAgICAgSUJVU19FTkdJTkVfTVNHX0NPREVfSU5WQUxJRF9DT01QT1NF X1NFUVVFTkNFLAorKyAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgICAgICAgZ19z dHJpbmdfc2V0X3NpemUgKHByaXYtPnRlbnRhdGl2ZV9tYXRjaCwgMCk7CisgICAgICAgICAgICAg Z19jbGVhcl9wb2ludGVyICgmcHJpdi0+dGVudGF0aXZlX2Vtb2ppLCBnX2ZyZWUpOworICAgICAg ICAgICAgIHByaXYtPmluX2hleF9zZXF1ZW5jZSA9IEZBTFNFOworQEAgLTEyNzIsNyArMTMxNCw4 IEBAIGlidXNfZW5naW5lX3NpbXBsZV9wcm9jZXNzX2tleV9ldmVudCAoSUJ1c0VuZ2luZSAqZW5n aW5lLAorICAgICAgICAgICAgIGlmIChuX2NvbXBvc2UgPiAwKSB7CisgICAgICAgICAgICAgICAg IGlidXNfZW5naW5lX3NpbXBsZV9zZW5kX21lc3NhZ2Vfd2l0aF9jb2RlICgKKyAgICAgICAgICAg ICAgICAgICAgICAgICBzaW1wbGUsCistICAgICAgICAgICAgICAgICAgICAgICAgSUJVU19FTkdJ TkVfTVNHX0NPREVfSU5WQUxJRF9DT01QT1NFX1NFUVVFTkNFKTsKKysgICAgICAgICAgICAgICAg ICAgICAgICBJQlVTX0VOR0lORV9NU0dfQ09ERV9JTlZBTElEX0NPTVBPU0VfU0VRVUVOQ0UsCisr ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgICAgICAgICAgIGdfc3RyaW5n X3NldF9zaXplIChwcml2LT50ZW50YXRpdmVfbWF0Y2gsIDApOworICAgICAgICAgICAgICAgICBw cml2LT5pbl9oZXhfc2VxdWVuY2UgPSBGQUxTRTsKKyAgICAgICAgICAgICAgICAgcHJpdi0+Y29t cG9zZV9idWZmZXJbMF0gPSAwOworQEAgLTEzMzksNyArMTM4Miw4IEBAIGlidXNfZW5naW5lX3Np bXBsZV9wcm9jZXNzX2tleV9ldmVudCAoSUJ1c0VuZ2luZSAqZW5naW5lLAorICAgICAgICAgICAg IC8qIG5vbi1oZXggY2hhcmFjdGVyIGluIGhleCBzZXF1ZW5jZSAqLworICAgICAgICAgICAgIGli dXNfZW5naW5lX3NpbXBsZV9zZW5kX21lc3NhZ2Vfd2l0aF9jb2RlICgKKyAgICAgICAgICAgICAg ICAgICAgIHNpbXBsZSwKKy0gICAgICAgICAgICAgICAgICAgIElCVVNfRU5HSU5FX01TR19DT0RF X0lOVkFMSURfQ09NUE9TRV9TRVFVRU5DRSk7CisrICAgICAgICAgICAgICAgICAgICBJQlVTX0VO R0lORV9NU0dfQ09ERV9JTlZBTElEX0NPTVBPU0VfU0VRVUVOQ0UsCisrICAgICAgICAgICAgICAg ICAgICBOVUxMKTsKKyAgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgIH0KKyAgICAg fSBlbHNlIGlmIChwcml2LT5pbl9lbW9qaV9zZXF1ZW5jZSkgeworQEAgLTE0MDAsNyArMTQ0NCw4 IEBAIGlidXNfZW5naW5lX3NpbXBsZV9wcm9jZXNzX2tleV9ldmVudCAoSUJ1c0VuZ2luZSAqZW5n aW5lLAorICAgICAgICAgICAgICAgICAgICAgLyogaW52YWxpZCBoZXggc2VxdWVuY2UgKi8KKyAg ICAgICAgICAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV9zZW5kX21lc3NhZ2Vfd2l0aF9j b2RlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ltcGxlLAorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJQlVTX0VOR0lORV9NU0dfQ09ERV9JTlZBTElEX0NPTVBPU0VfU0VR VUVOQ0UpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQlVTX0VOR0lORV9NU0dfQ09E RV9JTlZBTElEX0NPTVBPU0VfU0VRVUVOQ0UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg IE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgZ19zdHJpbmdfc2V0X3NpemUgKHByaXYtPnRl bnRhdGl2ZV9tYXRjaCwgMCk7CisgICAgICAgICAgICAgICAgICAgICBwcml2LT5pbl9oZXhfc2Vx dWVuY2UgPSBGQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgIHByaXYtPmNvbXBvc2VfYnVmZmVy WzBdID0gMDsKK0BAIC0xNDA4LDcgKzE0NTMsOCBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfcHJvY2Vz c19rZXlfZXZlbnQgKElCdXNFbmdpbmUgKmVuZ2luZSwKKyAgICAgICAgICAgICB9IGVsc2UgaWYg KCFjaGVja19oZXggKHNpbXBsZSwgbl9jb21wb3NlKSkgeworICAgICAgICAgICAgICAgICBpYnVz X2VuZ2luZV9zaW1wbGVfc2VuZF9tZXNzYWdlX3dpdGhfY29kZSAoCisgICAgICAgICAgICAgICAg ICAgICAgICAgc2ltcGxlLAorLSAgICAgICAgICAgICAgICAgICAgICAgIElCVVNfRU5HSU5FX01T R19DT0RFX0lOVkFMSURfQ09NUE9TRV9TRVFVRU5DRSk7CisrICAgICAgICAgICAgICAgICAgICAg ICAgSUJVU19FTkdJTkVfTVNHX0NPREVfSU5WQUxJRF9DT01QT1NFX1NFUVVFTkNFLAorKyAgICAg ICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBp YnVzX2VuZ2luZV9zaW1wbGVfdXBkYXRlX3ByZWVkaXRfdGV4dCAoc2ltcGxlKTsKKyAKK0BAIC0x NTAzLDcgKzE1NDksOCBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfcHJvY2Vzc19rZXlfZXZlbnQgKElC dXNFbmdpbmUgKmVuZ2luZSwKKyAgICAgICAgICAgICBnX2Fzc2VydCAobl9jb21wb3NlIDwgKENP TVBPU0VfQlVGRkVSX1NJWkUgKyAxKSk7CisgICAgICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxl X3NlbmRfbWVzc2FnZV93aXRoX2NvZGUgKAorICAgICAgICAgICAgICAgICAgICAgc2ltcGxlLAor LSAgICAgICAgICAgICAgICAgICAgSUJVU19FTkdJTkVfTVNHX0NPREVfSU5WQUxJRF9DT01QT1NF X1NFUVVFTkNFKTsKKysgICAgICAgICAgICAgICAgICAgIElCVVNfRU5HSU5FX01TR19DT0RFX0lO VkFMSURfQ09NUE9TRV9TRVFVRU5DRSwKKysgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAg ICAgICAgICAgIGJhY2t1cF9jaGFyID0gcHJpdi0+Y29tcG9zZV9idWZmZXJbbl9jb21wb3NlXTsK KyAgICAgICAgICAgICBwcml2LT5jb21wb3NlX2J1ZmZlcltuX2NvbXBvc2VdID0gMDsKKyAgICAg ICAgICAgICBpZiAoaWJ1c19lbmdpbmVfc2ltcGxlX2NoZWNrX2FsbF9jb21wb3NlX3RhYmxlIChz aW1wbGUsIG5fY29tcG9zZSkpCitAQCAtMTcwMyw5ICsxNzUwLDE5IEBAIGdib29sZWFuCisgaWJ1 c19lbmdpbmVfc2ltcGxlX2FkZF9jb21wb3NlX2ZpbGUgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBs ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAg ICAqY29tcG9zZV9maWxlKQorIHsKKy0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKElCVVNfSVNf RU5HSU5FX1NJTVBMRSAoc2ltcGxlKSwgVFJVRSk7CisrICAgIEdFcnJvciAqZXJyb3IgPSBOVUxM OworKworKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19FTkdJTkVfU0lNUExFIChz aW1wbGUpLCBGQUxTRSk7CisgCisgICAgIGdsb2JhbF90YWJsZXMgPSBpYnVzX2NvbXBvc2VfdGFi bGVfbGlzdF9hZGRfZmlsZSAoZ2xvYmFsX3RhYmxlcywKKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb3NlX2ZpbGUpOworKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvc2VfZmls ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmZXJyb3IpOworKyAgICBpZiAoZXJyb3IpIHsKKysgICAgICAgIGdfd2FybmluZyAoIlxuJXNc biIsIGVycm9yLT5tZXNzYWdlKTsKKysgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV9zZW5kX21l c3NhZ2Vfd2l0aF9jb2RlIChzaW1wbGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZXJyb3ItPmNvZGUsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IpOworKyAgICAgICAgZ19lcnJvcl9m cmVlIChlcnJvcik7CisrICAgIH0KKyAgICAgcmV0dXJuIFRSVUU7CisgfQorZGlmZiAtLWdpdCBh L3NyYy9pYnVzZW5naW5lc2ltcGxlcHJpdmF0ZS5oIGIvc3JjL2lidXNlbmdpbmVzaW1wbGVwcml2 YXRlLmgKK2luZGV4IGVjNzY0ZmE3Li45YzU4YzAzZCAxMDA2NDQKKy0tLSBhL3NyYy9pYnVzZW5n aW5lc2ltcGxlcHJpdmF0ZS5oCisrKysgYi9zcmMvaWJ1c2VuZ2luZXNpbXBsZXByaXZhdGUuaAor QEAgLTI2LDYgKzI2LDE1IEBACisgCisgR19CRUdJTl9ERUNMUworIAorKy8qKgorKyAqIElCVVNf Q09NUE9TRV9FUlJPUjoKKysgKgorKyAqIFRoZSBgR1F1YXJrYCB1c2VkIGZvciBgSUJ1c0NvbXBv c2VUYWJsZUV4YCBlcnJvcnMuCisrICoKKysgKiBTaW5jZTogMS41LjMzCisrICovCisrI2RlZmlu ZSBJQlVTX0NPTVBPU0VfRVJST1IgKGlidXNfY29tcG9zZV9lcnJvcl9xdWFyayAoKSkKKysKKyAv KiBDaGVja3MgaWYgYSBrZXlzeW0gaXMgYSBkZWFkIGtleS4gRGVhZCBrZXkga2V5c3ltIHZhbHVl cyBhcmUgZGVmaW5lZCBpbgorICAqIGlidXNrZXlzeW1zLmggYW5kIHRoZSBmaXJzdCBpcyBHREtf S0VZX2RlYWRfZ3JhdmUuCisgICovCitAQCAtNDIsNiArNTEsMTMgQEAgc3RydWN0IF9JQnVzQ29t cG9zZVRhYmxlUHJpdmF0ZQorIH07CisgCisgCisrLyoqCisrICogaWJ1c19jb21wb3NlX2Vycm9y X3F1YXJrOgorKyAqCisrICogU2luY2U6IDEuNS4zMworKyAqIFN0YWJpbGl0eTogVW5zdGFibGUK KysgKi8KKytHUXVhcmsgICBpYnVzX2NvbXBvc2VfZXJyb3JfcXVhcmsgICAodm9pZCk7CisgZ3Vp bnQgICAgaWJ1c19jb21wb3NlX2tleV9mbGFnICAgICAgKGd1aW50ICAgICAgICAgICAgICAgICAg ICAgICBrZXkpOworIGdib29sZWFuIGlidXNfY2hlY2tfYWxnb3JpdGhtaWNhbGx5IChjb25zdCBn dWludCAgICAgICAgICAgICAgICAqY29tcG9zZV9idWZmZXIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICBuX2NvbXBvc2Us CitAQCAtNTQsNyArNzAsOCBAQCBHVmFyaWFudCAqCisgSUJ1c0NvbXBvc2VUYWJsZUV4ICoKKyAg ICAgICAgICBpYnVzX2NvbXBvc2VfdGFibGVfZGVzZXJpYWxpemUKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAgICAgICAgICAgICAgICAgKmNvbnRlbnRz LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnc2l6ZSAgICAgICAgICAg ICAgICAgICAgICAgbGVuZ3RoKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ3NpemUgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ3VpbnQxNiAgICAgICAgICAgICAgICAgICAgKnNhdmVkX3Zl cnNpb24pOworIGdib29sZWFuIGlidXNfY29tcG9zZV90YWJsZV9jaGVjayAgIChjb25zdCBJQnVz Q29tcG9zZVRhYmxlRXggICAqdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgICAgICpjb21wb3NlX2J1ZmZlciwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAg ICAgIG5fY29tcG9zZSwKK2RpZmYgLS1naXQgYS9zcmMvdGVzdHMvaWJ1cy1jb21wb3NlLmMgYi9z cmMvdGVzdHMvaWJ1cy1jb21wb3NlLmMKK2luZGV4IDMyNmQzYjkwLi5jMDdjMDJjNCAxMDA2NDQK Ky0tLSBhL3NyYy90ZXN0cy9pYnVzLWNvbXBvc2UuYworKysrIGIvc3JjL3Rlc3RzL2lidXMtY29t cG9zZS5jCitAQCAtMjQxLDkgKzI0MSwxMyBAQCBjcmVhdGVfZW5naW5lX2NiIChJQnVzRmFjdG9y eSAqZmFjdG9yeSwKKyAgICAgZWxzZQorICAgICAgICAgY29tcG9zZV9wYXRoID0gZ2V0X2NvbXBv c2VfcGF0aCAoKTsKKyAgICAgaWYgKGNvbXBvc2VfcGF0aCAhPSBOVUxMKSB7CisrICAgICAgICBn dWludDE2IHNhdmVkX3ZlcnNpb24gPSAwOworICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX2Fk ZF9jb21wb3NlX2ZpbGUgKElCVVNfRU5HSU5FX1NJTVBMRSAobV9lbmdpbmUpLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvc2VfcGF0aCk7CistICAg ICAgICBtX2NvbXBvc2VfdGFibGUgPSBpYnVzX2NvbXBvc2VfdGFibGVfbG9hZF9jYWNoZSAoY29t cG9zZV9wYXRoKTsKKysgICAgICAgIG1fY29tcG9zZV90YWJsZSA9IGlidXNfY29tcG9zZV90YWJs ZV9sb2FkX2NhY2hlIChjb21wb3NlX3BhdGgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNhdmVkX3ZlcnNpb24pOworKyAgICAgICAg aWYgKG1fY29tcG9zZV90YWJsZSkKKysgICAgICAgICAgICBnX2Fzc2VydCAoc2F2ZWRfdmVyc2lv bik7CisgICAgIH0KKyAgICAgZ19mcmVlIChjb21wb3NlX3BhdGgpOworICAgICByZXR1cm4gbV9l bmdpbmU7CistLSAKKzIuNDkuMAorCgpkaWZmIC0tZ2l0IGEvaWJ1cy5zcGVjIGIvaWJ1cy5zcGVj CmluZGV4IDNiZTNjODkuLjQzZjU0MDQgMTAwNjQ0Ci0tLSBhL2lidXMuc3BlYworKysgYi9pYnVz LnNwZWMKQEAgLTYzLDcgKzYzLDcgQEAKIE5hbWU6ICAgICAgICAgICBpYnVzCiBWZXJzaW9uOiAg ICAgICAgMS41LjMyCiAjIGh0dHBzOi8vZ2l0aHViLmNvbS9mZWRvcmEtaW5mcmEvcnBtYXV0b3Nw ZWMvaXNzdWVzLzEwMQotUmVsZWFzZTogICAgICAgIDElez9kaXN0fQorUmVsZWFzZTogICAgICAg IDIlez9kaXN0fQogU3VtbWFyeTogICAgICAgIEludGVsbGlnZW50IElucHV0IEJ1cyBmb3IgTGlu dXggT1MKIExpY2Vuc2U6ICAgICAgICBMR1BMLTIuMS1vci1sYXRlcgogVVJMOiAgICAgICAgICAg IGh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzLyVuYW1lL3dpa2kKQEAgLTcyLDYgKzcyLDcgQEAgU291 cmNlMTogICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzLyVuYW1lL3JlbGVhc2VzL2Rvd25s b2FkLyV7c291cmNlX3ZlcnNpb24KIFNvdXJjZTI6ICAgICAgICAle25hbWV9LXhpbnB1dAogU291 cmNlMzogICAgICAgICV7bmFtZX0uY29uZi41CiAjIFBhdGNoMDogICAgICAgICAlJXtuYW1lfS1I RUFELnBhdGNoCitQYXRjaDA6ICAgICAgICAgJXtuYW1lfS1IRUFELnBhdGNoCiAjIFVuZGVyIHRl c3RpbmcgIzEzNDkxNDggIzEzODUzNDkgIzEzNTAyOTEgIzE0MDY2OTkgIzE0MzIyNTIgIzE2MDE1 NzcKIFBhdGNoMTogICAgICAgICAle25hbWV9LTEzODUzNDktc2Vndi1idXMtcHJveHkucGF0Y2gK IApAQCAtMzU1LDkgKzM1NiwxMCBAQCBmaQogCiAlYnVpbGQKICNhdXRvcmVjb25mIC1mIC1pIC12 Ci0jbWFrZSAtQyB1aS9ndGszIG1haW50YWluZXItY2xlYW4tZ2VuZXJpYwotI21ha2UgLUMgdG9v bHMgbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljCisjbWFrZSAtQyBiaW5kaW5ncy92YWxhIG1haW50 YWluZXItY2xlYW4tZ2VuZXJpYwogI21ha2UgLUMgc3JjL2NvbXBvc2UgbWFpbnRhaW5lci1jbGVh bi1nZW5lcmljCisjbWFrZSAtQyB0b29scyBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWMKKyNtYWtl IC1DIHVpL2d0azMgbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljCiAlY29uZmlndXJlIFwKICAgICAt LWRpc2FibGUtc3RhdGljIFwKICVpZiAle3dpdGggZ3RrMn0KQEAgLTM4NCw2ICszODYsOCBAQCBm aQogICAgIC0tZW5hYmxlLWluc3RhbGwtdGVzdHMgXAogICAgICV7bmlsfQogIyBmb3IgMTM4NTM0 OS1zZWd2LWJ1cy1wcm94eS5wYXRjaAorbWFrZSAtQyBiaW5kaW5ncy92YWxhIG1haW50YWluZXIt Y2xlYW4tZ2VuZXJpYworbWFrZSAtQyB0b29scyBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWMKIG1h a2UgLUMgdWkvZ3RrMyBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWMKIAogJW1ha2VfYnVpbGQKQEAg LTYzNyw2ICs2NDEsMTQgQEAgZGNvbmYgdXBkYXRlIHx8IDoKICV7X2RhdGFkaXJ9L2luc3RhbGxl ZC10ZXN0cy9pYnVzCiAKICVjaGFuZ2Vsb2cKKyogU3VuIEp1biAwMSAyMDI1IFRha2FvIEZ1aml3 YXJhIDx0ZnVqaXdhckByZWRoYXQuY29tPiAtIDEuNS4zMi0yCistIEZpeCBFeGl0IGFuZCBSZXN0 YXJ0IG1lbnUgaXRlbXMgaW4gV2F5bGFuZCBpbnB1dC1tZXRob2QgVjIKKy0gVXBkYXRlIFBsYXNt YSBzZXR1cCBtZXNzYWdlCistIEltcGxlbWVudCBJQnVzTWVzc2FnZQorLSBJbXByb3ZlIEJFUE8g Y29tcG9zZSBzZXF1ZW5jZSB2aXN1YWxzCistIERvIG5vdCBsb2FkIGVuLVVTIGNvbXBvc2UgdGFi bGUgYnkgZGVmYXVsdAorLSBGaXggc29tZSBtZW1vcnkgbGVha3MKKwogKiBUdWUgQXByIDA4IDIw MjUgVGFrYW8gRnVqaXdhcmEgPHRmdWppd2FyQHJlZGhhdC5jb20+IC0gMS41LjMyLTEKIC0gQnVt cCB0byAxLjUuMzIKIAo=