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: Troy Dawson To: git-commits@fedoraproject.org Subject: [rpms/python-pyside6] epel10: Rebuilt for newer LLVM / Clang Date: Wed, 05 Aug 2026 16:27:51 GMT Message-ID: <178594727178.1.4555901476338030291.rpms-python-pyside6-bf80cf42902f@fedoraproject.org> List-ID: X-Git-Repo: rpms/python-pyside6 X-Git-Branch: epel10 X-Git-Rev: bf80cf42902f3267a20abff6df8f489b9a6625f0 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvcHl0aG9uLXB5c2lkZTYKICAgICAgICAgICAgQnJhbmNoIDogZXBlbDEwCiAg ICAgICAgICAgIENvbW1pdCA6IGJmODBjZjQyOTAyZjMyNjdhMjBhYmZmNmRmOGY0ODliOWE2NjI1 ZjAKICAgICAgICAgICAgQXV0aG9yIDogVHJveSBEYXdzb24gPHRkYXdzb25AcmVkaGF0LmNvbT4K ICAgICAgICAgICAgRGF0ZSAgIDogMjAyNi0wOC0wNVQwOToyNzoyMi0wNzowMAogICAgICAgICAg ICBTdGF0cyAgOiArMTE3Ni8tMSBpbiAyIGZpbGUocykKICAgICAgICAgICAgVVJMICAgIDogaHR0 cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9weXRob24tcHlzaWRlNi9jL2JmODBjZjQy OTAyZjMyNjdhMjBhYmZmNmRmOGY0ODliOWE2NjI1ZjA/YnJhbmNoPWVwZWwxMAoKICAgICAgICAg ICAgTG9nOgogICAgICAgICAgICBSZWJ1aWx0IGZvciBuZXdlciBMTFZNIC8gQ2xhbmcKCkFkZGVk IDAwMDEtc2hpYm9rZW42LUZpeC1idWlsZC13aXRoLWNsYW5nLTIyLnBhdGNoCgotLS0KZGlmZiAt LWdpdCBhLzAwMDEtc2hpYm9rZW42LUZpeC1idWlsZC13aXRoLWNsYW5nLTIyLnBhdGNoIGIvMDAw MS1zaGlib2tlbjYtRml4LWJ1aWxkLXdpdGgtY2xhbmctMjIucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZjZjNzRhZAotLS0gL2Rldi9udWxsCisrKyBiLzAwMDEtc2hp Ym9rZW42LUZpeC1idWlsZC13aXRoLWNsYW5nLTIyLnBhdGNoCkBAIC0wLDAgKzEsMTE3MCBAQAor RnJvbSAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQorRnJvbTogRnJpZWRlbWFubiBLbGVpbnQgPEZyaWVkZW1hbm4uS2xlaW50 QHF0LmlvPgorRGF0ZTogVHVlLCAyNCBNYXIgMjAyNiAxMzo0MToyNCArMDEwMAorU3ViamVjdDog W1BBVENIXSBzaGlib2tlbjY6IEZpeCBidWlsZCB3aXRoIGNsYW5nIDIyCisKK1NxdWFzaGVkIGJh Y2twb3J0IG9mIHRoZSBmb2xsb3dpbmcgdXBzdHJlYW0gY29tbWl0cyBmcm9tIHRoZSBkZXYgYnJh bmNoLAorYWRhcHRlZCB0byB0aGUgNi4xMC4zIGRpcmVjdG9yeSBzdHJ1Y3R1cmU6CisKKzJmMjVk MmEzZDogQWRkIGEgZGVmaW5lIGZvciB0aGUgTExWTSBtYWpvciB2ZXJzaW9uCis0NTIyY2I0NGI6 IFNtYWxsIHByZXBhcmF0b3J5IHJlZmFjdG9yaW5ncy9maXhlcworNDdiNTIwNzZkOiBGaXggdHlw ZSBuYW1lcworNTY1ZjhlYWQ5OiBQcmVwYXJlIGZvciBpbnRyb2R1Y2luZyBlcnJvciBoYW5kbGlu ZyB0byB0eXBlIHBhcnNpbmcKK2Q3ODUwNzJiYzogQWRkIGluZnJhc3RydWN0dXJlIGZvciBlcnJv ciBoYW5kbGluZyB0byB0aGUgdHlwZSBwYXJzaW5nCis0MDk2NWViYjI6IFJlZmFjdG9yIGZ1bmN0 aW9uIHByb3RvIHR5cGUgaGFuZGxpbmcKK2QxMmNmM2JlMzogQWRkIHNvbWUgdHlwZSBjaGVja3MK K2Y0ZDBlMTczZTogQWRkIGNsYW5nIHR5cGUgc3RydWN0CisyN2NiOWNhYTQ6IEZpeCByZXRyaWV2 aW5nIGZ1bGx5IHF1YWxpZmllZCB0eXBlIG5hbWVzIHdpdGggY2xhbmcgMjIKKworVGFzay1udW1i ZXI6IFBZU0lERS0zMjg2CistLS0KK2RpZmYgLS1naXQgYS9zb3VyY2VzL3NoaWJva2VuNi9BcGlF eHRyYWN0b3IvQ01ha2VMaXN0cy50eHQgYi9zb3VyY2VzL3NoaWJva2VuNi9BcGlFeHRyYWN0b3Iv Q01ha2VMaXN0cy50eHQKK2luZGV4IGM4N2JmNWZlYS4uN2UwNjExNmFiIDEwMDY0NAorLS0tIGEv c291cmNlcy9zaGlib2tlbjYvQXBpRXh0cmFjdG9yL0NNYWtlTGlzdHMudHh0CisrKysgYi9zb3Vy Y2VzL3NoaWJva2VuNi9BcGlFeHRyYWN0b3IvQ01ha2VMaXN0cy50eHQKK0BAIC03Nyw3ICs3Nyw4 IEBAIHhtbHV0aWxzLmNwcCB4bWx1dGlscy5oIHhtbHV0aWxzX2xpYnhzbHQuaCB4bWx1dGlsc19x dC5oCisgY2xhbmdwYXJzZXIvY2xhbmdidWlsZGVyLmNwcCBjbGFuZ3BhcnNlci9jbGFuZ2J1aWxk ZXIuaAorIGNsYW5ncGFyc2VyL2NsYW5nZGVidWd1dGlscy5jcHAgY2xhbmdwYXJzZXIvY2xhbmdk ZWJ1Z3V0aWxzLmgKKyBjbGFuZ3BhcnNlci9jbGFuZ3BhcnNlci5jcHAgY2xhbmdwYXJzZXIvY2xh bmdwYXJzZXIuaAorLWNsYW5ncGFyc2VyL2NsYW5ndXRpbHMuY3BwIGNsYW5ncGFyc2VyL2NsYW5n dXRpbHMuaAorK2NsYW5ncGFyc2VyL2NsYW5ndHlwZS5jcHAgY2xhbmdwYXJzZXIvY2xhbmd0eXBl LmgKKytjbGFuZ3BhcnNlci9jbGFuZ3V0aWxzLmNwcCBjbGFuZ3BhcnNlci9jbGFuZ3V0aWxzLmgg Y2xhbmdwYXJzZXIvY2xhbmdfdHlwZWRlZnMuaAorIGNsYW5ncGFyc2VyL2NvbXBpbGVyc3VwcG9y dC5jcHAgY2xhbmdwYXJzZXIvY29tcGlsZXJzdXBwb3J0LmgKKyAjIE9sZCBwYXJzZXIKKyBwYXJz ZXIvY29kZW1vZGVsLmNwcCBwYXJzZXIvY29kZW1vZGVsLmggcGFyc2VyL2NvZGVtb2RlbF9md2Qu aCBwYXJzZXIvY29kZW1vZGVsX2VudW1zLmgKK2RpZmYgLS1naXQgYS9zb3VyY2VzL3NoaWJva2Vu Ni9BcGlFeHRyYWN0b3IvYWJzdHJhY3RtZXRhYnVpbGRlci5jcHAgYi9zb3VyY2VzL3NoaWJva2Vu Ni9BcGlFeHRyYWN0b3IvYWJzdHJhY3RtZXRhYnVpbGRlci5jcHAKK2luZGV4IDk4MDdlMWVhNi4u ODhmZmNiMmViIDEwMDY0NAorLS0tIGEvc291cmNlcy9zaGlib2tlbjYvQXBpRXh0cmFjdG9yL2Fi c3RyYWN0bWV0YWJ1aWxkZXIuY3BwCisrKysgYi9zb3VyY2VzL3NoaWJva2VuNi9BcGlFeHRyYWN0 b3IvYWJzdHJhY3RtZXRhYnVpbGRlci5jcHAKK0BAIC00ODksNiArNDg5LDEwIEBAIEZpbGVNb2Rl bEl0ZW0gQWJzdHJhY3RNZXRhQnVpbGRlclByaXZhdGU6OmJ1aWxkRG9tKFFCeXRlQXJyYXlMaXN0 IGFyZ3VtZW50cywKKyAgICAgICAgIGZvciAocXNpemV0eXBlIGkgPSAwOyBpIDwgZGlhZ25vc3Rp Y3NDb3VudDsgKytpKQorICAgICAgICAgICAgIGQgPDwgIiAgIiA8PCBkaWFnbm9zdGljcy5hdChp KSA8PCAnXG4nOworICAgICB9CisrCisrICAgIGlmIChjb25zdCBhdXRvIHJlamVjdGVkVHlwZXMg PSBidWlsZGVyLnJlamVjdGVkVHlwZXMoKTsgIXJlamVjdGVkVHlwZXMuaXNFbXB0eSgpKQorKyAg ICAgICAgUmVwb3J0SGFuZGxlcjo6YWRkR2VuZXJhbE1lc3NhZ2UobXNnUmVqZWN0ZWRUeXBlcyhy ZWplY3RlZFR5cGVzKSk7CisrCisgICAgIHJldHVybiByZXN1bHQ7CisgfQorIAorQEAgLTI3OTUs NyArMjc5OSw3IEBAIHN0ZDo6b3B0aW9uYWw8QWJzdHJhY3RNZXRhVHlwZT4KKyAgICAgICAgIG5l d0luZm8uc2V0SW5kaXJlY3Rpb25zVih0eXBlSW5mby5pbmRpcmVjdGlvbnNWKCkpOworICAgICAg ICAgbmV3SW5mby5zZXRDb25zdGFudCh0eXBlSW5mby5pc0NvbnN0YW50KCkpOworICAgICAgICAg bmV3SW5mby5zZXRWb2xhdGlsZSh0eXBlSW5mby5pc1ZvbGF0aWxlKCkpOworLSAgICAgICAgbmV3 SW5mby5zZXRGdW5jdGlvblBvaW50ZXIodHlwZUluZm8uaXNGdW5jdGlvblBvaW50ZXIoKSk7Cisr ICAgICAgICBuZXdJbmZvLnNldFR5cGVDYXRlZ29yeSh0eXBlSW5mby50eXBlQ2F0ZWdvcnkoKSk7 CisgICAgICAgICBuZXdJbmZvLnNldFF1YWxpZmllZE5hbWUodHlwZUluZm8ucXVhbGlmaWVkTmFt ZSgpKTsKKyAgICAgICAgIG5ld0luZm8uc2V0UmVmZXJlbmNlVHlwZSh0eXBlSW5mby5yZWZlcmVu Y2VUeXBlKCkpOworICAgICAgICAgbmV3SW5mby5zZXRWb2xhdGlsZSh0eXBlSW5mby5pc1ZvbGF0 aWxlKCkpOworZGlmZiAtLWdpdCBhL3NvdXJjZXMvc2hpYm9rZW42L0FwaUV4dHJhY3Rvci9jbGFu Z3BhcnNlci9jbGFuZ190eXBlZGVmcy5oIGIvc291cmNlcy9zaGlib2tlbjYvQXBpRXh0cmFjdG9y L2NsYW5ncGFyc2VyL2NsYW5nX3R5cGVkZWZzLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRl eCAwMDAwMDAwMDAuLjQ5ZWZjMjU5MgorLS0tIC9kZXYvbnVsbAorKysrIGIvc291cmNlcy9zaGli b2tlbjYvQXBpRXh0cmFjdG9yL2NsYW5ncGFyc2VyL2NsYW5nX3R5cGVkZWZzLmgKK0BAIC0wLDAg KzEsMTkgQEAKKysvLyBDb3B5cmlnaHQgKEMpIDIwMjYgVGhlIFF0IENvbXBhbnkgTHRkLgorKy8v IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMaWNlbnNlUmVmLVF0LUNvbW1lcmNpYWwgT1IgR1BM LTMuMC1vbmx5IFdJVEggUXQtR1BMLWV4Y2VwdGlvbi0xLjAKKysKKysjaWZuZGVmIENMQU5HX1RZ UEVERUZTX0gKKysjZGVmaW5lIENMQU5HX1RZUEVERUZTX0gKKysKKysjaW5jbHVkZSA8Y2xhbmct Yy9JbmRleC5oPgorKworK25hbWVzcGFjZSBjbGFuZyB7CisrCisrI2lmIExMVk1fVkVSU0lPTiA+ PSAyMgorK3VzaW5nIFByaW50aW5nUG9saWN5ID0gQ1hQcmludGluZ1BvbGljeTsKKysjZWxzZQor K3VzaW5nIFByaW50aW5nUG9saWN5ID0gdm9pZCAqOworKyNlbmRpZgorKworK30gLy8gbmFtZXNw YWNlIGNsYW5nCisrCisrI2VuZGlmIC8vIENMQU5HX1RZUEVERUZTX0gKK2RpZmYgLS1naXQgYS9z b3VyY2VzL3NoaWJva2VuNi9BcGlFeHRyYWN0b3IvY2xhbmdwYXJzZXIvY2xhbmdidWlsZGVyLmNw cCBiL3NvdXJjZXMvc2hpYm9rZW42L0FwaUV4dHJhY3Rvci9jbGFuZ3BhcnNlci9jbGFuZ2J1aWxk ZXIuY3BwCitpbmRleCBjYzI5MjQyODcuLjc0OTYzYWE1MyAxMDA2NDQKKy0tLSBhL3NvdXJjZXMv c2hpYm9rZW42L0FwaUV4dHJhY3Rvci9jbGFuZ3BhcnNlci9jbGFuZ2J1aWxkZXIuY3BwCisrKysg Yi9zb3VyY2VzL3NoaWJva2VuNi9BcGlFeHRyYWN0b3IvY2xhbmdwYXJzZXIvY2xhbmdidWlsZGVy LmNwcAorQEAgLTQsNiArNCw3IEBACisgI2luY2x1ZGUgImNsYW5nYnVpbGRlci5oIgorICNpbmNs dWRlICJjb21waWxlcnN1cHBvcnQuaCIKKyAjaW5jbHVkZSAiY2xhbmd1dGlscy5oIgorKyNpbmNs dWRlICJjbGFuZ3R5cGUuaCIKKyAjaW5jbHVkZSAiY2xhbmdkZWJ1Z3V0aWxzLmgiCisgCisgI2lu Y2x1ZGUgPGNvZGVtb2RlbC5oPgorQEAgLTE5LDYgKzIwLDEwIEBACisgI2luY2x1ZGUgPFF0Q29y ZS9xc3RhY2suaD4KKyAjaW5jbHVkZSA8UXRDb3JlL3FsaXN0Lmg+CisgCisrI2luY2x1ZGUgPGFs Z29yaXRobT4KKysjaW5jbHVkZSA8b3B0aW9uYWw+CisrI2luY2x1ZGUgPHNldD4KKysKKyB1c2lu ZyBuYW1lc3BhY2UgUXQ6OlN0cmluZ0xpdGVyYWxzOworIAorIG5hbWVzcGFjZSBjbGFuZyB7CitA QCAtNDAsNyArNDUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgd2l0aGluQ2xhc3NEZWNsYXJhdGlv bihjb25zdCBDWEN1cnNvciAmY3Vyc29yKQorICAgICByZXR1cm4gaXNDbGFzc0N1cnNvcihjbGFu Z19nZXRDdXJzb3JMZXhpY2FsUGFyZW50KGN1cnNvcikpOworIH0KKyAKKy1zdGF0aWMgUVN0cmlu ZyBmaXhUeXBlTmFtZShRU3RyaW5nIHQpCisrc3RhdGljIFFTdHJpbmcgZml4T3BlcmF0b3JUeXBl TmFtZShRU3RyaW5nIHQpCisgeworICAgICAvLyBGaXggIkZvbyAmIiAtPiAiRm9vJiIsIHNpbWls YXJseSAiQmFyICoqIiAtPiAiQmFyKioiCisgICAgIGF1dG8gcG9zID0gdC5zaXplKCkgLSAxOwor QEAgLTE2MywxMyArMTY4LDE1IEBAIHB1YmxpYzoKKyAgICAgRnVuY3Rpb25Nb2RlbEl0ZW0gY3Jl YXRlTWVtYmVyRnVuY3Rpb24oY29uc3QgQ1hDdXJzb3IgJmN1cnNvciwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1RlbXBsYXRlQ29kZSA9IGZhbHNl KTsKKyAgICAgdm9pZCBxdWFsaWZ5Q29uc3RydWN0b3IoY29uc3QgQ1hDdXJzb3IgJmN1cnNvcik7 CistICAgIFR5cGVJbmZvIGNyZWF0ZVR5cGVJbmZvVW5jYWNoZWQoY29uc3QgQ1hUeXBlICZ0eXBl LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmNhY2hlYWJsZSA9 IG51bGxwdHIpIGNvbnN0OworLSAgICBUeXBlSW5mbyBjcmVhdGVUeXBlSW5mbyhjb25zdCBDWFR5 cGUgJnR5cGUpIGNvbnN0OworLSAgICBUeXBlSW5mbyBjcmVhdGVUeXBlSW5mbyhjb25zdCBDWEN1 cnNvciAmY3Vyc29yKSBjb25zdAorKyAgICBzdGQ6Om9wdGlvbmFsPFR5cGVJbmZvPiBjcmVhdGVU eXBlSW5mb1VuY2FjaGVkKGNvbnN0IENYVHlwZSAmdHlwZSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpjYWNoZWFibGUgPSBudWxscHRy KSBjb25zdDsKKysgICAgc3RkOjpvcHRpb25hbDxUeXBlSW5mbz4gY3JlYXRlVHlwZUluZm8oY29u c3QgQ1hUeXBlICZ0eXBlKSBjb25zdDsKKysgICAgc3RkOjpvcHRpb25hbDxUeXBlSW5mbz4gY3Jl YXRlVHlwZUluZm8oY29uc3QgQ1hDdXJzb3IgJmN1cnNvcikgY29uc3QKKyAgICAgeyByZXR1cm4g Y3JlYXRlVHlwZUluZm8oY2xhbmdfZ2V0Q3Vyc29yVHlwZShjdXJzb3IpKTsgfQorKyAgICBzdGQ6 Om9wdGlvbmFsPFR5cGVJbmZvPiBjcmVhdGVGdW5jdGlvblR5cGVJbmZvKGNvbnN0IENYVHlwZSAm dHlwZSwgVHlwZUNhdGVnb3J5IGNhdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBib29sICpjYWNoZWFibGUpIGNvbnN0OworICAgICB2b2lkIGFk ZFRlbXBsYXRlSW5zdGFudGlhdGlvbnMoY29uc3QgQ1hUeXBlICZ0eXBlLAorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyAqdHlwZU5hbWUsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRU3RyaW5nICZ0ZW1wbGF0ZVBhcmFtZXRlcnMs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlSW5mbyAqdCkgY29uc3Q7 CisgICAgIGJvb2wgYWRkVGVtcGxhdGVJbnN0YW50aWF0aW9uc1JlY3Vyc2lvbihjb25zdCBDWFR5 cGUgJnR5cGUsIFR5cGVJbmZvICp0KSBjb25zdDsKKyAKK0BAIC0xODAsNyArMTg3LDcgQEAgcHVi bGljOgorIAorICAgICBUZW1wbGF0ZVBhcmFtZXRlck1vZGVsSXRlbSBjcmVhdGVUZW1wbGF0ZVBh cmFtZXRlcihjb25zdCBDWEN1cnNvciAmY3Vyc29yKSBjb25zdDsKKyAgICAgVGVtcGxhdGVQYXJh bWV0ZXJNb2RlbEl0ZW0gY3JlYXRlTm9uVHlwZVRlbXBsYXRlUGFyYW1ldGVyKGNvbnN0IENYQ3Vy c29yICZjdXJzb3IpIGNvbnN0OworLSAgICB2b2lkIGFkZEZpZWxkKGNvbnN0IENYQ3Vyc29yICZj dXJzb3IpOworKyAgICB2b2lkIGFkZEZpZWxkKGNvbnN0IENYQ3Vyc29yICZjdXJzb3IsIGJvb2wg c3RhdGljRmllbGQgPSBmYWxzZSk7CisgCisgICAgIHN0YXRpYyBRU3RyaW5nIGN1cnNvclZhbHVl RXhwcmVzc2lvbihCYXNlVmlzaXRvciAqYnYsIGNvbnN0IENYQ3Vyc29yICZjdXJzb3IpOworICAg ICBzdGQ6OnBhaXI8UVN0cmluZywgQ2xhc3NNb2RlbEl0ZW0+IGdldEJhc2VDbGFzcyhDWFR5cGUg dHlwZSkgY29uc3Q7CitAQCAtMjIwLDYgKzIyNyw3IEBAIHB1YmxpYzoKKyAgICAgQ29kZU1vZGVs OjpGdW5jdGlvblR5cGUgbV9jdXJyZW50RnVuY3Rpb25UeXBlID0gQ29kZU1vZGVsOjpOb3JtYWw7 CisgICAgIGJvb2wgbV93aXRoaW5GcmllbmREZWNsID0gZmFsc2U7CisgICAgIG11dGFibGUgUUhh c2g8UVN0cmluZywgU3BlY2lhbFN5c3RlbUhlYWRlcj4gbV9zeXN0ZW1IZWFkZXJzOworKyAgICBt dXRhYmxlIHN0ZDo6c2V0PFFTdHJpbmc+IG1fcmVqZWN0ZWRUeXBlczsKKyB9OworIAorIGJvb2wg QnVpbGRlclByaXZhdGU6OmFkZENsYXNzKGNvbnN0IENYQ3Vyc29yICZjdXJzb3IsIENvZGVNb2Rl bDo6Q2xhc3NUeXBlIHQpCitAQCAtMzI5LDExICszMzcsMTQgQEAgRnVuY3Rpb25Nb2RlbEl0ZW0g QnVpbGRlclByaXZhdGU6OmNyZWF0ZUZ1bmN0aW9uKGNvbnN0IENYQ3Vyc29yICZjdXJzb3IsCisg ICAgIFFTdHJpbmcgbmFtZSA9IGdldEN1cnNvclNwZWxsaW5nKGN1cnNvcik7CisgICAgIC8vIEFw cGx5IHR5cGUgZml4ZXMgdG8gIm9wZXJhdG9yIFggJiIgLT4gIm9wZXJhdG9yIFgmIgorICAgICBp ZiAobmFtZS5zdGFydHNXaXRoKHUib3BlcmF0b3IgIikpCistICAgICAgICBuYW1lID0gZml4VHlw ZU5hbWUobmFtZSk7CisrICAgICAgICBuYW1lID0gZml4T3BlcmF0b3JUeXBlTmFtZShuYW1lKTsK KyAgICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2Vfc2hhcmVkPF9GdW5jdGlvbk1vZGVsSXRlbT4o bV9tb2RlbCwgbmFtZSk7CisgICAgIHNldEZpbGVOYW1lKGN1cnNvciwgcmVzdWx0LmdldCgpKTsK KyAgICAgY29uc3QgYXV0byB0eXBlID0gY2xhbmdfZ2V0Q3Vyc29yUmVzdWx0VHlwZShjdXJzb3Ip OworLSAgICByZXN1bHQtPnNldFR5cGUoY3JlYXRlVHlwZUluZm8odHlwZSkpOworKyAgICBhdXRv IHJlc3VsdFR5cGVPID0gY3JlYXRlVHlwZUluZm8odHlwZSk7CisrICAgIGlmICghcmVzdWx0VHlw ZU8uaGFzX3ZhbHVlKCkpCisrICAgICAgICByZXR1cm4ge307CisrICAgIHJlc3VsdC0+c2V0VHlw ZShyZXN1bHRUeXBlTy52YWx1ZSgpKTsKKyAgICAgcmVzdWx0LT5zZXRTY29wZVJlc29sdXRpb24o aGFzU2NvcGVSZXNvbHV0aW9uKHR5cGUpKTsKKyAgICAgcmVzdWx0LT5zZXRGdW5jdGlvblR5cGUo dCk7CisgICAgIHJlc3VsdC0+c2V0U2NvcGUobV9zY29wZSk7CitAQCAtMzkyLDYgKzQwMyw4IEBA IEZ1bmN0aW9uTW9kZWxJdGVtIEJ1aWxkZXJQcml2YXRlOjpjcmVhdGVNZW1iZXJGdW5jdGlvbihj b25zdCBDWEN1cnNvciAmY3Vyc29yLAorICAgICAgICAgOiBmdW5jdGlvblR5cGVGcm9tQ3Vyc29y KGN1cnNvcik7CisgICAgIGlzVGVtcGxhdGVDb2RlIHw9IG1fY3VycmVudENsYXNzLT5uYW1lKCku ZW5kc1dpdGgodSc+Jyk7CisgICAgIGF1dG8gcmVzdWx0ID0gY3JlYXRlRnVuY3Rpb24oY3Vyc29y LCBmdW5jdGlvblR5cGUsIGlzVGVtcGxhdGVDb2RlKTsKKysgICAgaWYgKCFyZXN1bHQpCisrICAg ICAgICByZXR1cm4gcmVzdWx0OworICAgICByZXN1bHQtPnNldEFjY2Vzc1BvbGljeShhY2Nlc3NQ b2xpY3koY2xhbmdfZ2V0Q1hYQWNjZXNzU3BlY2lmaWVyKGN1cnNvcikpKTsKKyAgICAgcmVzdWx0 LT5zZXRDb25zdGFudChjbGFuZ19DWFhNZXRob2RfaXNDb25zdChjdXJzb3IpICE9IDApOworICAg ICByZXN1bHQtPnNldEF0dHJpYnV0ZShGdW5jdGlvbkF0dHJpYnV0ZTo6U3RhdGljLCBjbGFuZ19D WFhNZXRob2RfaXNTdGF0aWMoY3Vyc29yKSAhPSAwKTsKK0BAIC00MjQsNDUgKzQzNywzMSBAQCBU ZW1wbGF0ZVBhcmFtZXRlck1vZGVsSXRlbSBCdWlsZGVyUHJpdmF0ZTo6Y3JlYXRlVGVtcGxhdGVQ YXJhbWV0ZXIoY29uc3QgQ1hDdXJzbworIAorIFRlbXBsYXRlUGFyYW1ldGVyTW9kZWxJdGVtIEJ1 aWxkZXJQcml2YXRlOjpjcmVhdGVOb25UeXBlVGVtcGxhdGVQYXJhbWV0ZXIoY29uc3QgQ1hDdXJz b3IgJmN1cnNvcikgY29uc3QKKyB7CisrICAgIGF1dG8gdHlwZU8gPSBjcmVhdGVUeXBlSW5mbyhj bGFuZ19nZXRDdXJzb3JUeXBlKGN1cnNvcikpOworKyAgICBpZiAoIXR5cGVPLmhhc192YWx1ZSgp KQorKyAgICAgICAgcmV0dXJuIHt9OworICAgICBUZW1wbGF0ZVBhcmFtZXRlck1vZGVsSXRlbSBy ZXN1bHQgPSBjcmVhdGVUZW1wbGF0ZVBhcmFtZXRlcihjdXJzb3IpOworLSAgICByZXN1bHQtPnNl dFR5cGUoY3JlYXRlVHlwZUluZm8oY2xhbmdfZ2V0Q3Vyc29yVHlwZShjdXJzb3IpKSk7CisrICAg IHJlc3VsdC0+c2V0VHlwZSh0eXBlTy52YWx1ZSgpKTsKKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9 CisgCisgLy8gQ1hDdXJzb3JfVmFyRGVjbCwgQ1hDdXJzb3JfRmllbGREZWNsIGN1cnNvcnMKKy12 b2lkIEJ1aWxkZXJQcml2YXRlOjphZGRGaWVsZChjb25zdCBDWEN1cnNvciAmY3Vyc29yKQorK3Zv aWQgQnVpbGRlclByaXZhdGU6OmFkZEZpZWxkKGNvbnN0IENYQ3Vyc29yICZjdXJzb3IsIGJvb2wg c3RhdGljRmllbGQpCisgeworKyAgICBhdXRvIHR5cGVPID0gY3JlYXRlVHlwZUluZm8oY3Vyc29y KTsKKysgICAgaWYgKCF0eXBlTy5oYXNfdmFsdWUoKSkKKysgICAgICAgIHJldHVybjsKKyAgICAg YXV0byBmaWVsZCA9IHN0ZDo6bWFrZV9zaGFyZWQ8X1ZhcmlhYmxlTW9kZWxJdGVtPihtX21vZGVs LCBnZXRDdXJzb3JTcGVsbGluZyhjdXJzb3IpKTsKKyAgICAgZmllbGQtPnNldEFjY2Vzc1BvbGlj eShhY2Nlc3NQb2xpY3koY2xhbmdfZ2V0Q1hYQWNjZXNzU3BlY2lmaWVyKGN1cnNvcikpKTsKKyAg ICAgZmllbGQtPnNldFNjb3BlKG1fc2NvcGUpOworLSAgICBmaWVsZC0+c2V0VHlwZShjcmVhdGVU eXBlSW5mbyhjdXJzb3IpKTsKKysgICAgZmllbGQtPnNldFR5cGUodHlwZU8udmFsdWUoKSk7Cisg ICAgIGZpZWxkLT5zZXRNdXRhYmxlKGNsYW5nX0NYWEZpZWxkX2lzTXV0YWJsZShjdXJzb3IpICE9 IDApOworKyAgICBmaWVsZC0+c2V0U3RhdGljKHN0YXRpY0ZpZWxkKTsKKyAgICAgc2V0RmlsZU5h bWUoY3Vyc29yLCBmaWVsZC5nZXQoKSk7CisgICAgIG1fY3VycmVudEZpZWxkID0gZmllbGQ7Cisg ICAgIG1fc2NvcGVTdGFjay5iYWNrKCktPmFkZFZhcmlhYmxlKGZpZWxkKTsKKyB9CisgCistLy8g Q3JlYXRlIHF1YWxpZmllZCBuYW1lICJzdGQ6Omxpc3Q8c3RkOjpzdHJpbmc+IiAtPiAoInN0ZCIs ICJsaXN0PHN0ZDo6c3RyaW5nPiIpCistc3RhdGljIFFTdHJpbmdMaXN0IHF1YWxpZmllZE5hbWUo Y29uc3QgUVN0cmluZyAmdCkKKy17CistICAgIFFTdHJpbmdMaXN0IHJlc3VsdDsKKy0gICAgYXV0 byBlbmQgPSB0LmluZGV4T2YodSc8Jyk7CistICAgIGlmIChlbmQgPT0gLTEpCistICAgICAgICBl bmQgPSB0LmluZGV4T2YodScoJyk7CistICAgIGlmIChlbmQgPT0gLTEpCistICAgICAgICBlbmQg PSB0LnNpemUoKTsKKy0gICAgcXNpemV0eXBlIGxhc3RQb3MgPSAwOworLSAgICB3aGlsZSAodHJ1 ZSkgeworLSAgICAgICAgY29uc3QgYXV0byBuZXh0UG9zID0gdC5pbmRleE9mKHUiOjoiX3MsIGxh c3RQb3MpOworLSAgICAgICAgaWYgKG5leHRQb3MgPCAwIHx8IG5leHRQb3MgPj0gZW5kKQorLSAg ICAgICAgICAgIGJyZWFrOworLSAgICAgICAgcmVzdWx0LmFwcGVuZCh0Lm1pZChsYXN0UG9zLCBu ZXh0UG9zIC0gbGFzdFBvcykpOworLSAgICAgICAgbGFzdFBvcyA9IG5leHRQb3MgKyAyOworLSAg ICB9CistICAgIHJlc3VsdC5hcHBlbmQodC5yaWdodCh0LnNpemUoKSAtIGxhc3RQb3MpKTsKKy0g ICAgcmV0dXJuIHJlc3VsdDsKKy19CistCisgc3RhdGljIGJvb2wgaXNBcnJheVR5cGUoQ1hUeXBl S2luZCBrKQorIHsKKyAgICAgcmV0dXJuIGsgPT0gQ1hUeXBlX0NvbnN0YW50QXJyYXkgfHwgayA9 PSBDWFR5cGVfSW5jb21wbGV0ZUFycmF5CitAQCAtNDg4LDcgKzQ4NywxMCBAQCBib29sIEJ1aWxk ZXJQcml2YXRlOjphZGRUZW1wbGF0ZUluc3RhbnRpYXRpb25zUmVjdXJzaW9uKGNvbnN0IENYVHlw ZSAmdHlwZSwgVHlwZQorICAgICAgICAgICAgICAgICAvLyBvZiBhIG5vbi10eXBlIHRlbXBsYXRl ICh0ZW1wbGF0ZSA8aW50IHY+KS4KKyAgICAgICAgICAgICAgICAgaWYgKGFyZ1R5cGUua2luZCA9 PSBDWFR5cGVfSW52YWxpZCkKKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKy0g ICAgICAgICAgICAgICAgdC0+YWRkSW5zdGFudGlhdGlvbihjcmVhdGVUeXBlSW5mb1VuY2FjaGVk KGFyZ1R5cGUpKTsKKysgICAgICAgICAgICAgICAgYXV0byB0eXBlTyA9IGNyZWF0ZVR5cGVJbmZv VW5jYWNoZWQoYXJnVHlwZSk7CisrICAgICAgICAgICAgICAgIGlmICghdHlwZU8uaGFzX3ZhbHVl KCkpCisrICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgICAgICAgICAgICAg IHQtPmFkZEluc3RhbnRpYXRpb24odHlwZU8udmFsdWUoKSk7CisgICAgICAgICAgICAgfQorICAg ICAgICAgfQorICAgICAgICAgYnJlYWs7CitAQCAtNDk4LDEwICs1MDAsOCBAQCBib29sIEJ1aWxk ZXJQcml2YXRlOjphZGRUZW1wbGF0ZUluc3RhbnRpYXRpb25zUmVjdXJzaW9uKGNvbnN0IENYVHlw ZSAmdHlwZSwgVHlwZQorICAgICByZXR1cm4gdHJ1ZTsKKyB9CisgCistc3RhdGljIHZvaWQgZHVt bXlUZW1wbGF0ZUFyZ3VtZW50SGFuZGxlcihpbnQsIFFTdHJpbmdWaWV3KSB7fQorLQorIHZvaWQg QnVpbGRlclByaXZhdGU6OmFkZFRlbXBsYXRlSW5zdGFudGlhdGlvbnMoY29uc3QgQ1hUeXBlICZ0 eXBlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0 cmluZyAqdHlwZU5hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBRU3RyaW5nICZ0ZW1wbGF0ZVBhcmFtZXRlcnMsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlSW5mbyAqdCkgY29uc3QKKyB7 CisgICAgIC8vIEluIG1vc3QgY2FzZXMsIGZvciB0ZW1wbGF0ZXMgbGlrZSAiVmVjdG9yPEE+Iiwg Q2xhbmcgd2lsbCBnaXZlIHVzIHRoZQorQEAgLTUxMiwxNiArNTEyLDEyIEBAIHZvaWQgQnVpbGRl clByaXZhdGU6OmFkZFRlbXBsYXRlSW5zdGFudGlhdGlvbnMoY29uc3QgQ1hUeXBlICZ0eXBlLAor ICAgICAvLyAgICBWZWN0b3IoY29uc3QgVmVjdG9yJik7CisgICAgIC8vIH07CisgICAgIC8vIElu IHRoYXQgY2FzZSwgaGF2ZSBUeXBlSW5mbyBwYXJzZSB0aGUgbGlzdCBmcm9tIHRoZSBzcGVsbGlu Zy4KKy0gICAgLy8gRmluYWxseSwgcmVtb3ZlIHRoZSBsaXN0ICI8PiIgZnJvbSB0aGUgdHlwZSBu YW1lLgorICAgICBjb25zdCBib29sIHBhcnNlZCA9IGFkZFRlbXBsYXRlSW5zdGFudGlhdGlvbnNS ZWN1cnNpb24odHlwZSwgdCkKKyAgICAgICAgICYmICF0LT5pbnN0YW50aWF0aW9ucygpLmlzRW1w dHkoKTsKKy0gICAgaWYgKCFwYXJzZWQpCisrICAgIGlmICghcGFyc2VkKSB7CisgICAgICAgICB0 LT5zZXRJbnN0YW50aWF0aW9ucyh7fSk7CistICAgIGNvbnN0IGF1dG8gcG9zID0gcGFyc2VkCist ICAgICAgICA/IHBhcnNlVGVtcGxhdGVBcmd1bWVudExpc3QoKnR5cGVOYW1lLCBkdW1teVRlbXBs YXRlQXJndW1lbnRIYW5kbGVyKQorLSAgICAgICAgOiB0LT5wYXJzZVRlbXBsYXRlQXJndW1lbnRM aXN0KCp0eXBlTmFtZSk7CistICAgIGlmIChwb3MuZmlyc3QgIT0gLTEgJiYgcG9zLnNlY29uZCAh PSAtMSAmJiBwb3Muc2Vjb25kID4gcG9zLmZpcnN0KQorLSAgICAgICAgdHlwZU5hbWUtPnJlbW92 ZShwb3MuZmlyc3QsIHBvcy5zZWNvbmQgLSBwb3MuZmlyc3QpOworKyAgICAgICAgdC0+cGFyc2VU ZW1wbGF0ZUFyZ3VtZW50TGlzdCh0ZW1wbGF0ZVBhcmFtZXRlcnMpOworKyAgICB9CisgfQorIAor IHN0YXRpYyBUeXBlQ2F0ZWdvcnkgdHlwZUNhdGVnb3J5RnJvbUNsYW5nKENYVHlwZUtpbmQgaykK K0BAIC01NDUsMjIgKzU0MSw1OSBAQCBzdGF0aWMgVHlwZUNhdGVnb3J5IHR5cGVDYXRlZ29yeUZy b21DbGFuZyhDWFR5cGVLaW5kIGspCisgICAgIHJldHVybiBUeXBlQ2F0ZWdvcnk6Ok90aGVyOwor IH0KKyAKKy1UeXBlSW5mbyBCdWlsZGVyUHJpdmF0ZTo6Y3JlYXRlVHlwZUluZm9VbmNhY2hlZChj b25zdCBDWFR5cGUgJnR5cGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYm9vbCAqY2FjaGVhYmxlKSBjb25zdAorKy8vIFJlamVjdCBkZWNsdHlwZSgp IGV4cHJlc3Npb25zLCB0ZW1wbGF0ZSBwYXJhbWV0ZXIgcGFja3MsIGV0Yy4KKytzdGF0aWMgaW5s aW5lIGJvb2wgY2hlY2tUeXBlTmFtZShjb25zdCBRU3RyaW5nICZuYW1lKQorIHsKKysgICAgc3Rh dGljIGNvbnN0ZXhwciBRTGF0aW4xU3RyaW5nVmlldyBleGNsdXNpb25zW10gPSB7CisrICAgICAg ICAiZGVjbHR5cGUoIl9MMSwgInN0ZDo6ZGVjbHZhbCJfTDEsICI6OmRldGFpbDo6Il9MMSwgInN0 ZDo6ZW5hYmxlX2lmPCJfTDEsCisrICAgICAgICAidGVtcGxhdGUgIl9MMSwgIi4uLiJfTDEKKysg ICAgfTsKKysKKysgICAgYXV0byBleGNsdWRlZFByZWQgPSBbJm5hbWVdKFFMYXRpbjFTdHJpbmdW aWV3IGV4KSB7IHJldHVybiBuYW1lLmNvbnRhaW5zKGV4KTsgfTsKKysgICAgcmV0dXJuIHN0ZDo6 bm9uZV9vZihzdGQ6OmJlZ2luKGV4Y2x1c2lvbnMpLCBzdGQ6OmVuZChleGNsdXNpb25zKSwgZXhj bHVkZWRQcmVkKTsKKyt9CisrCisrc3RhdGljIFFTdHJpbmcgZml4VHlwZU5hbWUoUVN0cmluZyB0 eXBlTmFtZSkKKyt7CisrICAgIHdoaWxlIChUeXBlSW5mbzo6c3RyaXBMZWFkaW5nQ29uc3QoJnR5 cGVOYW1lKSB8fCBUeXBlSW5mbzo6c3RyaXBMZWFkaW5nVm9sYXRpbGUoJnR5cGVOYW1lKSkgewor KyAgICB9CisrICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBsZWFkaW5nVHlwZW5hbWUgPSAidHlw ZW5hbWUgIl9MMTsKKysgICAgaWYgKHR5cGVOYW1lLnN0YXJ0c1dpdGgobGVhZGluZ1R5cGVuYW1l KSkKKysgICAgICAgIHR5cGVOYW1lLnJlbW92ZSgwLCBsZWFkaW5nVHlwZW5hbWUuc2l6ZSgpKTsK KysgICAgdHlwZU5hbWUucmVwbGFjZSgiPHR5cGVuYW1lICJfTDEsICI8Il9MMSk7CisrICAgIHR5 cGVOYW1lLnJlcGxhY2UoIiwgdHlwZW5hbWUgIl9MMSwgIiwgIl9MMSk7CisrICAgIHJldHVybiB0 eXBlTmFtZTsKKyt9CisrCisrc3RkOjpvcHRpb25hbDxUeXBlSW5mbz4KKysgICAgQnVpbGRlclBy aXZhdGU6OmNyZWF0ZUZ1bmN0aW9uVHlwZUluZm8oY29uc3QgQ1hUeXBlICZ0eXBlLCBUeXBlQ2F0 ZWdvcnkgY2F0LCBib29sICpjYWNoZWFibGUpIGNvbnN0CisreworKyAgICBjb25zdCBpbnQgYXJn Q291bnQgPSBjbGFuZ19nZXROdW1BcmdUeXBlcyh0eXBlKTsKKysgICAgaWYgKGFyZ0NvdW50IDwg MCkKKysgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisrICAgIGF1dG8gcmVzdWx0TyA9IGNy ZWF0ZVR5cGVJbmZvVW5jYWNoZWQoY2xhbmdfZ2V0UmVzdWx0VHlwZSh0eXBlKSwgY2FjaGVhYmxl KTsKKysgICAgaWYgKCFyZXN1bHRPLmhhc192YWx1ZSgpKQorKyAgICAgICAgcmV0dXJuIHN0ZDo6 bnVsbG9wdDsKKysgICAgcmVzdWx0Ty0+c2V0VHlwZUNhdGVnb3J5KGNhdCk7CisrICAgIGZvciAo aW50IGEgPSAwOyBhIDwgYXJnQ291bnQ7ICsrYSkgeworKyAgICAgICAgYXV0byBhcmdUeXBlTyA9 IGNyZWF0ZVR5cGVJbmZvVW5jYWNoZWQoY2xhbmdfZ2V0QXJnVHlwZSh0eXBlLCB1bnNpZ25lZChh KSksIGNhY2hlYWJsZSk7CisrICAgICAgICBpZiAoIWFyZ1R5cGVPLmhhc192YWx1ZSgpKQorKyAg ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisrICAgICAgICByZXN1bHRPLT5hZGRBcmd1 bWVudChhcmdUeXBlTy52YWx1ZSgpKTsKKysgICAgfQorKyAgICByZXR1cm4gcmVzdWx0TzsKKyt9 CisrCisrc3RkOjpvcHRpb25hbDxUeXBlSW5mbz4KKysgICAgQnVpbGRlclByaXZhdGU6OmNyZWF0 ZVR5cGVJbmZvVW5jYWNoZWQoY29uc3QgQ1hUeXBlICZ0eXBlLCBib29sICpjYWNoZWFibGUpIGNv bnN0CisreworKyAgICBpZiAodHlwZS5raW5kID09IENYVHlwZV9GdW5jdGlvblByb3RvKQorKyAg ICAgICAgcmV0dXJuIGNyZWF0ZUZ1bmN0aW9uVHlwZUluZm8odHlwZSwgVHlwZUNhdGVnb3J5OjpG dW5jdGlvbiwgY2FjaGVhYmxlKTsKKysKKyAgICAgaWYgKHR5cGUua2luZCA9PSBDWFR5cGVfUG9p bnRlcikgeyAvLyBDaGVjayBmb3IgZnVuY3Rpb24gcG9pbnRlcnMsIGZpcnN0LgorICAgICAgICAg Y29uc3QgQ1hUeXBlIHBvaW50ZWVUeXBlID0gY2xhbmdfZ2V0UG9pbnRlZVR5cGUodHlwZSk7Cist ICAgICAgICBjb25zdCBpbnQgYXJnQ291bnQgPSBjbGFuZ19nZXROdW1BcmdUeXBlcyhwb2ludGVl VHlwZSk7CistICAgICAgICBpZiAoYXJnQ291bnQgPj0gMCkgeworLSAgICAgICAgICAgIFR5cGVJ bmZvIHJlc3VsdCA9IGNyZWF0ZVR5cGVJbmZvVW5jYWNoZWQoY2xhbmdfZ2V0UmVzdWx0VHlwZShw b2ludGVlVHlwZSksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjYWNoZWFibGUpOworLSAgICAgICAgICAgIHJlc3VsdC5zZXRUeXBlQ2F0ZWdv cnkoVHlwZUNhdGVnb3J5OjpQb2ludGVyKTsKKy0gICAgICAgICAgICByZXN1bHQuc2V0RnVuY3Rp b25Qb2ludGVyKHRydWUpOworLSAgICAgICAgICAgIGZvciAoaW50IGEgPSAwOyBhIDwgYXJnQ291 bnQ7ICsrYSkKKy0gICAgICAgICAgICAgICAgcmVzdWx0LmFkZEFyZ3VtZW50KGNyZWF0ZVR5cGVJ bmZvVW5jYWNoZWQoY2xhbmdfZ2V0QXJnVHlwZShwb2ludGVlVHlwZSwgdW5zaWduZWQoYSkpLAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjYWNoZWFibGUpKTsKKy0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OworLSAgICAgICAgfQor KyAgICAgICAgaWYgKHBvaW50ZWVUeXBlLmtpbmQgPT0gQ1hUeXBlX0Z1bmN0aW9uUHJvdG8pCisr ICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUZ1bmN0aW9uVHlwZUluZm8ocG9pbnRlZVR5cGUsIFR5 cGVDYXRlZ29yeTo6RnVuY3Rpb25Qb2ludGVyLCBjYWNoZWFibGUpOworICAgICB9CisgCisgICAg IFR5cGVJbmZvIHR5cGVJbmZvOworQEAgLTU5NCw5ICs2MjcsMTIgQEAgVHlwZUluZm8gQnVpbGRl clByaXZhdGU6OmNyZWF0ZVR5cGVJbmZvVW5jYWNoZWQoY29uc3QgQ1hUeXBlICZ0eXBlLAorICAg ICB0eXBlSW5mby5zZXRDb25zdGFudChjbGFuZ19pc0NvbnN0UXVhbGlmaWVkVHlwZShuZXN0ZWRU eXBlKSAhPSAwKTsKKyAgICAgdHlwZUluZm8uc2V0Vm9sYXRpbGUoY2xhbmdfaXNWb2xhdGlsZVF1 YWxpZmllZFR5cGUobmVzdGVkVHlwZSkgIT0gMCk7CisgCistICAgIFFTdHJpbmcgdHlwZU5hbWUg PSBnZXRSZXNvbHZlZFR5cGVOYW1lKG5lc3RlZFR5cGUpOworLSAgICB3aGlsZSAoVHlwZUluZm86 OnN0cmlwTGVhZGluZ0NvbnN0KCZ0eXBlTmFtZSkKKy0gICAgICAgICAgIHx8IFR5cGVJbmZvOjpz dHJpcExlYWRpbmdWb2xhdGlsZSgmdHlwZU5hbWUpKSB7CisrICAgIFFTdHJpbmcgdHlwZU5hbWUg PSBmaXhUeXBlTmFtZShnZXRSZXNvbHZlZFR5cGVOYW1lKG5lc3RlZFR5cGUsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fYmFzZVZpc2l0 b3ItPnByaW50aW5nUG9saWN5KCkpKTsKKysKKysgICAgaWYgKCFjaGVja1R5cGVOYW1lKHR5cGVO YW1lKSkgeworKyAgICAgICAgbV9yZWplY3RlZFR5cGVzLmluc2VydCh0eXBlTmFtZSk7CisrICAg ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICB9CisgCisgICAgIC8vIEZvciB0eXBlZGVm cyB3aXRoaW4gdGVtcGxhdGVzIG9yIG5lc3RlZCBjbGFzc2VzIHdpdGhpbiB0ZW1wbGF0ZXMgKGl0 ZXJhdG9ycyk6CitAQCAtNjE4LDMzICs2NTQsNDQgQEAgVHlwZUluZm8gQnVpbGRlclByaXZhdGU6 OmNyZWF0ZVR5cGVJbmZvVW5jYWNoZWQoY29uc3QgQ1hUeXBlICZ0eXBlLAorIAorICAgICAvLyBP YnRhaW4gdGVtcGxhdGUgaW5zdGFudGlhdGlvbnMgaWYgdGhlIG5hbWUgaGFzICc8JyAodGh1cyBl eGNsdWRpbmcKKyAgICAgLy8gdHlwZWRlZnMgbGlrZSAic3RkOjpzdHJpbmciLgorLSAgICBpZiAo dHlwZU5hbWUuY29udGFpbnModSc8JykpCistICAgICAgICBhZGRUZW1wbGF0ZUluc3RhbnRpYXRp b25zKG5lc3RlZFR5cGUsICZ0eXBlTmFtZSwgJnR5cGVJbmZvKTsKKyAKKy0gICAgdHlwZUluZm8u c2V0UXVhbGlmaWVkTmFtZShxdWFsaWZpZWROYW1lKHR5cGVOYW1lKSk7CisrICAgIGF1dG8gY2xh bmdUeXBlTmFtZU8gPSBjbGFuZzo6cGFyc2VUeXBlTmFtZSh0eXBlTmFtZSk7CisrICAgIGlmICgh Y2xhbmdUeXBlTmFtZU8uaGFzX3ZhbHVlKCkpIHsKKysgICAgICAgIG1fcmVqZWN0ZWRUeXBlcy5p bnNlcnQodHlwZU5hbWUpOworKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKysgICAgfQor KworKyAgICBjb25zdCBhdXRvICZjbGFuZ1R5cGVOYW1lID0gY2xhbmdUeXBlTmFtZU8udmFsdWUo KTsKKysgICAgaWYgKCFjbGFuZ1R5cGVOYW1lLnRlbXBsYXRlUGFyYW1ldGVycy5pc0VtcHR5KCkp CisrICAgICAgICBhZGRUZW1wbGF0ZUluc3RhbnRpYXRpb25zKG5lc3RlZFR5cGUsIGNsYW5nVHlw ZU5hbWUudGVtcGxhdGVQYXJhbWV0ZXJzLCAmdHlwZUluZm8pOworKworKyAgICB0eXBlSW5mby5z ZXRRdWFsaWZpZWROYW1lKGNsYW5nVHlwZU5hbWUubmFtZS5zcGxpdCgiOjoiX0wxKSk7CisgICAg IC8vIDMzMjA6Q0lOREVYX0xJTktBR0UgaW50IGNsYW5nX2dldE51bUFyZ1R5cGVzKENYVHlwZSBU KTsgZnVuY3Rpb24gcHRyIHR5cGVzPworICAgICB0eXBlSW5mby5zaW1wbGlmeVN0ZFR5cGUoKTsK KyAgICAgcmV0dXJuIHR5cGVJbmZvOworIH0KKyAKKy1UeXBlSW5mbyBCdWlsZGVyUHJpdmF0ZTo6 Y3JlYXRlVHlwZUluZm8oY29uc3QgQ1hUeXBlICZ0eXBlKSBjb25zdAorK3N0ZDo6b3B0aW9uYWw8 VHlwZUluZm8+IEJ1aWxkZXJQcml2YXRlOjpjcmVhdGVUeXBlSW5mbyhjb25zdCBDWFR5cGUgJnR5 cGUpIGNvbnN0CisgeworICAgICBjb25zdCBhdXRvIGl0ID0gbV90eXBlSW5mb0hhc2guY29uc3RG aW5kKHR5cGUpOworICAgICBpZiAoaXQgIT0gbV90eXBlSW5mb0hhc2guY29uc3RFbmQoKSkKKyAg ICAgICAgIHJldHVybiBpdC52YWx1ZSgpOworICAgICBib29sIGNhY2hlYWJsZSA9IHRydWU7Cist ICAgIFR5cGVJbmZvIHJlc3VsdCA9IGNyZWF0ZVR5cGVJbmZvVW5jYWNoZWQodHlwZSwgJmNhY2hl YWJsZSk7CistICAgIGlmIChjYWNoZWFibGUpCistICAgICAgICBtX3R5cGVJbmZvSGFzaC5pbnNl cnQodHlwZSwgcmVzdWx0KTsKKy0gICAgcmV0dXJuIHJlc3VsdDsKKysgICAgYXV0byByZXN1bHRP ID0gY3JlYXRlVHlwZUluZm9VbmNhY2hlZCh0eXBlLCAmY2FjaGVhYmxlKTsKKysgICAgaWYgKHJl c3VsdE8uaGFzX3ZhbHVlKCkgJiYgY2FjaGVhYmxlKQorKyAgICAgICAgbV90eXBlSW5mb0hhc2gu aW5zZXJ0KHR5cGUsIHJlc3VsdE8udmFsdWUoKSk7CisrICAgIHJldHVybiByZXN1bHRPOworIH0K KyAKKyB2b2lkIEJ1aWxkZXJQcml2YXRlOjphZGRUeXBlRGVmKGNvbnN0IENYQ3Vyc29yICZjdXJz b3IsIGNvbnN0IENYVHlwZSAmY3hUeXBlKQorIHsKKyAgICAgY29uc3QgUVN0cmluZyB0YXJnZXQg PSBnZXRDdXJzb3JTcGVsbGluZyhjdXJzb3IpOworKyAgICBhdXRvIHR5cGVJbmZvTyA9IGNyZWF0 ZVR5cGVJbmZvKGN4VHlwZSk7CisrICAgIGlmICghdHlwZUluZm9PLmhhc192YWx1ZSgpKQorKyAg ICAgICAgcmV0dXJuOworICAgICBhdXRvIGl0ZW0gPSBzdGQ6Om1ha2Vfc2hhcmVkPF9UeXBlRGVm TW9kZWxJdGVtPihtX21vZGVsLCB0YXJnZXQpOworICAgICBzZXRGaWxlTmFtZShjdXJzb3IsIGl0 ZW0uZ2V0KCkpOworLSAgICBpdGVtLT5zZXRUeXBlKGNyZWF0ZVR5cGVJbmZvKGN4VHlwZSkpOwor KyAgICBpdGVtLT5zZXRUeXBlKHR5cGVJbmZvTy52YWx1ZSgpKTsKKyAgICAgaXRlbS0+c2V0U2Nv cGUobV9zY29wZSk7CisgICAgIGl0ZW0tPnNldEFjY2Vzc1BvbGljeShhY2Nlc3NQb2xpY3koY2xh bmdfZ2V0Q1hYQWNjZXNzU3BlY2lmaWVyKGN1cnNvcikpKTsKKyAgICAgbV9zY29wZVN0YWNrLmJh Y2soKS0+YWRkVHlwZURlZihpdGVtKTsKK0BAIC02NzQsOCArNzIxLDEwIEBAIHZvaWQgQnVpbGRl clByaXZhdGU6OmVuZFRlbXBsYXRlVHlwZUFsaWFzKGNvbnN0IENYQ3Vyc29yICZ0eXBlQWxpYXND dXJzb3IpCisgICAgIC8vIFVzdWFsbHkgIjxlbGFib3JhdGVkPnN0ZDo6bGlzdDxUPiIgb3IgIjx1 bmV4cG9zZWQ+Q29udGFpbmVyMTxUPiIsCisgICAgIC8vIGFzIG9idGFpbmVkIHdpdGggcGFyc2Vy IG9mIFBZU0lERS0zMjMKKyAgICAgaWYgKHR5cGUua2luZCA9PSBDWFR5cGVfVW5leHBvc2VkIHx8 IHR5cGUua2luZCA9PSBDWFR5cGVfRWxhYm9yYXRlZCkgeworLSAgICAgICAgbV9jdXJyZW50VGVt cGxhdGVUeXBlQWxpYXMtPnNldFR5cGUoY3JlYXRlVHlwZUluZm8odHlwZSkpOworLSAgICAgICAg bV9zY29wZVN0YWNrLmJhY2soKS0+YWRkVGVtcGxhdGVUeXBlQWxpYXMobV9jdXJyZW50VGVtcGxh dGVUeXBlQWxpYXMpOworKyAgICAgICAgaWYgKGF1dG8gdHlwZU8gPSBjcmVhdGVUeXBlSW5mbyh0 eXBlKSkgeworKyAgICAgICAgICAgIG1fY3VycmVudFRlbXBsYXRlVHlwZUFsaWFzLT5zZXRUeXBl KHR5cGVPLnZhbHVlKCkpOworKyAgICAgICAgICAgIG1fc2NvcGVTdGFjay5iYWNrKCktPmFkZFRl bXBsYXRlVHlwZUFsaWFzKG1fY3VycmVudFRlbXBsYXRlVHlwZUFsaWFzKTsKKysgICAgICAgIH0K KyAgICAgfQorICAgICBtX2N1cnJlbnRUZW1wbGF0ZVR5cGVBbGlhcy5yZXNldCgpOworIH0KK0BA IC03MzIsOSArNzgxLDExIEBAIHN0ZDo6cGFpcjxRU3RyaW5nLCBDbGFzc01vZGVsSXRlbT4gQnVp bGRlclByaXZhdGU6OmdldEJhc2VDbGFzcyhDWFR5cGUgdHlwZSkgY29uCisgeworICAgICBjb25z dCBhdXRvIGRlY2wgPSByZXNvbHZlQmFzZUNsYXNzVHlwZSh0eXBlKTsKKyAgICAgLy8gTm90ZTog c3BlbGxpbmcgaGFzICJzdHJ1Y3QgYmFzZUNsYXNzIiwgdXNlIHR5cGUKKy0gICAgUVN0cmluZyBi YXNlQ2xhc3NOYW1lID0gZ2V0VHlwZU5hbWUoZGVjbC50eXBlKTsKKy0gICAgaWYgKGJhc2VDbGFz c05hbWUuc3RhcnRzV2l0aCh1InN0ZDo6IikpIC8vIFNpbXBsaWZ5ICJzdGQ6OiIgdHlwZXMKKy0g ICAgICAgIGJhc2VDbGFzc05hbWUgPSBjcmVhdGVUeXBlSW5mbyhkZWNsLnR5cGUpLnRvU3RyaW5n KCk7CisrICAgIFFTdHJpbmcgYmFzZUNsYXNzTmFtZSA9IGdldFR5cGVOYW1lKGRlY2wudHlwZSwg bV9iYXNlVmlzaXRvci0+cHJpbnRpbmdQb2xpY3koKSk7CisrICAgIGlmIChiYXNlQ2xhc3NOYW1l LnN0YXJ0c1dpdGgodSJzdGQ6OiIpKSB7IC8vIFNpbXBsaWZ5ICJzdGQ6OiIgdHlwZXMKKysgICAg ICAgIGlmIChhdXRvIHR5cGVPID0gY3JlYXRlVHlwZUluZm8oZGVjbC50eXBlKSkKKysgICAgICAg ICAgICBiYXNlQ2xhc3NOYW1lID0gdHlwZU8udmFsdWUoKS50b1N0cmluZygpOworKyAgICB9Cisg CisgICAgIGF1dG8gaXQgPSBtX2N1cnNvckNsYXNzSGFzaC5jb25zdEZpbmQoZGVjbC5kZWNsYXJh dGlvbik7CisgICAgIC8vIE5vdCBmb3VuZDogU2V0IHVucXVhbGlmaWVkIG5hbWUuIFRoaXMgaGFw cGVucyBpbiBjYXNlcyBsaWtlCitAQCAtOTE2LDYgKzk2NywxMSBAQCBGaWxlTW9kZWxJdGVtIEJ1 aWxkZXI6OmRvbSgpIGNvbnN0CisgICAgIHJldHVybiBzdGQ6OmR5bmFtaWNfcG9pbnRlcl9jYXN0 PF9GaWxlTW9kZWxJdGVtPihyb290U2NvcGUpOworIH0KKyAKKytRU3RyaW5nTGlzdCBCdWlsZGVy OjpyZWplY3RlZFR5cGVzKCkgY29uc3QKKyt7CisrICAgIHJldHVybiB7ZC0+bV9yZWplY3RlZFR5 cGVzLmNiZWdpbigpLCBkLT5tX3JlamVjdGVkVHlwZXMuY2VuZCgpfTsKKyt9CisrCisgc3RhdGlj IFFTdHJpbmcgbXNnT3V0T2ZPcmRlcihjb25zdCBDWEN1cnNvciAmY3Vyc29yLCBjb25zdCBjaGFy ICpleHBlY3RlZFNjb3BlKQorIHsKKyAgICAgcmV0dXJuIGdldEN1cnNvcktpbmROYW1lKGN1cnNv ci5raW5kKSArIHUnICcKK0BAIC05NDQsNyArMTAwMCw3IEBAIHN0YXRpYyBOYW1lc3BhY2VUeXBl IG5hbWVzcGFjZVR5cGUoY29uc3QgQ1hDdXJzb3IgJmN1cnNvcikKKyAgICAgcmV0dXJuIE5hbWVz cGFjZVR5cGU6OkRlZmF1bHQ7CisgfQorIAorLXN0YXRpYyBRU3RyaW5nIGVudW1UeXBlKGNvbnN0 IENYQ3Vyc29yICZjdXJzb3IpCisrc3RhdGljIFFTdHJpbmcgZW51bVR5cGUoY29uc3QgQ1hDdXJz b3IgJmN1cnNvciwgUHJpbnRpbmdQb2xpY3kgcCkKKyB7CisgICAgIFFTdHJpbmcgbmFtZSA9IGdl dEN1cnNvclNwZWxsaW5nKGN1cnNvcik7IC8vICJlbnVtIEZvbyB7IHYxLCB2MiB9OyIKKyAgICAg aWYgKG5hbWUuY29udGFpbnModSJ1bm5hbWVkIGVudW0iKSkgLy8gQ2xhbmcgMTYuMAorQEAgLTk1 Miw3ICsxMDA4LDcgQEAgc3RhdGljIFFTdHJpbmcgZW51bVR5cGUoY29uc3QgQ1hDdXJzb3IgJmN1 cnNvcikKKyAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgICAvLyBQWVNJREUtMTIy ODogRm9yICJ0eXBlZGVmIGVudW0geyB2MSwgdjIgfSBGb287IiwgdHlwZSB3aWxsIHJldHVybgor ICAgICAgICAgLy8gIkZvbyIgYXMgZXhwZWN0ZWQuIENhcmUgbXVzdCBiZSB0YWtlbiB0byBleGNs dWRlIHJlYWwgYW5vbnltb3VzIGVudW1zLgorLSAgICAgICAgbmFtZSA9IGdldFR5cGVOYW1lKGNs YW5nX2dldEN1cnNvclR5cGUoY3Vyc29yKSk7CisrICAgICAgICBuYW1lID0gZ2V0VHlwZU5hbWUo Y2xhbmdfZ2V0Q3Vyc29yVHlwZShjdXJzb3IpLCBwKTsKKyAgICAgICAgIGlmIChuYW1lLmNvbnRh aW5zKHUiKHVubmFtZWQiKSAvLyBDbGFuZyAxMi4wLjEKKyAgICAgICAgICAgICB8fCBuYW1lLmNv bnRhaW5zKHUiKGFub255bW91cyIpKSB7IC8vIGVhcmxpZXIKKyAgICAgICAgICAgICBuYW1lLmNs ZWFyKCk7CitAQCAtMTAxMCw3ICsxMDY2LDcgQEAgQmFzZVZpc2l0b3I6OlN0YXJ0VG9rZW5SZXN1 bHQgQnVpbGRlcjo6c3RhcnRUb2tlbihjb25zdCBDWEN1cnNvciAmY3Vyc29yKQorICAgICAgICAg ZC0+bV9zY29wZS5iYWNrKCkgKz0gIjw+Il9MMTsKKyAgICAgICAgIGJyZWFrOworICAgICBjYXNl IENYQ3Vyc29yX0VudW1EZWNsOiB7CistICAgICAgICBRU3RyaW5nIG5hbWUgPSBlbnVtVHlwZShj dXJzb3IpOworKyAgICAgICAgUVN0cmluZyBuYW1lID0gZW51bVR5cGUoY3Vyc29yLCBwcmludGlu Z1BvbGljeSgpKTsKKyAgICAgICAgIEVudW1LaW5kIGtpbmQgPSBDRW51bTsKKyAgICAgICAgIGlm IChuYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgIGtpbmQgPSBBbm9ueW1vdXNFbnVtOwor QEAgLTEwMzAsNyArMTA4Niw3IEBAIEJhc2VWaXNpdG9yOjpTdGFydFRva2VuUmVzdWx0IEJ1aWxk ZXI6OnN0YXJ0VG9rZW4oY29uc3QgQ1hDdXJzb3IgJmN1cnNvcikKKyAgICAgICAgICAgICBkLT5t X2N1cnJlbnRFbnVtLT5zZXREZXByZWNhdGVkKHRydWUpOworICAgICAgICAgY29uc3QgYXV0byBl bnVtVHlwZSA9IGZ1bGx5UmVzb2x2ZVR5cGUoY2xhbmdfZ2V0RW51bURlY2xJbnRlZ2VyVHlwZShj dXJzb3IpKTsKKyAgICAgICAgIGQtPm1fY3VycmVudEVudW0tPnNldFNpZ25lZChpc1NpZ25lZChl bnVtVHlwZS5raW5kKSk7CistICAgICAgICBkLT5tX2N1cnJlbnRFbnVtLT5zZXRVbmRlcmx5aW5n VHlwZShnZXRUeXBlTmFtZShlbnVtVHlwZSkpOworKyAgICAgICAgZC0+bV9jdXJyZW50RW51bS0+ c2V0VW5kZXJseWluZ1R5cGUoZ2V0VHlwZU5hbWUoZW51bVR5cGUsIHByaW50aW5nUG9saWN5KCkp KTsKKyAgICAgICAgIGlmIChzdGQ6OmR5bmFtaWNfcG9pbnRlcl9jYXN0PF9DbGFzc01vZGVsSXRl bT4oZC0+bV9zY29wZVN0YWNrLmJhY2soKSkpCisgICAgICAgICAgICAgZC0+bV9jdXJyZW50RW51 bS0+c2V0QWNjZXNzUG9saWN5KGFjY2Vzc1BvbGljeShjbGFuZ19nZXRDWFhBY2Nlc3NTcGVjaWZp ZXIoY3Vyc29yKSkpOworICAgICB9CitAQCAtMTA1OCwxMCArMTExNCw4IEBAIEJhc2VWaXNpdG9y OjpTdGFydFRva2VuUmVzdWx0IEJ1aWxkZXI6OnN0YXJ0VG9rZW4oY29uc3QgQ1hDdXJzb3IgJmN1 cnNvcikKKyAgICAgICAgIGJyZWFrOworICAgICBjYXNlIENYQ3Vyc29yX1ZhckRlY2w6CisgICAg ICAgICAvLyBzdGF0aWMgY2xhc3MgbWVtYmVycyBhcmUgc2VlbiBhcyBDWEN1cnNvcl9WYXJEZWNs CistICAgICAgICBpZiAoaXNDbGFzc09yTmFtZXNwYWNlQ3Vyc29yKGNsYW5nX2dldEN1cnNvclNl bWFudGljUGFyZW50KGN1cnNvcikpKSB7CistICAgICAgICAgICAgIGQtPmFkZEZpZWxkKGN1cnNv cik7CistICAgICAgICAgICAgIGQtPm1fY3VycmVudEZpZWxkLT5zZXRTdGF0aWModHJ1ZSk7Cist ICAgICAgICB9CisrICAgICAgICBpZiAoaXNDbGFzc09yTmFtZXNwYWNlQ3Vyc29yKGNsYW5nX2dl dEN1cnNvclNlbWFudGljUGFyZW50KGN1cnNvcikpKQorKyAgICAgICAgICAgIGQtPmFkZEZpZWxk KGN1cnNvciwgdHJ1ZSk7CisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBDWEN1cnNvcl9GaWVs ZERlY2w6CisgICAgICAgICBkLT5hZGRGaWVsZChjdXJzb3IpOworQEAgLTEwNzIsMTMgKzExMjYs MTYgQEAgQmFzZVZpc2l0b3I6OlN0YXJ0VG9rZW5SZXN1bHQgQnVpbGRlcjo6c3RhcnRUb2tlbihj b25zdCBDWEN1cnNvciAmY3Vyc29yKQorICAgICBjYXNlIENYQ3Vyc29yX0NvbnN0cnVjdG9yOgor ICAgICBjYXNlIENYQ3Vyc29yX0Rlc3RydWN0b3I6IC8vIE5vdGU6IEFsc28gdXNlIGNsYW5nX0NY WENvbnN0cnVjdG9yX2lzLi5Db25zdHJ1Y3Rvcj8KKyAgICAgY2FzZSBDWEN1cnNvcl9DWFhNZXRo b2Q6CistICAgIGNhc2UgQ1hDdXJzb3JfQ29udmVyc2lvbkZ1bmN0aW9uOgorKyAgICBjYXNlIENY Q3Vyc29yX0NvbnZlcnNpb25GdW5jdGlvbjogeworICAgICAgICAgLy8gTWVtYmVyIGZ1bmN0aW9u cyBvZiBvdGhlciBjbGFzc2VzIGNhbiBiZSBkZWNsYXJlZCB0byBiZSBmcmllbmRzLgorICAgICAg ICAgLy8gU2tpcCBpbmxpbmUgbWVtYmVyIGZ1bmN0aW9ucyBvdXRzaWRlIGNsYXNzLCBvbmx5IGdv IGJ5IGRlY2xhcmF0aW9ucyBpbnNpZGUgY2xhc3MKKyAgICAgICAgIGlmIChkLT5tX3dpdGhpbkZy aWVuZERlY2wgfHwgIXdpdGhpbkNsYXNzRGVjbGFyYXRpb24oY3Vyc29yKSkKKyAgICAgICAgICAg ICByZXR1cm4gU2tpcDsKKy0gICAgICAgIGQtPm1fY3VycmVudEZ1bmN0aW9uID0gZC0+Y3JlYXRl TWVtYmVyRnVuY3Rpb24oY3Vyc29yLCBmYWxzZSk7CistICAgICAgICBkLT5tX3Njb3BlU3RhY2su YmFjaygpLT5hZGRGdW5jdGlvbihkLT5tX2N1cnJlbnRGdW5jdGlvbik7CisrICAgICAgICBhdXRv IGZ1bmMgPSBkLT5jcmVhdGVNZW1iZXJGdW5jdGlvbihjdXJzb3IsIGZhbHNlKTsKKysgICAgICAg IGlmICghZnVuYykKKysgICAgICAgICAgICByZXR1cm4gU2tpcDsKKysgICAgICAgIGQtPm1fY3Vy cmVudEZ1bmN0aW9uID0gZnVuYzsKKysgICAgfQorICAgICAgICAgYnJlYWs7CisgICAgIC8vIE5v dCBmdWxseSBzdXBwb3J0ZWQsIGN1cnJlbnRseSwgc2VlbiBhcyBub3JtYWwgZnVuY3Rpb24KKyAg ICAgLy8gTm90ZTogTWF5IGFwcGVhciBpbnNpZGUgY2xhc3MgKG1lbWJlciB0ZW1wbGF0ZSkgb3Ig b3V0c2lkZSAoZnJlZSB0ZW1wbGF0ZSkuCitAQCAtMTA4NiwzMSArMTE0MywzMCBAQCBCYXNlVmlz aXRvcjo6U3RhcnRUb2tlblJlc3VsdCBCdWlsZGVyOjpzdGFydFRva2VuKGNvbnN0IENYQ3Vyc29y ICZjdXJzb3IpCisgICAgICAgICBjb25zdCBDWEN1cnNvciBzZW1QYXJlbnQgPSBjbGFuZ19nZXRD dXJzb3JTZW1hbnRpY1BhcmVudChjdXJzb3IpOworICAgICAgICAgaWYgKGlzQ2xhc3NDdXJzb3Io c2VtUGFyZW50KSkgeworICAgICAgICAgICAgIGlmIChzZW1QYXJlbnQgPT0gY2xhbmdfZ2V0Q3Vy c29yTGV4aWNhbFBhcmVudChjdXJzb3IpKSB7CistICAgICAgICAgICAgICAgIGQtPm1fY3VycmVu dEZ1bmN0aW9uID0gZC0+Y3JlYXRlTWVtYmVyRnVuY3Rpb24oY3Vyc29yLCB0cnVlKTsKKy0gICAg ICAgICAgICAgICAgZC0+bV9zY29wZVN0YWNrLmJhY2soKS0+YWRkRnVuY3Rpb24oZC0+bV9jdXJy ZW50RnVuY3Rpb24pOworLSAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICAgICAg aWYgKGF1dG8gZnVuYyA9IGQtPmNyZWF0ZU1lbWJlckZ1bmN0aW9uKGN1cnNvciwgdHJ1ZSkpIHsK KysgICAgICAgICAgICAgICAgICAgIGQtPm1fY3VycmVudEZ1bmN0aW9uID0gZnVuYzsKKysgICAg ICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg fQorICAgICAgICAgICAgIHJldHVybiBTa2lwOyAvLyBpbmxpbmUgbWVtYmVyIGZ1bmN0aW9ucyBv dXRzaWRlIGNsYXNzCisgICAgICAgICB9CistICAgIH0KKy0gICAgICAgIGQtPm1fY3VycmVudEZ1 bmN0aW9uID0gZC0+Y3JlYXRlRnVuY3Rpb24oY3Vyc29yLCBDb2RlTW9kZWw6Ok5vcm1hbCwgdHJ1 ZSk7CisrICAgICAgICBhdXRvIGZ1bmMgPSBkLT5jcmVhdGVGdW5jdGlvbihjdXJzb3IsIENvZGVN b2RlbDo6Tm9ybWFsLCB0cnVlKTsKKysgICAgICAgIGlmICghZnVuYykKKysgICAgICAgICAgICBy ZXR1cm4gU2tpcDsKKysgICAgICAgIGQtPm1fY3VycmVudEZ1bmN0aW9uID0gZnVuYzsKKyAgICAg ICAgIGQtPnNldEZpbGVOYW1lKGN1cnNvciwgZC0+bV9jdXJyZW50RnVuY3Rpb24uZ2V0KCkpOwor LSAgICAgICAgZC0+bV9zY29wZVN0YWNrLmJhY2soKS0+YWRkRnVuY3Rpb24oZC0+bV9jdXJyZW50 RnVuY3Rpb24pOworKyAgICB9CisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBDWEN1cnNvcl9G dW5jdGlvbkRlY2w6CisgICAgICAgICAvLyBGcmVlIGZ1bmN0aW9ucyBvciBmdW5jdGlvbnMgY29t cGxldGVseSBkZWZpbmVkIHdpdGhpbiAiZnJpZW5kIiAoY2xhc3MKKyAgICAgICAgIC8vIG9wZXJh dG9ycykuIE5vdGU6IENYVHJhbnNsYXRpb25Vbml0X1NraXBGdW5jdGlvbkJvZGllcyBtdXN0IGJl IG9mZiBmb3IKKyAgICAgICAgIC8vIGNsYW5nX2lzQ3Vyc29yRGVmaW5pdGlvbigpIHRvIHdvcmsg aGVyZS4KKyAgICAgICAgIGlmICghZC0+bV93aXRoaW5GcmllbmREZWNsIHx8IGNsYW5nX2lzQ3Vy c29yRGVmaW5pdGlvbihjdXJzb3IpICE9IDApIHsKKy0gICAgICAgICAgICBhdXRvIHNjb3BlID0g ZC0+bV9zY29wZVN0YWNrLnNpemUoKSAtIDE7IC8vIGVuY2xvc2luZyBjbGFzcworLSAgICAgICAg ICAgIGlmIChkLT5tX3dpdGhpbkZyaWVuZERlY2wpIHsKKy0gICAgICAgICAgICAgICAgLy8gRnJp ZW5kIGRlY2xhcmF0aW9uOiBnbyBiYWNrIHRvIG5hbWVzcGFjZSBvciBmaWxlIHNjb3BlLgorLSAg ICAgICAgICAgICAgICBmb3IgKC0tc2NvcGU7ICBkLT5tX3Njb3BlU3RhY2suYXQoc2NvcGUpLT5r aW5kKCkgPT0gX0NvZGVNb2RlbEl0ZW06OktpbmRfQ2xhc3M7IC0tc2NvcGUpIHsKKy0gICAgICAg ICAgICAgICAgfQorLSAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBkLT5tX2N1cnJlbnRGdW5j dGlvbiA9IGQtPmNyZWF0ZUZ1bmN0aW9uKGN1cnNvciwgQ29kZU1vZGVsOjpOb3JtYWwsIGZhbHNl KTsKKysgICAgICAgICAgICBhdXRvIGZ1bmMgPSBkLT5jcmVhdGVGdW5jdGlvbihjdXJzb3IsIENv ZGVNb2RlbDo6Tm9ybWFsLCBmYWxzZSk7CisrICAgICAgICAgICAgaWYgKCFmdW5jKQorKyAgICAg ICAgICAgICAgICByZXR1cm4gU2tpcDsKKysgICAgICAgICAgICBkLT5tX2N1cnJlbnRGdW5jdGlv biA9IGZ1bmM7CisgICAgICAgICAgICAgZC0+bV9jdXJyZW50RnVuY3Rpb24tPnNldEhpZGRlbkZy aWVuZChkLT5tX3dpdGhpbkZyaWVuZERlY2wpOworLSAgICAgICAgICAgIGQtPm1fc2NvcGVTdGFj ay5hdChzY29wZSktPmFkZEZ1bmN0aW9uKGQtPm1fY3VycmVudEZ1bmN0aW9uKTsKKyAgICAgICAg IH0KKyAgICAgICAgIGJyZWFrOworICAgICBjYXNlIENYQ3Vyc29yX05hbWVzcGFjZTogeworQEAg LTExNDMsMTAgKzExOTksMTUgQEAgQmFzZVZpc2l0b3I6OlN0YXJ0VG9rZW5SZXN1bHQgQnVpbGRl cjo6c3RhcnRUb2tlbihjb25zdCBDWEN1cnNvciAmY3Vyc29yKQorICAgICAgICAgLy8gYW5kIGZ1 bmN0aW9uIHBvaW50ZXIgdHlwZWRlZnMuCisgICAgICAgICBpZiAoIWQtPm1fY3VycmVudEFyZ3Vt ZW50ICYmIGQtPm1fY3VycmVudEZ1bmN0aW9uKSB7CisgICAgICAgICAgICAgY29uc3QgUVN0cmlu ZyBuYW1lID0gZ2V0Q3Vyc29yU3BlbGxpbmcoY3Vyc29yKTsKKy0gICAgICAgICAgICBkLT5tX2N1 cnJlbnRBcmd1bWVudCA9IHN0ZDo6bWFrZV9zaGFyZWQ8X0FyZ3VtZW50TW9kZWxJdGVtPihkLT5t X21vZGVsLCBuYW1lKTsKKyAgICAgICAgICAgICBjb25zdCBhdXRvIHR5cGUgPSBjbGFuZ19nZXRD dXJzb3JUeXBlKGN1cnNvcik7CisrICAgICAgICAgICAgYXV0byB0eXBlTyA9IGQtPmNyZWF0ZVR5 cGVJbmZvKHR5cGUpOworKyAgICAgICAgICAgIGlmICghdHlwZU8uaGFzX3ZhbHVlKCkpIHsKKysg ICAgICAgICAgICAgICAgZC0+bV9jdXJyZW50RnVuY3Rpb24ucmVzZXQoKTsKKysgICAgICAgICAg ICAgICAgcmV0dXJuIFNraXA7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGQtPm1fY3Vy cmVudEFyZ3VtZW50ID0gc3RkOjptYWtlX3NoYXJlZDxfQXJndW1lbnRNb2RlbEl0ZW0+KGQtPm1f bW9kZWwsIG5hbWUpOworICAgICAgICAgICAgIGQtPm1fY3VycmVudEFyZ3VtZW50LT5zZXRTY29w ZVJlc29sdXRpb24oaGFzU2NvcGVSZXNvbHV0aW9uKHR5cGUpKTsKKy0gICAgICAgICAgICBkLT5t X2N1cnJlbnRBcmd1bWVudC0+c2V0VHlwZShkLT5jcmVhdGVUeXBlSW5mbyh0eXBlKSk7CisrICAg ICAgICAgICAgZC0+bV9jdXJyZW50QXJndW1lbnQtPnNldFR5cGUodHlwZU8udmFsdWUoKSk7Cisg ICAgICAgICAgICAgZC0+bV9jdXJyZW50RnVuY3Rpb24tPmFkZEFyZ3VtZW50KGQtPm1fY3VycmVu dEFyZ3VtZW50KTsKKyAgICAgICAgICAgICBRU3RyaW5nIGRlZmF1bHRWYWx1ZUV4cHJlc3Npb24g PSBCdWlsZGVyUHJpdmF0ZTo6Y3Vyc29yVmFsdWVFeHByZXNzaW9uKHRoaXMsIGN1cnNvcik7Cisg ICAgICAgICAgICAgaWYgKCFkZWZhdWx0VmFsdWVFeHByZXNzaW9uLmlzRW1wdHkoKSkgeworQEAg LTExNjMsMTAgKzEyMjQsMzAgQEAgQmFzZVZpc2l0b3I6OlN0YXJ0VG9rZW5SZXN1bHQgQnVpbGRl cjo6c3RhcnRUb2tlbihjb25zdCBDWEN1cnNvciAmY3Vyc29yKQorICAgICAgICAgICAgID8gZC0+ Y3JlYXRlVGVtcGxhdGVQYXJhbWV0ZXIoY3Vyc29yKSA6IGQtPmNyZWF0ZU5vblR5cGVUZW1wbGF0 ZVBhcmFtZXRlcihjdXJzb3IpOworICAgICAgICAgLy8gQXBwbHkgdG8gZnVuY3Rpb24vbWVtYmVy IHRlbXBsYXRlPworICAgICAgICAgaWYgKGQtPm1fY3VycmVudEZ1bmN0aW9uKSB7CistICAgICAg ICAgICAgZC0+bV9jdXJyZW50RnVuY3Rpb24tPnNldFRlbXBsYXRlUGFyYW1ldGVycyhkLT5tX2N1 cnJlbnRGdW5jdGlvbi0+dGVtcGxhdGVQYXJhbWV0ZXJzKCkgPDwgdEl0ZW0pOworKyAgICAgICAg ICAgIGlmICghdEl0ZW0pIHsKKysgICAgICAgICAgICAgICAgZC0+bV9jdXJyZW50RnVuY3Rpb24u cmVzZXQoKTsKKysgICAgICAgICAgICAgICAgcmV0dXJuIFNraXA7CisrICAgICAgICAgICAgfQor KyAgICAgICAgICAgIGQtPm1fY3VycmVudEZ1bmN0aW9uLT5hZGRUZW1wbGF0ZVBhcmFtZXRlcih0 SXRlbSk7CisgICAgICAgICB9IGVsc2UgaWYgKGQtPm1fY3VycmVudFRlbXBsYXRlVHlwZUFsaWFz KSB7CisrICAgICAgICAgICAgaWYgKCF0SXRlbSkgeworKyAgICAgICAgICAgICAgICBkLT5tX2N1 cnJlbnRUZW1wbGF0ZVR5cGVBbGlhcy5yZXNldCgpOworKyAgICAgICAgICAgICAgICByZXR1cm4g U2tpcDsKKysgICAgICAgICAgICB9CisgICAgICAgICAgICAgZC0+bV9jdXJyZW50VGVtcGxhdGVU eXBlQWxpYXMtPmFkZFRlbXBsYXRlUGFyYW1ldGVyKHRJdGVtKTsKKyAgICAgICAgIH0gZWxzZSBp ZiAoZC0+bV9jdXJyZW50Q2xhc3MpIHsgLy8gQXBwbHkgdG8gY2xhc3MKKysgICAgICAgICAgICBp ZiAoIXRJdGVtKSB7CisrICAgICAgICAgICAgICAgIC8vIEZhaWx1cmUgaXMgZmF0YWwgaWYgdGhl IGZpcnN0IHBhcmFtZXRlciBjYW5ub3QgYmUgZGV0ZXJtaW5lZCwgdHJhaWxpbmcKKysgICAgICAg ICAgICAgICAgLy8gcGFyYW1ldGVycyB3aWxsIGJlIHdhcm5lZCBhYm91dC4KKysgICAgICAgICAg ICAgICAgY29uc3QgYm9vbCBmYXRhbCA9IGQtPm1fY3VycmVudENsYXNzLT50ZW1wbGF0ZVBhcmFt ZXRlcnMoKS5pc0VtcHR5KCk7CisrICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgbWVzc2Fn ZSA9ICJGYWlsZWQgdG8gZGV0ZXJtaW5lIHRlbXBsYXRlIHBhcmFtZXRlciBvZiAiX0wxCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZC0+bV9jdXJyZW50Q2xhc3Mt Pm5hbWUoKTsKKysgICAgICAgICAgICAgICAgY29uc3QgRGlhZ25vc3RpYyBkKG1lc3NhZ2UsIGN1 cnNvciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhdGFsID8gQ1hEaWFn bm9zdGljX0Vycm9yIDogQ1hEaWFnbm9zdGljX1dhcm5pbmcpOworKyAgICAgICAgICAgICAgICBx V2FybmluZygpIDw8IGQ7CisrICAgICAgICAgICAgICAgIGFwcGVuZERpYWdub3N0aWMoZCk7Cisr ICAgICAgICAgICAgICAgIHJldHVybiBmYXRhbCA/IEVycm9yIDogU2tpcDsKKysgICAgICAgICAg ICB9CisgICAgICAgICAgICAgY29uc3QgUVN0cmluZyAmdHBsUGFybU5hbWUgPSB0SXRlbS0+bmFt ZSgpOworICAgICAgICAgICAgIGlmIChRX1VOTElLRUxZKCFpbnNlcnRUZW1wbGF0ZVBhcmFtZXRl ckludG9DbGFzc05hbWUodHBsUGFybU5hbWUsIGQtPm1fY3VycmVudENsYXNzKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHx8ICFpbnNlcnRUZW1wbGF0ZVBhcmFtZXRlckludG9DbGFzc05h bWUodHBsUGFybU5hbWUsICZkLT5tX3Njb3BlLmJhY2soKSkpKSB7CitAQCAtMTE3Nyw3ICsxMjU4 LDcgQEAgQmFzZVZpc2l0b3I6OlN0YXJ0VG9rZW5SZXN1bHQgQnVpbGRlcjo6c3RhcnRUb2tlbihj b25zdCBDWEN1cnNvciAmY3Vyc29yKQorICAgICAgICAgICAgICAgICBhcHBlbmREaWFnbm9zdGlj KGQpOworICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3I7CisgICAgICAgICAgICAgfQorLSAg ICAgICAgICAgIGQtPm1fY3VycmVudENsYXNzLT5zZXRUZW1wbGF0ZVBhcmFtZXRlcnMoZC0+bV9j dXJyZW50Q2xhc3MtPnRlbXBsYXRlUGFyYW1ldGVycygpIDw8IHRJdGVtKTsKKysgICAgICAgICAg ICBkLT5tX2N1cnJlbnRDbGFzcy0+YWRkVGVtcGxhdGVQYXJhbWV0ZXIodEl0ZW0pOworICAgICAg ICAgfQorICAgICB9CisgICAgICAgICBicmVhazsKK0BAIC0xMjg4LDkgKzEzNjksMTAgQEAgYm9v bCBCdWlsZGVyOjplbmRUb2tlbihjb25zdCBDWEN1cnNvciAmY3Vyc29yKQorICAgICAgICAgZC0+ bV9jdXJyZW50RmllbGQucmVzZXQoKTsKKyAgICAgICAgIGJyZWFrOworICAgICBjYXNlIENYQ3Vy c29yX0NvbnN0cnVjdG9yOgorLSAgICAgICAgZC0+cXVhbGlmeUNvbnN0cnVjdG9yKGN1cnNvcik7 CisgICAgICAgICBpZiAoZC0+bV9jdXJyZW50RnVuY3Rpb24pIHsKKysgICAgICAgICAgICBkLT5x dWFsaWZ5Q29uc3RydWN0b3IoY3Vyc29yKTsKKyAgICAgICAgICAgICBkLT5tX2N1cnJlbnRGdW5j dGlvbi0+X2RldGVybWluZVR5cGUoKTsKKysgICAgICAgICAgICBkLT5tX3Njb3BlU3RhY2suYmFj aygpLT5hZGRGdW5jdGlvbihkLT5tX2N1cnJlbnRGdW5jdGlvbik7CisgICAgICAgICAgICAgZC0+ bV9jdXJyZW50RnVuY3Rpb24ucmVzZXQoKTsKKyAgICAgICAgIH0KKyAgICAgICAgIGJyZWFrOwor QEAgLTEzMDAsMTIgKzEzODIsMjggQEAgYm9vbCBCdWlsZGVyOjplbmRUb2tlbihjb25zdCBDWEN1 cnNvciAmY3Vyc29yKQorICAgICBjYXNlIENYQ3Vyc29yX0Z1bmN0aW9uVGVtcGxhdGU6CisgICAg ICAgICBpZiAoZC0+bV9jdXJyZW50RnVuY3Rpb24pIHsKKyAgICAgICAgICAgICBkLT5tX2N1cnJl bnRGdW5jdGlvbi0+X2RldGVybWluZVR5cGUoKTsKKysgICAgICAgICAgICBhdXRvIHNjb3BlID0g ZC0+bV9zY29wZVN0YWNrLnNpemUoKSAtIDE7IC8vIGVuY2xvc2luZyBjbGFzcworKyAgICAgICAg ICAgIGlmIChjdXJzb3Iua2luZCA9PSBDWEN1cnNvcl9GdW5jdGlvbkRlY2wpIHsKKysgICAgICAg ICAgICAgICAgLy8gRnJlZSBmdW5jdGlvbnMgb3IgZnVuY3Rpb25zIGNvbXBsZXRlbHkgZGVmaW5l ZCB3aXRoaW4gImZyaWVuZCIgKGNsYXNzCisrICAgICAgICAgICAgICAgIC8vIG9wZXJhdG9ycyku CisrICAgICAgICAgICAgICAgIGlmICghZC0+bV93aXRoaW5GcmllbmREZWNsIHx8IGNsYW5nX2lz Q3Vyc29yRGVmaW5pdGlvbihjdXJzb3IpICE9IDApIHsKKysgICAgICAgICAgICAgICAgICAgIGlm IChkLT5tX3dpdGhpbkZyaWVuZERlY2wpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAvLyBG cmllbmQgZGVjbGFyYXRpb246IGdvIGJhY2sgdG8gbmFtZXNwYWNlIG9yIGZpbGUgc2NvcGUuCisr ICAgICAgICAgICAgICAgICAgICAgICAgZm9yICgtLXNjb3BlOworKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZC0+bV9zY29wZVN0YWNrLmF0KHNjb3BlKS0+a2luZCgpID09IF9Db2RlTW9k ZWxJdGVtOjpLaW5kX0NsYXNzOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1zY29w ZSkgeworKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgICAgIH0K KysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBkLT5tX3Nj b3BlU3RhY2suYXQoc2NvcGUpLT5hZGRGdW5jdGlvbihkLT5tX2N1cnJlbnRGdW5jdGlvbik7Cisg ICAgICAgICAgICAgZC0+bV9jdXJyZW50RnVuY3Rpb24ucmVzZXQoKTsKKyAgICAgICAgIH0KKyAg ICAgICAgIGJyZWFrOworICAgICBjYXNlIENYQ3Vyc29yX0NvbnZlcnNpb25GdW5jdGlvbjoKKyAg ICAgICAgIGlmIChkLT5tX2N1cnJlbnRGdW5jdGlvbikgeworICAgICAgICAgICAgIGQtPm1fY3Vy cmVudEZ1bmN0aW9uLT5zZXRGdW5jdGlvblR5cGUoQ29kZU1vZGVsOjpDb252ZXJzaW9uT3BlcmF0 b3IpOworKyAgICAgICAgICAgIGQtPm1fc2NvcGVTdGFjay5iYWNrKCktPmFkZEZ1bmN0aW9uKGQt Pm1fY3VycmVudEZ1bmN0aW9uKTsKKyAgICAgICAgICAgICBkLT5tX2N1cnJlbnRGdW5jdGlvbi5y ZXNldCgpOworICAgICAgICAgfQorICAgICAgICAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvc291cmNl cy9zaGlib2tlbjYvQXBpRXh0cmFjdG9yL2NsYW5ncGFyc2VyL2NsYW5nYnVpbGRlci5oIGIvc291 cmNlcy9zaGlib2tlbjYvQXBpRXh0cmFjdG9yL2NsYW5ncGFyc2VyL2NsYW5nYnVpbGRlci5oCitp bmRleCBmNjBiYmUxNTUuLjRjYzU4ZDA4ZCAxMDA2NDQKKy0tLSBhL3NvdXJjZXMvc2hpYm9rZW42 L0FwaUV4dHJhY3Rvci9jbGFuZ3BhcnNlci9jbGFuZ2J1aWxkZXIuaAorKysrIGIvc291cmNlcy9z aGlib2tlbjYvQXBpRXh0cmFjdG9yL2NsYW5ncGFyc2VyL2NsYW5nYnVpbGRlci5oCitAQCAtMzMs NiArMzMsOCBAQCBwdWJsaWM6CisgCisgICAgIEZpbGVNb2RlbEl0ZW0gZG9tKCkgY29uc3Q7Cisg CisrICAgIFFTdHJpbmdMaXN0IHJlamVjdGVkVHlwZXMoKSBjb25zdDsKKysKKyBwcml2YXRlOgor ICAgICBCdWlsZGVyUHJpdmF0ZSAqZDsKKyB9OworZGlmZiAtLWdpdCBhL3NvdXJjZXMvc2hpYm9r ZW42L0FwaUV4dHJhY3Rvci9jbGFuZ3BhcnNlci9jbGFuZ3BhcnNlci5jcHAgYi9zb3VyY2VzL3No aWJva2VuNi9BcGlFeHRyYWN0b3IvY2xhbmdwYXJzZXIvY2xhbmdwYXJzZXIuY3BwCitpbmRleCBm ZTVhZjA2ZjIuLjgwNDc4ODE0ZSAxMDA2NDQKKy0tLSBhL3NvdXJjZXMvc2hpYm9rZW42L0FwaUV4 dHJhY3Rvci9jbGFuZ3BhcnNlci9jbGFuZ3BhcnNlci5jcHAKKysrKyBiL3NvdXJjZXMvc2hpYm9r ZW42L0FwaUV4dHJhY3Rvci9jbGFuZ3BhcnNlci9jbGFuZ3BhcnNlci5jcHAKK0BAIC0yODYsNyAr Mjg2LDggQEAgc3RhdGljIHZvaWQgc2V0dXBUYXJnZXQoQ1hUcmFuc2xhdGlvblVuaXQgdHJhbnNs YXRpb25Vbml0KQorICAgICBRU3RyaW5nIG1lc3NhZ2U7CisgICAgIHsKKyAgICAgICAgIFFUZXh0 U3RyZWFtIHN0cigmbWVzc2FnZSk7CistICAgICAgICBzdHIgPDwgIkNMQU5HIHYiIDw8IENJTkRF WF9WRVJTSU9OX01BSk9SIDw8ICcuJyA8PCBDSU5ERVhfVkVSU0lPTl9NSU5PUgorKyAgICAgICAg c3RyIDw8ICJDTEFORyB2IiA8PCBMTFZNX1ZFUlNJT04gPDwgJy8nCisrICAgICAgICAgICAgPDwg Q0lOREVYX1ZFUlNJT05fTUFKT1IgPDwgJy4nIDw8IENJTkRFWF9WRVJTSU9OX01JTk9SCisgICAg ICAgICAgICAgPDwgIiB0YXJnZXRpbmcgXCIiIDw8IHRhcmdldFRyaXBsZSgpIDw8ICJcIi8iCisg ICAgICAgICAgICAgPDwgY2xhbmc6OmNvbXBpbGVyVHJpcGxldFZhbHVlKGNsYW5nOjpjb21waWxl cigpKQorICAgICAgICAgICAgIDw8ICIsICIgPDwgcG9pbnRlclNpemUoKSA8PCAiYml0IjsKK0BA IC0zMjEsOSArMzIyLDE5IEBAIGJvb2wgcGFyc2UoY29uc3QgUUJ5dGVBcnJheUxpc3QgICZjbGFu Z0FyZ3MsIGJvb2wgYWRkQ29tcGlsZXJTdXBwb3J0QXJndW1lbnRzLAorICAgICBzZXR1cFRhcmdl dCh0cmFuc2xhdGlvblVuaXQpOworIAorICAgICBDWEN1cnNvciByb290Q3Vyc29yID0gY2xhbmdf Z2V0VHJhbnNsYXRpb25Vbml0Q3Vyc29yKHRyYW5zbGF0aW9uVW5pdCk7CisrI2lmIExMVk1fVkVS U0lPTiA+PSAyMgorKyAgICBDWFByaW50aW5nUG9saWN5IHByaW50aW5nUG9saWN5ID0gY2xhbmdf Z2V0Q3Vyc29yUHJpbnRpbmdQb2xpY3kocm9vdEN1cnNvcik7CisrICAgIGNsYW5nX1ByaW50aW5n UG9saWN5X3NldFByb3BlcnR5KHByaW50aW5nUG9saWN5LCBDWFByaW50aW5nUG9saWN5X0luY2x1 ZGVOZXdsaW5lcywgMCk7CisrICAgIGJ2LnNldFByaW50aW5nUG9saWN5KHByaW50aW5nUG9saWN5 KTsKKysjZW5kaWYKKyAKKyAgICAgY2xhbmdfdmlzaXRDaGlsZHJlbihyb290Q3Vyc29yLCB2aXNp dG9yQ2FsbGJhY2ssIHJlaW50ZXJwcmV0X2Nhc3Q8Q1hDbGllbnREYXRhPigmYnYpKTsKKyAKKysj aWYgTExWTV9WRVJTSU9OID49IDIyCisrICAgIGJ2LnNldFByaW50aW5nUG9saWN5KG51bGxwdHIp OworKyAgICBjbGFuZ19QcmludGluZ1BvbGljeV9kaXNwb3NlKHByaW50aW5nUG9saWN5KTsKKysj ZW5kaWYKKysKKyAgICAgUUxpc3Q8RGlhZ25vc3RpYz4gZGlhZ25vc3RpY3MgPSBnZXREaWFnbm9z dGljcyh0cmFuc2xhdGlvblVuaXQpOworICAgICBkaWFnbm9zdGljcy5hcHBlbmQoYnYuZGlhZ25v c3RpY3MoKSk7CisgICAgIGJ2LnNldERpYWdub3N0aWNzKGRpYWdub3N0aWNzKTsKK2RpZmYgLS1n aXQgYS9zb3VyY2VzL3NoaWJva2VuNi9BcGlFeHRyYWN0b3IvY2xhbmdwYXJzZXIvY2xhbmdwYXJz ZXIuaCBiL3NvdXJjZXMvc2hpYm9rZW42L0FwaUV4dHJhY3Rvci9jbGFuZ3BhcnNlci9jbGFuZ3Bh cnNlci5oCitpbmRleCBkNzY2N2VhYTMuLjA5ZjQ4ZjlkZSAxMDA2NDQKKy0tLSBhL3NvdXJjZXMv c2hpYm9rZW42L0FwaUV4dHJhY3Rvci9jbGFuZ3BhcnNlci9jbGFuZ3BhcnNlci5oCisrKysgYi9z b3VyY2VzL3NoaWJva2VuNi9BcGlFeHRyYWN0b3IvY2xhbmdwYXJzZXIvY2xhbmdwYXJzZXIuaAor QEAgLTQsNyArNCw3IEBACisgI2lmbmRlZiBDTEFOR1BBUlNFUl9ICisgI2RlZmluZSBDTEFOR1BB UlNFUl9ICisgCistI2luY2x1ZGUgPGNsYW5nLWMvSW5kZXguaD4KKysjaW5jbHVkZSAiY2xhbmdf dHlwZWRlZnMuaCIKKyAKKyAjaW5jbHVkZSA8UXRDb3JlL3FieXRlYXJyYXlsaXN0Lmg+CisgI2lu Y2x1ZGUgPFF0Q29yZS9xaGFzaC5oPgorQEAgLTcyLDEwICs3MiwxNCBAQCBwdWJsaWM6CisgICAg IC8vIEZvciB1c2FnZSBieSB0aGUgcGFyc2VyCisgICAgIGJvb2wgX2hhbmRsZVZpc2l0TG9jYXRp b24oIGNvbnN0IENYU291cmNlTG9jYXRpb24gJmxvY2F0aW9uKTsKKyAKKysgICAgUHJpbnRpbmdQ b2xpY3kgcHJpbnRpbmdQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3ByaW50aW5nUG9saWN5OyB9 CisrICAgIHZvaWQgc2V0UHJpbnRpbmdQb2xpY3koQ1hQcmludGluZ1BvbGljeSBwKSB7IG1fcHJp bnRpbmdQb2xpY3kgPSBwOyB9CisrCisgcHJpdmF0ZToKKyAgICAgU291cmNlRmlsZUNhY2hlIG1f ZmlsZUNhY2hlOworICAgICBEaWFnbm9zdGljcyBtX2RpYWdub3N0aWNzOworICAgICBDWEZpbGUg bV9jdXJyZW50Q3hGaWxle307CisrICAgIFByaW50aW5nUG9saWN5IG1fcHJpbnRpbmdQb2xpY3kg PSBudWxscHRyOworICAgICBib29sIG1fdmlzaXRDdXJyZW50ID0gdHJ1ZTsKKyB9OworIAorZGlm ZiAtLWdpdCBhL3NvdXJjZXMvc2hpYm9rZW42L0FwaUV4dHJhY3Rvci9jbGFuZ3BhcnNlci9jbGFu Z3R5cGUuY3BwIGIvc291cmNlcy9zaGlib2tlbjYvQXBpRXh0cmFjdG9yL2NsYW5ncGFyc2VyL2Ns YW5ndHlwZS5jcHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAuLmJkNDU1 YmQ1MworLS0tIC9kZXYvbnVsbAorKysrIGIvc291cmNlcy9zaGlib2tlbjYvQXBpRXh0cmFjdG9y L2NsYW5ncGFyc2VyL2NsYW5ndHlwZS5jcHAKK0BAIC0wLDAgKzEsODMgQEAKKysvLyBDb3B5cmln aHQgKEMpIDIwMjYgVGhlIFF0IENvbXBhbnkgTHRkLgorKy8vIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBMaWNlbnNlUmVmLVF0LUNvbW1lcmNpYWwgT1IgR1BMLTMuMC1vbmx5IFdJVEggUXQtR1BM LWV4Y2VwdGlvbi0xLjAKKysKKysjaW5jbHVkZSAiY2xhbmd0eXBlLmgiCisrCisrI2luY2x1ZGUg PFF0Q29yZS9xZGVidWcuaD4KKysKKyt1c2luZyBuYW1lc3BhY2UgUXQ6OlN0cmluZ0xpdGVyYWxz OworKworKy8vIFVwIHVudGlsIGNsYW5nIHZlcnNpb24gMjEsIGNsYW5nX2dldFR5cGVTcGVsbGlu ZygpIHdhcyB1c2VkIHRvIHJldHJpZXZlIHR5cGUgbmFtZXMsCisrLy8gd2hpY2ggcmV0dXJuZWQg ZnVsbHkgcXVhbGlmaWVkIG5hbWVzLiBJbiBjbGFuZyAyMiwgY2xhbmdfZ2V0VHlwZVNwZWxsaW5n KCkgd2FzCisrLy8gY2hhbmdlZCB0byByZXR1cm4gdGhlIGFjdHVhbCBzcGVsbGluZywgdGhhdCBp cywgbm8gbG9uZ2VyIHJldHVybiBmdWxseSBxdWFsaWZpZWQgbmFtZXMKKysvLyAoZnJvbSBmb3Ig ZXhhbXBsZSBpbm5lciBjbGFzcyBjb250ZXh0cykgdW5sZXNzIHRoZXkgd2VyZSBzcGVsbGVkIG91 dC4KKysvLyBjbGFuZ19nZXRGdWxseVF1YWxpZmllZE5hbWUoKSB3YXMgcHJvdmlkZWQgYXMgYSBy ZXBsYWNlbWVudCwgYnV0IHRoYXQgcmV0dXJucworKy8vIHRlbXBsYXRlIHBhcmFtZXRlcnMgb2Yg dGhlIGNsYXNzIGFzIHdlbGwsIHRoYXQgaXMsICJzdGQ6Omxpc3Q8aW50Pjo6dmFsdWVfdHlwZSIK KysvLyBpbnN0ZWFkIG9mICJzdGQ6Omxpc3Q6OnZhbHVlX3R5cGUiLiBUaG9zZSB0aGV5IG5lZWQg dG8gYmUgcmVtb3ZlZCBmb3IgdGhlCisrLy8gdHlwZSBlbnRyeSBsb29rdXAgc3lzdGVtIHRvIHdv cmsuIFRoaXMgaXMgZG9uZSBieSBwYXJzZVR5cGVOYW1lKCkuCisrLy8gRklYTUU6IEtlZXAgY2hl Y2tpbmcgd2hldGhlciB0aGlzIGNhbiBiZSByZXBsYWNlZCBieSBhIENYUHJpbnRpbmdQb2xpY3kg c2V0dGluZworKy8vIGluIGEgbGF0ZXIgY2xhbmcgdmVyc2lvbi4KKysKKytuYW1lc3BhY2UgY2xh bmcgeworKworKy8vIEZpbmQgdGhlIHN0YXJ0IG9mIGEgdGVtcGxhdGUgc3RhcnRpbmcgZnJvbSB0 aGUgY2xvc2luZyAnPicKKytzdGF0aWMgcXNpemV0eXBlIGZpbmRUZW1wbGF0ZVN0YXJ0KFFTdHJp bmdWaWV3IHN2LCBxc2l6ZXR5cGUgcG9zKQorK3sKKysgICAgUV9BU1NFUlQocG9zID4gMCAmJiBw b3MgPCBzdi5zaXplKCkgJiYgc3YuYXQocG9zKSA9PSB1Jz4nKTsKKysgICAgaW50IGxldmVsID0g MTsKKysgICAgZm9yICgtLXBvczsgcG9zID49IDA7IC0tcG9zKSB7CisrICAgICAgICBzd2l0Y2gg KHN2LmF0KHBvcykudW5pY29kZSgpKSB7CisrICAgICAgICBjYXNlICc+JzoKKysgICAgICAgICAg ICArK2xldmVsOworKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgY2FzZSAnPCc6CisrICAg ICAgICAgICAgaWYgKC0tbGV2ZWwgPT0gMCkKKysgICAgICAgICAgICAgICAgcmV0dXJuIHBvczsK KysgICAgICAgICAgICBicmVhazsKKysgICAgICAgIGRlZmF1bHQ6CisrICAgICAgICAgICAgYnJl YWs7CisrICAgICAgICB9CisrICAgIH0KKysgICAgcmV0dXJuIC0xOworK30KKysKKytzdGQ6Om9w dGlvbmFsPFR5cGVOYW1lPiBwYXJzZVR5cGVOYW1lKFFTdHJpbmcgdCkKKyt7CisrICAgIFR5cGVO YW1lIHJlc3VsdDsKKysgICAgLy8gU2tpcCBvdmVyIHRoZSB0cmFpbGluZyB0ZW1wbGF0ZSBwYXJh bWV0ZXJzICJsaXN0PFQ+OjppdGVyYXRvcjxWPiIgLT4KKysgICAgLy8gImxpc3Q8VD46Oml0ZXJh dG9yIgorKyAgICBpZiAodC5lbmRzV2l0aCh1Jz4nKSkgeworKyAgICAgICAgY29uc3QgYXV0byBw b3MgPSBmaW5kVGVtcGxhdGVTdGFydCh0LCB0LnNpemUoKSAtIDEpOworKyAgICAgICAgaWYgKHBv cyA9PSAtMSkKKysgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworKyAgICAgICAgcmVz dWx0LnRlbXBsYXRlUGFyYW1ldGVycyA9IHQuc2xpY2VkKHBvcywgdC5zaXplKCkgLSBwb3MpOwor KyAgICAgICAgdC50cnVuY2F0ZShwb3MpOworKyAgICB9CisrCisrICAgIC8vIFJlbW92ZSBjbGFz cyB0ZW1wbGF0ZSBwYXJhbWV0ZXJzICJsaXN0PFQ+OjppdGVyYXRvciIgLT4gImxpc3Q6Oml0ZXJh dG9yIgorKyAgICB3aGlsZSAodHJ1ZSkgeworKyAgICAgICAgYXV0byBzcGVjRW5kID0gdC5sYXN0 SW5kZXhPZigiPjo6Il9MMSk7CisrICAgICAgICBpZiAoc3BlY0VuZCA9PSAtMSkKKysgICAgICAg ICAgICBicmVhazsKKysgICAgICAgIGNvbnN0IGF1dG8gcG9zID0gZmluZFRlbXBsYXRlU3RhcnQo dCwgc3BlY0VuZCk7CisrICAgICAgICBpZiAocG9zID09IC0xKQorKyAgICAgICAgICAgIHJldHVy biBzdGQ6Om51bGxvcHQ7CisrICAgICAgICB0LnJlbW92ZShwb3MsIHNwZWNFbmQgKyAxIC0gcG9z KTsKKysgICAgfQorKyAgICByZXN1bHQubmFtZSA9IHQ7CisrICAgIHJldHVybiByZXN1bHQ7Cisr fQorKworK1FEZWJ1ZyBvcGVyYXRvcjw8KFFEZWJ1ZyBkZWJ1ZywgY29uc3QgVHlwZU5hbWUgJmN0 KQorK3sKKysgICAgUURlYnVnU3RhdGVTYXZlciBzYXZlcihkZWJ1Zyk7CisrICAgIGRlYnVnLm5v c3BhY2UoKTsKKysgICAgZGVidWcubm9xdW90ZSgpOworKyAgICBkZWJ1ZyA8PCAiQ2xhbmdUeXBl TmFtZShuYW1lPVwiIiA8PCBjdC5uYW1lIDw8ICciJzsKKysgICAgaWYgKCFjdC50ZW1wbGF0ZVBh cmFtZXRlcnMuaXNFbXB0eSgpKQorKyAgICAgICAgZGVidWcgPDwgIiwgdGVtcGxhdGVQYXJhbWV0 ZXJzPVwiIiA8PCBjdC50ZW1wbGF0ZVBhcmFtZXRlcnMgPDwgJyInOworKyAgICBkZWJ1ZyA8PCAn KSc7CisrICAgIHJldHVybiBkZWJ1ZzsKKyt9CisrCisrfSAvLyBuYW1lc3BhY2UgY2xhbmcKK2Rp ZmYgLS1naXQgYS9zb3VyY2VzL3NoaWJva2VuNi9BcGlFeHRyYWN0b3IvY2xhbmdwYXJzZXIvY2xh bmd0eXBlLmggYi9zb3VyY2VzL3NoaWJva2VuNi9BcGlFeHRyYWN0b3IvY2xhbmdwYXJzZXIvY2xh bmd0eXBlLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAuLjBhZTk3MDY0 OAorLS0tIC9kZXYvbnVsbAorKysrIGIvc291cmNlcy9zaGlib2tlbjYvQXBpRXh0cmFjdG9yL2Ns YW5ncGFyc2VyL2NsYW5ndHlwZS5oCitAQCAtMCwwICsxLDI4IEBACisrLy8gQ29weXJpZ2h0IChD KSAyMDI2IFRoZSBRdCBDb21wYW55IEx0ZC4KKysvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog TGljZW5zZVJlZi1RdC1Db21tZXJjaWFsIE9SIEdQTC0zLjAtb25seSBXSVRIIFF0LUdQTC1leGNl cHRpb24tMS4wCisrCisrI2lmbmRlZiBDTEFOR1RZUEVfSAorKyNkZWZpbmUgQ0xBTkdUWVBFX0gK KysKKysjaW5jbHVkZSA8UXRDb3JlL3FzdHJpbmcuaD4KKysKKysjaW5jbHVkZSA8b3B0aW9uYWw+ CisrCisrUVRfRk9SV0FSRF9ERUNMQVJFX0NMQVNTKFFEZWJ1ZykKKysKKytuYW1lc3BhY2UgY2xh bmcgeworKworK3N0cnVjdCBUeXBlTmFtZQorK3sKKysgICAgUVN0cmluZyBuYW1lOworKyAgICBR U3RyaW5nIHRlbXBsYXRlUGFyYW1ldGVyczsKKyt9OworKworKy8vIFNwbGl0IGEgdHlwZSBuYW1l ICJzdGQ6Omxpc3Q8aW50Pjo6dmFsdWVfdHlwZTxUPiIgaW50byB0aGUgY2Fub25pY2FsIG5hbWUK KysvLyAic3RkOjpsaXN0Ojp2YWx1ZV90eXBlIiBhbmQgaXRzIHRlbXBsYXRlIHBhcmFtZXRlcnMg IjxUPiIKKytzdGQ6Om9wdGlvbmFsPFR5cGVOYW1lPiBwYXJzZVR5cGVOYW1lKFFTdHJpbmcgdCk7 CisrCisrUURlYnVnIG9wZXJhdG9yPDwoUURlYnVnLCBjb25zdCBUeXBlTmFtZSAmY3QpOworK30g Ly8gbmFtZXNwYWNlIGNsYW5nCisrCisrI2VuZGlmIC8vIENMQU5HVFlQRV9ICitkaWZmIC0tZ2l0 IGEvc291cmNlcy9zaGlib2tlbjYvQXBpRXh0cmFjdG9yL2NsYW5ncGFyc2VyL2NsYW5ndXRpbHMu Y3BwIGIvc291cmNlcy9zaGlib2tlbjYvQXBpRXh0cmFjdG9yL2NsYW5ncGFyc2VyL2NsYW5ndXRp bHMuY3BwCitpbmRleCAzODRmZDY4MTUuLjI0NjQ2ZGI1MyAxMDA2NDQKKy0tLSBhL3NvdXJjZXMv c2hpYm9rZW42L0FwaUV4dHJhY3Rvci9jbGFuZ3BhcnNlci9jbGFuZ3V0aWxzLmNwcAorKysrIGIv c291cmNlcy9zaGlib2tlbjYvQXBpRXh0cmFjdG9yL2NsYW5ncGFyc2VyL2NsYW5ndXRpbHMuY3Bw CitAQCAtMTAsNiArMTAsOCBAQAorIAorICNpbmNsdWRlIDxzdHJpbmdfdmlldz4KKyAKKyt1c2lu ZyBuYW1lc3BhY2UgUXQ6OlN0cmluZ0xpdGVyYWxzOworKworIGJvb2wgb3BlcmF0b3I9PShjb25z dCBDWEN1cnNvciAmYzEsIGNvbnN0IENYQ3Vyc29yICZjMikgbm9leGNlcHQKKyB7CisgICAgIHJl dHVybiBjMS5raW5kID09IGMyLmtpbmQKK0BAIC0xMzcsMTEgKzEzOSwyNiBAQCBDWFR5cGUgZnVs bHlSZXNvbHZlVHlwZShjb25zdCBDWFR5cGUgJnR5cGUpCisgICAgIHJldHVybiByZXNvbHZlVHlw ZWRlZihyZXNvbHZlRWxhYm9yYXRlZFR5cGUodHlwZSkpOworIH0KKyAKKy1RU3RyaW5nIGdldFR5 cGVOYW1lKGNvbnN0IENYVHlwZSAmdHlwZSkKKytRU3RyaW5nIGdldFR5cGVOYW1lKGNvbnN0IENY VHlwZSAmdHlwZSwgW1ttYXliZV91bnVzZWRdXSBQcmludGluZ1BvbGljeSBwKQorIHsKKysgICAg Ly8gQmVoYXZpb3JhbCBjaGFuZ2UsIGNsYW5nX2dldFR5cGVTcGVsbGluZygpIG1heSBubyBsb25n ZXIgcmV0dXJuIHRoZSBxdWFsaWZpZWQgbmFtZSBpbiAyMi4xCisrI2lmIExMVk1fVkVSU0lPTiA+ PSAyMgorKyAgICAvLyBjbGFuZ19nZXRGdWxseVF1YWxpZmllZE5hbWUoKSBjYW4gY3Jhc2ggKGFz c2VydGlvbiBpbiBnZXRGdWxseVF1YWxpZmllZFR5cGUpCisrICAgIC8vIG9uIHR5cGVzIHdpdGhv dXQgZXhwbGljaXQgaGFuZGxpbmcgKGZ1bmN0aW9uIHR5cGVzLCBzb21lIGRlcGVuZGVudCB0eXBl cywgZXRjLikuCisrICAgIC8vIE9ubHkgdXNlIGl0IGZvciB0eXBlcyB0aGF0IGhhdmUgYSB2YWxp ZCB0eXBlIGRlY2xhcmF0aW9uIChyZWNvcmRzLCBlbnVtcywgdHlwZWRlZnMpLgorKyAgICBpZiAo cCAmJiB0eXBlLmtpbmQgIT0gQ1hUeXBlX0ludmFsaWQpIHsKKysgICAgICAgIENYQ3Vyc29yIGRl Y2wgPSBjbGFuZ19nZXRUeXBlRGVjbGFyYXRpb24odHlwZSk7CisrICAgICAgICBpZiAoIWNsYW5n X2lzSW52YWxpZChkZWNsLmtpbmQpKSB7CisrICAgICAgICAgICAgQ1hTdHJpbmcgcXVhbE5hbWUg PSBjbGFuZ19nZXRGdWxseVF1YWxpZmllZE5hbWUodHlwZSwgcCwgMCk7CisrICAgICAgICAgICAg UVN0cmluZyByZXN1bHQgPSBRU3RyaW5nOjpmcm9tVXRmOChjbGFuZ19nZXRDU3RyaW5nKHF1YWxO YW1lKSk7CisrICAgICAgICAgICAgY2xhbmdfZGlzcG9zZVN0cmluZyhxdWFsTmFtZSk7CisrICAg ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKysgICAgICAgIH0KKysgICAgfQorKyNlbmRpZgorICAg ICBDWFN0cmluZyB0eXBlU3BlbGxpbmcgPSBjbGFuZ19nZXRUeXBlU3BlbGxpbmcodHlwZSk7Cisg ICAgIGNvbnN0IFFTdHJpbmcgcmVzdWx0ID0gUVN0cmluZzo6ZnJvbVV0ZjgoY2xhbmdfZ2V0Q1N0 cmluZyh0eXBlU3BlbGxpbmcpKTsKKyAgICAgY2xhbmdfZGlzcG9zZVN0cmluZyh0eXBlU3BlbGxp bmcpOworICAgICByZXR1cm4gcmVzdWx0OworIH0KKyAKK0BAIC0xNTcsOSArMTY2LDkgQEAgYm9v bCBoYXNTY29wZVJlc29sdXRpb24oY29uc3QgQ1hUeXBlICZ0eXBlKQorIH0KKyAKKyAvLyBSZXNv bHZlIGVsYWJvcmF0ZWQgdHlwZXMgb2NjdXJyaW5nIHdpdGggY2xhbmcgMTYKKy1RU3RyaW5nIGdl dFJlc29sdmVkVHlwZU5hbWUoY29uc3QgQ1hUeXBlICZ0eXBlKQorK1FTdHJpbmcgZ2V0UmVzb2x2 ZWRUeXBlTmFtZShjb25zdCBDWFR5cGUgJnR5cGUsIFByaW50aW5nUG9saWN5IHApCisgeworLSAg ICByZXR1cm4gZ2V0VHlwZU5hbWUocmVzb2x2ZUVsYWJvcmF0ZWRUeXBlKHR5cGUpKTsKKysgICAg cmV0dXJuIGdldFR5cGVOYW1lKHJlc29sdmVFbGFib3JhdGVkVHlwZSh0eXBlKSwgcCk7CisgfQor IAorIERpYWdub3N0aWM6OkRpYWdub3N0aWMoY29uc3QgUVN0cmluZyAmbSwgY29uc3QgQ1hDdXJz b3IgJmMsIENYRGlhZ25vc3RpY1NldmVyaXR5IHMpCitkaWZmIC0tZ2l0IGEvc291cmNlcy9zaGli b2tlbjYvQXBpRXh0cmFjdG9yL2NsYW5ncGFyc2VyL2NsYW5ndXRpbHMuaCBiL3NvdXJjZXMvc2hp Ym9rZW42L0FwaUV4dHJhY3Rvci9jbGFuZ3BhcnNlci9jbGFuZ3V0aWxzLmgKK2luZGV4IDU3NWJi OWYwNy4uZTFhNzk1MzRmIDEwMDY0NAorLS0tIGEvc291cmNlcy9zaGlib2tlbjYvQXBpRXh0cmFj dG9yL2NsYW5ncGFyc2VyL2NsYW5ndXRpbHMuaAorKysrIGIvc291cmNlcy9zaGlib2tlbjYvQXBp RXh0cmFjdG9yL2NsYW5ncGFyc2VyL2NsYW5ndXRpbHMuaAorQEAgLTQsNyArNCw4IEBACisgI2lm bmRlZiBDTEFOR1VUSUxTX0gKKyAjZGVmaW5lIENMQU5HVVRJTFNfSAorIAorLSNpbmNsdWRlIDxj bGFuZy1jL0luZGV4Lmg+CisrI2luY2x1ZGUgImNsYW5nX3R5cGVkZWZzLmgiCisrCisgI2luY2x1 ZGUgPFF0Q29yZS9xc3RyaW5nLmg+CisgI2luY2x1ZGUgPFF0Q29yZS9xc3RyaW5nbGlzdC5oPgor ICNpbmNsdWRlIDxRdENvcmUvcWNvbXBhcmUuaD4KK0BAIC0yNiwxNCArMjcsMTAgQEAgbmFtZXNw YWNlIGNsYW5nIHsKKyBRU3RyaW5nIGdldEN1cnNvcktpbmROYW1lKENYQ3Vyc29yS2luZCBjdXJz b3JLaW5kKTsKKyBRU3RyaW5nIGdldEN1cnNvclNwZWxsaW5nKGNvbnN0IENYQ3Vyc29yICZjdXJz b3IpOworIFFTdHJpbmcgZ2V0Q3Vyc29yRGlzcGxheU5hbWUoY29uc3QgQ1hDdXJzb3IgJmN1cnNv cik7CistUVN0cmluZyBnZXRUeXBlTmFtZShjb25zdCBDWFR5cGUgJnR5cGUpOworK1FTdHJpbmcg Z2V0VHlwZU5hbWUoY29uc3QgQ1hUeXBlICZ0eXBlLCBQcmludGluZ1BvbGljeSBwKTsKKyBib29s IGhhc1Njb3BlUmVzb2x1dGlvbihjb25zdCBDWFR5cGUgJnR5cGUpOworIENYVHlwZSBmdWxseVJl c29sdmVUeXBlKGNvbnN0IENYVHlwZSAmdHlwZSk7CistUVN0cmluZyBnZXRSZXNvbHZlZFR5cGVO YW1lKGNvbnN0IENYVHlwZSAmdHlwZSk7CistaW5saW5lIFFTdHJpbmcgZ2V0Q3Vyc29yVHlwZU5h bWUoY29uc3QgQ1hDdXJzb3IgJmN1cnNvcikKKy0gICAgeyByZXR1cm4gZ2V0VHlwZU5hbWUoY2xh bmdfZ2V0Q3Vyc29yVHlwZShjdXJzb3IpKTsgfQorLWlubGluZSBRU3RyaW5nIGdldEN1cnNvclJl c3VsdFR5cGVOYW1lKGNvbnN0IENYQ3Vyc29yICZjdXJzb3IpCistICAgIHsgcmV0dXJuIGdldFR5 cGVOYW1lKGNsYW5nX2dldEN1cnNvclJlc3VsdFR5cGUoY3Vyc29yKSk7IH0KKytRU3RyaW5nIGdl dFJlc29sdmVkVHlwZU5hbWUoY29uc3QgQ1hUeXBlICZ0eXBlLCBQcmludGluZ1BvbGljeSBwKTsK KyAKKyBpbmxpbmUgYm9vbCBpc0N1cnNvclZhbGlkKGNvbnN0IENYQ3Vyc29yICZjKQorIHsKK2Rp ZmYgLS1naXQgYS9zb3VyY2VzL3NoaWJva2VuNi9BcGlFeHRyYWN0b3IvbWVzc2FnZXMuY3BwIGIv c291cmNlcy9zaGlib2tlbjYvQXBpRXh0cmFjdG9yL21lc3NhZ2VzLmNwcAoraW5kZXggNjkzMmIw NGRiLi44MGY4YWJjZmEgMTAwNjQ0CistLS0gYS9zb3VyY2VzL3NoaWJva2VuNi9BcGlFeHRyYWN0 b3IvbWVzc2FnZXMuY3BwCisrKysgYi9zb3VyY2VzL3NoaWJva2VuNi9BcGlFeHRyYWN0b3IvbWVz c2FnZXMuY3BwCitAQCAtMTExNiwzICsxMTE2LDE0IEBAIFFTdHJpbmcgbXNnQ29tbWFuZExpbmVB cmd1bWVudHMoY29uc3QgUVN0cmluZ0xpc3QgJmFyZ3YpCisgICAgIHJlc3VsdC5hcHBlbmQodSdc bicpOworICAgICByZXR1cm4gcmVzdWx0OworIH0KKysKKytRU3RyaW5nIG1zZ1JlamVjdGVkVHlw ZXMoY29uc3QgUVN0cmluZ0xpc3QgJnJlamVjdGVkVHlwZXMpCisreworKyAgICBRU3RyaW5nIHJl c3VsdDsKKysgICAgUVRleHRTdHJlYW0gc3RyKCZyZXN1bHQpOworKyAgICBzdHIgPDwgIlJlamVj dGVkIFR5cGVzICgiIDw8IHJlamVjdGVkVHlwZXMuc2l6ZSgpIDw8ICIpOlxuIjsKKysgICAgZm9y IChjb25zdCBhdXRvICZyZWplY3RlZFR5cGUgOiByZWplY3RlZFR5cGVzKQorKyAgICAgICAgc3Ry IDw8ICIgIFwiIiA8PCByZWplY3RlZFR5cGUgPDwgIlwiXG4iOworKyAgICBzdHIgPDwgJ1xuJzsK KysgICAgcmV0dXJuIHJlc3VsdDsKKyt9CitkaWZmIC0tZ2l0IGEvc291cmNlcy9zaGlib2tlbjYv QXBpRXh0cmFjdG9yL21lc3NhZ2VzLmggYi9zb3VyY2VzL3NoaWJva2VuNi9BcGlFeHRyYWN0b3Iv bWVzc2FnZXMuaAoraW5kZXggNDY1YzQ1N2I4Li5jYTE5NjBmY2IgMTAwNjQ0CistLS0gYS9zb3Vy Y2VzL3NoaWJva2VuNi9BcGlFeHRyYWN0b3IvbWVzc2FnZXMuaAorKysrIGIvc291cmNlcy9zaGli b2tlbjYvQXBpRXh0cmFjdG9yL21lc3NhZ2VzLmgKK0BAIC0yODgsNCArMjg4LDYgQEAgUVN0cmlu ZyBtc2dSZW1vdmVSZWR1bmRhbnRPdmVybG9hZChjb25zdCBBYnN0cmFjdE1ldGFGdW5jdGlvbkNQ dHIgJmZ1bmMsCisgCisgUVN0cmluZyBtc2dDb21tYW5kTGluZUFyZ3VtZW50cyhjb25zdCBRU3Ry aW5nTGlzdCAmYXJndik7CisgCisrUVN0cmluZyBtc2dSZWplY3RlZFR5cGVzKGNvbnN0IFFTdHJp bmdMaXN0ICZyZWplY3RlZFR5cGVzKTsKKysKKyAjZW5kaWYgLy8gTUVTU0FHRVNfSAorZGlmZiAt LWdpdCBhL3NvdXJjZXMvc2hpYm9rZW42L0FwaUV4dHJhY3Rvci9wYXJzZXIvY29kZW1vZGVsLmNw cCBiL3NvdXJjZXMvc2hpYm9rZW42L0FwaUV4dHJhY3Rvci9wYXJzZXIvY29kZW1vZGVsLmNwcAor aW5kZXggOGE1NmM5ZWVlLi45NjYzYWIzYmQgMTAwNjQ0CistLS0gYS9zb3VyY2VzL3NoaWJva2Vu Ni9BcGlFeHRyYWN0b3IvcGFyc2VyL2NvZGVtb2RlbC5jcHAKKysrKyBiL3NvdXJjZXMvc2hpYm9r ZW42L0FwaUV4dHJhY3Rvci9wYXJzZXIvY29kZW1vZGVsLmNwcAorQEAgLTM0NSw5ICszNDUsOSBA QCBUZW1wbGF0ZVBhcmFtZXRlckxpc3QgX0NsYXNzTW9kZWxJdGVtOjp0ZW1wbGF0ZVBhcmFtZXRl cnMoKSBjb25zdAorICAgICByZXR1cm4gbV90ZW1wbGF0ZVBhcmFtZXRlcnM7CisgfQorIAorLXZv aWQgX0NsYXNzTW9kZWxJdGVtOjpzZXRUZW1wbGF0ZVBhcmFtZXRlcnMoY29uc3QgVGVtcGxhdGVQ YXJhbWV0ZXJMaXN0ICZ0ZW1wbGF0ZVBhcmFtZXRlcnMpCisrdm9pZCBfQ2xhc3NNb2RlbEl0ZW06 OmFkZFRlbXBsYXRlUGFyYW1ldGVyKGNvbnN0IFRlbXBsYXRlUGFyYW1ldGVyTW9kZWxJdGVtICZ0 ZW1wbGF0ZVBhcmFtZXRlcikKKyB7CistICAgIG1fdGVtcGxhdGVQYXJhbWV0ZXJzID0gdGVtcGxh dGVQYXJhbWV0ZXJzOworKyAgICBtX3RlbXBsYXRlUGFyYW1ldGVycy5hcHBlbmQodGVtcGxhdGVQ YXJhbWV0ZXIpOworIH0KKyAKKyBib29sIF9DbGFzc01vZGVsSXRlbTo6ZXh0ZW5kc0NsYXNzKGNv bnN0IFFTdHJpbmcgJm5hbWUpIGNvbnN0CitAQCAtMTQ3NSw2ICsxNDc1LDExIEBAIHZvaWQgX01l bWJlck1vZGVsSXRlbTo6c2V0QWNjZXNzUG9saWN5KEFjY2VzcyBhY2Nlc3NQb2xpY3kpCisgICAg IG1fYWNjZXNzUG9saWN5ID0gYWNjZXNzUG9saWN5OworIH0KKyAKKyt2b2lkIF9NZW1iZXJNb2Rl bEl0ZW06OmFkZFRlbXBsYXRlUGFyYW1ldGVyKGNvbnN0IFRlbXBsYXRlUGFyYW1ldGVyTW9kZWxJ dGVtICZ0ZW1wbGF0ZVBhcmFtZXRlcikKKyt7CisrICAgIG1fdGVtcGxhdGVQYXJhbWV0ZXJzLmFw cGVuZCh0ZW1wbGF0ZVBhcmFtZXRlcik7CisrfQorKworIGJvb2wgX01lbWJlck1vZGVsSXRlbTo6 aXNTdGF0aWMoKSBjb25zdAorIHsKKyAgICAgcmV0dXJuIG1faXNTdGF0aWM7CitkaWZmIC0tZ2l0 IGEvc291cmNlcy9zaGlib2tlbjYvQXBpRXh0cmFjdG9yL3BhcnNlci9jb2RlbW9kZWwuaCBiL3Nv dXJjZXMvc2hpYm9rZW42L0FwaUV4dHJhY3Rvci9wYXJzZXIvY29kZW1vZGVsLmgKK2luZGV4IDc3 MDgyZWZhNS4uZjQwODNiNjllIDEwMDY0NAorLS0tIGEvc291cmNlcy9zaGlib2tlbjYvQXBpRXh0 cmFjdG9yL3BhcnNlci9jb2RlbW9kZWwuaAorKysrIGIvc291cmNlcy9zaGlib2tlbjYvQXBpRXh0 cmFjdG9yL3BhcnNlci9jb2RlbW9kZWwuaAorQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6Cisg ICAgIHZvaWQgYWRkQmFzZUNsYXNzKGNvbnN0IEJhc2VDbGFzcyAmYikgeyBtX2Jhc2VDbGFzc2Vz LmFwcGVuZChiKTsgfQorIAorICAgICBUZW1wbGF0ZVBhcmFtZXRlckxpc3QgdGVtcGxhdGVQYXJh bWV0ZXJzKCkgY29uc3Q7CistICAgIHZvaWQgc2V0VGVtcGxhdGVQYXJhbWV0ZXJzKGNvbnN0IFRl bXBsYXRlUGFyYW1ldGVyTGlzdCAmdGVtcGxhdGVQYXJhbWV0ZXJzKTsKKysgICAgdm9pZCBhZGRU ZW1wbGF0ZVBhcmFtZXRlcihjb25zdCBUZW1wbGF0ZVBhcmFtZXRlck1vZGVsSXRlbSAmdGVtcGxh dGVQYXJhbWV0ZXIpOworIAorICAgICBib29sIGV4dGVuZHNDbGFzcyhjb25zdCBRU3RyaW5nICZu YW1lKSBjb25zdDsKKyAKK0BAIC00MzAsNyArNDMwLDcgQEAgcHVibGljOgorICAgICB2b2lkIHNl dEFjY2Vzc1BvbGljeShBY2Nlc3MgYWNjZXNzUG9saWN5KTsKKyAKKyAgICAgVGVtcGxhdGVQYXJh bWV0ZXJMaXN0IHRlbXBsYXRlUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fdGVtcGxhdGVQ YXJhbWV0ZXJzOyB9CistICAgIHZvaWQgc2V0VGVtcGxhdGVQYXJhbWV0ZXJzKGNvbnN0IFRlbXBs YXRlUGFyYW1ldGVyTGlzdCAmdGVtcGxhdGVQYXJhbWV0ZXJzKSB7IG1fdGVtcGxhdGVQYXJhbWV0 ZXJzID0gdGVtcGxhdGVQYXJhbWV0ZXJzOyB9CisrICAgIHZvaWQgYWRkVGVtcGxhdGVQYXJhbWV0 ZXIoY29uc3QgVGVtcGxhdGVQYXJhbWV0ZXJNb2RlbEl0ZW0gJnRlbXBsYXRlUGFyYW1ldGVyKTsK KyAKKyAgICAgVHlwZUluZm8gdHlwZSgpIGNvbnN0OworICAgICB2b2lkIHNldFR5cGUoY29uc3Qg VHlwZUluZm8gJnR5cGUpOworZGlmZiAtLWdpdCBhL3NvdXJjZXMvc2hpYm9rZW42L0FwaUV4dHJh Y3Rvci9wYXJzZXIvY29kZW1vZGVsX2VudW1zLmggYi9zb3VyY2VzL3NoaWJva2VuNi9BcGlFeHRy YWN0b3IvcGFyc2VyL2NvZGVtb2RlbF9lbnVtcy5oCitpbmRleCBjM2JiMTBlNWYuLmZiYWFkODVk MiAxMDA2NDQKKy0tLSBhL3NvdXJjZXMvc2hpYm9rZW42L0FwaUV4dHJhY3Rvci9wYXJzZXIvY29k ZW1vZGVsX2VudW1zLmgKKysrKyBiL3NvdXJjZXMvc2hpYm9rZW42L0FwaUV4dHJhY3Rvci9wYXJz ZXIvY29kZW1vZGVsX2VudW1zLmgKK0BAIC01OCwxMyArNTgsMTQgQEAgZW51bSBjbGFzcyBGdW5j dGlvbkF0dHJpYnV0ZSB7CisgUV9ERUNMQVJFX0ZMQUdTKEZ1bmN0aW9uQXR0cmlidXRlcywgRnVu Y3Rpb25BdHRyaWJ1dGUpCisgUV9ERUNMQVJFX09QRVJBVE9SU19GT1JfRkxBR1MoRnVuY3Rpb25B dHRyaWJ1dGVzKQorIAorLS8vIEMrKyB0eXBlIGNhdGVnb3J5IGZvciBUeXBlSW5mbywgcmVmbGVj dGluZyBjbGFuZydzIENYVHlwZUtpbmQKKysvLyBDKysgdHlwZSBjYXRlZ29yeSBmb3IgVHlwZUlu Zm8sIHJvdWdobHkgcmVmbGVjdGluZyBjbGFuZydzIENYVHlwZUtpbmQKKyBlbnVtIGNsYXNzIFR5 cGVDYXRlZ29yeSA6IHVuc2lnbmVkIGNoYXIgeworICAgICBPdGhlciwKKyAgICAgQnVpbHRpbiwK KyAgICAgRW51bSwKKyAgICAgUG9pbnRlciwKKyAgICAgRnVuY3Rpb24sCisrICAgIEZ1bmN0aW9u UG9pbnRlciwgLy8gbm90IHByZXNlbnQgaW4gY2xhbmcKKyAgICAgVm9pZAorIH07CisgCitkaWZm IC0tZ2l0IGEvc291cmNlcy9zaGlib2tlbjYvQXBpRXh0cmFjdG9yL3BhcnNlci90eXBlaW5mby5j cHAgYi9zb3VyY2VzL3NoaWJva2VuNi9BcGlFeHRyYWN0b3IvcGFyc2VyL3R5cGVpbmZvLmNwcAor aW5kZXggYzUzMGNhZmVhLi43YmQwMjIzZGIgMTAwNjQ0CistLS0gYS9zb3VyY2VzL3NoaWJva2Vu Ni9BcGlFeHRyYWN0b3IvcGFyc2VyL3R5cGVpbmZvLmNwcAorKysrIGIvc291cmNlcy9zaGlib2tl bjYvQXBpRXh0cmFjdG9yL3BhcnNlci90eXBlaW5mby5jcHAKK0BAIC00MSw4ICs0MSw3IEBAIHB1 YmxpYzoKKyAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAgdWludCBtX2NvbnN0YW50OiAx OworICAgICAgICAgICAgIHVpbnQgbV92b2xhdGlsZTogMTsKKy0gICAgICAgICAgICB1aW50IG1f ZnVuY3Rpb25Qb2ludGVyOiAxOworLSAgICAgICAgICAgIHVpbnQgbV9wYWRkaW5nOiAyOTsKKysg ICAgICAgICAgICB1aW50IG1fcGFkZGluZzogMzA7CisgICAgICAgICB9OworICAgICB9OworIAor QEAgLTIyMywxMyArMjIyLDcgQEAgdm9pZCBUeXBlSW5mbzo6YWRkSW5kaXJlY3Rpb24oSW5kaXJl Y3Rpb24gaSkKKyAKKyBib29sIFR5cGVJbmZvOjppc0Z1bmN0aW9uUG9pbnRlcigpIGNvbnN0Cisg eworLSAgICByZXR1cm4gZC0+bV9mdW5jdGlvblBvaW50ZXI7CistfQorLQorLXZvaWQgVHlwZUlu Zm86OnNldEZ1bmN0aW9uUG9pbnRlcihib29sIGlzKQorLXsKKy0gICAgaWYgKGQtPm1fZnVuY3Rp b25Qb2ludGVyICE9IGlzKQorLSAgICAgICAgZC0+bV9mdW5jdGlvblBvaW50ZXIgPSBpczsKKysg ICAgcmV0dXJuIGQtPm1fY2F0ZWdvcnkgPT0gVHlwZUNhdGVnb3J5OjpGdW5jdGlvblBvaW50ZXI7 CisgfQorIAorIGNvbnN0IFFTdHJpbmdMaXN0ICZUeXBlSW5mbzo6YXJyYXlFbGVtZW50cygpIGNv bnN0CitAQCAtNDI2LDggKzQxOSwxMSBAQCBRU3RyaW5nIFR5cGVJbmZvOjp0b1N0cmluZygpIGNv bnN0CisgICAgICAgICBicmVhazsKKyAgICAgfQorIAorLSAgICBpZiAoaXNGdW5jdGlvblBvaW50 ZXIoKSkgeworLSAgICAgICAgdG1wICs9IHUiICgqKSgiX3M7CisrICAgIGlmIChkLT5tX2NhdGVn b3J5ID09IFR5cGVDYXRlZ29yeTo6RnVuY3Rpb24gfHwgZC0+bV9jYXRlZ29yeSA9PSBUeXBlQ2F0 ZWdvcnk6OkZ1bmN0aW9uUG9pbnRlcikgeworKyAgICAgICAgdG1wICs9IHUnICc7CisrICAgICAg ICBpZiAoZC0+bV9jYXRlZ29yeSA9PSBUeXBlQ2F0ZWdvcnk6OkZ1bmN0aW9uUG9pbnRlcikKKysg ICAgICAgICAgICB0bXAgKz0gIigqKSJfTDE7CisrICAgICAgICB0bXAgKz0gdScoJzsKKyAgICAg ICAgIGZvciAocXNpemV0eXBlIGkgPSAwOyBpIDwgZC0+bV9hcmd1bWVudHMuc2l6ZSgpOyArK2kp IHsKKyAgICAgICAgICAgICBpZiAoaSAhPSAwKQorICAgICAgICAgICAgICAgICB0bXAgKz0gdSIs ICJfczsKK0BAIC00NjEsNyArNDU3LDcgQEAgYm9vbCBUeXBlSW5mb0RhdGE6OmVxdWFscyhjb25z dCBUeXBlSW5mb0RhdGEgJm90aGVyKSBjb25zdAorICAgICByZXR1cm4gZmxhZ3MgPT0gb3RoZXIu ZmxhZ3MKKyAgICAgICAgICAgICYmIG1fcXVhbGlmaWVkTmFtZSA9PSBvdGhlci5tX3F1YWxpZmll ZE5hbWUKKyAgICAgICAgICAgICYmIG1fY2F0ZWdvcnkgPT0gb3RoZXIubV9jYXRlZ29yeQorLSAg ICAgICAgICAgJiYgKCFtX2Z1bmN0aW9uUG9pbnRlciB8fCBtX2FyZ3VtZW50cyA9PSBvdGhlci5t X2FyZ3VtZW50cykKKysgICAgICAgICAgICYmIG1fYXJndW1lbnRzID09IG90aGVyLm1fYXJndW1l bnRzCisgICAgICAgICAgICAmJiBtX2luc3RhbnRpYXRpb25zID09IG90aGVyLm1faW5zdGFudGlh dGlvbnM7CisgfQorIAorQEAgLTYwMiw4ICs1OTgsMTQgQEAgdm9pZCBUeXBlSW5mbzo6Zm9ybWF0 RGVidWcoUURlYnVnICZkZWJ1ZykgY29uc3QKKyAgICAgICAgIGRlYnVnIDw8ICIsIFtwb2ludGVy XSI7CisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBUeXBlQ2F0ZWdvcnk6OkZ1bmN0aW9uOgor LSAgICAgICAgZGVidWcgPDwgIiwgW2Z1bmN0aW9uIjsKKysgICAgICAgIGRlYnVnIDw8ICIsIFtm dW5jdGlvbl0iOworKyAgICAgICAgYnJlYWs7CisrICAgIGNhc2UgVHlwZUNhdGVnb3J5OjpGdW5j dGlvblBvaW50ZXI6CisrICAgICAgICBkZWJ1ZyA8PCAiLCBbZnVuY3Rpb24tcHRyXSI7CisgICAg ICAgICBicmVhazsKKysgICAgZGVmYXVsdDoKKysgICAgICAgIGJyZWFrOworKworICAgICB9Cisg ICAgIGlmICghZC0+bV9pbmRpcmVjdGlvbnMuaXNFbXB0eSgpKSB7CisgICAgICAgICBkZWJ1ZyA8 PCAiLCBpbmRpcmVjdGlvbnM9IjsKK0BAIC02MjUsOCArNjI3LDEyIEBAIHZvaWQgVHlwZUluZm86 OmZvcm1hdERlYnVnKFFEZWJ1ZyAmZGVidWcpIGNvbnN0CisgICAgICAgICBmb3JtYXRTZXF1ZW5j ZShkZWJ1ZywgZC0+bV9pbnN0YW50aWF0aW9ucy5iZWdpbigpLCBkLT5tX2luc3RhbnRpYXRpb25z LmVuZCgpKTsKKyAgICAgICAgIGRlYnVnIDw8ICc+JzsKKyAgICAgfQorLSAgICBpZiAoZC0+bV9m dW5jdGlvblBvaW50ZXIpIHsKKy0gICAgICAgIGRlYnVnIDw8ICIsIGZ1bmN0aW9uIHB0cigiOwor KworKyAgICBpZiAoZC0+bV9jYXRlZ29yeSA9PSBUeXBlQ2F0ZWdvcnk6OkZ1bmN0aW9uIHx8IGQt Pm1fY2F0ZWdvcnkgPT0gVHlwZUNhdGVnb3J5OjpGdW5jdGlvblBvaW50ZXIpIHsKKysgICAgICAg IGRlYnVnIDw8ICIsIGZ1bmN0aW9uIjsKKysgICAgICAgIGlmIChkLT5tX2NhdGVnb3J5ID09IFR5 cGVDYXRlZ29yeTo6RnVuY3Rpb25Qb2ludGVyKQorKyAgICAgICAgICAgIGRlYnVnIDw8ICJfcHRy IjsKKysgICAgICAgIGRlYnVnIDw8ICcoJzsKKyAgICAgICAgIGZvcm1hdFNlcXVlbmNlKGRlYnVn LCBkLT5tX2FyZ3VtZW50cy5iZWdpbigpLCBkLT5tX2FyZ3VtZW50cy5lbmQoKSk7CisgICAgICAg ICBkZWJ1ZyA8PCAnKSc7CisgICAgIH0KK2RpZmYgLS1naXQgYS9zb3VyY2VzL3NoaWJva2VuNi9B cGlFeHRyYWN0b3IvcGFyc2VyL3R5cGVpbmZvLmggYi9zb3VyY2VzL3NoaWJva2VuNi9BcGlFeHRy YWN0b3IvcGFyc2VyL3R5cGVpbmZvLmgKK2luZGV4IDA5MmZiYjcyNC4uNDNjOTk0N2Q5IDEwMDY0 NAorLS0tIGEvc291cmNlcy9zaGlib2tlbjYvQXBpRXh0cmFjdG9yL3BhcnNlci90eXBlaW5mby5o CisrKysgYi9zb3VyY2VzL3NoaWJva2VuNi9BcGlFeHRyYWN0b3IvcGFyc2VyL3R5cGVpbmZvLmgK K0BAIC03MSw3ICs3MSw2IEBAIHB1YmxpYzoKKyAgICAgdm9pZCBzZXRJbmRpcmVjdGlvbnMoaW50 IGluZGlyZWN0aW9ucyk7CisgCisgICAgIGJvb2wgaXNGdW5jdGlvblBvaW50ZXIoKSBjb25zdDsK Ky0gICAgdm9pZCBzZXRGdW5jdGlvblBvaW50ZXIoYm9vbCBpcyk7CisgCisgICAgIGNvbnN0IFFT dHJpbmdMaXN0ICZhcnJheUVsZW1lbnRzKCkgY29uc3Q7CisgICAgIHZvaWQgc2V0QXJyYXlFbGVt ZW50cyhjb25zdCBRU3RyaW5nTGlzdCAmYXJyYXlFbGVtZW50cyk7CitkaWZmIC0tZ2l0IGEvc291 cmNlcy9zaGlib2tlbjYvY21ha2UvU2hpYm9rZW5TZXR1cC5jbWFrZSBiL3NvdXJjZXMvc2hpYm9r ZW42L2NtYWtlL1NoaWJva2VuU2V0dXAuY21ha2UKK2luZGV4IDMyODIzZDlmYS4uNzU1NTU3MTgx IDEwMDY0NAorLS0tIGEvc291cmNlcy9zaGlib2tlbjYvY21ha2UvU2hpYm9rZW5TZXR1cC5jbWFr ZQorKysrIGIvc291cmNlcy9zaGlib2tlbjYvY21ha2UvU2hpYm9rZW5TZXR1cC5jbWFrZQorQEAg LTgzLDggKzgzLDExIEBAIGlmKE5PVCBQWVRIT05fU0lURV9QQUNLQUdFUykKKyAgICAgc2hpYm9r ZW5faW50ZXJuYWxfc2V0X3B5dGhvbl9zaXRlX3BhY2thZ2VzKCkKKyBlbmRpZigpCisgCisrc3Ry aW5nKFJFR0VYIFJFUExBQ0UgIlxcLlswLTldK1xcLlswLTldKyQiICIiIExMVk1fVkVSU0lPTiAi JHtMTFZNX1BBQ0tBR0VfVkVSU0lPTn0iKQorKworIHNldF9jbWFrZV9jeHhfZmxhZ3MoKQorLXNl dChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtRCBRVF9OT19DQVNUX0ZST01f QVNDSUkgLUQgUVRfTk9fQ0FTVF9UT19BU0NJSSIpCisrc2V0KENNQUtFX0NYWF9GTEFHUworKyAg ICAiJHtDTUFLRV9DWFhfRkxBR1N9IC1EIFFUX05PX0NBU1RfRlJPTV9BU0NJSSAtRCBRVF9OT19D QVNUX1RPX0FTQ0lJIC1EIExMVk1fVkVSU0lPTj0ke0xMVk1fVkVSU0lPTn0iKQorIAorICMgRm9y Y2UgdXNhZ2Ugb2YgdGhlIEMrKzE3IHN0YW5kYXJkCisgc2V0KENNQUtFX0NYWF9TVEFOREFSRCAx NykKCmRpZmYgLS1naXQgYS9weXRob24tcHlzaWRlNi5zcGVjIGIvcHl0aG9uLXB5c2lkZTYuc3Bl YwppbmRleCA5NjY1YzA3Li4xOTVhMzBhIDEwMDY0NAotLS0gYS9weXRob24tcHlzaWRlNi5zcGVj CisrKyBiL3B5dGhvbi1weXNpZGU2LnNwZWMKQEAgLTEwLDcgKzEwLDcgQEAKIAogTmFtZTogICAg ICAgICAgIHB5dGhvbi0le3B5cGlfbmFtZX0KIFZlcnNpb246ICAgICAgICA2LjEwLjEKLVJlbGVh c2U6ICAgICAgICAzJXs/ZGlzdH0KK1JlbGVhc2U6ICAgICAgICA0JXs/ZGlzdH0KIFN1bW1hcnk6 ICAgICAgICBQeXRob24gYmluZGluZ3MgZm9yIHRoZSBRdCA2IGNyb3NzLXBsYXRmb3JtIGFwcGxp Y2F0aW9uIGFuZCBVSSBmcmFtZXdvcmsKIAogTGljZW5zZTogICAgICAgIExHUEwtMy4wLW9ubHkg T1IgR1BMLTMuMC1vbmx5IFdJVEggUXQtR1BMLWV4Y2VwdGlvbi0xLjAKQEAgLTI3LDYgKzI3LDcg QEAgU291cmNlMDogICAgICAgIGh0dHBzOi8vZG93bmxvYWQucXQuaW8vb2ZmaWNpYWxfcmVsZWFz ZXMvUXRGb3JQeXRob24vJXtweXBpX25hbWUKIFBhdGNoOiAgICAgICAgICAwMDAxLVJldmVydC1N b2RpZnktaGVhZGVycy1pbnN0YWxsYXRpb24tZm9yLUNNYWtlLWJ1aWxkcy5wYXRjaAogUGF0Y2g6 ICAgICAgICAgIDAwMDEtQWx3YXlzLWxpbmstdG8tcHl0aG9uLWxpYnJhcmllcy5wYXRjaAogUGF0 Y2g6ICAgICAgICAgIDAwMDEtRml4LWluc3RhbGxhdGlvbi5wYXRjaAorUGF0Y2g6ICAgICAgICAg IDAwMDEtc2hpYm9rZW42LUZpeC1idWlsZC13aXRoLWNsYW5nLTIyLnBhdGNoCiAKIEJ1aWxkUmVx dWlyZXM6ICBjbWFrZQogQnVpbGRSZXF1aXJlczogIG5pbmphLWJ1aWxkCkBAIC0zNzMsNiArMzc0 LDEwIEBAIGV4cG9ydCBMRF9MSUJSQVJZX1BBVEg9IiV7YnVpbGRyb290fSV7X2xpYmRpcn0iCiAl ZW5kaWYKIAogJWNoYW5nZWxvZworKiBXZWQgQXVnIDA1IDIwMjYgVHJveSBEYXdzb24gPHRkYXdz b25AcmVkaGF0LmNvbT4gLSA2LjEwLjEtNAorLSBSZWJ1aWx0IGZvciBuZXdlciBMTFZNIC8gQ2xh bmcKKy0gQWRkZWQgMDAwMS1zaGlib2tlbjYtRml4LWJ1aWxkLXdpdGgtY2xhbmctMjIucGF0Y2gK KwogKiBTYXQgSmFuIDE3IDIwMjYgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0Bm ZWRvcmFwcm9qZWN0Lm9yZz4gLSA2LjEwLjEtMwogLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9y YXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzQ0X01hc3NfUmVidWlsZAogCg==