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: Rex Dieter To: git-commits@fedoraproject.org Subject: [rpms/amarok] epel10: new iteration of proxy_loading patch (kde#295199) Date: Mon, 06 Jul 2026 18:05:00 GMT Message-ID: <178336110095.1.2591014163059895562.rpms-amarok-b46f918942a8@fedoraproject.org> List-ID: X-Git-Repo: rpms/amarok X-Git-Branch: epel10 X-Git-Rev: b46f918942a85f0f0c7c1d257a790044404f9950 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvYW1hcm9rCkJyYW5j aCA6IGVwZWwxMApDb21taXQgOiBiNDZmOTE4OTQyYTg1ZjBmMGM3YzFkMjU3YTc5MDA0NDQwNGY5 OTUwCkF1dGhvciA6IFJleCBEaWV0ZXIgPHJkaWV0ZXJAZmVkb3JhcHJvamVjdC5vcmc+CkRhdGUg ICA6IDIwMTItMDMtMjFUMDk6MTI6MTQtMDU6MDAKU3RhdHMgIDogKzExNzMvLTc1NiBpbiAzIGZp bGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9hbWFyb2sv Yy9iNDZmOTE4OTQyYTg1ZjBmMGM3YzFkMjU3YTc5MDA0NDQwNGY5OTUwP2JyYW5jaD1lcGVsMTAK CkxvZzoKbmV3IGl0ZXJhdGlvbiBvZiBwcm94eV9sb2FkaW5nIHBhdGNoIChrZGUjMjk1MTk5KQoK LS0tCmRpZmYgLS1naXQgYS8wMDAxLUxvYWQtYWxsLXRyYWNrcy1mcm9tLVhTUEYtdXNpbmctTWV0 YVByb3h5LnBhdGNoIGIvMDAwMS1Mb2FkLWFsbC10cmFja3MtZnJvbS1YU1BGLXVzaW5nLU1ldGFQ cm94eS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmVlNzg0OS4uMDAwMDAw MAotLS0gYS8wMDAxLUxvYWQtYWxsLXRyYWNrcy1mcm9tLVhTUEYtdXNpbmctTWV0YVByb3h5LnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzUzICswLDAgQEAKLWRpZmYgLS1naXQgYS9zcmMvQ01h a2VMaXN0cy50eHQgYi9zcmMvQ01ha2VMaXN0cy50eHQKLWluZGV4IDQyNDFlNjkuLmJiZTNmNzUg MTAwNjQ0Ci0tLS0gYS9zcmMvQ01ha2VMaXN0cy50eHQKLSsrKyBiL3NyYy9DTWFrZUxpc3RzLnR4 dAotQEAgLTI4NCw2ICsyODQsNyBAQCBzZXQobGlibWV0YWltcGxfU1JDUwotICAgICBjb3JlLWlt cGwvbWV0YS9tdWx0aS9NdWx0aVRyYWNrLmNwcAotICAgICBjb3JlLWltcGwvbWV0YS9jdWUvQ3Vl RmlsZVN1cHBvcnQuY3BwCi0gICAgIGNvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eS5jcHAK LSsgICAgY29yZS1pbXBsL21ldGEvcHJveHkvTWV0YVByb3h5V29ya2VyLmNwcAotICAgICBjb3Jl LWltcGwvbWV0YS9zdHJlYW0vU3RyZWFtLmNwcAotICAgICBjb3JlLWltcGwvcGxheWxpc3RzL3R5 cGVzL2ZpbGUvUGxheWxpc3RGaWxlLmNwcAotICAgICBjb3JlLWltcGwvc3RhdGlzdGljcy9wcm92 aWRlcnMvdXJsL1Blcm1hbmVudFVybFN0YXRpc3RpY3NQcm92aWRlci5jcHAKLWRpZmYgLS1naXQg YS9zcmMvY29yZS1pbXBsL2NvbGxlY3Rpb25zL3N1cHBvcnQvQ29sbGVjdGlvbk1hbmFnZXIuY3Bw IGIvc3JjL2NvcmUtaW1wbC9jb2xsZWN0aW9ucy9zdXBwb3J0L0NvbGxlY3Rpb25NYW5hZ2VyLmNw cAotaW5kZXggMzdmZTAzYS4uOTA4NWI1YSAxMDA2NDQKLS0tLSBhL3NyYy9jb3JlLWltcGwvY29s bGVjdGlvbnMvc3VwcG9ydC9Db2xsZWN0aW9uTWFuYWdlci5jcHAKLSsrKyBiL3NyYy9jb3JlLWlt cGwvY29sbGVjdGlvbnMvc3VwcG9ydC9Db2xsZWN0aW9uTWFuYWdlci5jcHAKLUBAIC00NjMsNiAr NDYzLDcgQEAgQ29sbGVjdGlvbk1hbmFnZXI6OnRyYWNrRm9yVXJsKCBjb25zdCBLVXJsICZ1cmwg KQotICAgICAgICAgfQotICAgICB9Ci0gCi0rICAgIC8vVE9ETzogY3JlYXRlIHNwZWNpZmljIFRy YWNrUHJvdmlkZXJzIGZvciB0aGVzZToKLSAgICAgaWYoIHVybC5wcm90b2NvbCgpID09IFFMYXRp bjFTdHJpbmcoImh0dHAiKSB8fCB1cmwucHJvdG9jb2woKSA9PSBRTGF0aW4xU3RyaW5nKCJtbXMi KSB8fAotICAgICAgICAgdXJsLnByb3RvY29sKCkgPT0gUUxhdGluMVN0cmluZygic21iIikgKQot ICAgICAgICAgcmV0dXJuIE1ldGE6OlRyYWNrUHRyKCBuZXcgTWV0YVN0cmVhbTo6VHJhY2soIHVy bCApICk7Ci1kaWZmIC0tZ2l0IGEvc3JjL2NvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eS5o IGIvc3JjL2NvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eS5oCi1pbmRleCBkODMyOWJlLi4w NjAyMjNmIDEwMDY0NAotLS0tIGEvc3JjL2NvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eS5o Ci0rKysgYi9zcmMvY29yZS1pbXBsL21ldGEvcHJveHkvTWV0YVByb3h5LmgKLUBAIC0xNyw2ICsx Nyw4IEBACi0gI2lmbmRlZiBBTUFST0tfTUVUQVBST1hZX0gKLSAjZGVmaW5lIEFNQVJPS19NRVRB UFJPWFlfSAotIAotKyNpbmNsdWRlICJNZXRhUHJveHlXb3JrZXIuaCIKLSsKLSAjaW5jbHVkZSAi Y29yZS9tZXRhL01ldGEuaCIKLSAjaW5jbHVkZSAiY29yZS9jYXBhYmlsaXRpZXMvQ2FwYWJpbGl0 eS5oIgotIAotQEAgLTgyLDYgKzg0LDcgQEAgbmFtZXNwYWNlIE1ldGFQcm94eQotICAgICAgICAg ICAgIHZpcnR1YWwgdm9pZCBzZXREaXNjTnVtYmVyKCBpbnQgZGlzY051bWJlciApOwotIAotICAg ICAgICAgICAgIHZpcnR1YWwgcWludDY0IGxlbmd0aCgpIGNvbnN0OwotKyAgICAgICAgICAgIHZp cnR1YWwgdm9pZCBzZXRMZW5ndGgoIHFpbnQ2NCBsZW5ndGggKTsKLSAgICAgICAgICAgICB2aXJ0 dWFsIGludCBmaWxlc2l6ZSgpIGNvbnN0OwotICAgICAgICAgICAgIHZpcnR1YWwgaW50IHNhbXBs ZVJhdGUoKSBjb25zdDsKLSAgICAgICAgICAgICB2aXJ0dWFsIGludCBiaXRyYXRlKCkgY29uc3Q7 Ci1AQCAtMTEwLDExICsxMTMsMTIgQEAgbmFtZXNwYWNlIE1ldGFQcm94eQotIAkJICogYWxsb3dz IHN1YmNsYXNzZXMgdG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRyYWNrcHJvdmlkZXIgd2hpY2gg d2lsbCBvbmx5IGNoZWNrIHRoZSBUcmFja1Byb3ZpZGVyCi0gCQkgKiBwYXNzZWQgdG8gbG9va3Vw VHJhY2soVHJhY2tQcm92aWRlciopIGZvciB0aGUgcmVhbCB0cmFjay4KLSAJCSAqLwotLQkJVHJh Y2soIGNvbnN0IEtVcmwgJnVybCwgYm9vbCBhd2FpdExvb2t1cE5vdGlmaWNhdGlvbik7Ci0rICAg ICAgICBUcmFjayggY29uc3QgS1VybCAmdXJsLCBib29sIGF3YWl0TG9va3VwTm90aWZpY2F0aW9u ICk7Ci0rCi0gCQkvKioKLSAJCSAqIE1ldGFQcm94eSB3aWxsIGNoZWNrIHRoZSBnaXZlbiB0cmFj a3Byb3ZpZGVyIGlmIGl0IGNhbiBwcm92aWRlIHRoZSB0cmFjayBmb3IgdGhlIHByb3h5J3MgdXJs LgotIAkJICovCi0tCQl2b2lkIGxvb2t1cFRyYWNrKENvbGxlY3Rpb25zOjpUcmFja1Byb3ZpZGVy ICpwcm92aWRlcik7Ci0rICAgICAgICB2b2lkIGxvb2t1cFRyYWNrKCBDb2xsZWN0aW9uczo6VHJh Y2tQcm92aWRlciAqcHJvdmlkZXIgKTsKLSAKLSAgICAgICAgIC8qKgotICAgICAgICAgICogTWV0 YVByb3h5IHdpbGwgdXBkYXRlIHRoZSBwcm94eSB3aXRoIHRoZSB0cmFjay4KLUBAIC0xMjMsNyAr MTI3LDcgQEAgbmFtZXNwYWNlIE1ldGFQcm94eQotIAotICAgICAgICAgcHJpdmF0ZToKLSAJCQl2 b2lkIGluaXQoIGNvbnN0IEtVcmwgJnVybCwgYm9vbCBhd2FpdExvb2t1cE5vdGlmaWNhdGlvbiAp OwotLSAgICAgICAgICAgIFByaXZhdGUgKiBjb25zdCBkOwotKyAgICAgICAgICAgIFByaXZhdGUg KmNvbnN0IGQ7Ci0gICAgIH07Ci0gCi0gfQotZGlmZiAtLWdpdCBhL3NyYy9jb3JlLWltcGwvbWV0 YS9wcm94eS9NZXRhUHJveHkuY3BwIGIvc3JjL2NvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94 eS5jcHAKLWluZGV4IGQxNTc3YTIuLjZhMjdmMGUgMTAwNjQ0Ci0tLS0gYS9zcmMvY29yZS1pbXBs L21ldGEvcHJveHkvTWV0YVByb3h5LmNwcAotKysrIGIvc3JjL2NvcmUtaW1wbC9tZXRhL3Byb3h5 L01ldGFQcm94eS5jcHAKLUBAIC0xNyw2ICsxNyw3IEBACi0gI2luY2x1ZGUgImNvcmUtaW1wbC9t ZXRhL3Byb3h5L01ldGFQcm94eS5oIgotICNpbmNsdWRlICJjb3JlLWltcGwvbWV0YS9wcm94eS9N ZXRhUHJveHlfcC5oIgotICNpbmNsdWRlICJjb3JlLWltcGwvbWV0YS9wcm94eS9NZXRhUHJveHlf cC5tb2MiCi0rI2luY2x1ZGUgImNvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eVdvcmtlci5o IgotIAotICNpbmNsdWRlICJjb3JlL2NhcGFiaWxpdGllcy9FZGl0Q2FwYWJpbGl0eS5oIgotIAot QEAgLTI3LDYgKzI4LDcgQEAKLSAjaW5jbHVkZSA8UVRpbWVyPgotIAotICNpbmNsdWRlIDxLU2hh cmVkUHRyPgotKyNpbmNsdWRlIDx0aHJlYWR3ZWF2ZXIvVGhyZWFkV2VhdmVyLmg+Ci0gCi0gdXNp bmcgbmFtZXNwYWNlIE1ldGFQcm94eTsKLSAKLUBAIC04MywxOCArODUsMjAgQEAgTWV0YVByb3h5 OjpUcmFjazo6aW5pdCggY29uc3QgS1VybCAmdXJsLCBib29sIGF3YWl0TG9va3VwTm90aWZpY2F0 aW9uICkKLSAJZC0+dXJsID0gdXJsOwotICAgICBkLT5wcm94eSA9IHRoaXM7Ci0gICAgIGQtPmNh Y2hlZExlbmd0aCA9IDA7Ci0tCi0tCWlmKCAhYXdhaXRMb29rdXBOb3RpZmljYXRpb24gKQotLSAg ICB7Ci0tICAgICAgICBRT2JqZWN0Ojpjb25uZWN0KCBDb2xsZWN0aW9uTWFuYWdlcjo6aW5zdGFu Y2UoKSwgU0lHTkFMKCB0cmFja1Byb3ZpZGVyQWRkZWQoIENvbGxlY3Rpb25zOjpUcmFja1Byb3Zp ZGVyKiApICksIGQsIFNMT1QoIHNsb3ROZXdUcmFja1Byb3ZpZGVyKCBDb2xsZWN0aW9uczo6VHJh Y2tQcm92aWRlciogKSApICk7Ci0tICAgICAgICBRT2JqZWN0Ojpjb25uZWN0KCBDb2xsZWN0aW9u TWFuYWdlcjo6aW5zdGFuY2UoKSwgU0lHTkFMKCBjb2xsZWN0aW9uQWRkZWQoIENvbGxlY3Rpb25z OjpDb2xsZWN0aW9uKiApICksIGQsIFNMT1QoIHNsb3ROZXdDb2xsZWN0aW9uKCBDb2xsZWN0aW9u czo6Q29sbGVjdGlvbiogKSApICk7Ci0tICAgIH0KLS0KLSAgICAgZC0+YWxidW1QdHIgPSBNZXRh OjpBbGJ1bVB0ciggbmV3IFByb3h5QWxidW0oIGQgKSApOwotICAgICBkLT5hcnRpc3RQdHIgPSBN ZXRhOjpBcnRpc3RQdHIoIG5ldyBQcm94eUFydGlzdCggZCApICk7Ci0gICAgIGQtPmdlbnJlUHRy ID0gTWV0YTo6R2VucmVQdHIoIG5ldyBQcm94eUdlbnJlKCBkICkgKTsKLSAgICAgZC0+Y29tcG9z ZXJQdHIgPSBNZXRhOjpDb21wb3NlclB0ciggbmV3IFByb3h5Q29tcG9zZXIoIGQgKSApOwotICAg ICBkLT55ZWFyUHRyID0gTWV0YTo6WWVhclB0ciggbmV3IFByb3h5WWVhciggZCApICk7Ci0rCi0r ICAgIGlmKCAhYXdhaXRMb29rdXBOb3RpZmljYXRpb24gKQotKyAgICB7Ci0rICAgICAgICBXb3Jr ZXIgKndvcmtlciA9IG5ldyBXb3JrZXIoIGQtPnVybCApOwotKyAgICAgICAgUU9iamVjdDo6Y29u bmVjdCggd29ya2VyLCBTSUdOQUwoZmluaXNoZWRMb29rdXAoIGNvbnN0IE1ldGE6OlRyYWNrUHRy ICYgKSksCi0rICAgICAgICAgICAgICAgIGQsIFNMT1Qoc2xvdFVwZGF0ZVRyYWNrKE1ldGE6OlRy YWNrUHRyKSkgKTsKLSsKLSsgICAgICAgIFRocmVhZFdlYXZlcjo6V2VhdmVyOjppbnN0YW5jZSgp LT5lbnF1ZXVlKCB3b3JrZXIgKTsKLSsgICAgfQotIH0KLSAKLSBNZXRhUHJveHk6OlRyYWNrOjp+ VHJhY2soKQotQEAgLTM0NSw2ICszNDksMTIgQEAgTWV0YVByb3h5OjpUcmFjazo6bGVuZ3RoKCkg Y29uc3QKLSAgICAgcmV0dXJuIGQtPmNhY2hlZExlbmd0aDsKLSB9Ci0gCi0rdm9pZAotK01ldGFQ cm94eTo6VHJhY2s6OnNldExlbmd0aCggcWludDY0IGxlbmd0aCApCi0rewotKyAgICBkLT5jYWNo ZWRMZW5ndGggPSBsZW5ndGg7Ci0rfQotKwotIGludAotIE1ldGFQcm94eTo6VHJhY2s6OmZpbGVz aXplKCkgY29uc3QKLSB7Ci1AQCAtNDI0LDcgKzQzNCw3IEBAIE1ldGFQcm94eTo6VHJhY2s6Omlu Q29sbGVjdGlvbigpIGNvbnN0Ci0gICAgIHJldHVybiBmYWxzZTsKLSB9Ci0gCi0tQ29sbGVjdGlv bnM6OkNvbGxlY3Rpb24qCi0rQ29sbGVjdGlvbnM6OkNvbGxlY3Rpb24gKgotIE1ldGFQcm94eTo6 VHJhY2s6OmNvbGxlY3Rpb24oKSBjb25zdAotIHsKLSAgICAgaWYoIGQtPnJlYWxUcmFjayApCi1A QCAtNDUwLDcgKzQ2MCwxMSBAQCBNZXRhUHJveHk6OlRyYWNrOjp1bnN1YnNjcmliZSggTWV0YTo6 T2JzZXJ2ZXIgKm9ic2VydmVyICkKLSB2b2lkCi0gTWV0YVByb3h5OjpUcmFjazo6bG9va3VwVHJh Y2soIENvbGxlY3Rpb25zOjpUcmFja1Byb3ZpZGVyICpwcm92aWRlciApCi0gewotLQlkLT5zbG90 TmV3VHJhY2tQcm92aWRlciggcHJvdmlkZXIgKTsKLSsgICAgaWYoIHByb3ZpZGVyLT5wb3NzaWJs eUNvbnRhaW5zVHJhY2soIGQtPnVybCApICkKLSsgICAgewotKyAgICAgICAgTWV0YTo6VHJhY2tQ dHIgdHJhY2sgPSBwcm92aWRlci0+dHJhY2tGb3JVcmwoIGQtPnVybCApOwotKyAgICAgICAgZC0+ c2xvdFVwZGF0ZVRyYWNrKCB0cmFjayApOwotKyAgICB9Ci0gfQotIAotIHZvaWQKLUBAIC00NzAs NyArNDg0LDcgQEAgTWV0YVByb3h5OjpUcmFjazo6aGFzQ2FwYWJpbGl0eUludGVyZmFjZSggQ2Fw YWJpbGl0aWVzOjpDYXBhYmlsaXR5OjpUeXBlIHR5cGUgKQotICAgICByZXR1cm4gZmFsc2U7Ci0g fQotIAotLUNhcGFiaWxpdGllczo6Q2FwYWJpbGl0eSoKLStDYXBhYmlsaXRpZXM6OkNhcGFiaWxp dHkgKgotIE1ldGFQcm94eTo6VHJhY2s6OmNyZWF0ZUNhcGFiaWxpdHlJbnRlcmZhY2UoIENhcGFi aWxpdGllczo6Q2FwYWJpbGl0eTo6VHlwZSB0eXBlICkKLSB7Ci0gICAgIGlmKCBkLT5yZWFsVHJh Y2sgKQotQEAgLTQ4NCw3ICs0OTgsNyBAQCBNZXRhUHJveHk6OlRyYWNrOjpjcmVhdGVDYXBhYmls aXR5SW50ZXJmYWNlKCBDYXBhYmlsaXRpZXM6OkNhcGFiaWxpdHk6OlR5cGUgdHlwZQotIGJvb2wK LSBNZXRhUHJveHk6OlRyYWNrOjpvcGVyYXRvcj09KCBjb25zdCBNZXRhOjpUcmFjayAmdHJhY2sg KSBjb25zdAotIHsKLS0gICAgY29uc3QgTWV0YVByb3h5OjpUcmFjayAqcHJveHkgPSBkeW5hbWlj X2Nhc3Q8Y29uc3QgTWV0YVByb3h5OjpUcmFjayo+KCAmdHJhY2sgKTsKLSsgICAgY29uc3QgTWV0 YVByb3h5OjpUcmFjayAqcHJveHkgPSBkeW5hbWljX2Nhc3Q8Y29uc3QgTWV0YVByb3h5OjpUcmFj ayAqPiggJnRyYWNrICk7Ci0gICAgIGlmKCBwcm94eSAmJiBkLT5yZWFsVHJhY2sgKQotICAgICAg ICAgcmV0dXJuIGQtPnJlYWxUcmFjayA9PSBwcm94eS0+ZC0+cmVhbFRyYWNrOwotICAgICBlbHNl IGlmKCBwcm94eSApCi1kaWZmIC0tZ2l0IGEvc3JjL2NvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQ cm94eVdvcmtlci5oIGIvc3JjL2NvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eVdvcmtlci5o Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNTU3ZjI5ZAotLS0tIC9kZXYv bnVsbAotKysrIGIvc3JjL2NvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eVdvcmtlci5oCi1A QCAtMCwwICsxLDQyIEBACi0rLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSsgKiBD b3B5cmlnaHQgKGMpIDIwMTIgQmFydCBDZXJuZWVscyA8YmFydC5jZXJuZWVsc0BrZGUub3JnPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotKyAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqCi0rICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgICAgICAgICoKLSsgKiB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSAgICAgICAgKgotKyAqIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2Yg dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyICAgICAgICAgICAqCi0r ICogdmVyc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSsgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKgotKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgICAgICAqCi0rICogV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSAgICAgICoKLSsgKiBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAg KgotKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0rICogWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcg d2l0aCAgICAgICAgICoKLSsgKiB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotKyAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLwotKwotKyNpZm5kZWYgTUVUQVBST1hZX01FVEFQ Uk9YWVdPUktFUl9ICi0rI2RlZmluZSBNRVRBUFJPWFlfTUVUQVBST1hZV09SS0VSX0gKLSsKLSsj aW5jbHVkZSA8Y29yZS9jb2xsZWN0aW9ucy9zdXBwb3J0L1RyYWNrRm9yVXJsV29ya2VyLmg+Ci0r I2luY2x1ZGUgPGNvcmUvY29sbGVjdGlvbnMvQ29sbGVjdGlvbi5oPgotKwotK25hbWVzcGFjZSBN ZXRhUHJveHkgewotKwotK2NsYXNzIFdvcmtlciA6IHB1YmxpYyBBbWFyb2s6OlRyYWNrRm9yVXJs V29ya2VyCi0rewotKyAgICBRX09CSkVDVAotKyAgICBwdWJsaWM6Ci0rICAgICAgICBleHBsaWNp dCBXb3JrZXIoIGNvbnN0IEtVcmwgJnVybCApOwotKwotKyAgICAgICAgLy9UcmFja0ZvclVybFdv cmtlciB2aXJ0dWFsIG1ldGhvZHMKLSsgICAgICAgIHZpcnR1YWwgdm9pZCBydW4oKTsKLSsKLSsg ICAgcHJpdmF0ZSBzbG90czoKLSsgICAgICAgIHZvaWQgc2xvdE5ld1RyYWNrUHJvdmlkZXIoIENv bGxlY3Rpb25zOjpUcmFja1Byb3ZpZGVyICpuZXdUcmFja1Byb3ZpZGVyICk7Ci0rICAgICAgICB2 b2lkIHNsb3ROZXdDb2xsZWN0aW9uKCBDb2xsZWN0aW9uczo6Q29sbGVjdGlvbiAqbmV3Q29sbGVj dGlvbiApOwotKwotK307Ci0rCi0rfSAvLyBuYW1lc3BhY2UgTWV0YVByb3h5Ci0rCi0rI2VuZGlm IC8vIE1FVEFQUk9YWV9NRVRBUFJPWFlXT1JLRVJfSAotZGlmZiAtLWdpdCBhL3NyYy9jb3JlLWlt cGwvbWV0YS9wcm94eS9NZXRhUHJveHlXb3JrZXIuY3BwIGIvc3JjL2NvcmUtaW1wbC9tZXRhL3By b3h5L01ldGFQcm94eVdvcmtlci5jcHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAw MDAwLi4wY2RlMjgwCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvY29yZS1pbXBsL21ldGEvcHJv eHkvTWV0YVByb3h5V29ya2VyLmNwcAotQEAgLTAsMCArMSw4MiBAQAotKy8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCi0rICogQ29weXJpZ2h0IChjKSAyMDEyIEJhcnQgQ2VybmVlbHMg PGJhcnQuY2VybmVlbHNAa2RlLm9yZz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSsg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVy ICAgICAgICAqCi0rICogdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgICAgICAgICoKLSsgKiBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciAgICAgICAgICAgKgotKyAqIHZlcnNpb24uICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq Ci0rICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSsgKiBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhP VVQgQU5ZICAgICAgKgotKyAqIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgICAgICAqCi0rICogUEFS VElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuICAgICAgICAgICAgICoKLSsgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKgotKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGggICAgICAgICAqCi0rICogdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgICAgICAgICAg ICAgICAgICAgICAgICAgICoKLSsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSsK LSsjaW5jbHVkZSAiTWV0YVByb3h5V29ya2VyLmgiCi0rCi0rI2luY2x1ZGUgImNvcmUtaW1wbC9j b2xsZWN0aW9ucy9zdXBwb3J0L0NvbGxlY3Rpb25NYW5hZ2VyLmgiCi0rCi0rbmFtZXNwYWNlIE1l dGFQcm94eSB7Ci0rCi0rV29ya2VyOjpXb3JrZXIoIGNvbnN0IEtVcmwgJnVybCApCi0rICAgIDog QW1hcm9rOjpUcmFja0ZvclVybFdvcmtlciggdXJsICkKLSt7Ci0rCi0rfQotKwotK3ZvaWQKLStX b3JrZXI6OnJ1bigpCi0rewotKyAgICBNZXRhOjpUcmFja1B0ciB0cmFjayA9IENvbGxlY3Rpb25N YW5hZ2VyOjppbnN0YW5jZSgpLT50cmFja0ZvclVybCggbV91cmwgKTsKLSsKLSsgICAgLy9ubyBU cmFja1Byb3ZpZGVyIGhhcyBhIHRyYWNrIGZvciB1cyB5ZXQsIHF1ZXJ5IG5ldyBvbmVzIHRoYXQg YXJlIGFkZGVkLgotKyAgICBpZiggdHJhY2suaXNOdWxsKCkgKQotKyAgICB7Ci0rICAgICAgICAv L1RPRE86IHNob3VsZCBvbmx5IGhhdmUgdG8gY29ubmVjdG8gdG8gVHJhY2tQcm92aWRlciBzaWdu YWxzLgotKyAgICAgICAgLy9FYWNoIENvbGxlY3Rpb24gY29udGFpbnMgYSBUcmFja1Byb3ZpZGVy Ci0rICAgICAgICBjb25uZWN0KCBDb2xsZWN0aW9uTWFuYWdlcjo6aW5zdGFuY2UoKSwKLSsgICAg ICAgICAgICAgICAgIFNJR05BTCh0cmFja1Byb3ZpZGVyQWRkZWQoIENvbGxlY3Rpb25zOjpUcmFj a1Byb3ZpZGVyICogKSksCi0rICAgICAgICAgICAgICAgICBTTE9UKHNsb3ROZXdUcmFja1Byb3Zp ZGVyKCBDb2xsZWN0aW9uczo6VHJhY2tQcm92aWRlciAqICkpICk7Ci0rICAgICAgICBjb25uZWN0 KCBDb2xsZWN0aW9uTWFuYWdlcjo6aW5zdGFuY2UoKSwKLSsgICAgICAgICAgICAgICAgIFNJR05B TChjb2xsZWN0aW9uQWRkZWQoIENvbGxlY3Rpb25zOjpDb2xsZWN0aW9uICogKSksCi0rICAgICAg ICAgICAgICAgICBTTE9UKHNsb3ROZXdDb2xsZWN0aW9uKCBDb2xsZWN0aW9uczo6Q29sbGVjdGlv biAqICkpICk7Ci0rCi0rICAgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSsgICAgZW1pdCggZmlu aXNoZWRMb29rdXAoIHRyYWNrICkgKTsKLSt9Ci0rCi0rdm9pZAotK1dvcmtlcjo6c2xvdE5ld1Ry YWNrUHJvdmlkZXIoIENvbGxlY3Rpb25zOjpUcmFja1Byb3ZpZGVyICpuZXdUcmFja1Byb3ZpZGVy ICkKLSt7Ci0rICAgIGlmKCAhbmV3VHJhY2tQcm92aWRlciApCi0rICAgIHsKLSsgICAgICAgIHJl dHVybjsKLSsgICAgfQotKwotKyAgICBpZiggbmV3VHJhY2tQcm92aWRlci0+cG9zc2libHlDb250 YWluc1RyYWNrKCBtX3VybCApICkKLSsgICAgewotKyAgICAgICAgTWV0YTo6VHJhY2tQdHIgdHJh Y2sgPSBuZXdUcmFja1Byb3ZpZGVyLT50cmFja0ZvclVybCggbV91cmwgKTsKLSsgICAgICAgIGVt aXQoIGZpbmlzaGVkTG9va3VwKCB0cmFjayApICk7Ci0rICAgIH0KLSt9Ci0rCi0rdm9pZAotK1dv cmtlcjo6c2xvdE5ld0NvbGxlY3Rpb24oIENvbGxlY3Rpb25zOjpDb2xsZWN0aW9uICpuZXdDb2xs ZWN0aW9uICkKLSt7Ci0rICAgIGlmKCAhbmV3Q29sbGVjdGlvbiApCi0rICAgIHsKLSsgICAgICAg IHJldHVybjsKLSsgICAgfQotKwotKyAgICBpZiggbmV3Q29sbGVjdGlvbi0+cG9zc2libHlDb250 YWluc1RyYWNrKCBtX3VybCApICkKLSsgICAgewotKyAgICAgICAgTWV0YTo6VHJhY2tQdHIgdHJh Y2sgPSBuZXdDb2xsZWN0aW9uLT50cmFja0ZvclVybCggbV91cmwgKTsKLSsgICAgICAgIGVtaXQo IGZpbmlzaGVkTG9va3VwKCB0cmFjayApICk7Ci0rICAgIH0KLSt9Ci0rCi0rfSAvLyBuYW1lc3Bh Y2UgTWV0YVByb3h5Ci1kaWZmIC0tZ2l0IGEvc3JjL2NvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQ cm94eV9wLmggYi9zcmMvY29yZS1pbXBsL21ldGEvcHJveHkvTWV0YVByb3h5X3AuaAotaW5kZXgg NzkyNjc1ZC4uYWM4ZWZiMCAxMDA2NDQKLS0tLSBhL3NyYy9jb3JlLWltcGwvbWV0YS9wcm94eS9N ZXRhUHJveHlfcC5oCi0rKysgYi9zcmMvY29yZS1pbXBsL21ldGEvcHJveHkvTWV0YVByb3h5X3Au aAotQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgTWV0YVByb3h5OjpUcmFjazo6UHJpdmF0ZSA6IHB1 YmxpYyBRT2JqZWN0LCBwdWJsaWMgTWV0YTo6T2JzZXJ2ZXIKLSAKLSAgICAgICAgIE1ldGE6OlRy YWNrUHRyIHJlYWxUcmFjazsKLSAKLS0gICAgICAgIFFMaXN0PE1ldGE6Ok9ic2VydmVyKj4gb2Jz ZXJ2ZXJzOwotKyAgICAgICAgUUxpc3Q8TWV0YTo6T2JzZXJ2ZXIgKj4gb2JzZXJ2ZXJzOwotIAot ICAgICAgICAgUVN0cmluZyBjYWNoZWRBcnRpc3Q7Ci0gICAgICAgICBRU3RyaW5nIGNhY2hlZEFs YnVtOwotQEAgLTgyLDM0ICs4Miw2IEBAIGNsYXNzIE1ldGFQcm94eTo6VHJhY2s6OlByaXZhdGUg OiBwdWJsaWMgUU9iamVjdCwgcHVibGljIE1ldGE6Ok9ic2VydmVyCi0gICAgICAgICB9Ci0gCi0g ICAgIHB1YmxpYyBzbG90czoKLS0gICAgICAgIHZvaWQgc2xvdE5ld1RyYWNrUHJvdmlkZXIoIENv bGxlY3Rpb25zOjpUcmFja1Byb3ZpZGVyICpuZXdUcmFja1Byb3ZpZGVyICkKLS0gICAgICAgIHsK LS0gICAgICAgICAgICBpZiAoICFuZXdUcmFja1Byb3ZpZGVyICkKLS0gICAgICAgICAgICB7Ci0t ICAgICAgICAgICAgICAgIHJldHVybjsKLS0gICAgICAgICAgICB9Ci0tCi0tICAgICAgICAgICAg aWYoIG5ld1RyYWNrUHJvdmlkZXItPnBvc3NpYmx5Q29udGFpbnNUcmFjayggdXJsICkgKQotLSAg ICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgTWV0YTo6VHJhY2tQdHIgdHJhY2sgPSBuZXdU cmFja1Byb3ZpZGVyLT50cmFja0ZvclVybCggdXJsICk7Ci0tICAgICAgICAgICAgICAgIHNsb3RV cGRhdGVUcmFjayggdHJhY2sgKTsKLS0gICAgICAgICAgICB9Ci0tICAgICAgICB9Ci0tCi0tICAg ICAgICB2b2lkIHNsb3ROZXdDb2xsZWN0aW9uKCBDb2xsZWN0aW9uczo6Q29sbGVjdGlvbiAqbmV3 Q29sbGVjdGlvbiApCi0tICAgICAgICB7Ci0tICAgICAgICAgICAgaWYgKCAhbmV3Q29sbGVjdGlv biApCi0tICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICByZXR1cm47Ci0tICAgICAgICAg ICAgfQotLQotLSAgICAgICAgICAgIGlmKCBuZXdDb2xsZWN0aW9uLT5wb3NzaWJseUNvbnRhaW5z VHJhY2soIHVybCApICkKLS0gICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgIE1ldGE6OlRy YWNrUHRyIHRyYWNrID0gbmV3Q29sbGVjdGlvbi0+dHJhY2tGb3JVcmwoIHVybCApOwotLSAgICAg ICAgICAgICAgICBzbG90VXBkYXRlVHJhY2soIHRyYWNrICk7Ci0tICAgICAgICAgICAgfQotLSAg ICAgICAgfQotLQotICAgICAgICAgdm9pZCBzbG90VXBkYXRlVHJhY2soIE1ldGE6OlRyYWNrUHRy IHRyYWNrICkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBpZiggdHJhY2sgKQotZGlmZiAtLWdp dCBhL3NyYy9jb3JlLWltcGwvcGxheWxpc3RzL3R5cGVzL2ZpbGUveHNwZi9YU1BGUGxheWxpc3Qu Y3BwIGIvc3JjL2NvcmUtaW1wbC9wbGF5bGlzdHMvdHlwZXMvZmlsZS94c3BmL1hTUEZQbGF5bGlz dC5jcHAKLWluZGV4IDRjYjQ5ZmIuLjAxY2YxZTYgMTAwNjQ0Ci0tLS0gYS9zcmMvY29yZS1pbXBs L3BsYXlsaXN0cy90eXBlcy9maWxlL3hzcGYvWFNQRlBsYXlsaXN0LmNwcAotKysrIGIvc3JjL2Nv cmUtaW1wbC9wbGF5bGlzdHMvdHlwZXMvZmlsZS94c3BmL1hTUEZQbGF5bGlzdC5jcHAKLUBAIC0y MzMsOCArMjMzLDcgQEAgWFNQRlBsYXlsaXN0Ojp0cmFja0NvdW50KCkgY29uc3QKLSBNZXRhOjpU cmFja0xpc3QKLSBYU1BGUGxheWxpc3Q6OnRyYWNrcygpCi0gewotLSAgICAvL0lmIHlvdSBkbyBu b3QgbG9hZCBiZWZvcmUsIG1fdHJhY2tzCi0tICAgIC8vY2FuIGJlIGVtcHR5IGJlZm9yZSB1c2Fn ZS4KLSsgICAgLy9JZiB5b3UgZG8gbm90IGxvYWQsIG1fdHJhY2tzIGNhbiBiZSBlbXB0eSBiZWZv cmUgdXNhZ2UuCi0gICAgIHRyaWdnZXJUcmFja0xvYWQoKTsKLSAKLSAgICAgcmV0dXJuIG1fdHJh Y2tzOwotQEAgLTI1MSw3NiArMjUwLDE0IEBAIFhTUEZQbGF5bGlzdDo6dHJpZ2dlclRyYWNrTG9h ZCgpCi0gCi0gICAgIGZvcmVhY2goIGNvbnN0IFhTUEZUcmFjayAmdHJhY2ssIHhzcGZUcmFja3Mg KQotICAgICB7Ci0tICAgICAgICBNZXRhOjpUcmFja1B0ciB0cmFja1B0cjsKLS0gICAgICAgIGlm KCAhdHJhY2suaWRlbnRpZmllci5pc0VtcHR5KCkgKQotLSAgICAgICAgICAgIHRyYWNrUHRyID0g Q29sbGVjdGlvbk1hbmFnZXI6Omluc3RhbmNlKCktPnRyYWNrRm9yVXJsKCB0cmFjay5pZGVudGlm aWVyICk7Ci0tICAgICAgICBlbHNlCi0tICAgICAgICAgICAgdHJhY2tQdHIgPSBDb2xsZWN0aW9u TWFuYWdlcjo6aW5zdGFuY2UoKS0+dHJhY2tGb3JVcmwoIHRyYWNrLmxvY2F0aW9uICk7Ci0tICAg ICAgICBpZiggdHJhY2tQdHIgKQotLSAgICAgICAgewotLSAgICAgICAgICAgIC8qKgotLSAgICAg ICAgICAgICAqIE5PVEU6IElmIHRoaXMgaXMgYSBNZXRhUHJveHk6OlRyYWNrLCBpdCBwcm9iYWJs eSBpc24ndCBwbGF5YWJsZSB5ZXQsCi0tICAgICAgICAgICAgICogICAgICAgYnV0IHRoYXQncyBv a2F5LiBIb3dldmVyLCBpdCdzIG5vdCBhIGdvb2QgaWRlYSB0byBnZXQgYW5vdGhlcgotLSAgICAg ICAgICAgICAqICAgICAgIG9uZSBmcm9tIHRoZSBzYW1lIHByb3ZpZGVyLCBzaW5jZSB0aGUgcHJv eHkgcHJvYmFibHkgbWVhbnMgdGhhdAotLSAgICAgICAgICAgICAqICAgICAgIG1ha2luZyBvbmUg aW52b2x2ZXMgcXVpdGUgYSBiaXQgb2Ygd29yay4KLS0gICAgICAgICAgICAgKiAgICAgICAgIC0g QW5keSBDb2RlciA8YW5kcmV3LmNvZGVyQGdtYWlsLmNvbT4KLS0gICAgICAgICAgICAgKi8KLS0g ICAgICAgICAgICBpZiggIXRyYWNrUHRyLT5pc1BsYXlhYmxlKCkgJiYgKCB0eXBlaWQoICogdHJh Y2tQdHIuZGF0YSgpICkgIT0gdHlwZWlkKCBNZXRhUHJveHk6OlRyYWNrICkgKSApCi0tICAgICAg ICAgICAgICAgIHRyYWNrUHRyID0gQ29sbGVjdGlvbk1hbmFnZXI6Omluc3RhbmNlKCktPnRyYWNr Rm9yVXJsKCB0cmFjay5pZGVudGlmaWVyICk7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBpZigg dHJhY2tQdHIgKQotLSAgICAgICAgewotLSAgICAgICAgICAgIGlmKCB0eXBlaWQoICogdHJhY2tQ dHIuZGF0YSgpICkgPT0gdHlwZWlkKCBNZXRhU3RyZWFtOjpUcmFjayApICkKLS0gICAgICAgICAg ICB7Ci0tICAgICAgICAgICAgICAgIE1ldGFTdHJlYW06OlRyYWNrICogc3RyZWFtVHJhY2sgPSBk eW5hbWljX2Nhc3Q8TWV0YVN0cmVhbTo6VHJhY2sgKj4gKCB0cmFja1B0ci5kYXRhKCkgKTsKLS0g ICAgICAgICAgICAgICAgaWYgKCBzdHJlYW1UcmFjayApCi0tICAgICAgICAgICAgICAgIHsKLS0g ICAgICAgICAgICAgICAgICAgIHN0cmVhbVRyYWNrLT5zZXRUaXRsZSggdHJhY2sudGl0bGUgKTsK LS0gICAgICAgICAgICAgICAgICAgIHN0cmVhbVRyYWNrLT5zZXRBbGJ1bSggdHJhY2suYWxidW0g KTsKLS0gICAgICAgICAgICAgICAgICAgIHN0cmVhbVRyYWNrLT5zZXRBcnRpc3QoIHRyYWNrLmNy ZWF0b3IgKTsKLS0gICAgICAgICAgICAgICAgfQotLSAgICAgICAgICAgIH0KLS0gICAgICAgICAg ICBlbHNlIGlmKCB0eXBlaWQoICogdHJhY2tQdHIuZGF0YSgpICkgPT0gdHlwZWlkKCBNZXRhOjpU aW1lY29kZVRyYWNrICkgKQotLSAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgTWV0YTo6 VGltZWNvZGVUcmFjayAqIHRpbWVjb2RlVHJhY2sgPQotLSAgICAgICAgICAgICAgICAgICAgICAg IGR5bmFtaWNfY2FzdDxNZXRhOjpUaW1lY29kZVRyYWNrICo+KCB0cmFja1B0ci5kYXRhKCkgKTsK LS0gICAgICAgICAgICAgICAgaWYoIHRpbWVjb2RlVHJhY2sgKQotLSAgICAgICAgICAgICAgICB7 Ci0tICAgICAgICAgICAgICAgICAgICB0aW1lY29kZVRyYWNrLT5iZWdpbk1ldGFEYXRhVXBkYXRl KCk7Ci0tICAgICAgICAgICAgICAgICAgICB0aW1lY29kZVRyYWNrLT5zZXRUaXRsZSggdHJhY2su dGl0bGUgKTsKLS0gICAgICAgICAgICAgICAgICAgIHRpbWVjb2RlVHJhY2stPnNldEFsYnVtKCB0 cmFjay5hbGJ1bSApOwotLSAgICAgICAgICAgICAgICAgICAgdGltZWNvZGVUcmFjay0+c2V0QXJ0 aXN0KCB0cmFjay5jcmVhdG9yICk7Ci0tICAgICAgICAgICAgICAgICAgICB0aW1lY29kZVRyYWNr LT5lbmRNZXRhRGF0YVVwZGF0ZSgpOwotLSAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAg fQotLQotLSAgICAgICAgICAgIG1fdHJhY2tzIDw8IHRyYWNrUHRyOwotLSAgICAgICAgfQotLQot LQotLSAgICAgICAgLy8gd2h5IGRvIHdlIG5lZWQgdGhpcz8gc3FscGxheWxpc3QgaXMgbm90IGRv aW5nIHRoaXMKLS0gICAgICAgIC8vIHdlIGRvbid0IHdhbnQgKHByb2JhYmx5KSB1bnBsYXlhYmxl IHRyYWNrcwotLSAgICAgICAgLy8gYW5kIGl0IGNhdXNlcyBwcm9ibGVtcyBmb3IgbWUgKERhbmll bFcpIGFzIGxvbmcKLS0gICAgICAgIC8vIGFtYXJvayBub3QgcmVzcGVjdHMgVHJhY2s6OmlzUGxh eWFibGUoKQotLSAgICAgICAgLyplbHNlIHsKLS0KLS0gICAgICAgICAgICBNZXRhUHJveHk6OlRy YWNrICpwcm94eVRyYWNrID0gbmV3IE1ldGFQcm94eTo6VHJhY2soIHRyYWNrLmxvY2F0aW9uICk7 Ci0tICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICAvL0ZpbGwgaW4gdmFsdWVzIGZyb20g eHNwZi4uCi0tICAgICAgICAgICAgICAgIFFWYXJpYW50TWFwIG1hcDsKLS0gICAgICAgICAgICAg ICAgbWFwLmluc2VydCggTWV0YTo6RmllbGQ6OlRJVExFLCB0cmFjay50aXRsZSApOwotLSAgICAg ICAgICAgICAgICBtYXAuaW5zZXJ0KCBNZXRhOjpGaWVsZDo6QUxCVU0sIHRyYWNrLmFsYnVtICk7 Ci0tICAgICAgICAgICAgICAgIG1hcC5pbnNlcnQoIE1ldGE6OkZpZWxkOjpBUlRJU1QsIHRyYWNr LmNyZWF0b3IgKTsKLS0gICAgICAgICAgICAgICAgbWFwLmluc2VydCggTWV0YTo6RmllbGQ6OkxF TkdUSCwgdHJhY2suZHVyYXRpb24gKTsKLS0gICAgICAgICAgICAgICAgbWFwLmluc2VydCggTWV0 YTo6RmllbGQ6OlRSQUNLTlVNQkVSLCB0cmFjay50cmFja051bSApOwotLSAgICAgICAgICAgICAg ICBtYXAuaW5zZXJ0KCBNZXRhOjpGaWVsZDo6VVJMLCB0cmFjay5sb2NhdGlvbiApOwotLSAgICAg ICAgICAgICAgICBNZXRhOjpGaWVsZDo6dXBkYXRlVHJhY2soIHByb3h5VHJhY2ssIG1hcCApOwot LSAgICAgICAgICAgIH0KLS0gICAgICAgICAgICBtX3RyYWNrcyA8PCBNZXRhOjpUcmFja1B0cigg cHJveHlUcmFjayApOwotLSAgICAvLyAgICAgICAgIG1fdHJhY2tzIDw8IENvbGxlY3Rpb25NYW5h Z2VyOjppbnN0YW5jZSgpLT50cmFja0ZvclVybCggdHJhY2subG9jYXRpb24gKTsKLS0gICAgICAg IH0qLwotLQotKyAgICAgICBNZXRhUHJveHk6OlRyYWNrICpwcm94eVRyYWNrID0gbmV3IE1ldGFQ cm94eTo6VHJhY2soIHRyYWNrLmxvY2F0aW9uICk7Ci0rICAgICAgIC8vRmlsbCBpbiB2YWx1ZXMg ZnJvbSB4c3BmLi4KLSsgICAgICAgcHJveHlUcmFjay0+c2V0TmFtZSggdHJhY2sudGl0bGUgKTsK LSsgICAgICAgcHJveHlUcmFjay0+c2V0QWxidW0oIHRyYWNrLmFsYnVtICk7Ci0rICAgICAgIHBy b3h5VHJhY2stPnNldEFydGlzdCggdHJhY2suY3JlYXRvciApOwotKyAgICAgICBwcm94eVRyYWNr LT5zZXRMZW5ndGgoIHRyYWNrLmR1cmF0aW9uICk7Ci0rICAgICAgIHByb3h5VHJhY2stPnNldFRy YWNrTnVtYmVyKCB0cmFjay50cmFja051bSApOwotKyAgICAgICBtX3RyYWNrcyA8PCBNZXRhOjpU cmFja1B0ciggcHJveHlUcmFjayApOwotICAgICB9Ci0gCi0gICAgIG1fdHJhY2tzTG9hZGVkID0g dHJ1ZTsKLWRpZmYgLS1naXQgYS9zcmMvY29yZS9jb2xsZWN0aW9ucy9zdXBwb3J0L1RyYWNrRm9y VXJsV29ya2VyLmggYi9zcmMvY29yZS9jb2xsZWN0aW9ucy9zdXBwb3J0L1RyYWNrRm9yVXJsV29y a2VyLmgKLWluZGV4IDY0ZDIzYmQuLjE2ZDc2NGUgMTAwNjQ0Ci0tLS0gYS9zcmMvY29yZS9jb2xs ZWN0aW9ucy9zdXBwb3J0L1RyYWNrRm9yVXJsV29ya2VyLmgKLSsrKyBiL3NyYy9jb3JlL2NvbGxl Y3Rpb25zL3N1cHBvcnQvVHJhY2tGb3JVcmxXb3JrZXIuaAotQEAgLTM1LDE3ICszNSwxNyBAQCBj bGFzcyBBTUFST0tfQ09SRV9FWFBPUlQgVHJhY2tGb3JVcmxXb3JrZXIgOiBwdWJsaWMgVGhyZWFk V2VhdmVyOjpKb2IKLSB7Ci0gICAgIFFfT0JKRUNUCi0gcHVibGljOgotLSAgICBUcmFja0ZvclVy bFdvcmtlciAoIGNvbnN0IEtVcmwgJnVybCApOwotLSAgICBUcmFja0ZvclVybFdvcmtlciAoIGNv bnN0IFFTdHJpbmcgJnVybCApOwotKyAgICBUcmFja0ZvclVybFdvcmtlciggY29uc3QgS1VybCAm dXJsICk7Ci0rICAgIFRyYWNrRm9yVXJsV29ya2VyKCBjb25zdCBRU3RyaW5nICZ1cmwgKTsKLSAg ICAgflRyYWNrRm9yVXJsV29ya2VyKCk7Ci0gCi0tICAgIHZpcnR1YWwgdm9pZCBydW4gKCkgPSAw OwotKyAgICB2aXJ0dWFsIHZvaWQgcnVuKCkgPSAwOwotIHNpZ25hbHM6Ci0tICAgIHZvaWQgZmlu aXNoZWRMb29rdXAgKCBjb25zdCBNZXRhOjpUcmFja1B0ciAgJnRyYWNrICk7Ci0rICAgIHZvaWQg ZmluaXNoZWRMb29rdXAoIGNvbnN0IE1ldGE6OlRyYWNrUHRyICZ0cmFjayApOwotIAotIHByb3Rl Y3RlZDoKLS0gICAgS1VybCBtVXJsOwotLSAgICBNZXRhOjpUcmFja1B0ciBtVHJhY2s7Ci0rICAg IEtVcmwgbV91cmw7Ci0rICAgIE1ldGE6OlRyYWNrUHRyIG1fdHJhY2s7Ci0gCi0gcHJpdmF0ZSBz bG90czoKLSAgICAgdm9pZCBjb21wbGV0ZUpvYigpOwotZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2Nv bGxlY3Rpb25zL3N1cHBvcnQvVHJhY2tGb3JVcmxXb3JrZXIuY3BwIGIvc3JjL2NvcmUvY29sbGVj dGlvbnMvc3VwcG9ydC9UcmFja0ZvclVybFdvcmtlci5jcHAKLWluZGV4IDdlOGYyODkuLjI4ZDky YmIgMTAwNjQ0Ci0tLS0gYS9zcmMvY29yZS9jb2xsZWN0aW9ucy9zdXBwb3J0L1RyYWNrRm9yVXJs V29ya2VyLmNwcAotKysrIGIvc3JjL2NvcmUvY29sbGVjdGlvbnMvc3VwcG9ydC9UcmFja0ZvclVy bFdvcmtlci5jcHAKLUBAIC0xNiwxNCArMTYsMTggQEAKLSAKLSAjaW5jbHVkZSAiVHJhY2tGb3JV cmxXb3JrZXIuaCIKLSAKLS1BbWFyb2s6OlRyYWNrRm9yVXJsV29ya2VyOjpUcmFja0ZvclVybFdv cmtlciAoIGNvbnN0IEtVcmwgJnVybCApIDogVGhyZWFkV2VhdmVyOjpKb2IoKSwgbVVybCAoIHVy bCApCi0rQW1hcm9rOjpUcmFja0ZvclVybFdvcmtlcjo6VHJhY2tGb3JVcmxXb3JrZXIoIGNvbnN0 IEtVcmwgJnVybCApCi0rICAgIDogVGhyZWFkV2VhdmVyOjpKb2IoKQotKyAgICAsIG1fdXJsKCB1 cmwgKQotIHsKLS0gICAgY29ubmVjdCAoIHRoaXMsIFNJR05BTCAoIGRvbmUgKCBUaHJlYWRXZWF2 ZXI6OkpvYiogKSApLCBTTE9UICggY29tcGxldGVKb2IoKSApICk7Ci0rICAgIGNvbm5lY3QoIHRo aXMsIFNJR05BTChkb25lKCBUaHJlYWRXZWF2ZXI6OkpvYiAqICkpLCBTTE9UKCBjb21wbGV0ZUpv YigpKSApOwotIH0KLSAKLS1BbWFyb2s6OlRyYWNrRm9yVXJsV29ya2VyOjpUcmFja0ZvclVybFdv cmtlciggY29uc3QgUVN0cmluZyAmdXJsICkgOiBUaHJlYWRXZWF2ZXI6OkpvYigpLCBtVXJsICgg S1VybCAoIHVybCApICkKLStBbWFyb2s6OlRyYWNrRm9yVXJsV29ya2VyOjpUcmFja0ZvclVybFdv cmtlciggY29uc3QgUVN0cmluZyAmdXJsICkKLSsgICAgOiBUaHJlYWRXZWF2ZXI6OkpvYigpCi0r ICAgICwgbV91cmwoIEtVcmwoIHVybCApICkKLSB7Ci0tICAgIGNvbm5lY3QgKCB0aGlzLCBTSUdO QUwgKCBkb25lICggVGhyZWFkV2VhdmVyOjpKb2IqICkgKSwgU0xPVCAoIGNvbXBsZXRlSm9iKCkg KSApOwotKyAgICBjb25uZWN0KCB0aGlzLCBTSUdOQUwoZG9uZSggVGhyZWFkV2VhdmVyOjpKb2Ig KiApKSwgU0xPVCggY29tcGxldGVKb2IoKSkgKTsKLSB9Ci0gCi0gQW1hcm9rOjpUcmFja0ZvclVy bFdvcmtlcjo6flRyYWNrRm9yVXJsV29ya2VyKCkKLUBAIC0zMiw2ICszNiw2IEBAIEFtYXJvazo6 VHJhY2tGb3JVcmxXb3JrZXI6On5UcmFja0ZvclVybFdvcmtlcigpCi0gdm9pZAotIEFtYXJvazo6 VHJhY2tGb3JVcmxXb3JrZXI6OmNvbXBsZXRlSm9iKCkKLSB7Ci0tICAgIGVtaXQgKCBmaW5pc2hl ZExvb2t1cCAoIG1UcmFjayApICk7Ci0rICAgIGVtaXQoIGZpbmlzaGVkTG9va3VwKCBtX3RyYWNr ICkgKTsKLSAgICAgZGVsZXRlTGF0ZXIoKTsKLSB9Ci1kaWZmIC0tZ2l0IGEvc3JjL3NlcnZpY2Vz L2FtcGFjaGUvQW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9uLmggYi9zcmMvc2VydmljZXMvYW1wYWNo ZS9BbXBhY2hlU2VydmljZUNvbGxlY3Rpb24uaAotaW5kZXggYTQ4YzhmMi4uY2M0OTc3NSAxMDA2 NDQKLS0tLSBhL3NyYy9zZXJ2aWNlcy9hbXBhY2hlL0FtcGFjaGVTZXJ2aWNlQ29sbGVjdGlvbi5o Ci0rKysgYi9zcmMvc2VydmljZXMvYW1wYWNoZS9BbXBhY2hlU2VydmljZUNvbGxlY3Rpb24uaAot QEAgLTI1LDE0ICsyNSwxNiBAQCBjbGFzcyBBbXBhY2hlVHJhY2tGb3JVcmxXb3JrZXIgOiBwdWJs aWMgQW1hcm9rOjpUcmFja0ZvclVybFdvcmtlcgotIHsKLSAgICAgUV9PQkpFQ1QKLSAgICAgcHVi bGljOgotLSAgICAgICAgQW1wYWNoZVRyYWNrRm9yVXJsV29ya2VyKCBjb25zdCBLVXJsICZ1cmws IE1ldGFQcm94eTo6VHJhY2tQdHIgdHJhY2ssIGNvbnN0IFFTdHJpbmcgJnNlcnZlciwgY29uc3Qg UVN0cmluZyAmc2Vzc2lvbklkLCBTZXJ2aWNlQmFzZSogc2VydmljZSk7Ci0rICAgICAgICBBbXBh Y2hlVHJhY2tGb3JVcmxXb3JrZXIoIGNvbnN0IEtVcmwgJnVybCwgTWV0YVByb3h5OjpUcmFja1B0 ciB0cmFjaywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUVN0cmlu ZyAmc2VydmVyLCBjb25zdCBRU3RyaW5nICZzZXNzaW9uSWQsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFNlcnZpY2VCYXNlICpzZXJ2aWNlKTsKLSAgICAgICAgIH5BbXBhY2hl VHJhY2tGb3JVcmxXb3JrZXIoKTsKLS0gICAgICAgIHZpcnR1YWwgdm9pZCBydW4gKCk7Ci0rICAg ICAgICB2aXJ0dWFsIHZvaWQgcnVuKCk7Ci0gICAgICAgICB2b2lkIHBhcnNlVHJhY2soIGNvbnN0 IFFTdHJpbmcgJnhtbCApOwotICAgICBzaWduYWxzOgotICAgICAgICAgdm9pZCBhdXRoZW50aWNh dGlvbk5lZWRlZCgpOwotICAgICBwcml2YXRlOgotLSAgICAgICAgTWV0YVByb3h5OjpUcmFja1B0 ciBtUHJveHk7Ci0rICAgICAgICBNZXRhUHJveHk6OlRyYWNrUHRyIG1fcHJveHk7Ci0gICAgICAg ICBpbnQgbV91cmxUcmFja0lkOwotICAgICAgICAgaW50IG1fdXJsQWxidW1JZDsKLSAgICAgICAg IGludCBtX3VybEFydGlzdElkOwotQEAgLTQ0LDcgKzQ2LDcgQEAgY2xhc3MgQW1wYWNoZVRyYWNr Rm9yVXJsV29ya2VyIDogcHVibGljIEFtYXJvazo6VHJhY2tGb3JVcmxXb3JrZXIKLSAgICAgICAg IFFTdHJpbmcgbV9zZXJ2ZXI7Ci0gICAgICAgICBRU3RyaW5nIG1fc2Vzc2lvbklkOwotIAotLSAg ICAgICAgU2VydmljZUJhc2UqIG1fc2VydmljZTsKLSsgICAgICAgIFNlcnZpY2VCYXNlICptX3Nl cnZpY2U7Ci0gfTsKLSAKLSBuYW1lc3BhY2UgQ29sbGVjdGlvbnMgewotQEAgLTU5LDExICs2MSwx MiBAQCBjbGFzcyBBbXBhY2hlU2VydmljZUNvbGxlY3Rpb24gOiBwdWJsaWMgU2VydmljZUNvbGxl Y3Rpb24KLSAgICAgUV9PQkpFQ1QKLSAKLSBwdWJsaWM6Ci0tICAgIEFtcGFjaGVTZXJ2aWNlQ29s bGVjdGlvbiggU2VydmljZUJhc2UgKiBzZXJ2aWNlLCBjb25zdCBRU3RyaW5nICZzZXJ2ZXIsIGNv bnN0IFFTdHJpbmcgJnNlc3Npb25JZCApOwotKyAgICBBbXBhY2hlU2VydmljZUNvbGxlY3Rpb24o IFNlcnZpY2VCYXNlICpzZXJ2aWNlLCBjb25zdCBRU3RyaW5nICZzZXJ2ZXIsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgUVN0cmluZyAmc2Vzc2lvbklkICk7Ci0gCi0gICAg IHZpcnR1YWwgfkFtcGFjaGVTZXJ2aWNlQ29sbGVjdGlvbigpOwotIAotLSAgICB2aXJ0dWFsIFF1 ZXJ5TWFrZXIqIHF1ZXJ5TWFrZXIoKTsKLSsgICAgdmlydHVhbCBRdWVyeU1ha2VyICpxdWVyeU1h a2VyKCk7Ci0gCi0gICAgIHZpcnR1YWwgUVN0cmluZyBjb2xsZWN0aW9uSWQoKSBjb25zdDsKLSAg ICAgdmlydHVhbCBRU3RyaW5nIHByZXR0eU5hbWUoKSBjb25zdDsKLUBAIC03NiwxNiArNzksMTMg QEAgc2lnbmFsczoKLSAKLSBwdWJsaWMgc2xvdHM6Ci0gICAgIHZvaWQgc2xvdEF1dGhlbnRpY2F0 aW9uTmVlZGVkKCk7Ci0tICAgIHZvaWQgc2xvdExvb2t1cENvbXBsZXRlKCBjb25zdCBNZXRhOjpU cmFja1B0ciYgKTsKLSsgICAgdm9pZCBzbG90TG9va3VwQ29tcGxldGUoIGNvbnN0IE1ldGE6OlRy YWNrUHRyICYgKTsKLSAKLSBwcml2YXRlOgotLSAgICAvKnZvaWQgcGFyc2VBbGJ1bSggY29uc3Qg UVN0cmluZyAmeG1sICk7Ci0tICAgIHZvaWQgcGFyc2VBcnRpc3QoIGNvbnN0IFFTdHJpbmcgJnht bCApOyovCi0tCi0gICAgIFFTdHJpbmcgbV9zZXJ2ZXI7Ci0gICAgIFFTdHJpbmcgbV9zZXNzaW9u SWQ7Ci0gCi0tICAgIEFtcGFjaGVUcmFja0ZvclVybFdvcmtlciAqIG1fdHJhY2tGb3JVcmxXb3Jr ZXI7Ci0rICAgIEFtcGFjaGVUcmFja0ZvclVybFdvcmtlciAqbV90cmFja0ZvclVybFdvcmtlcjsK LSB9OwotIAotIH0gLy9uYW1lc3BhY2UgQ29sbGVjdGlvbnMKLS0tIAotMS43LjUuNAotCi1kaWZm IC0tZ2l0IGEvc3JjL3NlcnZpY2VzL2FtcGFjaGUvQW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9uLmNw cCBiL3NyYy9zZXJ2aWNlcy9hbXBhY2hlL0FtcGFjaGVTZXJ2aWNlQ29sbGVjdGlvbi5jcHAKLWlu ZGV4IGI2ODRlMzQuLmMzYjUxMTUgMTAwNjQ0Ci0tLS0gYS9zcmMvc2VydmljZXMvYW1wYWNoZS9B bXBhY2hlU2VydmljZUNvbGxlY3Rpb24uY3BwCi0rKysgYi9zcmMvc2VydmljZXMvYW1wYWNoZS9B bXBhY2hlU2VydmljZUNvbGxlY3Rpb24uY3BwCi1AQCAtMjcsNyArMjcsOSBAQAotIAotIHVzaW5n IG5hbWVzcGFjZSBDb2xsZWN0aW9uczsKLSAKLS1BbXBhY2hlU2VydmljZUNvbGxlY3Rpb246OkFt cGFjaGVTZXJ2aWNlQ29sbGVjdGlvbiggU2VydmljZUJhc2UgKiBzZXJ2aWNlLCBjb25zdCBRU3Ry aW5nICZzZXJ2ZXIsIGNvbnN0IFFTdHJpbmcgJnNlc3Npb25JZCApCi0rQW1wYWNoZVNlcnZpY2VD b2xsZWN0aW9uOjpBbXBhY2hlU2VydmljZUNvbGxlY3Rpb24oIFNlcnZpY2VCYXNlICpzZXJ2aWNl LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBRU3RyaW5nICZzZXJ2ZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgJnNlc3Npb25JZCApCi0gICAgIDogU2Vy dmljZUNvbGxlY3Rpb24oIHNlcnZpY2UsICJBbXBhY2hlQ29sbGVjdGlvbiIsICJBbXBhY2hlQ29s bGVjdGlvbiIgKQotICAgICAsIG1fc2VydmVyKCBzZXJ2ZXIgKQotICAgICAsIG1fc2Vzc2lvbklk KCBzZXNzaW9uSWQgKQotQEAgLTU4LDcgKzYwLDcgQEAgQW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9u OjpwcmV0dHlOYW1lKCkgY29uc3QKLSB9Ci0gCi0gYm9vbAotLUFtcGFjaGVTZXJ2aWNlQ29sbGVj dGlvbjo6cG9zc2libHlDb250YWluc1RyYWNrKGNvbnN0IEtVcmwgJiB1cmwpIGNvbnN0Ci0rQW1w YWNoZVNlcnZpY2VDb2xsZWN0aW9uOjpwb3NzaWJseUNvbnRhaW5zVHJhY2soIGNvbnN0IEtVcmwg JnVybCApIGNvbnN0Ci0gewotICAgICByZXR1cm4gdXJsLnVybCgpLmNvbnRhaW5zKCBtX3NlcnZl ciApOwotIH0KLUBAIC03MCw3NyArNzIsODIgQEAgQW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9uOjpz bG90QXV0aGVudGljYXRpb25OZWVkZWQoKQotIH0KLSAKLSBNZXRhOjpUcmFja1B0cgotLUFtcGFj aGVTZXJ2aWNlQ29sbGVjdGlvbjo6dHJhY2tGb3JVcmwoIGNvbnN0IEtVcmwgJiB1cmwgKQotK0Ft cGFjaGVTZXJ2aWNlQ29sbGVjdGlvbjo6dHJhY2tGb3JVcmwoIGNvbnN0IEtVcmwgJnVybCApCi0g ewotLSAgICBNZXRhUHJveHk6OlRyYWNrKiBwdHJhY2sgPSBuZXcgTWV0YVByb3h5OjpUcmFjaygg dXJsLnVybCgpLCB0cnVlICk7Ci0tICAgIE1ldGFQcm94eTo6VHJhY2tQdHIgdHJhY2twdHIocHRy YWNrKTsKLS0gICAgQW1wYWNoZVRyYWNrRm9yVXJsV29ya2VyICogd29ya2VyID0gIG5ldyBBbXBh Y2hlVHJhY2tGb3JVcmxXb3JrZXIodXJsLCB0cmFja3B0ciwgbV9zZXJ2ZXIsIG1fc2Vzc2lvbklk LCBzZXJ2aWNlKCkgKTsKLS0vLyAgICAgY29ubmVjdCggd29ya2VyLCBTSUdOQUwoIGZpbmlzaGVk TG9va3VwICggY29uc3QgTWV0YTo6VHJhY2tQdHImICkgKSwgdGhpcywKLS0vLyAgICAgICAgICAg ICAgU0xPVCggc2xvdExvb2t1cENvbXBsZXRlKCBjb25zdCBNZXRhOjpUcmFja1B0ciYgKSApICk7 Ci0tICAgIGNvbm5lY3QoIHdvcmtlciwgU0lHTkFMKCBhdXRoZW50aWNhdGlvbk5lZWRlZCgpICks IHRoaXMsCi0tICAgICAgICAgICAgIFNMT1QoIHNsb3RBdXRoZW50aWNhdGlvbk5lZWRlZCgpICkg KTsKLSsgICAgTWV0YVByb3h5OjpUcmFjayAqcHRyYWNrID0gbmV3IE1ldGFQcm94eTo6VHJhY2so IHVybC51cmwoKSwgdHJ1ZSApOwotKyAgICBNZXRhUHJveHk6OlRyYWNrUHRyIHRyYWNrcHRyKCBw dHJhY2sgKTsKLSsgICAgQW1wYWNoZVRyYWNrRm9yVXJsV29ya2VyICp3b3JrZXIgPSBuZXcgQW1w YWNoZVRyYWNrRm9yVXJsV29ya2VyKCB1cmwsIHRyYWNrcHRyLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2Vy dmVyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG1fc2Vzc2lvbklkLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2UoKSAp OwotKyAgICBjb25uZWN0KCB3b3JrZXIsIFNJR05BTChhdXRoZW50aWNhdGlvbk5lZWRlZCgpKSwg U0xPVChzbG90QXV0aGVudGljYXRpb25OZWVkZWQoKSkgKTsKLSAgICAgVGhyZWFkV2VhdmVyOjpX ZWF2ZXI6Omluc3RhbmNlKCktPmVucXVldWUoIHdvcmtlciApOwotIAotICAgICByZXR1cm4gTWV0 YTo6VHJhY2tQdHI6OnN0YXRpY0Nhc3QoIHRyYWNrcHRyICk7Ci0gfQotKwotIHZvaWQgQW1wYWNo ZVNlcnZpY2VDb2xsZWN0aW9uOjpzbG90TG9va3VwQ29tcGxldGUoIGNvbnN0IE1ldGE6OlRyYWNr UHRyJiApCi0gewotIH0KLSAKLSB2b2lkIEFtcGFjaGVUcmFja0ZvclVybFdvcmtlcjo6cGFyc2VU cmFjayggY29uc3QgUVN0cmluZyAmeG1sICkKLSB7Ci0tLy8gICAgIERFQlVHX0JMT0NLCi0tCi0t Ly8gICAgICBkZWJ1ZygpIDw8ICJSZWNlaXZlZCB0cmFjayByZXNwb25zZTogIiA8PCB4bWw7Ci0t Ci0tICAgICAvL3NvIGxldHMgZmlndXJlIG91dCB3aGF0IHdlIGdvdCBoZXJlOgotKyAgICAvL3Nv IGxldHMgZmlndXJlIG91dCB3aGF0IHdlIGdvdCBoZXJlOgotICAgICBRRG9tRG9jdW1lbnQgZG9j KCAicmVwbHkiICk7Ci0gICAgIGRvYy5zZXRDb250ZW50KCB4bWwgKTsKLS0gICAgUURvbUVsZW1l bnQgcm9vdCA9IGRvYy5maXJzdENoaWxkRWxlbWVudCgicm9vdCIpOwotLSAgICBRRG9tRWxlbWVu dCBzb25nID0gcm9vdC5maXJzdENoaWxkRWxlbWVudCgic29uZyIpOwotKyAgICBRRG9tRWxlbWVu dCByb290ID0gZG9jLmZpcnN0Q2hpbGRFbGVtZW50KCAicm9vdCIgKTsKLSsgICAgUURvbUVsZW1l bnQgc29uZyA9IHJvb3QuZmlyc3RDaGlsZEVsZW1lbnQoICJzb25nIiApOwotIAotLSAgICBtX3Vy bFRyYWNrSWQgPSBzb25nLmF0dHJpYnV0ZSggImlkIiwgIjAiKS50b0ludCgpOwotKyAgICBtX3Vy bFRyYWNrSWQgPSBzb25nLmF0dHJpYnV0ZSggImlkIiwgIjAiICkudG9JbnQoKTsKLSAKLS0gICAg UURvbUVsZW1lbnQgZWxlbWVudCA9IHNvbmcuZmlyc3RDaGlsZEVsZW1lbnQoInRpdGxlIik7Ci0r ICAgIFFEb21FbGVtZW50IGVsZW1lbnQgPSBzb25nLmZpcnN0Q2hpbGRFbGVtZW50KCAidGl0bGUi ICk7Ci0gCi0gICAgIFFTdHJpbmcgdGl0bGUgPSBlbGVtZW50LnRleHQoKTsKLSAgICAgaWYgKCB0 aXRsZS5pc0VtcHR5KCkgKSB0aXRsZSA9ICJVbmtub3duIjsKLSAKLS0gICAgZWxlbWVudCA9IHNv bmcuZmlyc3RDaGlsZEVsZW1lbnQoInVybCIpOwotKyAgICBlbGVtZW50ID0gc29uZy5maXJzdENo aWxkRWxlbWVudCggInVybCIgKTsKLSAKLSAgICAgbV91cmxUcmFjayA9IG5ldyBNZXRhOjpBbXBh Y2hlVHJhY2soIHRpdGxlLCBtX3NlcnZpY2UgKTsKLSAgICAgTWV0YTo6VHJhY2tQdHIgdHJhY2tQ dHIoIG1fdXJsVHJhY2sgKTsKLSAKLS0gICAgLy9kZWJ1ZygpIDw8ICJBZGRpbmcgdHJhY2s6ICIg PDwgIHRpdGxlOwotICAgICBtX3VybFRyYWNrLT5zZXRVaWRVcmwoIGVsZW1lbnQudGV4dCgpICk7 Ci0gICAgIG1fdXJsVHJhY2stPnNldElkKCBtX3VybFRyYWNrSWQgKTsKLSAKLS0gICAgZWxlbWVu dCA9IHNvbmcuZmlyc3RDaGlsZEVsZW1lbnQoInRpbWUiKTsKLSsgICAgZWxlbWVudCA9IHNvbmcu Zmlyc3RDaGlsZEVsZW1lbnQoICJ0aW1lIiApOwotICAgICBtX3VybFRyYWNrLT5zZXRMZW5ndGgo IGVsZW1lbnQudGV4dCgpLnRvSW50KCkgKiAxMDAwICk7Ci0gCi0tICAgIGVsZW1lbnQgPSBzb25n LmZpcnN0Q2hpbGRFbGVtZW50KCJ0cmFjayIpOwotKyAgICBlbGVtZW50ID0gc29uZy5maXJzdENo aWxkRWxlbWVudCggInRyYWNrIiApOwotICAgICBtX3VybFRyYWNrLT5zZXRUcmFja051bWJlcigg ZWxlbWVudC50ZXh0KCkudG9JbnQoKSApOwotIAotLSAgICBRRG9tRWxlbWVudCBhbGJ1bUVsZW1l bnQgPSBzb25nLmZpcnN0Q2hpbGRFbGVtZW50KCJhbGJ1bSIpOwotLSAgICAvL21fdXJsQWxidW1J ZCA9IGFsYnVtRWxlbWVudC5hdHRyaWJ1dGUoICJpZCIsICIwIikudG9JbnQoKTsKLSsgICAgUURv bUVsZW1lbnQgYWxidW1FbGVtZW50ID0gc29uZy5maXJzdENoaWxkRWxlbWVudCggImFsYnVtIiAp OwotKyAgICBtX3VybEFsYnVtSWQgPSBhbGJ1bUVsZW1lbnQuYXR0cmlidXRlKCAiaWQiLCAiMCIg KS50b0ludCgpOwotIAotLSAgICBNZXRhOjpBbXBhY2hlQWxidW0gKiBhbGJ1bSA9IG5ldyBNZXRh OjpBbXBhY2hlQWxidW0oIGFsYnVtRWxlbWVudC50ZXh0KCkgKTsKLSsgICAgTWV0YTo6QW1wYWNo ZUFsYnVtICphbGJ1bSA9IG5ldyBNZXRhOjpBbXBhY2hlQWxidW0oIGFsYnVtRWxlbWVudC50ZXh0 KCkgKTsKLSAKLS0gICAgUURvbUVsZW1lbnQgYXJ0RWxlbWVudCA9IHNvbmcuZmlyc3RDaGlsZEVs ZW1lbnQoImFydCIpOwotKyAgICBRRG9tRWxlbWVudCBhcnRFbGVtZW50ID0gc29uZy5maXJzdENo aWxkRWxlbWVudCggImFydCIgKTsKLSAgICAgYWxidW0tPnNldENvdmVyVXJsKCBhcnRFbGVtZW50 LnRleHQoKSApOwotIAotICAgICBhbGJ1bS0+YWRkVHJhY2soIHRyYWNrUHRyICk7Ci0gICAgIG1f dXJsVHJhY2stPnNldEFsYnVtUHRyKCBNZXRhOjpBbGJ1bVB0ciggYWxidW0gKSApOwotIAotLSAg ICBRRG9tRWxlbWVudCBhcnRpc3RFbGVtZW50ID0gc29uZy5maXJzdENoaWxkRWxlbWVudCgiYXJ0 aXN0Iik7Ci0tICAgIE1ldGE6OlNlcnZpY2VBcnRpc3QgKiBhcnRpc3QgPSBuZXcgTWV0YTo6U2Vy dmljZUFydGlzdCggYXJ0aXN0RWxlbWVudC50ZXh0KCkgKTsKLSsgICAgUURvbUVsZW1lbnQgYXJ0 aXN0RWxlbWVudCA9IHNvbmcuZmlyc3RDaGlsZEVsZW1lbnQoICJhcnRpc3QiICk7Ci0rICAgIE1l dGE6OlNlcnZpY2VBcnRpc3QgKmFydGlzdCA9IG5ldyBNZXRhOjpTZXJ2aWNlQXJ0aXN0KCBhcnRp c3RFbGVtZW50LnRleHQoKSApOwotIAotICAgICBNZXRhOjpBcnRpc3RQdHIgYXJ0aXN0UHRyKCBh cnRpc3QgKTsKLSAgICAgbV91cmxUcmFjay0+c2V0QXJ0aXN0KCBhcnRpc3RQdHIgKTsKLSAgICAg YWxidW0tPnNldEFsYnVtQXJ0aXN0KCBhcnRpc3RQdHIgKTsKLSB9Ci0gCi0tQW1wYWNoZVRyYWNr Rm9yVXJsV29ya2VyOjpBbXBhY2hlVHJhY2tGb3JVcmxXb3JrZXIoY29uc3QgS1VybCAmdXJsLCBN ZXRhUHJveHk6OlRyYWNrUHRyIHRyYWNrLCBjb25zdCBRU3RyaW5nICZzZXJ2ZXIsIGNvbnN0IFFT dHJpbmcgJnNlc3Npb25JZCwgU2VydmljZUJhc2UqIHNlcnZpY2UpIDogQW1hcm9rOjpUcmFja0Zv clVybFdvcmtlcih1cmwpLCBtUHJveHkodHJhY2spLCBtX3NlcnZlcihzZXJ2ZXIpLCBtX3Nlc3Np b25JZChzZXNzaW9uSWQpLCBtX3NlcnZpY2Uoc2VydmljZSkKLStBbXBhY2hlVHJhY2tGb3JVcmxX b3JrZXI6OkFtcGFjaGVUcmFja0ZvclVybFdvcmtlciggY29uc3QgS1VybCAmdXJsLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXRhUHJveHk6 OlRyYWNrUHRyIHRyYWNrLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBRU3RyaW5nICZzZXJ2ZXIsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgJnNlc3Npb25J ZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U2VydmljZUJhc2UgKnNlcnZpY2UgKQotKyAgICA6IEFtYXJvazo6VHJhY2tGb3JVcmxXb3JrZXIo IHVybCApCi0rICAgICwgbV9wcm94eSggdHJhY2sgKQotKyAgICAsIG1fc2VydmVyKCBzZXJ2ZXIg KQotKyAgICAsIG1fc2Vzc2lvbklkKCBzZXNzaW9uSWQgKQotKyAgICAsIG1fc2VydmljZSggc2Vy dmljZSApCi0gewotIH0KLSAKLUBAIC0xNTAsOCArMTU3LDYgQEAgQW1wYWNoZVRyYWNrRm9yVXJs V29ya2VyOjp+QW1wYWNoZVRyYWNrRm9yVXJsV29ya2VyKCkKLSB2b2lkCi0gQW1wYWNoZVRyYWNr Rm9yVXJsV29ya2VyOjpydW4oKQotIHsKLS0gICAgLy8gREVCVUdfQkxPQ0s7Ci0tCi0gICAgIG1f dXJsVHJhY2sgPSAwOwotICAgICBtX3VybEFsYnVtID0gMDsKLSAgICAgbV91cmxBcnRpc3QgPSAw OwotQEAgLTE2Miw5ICsxNjcsOSBAQCBBbXBhY2hlVHJhY2tGb3JVcmxXb3JrZXI6OnJ1bigpCi0g Ci0gICAgIC8vc2VuZCB1cmxfdG9fc29uZyB0byBBbXBhY2hlCi0gCi0tICAgIFFTdHJpbmcgcmVx dWVzdFVybCA9IFFTdHJpbmcoICIlMS9zZXJ2ZXIveG1sLnNlcnZlci5waHA/YWN0aW9uPXVybF90 b19zb25nJmF1dGg9JTImdXJsPSUzIikKLS0gICAgLiBhcmcoICBtX3NlcnZlciwgIG1fc2Vzc2lv bklkLCAgUVVybDo6dG9QZXJjZW50RW5jb2RpbmcoIG1VcmwudXJsKCkgKSApOwotLSAgICAvLyAg ICAgZGVidWcoKSA8PCAicmVxdWVzdCB1cmw6ICIgPDwgcmVxdWVzdFVybDsKLSsgICAgUVN0cmlu ZyByZXF1ZXN0VXJsID0KLSsgICAgICAgICAgICBRU3RyaW5nKCAiJTEvc2VydmVyL3htbC5zZXJ2 ZXIucGhwP2FjdGlvbj11cmxfdG9fc29uZyZhdXRoPSUyJnVybD0lMyIgKQotKyAgICAgICAgICAg ICAgICAgICAgLmFyZyggbV9zZXJ2ZXIsIG1fc2Vzc2lvbklkLCBRVXJsOjp0b1BlcmNlbnRFbmNv ZGluZyggbV91cmwudXJsKCkgKSApOwotIAotICAgICBRTmV0d29ya1JlcXVlc3QgcmVxKCByZXF1 ZXN0VXJsICk7Ci0gICAgIFFOZXR3b3JrUmVwbHkgKnJlcGx5ID0gVGhlOjpuZXR3b3JrQWNjZXNz TWFuYWdlcigpLT5nZXQoIHJlcSApOwotQEAgLTE3OCw3ICsxODMsNyBAQCBBbXBhY2hlVHJhY2tG b3JVcmxXb3JrZXI6OnJ1bigpCi0gICAgICAgICB9Ci0gICAgIH0KLSAgICAgcGFyc2VUcmFjaygg cmVwbHktPnJlYWRBbGwoKSApOwotLSAgICBtVHJhY2sgPSBNZXRhOjpUcmFja1B0ciggbV91cmxU cmFjayApOwotLSAgICBtUHJveHktPnVwZGF0ZVRyYWNrKCBtVHJhY2sgKTsKLSsgICAgbV90cmFj ayA9IE1ldGE6OlRyYWNrUHRyKCBtX3VybFRyYWNrICk7Ci0rICAgIG1fcHJveHktPnVwZGF0ZVRy YWNrKCBtX3RyYWNrICk7Ci0gICAgIHJlcGx5LT5kZWxldGVMYXRlcigpOwotIH0KCmRpZmYgLS1n aXQgYS9hbWFyb2stMi41LjAtcHJveHlfbG9hZGluZy5wYXRjaCBiL2FtYXJvay0yLjUuMC1wcm94 eV9sb2FkaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3YTJm MzEKLS0tIC9kZXYvbnVsbAorKysgYi9hbWFyb2stMi41LjAtcHJveHlfbG9hZGluZy5wYXRjaApA QCAtMCwwICsxLDExNjcgQEAKK2RpZmYgLS1naXQgYS9zcmMvQ01ha2VMaXN0cy50eHQgYi9zcmMv Q01ha2VMaXN0cy50eHQKK2luZGV4IDZlNTkwZTguLjk1NmIzZGEgMTAwNjQ0CistLS0gYS9zcmMv Q01ha2VMaXN0cy50eHQKKysrKyBiL3NyYy9DTWFrZUxpc3RzLnR4dAorQEAgLTI4NCw2ICsyODQs NyBAQCBzZXQobGlibWV0YWltcGxfU1JDUworICAgICBjb3JlLWltcGwvbWV0YS9tdWx0aS9NdWx0 aVRyYWNrLmNwcAorICAgICBjb3JlLWltcGwvbWV0YS9jdWUvQ3VlRmlsZVN1cHBvcnQuY3BwCisg ICAgIGNvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eS5jcHAKKysgICAgY29yZS1pbXBsL21l dGEvcHJveHkvTWV0YVByb3h5V29ya2VyLmNwcAorICAgICBjb3JlLWltcGwvbWV0YS9zdHJlYW0v U3RyZWFtLmNwcAorICAgICBjb3JlLWltcGwvcGxheWxpc3RzL3R5cGVzL2ZpbGUvUGxheWxpc3RG aWxlLmNwcAorICAgICBjb3JlLWltcGwvc3RhdGlzdGljcy9wcm92aWRlcnMvdXJsL1Blcm1hbmVu dFVybFN0YXRpc3RpY3NQcm92aWRlci5jcHAKK2RpZmYgLS1naXQgYS9zcmMvY29yZS1pbXBsL2Nv bGxlY3Rpb25zL3N1cHBvcnQvQ29sbGVjdGlvbk1hbmFnZXIuY3BwIGIvc3JjL2NvcmUtaW1wbC9j b2xsZWN0aW9ucy9zdXBwb3J0L0NvbGxlY3Rpb25NYW5hZ2VyLmNwcAoraW5kZXggMzdmZTAzYS4u OTA4NWI1YSAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlLWltcGwvY29sbGVjdGlvbnMvc3VwcG9ydC9D b2xsZWN0aW9uTWFuYWdlci5jcHAKKysrKyBiL3NyYy9jb3JlLWltcGwvY29sbGVjdGlvbnMvc3Vw cG9ydC9Db2xsZWN0aW9uTWFuYWdlci5jcHAKK0BAIC00NjMsNiArNDYzLDcgQEAgQ29sbGVjdGlv bk1hbmFnZXI6OnRyYWNrRm9yVXJsKCBjb25zdCBLVXJsICZ1cmwgKQorICAgICAgICAgfQorICAg ICB9CisgCisrICAgIC8vVE9ETzogY3JlYXRlIHNwZWNpZmljIFRyYWNrUHJvdmlkZXJzIGZvciB0 aGVzZToKKyAgICAgaWYoIHVybC5wcm90b2NvbCgpID09IFFMYXRpbjFTdHJpbmcoImh0dHAiKSB8 fCB1cmwucHJvdG9jb2woKSA9PSBRTGF0aW4xU3RyaW5nKCJtbXMiKSB8fAorICAgICAgICAgdXJs LnByb3RvY29sKCkgPT0gUUxhdGluMVN0cmluZygic21iIikgKQorICAgICAgICAgcmV0dXJuIE1l dGE6OlRyYWNrUHRyKCBuZXcgTWV0YVN0cmVhbTo6VHJhY2soIHVybCApICk7CitkaWZmIC0tZ2l0 IGEvc3JjL2NvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eS5oIGIvc3JjL2NvcmUtaW1wbC9t ZXRhL3Byb3h5L01ldGFQcm94eS5oCitpbmRleCBkODMyOWJlLi4wNjAyMjNmIDEwMDY0NAorLS0t IGEvc3JjL2NvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eS5oCisrKysgYi9zcmMvY29yZS1p bXBsL21ldGEvcHJveHkvTWV0YVByb3h5LmgKK0BAIC0xNyw2ICsxNyw4IEBACisgI2lmbmRlZiBB TUFST0tfTUVUQVBST1hZX0gKKyAjZGVmaW5lIEFNQVJPS19NRVRBUFJPWFlfSAorIAorKyNpbmNs dWRlICJNZXRhUHJveHlXb3JrZXIuaCIKKysKKyAjaW5jbHVkZSAiY29yZS9tZXRhL01ldGEuaCIK KyAjaW5jbHVkZSAiY29yZS9jYXBhYmlsaXRpZXMvQ2FwYWJpbGl0eS5oIgorIAorQEAgLTgyLDYg Kzg0LDcgQEAgbmFtZXNwYWNlIE1ldGFQcm94eQorICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBz ZXREaXNjTnVtYmVyKCBpbnQgZGlzY051bWJlciApOworIAorICAgICAgICAgICAgIHZpcnR1YWwg cWludDY0IGxlbmd0aCgpIGNvbnN0OworKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRMZW5n dGgoIHFpbnQ2NCBsZW5ndGggKTsKKyAgICAgICAgICAgICB2aXJ0dWFsIGludCBmaWxlc2l6ZSgp IGNvbnN0OworICAgICAgICAgICAgIHZpcnR1YWwgaW50IHNhbXBsZVJhdGUoKSBjb25zdDsKKyAg ICAgICAgICAgICB2aXJ0dWFsIGludCBiaXRyYXRlKCkgY29uc3Q7CitAQCAtMTEwLDExICsxMTMs MTIgQEAgbmFtZXNwYWNlIE1ldGFQcm94eQorIAkJICogYWxsb3dzIHN1YmNsYXNzZXMgdG8gY3Jl YXRlIGFuIGluc3RhbmNlIG9mIHRyYWNrcHJvdmlkZXIgd2hpY2ggd2lsbCBvbmx5IGNoZWNrIHRo ZSBUcmFja1Byb3ZpZGVyCisgCQkgKiBwYXNzZWQgdG8gbG9va3VwVHJhY2soVHJhY2tQcm92aWRl ciopIGZvciB0aGUgcmVhbCB0cmFjay4KKyAJCSAqLworLQkJVHJhY2soIGNvbnN0IEtVcmwgJnVy bCwgYm9vbCBhd2FpdExvb2t1cE5vdGlmaWNhdGlvbik7CisrICAgICAgICBUcmFjayggY29uc3Qg S1VybCAmdXJsLCBib29sIGF3YWl0TG9va3VwTm90aWZpY2F0aW9uICk7CisrCisgCQkvKioKKyAJ CSAqIE1ldGFQcm94eSB3aWxsIGNoZWNrIHRoZSBnaXZlbiB0cmFja3Byb3ZpZGVyIGlmIGl0IGNh biBwcm92aWRlIHRoZSB0cmFjayBmb3IgdGhlIHByb3h5J3MgdXJsLgorIAkJICovCistCQl2b2lk IGxvb2t1cFRyYWNrKENvbGxlY3Rpb25zOjpUcmFja1Byb3ZpZGVyICpwcm92aWRlcik7CisrICAg ICAgICB2b2lkIGxvb2t1cFRyYWNrKCBDb2xsZWN0aW9uczo6VHJhY2tQcm92aWRlciAqcHJvdmlk ZXIgKTsKKyAKKyAgICAgICAgIC8qKgorICAgICAgICAgICogTWV0YVByb3h5IHdpbGwgdXBkYXRl IHRoZSBwcm94eSB3aXRoIHRoZSB0cmFjay4KK0BAIC0xMjMsNyArMTI3LDcgQEAgbmFtZXNwYWNl IE1ldGFQcm94eQorIAorICAgICAgICAgcHJpdmF0ZToKKyAJCQl2b2lkIGluaXQoIGNvbnN0IEtV cmwgJnVybCwgYm9vbCBhd2FpdExvb2t1cE5vdGlmaWNhdGlvbiApOworLSAgICAgICAgICAgIFBy aXZhdGUgKiBjb25zdCBkOworKyAgICAgICAgICAgIFByaXZhdGUgKmNvbnN0IGQ7CisgICAgIH07 CisgCisgfQorZGlmZiAtLWdpdCBhL3NyYy9jb3JlLWltcGwvbWV0YS9wcm94eS9NZXRhUHJveHku Y3BwIGIvc3JjL2NvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eS5jcHAKK2luZGV4IGQxNTc3 YTIuLjZhMjdmMGUgMTAwNjQ0CistLS0gYS9zcmMvY29yZS1pbXBsL21ldGEvcHJveHkvTWV0YVBy b3h5LmNwcAorKysrIGIvc3JjL2NvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eS5jcHAKK0BA IC0xNyw2ICsxNyw3IEBACisgI2luY2x1ZGUgImNvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94 eS5oIgorICNpbmNsdWRlICJjb3JlLWltcGwvbWV0YS9wcm94eS9NZXRhUHJveHlfcC5oIgorICNp bmNsdWRlICJjb3JlLWltcGwvbWV0YS9wcm94eS9NZXRhUHJveHlfcC5tb2MiCisrI2luY2x1ZGUg ImNvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eVdvcmtlci5oIgorIAorICNpbmNsdWRlICJj b3JlL2NhcGFiaWxpdGllcy9FZGl0Q2FwYWJpbGl0eS5oIgorIAorQEAgLTI3LDYgKzI4LDcgQEAK KyAjaW5jbHVkZSA8UVRpbWVyPgorIAorICNpbmNsdWRlIDxLU2hhcmVkUHRyPgorKyNpbmNsdWRl IDx0aHJlYWR3ZWF2ZXIvVGhyZWFkV2VhdmVyLmg+CisgCisgdXNpbmcgbmFtZXNwYWNlIE1ldGFQ cm94eTsKKyAKK0BAIC04MywxOCArODUsMjAgQEAgTWV0YVByb3h5OjpUcmFjazo6aW5pdCggY29u c3QgS1VybCAmdXJsLCBib29sIGF3YWl0TG9va3VwTm90aWZpY2F0aW9uICkKKyAJZC0+dXJsID0g dXJsOworICAgICBkLT5wcm94eSA9IHRoaXM7CisgICAgIGQtPmNhY2hlZExlbmd0aCA9IDA7Cist CistCWlmKCAhYXdhaXRMb29rdXBOb3RpZmljYXRpb24gKQorLSAgICB7CistICAgICAgICBRT2Jq ZWN0Ojpjb25uZWN0KCBDb2xsZWN0aW9uTWFuYWdlcjo6aW5zdGFuY2UoKSwgU0lHTkFMKCB0cmFj a1Byb3ZpZGVyQWRkZWQoIENvbGxlY3Rpb25zOjpUcmFja1Byb3ZpZGVyKiApICksIGQsIFNMT1Qo IHNsb3ROZXdUcmFja1Byb3ZpZGVyKCBDb2xsZWN0aW9uczo6VHJhY2tQcm92aWRlciogKSApICk7 CistICAgICAgICBRT2JqZWN0Ojpjb25uZWN0KCBDb2xsZWN0aW9uTWFuYWdlcjo6aW5zdGFuY2Uo KSwgU0lHTkFMKCBjb2xsZWN0aW9uQWRkZWQoIENvbGxlY3Rpb25zOjpDb2xsZWN0aW9uKiApICks IGQsIFNMT1QoIHNsb3ROZXdDb2xsZWN0aW9uKCBDb2xsZWN0aW9uczo6Q29sbGVjdGlvbiogKSAp ICk7CistICAgIH0KKy0KKyAgICAgZC0+YWxidW1QdHIgPSBNZXRhOjpBbGJ1bVB0ciggbmV3IFBy b3h5QWxidW0oIGQgKSApOworICAgICBkLT5hcnRpc3RQdHIgPSBNZXRhOjpBcnRpc3RQdHIoIG5l dyBQcm94eUFydGlzdCggZCApICk7CisgICAgIGQtPmdlbnJlUHRyID0gTWV0YTo6R2VucmVQdHIo IG5ldyBQcm94eUdlbnJlKCBkICkgKTsKKyAgICAgZC0+Y29tcG9zZXJQdHIgPSBNZXRhOjpDb21w b3NlclB0ciggbmV3IFByb3h5Q29tcG9zZXIoIGQgKSApOworICAgICBkLT55ZWFyUHRyID0gTWV0 YTo6WWVhclB0ciggbmV3IFByb3h5WWVhciggZCApICk7CisrCisrICAgIGlmKCAhYXdhaXRMb29r dXBOb3RpZmljYXRpb24gKQorKyAgICB7CisrICAgICAgICBXb3JrZXIgKndvcmtlciA9IG5ldyBX b3JrZXIoIGQtPnVybCApOworKyAgICAgICAgUU9iamVjdDo6Y29ubmVjdCggd29ya2VyLCBTSUdO QUwoZmluaXNoZWRMb29rdXAoIGNvbnN0IE1ldGE6OlRyYWNrUHRyICYgKSksCisrICAgICAgICAg ICAgICAgIGQsIFNMT1Qoc2xvdFVwZGF0ZVRyYWNrKE1ldGE6OlRyYWNrUHRyKSkgKTsKKysKKysg ICAgICAgIFRocmVhZFdlYXZlcjo6V2VhdmVyOjppbnN0YW5jZSgpLT5lbnF1ZXVlKCB3b3JrZXIg KTsKKysgICAgfQorIH0KKyAKKyBNZXRhUHJveHk6OlRyYWNrOjp+VHJhY2soKQorQEAgLTM0NSw2 ICszNDksMTIgQEAgTWV0YVByb3h5OjpUcmFjazo6bGVuZ3RoKCkgY29uc3QKKyAgICAgcmV0dXJu IGQtPmNhY2hlZExlbmd0aDsKKyB9CisgCisrdm9pZAorK01ldGFQcm94eTo6VHJhY2s6OnNldExl bmd0aCggcWludDY0IGxlbmd0aCApCisreworKyAgICBkLT5jYWNoZWRMZW5ndGggPSBsZW5ndGg7 CisrfQorKworIGludAorIE1ldGFQcm94eTo6VHJhY2s6OmZpbGVzaXplKCkgY29uc3QKKyB7CitA QCAtNDI0LDcgKzQzNCw3IEBAIE1ldGFQcm94eTo6VHJhY2s6OmluQ29sbGVjdGlvbigpIGNvbnN0 CisgICAgIHJldHVybiBmYWxzZTsKKyB9CisgCistQ29sbGVjdGlvbnM6OkNvbGxlY3Rpb24qCisr Q29sbGVjdGlvbnM6OkNvbGxlY3Rpb24gKgorIE1ldGFQcm94eTo6VHJhY2s6OmNvbGxlY3Rpb24o KSBjb25zdAorIHsKKyAgICAgaWYoIGQtPnJlYWxUcmFjayApCitAQCAtNDUwLDcgKzQ2MCwxMSBA QCBNZXRhUHJveHk6OlRyYWNrOjp1bnN1YnNjcmliZSggTWV0YTo6T2JzZXJ2ZXIgKm9ic2VydmVy ICkKKyB2b2lkCisgTWV0YVByb3h5OjpUcmFjazo6bG9va3VwVHJhY2soIENvbGxlY3Rpb25zOjpU cmFja1Byb3ZpZGVyICpwcm92aWRlciApCisgeworLQlkLT5zbG90TmV3VHJhY2tQcm92aWRlcigg cHJvdmlkZXIgKTsKKysgICAgaWYoIHByb3ZpZGVyLT5wb3NzaWJseUNvbnRhaW5zVHJhY2soIGQt PnVybCApICkKKysgICAgeworKyAgICAgICAgTWV0YTo6VHJhY2tQdHIgdHJhY2sgPSBwcm92aWRl ci0+dHJhY2tGb3JVcmwoIGQtPnVybCApOworKyAgICAgICAgZC0+c2xvdFVwZGF0ZVRyYWNrKCB0 cmFjayApOworKyAgICB9CisgfQorIAorIHZvaWQKK0BAIC00NzAsNyArNDg0LDcgQEAgTWV0YVBy b3h5OjpUcmFjazo6aGFzQ2FwYWJpbGl0eUludGVyZmFjZSggQ2FwYWJpbGl0aWVzOjpDYXBhYmls aXR5OjpUeXBlIHR5cGUgKQorICAgICByZXR1cm4gZmFsc2U7CisgfQorIAorLUNhcGFiaWxpdGll czo6Q2FwYWJpbGl0eSoKKytDYXBhYmlsaXRpZXM6OkNhcGFiaWxpdHkgKgorIE1ldGFQcm94eTo6 VHJhY2s6OmNyZWF0ZUNhcGFiaWxpdHlJbnRlcmZhY2UoIENhcGFiaWxpdGllczo6Q2FwYWJpbGl0 eTo6VHlwZSB0eXBlICkKKyB7CisgICAgIGlmKCBkLT5yZWFsVHJhY2sgKQorQEAgLTQ4NCw3ICs0 OTgsNyBAQCBNZXRhUHJveHk6OlRyYWNrOjpjcmVhdGVDYXBhYmlsaXR5SW50ZXJmYWNlKCBDYXBh YmlsaXRpZXM6OkNhcGFiaWxpdHk6OlR5cGUgdHlwZQorIGJvb2wKKyBNZXRhUHJveHk6OlRyYWNr OjpvcGVyYXRvcj09KCBjb25zdCBNZXRhOjpUcmFjayAmdHJhY2sgKSBjb25zdAorIHsKKy0gICAg Y29uc3QgTWV0YVByb3h5OjpUcmFjayAqcHJveHkgPSBkeW5hbWljX2Nhc3Q8Y29uc3QgTWV0YVBy b3h5OjpUcmFjayo+KCAmdHJhY2sgKTsKKysgICAgY29uc3QgTWV0YVByb3h5OjpUcmFjayAqcHJv eHkgPSBkeW5hbWljX2Nhc3Q8Y29uc3QgTWV0YVByb3h5OjpUcmFjayAqPiggJnRyYWNrICk7Cisg ICAgIGlmKCBwcm94eSAmJiBkLT5yZWFsVHJhY2sgKQorICAgICAgICAgcmV0dXJuIGQtPnJlYWxU cmFjayA9PSBwcm94eS0+ZC0+cmVhbFRyYWNrOworICAgICBlbHNlIGlmKCBwcm94eSApCitkaWZm IC0tZ2l0IGEvc3JjL2NvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eVdvcmtlci5oIGIvc3Jj L2NvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eVdvcmtlci5oCituZXcgZmlsZSBtb2RlIDEw MDY0NAoraW5kZXggMDAwMDAwMC4uNTU3ZjI5ZAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjL2Nv cmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eVdvcmtlci5oCitAQCAtMCwwICsxLDQyIEBACisr LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysgKiBDb3B5cmlnaHQgKGMpIDIwMTIg QmFydCBDZXJuZWVscyA8YmFydC5jZXJuZWVsc0BrZGUub3JnPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKgorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICogVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkgaXQgdW5kZXIgICAgICAgICoKKysgKiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSAgICAgICAg KgorKyAqIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyICAgICAgICAgICAqCisrICogdmVyc2lvbi4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICoKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLCBidXQgV0lUSE9VVCBBTlkgICAgICAqCisrICogV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSAg ICAgICoKKysgKiBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgKgorKyAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqCisrICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aCAgICAgICAgICoKKysg KiB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLworKworKyNpZm5kZWYgTUVUQVBST1hZX01FVEFQUk9YWVdPUktFUl9ICisrI2Rl ZmluZSBNRVRBUFJPWFlfTUVUQVBST1hZV09SS0VSX0gKKysKKysjaW5jbHVkZSA8Y29yZS9jb2xs ZWN0aW9ucy9zdXBwb3J0L1RyYWNrRm9yVXJsV29ya2VyLmg+CisrI2luY2x1ZGUgPGNvcmUvY29s bGVjdGlvbnMvQ29sbGVjdGlvbi5oPgorKworK25hbWVzcGFjZSBNZXRhUHJveHkgeworKworK2Ns YXNzIFdvcmtlciA6IHB1YmxpYyBBbWFyb2s6OlRyYWNrRm9yVXJsV29ya2VyCisreworKyAgICBR X09CSkVDVAorKyAgICBwdWJsaWM6CisrICAgICAgICBleHBsaWNpdCBXb3JrZXIoIGNvbnN0IEtV cmwgJnVybCApOworKworKyAgICAgICAgLy9UcmFja0ZvclVybFdvcmtlciB2aXJ0dWFsIG1ldGhv ZHMKKysgICAgICAgIHZpcnR1YWwgdm9pZCBydW4oKTsKKysKKysgICAgcHJpdmF0ZSBzbG90czoK KysgICAgICAgIHZvaWQgc2xvdE5ld1RyYWNrUHJvdmlkZXIoIENvbGxlY3Rpb25zOjpUcmFja1By b3ZpZGVyICpuZXdUcmFja1Byb3ZpZGVyICk7CisrICAgICAgICB2b2lkIHNsb3ROZXdDb2xsZWN0 aW9uKCBDb2xsZWN0aW9uczo6Q29sbGVjdGlvbiAqbmV3Q29sbGVjdGlvbiApOworKworK307Cisr CisrfSAvLyBuYW1lc3BhY2UgTWV0YVByb3h5CisrCisrI2VuZGlmIC8vIE1FVEFQUk9YWV9NRVRB UFJPWFlXT1JLRVJfSAorZGlmZiAtLWdpdCBhL3NyYy9jb3JlLWltcGwvbWV0YS9wcm94eS9NZXRh UHJveHlXb3JrZXIuY3BwIGIvc3JjL2NvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eVdvcmtl ci5jcHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4wY2RlMjgwCistLS0g L2Rldi9udWxsCisrKysgYi9zcmMvY29yZS1pbXBsL21ldGEvcHJveHkvTWV0YVByb3h5V29ya2Vy LmNwcAorQEAgLTAsMCArMSw4MiBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisrICogQ29weXJpZ2h0IChjKSAyMDEyIEJhcnQgQ2VybmVlbHMgPGJhcnQuY2VybmVlbHNAa2Rl Lm9yZz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKgorKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyICAgICAgICAqCisrICogdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgICAgICAgICoKKysgKiBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciAgICAgICAg ICAgKgorKyAqIHZlcnNpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICoKKysgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZICAgICAgKgorKyAq IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgICAgICAqCisrICogUEFSVElDVUxBUiBQVVJQT1NFLiBT ZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAg ICAgICAgICoKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFsb25nIHdpdGggICAgICAgICAqCisrICogdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgICAgICAgICAgICAgICAgICAgICAgICAgICoK KysgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKysjaW5jbHVkZSAiTWV0YVBy b3h5V29ya2VyLmgiCisrCisrI2luY2x1ZGUgImNvcmUtaW1wbC9jb2xsZWN0aW9ucy9zdXBwb3J0 L0NvbGxlY3Rpb25NYW5hZ2VyLmgiCisrCisrbmFtZXNwYWNlIE1ldGFQcm94eSB7CisrCisrV29y a2VyOjpXb3JrZXIoIGNvbnN0IEtVcmwgJnVybCApCisrICAgIDogQW1hcm9rOjpUcmFja0ZvclVy bFdvcmtlciggdXJsICkKKyt7CisrCisrfQorKworK3ZvaWQKKytXb3JrZXI6OnJ1bigpCisrewor KyAgICBNZXRhOjpUcmFja1B0ciB0cmFjayA9IENvbGxlY3Rpb25NYW5hZ2VyOjppbnN0YW5jZSgp LT50cmFja0ZvclVybCggbV91cmwgKTsKKysKKysgICAgLy9ubyBUcmFja1Byb3ZpZGVyIGhhcyBh IHRyYWNrIGZvciB1cyB5ZXQsIHF1ZXJ5IG5ldyBvbmVzIHRoYXQgYXJlIGFkZGVkLgorKyAgICBp ZiggdHJhY2suaXNOdWxsKCkgKQorKyAgICB7CisrICAgICAgICAvL1RPRE86IHNob3VsZCBvbmx5 IGhhdmUgdG8gY29ubmVjdG8gdG8gVHJhY2tQcm92aWRlciBzaWduYWxzLgorKyAgICAgICAgLy9F YWNoIENvbGxlY3Rpb24gY29udGFpbnMgYSBUcmFja1Byb3ZpZGVyCisrICAgICAgICBjb25uZWN0 KCBDb2xsZWN0aW9uTWFuYWdlcjo6aW5zdGFuY2UoKSwKKysgICAgICAgICAgICAgICAgIFNJR05B TCh0cmFja1Byb3ZpZGVyQWRkZWQoIENvbGxlY3Rpb25zOjpUcmFja1Byb3ZpZGVyICogKSksCisr ICAgICAgICAgICAgICAgICBTTE9UKHNsb3ROZXdUcmFja1Byb3ZpZGVyKCBDb2xsZWN0aW9uczo6 VHJhY2tQcm92aWRlciAqICkpICk7CisrICAgICAgICBjb25uZWN0KCBDb2xsZWN0aW9uTWFuYWdl cjo6aW5zdGFuY2UoKSwKKysgICAgICAgICAgICAgICAgIFNJR05BTChjb2xsZWN0aW9uQWRkZWQo IENvbGxlY3Rpb25zOjpDb2xsZWN0aW9uICogKSksCisrICAgICAgICAgICAgICAgICBTTE9UKHNs b3ROZXdDb2xsZWN0aW9uKCBDb2xsZWN0aW9uczo6Q29sbGVjdGlvbiAqICkpICk7CisrCisrICAg ICAgICByZXR1cm47CisrICAgIH0KKysKKysgICAgZW1pdCggZmluaXNoZWRMb29rdXAoIHRyYWNr ICkgKTsKKyt9CisrCisrdm9pZAorK1dvcmtlcjo6c2xvdE5ld1RyYWNrUHJvdmlkZXIoIENvbGxl Y3Rpb25zOjpUcmFja1Byb3ZpZGVyICpuZXdUcmFja1Byb3ZpZGVyICkKKyt7CisrICAgIGlmKCAh bmV3VHJhY2tQcm92aWRlciApCisrICAgIHsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKwor KyAgICBpZiggbmV3VHJhY2tQcm92aWRlci0+cG9zc2libHlDb250YWluc1RyYWNrKCBtX3VybCAp ICkKKysgICAgeworKyAgICAgICAgTWV0YTo6VHJhY2tQdHIgdHJhY2sgPSBuZXdUcmFja1Byb3Zp ZGVyLT50cmFja0ZvclVybCggbV91cmwgKTsKKysgICAgICAgIGVtaXQoIGZpbmlzaGVkTG9va3Vw KCB0cmFjayApICk7CisrICAgIH0KKyt9CisrCisrdm9pZAorK1dvcmtlcjo6c2xvdE5ld0NvbGxl Y3Rpb24oIENvbGxlY3Rpb25zOjpDb2xsZWN0aW9uICpuZXdDb2xsZWN0aW9uICkKKyt7CisrICAg IGlmKCAhbmV3Q29sbGVjdGlvbiApCisrICAgIHsKKysgICAgICAgIHJldHVybjsKKysgICAgfQor KworKyAgICBpZiggbmV3Q29sbGVjdGlvbi0+cG9zc2libHlDb250YWluc1RyYWNrKCBtX3VybCAp ICkKKysgICAgeworKyAgICAgICAgTWV0YTo6VHJhY2tQdHIgdHJhY2sgPSBuZXdDb2xsZWN0aW9u LT50cmFja0ZvclVybCggbV91cmwgKTsKKysgICAgICAgIGVtaXQoIGZpbmlzaGVkTG9va3VwKCB0 cmFjayApICk7CisrICAgIH0KKyt9CisrCisrfSAvLyBuYW1lc3BhY2UgTWV0YVByb3h5CitkaWZm IC0tZ2l0IGEvc3JjL2NvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eV9wLmggYi9zcmMvY29y ZS1pbXBsL21ldGEvcHJveHkvTWV0YVByb3h5X3AuaAoraW5kZXggNzkyNjc1ZC4uMzYwYmUyMSAx MDA2NDQKKy0tLSBhL3NyYy9jb3JlLWltcGwvbWV0YS9wcm94eS9NZXRhUHJveHlfcC5oCisrKysg Yi9zcmMvY29yZS1pbXBsL21ldGEvcHJveHkvTWV0YVByb3h5X3AuaAorQEAgLTQzLDcgKzQzLDcg QEAgY2xhc3MgTWV0YVByb3h5OjpUcmFjazo6UHJpdmF0ZSA6IHB1YmxpYyBRT2JqZWN0LCBwdWJs aWMgTWV0YTo6T2JzZXJ2ZXIKKyAKKyAgICAgICAgIE1ldGE6OlRyYWNrUHRyIHJlYWxUcmFjazsK KyAKKy0gICAgICAgIFFMaXN0PE1ldGE6Ok9ic2VydmVyKj4gb2JzZXJ2ZXJzOworKyAgICAgICAg UUxpc3Q8TWV0YTo6T2JzZXJ2ZXIgKj4gb2JzZXJ2ZXJzOworIAorICAgICAgICAgUVN0cmluZyBj YWNoZWRBcnRpc3Q7CisgICAgICAgICBRU3RyaW5nIGNhY2hlZEFsYnVtOworQEAgLTgyLDM0ICs4 Miw2IEBAIGNsYXNzIE1ldGFQcm94eTo6VHJhY2s6OlByaXZhdGUgOiBwdWJsaWMgUU9iamVjdCwg cHVibGljIE1ldGE6Ok9ic2VydmVyCisgICAgICAgICB9CisgCisgICAgIHB1YmxpYyBzbG90czoK Ky0gICAgICAgIHZvaWQgc2xvdE5ld1RyYWNrUHJvdmlkZXIoIENvbGxlY3Rpb25zOjpUcmFja1By b3ZpZGVyICpuZXdUcmFja1Byb3ZpZGVyICkKKy0gICAgICAgIHsKKy0gICAgICAgICAgICBpZiAo ICFuZXdUcmFja1Byb3ZpZGVyICkKKy0gICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIHJl dHVybjsKKy0gICAgICAgICAgICB9CistCistICAgICAgICAgICAgaWYoIG5ld1RyYWNrUHJvdmlk ZXItPnBvc3NpYmx5Q29udGFpbnNUcmFjayggdXJsICkgKQorLSAgICAgICAgICAgIHsKKy0gICAg ICAgICAgICAgICAgTWV0YTo6VHJhY2tQdHIgdHJhY2sgPSBuZXdUcmFja1Byb3ZpZGVyLT50cmFj a0ZvclVybCggdXJsICk7CistICAgICAgICAgICAgICAgIHNsb3RVcGRhdGVUcmFjayggdHJhY2sg KTsKKy0gICAgICAgICAgICB9CistICAgICAgICB9CistCistICAgICAgICB2b2lkIHNsb3ROZXdD b2xsZWN0aW9uKCBDb2xsZWN0aW9uczo6Q29sbGVjdGlvbiAqbmV3Q29sbGVjdGlvbiApCistICAg ICAgICB7CistICAgICAgICAgICAgaWYgKCAhbmV3Q29sbGVjdGlvbiApCistICAgICAgICAgICAg eworLSAgICAgICAgICAgICAgICByZXR1cm47CistICAgICAgICAgICAgfQorLQorLSAgICAgICAg ICAgIGlmKCBuZXdDb2xsZWN0aW9uLT5wb3NzaWJseUNvbnRhaW5zVHJhY2soIHVybCApICkKKy0g ICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIE1ldGE6OlRyYWNrUHRyIHRyYWNrID0gbmV3 Q29sbGVjdGlvbi0+dHJhY2tGb3JVcmwoIHVybCApOworLSAgICAgICAgICAgICAgICBzbG90VXBk YXRlVHJhY2soIHRyYWNrICk7CistICAgICAgICAgICAgfQorLSAgICAgICAgfQorLQorICAgICAg ICAgdm9pZCBzbG90VXBkYXRlVHJhY2soIE1ldGE6OlRyYWNrUHRyIHRyYWNrICkKKyAgICAgICAg IHsKKyAgICAgICAgICAgICBpZiggdHJhY2sgKQorQEAgLTExNyw4ICs4OSw2IEBAIGNsYXNzIE1l dGFQcm94eTo6VHJhY2s6OlByaXZhdGUgOiBwdWJsaWMgUU9iamVjdCwgcHVibGljIE1ldGE6Ok9i c2VydmVyCisgICAgICAgICAgICAgICAgIHN1YnNjcmliZVRvKCB0cmFjayApOworICAgICAgICAg ICAgICAgICByZWFsVHJhY2sgPSB0cmFjazsKKyAgICAgICAgICAgICAgICAgbm90aWZ5T2JzZXJ2 ZXJzKCk7CistICAgICAgICAgICAgICAgIGRpc2Nvbm5lY3QoIENvbGxlY3Rpb25NYW5hZ2VyOjpp bnN0YW5jZSgpLCBTSUdOQUwoIHRyYWNrUHJvdmlkZXJBZGRlZCggQ29sbGVjdGlvbnM6OlRyYWNr UHJvdmlkZXIqICkgKSwgdGhpcywgU0xPVCggc2xvdE5ld1RyYWNrUHJvdmlkZXIoIENvbGxlY3Rp b25zOjpUcmFja1Byb3ZpZGVyKiApICkgKTsKKy0gICAgICAgICAgICAgICAgZGlzY29ubmVjdCgg Q29sbGVjdGlvbk1hbmFnZXI6Omluc3RhbmNlKCksIFNJR05BTCggY29sbGVjdGlvbkFkZGVkKCBD b2xsZWN0aW9uczo6Q29sbGVjdGlvbiogKSApLCB0aGlzLCBTTE9UKCBzbG90TmV3Q29sbGVjdGlv biggQ29sbGVjdGlvbnM6OkNvbGxlY3Rpb24qICkgKSApOworICAgICAgICAgICAgIH0KKyAgICAg ICAgIH0KKyB9OworZGlmZiAtLWdpdCBhL3NyYy9jb3JlLWltcGwvcGxheWxpc3RzL3R5cGVzL2Zp bGUvbTN1L00zVVBsYXlsaXN0LmNwcCBiL3NyYy9jb3JlLWltcGwvcGxheWxpc3RzL3R5cGVzL2Zp bGUvbTN1L00zVVBsYXlsaXN0LmNwcAoraW5kZXggYzY0Y2I5Ny4uOTg5ZThkNyAxMDA2NDQKKy0t LSBhL3NyYy9jb3JlLWltcGwvcGxheWxpc3RzL3R5cGVzL2ZpbGUvbTN1L00zVVBsYXlsaXN0LmNw cAorKysrIGIvc3JjL2NvcmUtaW1wbC9wbGF5bGlzdHMvdHlwZXMvZmlsZS9tM3UvTTNVUGxheWxp c3QuY3BwCitAQCAtMjEsNiArMjEsNyBAQAorICNpbmNsdWRlICJjb3JlL3N1cHBvcnQvQW1hcm9r LmgiCisgI2luY2x1ZGUgImNvcmUvc3VwcG9ydC9EZWJ1Zy5oIgorICNpbmNsdWRlICJjb3JlLWlt cGwvY29sbGVjdGlvbnMvc3VwcG9ydC9Db2xsZWN0aW9uTWFuYWdlci5oIgorKyNpbmNsdWRlICJj b3JlLWltcGwvbWV0YS9wcm94eS9NZXRhUHJveHkuaCIKKyAjaW5jbHVkZSAiY29yZS1pbXBsL3Bs YXlsaXN0cy90eXBlcy9maWxlL1BsYXlsaXN0RmlsZVN1cHBvcnQuaCIKKyAjaW5jbHVkZSAicGxh eWxpc3RtYW5hZ2VyL2ZpbGUvUGxheWxpc3RGaWxlUHJvdmlkZXIuaCIKKyAjaW5jbHVkZSAiUGxh eWxpc3RNYW5hZ2VyLmgiCitAQCAtMTUwLDIwICsxNTEsMjUgQEAgYm9vbAorIE0zVVBsYXlsaXN0 Ojpsb2FkTTN1KCBRVGV4dFN0cmVhbSAmc3RyZWFtICkKKyB7CisgICAgIGNvbnN0IFFTdHJpbmcg ZGlyZWN0b3J5ID0gbV91cmwuZGlyZWN0b3J5KCk7CistICAgIGJvb2wgaGFzVHJhY2tzID0gZmFs c2U7CisgICAgIG1fdHJhY2tzTG9hZGVkID0gZmFsc2U7CisgCisrICAgIGludCBsZW5ndGggPSAt MTsKKysgICAgUVN0cmluZyBleHRpbmZUaXRsZTsKKyAgICAgZG8KKyAgICAgeworICAgICAgICAg UVN0cmluZyBsaW5lID0gc3RyZWFtLnJlYWRMaW5lKCk7CisgICAgICAgICBpZiggbGluZS5zdGFy dHNXaXRoKCAiI0VYVElORiIgKSApCisgICAgICAgICB7CistICAgICAgICAgICAgLy9jb25zdCBR U3RyaW5nIGV4dGluZiA9IGxpbmUuc2VjdGlvbiggJzonLCAxICk7CistICAgICAgICAgICAgLy9j b25zdCBpbnQgbGVuZ3RoID0gZXh0aW5mLnNlY3Rpb24oICcsJywgMCwgMCApLnRvSW50KCk7Cisr ICAgICAgICAgICAgY29uc3QgUVN0cmluZyBleHRpbmYgPSBsaW5lLnNlY3Rpb24oICc6JywgMSAp OworKyAgICAgICAgICAgIGJvb2wgb2s7CisrICAgICAgICAgICAgbGVuZ3RoID0gZXh0aW5mLnNl Y3Rpb24oICcsJywgMCwgMCApLnRvSW50KCAmb2sgKTsKKysgICAgICAgICAgICBpZiggIW9rICkK KysgICAgICAgICAgICAgICAgbGVuZ3RoID0gLTE7CisrICAgICAgICAgICAgZXh0aW5mVGl0bGUg PSBleHRpbmYuc2VjdGlvbiggJywnLCAxICk7CisgICAgICAgICB9CisgICAgICAgICBlbHNlIGlm KCAhbGluZS5zdGFydHNXaXRoKCAnIycgKSAmJiAhbGluZS5pc0VtcHR5KCkgKQorICAgICAgICAg eworLSAgICAgICAgICAgIE1ldGE6OlRyYWNrUHRyIHRyYWNrUHRyOworKyAgICAgICAgICAgIE1l dGFQcm94eTo6VHJhY2sgKnByb3h5VHJhY2s7CisgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVw bGFjZSggIlxcIiwgIi8iICk7CisgCisgICAgICAgICAgICAgLy8gS1VybDo6aXNSZWxhdGl2ZVVy bCgpIGV4cGVjdHMgYWJzb2x1dGUgVVJMcyB0byBzdGFydCB3aXRoIGEgcHJvdG9jb2wsIHNvIHBy ZXBlbmQgaXQgaWYgbWlzc2luZworQEAgLTE4MCwyMiArMTg2LDMwIEBAIE0zVVBsYXlsaXN0Ojps b2FkTTN1KCBRVGV4dFN0cmVhbSAmc3RyZWFtICkKKyAgICAgICAgICAgICAgICAga3VybC5hZGRQ YXRoKCBsaW5lICk7IC8vIGFkZHMgZGlyZWN0b3J5IHNlcGFyYXRvciBpZiByZXF1aXJlZAorICAg ICAgICAgICAgICAgICBrdXJsLmNsZWFuUGF0aCgpOworIAorLSAgICAgICAgICAgICAgICB0cmFj a1B0ciA9IENvbGxlY3Rpb25NYW5hZ2VyOjppbnN0YW5jZSgpLT50cmFja0ZvclVybCgga3VybCAp OworKyAgICAgICAgICAgICAgICB1cmwgPSBrdXJsLnVybCgpOworICAgICAgICAgICAgIH0KKy0g ICAgICAgICAgICBlbHNlCisrCisrICAgICAgICAgICAgcHJveHlUcmFjayA9IG5ldyBNZXRhUHJv eHk6OlRyYWNrKCBLVXJsKCB1cmwgKSApOworKyAgICAgICAgICAgIFFTdHJpbmcgYXJ0aXN0ID0g ZXh0aW5mVGl0bGUuc2VjdGlvbiggIiAtICIsIDAsIDAgKTsKKysgICAgICAgICAgICBRU3RyaW5n IHRpdGxlID0gZXh0aW5mVGl0bGUuc2VjdGlvbiggIiAtICIsIDEsIDEgKTsKKysgICAgICAgICAg ICAvL2lmIHRpdGxlIGFuZCBhcnRpc3QgYXJlIHNhdmVkIHN1Y2ggYXMgaW4gTTNVUGxheWxpc3Q6 OnNhdmUoKQorKyAgICAgICAgICAgIGlmKCAhdGl0bGUuaXNFbXB0eSgpICYmICFhcnRpc3QuaXNF bXB0eSgpICkKKyAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIHRyYWNrUHRyID0gQ29s bGVjdGlvbk1hbmFnZXI6Omluc3RhbmNlKCktPnRyYWNrRm9yVXJsKCBLVXJsKCBsaW5lICkgKTsK KysgICAgICAgICAgICAgICAgcHJveHlUcmFjay0+c2V0TmFtZSggdGl0bGUgKTsKKysgICAgICAg ICAgICAgICAgcHJveHlUcmFjay0+c2V0QXJ0aXN0KCBhcnRpc3QgKTsKKyAgICAgICAgICAgICB9 CistCistICAgICAgICAgICAgaWYoIHRyYWNrUHRyICkKKysgICAgICAgICAgICBlbHNlCisgICAg ICAgICAgICAgeworLSAgICAgICAgICAgICAgICBtX3RyYWNrcy5hcHBlbmQoIHRyYWNrUHRyICk7 CistICAgICAgICAgICAgICAgIGhhc1RyYWNrcyA9IHRydWU7CistICAgICAgICAgICAgICAgIG1f dHJhY2tzTG9hZGVkID0gdHJ1ZTsKKysgICAgICAgICAgICAgICAgcHJveHlUcmFjay0+c2V0TmFt ZSggZXh0aW5mVGl0bGUgKTsKKyAgICAgICAgICAgICB9CisrICAgICAgICAgICAgcHJveHlUcmFj ay0+c2V0TGVuZ3RoKCBsZW5ndGggKTsKKysgICAgICAgICAgICBtX3RyYWNrcyA8PCBNZXRhOjpU cmFja1B0ciggcHJveHlUcmFjayApOworKyAgICAgICAgICAgIG1fdHJhY2tzTG9hZGVkID0gdHJ1 ZTsKKyAgICAgICAgIH0KKyAgICAgfSB3aGlsZSggIXN0cmVhbS5hdEVuZCgpICk7CistICAgIHJl dHVybiBoYXNUcmFja3M7CisrCisrICAgIC8vVE9ETzogcmV0dXJuIGZhbHNlIGlmIHN0cmVhbSBp cyBub3QgcmVhZGFibGUsIGVtcHR5IG9yIGhhcyBlcnJvcnMKKysgICAgcmV0dXJuIHRydWU7Cisg fQorIAorIGJvb2wKK2RpZmYgLS1naXQgYS9zcmMvY29yZS1pbXBsL3BsYXlsaXN0cy90eXBlcy9m aWxlL3Bscy9QTFNQbGF5bGlzdC5jcHAgYi9zcmMvY29yZS1pbXBsL3BsYXlsaXN0cy90eXBlcy9m aWxlL3Bscy9QTFNQbGF5bGlzdC5jcHAKK2luZGV4IDY3ZWQ2OGUuLjM4NjczNGEgMTAwNjQ0Cist LS0gYS9zcmMvY29yZS1pbXBsL3BsYXlsaXN0cy90eXBlcy9maWxlL3Bscy9QTFNQbGF5bGlzdC5j cHAKKysrKyBiL3NyYy9jb3JlLWltcGwvcGxheWxpc3RzL3R5cGVzL2ZpbGUvcGxzL1BMU1BsYXls aXN0LmNwcAorQEAgLTIxLDYgKzIxLDcgQEAKKyAjaW5jbHVkZSAiY29yZS9jYXBhYmlsaXRpZXMv RWRpdENhcGFiaWxpdHkuaCIKKyAjaW5jbHVkZSAiY29yZS9tZXRhL01ldGEuaCIKKyAjaW5jbHVk ZSAiUGxheWxpc3RNYW5hZ2VyLmgiCisrI2luY2x1ZGUgImNvcmUtaW1wbC9tZXRhL3Byb3h5L01l dGFQcm94eS5oIgorICNpbmNsdWRlICJjb3JlLWltcGwvcGxheWxpc3RzL3R5cGVzL2ZpbGUvUGxh eWxpc3RGaWxlU3VwcG9ydC5oIgorIAorICNpbmNsdWRlIDxLTWltZVR5cGU+CitAQCAtNzIsNyAr NzMsNyBAQCBQTFNQbGF5bGlzdDo6dHJhY2tDb3VudCgpIGNvbnN0CisgICAgIGlmKCBtX3RyYWNr c0xvYWRlZCApCisgICAgICAgICByZXR1cm4gbV90cmFja3MuY291bnQoKTsKKyAKKy0gICAgLy9U T0RPOiBjb3VudCB0aGUgbnVtYmVyIG9mIGxpbmVzIHN0YXJ0aW5nIHdpdGggIworKyAgICAvL1RP RE86IHJlYWQgTnVtYmVyT2ZFbnRyaWVzIGZyb20gZm9vdGVyCisgICAgIHJldHVybiAtMTsKKyB9 CisgCitAQCAtMTQ2LDExICsxNDcsOSBAQCBQTFNQbGF5bGlzdDo6cmVtb3ZlVHJhY2soIGludCBw b3NpdGlvbiApCisgfQorIAorIGJvb2wKKy1QTFNQbGF5bGlzdDo6bG9hZFBscyggUVRleHRTdHJl YW0gJnN0cmVhbSApCisrUExTUGxheWxpc3Q6OmxvYWRQbHMoIFFUZXh0U3RyZWFtICZ0ZXh0U3Ry ZWFtICkKKyB7CistICAgIERFQlVHX0JMT0NLCistCistICAgIE1ldGE6OlRyYWNrUHRyIGN1cnJl bnRUcmFjazsKKysgICAgTWV0YVByb3h5OjpUcmFjayAqcHJveHlUcmFjazsKKyAKKyAgICAgLy8g Q291bnRlZCBudW1iZXIgb2YgIkZpbGUjPSIgbGluZXMuCisgICAgIHVuc2lnbmVkIGludCBlbnRy eUNudCA9IDA7CitAQCAtMTcyLDI3ICsxNzEsMzIgQEAgUExTUGxheWxpc3Q6OmxvYWRQbHMoIFFU ZXh0U3RyZWFtICZzdHJlYW0gKQorICAgICAqIFJlYWQgdGhlIGxpbmVzIGludG8gYSBidWZmZXI7 IENsZWFudXAgdGhlIGxpbmUgc3RyaW5nczsKKyAgICAgKiBDb3VudCB0aGUgZW50cmllcyBtYW51 YWxseSBhbmQgcmVhZCAiTnVtYmVyT2ZFbnRyaWVzIi4KKyAgICAgKi8KKy0gICAgd2hpbGUgKCFz dHJlYW0uYXRFbmQoKSkgeworLSAgICAgICAgdG1wID0gc3RyZWFtLnJlYWRMaW5lKCk7CisrICAg IHdoaWxlKCAhdGV4dFN0cmVhbS5hdEVuZCgpICkKKysgICAgeworKyAgICAgICAgdG1wID0gdGV4 dFN0cmVhbS5yZWFkTGluZSgpOworICAgICAgICAgdG1wID0gdG1wLnRyaW1tZWQoKTsKKy0gICAg ICAgIGlmICh0bXAuaXNFbXB0eSgpKQorKyAgICAgICAgaWYoIHRtcC5pc0VtcHR5KCkgKQorICAg ICAgICAgICAgIGNvbnRpbnVlOworLSAgICAgICAgbGluZXMuYXBwZW5kKHRtcCk7CisrICAgICAg ICBsaW5lcy5hcHBlbmQoIHRtcCApOworIAorLSAgICAgICAgaWYgKHRtcC5jb250YWlucyhyZWdF eHBfRmlsZSkpIHsKKysgICAgICAgIGlmKCB0bXAuY29udGFpbnMoIHJlZ0V4cF9GaWxlICkgKQor KyAgICAgICAgeworICAgICAgICAgICAgIGVudHJ5Q250Kys7CisgICAgICAgICAgICAgY29udGlu dWU7CisgICAgICAgICB9CistICAgICAgICBpZiAodG1wID09IHNlY3Rpb25fcGxheWxpc3QpIHsK KysgICAgICAgIGlmKCB0bXAgPT0gc2VjdGlvbl9wbGF5bGlzdCApCisrICAgICAgICB7CisgICAg ICAgICAgICAgaGF2ZVBsYXlsaXN0U2VjdGlvbiA9IHRydWU7CisgICAgICAgICAgICAgY29udGlu dWU7CisgICAgICAgICB9CistICAgICAgICBpZiAodG1wLmNvbnRhaW5zKHJlZ0V4cF9OdW1iZXJP ZkVudHJpZXMpKSB7CistICAgICAgICAgICAgbnVtYmVyT2ZFbnRyaWVzID0gdG1wLnNlY3Rpb24o Jz0nLCAtMSkudHJpbW1lZCgpLnRvVUludCgpOworKyAgICAgICAgaWYoIHRtcC5jb250YWlucygg cmVnRXhwX051bWJlck9mRW50cmllcyApICkKKysgICAgICAgIHsKKysgICAgICAgICAgICBudW1i ZXJPZkVudHJpZXMgPSB0bXAuc2VjdGlvbiggJz0nLCAtMSApLnRyaW1tZWQoKS50b1VJbnQoKTsK KyAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgIH0KKyAgICAgfQorLSAgICBpZiAobnVt YmVyT2ZFbnRyaWVzICE9IGVudHJ5Q250KSB7CisrICAgIGlmKCBudW1iZXJPZkVudHJpZXMgIT0g ZW50cnlDbnQgKQorKyAgICB7CisgICAgICAgICB3YXJuaW5nKCkgPDwgIi5wbHMgcGxheWxpc3Q6 IEludmFsaWQgXCJOdW1iZXJPZkVudHJpZXNcIiB2YWx1ZS4gICIKKyAgICAgICAgICAgICAgICAg PDwgIk51bWJlck9mRW50cmllcz0iIDw8IG51bWJlck9mRW50cmllcyA8PCAiICBjb3VudGVkPSIK KyAgICAgICAgICAgICAgICAgPDwgZW50cnlDbnQgPDwgZW5kbDsKK0BAIC0yMDIsNyArMjA2LDcg QEAgUExTUGxheWxpc3Q6OmxvYWRQbHMoIFFUZXh0U3RyZWFtICZzdHJlYW0gKQorICAgICAgICAg Ki8KKyAgICAgICAgIG51bWJlck9mRW50cmllcyA9IGVudHJ5Q250OworICAgICB9CistICAgIGlm ICghbnVtYmVyT2ZFbnRyaWVzKQorKyAgICBpZiggbnVtYmVyT2ZFbnRyaWVzID09IDAgKQorICAg ICAgICAgcmV0dXJuIHRydWU7CisgCisgICAgIHVuc2lnbmVkIGludCBpbmRleDsKK0BAIC0yMTMs NjcgKzIxNyw2OSBAQCBQTFNQbGF5bGlzdDo6bG9hZFBscyggUVRleHRTdHJlYW0gJnN0cmVhbSAp CisgICAgICogYW5kIHBhcnNlIHRoZSBwbGF5bGlzdCBkYXRhLgorICAgICAqLworICAgICBRU3Ry aW5nTGlzdDo6Y29uc3RfaXRlcmF0b3IgaSA9IGxpbmVzLmNvbnN0QmVnaW4oKSwgZW5kID0gbGlu ZXMuY29uc3RFbmQoKTsKKy0gICAgZm9yICggOyBpICE9IGVuZDsgKytpKSB7CistICAgICAgICBp ZiAoIWluUGxheWxpc3RTZWN0aW9uICYmIGhhdmVQbGF5bGlzdFNlY3Rpb24pIHsKKysgICAgZm9y KCA7IGkgIT0gZW5kOyArK2kgKQorKyAgICB7CisrICAgICAgICBpZiggIWluUGxheWxpc3RTZWN0 aW9uICYmIGhhdmVQbGF5bGlzdFNlY3Rpb24gKQorKyAgICAgICAgeworICAgICAgICAgICAgIC8q IFRoZSBwbGF5bGlzdCBiZWdpbnMgd2l0aCB0aGUgIltwbGF5bGlzdF0iIHRhZy4KKyAgICAgICAg ICAgICAqIFNraXAgZXZlcnl0aGluZyBiZWZvcmUgdGhpcy4KKyAgICAgICAgICAgICAqLworLSAg ICAgICAgICAgIGlmICgoKmkpID09IHNlY3Rpb25fcGxheWxpc3QpCisrICAgICAgICAgICAgaWYo ICgqaSkgPT0gc2VjdGlvbl9wbGF5bGlzdCApCisgICAgICAgICAgICAgICAgIGluUGxheWxpc3RT ZWN0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgIH0KKy0gICAg ICAgIGlmICgoKmkpLmNvbnRhaW5zKHJlZ0V4cF9GaWxlKSkgeworKyAgICAgICAgaWYoICgqaSku Y29udGFpbnMoIHJlZ0V4cF9GaWxlICkgKQorKyAgICAgICAgeworICAgICAgICAgICAgIC8vIEhh dmUgYSAiRmlsZSM9WFlaIiBsaW5lLgorLSAgICAgICAgICAgIGluZGV4ID0gbG9hZFBsc19leHRy YWN0SW5kZXgoKmkpOworLSAgICAgICAgICAgIGlmIChpbmRleCA+IG51bWJlck9mRW50cmllcyB8 fCBpbmRleCA9PSAwKQorKyAgICAgICAgICAgIGluZGV4ID0gbG9hZFBsc19leHRyYWN0SW5kZXgo ICppICk7CisrICAgICAgICAgICAgaWYoIGluZGV4ID4gbnVtYmVyT2ZFbnRyaWVzIHx8IGluZGV4 ID09IDAgKQorICAgICAgICAgICAgICAgICBjb250aW51ZTsKKy0gICAgICAgICAgICB0bXAgPSAo KmkpLnNlY3Rpb24oJz0nLCAxKS50cmltbWVkKCk7CistICAgICAgICAgICAgY3VycmVudFRyYWNr ID0gQ29sbGVjdGlvbk1hbmFnZXI6Omluc3RhbmNlKCktPnRyYWNrRm9yVXJsKCB0bXAgKTsKKy0g ICAgICAgICAgICBpZiggY3VycmVudFRyYWNrLmlzTnVsbCgpICkKKysgICAgICAgICAgICB0bXAg PSAoKmkpLnNlY3Rpb24oICc9JywgMSApLnRyaW1tZWQoKTsKKysgICAgICAgICAgICBLVXJsIHVy bCggdG1wICk7CisrICAgICAgICAgICAgaWYoIHVybC5pc1JlbGF0aXZlKCkgKQorICAgICAgICAg ICAgIHsKKy0gICAgICAgICAgICAgICAgZGVidWcoKSA8PCAidHJhY2sgY291bGQgbm90IGJlIGxv YWRlZDogIiA8PCB0bXA7CistICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAg ICAgICB1cmwgPSBtX3VybDsKKysgICAgICAgICAgICAgICAgdXJsLmFkZFBhdGgoIHRtcCApOwor ICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBtX3RyYWNrcy5hcHBlbmQoIGN1cnJlbnRUcmFj ayApOworKyAgICAgICAgICAgIHByb3h5VHJhY2sgPSBuZXcgTWV0YVByb3h5OjpUcmFjayggdXJs ICk7CisrICAgICAgICAgICAgbV90cmFja3MgPDwgTWV0YTo6VHJhY2tQdHIoIHByb3h5VHJhY2sg KTsKKyAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgIH0KKy0gICAgICAgIGlmICgoKmkp LmNvbnRhaW5zKHJlZ0V4cF9UaXRsZSkpIHsKKysgICAgICAgIGlmKCAoKmkpLmNvbnRhaW5zKHJl Z0V4cF9UaXRsZSkgKQorKyAgICAgICAgeworICAgICAgICAgICAgIC8vIEhhdmUgYSAiVGl0bGUj PVhZWiIgbGluZS4KKyAgICAgICAgICAgICBpbmRleCA9IGxvYWRQbHNfZXh0cmFjdEluZGV4KCpp KTsKKy0gICAgICAgICAgICBpZiAoaW5kZXggPiBudW1iZXJPZkVudHJpZXMgfHwgaW5kZXggPT0g MCkKKysgICAgICAgICAgICBpZiggaW5kZXggPiBudW1iZXJPZkVudHJpZXMgfHwgaW5kZXggPT0g MCApCisgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworLSAgICAgICAgICAgIHRtcCA9ICgqaSku c2VjdGlvbignPScsIDEpLnRyaW1tZWQoKTsKKy0KKy0gICAgICAgICAgICBpZiAoIGN1cnJlbnRU cmFjay5kYXRhKCkgIT0gMCAmJiBjdXJyZW50VHJhY2stPmlzPENhcGFiaWxpdGllczo6RWRpdENh cGFiaWxpdHk+KCkgKQorLSAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgQ2FwYWJpbGl0 aWVzOjpFZGl0Q2FwYWJpbGl0eSAqZWMgPSBjdXJyZW50VHJhY2stPmNyZWF0ZTxDYXBhYmlsaXRp ZXM6OkVkaXRDYXBhYmlsaXR5PigpOworLSAgICAgICAgICAgICAgICBpZiggZWMgKQorLSAgICAg ICAgICAgICAgICAgICAgZWMtPnNldFRpdGxlKCB0bXAgKTsKKy0gICAgICAgICAgICAgICAgZGVs ZXRlIGVjOworLSAgICAgICAgICAgIH0KKysgICAgICAgICAgICB0bXAgPSAoKmkpLnNlY3Rpb24o ICc9JywgMSApLnRyaW1tZWQoKTsKKysgICAgICAgICAgICBwcm94eVRyYWNrLT5zZXROYW1lKCB0 bXAgKTsKKyAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgIH0KKy0gICAgICAgIGlmICgo KmkpLmNvbnRhaW5zKHJlZ0V4cF9MZW5ndGgpKSB7CisrICAgICAgICBpZiggKCppKS5jb250YWlu cyggcmVnRXhwX0xlbmd0aCApICkKKysgICAgICAgIHsKKyAgICAgICAgICAgICAvLyBIYXZlIGEg Ikxlbmd0aCM9WFlaIiBsaW5lLgorICAgICAgICAgICAgIGluZGV4ID0gbG9hZFBsc19leHRyYWN0 SW5kZXgoKmkpOworLSAgICAgICAgICAgIGlmIChpbmRleCA+IG51bWJlck9mRW50cmllcyB8fCBp bmRleCA9PSAwKQorKyAgICAgICAgICAgIGlmKCBpbmRleCA+IG51bWJlck9mRW50cmllcyB8fCBp bmRleCA9PSAwICkKKyAgICAgICAgICAgICAgICAgY29udGludWU7CistICAgICAgICAgICAgdG1w ID0gKCppKS5zZWN0aW9uKCc9JywgMSkudHJpbW1lZCgpOworLSAgICAgICAgICAgIC8vdHJhY2tz LmFwcGVuZCggS1VybCh0bXApICk7CistLy8gICAgICAgICAgICAgUV9BU1NFUlQob2spOworKyAg ICAgICAgICAgIHRtcCA9ICgqaSkuc2VjdGlvbiggJz0nLCAxICkudHJpbW1lZCgpOworKyAgICAg ICAgICAgIGJvb2wgb2sgPSBmYWxzZTsKKysgICAgICAgICAgICBpbnQgc2Vjb25kcyA9IHRtcC50 b0ludCggJm9rICk7CisrICAgICAgICAgICAgaWYoIG9rICkKKysgICAgICAgICAgICAgICAgcHJv eHlUcmFjay0+c2V0TGVuZ3RoKCBzZWNvbmRzICogMTAwMCApOyAvL2xlbmd0aCBpcyBpbiBtaWxs aXNlY29uZHMKKyAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgIH0KKy0gICAgICAgIGlm ICgoKmkpLmNvbnRhaW5zKHJlZ0V4cF9OdW1iZXJPZkVudHJpZXMpKSB7CisrICAgICAgICBpZigg KCppKS5jb250YWlucyggcmVnRXhwX051bWJlck9mRW50cmllcyApICkKKysgICAgICAgIHsKKyAg ICAgICAgICAgICAvLyBIYXZlIHRoZSAiTnVtYmVyT2ZFbnRyaWVzPSMiIGxpbmUuCisgICAgICAg ICAgICAgY29udGludWU7CisgICAgICAgICB9CistICAgICAgICBpZiAoKCppKS5jb250YWlucyhy ZWdFeHBfVmVyc2lvbikpIHsKKysgICAgICAgIGlmKCAoKmkpLmNvbnRhaW5zKCByZWdFeHBfVmVy c2lvbiApICkKKysgICAgICAgIHsKKyAgICAgICAgICAgICAvLyBIYXZlIHRoZSAiVmVyc2lvbj0j IiBsaW5lLgorLSAgICAgICAgICAgIHRtcCA9ICgqaSkuc2VjdGlvbignPScsIDEpLnRyaW1tZWQo KTsKKysgICAgICAgICAgICB0bXAgPSAoKmkpLnNlY3Rpb24oICc9JywgMSApLnRyaW1tZWQoKTsK KyAgICAgICAgICAgICAvLyBXZSBvbmx5IHN1cHBvcnQgVmVyc2lvbj0yCistICAgICAgICAgICAg aWYgKHRtcC50b1VJbnQoJm9rKSAhPSAyKQorKyAgICAgICAgICAgIGlmICh0bXAudG9VSW50KCAm b2sgKSAhPSAyKQorICAgICAgICAgICAgICAgICB3YXJuaW5nKCkgPDwgIi5wbHMgcGxheWxpc3Q6 IFVuc3VwcG9ydGVkIHZlcnNpb24uIiA8PCBlbmRsOworLS8vICAgICAgICAgICAgIFFfQVNTRVJU KG9rKTsKKyAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgIH0KKyAgICAgICAgIHdhcm5p bmcoKSA8PCAiLnBscyBwbGF5bGlzdDogVW5yZWNvZ25pemVkIGxpbmU6IFwiIiA8PCAqaSA8PCAi XCIiIDw8IGVuZGw7CitAQCAtMzAwLDE0ICszMDYsMzEgQEAgUExTUGxheWxpc3Q6OnNhdmUoIGNv bnN0IEtVcmwgJmxvY2F0aW9uLCBib29sIHJlbGF0aXZlICkKKyAgICAgICAgIHJldHVybiBmYWxz ZTsKKyAgICAgfQorIAorKyAgICAvL0Zvcm1hdDogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lr aS9QTFNfKGZpbGVfZm9ybWF0KQorICAgICBRVGV4dFN0cmVhbSBzdHJlYW0oICZmaWxlICk7Cisr ICAgIC8vaGVhZGVyCisgICAgIHN0cmVhbSA8PCAiW1BsYXlsaXN0XVxuIjsKKy0gICAgc3RyZWFt IDw8ICJOdW1iZXJPZkVudHJpZXM9IiA8PCBtX3RyYWNrcy5jb3VudCgpIDw8IGVuZGw7CisrCisr ICAgIC8vYm9keQorICAgICBpbnQgaSA9IDE7IC8vUExTIHN0YXJ0cyBhdCBGaWxlMT0KKyAgICAg Zm9yZWFjaCggTWV0YTo6VHJhY2tQdHIgdHJhY2ssIG1fdHJhY2tzICkKKyAgICAgeworLSAgICAg ICAgc3RyZWFtIDw8ICJGaWxlIiA8PCBpIDw8ICI9IjsKKy0gICAgICAgIHN0cmVhbSA8PCBLVXJs KCB0cmFjay0+cGxheWFibGVVcmwoKSApLnBhdGgoKTsKKysgICAgICAgIEtVcmwgcGxheWFibGVV cmwoIHRyYWNrLT5wbGF5YWJsZVVybCgpICk7CisrICAgICAgICBRU3RyaW5nIGZpbGUgPSBwbGF5 YWJsZVVybC51cmwoKTsKKysKKysgICAgICAgIGlmKCBwbGF5YWJsZVVybC5pc0xvY2FsRmlsZSgp ICkKKysgICAgICAgIHsKKysgICAgICAgICAgICBpZiggcmVsYXRpdmUgKQorKyAgICAgICAgICAg IHsKKysgICAgICAgICAgICAgICAgZmlsZSA9IEtVcmw6OnJlbGF0aXZlUGF0aCggc2F2ZVBhdGgu dG9Mb2NhbEZpbGUoKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGxheWFibGVVcmwudG9Mb2NhbEZpbGUoKSApOworKyAgICAgICAgICAgIH0KKysgICAgICAg ICAgICBlbHNlCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBmaWxlID0gcGxheWFi bGVVcmwudG9Mb2NhbEZpbGUoKTsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgICAg ICBzdHJlYW0gPDwgIkZpbGUiIDw8IGkgPDwgIj0iIDw8IGZpbGU7CisgICAgICAgICBzdHJlYW0g PDwgIlxuVGl0bGUiIDw8IGkgPDwgIj0iOworICAgICAgICAgc3RyZWFtIDw8IHRyYWNrLT5uYW1l KCk7CisgICAgICAgICBzdHJlYW0gPDwgIlxuTGVuZ3RoIiA8PCBpIDw8ICI9IjsKK0BAIC0zMTYs NiArMzM5LDggQEAgUExTUGxheWxpc3Q6OnNhdmUoIGNvbnN0IEtVcmwgJmxvY2F0aW9uLCBib29s IHJlbGF0aXZlICkKKyAgICAgICAgIGkrKzsKKyAgICAgfQorIAorKyAgICAvL2Zvb3RlcgorKyAg ICBzdHJlYW0gPDwgIk51bWJlck9mRW50cmllcz0iIDw8IG1fdHJhY2tzLmNvdW50KCkgPDwgZW5k bDsKKyAgICAgc3RyZWFtIDw8ICJWZXJzaW9uPTJcbiI7CisgICAgIGZpbGUuY2xvc2UoKTsKKyAg ICAgcmV0dXJuIHRydWU7CitAQCAtMzMwLDkgKzM1NSw5IEBAIFBMU1BsYXlsaXN0Ojpsb2FkUGxz X2V4dHJhY3RJbmRleCggY29uc3QgUVN0cmluZyAmc3RyICkgY29uc3QKKyAgICAgKi8KKyAgICAg Ym9vbCBvayA9IGZhbHNlOworICAgICB1bnNpZ25lZCBpbnQgcmV0OworLSAgICBRU3RyaW5nIHRt cChzdHIuc2VjdGlvbignPScsIDAsIDApKTsKKy0gICAgdG1wLnJlbW92ZShRUmVnRXhwKCJeXFxE KiIpKTsKKy0gICAgcmV0ID0gdG1wLnRyaW1tZWQoKS50b1VJbnQoJm9rKTsKKysgICAgUVN0cmlu ZyB0bXAoIHN0ci5zZWN0aW9uKCAnPScsIDAsIDAgKSApOworKyAgICB0bXAucmVtb3ZlKCBRUmVn RXhwKCAiXlxcRCoiICkgKTsKKysgICAgcmV0ID0gdG1wLnRyaW1tZWQoKS50b1VJbnQoICZvayAp OworICAgICBRX0FTU0VSVChvayk7CisgICAgIHJldHVybiByZXQ7CisgfQorZGlmZiAtLWdpdCBh L3NyYy9jb3JlLWltcGwvcGxheWxpc3RzL3R5cGVzL2ZpbGUveHNwZi9YU1BGUGxheWxpc3QuY3Bw IGIvc3JjL2NvcmUtaW1wbC9wbGF5bGlzdHMvdHlwZXMvZmlsZS94c3BmL1hTUEZQbGF5bGlzdC5j cHAKK2luZGV4IDRjYjQ5ZmIuLjAxY2YxZTYgMTAwNjQ0CistLS0gYS9zcmMvY29yZS1pbXBsL3Bs YXlsaXN0cy90eXBlcy9maWxlL3hzcGYvWFNQRlBsYXlsaXN0LmNwcAorKysrIGIvc3JjL2NvcmUt aW1wbC9wbGF5bGlzdHMvdHlwZXMvZmlsZS94c3BmL1hTUEZQbGF5bGlzdC5jcHAKK0BAIC0yMzMs OCArMjMzLDcgQEAgWFNQRlBsYXlsaXN0Ojp0cmFja0NvdW50KCkgY29uc3QKKyBNZXRhOjpUcmFj a0xpc3QKKyBYU1BGUGxheWxpc3Q6OnRyYWNrcygpCisgeworLSAgICAvL0lmIHlvdSBkbyBub3Qg bG9hZCBiZWZvcmUsIG1fdHJhY2tzCistICAgIC8vY2FuIGJlIGVtcHR5IGJlZm9yZSB1c2FnZS4K KysgICAgLy9JZiB5b3UgZG8gbm90IGxvYWQsIG1fdHJhY2tzIGNhbiBiZSBlbXB0eSBiZWZvcmUg dXNhZ2UuCisgICAgIHRyaWdnZXJUcmFja0xvYWQoKTsKKyAKKyAgICAgcmV0dXJuIG1fdHJhY2tz OworQEAgLTI1MSw3NiArMjUwLDE0IEBAIFhTUEZQbGF5bGlzdDo6dHJpZ2dlclRyYWNrTG9hZCgp CisgCisgICAgIGZvcmVhY2goIGNvbnN0IFhTUEZUcmFjayAmdHJhY2ssIHhzcGZUcmFja3MgKQor ICAgICB7CistICAgICAgICBNZXRhOjpUcmFja1B0ciB0cmFja1B0cjsKKy0gICAgICAgIGlmKCAh dHJhY2suaWRlbnRpZmllci5pc0VtcHR5KCkgKQorLSAgICAgICAgICAgIHRyYWNrUHRyID0gQ29s bGVjdGlvbk1hbmFnZXI6Omluc3RhbmNlKCktPnRyYWNrRm9yVXJsKCB0cmFjay5pZGVudGlmaWVy ICk7CistICAgICAgICBlbHNlCistICAgICAgICAgICAgdHJhY2tQdHIgPSBDb2xsZWN0aW9uTWFu YWdlcjo6aW5zdGFuY2UoKS0+dHJhY2tGb3JVcmwoIHRyYWNrLmxvY2F0aW9uICk7CistICAgICAg ICBpZiggdHJhY2tQdHIgKQorLSAgICAgICAgeworLSAgICAgICAgICAgIC8qKgorLSAgICAgICAg ICAgICAqIE5PVEU6IElmIHRoaXMgaXMgYSBNZXRhUHJveHk6OlRyYWNrLCBpdCBwcm9iYWJseSBp c24ndCBwbGF5YWJsZSB5ZXQsCistICAgICAgICAgICAgICogICAgICAgYnV0IHRoYXQncyBva2F5 LiBIb3dldmVyLCBpdCdzIG5vdCBhIGdvb2QgaWRlYSB0byBnZXQgYW5vdGhlcgorLSAgICAgICAg ICAgICAqICAgICAgIG9uZSBmcm9tIHRoZSBzYW1lIHByb3ZpZGVyLCBzaW5jZSB0aGUgcHJveHkg cHJvYmFibHkgbWVhbnMgdGhhdAorLSAgICAgICAgICAgICAqICAgICAgIG1ha2luZyBvbmUgaW52 b2x2ZXMgcXVpdGUgYSBiaXQgb2Ygd29yay4KKy0gICAgICAgICAgICAgKiAgICAgICAgIC0gQW5k eSBDb2RlciA8YW5kcmV3LmNvZGVyQGdtYWlsLmNvbT4KKy0gICAgICAgICAgICAgKi8KKy0gICAg ICAgICAgICBpZiggIXRyYWNrUHRyLT5pc1BsYXlhYmxlKCkgJiYgKCB0eXBlaWQoICogdHJhY2tQ dHIuZGF0YSgpICkgIT0gdHlwZWlkKCBNZXRhUHJveHk6OlRyYWNrICkgKSApCistICAgICAgICAg ICAgICAgIHRyYWNrUHRyID0gQ29sbGVjdGlvbk1hbmFnZXI6Omluc3RhbmNlKCktPnRyYWNrRm9y VXJsKCB0cmFjay5pZGVudGlmaWVyICk7CistICAgICAgICB9CistCistICAgICAgICBpZiggdHJh Y2tQdHIgKQorLSAgICAgICAgeworLSAgICAgICAgICAgIGlmKCB0eXBlaWQoICogdHJhY2tQdHIu ZGF0YSgpICkgPT0gdHlwZWlkKCBNZXRhU3RyZWFtOjpUcmFjayApICkKKy0gICAgICAgICAgICB7 CistICAgICAgICAgICAgICAgIE1ldGFTdHJlYW06OlRyYWNrICogc3RyZWFtVHJhY2sgPSBkeW5h bWljX2Nhc3Q8TWV0YVN0cmVhbTo6VHJhY2sgKj4gKCB0cmFja1B0ci5kYXRhKCkgKTsKKy0gICAg ICAgICAgICAgICAgaWYgKCBzdHJlYW1UcmFjayApCistICAgICAgICAgICAgICAgIHsKKy0gICAg ICAgICAgICAgICAgICAgIHN0cmVhbVRyYWNrLT5zZXRUaXRsZSggdHJhY2sudGl0bGUgKTsKKy0g ICAgICAgICAgICAgICAgICAgIHN0cmVhbVRyYWNrLT5zZXRBbGJ1bSggdHJhY2suYWxidW0gKTsK Ky0gICAgICAgICAgICAgICAgICAgIHN0cmVhbVRyYWNrLT5zZXRBcnRpc3QoIHRyYWNrLmNyZWF0 b3IgKTsKKy0gICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBl bHNlIGlmKCB0eXBlaWQoICogdHJhY2tQdHIuZGF0YSgpICkgPT0gdHlwZWlkKCBNZXRhOjpUaW1l Y29kZVRyYWNrICkgKQorLSAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgTWV0YTo6VGlt ZWNvZGVUcmFjayAqIHRpbWVjb2RlVHJhY2sgPQorLSAgICAgICAgICAgICAgICAgICAgICAgIGR5 bmFtaWNfY2FzdDxNZXRhOjpUaW1lY29kZVRyYWNrICo+KCB0cmFja1B0ci5kYXRhKCkgKTsKKy0g ICAgICAgICAgICAgICAgaWYoIHRpbWVjb2RlVHJhY2sgKQorLSAgICAgICAgICAgICAgICB7Cist ICAgICAgICAgICAgICAgICAgICB0aW1lY29kZVRyYWNrLT5iZWdpbk1ldGFEYXRhVXBkYXRlKCk7 CistICAgICAgICAgICAgICAgICAgICB0aW1lY29kZVRyYWNrLT5zZXRUaXRsZSggdHJhY2sudGl0 bGUgKTsKKy0gICAgICAgICAgICAgICAgICAgIHRpbWVjb2RlVHJhY2stPnNldEFsYnVtKCB0cmFj ay5hbGJ1bSApOworLSAgICAgICAgICAgICAgICAgICAgdGltZWNvZGVUcmFjay0+c2V0QXJ0aXN0 KCB0cmFjay5jcmVhdG9yICk7CistICAgICAgICAgICAgICAgICAgICB0aW1lY29kZVRyYWNrLT5l bmRNZXRhRGF0YVVwZGF0ZSgpOworLSAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgfQor LQorLSAgICAgICAgICAgIG1fdHJhY2tzIDw8IHRyYWNrUHRyOworLSAgICAgICAgfQorLQorLQor LSAgICAgICAgLy8gd2h5IGRvIHdlIG5lZWQgdGhpcz8gc3FscGxheWxpc3QgaXMgbm90IGRvaW5n IHRoaXMKKy0gICAgICAgIC8vIHdlIGRvbid0IHdhbnQgKHByb2JhYmx5KSB1bnBsYXlhYmxlIHRy YWNrcworLSAgICAgICAgLy8gYW5kIGl0IGNhdXNlcyBwcm9ibGVtcyBmb3IgbWUgKERhbmllbFcp IGFzIGxvbmcKKy0gICAgICAgIC8vIGFtYXJvayBub3QgcmVzcGVjdHMgVHJhY2s6OmlzUGxheWFi bGUoKQorLSAgICAgICAgLyplbHNlIHsKKy0KKy0gICAgICAgICAgICBNZXRhUHJveHk6OlRyYWNr ICpwcm94eVRyYWNrID0gbmV3IE1ldGFQcm94eTo6VHJhY2soIHRyYWNrLmxvY2F0aW9uICk7Cist ICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAvL0ZpbGwgaW4gdmFsdWVzIGZyb20geHNw Zi4uCistICAgICAgICAgICAgICAgIFFWYXJpYW50TWFwIG1hcDsKKy0gICAgICAgICAgICAgICAg bWFwLmluc2VydCggTWV0YTo6RmllbGQ6OlRJVExFLCB0cmFjay50aXRsZSApOworLSAgICAgICAg ICAgICAgICBtYXAuaW5zZXJ0KCBNZXRhOjpGaWVsZDo6QUxCVU0sIHRyYWNrLmFsYnVtICk7Cist ICAgICAgICAgICAgICAgIG1hcC5pbnNlcnQoIE1ldGE6OkZpZWxkOjpBUlRJU1QsIHRyYWNrLmNy ZWF0b3IgKTsKKy0gICAgICAgICAgICAgICAgbWFwLmluc2VydCggTWV0YTo6RmllbGQ6OkxFTkdU SCwgdHJhY2suZHVyYXRpb24gKTsKKy0gICAgICAgICAgICAgICAgbWFwLmluc2VydCggTWV0YTo6 RmllbGQ6OlRSQUNLTlVNQkVSLCB0cmFjay50cmFja051bSApOworLSAgICAgICAgICAgICAgICBt YXAuaW5zZXJ0KCBNZXRhOjpGaWVsZDo6VVJMLCB0cmFjay5sb2NhdGlvbiApOworLSAgICAgICAg ICAgICAgICBNZXRhOjpGaWVsZDo6dXBkYXRlVHJhY2soIHByb3h5VHJhY2ssIG1hcCApOworLSAg ICAgICAgICAgIH0KKy0gICAgICAgICAgICBtX3RyYWNrcyA8PCBNZXRhOjpUcmFja1B0ciggcHJv eHlUcmFjayApOworLSAgICAvLyAgICAgICAgIG1fdHJhY2tzIDw8IENvbGxlY3Rpb25NYW5hZ2Vy OjppbnN0YW5jZSgpLT50cmFja0ZvclVybCggdHJhY2subG9jYXRpb24gKTsKKy0gICAgICAgIH0q LworLQorKyAgICAgICBNZXRhUHJveHk6OlRyYWNrICpwcm94eVRyYWNrID0gbmV3IE1ldGFQcm94 eTo6VHJhY2soIHRyYWNrLmxvY2F0aW9uICk7CisrICAgICAgIC8vRmlsbCBpbiB2YWx1ZXMgZnJv bSB4c3BmLi4KKysgICAgICAgcHJveHlUcmFjay0+c2V0TmFtZSggdHJhY2sudGl0bGUgKTsKKysg ICAgICAgcHJveHlUcmFjay0+c2V0QWxidW0oIHRyYWNrLmFsYnVtICk7CisrICAgICAgIHByb3h5 VHJhY2stPnNldEFydGlzdCggdHJhY2suY3JlYXRvciApOworKyAgICAgICBwcm94eVRyYWNrLT5z ZXRMZW5ndGgoIHRyYWNrLmR1cmF0aW9uICk7CisrICAgICAgIHByb3h5VHJhY2stPnNldFRyYWNr TnVtYmVyKCB0cmFjay50cmFja051bSApOworKyAgICAgICBtX3RyYWNrcyA8PCBNZXRhOjpUcmFj a1B0ciggcHJveHlUcmFjayApOworICAgICB9CisgCisgICAgIG1fdHJhY2tzTG9hZGVkID0gdHJ1 ZTsKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9jb2xsZWN0aW9ucy9zdXBwb3J0L1RyYWNrRm9yVXJs V29ya2VyLmggYi9zcmMvY29yZS9jb2xsZWN0aW9ucy9zdXBwb3J0L1RyYWNrRm9yVXJsV29ya2Vy LmgKK2luZGV4IDY0ZDIzYmQuLjE2ZDc2NGUgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9jb2xsZWN0 aW9ucy9zdXBwb3J0L1RyYWNrRm9yVXJsV29ya2VyLmgKKysrKyBiL3NyYy9jb3JlL2NvbGxlY3Rp b25zL3N1cHBvcnQvVHJhY2tGb3JVcmxXb3JrZXIuaAorQEAgLTM1LDE3ICszNSwxNyBAQCBjbGFz cyBBTUFST0tfQ09SRV9FWFBPUlQgVHJhY2tGb3JVcmxXb3JrZXIgOiBwdWJsaWMgVGhyZWFkV2Vh dmVyOjpKb2IKKyB7CisgICAgIFFfT0JKRUNUCisgcHVibGljOgorLSAgICBUcmFja0ZvclVybFdv cmtlciAoIGNvbnN0IEtVcmwgJnVybCApOworLSAgICBUcmFja0ZvclVybFdvcmtlciAoIGNvbnN0 IFFTdHJpbmcgJnVybCApOworKyAgICBUcmFja0ZvclVybFdvcmtlciggY29uc3QgS1VybCAmdXJs ICk7CisrICAgIFRyYWNrRm9yVXJsV29ya2VyKCBjb25zdCBRU3RyaW5nICZ1cmwgKTsKKyAgICAg flRyYWNrRm9yVXJsV29ya2VyKCk7CisgCistICAgIHZpcnR1YWwgdm9pZCBydW4gKCkgPSAwOwor KyAgICB2aXJ0dWFsIHZvaWQgcnVuKCkgPSAwOworIHNpZ25hbHM6CistICAgIHZvaWQgZmluaXNo ZWRMb29rdXAgKCBjb25zdCBNZXRhOjpUcmFja1B0ciAgJnRyYWNrICk7CisrICAgIHZvaWQgZmlu aXNoZWRMb29rdXAoIGNvbnN0IE1ldGE6OlRyYWNrUHRyICZ0cmFjayApOworIAorIHByb3RlY3Rl ZDoKKy0gICAgS1VybCBtVXJsOworLSAgICBNZXRhOjpUcmFja1B0ciBtVHJhY2s7CisrICAgIEtV cmwgbV91cmw7CisrICAgIE1ldGE6OlRyYWNrUHRyIG1fdHJhY2s7CisgCisgcHJpdmF0ZSBzbG90 czoKKyAgICAgdm9pZCBjb21wbGV0ZUpvYigpOworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2NvbGxl Y3Rpb25zL3N1cHBvcnQvVHJhY2tGb3JVcmxXb3JrZXIuY3BwIGIvc3JjL2NvcmUvY29sbGVjdGlv bnMvc3VwcG9ydC9UcmFja0ZvclVybFdvcmtlci5jcHAKK2luZGV4IDdlOGYyODkuLjI4ZDkyYmIg MTAwNjQ0CistLS0gYS9zcmMvY29yZS9jb2xsZWN0aW9ucy9zdXBwb3J0L1RyYWNrRm9yVXJsV29y a2VyLmNwcAorKysrIGIvc3JjL2NvcmUvY29sbGVjdGlvbnMvc3VwcG9ydC9UcmFja0ZvclVybFdv cmtlci5jcHAKK0BAIC0xNiwxNCArMTYsMTggQEAKKyAKKyAjaW5jbHVkZSAiVHJhY2tGb3JVcmxX b3JrZXIuaCIKKyAKKy1BbWFyb2s6OlRyYWNrRm9yVXJsV29ya2VyOjpUcmFja0ZvclVybFdvcmtl ciAoIGNvbnN0IEtVcmwgJnVybCApIDogVGhyZWFkV2VhdmVyOjpKb2IoKSwgbVVybCAoIHVybCAp CisrQW1hcm9rOjpUcmFja0ZvclVybFdvcmtlcjo6VHJhY2tGb3JVcmxXb3JrZXIoIGNvbnN0IEtV cmwgJnVybCApCisrICAgIDogVGhyZWFkV2VhdmVyOjpKb2IoKQorKyAgICAsIG1fdXJsKCB1cmwg KQorIHsKKy0gICAgY29ubmVjdCAoIHRoaXMsIFNJR05BTCAoIGRvbmUgKCBUaHJlYWRXZWF2ZXI6 OkpvYiogKSApLCBTTE9UICggY29tcGxldGVKb2IoKSApICk7CisrICAgIGNvbm5lY3QoIHRoaXMs IFNJR05BTChkb25lKCBUaHJlYWRXZWF2ZXI6OkpvYiAqICkpLCBTTE9UKCBjb21wbGV0ZUpvYigp KSApOworIH0KKyAKKy1BbWFyb2s6OlRyYWNrRm9yVXJsV29ya2VyOjpUcmFja0ZvclVybFdvcmtl ciggY29uc3QgUVN0cmluZyAmdXJsICkgOiBUaHJlYWRXZWF2ZXI6OkpvYigpLCBtVXJsICggS1Vy bCAoIHVybCApICkKKytBbWFyb2s6OlRyYWNrRm9yVXJsV29ya2VyOjpUcmFja0ZvclVybFdvcmtl ciggY29uc3QgUVN0cmluZyAmdXJsICkKKysgICAgOiBUaHJlYWRXZWF2ZXI6OkpvYigpCisrICAg ICwgbV91cmwoIEtVcmwoIHVybCApICkKKyB7CistICAgIGNvbm5lY3QgKCB0aGlzLCBTSUdOQUwg KCBkb25lICggVGhyZWFkV2VhdmVyOjpKb2IqICkgKSwgU0xPVCAoIGNvbXBsZXRlSm9iKCkgKSAp OworKyAgICBjb25uZWN0KCB0aGlzLCBTSUdOQUwoZG9uZSggVGhyZWFkV2VhdmVyOjpKb2IgKiAp KSwgU0xPVCggY29tcGxldGVKb2IoKSkgKTsKKyB9CisgCisgQW1hcm9rOjpUcmFja0ZvclVybFdv cmtlcjo6flRyYWNrRm9yVXJsV29ya2VyKCkKK0BAIC0zMiw2ICszNiw2IEBAIEFtYXJvazo6VHJh Y2tGb3JVcmxXb3JrZXI6On5UcmFja0ZvclVybFdvcmtlcigpCisgdm9pZAorIEFtYXJvazo6VHJh Y2tGb3JVcmxXb3JrZXI6OmNvbXBsZXRlSm9iKCkKKyB7CistICAgIGVtaXQgKCBmaW5pc2hlZExv b2t1cCAoIG1UcmFjayApICk7CisrICAgIGVtaXQoIGZpbmlzaGVkTG9va3VwKCBtX3RyYWNrICkg KTsKKyAgICAgZGVsZXRlTGF0ZXIoKTsKKyB9CitkaWZmIC0tZ2l0IGEvc3JjL3BsYXlsaXN0bWFu YWdlci9zcWwvU3FsUGxheWxpc3QuY3BwIGIvc3JjL3BsYXlsaXN0bWFuYWdlci9zcWwvU3FsUGxh eWxpc3QuY3BwCitpbmRleCAzOWFkNzU5Li4zYTIyZGE0IDEwMDY0NAorLS0tIGEvc3JjL3BsYXls aXN0bWFuYWdlci9zcWwvU3FsUGxheWxpc3QuY3BwCisrKysgYi9zcmMvcGxheWxpc3RtYW5hZ2Vy L3NxbC9TcWxQbGF5bGlzdC5jcHAKK0BAIC0xNiwxMCArMTYsMTEgQEAKKyAKKyAjaW5jbHVkZSAi U3FsUGxheWxpc3QuaCIKKyAKKy0jaW5jbHVkZSAiY29yZS1pbXBsL2NvbGxlY3Rpb25zL3N1cHBv cnQvQ29sbGVjdGlvbk1hbmFnZXIuaCIKKysjaW5jbHVkZSAiY29yZS9jb2xsZWN0aW9ucy9zdXBw b3J0L1NxbFN0b3JhZ2UuaCIKKyAjaW5jbHVkZSAiY29yZS9zdXBwb3J0L0RlYnVnLmgiCisrI2lu Y2x1ZGUgImNvcmUtaW1wbC9jb2xsZWN0aW9ucy9zdXBwb3J0L0NvbGxlY3Rpb25NYW5hZ2VyLmgi CisrI2luY2x1ZGUgImNvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eS5oIgorICNpbmNsdWRl ICJjb3JlLWltcGwvbWV0YS9zdHJlYW0vU3RyZWFtLmgiCistI2luY2x1ZGUgImNvcmUvY29sbGVj dGlvbnMvc3VwcG9ydC9TcWxTdG9yYWdlLmgiCisgI2luY2x1ZGUgImNvcmUtaW1wbC9tZXRhL3Rp bWVjb2RlL1RpbWVjb2RlTWV0YS5oIgorICNpbmNsdWRlICJwbGF5bGlzdG1hbmFnZXIvUGxheWxp c3RNYW5hZ2VyLmgiCisgI2luY2x1ZGUgInBsYXlsaXN0bWFuYWdlci9zcWwvU3FsUGxheWxpc3RH cm91cC5oIgorQEAgLTI3OCw2ICsyNzksOSBAQCBTcWxQbGF5bGlzdDo6cmVtb3ZlVHJhY2soIGlu dCBwb3NpdGlvbiApCisgdm9pZAorIFNxbFBsYXlsaXN0OjptZXRhZGF0YUNoYW5nZWQoIE1ldGE6 OlRyYWNrUHRyIHRyYWNrICkKKyB7CisrICAgIC8vVE9ETzogZG8gd2UgcmVhbGx5IG5lZWQgdG8g b2JzZXJ2ZSB0cmFjayBjaGFuZ2VzPyBNZXRhZGF0YSB3aWxsIGJlIHByb3Blcmx5IHNhdmVkCisr ICAgIC8vb24gZXhpdCBhbmQgcHJveHkgdHJhY2tzIGFyZSBsb2FkZWQgd2l0aCB1aWRVcmwuIFNv IGF0IHdvcnNlIHRoZSBzYXZlIG1ldGFkYXRhIGluCisrICAgIC8vcGxheWxpc3RfdHJhY2tzIHdp bGwgYmUgb3V0ZGF0ZWQgdW50aWwgcmVhbCB0cmFjayBpcyBsb2FkZWQuCisgICAgIGlmKCAhbV90 cmFja3NMb2FkZWQgKQorICAgICAgICAgbG9hZFRyYWNrcygpOworIAorQEAgLTMwOCw0MyArMzEy LDE1IEBAIFNxbFBsYXlsaXN0Ojpsb2FkVHJhY2tzKCkKKyAgICAgICAgIFFTdHJpbmdMaXN0IHJv dyA9IHJlc3VsdC5taWQoIGkqNywgNyApOworICAgICAgICAgS1VybCB1cmwgPSBLVXJsKCByb3db Ml0gKTsKKyAKKy0gICAgICAgIE1ldGE6OlRyYWNrUHRyIHRyYWNrUHRyID0gQ29sbGVjdGlvbk1h bmFnZXI6Omluc3RhbmNlKCktPnRyYWNrRm9yVXJsKCB1cmwgKTsKKysgICAgICAgIE1ldGFQcm94 eTo6VHJhY2sgKnByb3h5VHJhY2sgPSBuZXcgTWV0YVByb3h5OjpUcmFjayggdXJsICk7CisgCist ICAgICAgICBpZiggdHJhY2tQdHIgKQorLSAgICAgICAgeworLSAgICAgICAgICAgIGlmKCB0eXBl aWQoICogdHJhY2tQdHIuZGF0YSgpICkgPT0gdHlwZWlkKCBNZXRhU3RyZWFtOjpUcmFjayApICkK Ky0gICAgICAgICAgICB7CistCistICAgICAgICAgICAgICAgIGRlYnVnKCkgPDwgImdvdCBzdHJl YW0gZnJvbSB0cmFja0ZvclVybCwgc2V0dGluZyBhbGJ1bSB0byAiIDw8IHJvd1s0XTsKKy0KKy0g ICAgICAgICAgICAgICAgTWV0YVN0cmVhbTo6VHJhY2sgKiBzdHJlYW1UcmFjayA9CistICAgICAg ICAgICAgICAgICAgICAgICAgZHluYW1pY19jYXN0PE1ldGFTdHJlYW06OlRyYWNrICo+ICggdHJh Y2tQdHIuZGF0YSgpICk7CistICAgICAgICAgICAgICAgIAorLSAgICAgICAgICAgICAgICBpZigg c3RyZWFtVHJhY2sgKQorLSAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICBz dHJlYW1UcmFjay0+c2V0VGl0bGUoIHJvd1szXSApOworLSAgICAgICAgICAgICAgICAgICAgc3Ry ZWFtVHJhY2stPnNldEFsYnVtKCByb3dbNF0gKTsKKy0gICAgICAgICAgICAgICAgICAgIHN0cmVh bVRyYWNrLT5zZXRBcnRpc3QoIHJvd1s1XSApOworLSAgICAgICAgICAgICAgICB9CistICAgICAg ICAgICAgfQorLSAgICAgICAgICAgIGVsc2UgaWYoIHR5cGVpZCggKiB0cmFja1B0ci5kYXRhKCkg KSA9PSB0eXBlaWQoIE1ldGE6OlRpbWVjb2RlVHJhY2sgKSApCistICAgICAgICAgICAgeworLSAg ICAgICAgICAgICAgICBNZXRhOjpUaW1lY29kZVRyYWNrICogdGltZWNvZGVUcmFjayA9CistICAg ICAgICAgICAgICAgICAgICAgICAgZHluYW1pY19jYXN0PE1ldGE6OlRpbWVjb2RlVHJhY2sgKj4g KCB0cmFja1B0ci5kYXRhKCkgKTsKKy0KKy0gICAgICAgICAgICAgICAgaWYoIHRpbWVjb2RlVHJh Y2sgKQorLSAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICB0aW1lY29kZVRy YWNrLT5iZWdpbk1ldGFEYXRhVXBkYXRlKCk7CistICAgICAgICAgICAgICAgICAgICB0aW1lY29k ZVRyYWNrLT5zZXRUaXRsZSggcm93WzNdICk7CistICAgICAgICAgICAgICAgICAgICB0aW1lY29k ZVRyYWNrLT5zZXRBbGJ1bSggcm93WzRdICk7CistICAgICAgICAgICAgICAgICAgICB0aW1lY29k ZVRyYWNrLT5zZXRBcnRpc3QoIHJvd1s1XSApOworLSAgICAgICAgICAgICAgICAgICAgdGltZWNv ZGVUcmFjay0+ZW5kTWV0YURhdGFVcGRhdGUoKTsKKy0gICAgICAgICAgICAgICAgfQorLSAgICAg ICAgICAgIH0KKy0KKy0gICAgICAgICAgICBzdWJzY3JpYmVUbyggdHJhY2tQdHIgKTsKKy0gICAg ICAgICAgICBtX3RyYWNrcyA8PCB0cmFja1B0cjsKKy0gICAgICAgIH0KKysgICAgICAgIHByb3h5 VHJhY2stPnNldE5hbWUoIHJvd1szXSApOworKyAgICAgICAgcHJveHlUcmFjay0+c2V0QWxidW0o IHJvd1s0XSApOworKyAgICAgICAgcHJveHlUcmFjay0+c2V0QXJ0aXN0KCByb3dbNV0gKTsKKysg ICAgICAgIE1ldGE6OlRyYWNrUHRyIHRyYWNrUHRyID0gTWV0YTo6VHJhY2tQdHIoIHByb3h5VHJh Y2sgKTsKKysgICAgICAgIC8vc3Vic2NyaWJlZCB0byBmb3JjZSBhIHNhdmUgdG8gZGIgb24gYW55 IGNoYW5nZSAoc3VjaCBhcyBBRlQgZmlsZSBtb3ZlKQorKyAgICAgICAgc3Vic2NyaWJlVG8oIHRy YWNrUHRyICk7CisrICAgICAgICBtX3RyYWNrcyA8PCB0cmFja1B0cjsKKyAgICAgfQorIAorICAg ICBtX3RyYWNrc0xvYWRlZCA9IHRydWU7CitkaWZmIC0tZ2l0IGEvc3JjL3NlcnZpY2VzL2FtcGFj aGUvQW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9uLmggYi9zcmMvc2VydmljZXMvYW1wYWNoZS9BbXBh Y2hlU2VydmljZUNvbGxlY3Rpb24uaAoraW5kZXggYTQ4YzhmMi4uY2M0OTc3NSAxMDA2NDQKKy0t LSBhL3NyYy9zZXJ2aWNlcy9hbXBhY2hlL0FtcGFjaGVTZXJ2aWNlQ29sbGVjdGlvbi5oCisrKysg Yi9zcmMvc2VydmljZXMvYW1wYWNoZS9BbXBhY2hlU2VydmljZUNvbGxlY3Rpb24uaAorQEAgLTI1 LDE0ICsyNSwxNiBAQCBjbGFzcyBBbXBhY2hlVHJhY2tGb3JVcmxXb3JrZXIgOiBwdWJsaWMgQW1h cm9rOjpUcmFja0ZvclVybFdvcmtlcgorIHsKKyAgICAgUV9PQkpFQ1QKKyAgICAgcHVibGljOgor LSAgICAgICAgQW1wYWNoZVRyYWNrRm9yVXJsV29ya2VyKCBjb25zdCBLVXJsICZ1cmwsIE1ldGFQ cm94eTo6VHJhY2tQdHIgdHJhY2ssIGNvbnN0IFFTdHJpbmcgJnNlcnZlciwgY29uc3QgUVN0cmlu ZyAmc2Vzc2lvbklkLCBTZXJ2aWNlQmFzZSogc2VydmljZSk7CisrICAgICAgICBBbXBhY2hlVHJh Y2tGb3JVcmxXb3JrZXIoIGNvbnN0IEtVcmwgJnVybCwgTWV0YVByb3h5OjpUcmFja1B0ciB0cmFj aywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUVN0cmluZyAmc2Vy dmVyLCBjb25zdCBRU3RyaW5nICZzZXNzaW9uSWQsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFNlcnZpY2VCYXNlICpzZXJ2aWNlKTsKKyAgICAgICAgIH5BbXBhY2hlVHJhY2tG b3JVcmxXb3JrZXIoKTsKKy0gICAgICAgIHZpcnR1YWwgdm9pZCBydW4gKCk7CisrICAgICAgICB2 aXJ0dWFsIHZvaWQgcnVuKCk7CisgICAgICAgICB2b2lkIHBhcnNlVHJhY2soIGNvbnN0IFFTdHJp bmcgJnhtbCApOworICAgICBzaWduYWxzOgorICAgICAgICAgdm9pZCBhdXRoZW50aWNhdGlvbk5l ZWRlZCgpOworICAgICBwcml2YXRlOgorLSAgICAgICAgTWV0YVByb3h5OjpUcmFja1B0ciBtUHJv eHk7CisrICAgICAgICBNZXRhUHJveHk6OlRyYWNrUHRyIG1fcHJveHk7CisgICAgICAgICBpbnQg bV91cmxUcmFja0lkOworICAgICAgICAgaW50IG1fdXJsQWxidW1JZDsKKyAgICAgICAgIGludCBt X3VybEFydGlzdElkOworQEAgLTQ0LDcgKzQ2LDcgQEAgY2xhc3MgQW1wYWNoZVRyYWNrRm9yVXJs V29ya2VyIDogcHVibGljIEFtYXJvazo6VHJhY2tGb3JVcmxXb3JrZXIKKyAgICAgICAgIFFTdHJp bmcgbV9zZXJ2ZXI7CisgICAgICAgICBRU3RyaW5nIG1fc2Vzc2lvbklkOworIAorLSAgICAgICAg U2VydmljZUJhc2UqIG1fc2VydmljZTsKKysgICAgICAgIFNlcnZpY2VCYXNlICptX3NlcnZpY2U7 CisgfTsKKyAKKyBuYW1lc3BhY2UgQ29sbGVjdGlvbnMgeworQEAgLTU5LDExICs2MSwxMiBAQCBj bGFzcyBBbXBhY2hlU2VydmljZUNvbGxlY3Rpb24gOiBwdWJsaWMgU2VydmljZUNvbGxlY3Rpb24K KyAgICAgUV9PQkpFQ1QKKyAKKyBwdWJsaWM6CistICAgIEFtcGFjaGVTZXJ2aWNlQ29sbGVjdGlv biggU2VydmljZUJhc2UgKiBzZXJ2aWNlLCBjb25zdCBRU3RyaW5nICZzZXJ2ZXIsIGNvbnN0IFFT dHJpbmcgJnNlc3Npb25JZCApOworKyAgICBBbXBhY2hlU2VydmljZUNvbGxlY3Rpb24oIFNlcnZp Y2VCYXNlICpzZXJ2aWNlLCBjb25zdCBRU3RyaW5nICZzZXJ2ZXIsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgUVN0cmluZyAmc2Vzc2lvbklkICk7CisgCisgICAgIHZpcnR1 YWwgfkFtcGFjaGVTZXJ2aWNlQ29sbGVjdGlvbigpOworIAorLSAgICB2aXJ0dWFsIFF1ZXJ5TWFr ZXIqIHF1ZXJ5TWFrZXIoKTsKKysgICAgdmlydHVhbCBRdWVyeU1ha2VyICpxdWVyeU1ha2VyKCk7 CisgCisgICAgIHZpcnR1YWwgUVN0cmluZyBjb2xsZWN0aW9uSWQoKSBjb25zdDsKKyAgICAgdmly dHVhbCBRU3RyaW5nIHByZXR0eU5hbWUoKSBjb25zdDsKK0BAIC03NiwxNiArNzksMTMgQEAgc2ln bmFsczoKKyAKKyBwdWJsaWMgc2xvdHM6CisgICAgIHZvaWQgc2xvdEF1dGhlbnRpY2F0aW9uTmVl ZGVkKCk7CistICAgIHZvaWQgc2xvdExvb2t1cENvbXBsZXRlKCBjb25zdCBNZXRhOjpUcmFja1B0 ciYgKTsKKysgICAgdm9pZCBzbG90TG9va3VwQ29tcGxldGUoIGNvbnN0IE1ldGE6OlRyYWNrUHRy ICYgKTsKKyAKKyBwcml2YXRlOgorLSAgICAvKnZvaWQgcGFyc2VBbGJ1bSggY29uc3QgUVN0cmlu ZyAmeG1sICk7CistICAgIHZvaWQgcGFyc2VBcnRpc3QoIGNvbnN0IFFTdHJpbmcgJnhtbCApOyov CistCisgICAgIFFTdHJpbmcgbV9zZXJ2ZXI7CisgICAgIFFTdHJpbmcgbV9zZXNzaW9uSWQ7Cisg CistICAgIEFtcGFjaGVUcmFja0ZvclVybFdvcmtlciAqIG1fdHJhY2tGb3JVcmxXb3JrZXI7Cisr ICAgIEFtcGFjaGVUcmFja0ZvclVybFdvcmtlciAqbV90cmFja0ZvclVybFdvcmtlcjsKKyB9Owor IAorIH0gLy9uYW1lc3BhY2UgQ29sbGVjdGlvbnMKK2RpZmYgLS1naXQgYS9zcmMvc2VydmljZXMv YW1wYWNoZS9BbXBhY2hlU2VydmljZUNvbGxlY3Rpb24uY3BwIGIvc3JjL3NlcnZpY2VzL2FtcGFj aGUvQW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9uLmNwcAoraW5kZXggYjY4NGUzNC4uYzNiNTExNSAx MDA2NDQKKy0tLSBhL3NyYy9zZXJ2aWNlcy9hbXBhY2hlL0FtcGFjaGVTZXJ2aWNlQ29sbGVjdGlv bi5jcHAKKysrKyBiL3NyYy9zZXJ2aWNlcy9hbXBhY2hlL0FtcGFjaGVTZXJ2aWNlQ29sbGVjdGlv bi5jcHAKK0BAIC0yNyw3ICsyNyw5IEBACisgCisgdXNpbmcgbmFtZXNwYWNlIENvbGxlY3Rpb25z OworIAorLUFtcGFjaGVTZXJ2aWNlQ29sbGVjdGlvbjo6QW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9u KCBTZXJ2aWNlQmFzZSAqIHNlcnZpY2UsIGNvbnN0IFFTdHJpbmcgJnNlcnZlciwgY29uc3QgUVN0 cmluZyAmc2Vzc2lvbklkICkKKytBbXBhY2hlU2VydmljZUNvbGxlY3Rpb246OkFtcGFjaGVTZXJ2 aWNlQ29sbGVjdGlvbiggU2VydmljZUJhc2UgKnNlcnZpY2UsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgJnNlcnZlciwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgUVN0cmluZyAmc2Vzc2lvbklkICkKKyAgICAgOiBTZXJ2aWNlQ29sbGVjdGlvbiggc2Vydmlj ZSwgIkFtcGFjaGVDb2xsZWN0aW9uIiwgIkFtcGFjaGVDb2xsZWN0aW9uIiApCisgICAgICwgbV9z ZXJ2ZXIoIHNlcnZlciApCisgICAgICwgbV9zZXNzaW9uSWQoIHNlc3Npb25JZCApCitAQCAtNTgs NyArNjAsNyBAQCBBbXBhY2hlU2VydmljZUNvbGxlY3Rpb246OnByZXR0eU5hbWUoKSBjb25zdAor IH0KKyAKKyBib29sCistQW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9uOjpwb3NzaWJseUNvbnRhaW5z VHJhY2soY29uc3QgS1VybCAmIHVybCkgY29uc3QKKytBbXBhY2hlU2VydmljZUNvbGxlY3Rpb246 OnBvc3NpYmx5Q29udGFpbnNUcmFjayggY29uc3QgS1VybCAmdXJsICkgY29uc3QKKyB7CisgICAg IHJldHVybiB1cmwudXJsKCkuY29udGFpbnMoIG1fc2VydmVyICk7CisgfQorQEAgLTcwLDc3ICs3 Miw4MiBAQCBBbXBhY2hlU2VydmljZUNvbGxlY3Rpb246OnNsb3RBdXRoZW50aWNhdGlvbk5lZWRl ZCgpCisgfQorIAorIE1ldGE6OlRyYWNrUHRyCistQW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9uOjp0 cmFja0ZvclVybCggY29uc3QgS1VybCAmIHVybCApCisrQW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9u Ojp0cmFja0ZvclVybCggY29uc3QgS1VybCAmdXJsICkKKyB7CistICAgIE1ldGFQcm94eTo6VHJh Y2sqIHB0cmFjayA9IG5ldyBNZXRhUHJveHk6OlRyYWNrKCB1cmwudXJsKCksIHRydWUgKTsKKy0g ICAgTWV0YVByb3h5OjpUcmFja1B0ciB0cmFja3B0cihwdHJhY2spOworLSAgICBBbXBhY2hlVHJh Y2tGb3JVcmxXb3JrZXIgKiB3b3JrZXIgPSAgbmV3IEFtcGFjaGVUcmFja0ZvclVybFdvcmtlcih1 cmwsIHRyYWNrcHRyLCBtX3NlcnZlciwgbV9zZXNzaW9uSWQsIHNlcnZpY2UoKSApOworLS8vICAg ICBjb25uZWN0KCB3b3JrZXIsIFNJR05BTCggZmluaXNoZWRMb29rdXAgKCBjb25zdCBNZXRhOjpU cmFja1B0ciYgKSApLCB0aGlzLAorLS8vICAgICAgICAgICAgICBTTE9UKCBzbG90TG9va3VwQ29t cGxldGUoIGNvbnN0IE1ldGE6OlRyYWNrUHRyJiApICkgKTsKKy0gICAgY29ubmVjdCggd29ya2Vy LCBTSUdOQUwoIGF1dGhlbnRpY2F0aW9uTmVlZGVkKCkgKSwgdGhpcywKKy0gICAgICAgICAgICAg U0xPVCggc2xvdEF1dGhlbnRpY2F0aW9uTmVlZGVkKCkgKSApOworKyAgICBNZXRhUHJveHk6OlRy YWNrICpwdHJhY2sgPSBuZXcgTWV0YVByb3h5OjpUcmFjayggdXJsLnVybCgpLCB0cnVlICk7Cisr ICAgIE1ldGFQcm94eTo6VHJhY2tQdHIgdHJhY2twdHIoIHB0cmFjayApOworKyAgICBBbXBhY2hl VHJhY2tGb3JVcmxXb3JrZXIgKndvcmtlciA9IG5ldyBBbXBhY2hlVHJhY2tGb3JVcmxXb3JrZXIo IHVybCwgdHJhY2twdHIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zZXJ2ZXIsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9z ZXNzaW9uSWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZSgpICk7CisrICAgIGNvbm5lY3QoIHdvcmtl ciwgU0lHTkFMKGF1dGhlbnRpY2F0aW9uTmVlZGVkKCkpLCBTTE9UKHNsb3RBdXRoZW50aWNhdGlv bk5lZWRlZCgpKSApOworICAgICBUaHJlYWRXZWF2ZXI6OldlYXZlcjo6aW5zdGFuY2UoKS0+ZW5x dWV1ZSggd29ya2VyICk7CisgCisgICAgIHJldHVybiBNZXRhOjpUcmFja1B0cjo6c3RhdGljQ2Fz dCggdHJhY2twdHIgKTsKKyB9CisrCisgdm9pZCBBbXBhY2hlU2VydmljZUNvbGxlY3Rpb246OnNs b3RMb29rdXBDb21wbGV0ZSggY29uc3QgTWV0YTo6VHJhY2tQdHImICkKKyB7CisgfQorIAorIHZv aWQgQW1wYWNoZVRyYWNrRm9yVXJsV29ya2VyOjpwYXJzZVRyYWNrKCBjb25zdCBRU3RyaW5nICZ4 bWwgKQorIHsKKy0vLyAgICAgREVCVUdfQkxPQ0sKKy0KKy0vLyAgICAgIGRlYnVnKCkgPDwgIlJl Y2VpdmVkIHRyYWNrIHJlc3BvbnNlOiAiIDw8IHhtbDsKKy0KKy0gICAgIC8vc28gbGV0cyBmaWd1 cmUgb3V0IHdoYXQgd2UgZ290IGhlcmU6CisrICAgIC8vc28gbGV0cyBmaWd1cmUgb3V0IHdoYXQg d2UgZ290IGhlcmU6CisgICAgIFFEb21Eb2N1bWVudCBkb2MoICJyZXBseSIgKTsKKyAgICAgZG9j LnNldENvbnRlbnQoIHhtbCApOworLSAgICBRRG9tRWxlbWVudCByb290ID0gZG9jLmZpcnN0Q2hp bGRFbGVtZW50KCJyb290Iik7CistICAgIFFEb21FbGVtZW50IHNvbmcgPSByb290LmZpcnN0Q2hp bGRFbGVtZW50KCJzb25nIik7CisrICAgIFFEb21FbGVtZW50IHJvb3QgPSBkb2MuZmlyc3RDaGls ZEVsZW1lbnQoICJyb290IiApOworKyAgICBRRG9tRWxlbWVudCBzb25nID0gcm9vdC5maXJzdENo aWxkRWxlbWVudCggInNvbmciICk7CisgCistICAgIG1fdXJsVHJhY2tJZCA9IHNvbmcuYXR0cmli dXRlKCAiaWQiLCAiMCIpLnRvSW50KCk7CisrICAgIG1fdXJsVHJhY2tJZCA9IHNvbmcuYXR0cmli dXRlKCAiaWQiLCAiMCIgKS50b0ludCgpOworIAorLSAgICBRRG9tRWxlbWVudCBlbGVtZW50ID0g c29uZy5maXJzdENoaWxkRWxlbWVudCgidGl0bGUiKTsKKysgICAgUURvbUVsZW1lbnQgZWxlbWVu dCA9IHNvbmcuZmlyc3RDaGlsZEVsZW1lbnQoICJ0aXRsZSIgKTsKKyAKKyAgICAgUVN0cmluZyB0 aXRsZSA9IGVsZW1lbnQudGV4dCgpOworICAgICBpZiAoIHRpdGxlLmlzRW1wdHkoKSApIHRpdGxl ID0gIlVua25vd24iOworIAorLSAgICBlbGVtZW50ID0gc29uZy5maXJzdENoaWxkRWxlbWVudCgi dXJsIik7CisrICAgIGVsZW1lbnQgPSBzb25nLmZpcnN0Q2hpbGRFbGVtZW50KCAidXJsIiApOwor IAorICAgICBtX3VybFRyYWNrID0gbmV3IE1ldGE6OkFtcGFjaGVUcmFjayggdGl0bGUsIG1fc2Vy dmljZSApOworICAgICBNZXRhOjpUcmFja1B0ciB0cmFja1B0ciggbV91cmxUcmFjayApOworIAor LSAgICAvL2RlYnVnKCkgPDwgIkFkZGluZyB0cmFjazogIiA8PCAgdGl0bGU7CisgICAgIG1fdXJs VHJhY2stPnNldFVpZFVybCggZWxlbWVudC50ZXh0KCkgKTsKKyAgICAgbV91cmxUcmFjay0+c2V0 SWQoIG1fdXJsVHJhY2tJZCApOworIAorLSAgICBlbGVtZW50ID0gc29uZy5maXJzdENoaWxkRWxl bWVudCgidGltZSIpOworKyAgICBlbGVtZW50ID0gc29uZy5maXJzdENoaWxkRWxlbWVudCggInRp bWUiICk7CisgICAgIG1fdXJsVHJhY2stPnNldExlbmd0aCggZWxlbWVudC50ZXh0KCkudG9JbnQo KSAqIDEwMDAgKTsKKyAKKy0gICAgZWxlbWVudCA9IHNvbmcuZmlyc3RDaGlsZEVsZW1lbnQoInRy YWNrIik7CisrICAgIGVsZW1lbnQgPSBzb25nLmZpcnN0Q2hpbGRFbGVtZW50KCAidHJhY2siICk7 CisgICAgIG1fdXJsVHJhY2stPnNldFRyYWNrTnVtYmVyKCBlbGVtZW50LnRleHQoKS50b0ludCgp ICk7CisgCistICAgIFFEb21FbGVtZW50IGFsYnVtRWxlbWVudCA9IHNvbmcuZmlyc3RDaGlsZEVs ZW1lbnQoImFsYnVtIik7CistICAgIC8vbV91cmxBbGJ1bUlkID0gYWxidW1FbGVtZW50LmF0dHJp YnV0ZSggImlkIiwgIjAiKS50b0ludCgpOworKyAgICBRRG9tRWxlbWVudCBhbGJ1bUVsZW1lbnQg PSBzb25nLmZpcnN0Q2hpbGRFbGVtZW50KCAiYWxidW0iICk7CisrICAgIG1fdXJsQWxidW1JZCA9 IGFsYnVtRWxlbWVudC5hdHRyaWJ1dGUoICJpZCIsICIwIiApLnRvSW50KCk7CisgCistICAgIE1l dGE6OkFtcGFjaGVBbGJ1bSAqIGFsYnVtID0gbmV3IE1ldGE6OkFtcGFjaGVBbGJ1bSggYWxidW1F bGVtZW50LnRleHQoKSApOworKyAgICBNZXRhOjpBbXBhY2hlQWxidW0gKmFsYnVtID0gbmV3IE1l dGE6OkFtcGFjaGVBbGJ1bSggYWxidW1FbGVtZW50LnRleHQoKSApOworIAorLSAgICBRRG9tRWxl bWVudCBhcnRFbGVtZW50ID0gc29uZy5maXJzdENoaWxkRWxlbWVudCgiYXJ0Iik7CisrICAgIFFE b21FbGVtZW50IGFydEVsZW1lbnQgPSBzb25nLmZpcnN0Q2hpbGRFbGVtZW50KCAiYXJ0IiApOwor ICAgICBhbGJ1bS0+c2V0Q292ZXJVcmwoIGFydEVsZW1lbnQudGV4dCgpICk7CisgCisgICAgIGFs YnVtLT5hZGRUcmFjayggdHJhY2tQdHIgKTsKKyAgICAgbV91cmxUcmFjay0+c2V0QWxidW1QdHIo IE1ldGE6OkFsYnVtUHRyKCBhbGJ1bSApICk7CisgCistICAgIFFEb21FbGVtZW50IGFydGlzdEVs ZW1lbnQgPSBzb25nLmZpcnN0Q2hpbGRFbGVtZW50KCJhcnRpc3QiKTsKKy0gICAgTWV0YTo6U2Vy dmljZUFydGlzdCAqIGFydGlzdCA9IG5ldyBNZXRhOjpTZXJ2aWNlQXJ0aXN0KCBhcnRpc3RFbGVt ZW50LnRleHQoKSApOworKyAgICBRRG9tRWxlbWVudCBhcnRpc3RFbGVtZW50ID0gc29uZy5maXJz dENoaWxkRWxlbWVudCggImFydGlzdCIgKTsKKysgICAgTWV0YTo6U2VydmljZUFydGlzdCAqYXJ0 aXN0ID0gbmV3IE1ldGE6OlNlcnZpY2VBcnRpc3QoIGFydGlzdEVsZW1lbnQudGV4dCgpICk7Cisg CisgICAgIE1ldGE6OkFydGlzdFB0ciBhcnRpc3RQdHIoIGFydGlzdCApOworICAgICBtX3VybFRy YWNrLT5zZXRBcnRpc3QoIGFydGlzdFB0ciApOworICAgICBhbGJ1bS0+c2V0QWxidW1BcnRpc3Qo IGFydGlzdFB0ciApOworIH0KKyAKKy1BbXBhY2hlVHJhY2tGb3JVcmxXb3JrZXI6OkFtcGFjaGVU cmFja0ZvclVybFdvcmtlcihjb25zdCBLVXJsICZ1cmwsIE1ldGFQcm94eTo6VHJhY2tQdHIgdHJh Y2ssIGNvbnN0IFFTdHJpbmcgJnNlcnZlciwgY29uc3QgUVN0cmluZyAmc2Vzc2lvbklkLCBTZXJ2 aWNlQmFzZSogc2VydmljZSkgOiBBbWFyb2s6OlRyYWNrRm9yVXJsV29ya2VyKHVybCksIG1Qcm94 eSh0cmFjayksIG1fc2VydmVyKHNlcnZlciksIG1fc2Vzc2lvbklkKHNlc3Npb25JZCksIG1fc2Vy dmljZShzZXJ2aWNlKQorK0FtcGFjaGVUcmFja0ZvclVybFdvcmtlcjo6QW1wYWNoZVRyYWNrRm9y VXJsV29ya2VyKCBjb25zdCBLVXJsICZ1cmwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE1ldGFQcm94eTo6VHJhY2tQdHIgdHJhY2ssCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFT dHJpbmcgJnNlcnZlciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgUVN0cmluZyAmc2Vzc2lvbklkLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlQmFzZSAqc2VydmljZSAp CisrICAgIDogQW1hcm9rOjpUcmFja0ZvclVybFdvcmtlciggdXJsICkKKysgICAgLCBtX3Byb3h5 KCB0cmFjayApCisrICAgICwgbV9zZXJ2ZXIoIHNlcnZlciApCisrICAgICwgbV9zZXNzaW9uSWQo IHNlc3Npb25JZCApCisrICAgICwgbV9zZXJ2aWNlKCBzZXJ2aWNlICkKKyB7CisgfQorIAorQEAg LTE1MCw4ICsxNTcsNiBAQCBBbXBhY2hlVHJhY2tGb3JVcmxXb3JrZXI6On5BbXBhY2hlVHJhY2tG b3JVcmxXb3JrZXIoKQorIHZvaWQKKyBBbXBhY2hlVHJhY2tGb3JVcmxXb3JrZXI6OnJ1bigpCisg eworLSAgICAvLyBERUJVR19CTE9DSzsKKy0KKyAgICAgbV91cmxUcmFjayA9IDA7CisgICAgIG1f dXJsQWxidW0gPSAwOworICAgICBtX3VybEFydGlzdCA9IDA7CitAQCAtMTYyLDkgKzE2Nyw5IEBA IEFtcGFjaGVUcmFja0ZvclVybFdvcmtlcjo6cnVuKCkKKyAKKyAgICAgLy9zZW5kIHVybF90b19z b25nIHRvIEFtcGFjaGUKKyAKKy0gICAgUVN0cmluZyByZXF1ZXN0VXJsID0gUVN0cmluZyggIiUx L3NlcnZlci94bWwuc2VydmVyLnBocD9hY3Rpb249dXJsX3RvX3NvbmcmYXV0aD0lMiZ1cmw9JTMi KQorLSAgICAuIGFyZyggIG1fc2VydmVyLCAgbV9zZXNzaW9uSWQsICBRVXJsOjp0b1BlcmNlbnRF bmNvZGluZyggbVVybC51cmwoKSApICk7CistICAgIC8vICAgICBkZWJ1ZygpIDw8ICJyZXF1ZXN0 IHVybDogIiA8PCByZXF1ZXN0VXJsOworKyAgICBRU3RyaW5nIHJlcXVlc3RVcmwgPQorKyAgICAg ICAgICAgIFFTdHJpbmcoICIlMS9zZXJ2ZXIveG1sLnNlcnZlci5waHA/YWN0aW9uPXVybF90b19z b25nJmF1dGg9JTImdXJsPSUzIiApCisrICAgICAgICAgICAgICAgICAgICAuYXJnKCBtX3NlcnZl ciwgbV9zZXNzaW9uSWQsIFFVcmw6OnRvUGVyY2VudEVuY29kaW5nKCBtX3VybC51cmwoKSApICk7 CisgCisgICAgIFFOZXR3b3JrUmVxdWVzdCByZXEoIHJlcXVlc3RVcmwgKTsKKyAgICAgUU5ldHdv cmtSZXBseSAqcmVwbHkgPSBUaGU6Om5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCktPmdldCggcmVxICk7 CitAQCAtMTc4LDcgKzE4Myw3IEBAIEFtcGFjaGVUcmFja0ZvclVybFdvcmtlcjo6cnVuKCkKKyAg ICAgICAgIH0KKyAgICAgfQorICAgICBwYXJzZVRyYWNrKCByZXBseS0+cmVhZEFsbCgpICk7Cist ICAgIG1UcmFjayA9IE1ldGE6OlRyYWNrUHRyKCBtX3VybFRyYWNrICk7CistICAgIG1Qcm94eS0+ dXBkYXRlVHJhY2soIG1UcmFjayApOworKyAgICBtX3RyYWNrID0gTWV0YTo6VHJhY2tQdHIoIG1f dXJsVHJhY2sgKTsKKysgICAgbV9wcm94eS0+dXBkYXRlVHJhY2soIG1fdHJhY2sgKTsKKyAgICAg cmVwbHktPmRlbGV0ZUxhdGVyKCk7CisgfQoKZGlmZiAtLWdpdCBhL2FtYXJvay5zcGVjIGIvYW1h cm9rLnNwZWMKaW5kZXggNGJkZjE2ZS4uMThmOWEzZiAxMDA2NDQKLS0tIGEvYW1hcm9rLnNwZWMK KysrIGIvYW1hcm9rLnNwZWMKQEAgLTIsNyArMiw3IEBACiBOYW1lOiAgICBhbWFyb2sKIFN1bW1h cnk6IE1lZGlhIHBsYXllcgogVmVyc2lvbjogMi41LjAKLVJlbGVhc2U6IDglez9kaXN0fQorUmVs ZWFzZTogOSV7P2Rpc3R9CiAKICMgS0RFIGUuVi4gbWF5IGRldGVybWluZSB0aGF0IGZ1dHVyZSBH UEwgdmVyc2lvbnMgYXJlIGFjY2VwdGVkCiBMaWNlbnNlOiBHUEx2MiBvciBHUEx2MwpAQCAtMjEs NyArMjEsNyBAQCBQYXRjaDA6ICBhbWFyb2stMi41LjAtb25saW5lZG9jLnBhdGNoCiBQYXRjaDEw MDogYW1hcm9rLTIuNS4wLWtkZTQ4X2NvbnRleHRfdmlldy5wYXRjaCAKICMgTG9hZCBhbGwgdHJh Y2tzIGZyb20gWFNQRiB1c2luZyBNZXRhUHJveHkuCiAjIGh0dHBzOi8vYnVncy5rZGUub3JnL3No b3dfYnVnLmNnaT9pZD0yOTUxOTkKLVBhdGNoMTAxOiAwMDAxLUxvYWQtYWxsLXRyYWNrcy1mcm9t LVhTUEYtdXNpbmctTWV0YVByb3h5LnBhdGNoCitQYXRjaDEwMTogYW1hcm9rLTIuNS4wLXByb3h5 X2xvYWRpbmcucGF0Y2ggCiAKIEJ1aWxkUmVxdWlyZXM6IGN1cmwtZGV2ZWwKIEJ1aWxkUmVxdWly ZXM6IGRlc2t0b3AtZmlsZS11dGlscwpAQCAtOTMsNyArOTMsNyBAQCBCdWlsZEFyY2g6IG5vYXJj aAogJXBhdGNoMCAtcDEgLWIgLm9ubGluZWRvYwogI3BhdGNoNTAgLXAxIC1iIC5xdHNjcmlwdF9u b3RfcmVxdWlyZWQKICVwYXRjaDEwMCAtcDEgLWIgLmtkZTQ4X2NvbnRleHRfdmlldwotJXBhdGNo MTAxIC1wMSAtYiAubG9hZGFsbF94c3BmCislcGF0Y2gxMDEgLXAxIC1iIC5wcm94eV9sb2FkaW5n CiAKIAogJWJ1aWxkCkBAIC0xODMsNiArMTgzLDkgQEAgZmkKIAogCiAlY2hhbmdlbG9nCisqIFdl ZCBNYXIgMjEgMjAxMiBSZXggRGlldGVyIDxyZGlldGVyQGZlZG9yYXByb2plY3Qub3JnPiAyLjUu MC05CistIG5ldyBpdGVyYXRpb24gb2YgcHJveHlfbG9hZGluZyBwYXRjaCAoa2RlIzI5NTE5OSkK KwogKiBUdWUgTWFyIDEzIDIwMTIgUmV4IERpZXRlciA8cmRpZXRlckBmZWRvcmFwcm9qZWN0Lm9y Zz4gMi41LjAtOAogLSBMb2FkIGFsbCBYU1BGIHRyYWNrcyAoa2RlIzI5NTE5OSkKIAo=